guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

--with-source version not honored?


From: Phil Beadling
Subject: --with-source version not honored?
Date: Wed, 20 Oct 2021 10:18:02 +0100

Hi all,

I'm using the following incantation:

guix build --with-source=foobar@9.5.0=/opt/thirdparty/foobar/foobar950_beta/linux64 foobar


However the package build is failing with:

(copy-file "lib/libfoobar.so.9.0.1" "/gnu/store/gkawzac…")

In procedure copy-file: No such file or directory


That is the new version number 9.5.0 is not written to every place when transforming the original package (version 9.0.1).  I think only the package-version is updated, but the other package components are not then regenerated, meaning that if they use the package-version as an input we get a disjoint package.

In the example above I use version like so:


(add-after 'install 'install-foobar-library
                                      (lambda* (#:key outputs #:allow-other-keys)
                                        (let* ((dir (string-append (assoc-ref outputs "out")
                                                                  "/lib/python3.8/site-packages/foobar/"))
                                                 (lib-to-install (string-append "libfoobar.so." ,version))

But ",version" is not updated, nor is it updated if I change this to call (package-version foobar).


If I drop into Guile I can see this a bit more clearly by writing a manifest - the code below gives exactly the same error however when the package-version is displayed it correctly responds with 9.5.0.

Not sure if this should be considered a bug, or if there is a lazy way of evaluating version so avoid the problem - I think it's unexpected from a practicioners point of view as packages end up inconsistent.

I presume I can manually replace the arguments section of the package in the manifest to workaround this - is there a standard way of doing this?

Any ideas or clarifications welcome!

Cheers,
Phil.

(use-modules (guix transformations)
             (guix packages))


(define transform
  ;; The package transformation procedure.
  (options->transformation
   '((with-source . "gurobipy@9.5.0=/opt/thirdparty/foobar/foobar950_beta/linux64"))))

(define my-package (transform (specification->package "foobar")))

(display (package-version my-package)) ;; this will display version 9.5.0

(newline)
(packages->manifest
 (list my-package)) ;; building this will fail because copy-file still looks for 9.0.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]