guix: packages: Add transitive-input-references.
* guix/packages.scm (transitive-input-references): New procedure. * gnu/packages/version-control.scm (package-transitive-propagated-labels*) (package-propagated-input-refs): Delete. (git)[arguments]: Adjust to transitive-input-references.
This commit is contained in:
parent
8b45993235
commit
a6d0b306c2
|
@ -98,24 +98,6 @@ changes to project files over time. It supports both a distributed workflow
|
||||||
as well as the classic centralized workflow.")
|
as well as the classic centralized workflow.")
|
||||||
(license gpl2+)))
|
(license gpl2+)))
|
||||||
|
|
||||||
(define (package-transitive-propagated-labels* package)
|
|
||||||
"Return a list of the input labels of PACKAGE and its transitive inputs."
|
|
||||||
(let ((name (package-name package)))
|
|
||||||
`(,name
|
|
||||||
,@(map (match-lambda
|
|
||||||
((label (? package? _) . _)
|
|
||||||
label))
|
|
||||||
(package-transitive-propagated-inputs package)))))
|
|
||||||
|
|
||||||
(define (package-propagated-input-refs inputs packages)
|
|
||||||
"Return a list of (assoc-ref INPUTS <package-name>) for each package in
|
|
||||||
PACKAGES and their propagated inputs."
|
|
||||||
(map (lambda (l)
|
|
||||||
`(assoc-ref ,inputs ,l))
|
|
||||||
(delete-duplicates ;XXX: efficiency
|
|
||||||
(append-map package-transitive-propagated-labels*
|
|
||||||
packages))))
|
|
||||||
|
|
||||||
(define-public git
|
(define-public git
|
||||||
;; Keep in sync with 'git-manpages'!
|
;; Keep in sync with 'git-manpages'!
|
||||||
(package
|
(package
|
||||||
|
@ -238,11 +220,13 @@ PACKAGES and their propagated inputs."
|
||||||
`("PERL5LIB" ":" prefix
|
`("PERL5LIB" ":" prefix
|
||||||
,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
|
,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
|
||||||
(list
|
(list
|
||||||
,@(package-propagated-input-refs
|
,@(transitive-input-references
|
||||||
'inputs
|
'inputs
|
||||||
(list perl-authen-sasl
|
(map (lambda (l)
|
||||||
perl-net-smtp-ssl
|
(assoc l (inputs)))
|
||||||
perl-io-socket-ssl))))))
|
'("perl-authen-sasl"
|
||||||
|
"perl-net-smtp-ssl"
|
||||||
|
"perl-io-socket-ssl")))))))
|
||||||
|
|
||||||
;; Tell 'git-submodule' where Perl is.
|
;; Tell 'git-submodule' where Perl is.
|
||||||
(wrap-program git-sm
|
(wrap-program git-sm
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||||
|
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -93,6 +94,8 @@
|
||||||
package-output
|
package-output
|
||||||
package-grafts
|
package-grafts
|
||||||
|
|
||||||
|
transitive-input-references
|
||||||
|
|
||||||
%supported-systems
|
%supported-systems
|
||||||
%hydra-supported-systems
|
%hydra-supported-systems
|
||||||
supported-package?
|
supported-package?
|
||||||
|
@ -579,6 +582,18 @@ for the host system (\"native inputs\"), and not target inputs."
|
||||||
recursively."
|
recursively."
|
||||||
(transitive-inputs (package-propagated-inputs package)))
|
(transitive-inputs (package-propagated-inputs package)))
|
||||||
|
|
||||||
|
(define (transitive-input-references alist inputs)
|
||||||
|
"Return a list of (assoc-ref ALIST <label>) for each (<label> <package> . _)
|
||||||
|
in INPUTS and their transitive propagated inputs."
|
||||||
|
(define label
|
||||||
|
(match-lambda
|
||||||
|
((label . _)
|
||||||
|
label)))
|
||||||
|
|
||||||
|
(map (lambda (input)
|
||||||
|
`(assoc-ref ,alist ,(label input)))
|
||||||
|
(transitive-inputs inputs)))
|
||||||
|
|
||||||
(define-syntax define-memoized/v
|
(define-syntax define-memoized/v
|
||||||
(lambda (form)
|
(lambda (form)
|
||||||
"Define a memoized single-valued unary procedure with docstring.
|
"Define a memoized single-valued unary procedure with docstring.
|
||||||
|
|
|
@ -207,6 +207,23 @@
|
||||||
(member i s)
|
(member i s)
|
||||||
(member u s)))))
|
(member u s)))))
|
||||||
|
|
||||||
|
(test-assert "transitive-input-references"
|
||||||
|
(let* ((a (dummy-package "a"))
|
||||||
|
(b (dummy-package "b"))
|
||||||
|
(c (dummy-package "c"
|
||||||
|
(inputs `(("a" ,a)))
|
||||||
|
(propagated-inputs `(("boo" ,b)))))
|
||||||
|
(d (dummy-package "d"
|
||||||
|
(inputs `(("c*" ,c)))))
|
||||||
|
(keys (map (match-lambda
|
||||||
|
(('assoc-ref 'l key)
|
||||||
|
key))
|
||||||
|
(pk 'refs (transitive-input-references
|
||||||
|
'l (package-inputs d))))))
|
||||||
|
(and (= (length keys) 2)
|
||||||
|
(member "c*" keys)
|
||||||
|
(member "boo" keys))))
|
||||||
|
|
||||||
(test-equal "package-transitive-supported-systems, implicit inputs"
|
(test-equal "package-transitive-supported-systems, implicit inputs"
|
||||||
%supported-systems
|
%supported-systems
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue