From bfc9c339301ffe6dd15d156894dc27e05f6f081f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 11 Mar 2019 22:14:30 +0100 Subject: [PATCH] packages: Add the channel .go files to the search path. Until now %LOAD-COMPILED-PATH would wrongfully contain: CHANNEL/share/guile/site/X.Y for each channel, thereby ignoring all the .go files of channels. This fixes it so that %LOAD-COMPILED-PATH instead contains: CHANNEL/lib/guile/X.Y/site-ccache * guix/describe.scm (current-channel-entries): New procedure. (package-path-entries): Change to return the %LOAD-COMPILED-PATH entries as a second value. * gnu/packages.scm (%package-module-path): Expect two values from 'package-path-entries' and augment %LOAD-COMPILED-PATH accordingly. --- gnu/packages.scm | 17 ++++++++++------- guix/describe.scm | 31 ++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/gnu/packages.scm b/gnu/packages.scm index 7b17e70c53..9f211ae23c 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -155,23 +155,26 @@ flags." ;; Search path for package modules. Each item must be either a directory ;; name or a pair whose car is a directory and whose cdr is a sub-directory ;; to narrow the search. - (let* ((not-colon (char-set-complement (char-set #\:))) - (environment (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "") - not-colon)) - (channels (package-path-entries))) + (let*-values (((not-colon) + (char-set-complement (char-set #\:))) + ((environment) + (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "") + not-colon)) + ((channels-scm channels-go) + (package-path-entries))) ;; Automatically add channels and items from $GUIX_PACKAGE_PATH to Guile's ;; search path. For historical reasons, $GUIX_PACKAGE_PATH goes to the ;; front; channels go to the back so that they don't override Guix' own ;; modules. (set! %load-path - (append environment %load-path channels)) + (append environment %load-path channels-scm)) (set! %load-compiled-path - (append environment %load-compiled-path channels)) + (append environment %load-compiled-path channels-go)) (make-parameter (append environment %default-package-module-path - channels)))) + channels-scm)))) (define %patch-path ;; Define it after '%package-module-path' so that '%load-path' contains user diff --git a/guix/describe.scm b/guix/describe.scm index c31199c9cd..8851bc46d1 100644 --- a/guix/describe.scm +++ b/guix/describe.scm @@ -65,19 +65,28 @@ lives in, or #f if this is not applicable." (let ((manifest (profile-manifest profile))) (manifest-entries manifest)))))) -(define package-path-entries +(define current-channel-entries (mlambda () - "Return a list of package path entries to be added to the package search -path. These entries are taken from the 'guix pull' profile the calling -process lives in, when applicable." - ;; Filter out Guix itself. - (filter-map (lambda (entry) - (and (not (string=? (manifest-entry-name entry) - "guix")) - (string-append (manifest-entry-item entry) + "Return manifest entries corresponding to extra channels--i.e., not the +'guix' channel." + (remove (lambda (entry) + (string=? (manifest-entry-name entry) "guix")) + (current-profile-entries)))) + +(define (package-path-entries) + "Return two values: the list of package path entries to be added to the +package search path, and the list to be added to %LOAD-COMPILED-PATH. These +entries are taken from the 'guix pull' profile the calling process lives in, +when applicable." + ;; Filter out Guix itself. + (unzip2 (map (lambda (entry) + (list (string-append (manifest-entry-item entry) "/share/guile/site/" - (effective-version)))) - (current-profile-entries)))) + (effective-version)) + (string-append (manifest-entry-item entry) + "/lib/guile/" (effective-version) + "/site-ccache"))) + (current-profile-entries)))) (define (package-provenance package) "Return the provenance of PACKAGE as an sexp for use as the 'provenance'