diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-08-24 16:58:44 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-08-24 17:30:31 +0200 |
commit | 7357138bba23851584f522e6a986ca3fc80dbf43 (patch) | |
tree | e66c5334a78472b4f33ad12e1057aa78d996925b | |
parent | b095792f9b8676411f7b5eb6c768d28ae123449b (diff) | |
download | gnu-guix-7357138bba23851584f522e6a986ca3fc80dbf43.tar gnu-guix-7357138bba23851584f522e6a986ca3fc80dbf43.tar.gz |
packages: Allow file names as package sources.
* guix/packages.scm (package-source-derivation): Add cases for SOURCE as
a store path or user file.
* tests/packages.scm ("package-source-derivation, file",
"package-source-derivation, store path"): New tests.
-rw-r--r-- | guix/packages.scm | 6 | ||||
-rw-r--r-- | tests/packages.scm | 22 |
2 files changed, 26 insertions, 2 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index bb46131132..f63727dd32 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -250,7 +250,11 @@ corresponds to the arguments expected by `set-path-environment-variable'." (match source (($ <origin> uri method sha256 name) (method store uri 'sha256 sha256 name - #:system system)))) + #:system system)) + ((and (? string?) (? store-path?) file) + file) + ((? string? file) + (add-to-store store (basename file) #t "sha256" file)))) (define (transitive-inputs inputs) (let loop ((inputs inputs) diff --git a/tests/packages.scm b/tests/packages.scm index 78770c7d94..8619011f59 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -99,7 +99,27 @@ ("d" ,d) ("d/x" "something.drv")) (pk 'x (package-transitive-inputs e)))))) -(test-skip (if (not %store) 6 0)) +(test-skip (if (not %store) 8 0)) + +(test-assert "package-source-derivation, file" + (let* ((file (search-path %load-path "guix.scm")) + (package (package (inherit (dummy-package "p")) + (source file))) + (source (package-source-derivation %store + (package-source package)))) + (and (store-path? source) + (valid-path? %store source) + (equal? (call-with-input-file source get-bytevector-all) + (call-with-input-file file get-bytevector-all))))) + +(test-assert "package-source-derivation, store path" + (let* ((file (add-to-store %store "guix.scm" #t "sha256" + (search-path %load-path "guix.scm"))) + (package (package (inherit (dummy-package "p")) + (source file))) + (source (package-source-derivation %store + (package-source package)))) + (string=? file source))) (test-assert "return values" (let-values (((drv-path drv) |