diff options
-rw-r--r-- | doc/guix.texi | 6 | ||||
-rw-r--r-- | guix/gexp.scm | 27 |
2 files changed, 13 insertions, 20 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 1a14ff9f0e..6d424b23e0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3908,7 +3908,7 @@ This is the declarative counterpart of @code{gexp->derivation}. @deffn {Monadic Procedure} gexp->script @var{name} @var{exp} Return an executable script @var{name} that runs @var{exp} using -@var{guile} with @var{modules} in its search path. +@var{guile}, with @var{exp}'s imported modules in its search path. The example below builds a script that simply invokes the @command{ls} command: @@ -3934,10 +3934,10 @@ executable file @file{/gnu/store/@dots{}-list-files} along these lines: @end deffn @deffn {Scheme Procedure} program-file @var{name} @var{exp} @ - [#:modules '()] [#:guile #f] + [#:guile #f] Return an object representing the executable store item @var{name} that runs @var{gexp}. @var{guile} is the Guile package used to execute that -script, and @var{modules} is the list of modules visible to that script. +script. This is the declarative counterpart of @code{gexp->script}. @end deffn diff --git a/guix/gexp.scm b/guix/gexp.scm index ec4fe0896a..302879fb42 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -56,7 +56,6 @@ program-file? program-file-name program-file-gexp - program-file-modules program-file-guile scheme-file @@ -296,29 +295,25 @@ This is the declarative counterpart of 'gexp->derivation'." (apply gexp->derivation name gexp options)))) (define-record-type <program-file> - (%program-file name gexp modules guile) + (%program-file name gexp guile) program-file? (name program-file-name) ;string (gexp program-file-gexp) ;gexp - (modules program-file-modules) ;list of module names (guile program-file-guile)) ;package -(define* (program-file name gexp - #:key (modules '()) (guile #f)) +(define* (program-file name gexp #:key (guile #f)) "Return an object representing the executable store item NAME that runs -GEXP. GUILE is the Guile package used to execute that script, and MODULES is -the list of modules visible to that script. +GEXP. GUILE is the Guile package used to execute that script. This is the declarative counterpart of 'gexp->script'." - (%program-file name gexp modules guile)) + (%program-file name gexp guile)) (define-gexp-compiler (program-file-compiler (file program-file?) system target) ;; Compile FILE by returning a derivation that builds the script. (match file - (($ <program-file> name gexp modules guile) + (($ <program-file> name gexp guile) (gexp->script name gexp - #:modules modules #:guile (or guile (default-guile)))))) (define-record-type <scheme-file> @@ -1000,13 +995,11 @@ they can refer to each other." %load-compiled-path))))))) (define* (gexp->script name exp - #:key (modules '()) (guile (default-guile))) - "Return an executable script NAME that runs EXP using GUILE with MODULES in -its search path." - (define %modules - (append (gexp-modules exp) modules)) - - (mlet %store-monad ((set-load-path (load-path-expression %modules))) + #:key (guile (default-guile))) + "Return an executable script NAME that runs EXP using GUILE, with EXP's +imported modules in its search path." + (mlet %store-monad ((set-load-path + (load-path-expression (gexp-modules exp)))) (gexp->derivation name (gexp (call-with-output-file (ungexp output) |