Hi Mark, On Tue, 23 Mar 2021 at 19:42, Mark H Weaver <m...@netris.org> wrote: > Andreas Enge <andr...@enge.fr> writes:
>> $ guix package -A imagemagick >> imagemagick 6.9.12-2g out,doc gnu/packages/imagemagick.scm:132:2 >> imagemagick 6.9.11-48 out,doc gnu/packages/imagemagick.scm:48:2 >> >> $ guix build imagemagick@6.9.11 >> guix build: error: imagemagick: package not found for version 6.9.11 >> >> $ guix build imagemagick@6.9.11-48 >> /gnu/store/c30y49vg735g6b4hh590zrc9fmvcsy0w-imagemagick-6.9.12-2g-doc >> /gnu/store/l3hr0fimip6v7vmkgxbqygsglxaxasy0-imagemagick-6.9.12-2g Here, there are several points. --8<---------------cut here---------------start------------->8--- $ guix search imagemagick | recsel -p name,version | head -5 name: imagemagick version: 6.9.12-2g name: imagemagick version: 6.9.11-48 $ guix build imagemagick /gnu/store/b91y6ji9ypx8abk00jd33jglxbnjq4dy-imagemagick-6.9.12-2g-doc /gnu/store/l0asah1mggmgli85sp673bnp2yc71g0j-imagemagick-6.9.12-2g --8<---------------cut here---------------end--------------->8--- All is fine, security speaking. Then, there is a bug on how Guix handles the version. Well, 6.9.11 should be understood as 6.9.11-48 and it seems not: --8<---------------cut here---------------start------------->8--- $ guix build imagemagick@6.9.11 guix build: error: imagemagick: package not found for version 6.9.11 $ guix build imagemagick@6.9.11-48 /gnu/store/b91y6ji9ypx8abk00jd33jglxbnjq4dy-imagemagick-6.9.12-2g-doc /gnu/store/l0asah1mggmgli85sp673bnp2yc71g0j-imagemagick-6.9.12-2g --8<---------------cut here---------------end--------------->8--- …but all is fine security speaking. And the --no-grafts allows to get the so-well named option. :-) --8<---------------cut here---------------start------------->8--- $ guix build imagemagick@6.9.11-48 --no-grafts /gnu/store/wlnciwhn6llwqwywf4hq739v5bbcrq3h-imagemagick-6.9.11-48-doc /gnu/store/vlix7fclb7ifjgmxgpwr1pvraff89w7b-imagemagick-6.9.11-48 --8<---------------cut here---------------end--------------->8--- However, I am confused by, --8<---------------cut here---------------start------------->8--- $ guix build imagemagick --no-grafts /gnu/store/aby97j4d27zm6ilpcqrdm1lcw34xhcpj-imagemagick-6.9.12-2g-doc /gnu/store/mzlng0n9s811abilzffa3v6pslv184yj-imagemagick-6.9.12-2g --8<---------------cut here---------------end--------------->8--- > To my mind this suggests a bug, or at least suboptimal behavior, in > "guix package". I don't think it's appropriate to set grafting policy > to work around it. If I understand correctly all that, I agree with the 2 parts from your comment made elsewhere: It would be good to reach agreement on whether replacement packages should be made public. I haven't thought much about it, so I don't know what the relevant issues are. <https://yhetil.org/guix/877dlxjwri....@netris.org> > How about changing "guix package -A" and "guix package -s" to display > information about the package's replacement, if it has one? The real question seems about ’replacement’ with upgraded version, because otherwise it is already the expected behaviour, I mean the behaviour that I personally expect. :-) --8<---------------cut here---------------start------------->8--- $ guix build python /gnu/store/wbci0x7f1q3k8rrc8d5qcckh59vl5zld-python-3.8.2 /gnu/store/r9f2bbavkbj17h2djjild5v5rd6yymcv-python-3.8.2-tk $ guix build python --no-grafts /gnu/store/rz42ba0my9vrgbkjpkzr2drmnjk5ah50-python-3.8.2 /gnu/store/r61fm38x5zwfaval9nf7ax960qmgsixf-python-3.8.2-tk $ guix show python | recsel -p name,version name: python version: 3.8.2 outputs: out tk --8<---------------cut here---------------end--------------->8--- > Alternatively, those commands could somehow explicitly indicate that the > package has been grafted, and show the version number of the > replacement, in such a way that is less confusing to users. That’s the issue when updating a package using ’replacement’. Is the replaced package still visible at the CLI level? If yes, we could try to indicate something like: --8<---------------cut here---------------start------------->8--- $ guix search imagemagick | recsel -p name,version | head -5 name: imagemagick version: 6.9.12-2g name: imagemagick version: 6.9.11-48 (grafted by 6.9.12-2g) --8<---------------cut here---------------end--------------->8--- but I do not know if it is possible / easy. And even, there are still clumsy behaviour as pointer above. Cheers, simon