guix package: Save provenance information when using '--manifest'.

Fixes <https://bugs.gnu.org/38673>.
Reported by zimoun <zimon.toutoune@gmail.com>.

* guix/describe.scm (manifest-entry-with-provenance): New procedure.
* guix/scripts/package.scm (process-actions): Use it when FILES is
non-empty.
This commit is contained in:
Ludovic Courtès 2019-12-29 16:22:35 +01:00
parent 8a705ae4c6
commit c48e522fdb
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 22 additions and 3 deletions

View File

@ -30,7 +30,8 @@
current-profile-entries
package-path-entries
package-provenance))
package-provenance
manifest-entry-with-provenance))
;;; Commentary:
;;;
@ -144,3 +145,18 @@ property of manifest entries, or #f if it could not be determined."
(and main
`(,main
,@(if extra (list extra) '()))))))))))
(define (manifest-entry-with-provenance entry)
"Return ENTRY with an additional 'provenance' property if it's not already
there."
(let ((properties (manifest-entry-properties entry)))
(if (assq 'properties properties)
entry
(let ((item (manifest-entry-item entry)))
(manifest-entry
(inherit entry)
(properties
(match (and (package? item) (package-provenance item))
(#f properties)
(sexp `((provenance ,@sexp)
,@properties)))))))))

View File

@ -38,7 +38,7 @@
#:use-module (guix config)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:autoload (guix describe) (package-provenance)
#:use-module (guix describe)
#:autoload (guix store roots) (gc-roots)
#:use-module ((guix build utils)
#:select (directory-exists? mkdir-p))
@ -883,7 +883,10 @@ processed, #f otherwise."
opts))
(manifest (match files
(() (profile-manifest profile))
(_ (concatenate-manifests (map load-manifest files)))))
(_ (map-manifest-entries
manifest-entry-with-provenance
(concatenate-manifests
(map load-manifest files))))))
(step1 (options->removable opts manifest
(manifest-transaction)))
(step2 (options->installable opts manifest step1))