Jack Hill writes: > On Sat, 8 Jun 2019, Marius Bakke wrote: > >> Jack Hill writes: >> >>> Hi Guix, >>> >>> I'm trying to copy the store items for ungoogled-chromium from one of my >>> hosts that has many computational resources to another one that does not, >>> so that I do not have to build ungoogled-chromium on the less powerful >>> host. >>> >>> However, even after copying the store items using guix archive --export | >>> guix archive --import, the less powerful host wants to build >>> ungoogled-chromium because the derivations differ (see attachments). >> >> I suspect this has to do with grafts. Guix is missing a substitute for >> the 'ungrafted' package and fails to realize the grafted derivation. >> >> Exporting with --no-grafts should do the trick. > > Marius, > > Thanks! That was it. > > If you don't mind, I have a few follow up question to help me understand > how everything works: > > How is guix archive --no-grafts different from guix build --no-grafts? Oh, > or after reading the manual for --no-grafts again, maybe I used the wrong > incantation (guix build --no-grafts package-name instead of guix build > package-name --no-grafts)? > > What's really going on with --no-grafts. Is it that guix on my less > powerful host has never seen the the ungoogled-chromium version build > against the older dependencies, so doesn't accept the older version that > could be grafted? I guess, I'm not sure exactly what you mean by "fails to > realize the grafted derivation". Is that a bug? Sorry, just a lazy and poor attempt at explaining what's going on... :-) > Sorry, I don't think that question was very clear. It probably means that > while I think I know what grafts are, I don't know enough about what's > going on to ask the question properly. I think this all could be summarized > as, "please explain more." Grafts are are ignored in some parts of Guix. In this case, if you inspect the profile derivation when doing 'guix install -n ungoogled-chromium', you can see that the computed profile.drv needs to produce the ungrafted ungoogled-chromium-x.y.z.drv, because the profile-builder references the _ungrafted_ package. I'm not sure of the exact mechanics that follow, but I guess grafts are only computed afterwards, recursively, for the generated profile. HTH, Marius