From 9a2a20052a1a9c384a1b877d7c71d2d239f9467e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 23 Mar 2016 22:32:44 +0100 Subject: guix build: '--with-source' correctly matches versioned file names. * guix/scripts/build.scm: Use the right 'package-name->name+version' procedure. Fixes a regression introduced in 1b846da8c372bee78851439fd9e72b2499115e5a. * tests/scripts-build.scm ("options->transformation, with-source, with version"): New test. --- guix/scripts/build.scm | 6 +++++- tests/scripts-build.scm | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index b25bf50d2b..9a6b427fc5 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -24,7 +24,11 @@ (define-module (guix scripts build) #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix grafts) - #:use-module (guix utils) + + ;; Use the procedure that destructures "NAME-VERSION" forms. + #:use-module ((guix utils) #:hide (package-name->name+version)) + #:use-module ((guix build utils) #:select (package-name->name+version)) + #:use-module (guix monads) #:use-module (guix gexp) #:autoload (guix http-client) (http-fetch http-get-error?) diff --git a/tests/scripts-build.scm b/tests/scripts-build.scm index 94ddaf447b..cf9770e952 100644 --- a/tests/scripts-build.scm +++ b/tests/scripts-build.scm @@ -22,6 +22,7 @@ (define-module (test-scripts-build) #:use-module (guix packages) #:use-module (guix scripts build) #:use-module (guix ui) + #:use-module (guix utils) #:use-module (gnu packages base) #:use-module (gnu packages busybox) #:use-module (ice-9 match) @@ -49,6 +50,25 @@ (define-module (test-scripts-build) (add-to-store store "guix.scm" #t "sha256" s))))))) +(test-assert "options->transformation, with-source, with version" + ;; Our pseudo-package is called 'guix.scm' so the 'guix.scm-2.0' source + ;; should be applicable, and its version should be extracted. + (let ((p (dummy-package "foo")) + (s (search-path %load-path "guix.scm"))) + (call-with-temporary-directory + (lambda (directory) + (let* ((f (string-append directory "/foo-42.0.tar.gz")) + (t (options->transformation `((with-source . ,f))))) + (copy-file s f) + (with-store store + (let ((new (t store p))) + (and (not (eq? new p)) + (string=? (package-name new) (package-name p)) + (string=? (package-version new) "42.0") + (string=? (package-source new) + (add-to-store store (basename f) #t + "sha256" f)))))))))) + (test-assert "options->transformation, with-source, no matches" ;; When a transformation in not applicable, a warning must be raised. (let* ((p (dummy-package "foobar")) -- cgit v1.2.3