~ruther/guix-local

65bb0d92d87a1ef951fde0c28cb258e4570fdd36 — Rutherther 1 year, 4 months ago 1f1b65d
pack: Singularity environemt sources the profile's 'etc/profile'.

Fixes #419 where the same search path is used multiple times, leading to the
last one overriding the previous one.

The solution relies on the #$profile/etc/profile file that is already verified
and in case of errors, it is just one place to repair instead of repairing at
multiple places, like in singularity-environment-file

* guix/pack.scm (singularity-environment-file): Source #$profile/etc/profile

Reported-by: Alexis Simon <alexis.simon@runbox.com>
Change-Id: Ic304fef99ad34d83e4e10cdd2b26d3b1802b5251
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 5 insertions(+), 18 deletions(-)

M guix/scripts/pack.scm
M guix/scripts/pack.scm => guix/scripts/pack.scm +5 -18
@@ 312,25 312,12 @@ added to the pack."
  "Return a shell script that defines the environment variables corresponding
to the search paths of PROFILE."
  (define build
    (with-extensions (list guile-gcrypt)
      (with-imported-modules `(((guix config) => ,(make-config.scm))
                               ,@(source-module-closure
                                  `((guix profiles)
                                    (guix search-paths))
                                  #:select? not-config?))
        #~(begin
            (use-modules (guix profiles) (guix search-paths)
                         (ice-9 match))
    #~(begin
        (use-modules (ice-9 match))

            (call-with-output-file #$output
              (lambda (port)
                (for-each (match-lambda
                            ((spec . value)
                             (format port "~a=~a~%export ~a~%"
                                     (search-path-specification-variable spec)
                                     value
                                     (search-path-specification-variable spec))))
                          (profile-search-paths #$profile))))))))
        (call-with-output-file #$output
          (lambda (port)
            (format port ". ~a/etc/profile~%" #$profile)))))

  (computed-file "singularity-environment.sh" build))