~ruther/guix-local

f80594cc41d7ad491f14a73d594228bacafdc871 — Ludovic Courtès 12 years ago 9336e5b
packages: Suitably cope with indirect store paths as package sources.

* guix/packages.scm (package-source-derivation): Don't let indirect
  store paths pass through.
* tests/packages.scm ("package-source-derivation, indirect store path"):
  New test.
2 files changed, 12 insertions(+), 1 deletions(-)

M guix/packages.scm
M tests/packages.scm
M guix/packages.scm => guix/packages.scm +1 -1
@@ 413,7 413,7 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
                         #:guile-for-build (or guile-for-build
                                               (%guile-for-build)
                                               (default-guile store system)))))
    ((and (? string?) (? store-path?) file)
    ((and (? string?) (? direct-store-path?) file)
     file)
    ((? string? file)
     (add-to-store store (basename file) #t "sha256" file))))

M tests/packages.scm => tests/packages.scm +11 -0
@@ 122,6 122,17 @@
                                             (package-source package))))
    (string=? file source)))

(test-assert "package-source-derivation, indirect store path"
  (let* ((dir     (add-to-store %store "guix-build" #t "sha256"
                                (dirname (search-path %load-path
                                                      "guix/build/utils.scm"))))
         (package (package (inherit (dummy-package "p"))
                    (source (string-append dir "/utils.scm"))))
         (source  (package-source-derivation %store
                                             (package-source package))))
    (and (direct-store-path? source)
         (string-suffix? "utils.scm" source))))

(test-equal "package-source-derivation, snippet"
  "OK"
  (let* ((file   (search-bootstrap-binary "guile-2.0.7.tar.xz"