~ruther/guix-local

7c247809efe5d6a2a11617f41f45a2b6e8d6855f — Ludovic Courtès 9 years ago 590b80d
guix build: '--with-source' overrides the 'replacement' of a package.

* guix/scripts/build.scm (package-with-source): Set 'replacement' to #f.
* tests/scripts-build.scm ("options->transformation, with-source,
replacement"): New test.
2 files changed, 18 insertions(+), 1 deletions(-)

M guix/scripts/build.scm
M tests/scripts-build.scm
M guix/scripts/build.scm => guix/scripts/build.scm +5 -1
@@ 151,7 151,11 @@ the new package's version number from URI."

               ;; Use #:recursive? #t to allow for directories.
               (source (download-to-store store uri
                                          #:recursive? #t))))))
                                          #:recursive? #t))

               ;; Override the replacement, otherwise '--with-source' would
               ;; have no effect.
               (replacement #f)))))


;;;

M tests/scripts-build.scm => tests/scripts-build.scm +13 -0
@@ 50,6 50,19 @@
                       (add-to-store store "guix.scm" #t
                                     "sha256" s)))))))

(test-assert "options->transformation, with-source, replacement"
  ;; Same, but this time the original package has a 'replacement' field.  We
  ;; expect that replacement to be set to #f in the new package.
  (let* ((p (dummy-package "guix.scm" (replacement coreutils)))
         (s (search-path %load-path "guix.scm"))
         (t (options->transformation `((with-source . ,s)))))
    (with-store store
      (let ((new (t store p)))
        (and (not (eq? new p))
             (string=? (package-source new)
                       (add-to-store store "guix.scm" #t "sha256" s))
             (not (package-replacement new)))))))

(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.