summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi5
-rw-r--r--guix/scripts/build.scm6
-rw-r--r--tests/guix-build.sh4
3 files changed, 11 insertions, 4 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 3c116fc0be7..9b37270a83b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -6365,9 +6365,8 @@ retrieved using the @option{--log-file} option.
6365 6365
6366@item --file=@var{file} 6366@item --file=@var{file}
6367@itemx -f @var{file} 6367@itemx -f @var{file}
6368 6368Build the package, derivation, or other file-like object that the code within
6369Build the package or derivation that the code within @var{file} 6369@var{file} evaluates to (@pxref{G-Expressions, file-like objects}).
6370evaluates to.
6371 6370
6372As an example, @var{file} might contain a package definition like this 6371As an example, @var{file} might contain a package definition like this
6373(@pxref{Defining Packages}): 6372(@pxref{Defining Packages}):
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 5a6ba62bc32..f3aa5512d55 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -623,7 +623,7 @@ must be one of 'package', 'all', or 'transitive'~%")
623 "Read the arguments from OPTS and return a list of high-level objects to 623 "Read the arguments from OPTS and return a list of high-level objects to
624build---packages, gexps, derivations, and so on." 624build---packages, gexps, derivations, and so on."
625 (define (validate-type x) 625 (define (validate-type x)
626 (unless (or (package? x) (derivation? x) (gexp? x) (procedure? x)) 626 (unless (or (derivation? x) (file-like? x) (gexp? x) (procedure? x))
627 (leave (G_ "~s: not something we can build~%") x))) 627 (leave (G_ "~s: not something we can build~%") x)))
628 628
629 (define (ensure-list x) 629 (define (ensure-list x)
@@ -700,6 +700,10 @@ package '~a' has no source~%")
700 (set-guile-for-build (default-guile)) 700 (set-guile-for-build (default-guile))
701 (proc)) 701 (proc))
702 #:system system))) 702 #:system system)))
703 ((? file-like? obj)
704 (list (run-with-store store
705 (lower-object obj system
706 #:target (assoc-ref opts 'target)))))
703 ((? gexp? gexp) 707 ((? gexp? gexp)
704 (list (run-with-store store 708 (list (run-with-store store
705 (mbegin %store-monad 709 (mbegin %store-monad
diff --git a/tests/guix-build.sh b/tests/guix-build.sh
index 92e7299321b..7842ce87c62 100644
--- a/tests/guix-build.sh
+++ b/tests/guix-build.sh
@@ -221,6 +221,10 @@ guix build -e "(begin
221guix build -e '#~(mkdir #$output)' -d 221guix build -e '#~(mkdir #$output)' -d
222guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv' 222guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv'
223 223
224# Same with a file-like object.
225guix build -e '(computed-file "foo" #~(mkdir #$output))' -d
226guix build -e '(computed-file "foo" #~(mkdir #$output))' -d | grep 'foo\.drv'
227
224# Building from a package file. 228# Building from a package file.
225cat > "$module_dir/package.scm"<<EOF 229cat > "$module_dir/package.scm"<<EOF
226(use-modules (gnu)) 230(use-modules (gnu))