M guix-build.in => guix-build.in +9 -6
@@ 53,13 53,16 @@ When SOURCE? is true, return the derivations of the package sources."
(let ((p (eval exp (current-module))))
(if (package? p)
(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))
- (begin
- (format (current-error-port)
- (_ "expression `~s' does not evaluate to a package")
- exp)
- (exit 1)))))
+ (leave (_ "expression `~s' does not evaluate to a package~%")
+ exp))))
;;;
M tests/guix-build.sh => tests/guix-build.sh +6 -1
@@ 23,7 23,12 @@
guix-build --version
# 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.
guix-build -e '(@@ (distro packages base) %bootstrap-guile)' | \