Hi 宋文武.

Help me understand.  What you are inventing here is search path
configuration files as a preferred alternative to environment
variables.

So GUIX_XDG_DATA_DIRS is a new environment variable created to be used
instead of XDG_DATA_DIRS and set by creating a file
etc/search-paths.d/GUIX_XDG_DATA_DIRS rather than by calling setenv to
ensure it does not propagate to child processes.

Same for GUIX_GI_TYPELIB_PATH etc.

Also because it does not propagate, it will not have duplicate entries.

Not propagating sounds quite appropriate for krusader, gnome-commander
or such, which launch other binaries.

I like your proposal.

When we do need to propagate to child processes, e.g. when environment
variables should apply to launching plug-ins in child processes, we
can still wrap-program as before?  Not sure if such might be needed in
gnome-builder.

Does this mean we can no longer refer to a 'glib-or-gtk-wrap phase?
Judging from Maxim’s comment <https://issues.guix.gnu.org/75688#34>,

> In its current form, this phase should be renamed
> 'write-search-path-files' or similar; we could introduce a deprecated
> symbol for wrap-all-programs for backward compatibility.

we would rename the phase.
Which is possible, but might impact third-party channels.  No more:

(arguments
 (list #:phases
       #~(modify-phases %standard-phases
         (add-after 'glib-or-gtk-wrap 'wrap-binaries
          […]

I am thinking of Guile scripts, which still need wrap-program for
GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH.

(wrap-program installed-binary
  `("GUILE_LOAD_PATH" prefix
    (,(string-append g-golf scm)
     ,(string-append gcairo scm)))
  `("GUILE_LOAD_COMPILED_PATH" prefix
    (,(string-append g-golf go)
     ,(string-append gcairo go)))
  ;; Library path for libraries loaded from Guile.
  `("LD_LIBRARY_PATH" prefix
    (,(string-append gcairo "/lib"))))

Regards,
Florian

Reply via email to