~ruther/guix-local

912209ee61ced92c3246da78ed9991781fa6bf2d — Ludovic Courtès 13 years ago eeaf442
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.
2 files changed, 15 insertions(+), 7 deletions(-)

M guix-build.in
M tests/guix-build.sh
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)' |	\