guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/03: pack: Link top-level entries of wrapped packages.


From: Ludovic Courtès
Subject: 03/03: pack: Link top-level entries of wrapped packages.
Date: Mon, 14 May 2018 17:02:21 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 91e588554919f23b3f2b7307e246303499180bcd
Author: Ludovic Courtès <address@hidden>
Date:   Mon May 14 22:59:14 2018 +0200

    pack: Link top-level entries of wrapped packages.
    
    Previously things like:
    
      guix pack -R guile guile-json
    
    would lead to a profile without Guile-JSON, and to an 'etc/profile' that
    does not define 'GUILE_LOAD_PATH'.
    
    * guix/scripts/pack.scm (wrapped-package)[build]: Link top-level entries
    of PACKAGE into OUTPUT.
---
 guix/scripts/pack.scm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 6d648d1..1e84459 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -378,9 +378,13 @@ please email '~a'~%")
     (local-file (search-auxiliary-file "run-in-namespace.c")))
 
   (define build
-    (with-imported-modules '((guix build utils))
+    (with-imported-modules (source-module-closure
+                            '((guix build utils)
+                              (guix build union)))
       #~(begin
           (use-modules (guix build utils)
+                       ((guix build union) #:select (relative-file-name))
+                       (ice-9 ftw)
                        (ice-9 match))
 
           (define (strip-store-prefix file)
@@ -411,6 +415,17 @@ please email '~a'~%")
           (setvbuf (current-output-port)
                    (cond-expand (guile-2.2 'line)
                                 (else      _IOLBF)))
+
+          ;; Link the top-level files of PACKAGE so that search paths are
+          ;; properly defined in PROFILE/etc/profile.
+          (mkdir #$output)
+          (for-each (lambda (file)
+                      (unless (member file '("." ".." "bin" "sbin" "libexec"))
+                        (let ((file* (string-append #$package "/" file)))
+                          (symlink (relative-file-name #$output file*)
+                                   (string-append #$output "/" file)))))
+                    (scandir #$package))
+
           (for-each build-wrapper
                     (append (find-files #$(file-append package "/bin"))
                             (find-files #$(file-append package "/sbin"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]