diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-05-26 23:38:27 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-05-26 23:38:27 +0200 |
commit | 07eaecfae1add0b1b0d78047c0ac7b1229592dcb (patch) | |
tree | 4711ffccab377d9f015d747cdd61f5b71882f152 | |
parent | 41766807d042023b1f807cc40e9fd09fc3682a4e (diff) | |
download | guix-07eaecfae1add0b1b0d78047c0ac7b1229592dcb.tar.gz |
profiles: Hooks always return a monadic value.
Suggested by 宋文武 <iyzsong@gmail.com>. * guix/profiles.scm (ghc-package-cache-file): Return a monadic #f, not just #f, when MANIFEST contains no GHC package. (profile-derivation): Do not filter based on the return value of HOOK; instead filter based on the value of items in EXTRAS.
-rw-r--r-- | guix/profiles.scm | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm index 9cb226eda7..9011449aa8 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -516,12 +516,14 @@ entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." (for-each delete-file (find-files db-dir "\\.conf$")) success))) - ;; Don't depend on GHC when there's nothing to do. - (and (any (cut string-prefix? "ghc" <>) - (map manifest-entry-name (manifest-entries manifest))) - (gexp->derivation "ghc-package-cache" build - #:modules '((guix build utils)) - #:local-build? #t))) + (with-monad %store-monad + ;; Don't depend on GHC when there's nothing to do. + (if (any (cut string-prefix? "ghc" <>) + (map manifest-entry-name (manifest-entries manifest))) + (gexp->derivation "ghc-package-cache" build + #:modules '((guix build utils)) + #:local-build? #t) + (return #f)))) (define (ca-certificate-bundle manifest) "Return a derivation that builds a single-file bundle containing the CA @@ -602,11 +604,14 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc." (mlet %store-monad ((extras (if (null? (manifest-entries manifest)) (return '()) (sequence %store-monad - (filter-map (lambda (hook) - (hook manifest)) - hooks))))) + (map (lambda (hook) + (hook manifest)) + hooks))))) (define inputs - (append (map gexp-input extras) + (append (filter-map (lambda (gexp) + (and (gexp? gexp) + (gexp-input gexp))) + extras) (manifest-inputs manifest))) (define builder |