mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
profiles: Delete duplicate manifest entries in packages->manifest.
* gnu/profiles.scm (packages->manifest): Delete duplicate entries. * tests/profiles.scm ("packages->manifest, no duplicates"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
f5d952c5f5
commit
07340cbebc
2 changed files with 28 additions and 16 deletions
|
@ -399,22 +399,24 @@ (define (inferior->entry)
|
|||
'inferior-package->manifest-entry))
|
||||
|
||||
(manifest
|
||||
(map (match-lambda
|
||||
(((? package? package) output)
|
||||
(package->manifest-entry package output))
|
||||
((? package? package)
|
||||
(package->manifest-entry package))
|
||||
((thing output)
|
||||
(if inferiors-loaded?
|
||||
((inferior->entry) thing output)
|
||||
(throw 'wrong-type-arg 'packages->manifest
|
||||
"Wrong package object: ~S" (list thing) (list thing))))
|
||||
(thing
|
||||
(if inferiors-loaded?
|
||||
((inferior->entry) thing)
|
||||
(throw 'wrong-type-arg 'packages->manifest
|
||||
"Wrong package object: ~S" (list thing) (list thing)))))
|
||||
packages)))
|
||||
(delete-duplicates
|
||||
(map (match-lambda
|
||||
(((? package? package) output)
|
||||
(package->manifest-entry package output))
|
||||
((? package? package)
|
||||
(package->manifest-entry package))
|
||||
((thing output)
|
||||
(if inferiors-loaded?
|
||||
((inferior->entry) thing output)
|
||||
(throw 'wrong-type-arg 'packages->manifest
|
||||
"Wrong package object: ~S" (list thing) (list thing))))
|
||||
(thing
|
||||
(if inferiors-loaded?
|
||||
((inferior->entry) thing)
|
||||
(throw 'wrong-type-arg 'packages->manifest
|
||||
"Wrong package object: ~S" (list thing) (list thing)))))
|
||||
packages)
|
||||
manifest-entry=?)))
|
||||
|
||||
(define (manifest->gexp manifest)
|
||||
"Return a representation of MANIFEST as a gexp."
|
||||
|
|
|
@ -384,6 +384,16 @@ (define (find-input package)
|
|||
(manifest-entry-search-paths
|
||||
(package->manifest-entry mpl)))))
|
||||
|
||||
(test-assert "packages->manifest, no duplicates"
|
||||
(let ((expected
|
||||
(manifest
|
||||
(list
|
||||
(package->manifest-entry packages:guile-2.2))))
|
||||
(manifest (packages->manifest
|
||||
(list packages:guile-2.2 packages:guile-2.2))))
|
||||
(every manifest-entry=? (manifest-entries expected)
|
||||
(manifest-entries manifest))))
|
||||
|
||||
(test-equal "packages->manifest, propagated inputs"
|
||||
(map (match-lambda
|
||||
((label package)
|
||||
|
|
Loading…
Reference in a new issue