diff options
| -rw-r--r-- | doc/guix.texi | 5 | ||||
| -rw-r--r-- | guix/scripts/build.scm | 6 | ||||
| -rw-r--r-- | tests/guix-build.sh | 4 |
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 | 6368 | Build the package, derivation, or other file-like object that the code within | |
| 6369 | Build the package or derivation that the code within @var{file} | 6369 | @var{file} evaluates to (@pxref{G-Expressions, file-like objects}). |
| 6370 | evaluates to. | ||
| 6371 | 6370 | ||
| 6372 | As an example, @var{file} might contain a package definition like this | 6371 | As 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 |
| 624 | build---packages, gexps, derivations, and so on." | 624 | build---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 | |||
| 221 | guix build -e '#~(mkdir #$output)' -d | 221 | guix build -e '#~(mkdir #$output)' -d |
| 222 | guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv' | 222 | guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv' |
| 223 | 223 | ||
| 224 | # Same with a file-like object. | ||
| 225 | guix build -e '(computed-file "foo" #~(mkdir #$output))' -d | ||
| 226 | guix build -e '(computed-file "foo" #~(mkdir #$output))' -d | grep 'foo\.drv' | ||
| 227 | |||
| 224 | # Building from a package file. | 228 | # Building from a package file. |
| 225 | cat > "$module_dir/package.scm"<<EOF | 229 | cat > "$module_dir/package.scm"<<EOF |
| 226 | (use-modules (gnu)) | 230 | (use-modules (gnu)) |
