I think your incantation is incorrect: you build foobar@9.0.1, and you replace the source of foobar@9.5.0 only. For the rest of your question, I think there is actually no way to fix that: when you use ",version", it gets evaluated before you can import the package. Maybe (package-version this-package) would work? Le 20 octobre 2021 05:18:02 GMT-04:00, Phil Beadling a écrit : >Hi all, > >I'm using the following incantation: > >guix build >--with-source=foobar@9.5.0=/opt/thirdparty/foobar/foobar950_beta/linux64 ><--with-source=gurobipy@9.5.0=/opt/thirdparty/gurobi/gurobi950_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*