guix-build: Error out when `-S' used for source-less package.

* guix-build.in (derivations-from-package-expressions): Leave with an
  error message when SOURCE? is #t and P has no source.

* tests/guix-build.sh: Add test.
This commit is contained in:
Ludovic Courtès 2012-11-07 23:41:59 +01:00
parent eeaf44276c
commit 912209ee61
2 changed files with 15 additions and 7 deletions

View file

@ -53,13 +53,16 @@ When SOURCE? is true, return the derivations of the package sources."
(let ((p (eval exp (current-module)))) (let ((p (eval exp (current-module))))
(if (package? p) (if (package? p)
(if source? (if source?
(package-source-derivation %store (package-source p)) (let ((source (package-source p))
(loc (package-location p)))
(if source
(package-source-derivation %store source)
(leave (_ "~a:~a:~a: error: package `~a' has no source~%")
(location-file loc) (location-line loc)
(location-column loc) (package-name p))))
(package-derivation %store p system)) (package-derivation %store p system))
(begin (leave (_ "expression `~s' does not evaluate to a package~%")
(format (current-error-port) exp))))
(_ "expression `~s' does not evaluate to a package")
exp)
(exit 1)))))
;;; ;;;

View file

@ -23,7 +23,12 @@
guix-build --version guix-build --version
# Should fail. # Should fail.
guix-build -e + || true if guix-build -e +;
then false; else true; fi
# Should fail because this is a source-less package.
if guix-build -e '(@ (distro packages bootstrap) %bootstrap-glibc)' -S
then false; else true; fi
# Should pass. # Should pass.
guix-build -e '(@@ (distro packages base) %bootstrap-guile)' | \ guix-build -e '(@@ (distro packages base) %bootstrap-guile)' | \