I think (maybe part of) the problem is that inside entry->gexp in manifest->gexp things get compared using (the hash of) (manifest-entry-item entry) which will be a package object for the new entries but a store path "/gnu/store/*" for packages already present in the profile.

Also right afterwards we test if the visited previous-entry is 'manifest-entry=?' to entry again causing a potential problem if one has a string and one a package as item entry.

Would this be worth fixing?


On 04.06.24 13:38, Dariqq wrote:
Hi Guix,

I was trying to figure out if the "repeated" tag inside a profiles manifest file is reliable to detect duplicate entries in a profile. While it was working fine for my home and system profile for the normal .guix-profile it was not:

This is related to https://issues.guix.gnu.org/55499#0 resp. https://git.savannah.gnu.org/cgit/guix.git/commit/?id=4ff12d1de7cd617b791996ee7ca1240660b4c20e which marks duplicate entries in a profiles as repeated inside the profile manifest file.

* Steps to reproduce

To stick with the original example: Instead of adding the r packages all in one add them one by one

#+begin_example
guix package -p /tmp/wrong -i r-cicero-monocle3
guix package -p /tmp/wrong -i r-monocle3
#+end_example

The resulting manifest file at /tmp/wrong/manifest has the huge tree for r-monocle3 twice.

So the lookup mechanism in manifest->gexp does not seem to work with the install mechanism of profiles. I haven't looked more deeply into it yet.

An smaller example is using zlib and glib (which propagates zlib).

* Expected Behaviour

It should not matter whether you install things in multiple transactions or in one.

Thanks.



Reply via email to