~ruther/guix-local

5c5ae46c00fd553c6fd23aeba1961e201f6555c7 — Ludovic Courtès 8 years ago fe55199
packages: 'fold-packages' takes an optional 'modules' parameter.

Suggested by Christopher Baines <mail@cbaines.net>.

* gnu/packages.scm (fold-packages): Add optional 'modules' parameter and
honor it.
1 files changed, 7 insertions(+), 5 deletions(-)

M gnu/packages.scm
M gnu/packages.scm => gnu/packages.scm +7 -5
@@ 140,17 140,19 @@ for system '~a'")
              directory))
        %load-path)))

(define (fold-packages proc init)
  "Call (PROC PACKAGE RESULT) for each available package, using INIT as
the initial value of RESULT.  It is guaranteed to never traverse the
same package twice."
(define* (fold-packages proc init
                        #:optional
                        (modules (all-modules (%package-module-path))))
  "Call (PROC PACKAGE RESULT) for each available package defined in one of
MODULES, using INIT as the initial value of RESULT.  It is guaranteed to never
traverse the same package twice."
  (fold-module-public-variables (lambda (object result)
                                  (if (and (package? object)
                                           (not (hidden-package? object)))
                                      (proc object result)
                                      result))
                                init
                                (all-modules (%package-module-path))))
                                modules))

(define find-packages-by-name
  (let ((packages (delay