Ludovic Courtès (2016-07-28 16:01 +0300) wrote: > Alex Kost <alez...@gmail.com> skribis: [...] >> However, I tried it and it doesn't work for me (note: I know nothing >> about monads, gexps, etc.). When I try this: >> >> (mbegin %store-monad >> (set-grafting #f) >> …) >> >> the grafting doesn't happen, but when I try this: >> >> (mlet %store-monad ((grafting? ((lift0 %graft? %store-monad)))) >> (set-grafting #f) >> …) >> >> grafting happens anyway. I have no idea what the problem is. > > Hmm. Not sure why. What about this:
This approach works, thanks! > --- a/guix/scripts.scm > +++ b/guix/scripts.scm > @@ -22,6 +22,7 @@ > #:use-module (guix utils) > #:use-module (guix ui) > #:use-module (guix store) > + #:use-module (guix grafts) > #:use-module (guix monads) > #:use-module (guix packages) > #:use-module (guix derivations) > @@ -105,11 +106,14 @@ true." > #:rest build-options) > "Build PACKAGE using BUILD-OPTIONS acceptable by 'set-build-options'. > Show what and how will/would be built." > - (mbegin %store-monad > + (mlet %store-monad ((grafting? ((lift0 %graft? %store-monad)))) > (apply set-build-options* > #:use-substitutes? use-substitutes? > (strip-keyword-arguments '(#:dry-run?) build-options)) > - (mlet %store-monad ((derivation (package->derivation package))) > + (mlet %store-monad ((derivation (package->derivation package > + #:graft? > + (and (not dry-run?) > + grafting?)))) > (mbegin %store-monad > (maybe-build (list derivation) > #:use-substitutes? use-substitutes? > > Using #:graft? is cleaner anyway. Indeed! Since you said it's OK to make separate patches for this "dry-run + no-grafts" change (for CLI and Emacs UI), I committed it as a82a201. -- Alex