mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
packages: 'package-mapping' correctly recurses into 'replacement'.
Previously, something like: guix build glib --with-graft=glibc=glibc@2.29 would produce a result showing that rewriting rules were not applied to libx11@1.6.A (a replacement). * guix/packages.scm (package-mapping): Call REPLACE instead of PROC to 'replacement'. * tests/packages.scm ("package-input-rewriting/spec, graft"): New test.
This commit is contained in:
parent
2bf6f962b9
commit
b3fc03ee26
2 changed files with 28 additions and 1 deletions
|
@ -1037,7 +1037,7 @@ (define replace
|
|||
(inputs (map rewrite (package-inputs p)))
|
||||
(native-inputs (map rewrite (package-native-inputs p)))
|
||||
(propagated-inputs (map rewrite (package-propagated-inputs p)))
|
||||
(replacement (and=> (package-replacement p) proc))
|
||||
(replacement (and=> (package-replacement p) replace))
|
||||
(properties `((,mapping-property . #t)
|
||||
,@(package-properties p))))))))
|
||||
|
||||
|
|
|
@ -1364,6 +1364,33 @@ (define read-at
|
|||
(match (delete-duplicates pythons eq?)
|
||||
((p) (eq? p (rewrite python))))))
|
||||
|
||||
(test-equal "package-input-rewriting/spec, graft"
|
||||
(derivation-file-name (package-derivation %store sed))
|
||||
|
||||
;; Make sure replacements are rewritten.
|
||||
(let* ((dep0 (dummy-package "dep"
|
||||
(version "1")
|
||||
(build-system trivial-build-system)
|
||||
(inputs `(("coreutils" ,coreutils)))))
|
||||
(dep1 (dummy-package "dep"
|
||||
(version "0")
|
||||
(build-system trivial-build-system)
|
||||
(replacement dep0)))
|
||||
(p0 (dummy-package "p"
|
||||
(build-system trivial-build-system)
|
||||
(inputs `(("dep" ,dep1)))))
|
||||
(rewrite (package-input-rewriting/spec
|
||||
`(("coreutils" . ,(const sed)))))
|
||||
(p1 (rewrite p0)))
|
||||
(match (package-inputs p1)
|
||||
((("dep" dep))
|
||||
(match (package-inputs (package-replacement dep))
|
||||
((("coreutils" coreutils))
|
||||
;; COREUTILS is not 'eq?' to SED, so the most reliable way to check
|
||||
;; for equality is to lower to a derivation.
|
||||
(derivation-file-name
|
||||
(package-derivation %store coreutils))))))))
|
||||
|
||||
(test-equal "package-patched-vulnerabilities"
|
||||
'(("CVE-2015-1234")
|
||||
("CVE-2016-1234" "CVE-2018-4567")
|
||||
|
|
Loading…
Reference in a new issue