diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-05-02 23:55:24 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-05-02 23:57:11 +0200 |
commit | dedb17ad010ee9ef67f3f4f3997dd17f226c8090 (patch) | |
tree | f83cc692eaf5e3ae952fa9626b1fcef1755a2d84 /guix/scripts/package.scm | |
parent | b9212a5455304661d1e969ced5df63aa9b6b761f (diff) |
profiles: Store search paths in manifests.
Discussed in <http://bugs.gnu.org/20255>.
* guix/packages.scm (sexp->search-path-specification): New variable.
* guix/profiles.scm (<manifest-entry>)[search-paths]: New field.
(package->manifest-entry): Initialize it.
(manifest->gexp): Match it. Wrap #$deps in (propagated-inputs ...).
Emit (search-paths ...). Increment version.
(find-package): New procedure.
(sexp->manifest)[infer-search-paths]: New procedure.
Use it to initialize the 'search-paths' field for versions 0 and 1.
Add case for version 2.
* guix/scripts/package.scm (search-path-environment-variables)[manifest-entry->package]:
Remove.
Use 'manifest-entry-search-paths' instead of 'manifest-entry->package'
plus 'package-native-search-paths'.
* tests/profiles.scm ("profile-manifest, search-paths"): New test.
Diffstat (limited to 'guix/scripts/package.scm')
-rw-r--r-- | guix/scripts/package.scm | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 1e724b4e19..fca70f566d 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -384,22 +384,6 @@ current settings and report only settings not already effective." %user-profile-directory profile))) - ;; The search path info is not stored in the manifest. Thus, we infer the - ;; search paths from same-named packages found in the distro. - - (define manifest-entry->package - (match-lambda - (($ <manifest-entry> name version) - ;; Use 'find-best-packages-by-name' and not 'find-packages-by-name'; - ;; the former traverses the module tree only once and then allows for - ;; efficient access via a vhash. - (match (find-best-packages-by-name name version) - ((p _ ...) p) - (_ - (match (find-best-packages-by-name name #f) - ((p _ ...) p) - (_ #f))))))) - (define search-path-definition (match-lambda (($ <search-path-specification> variable files separator @@ -426,10 +410,8 @@ current settings and report only settings not already effective." variable (string-join path separator))))))) - (let* ((packages (filter-map manifest-entry->package entries)) - (search-paths (delete-duplicates - (append-map package-native-search-paths - packages)))) + (let ((search-paths (delete-duplicates + (append-map manifest-entry-search-paths entries)))) (filter-map search-path-definition search-paths)))) (define (display-search-paths entries profile) |