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:
Eric Bavier 2015-07-21 20:45:54 -05:00
parent 8b45993235
commit a6d0b306c2
3 changed files with 38 additions and 22 deletions

View file

@ -98,24 +98,6 @@ changes to project files over time. It supports both a distributed workflow
as well as the classic centralized workflow.")
(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
;; Keep in sync with 'git-manpages'!
(package
@ -238,11 +220,13 @@ PACKAGES and their propagated inputs."
`("PERL5LIB" ":" prefix
,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
(list
,@(package-propagated-input-refs
,@(transitive-input-references
'inputs
(list perl-authen-sasl
perl-net-smtp-ssl
perl-io-socket-ssl))))))
(map (lambda (l)
(assoc l (inputs)))
'("perl-authen-sasl"
"perl-net-smtp-ssl"
"perl-io-socket-ssl")))))))
;; Tell 'git-submodule' where Perl is.
(wrap-program git-sm