Pierre Neidhardt writes: > I'm not so well versed in grafting, so let me ask a few questions: > > - Why is fish grafted in the first place? Almost any package can be grafted. A package will be grafted when any of its inputs (direct or transitive) have been replaced. The goal of grafting is to build a replacement package *quickly* and then only rewrite references to the replaced package in all dependent packages. The advantage is that dependent packages do not need to be rebuilt; they just need to be copied, scanned for references, and have their references updated. This is usually *much* faster than rebuilding all dependent packages, which may be an important consideration in distributing security fixes. > - Is the issue here that grafting does not support wide string literals? > Shouldn't we fix the Guix code to support wide strings as well? Grafting succeeds when we can find all references to items that should be replaced – in plain text files but also in binaries. Past problems with grafting were triggered by compiler behaviour that chopped up these reference strings, or by build systems that split these reference strings. A grafting problem is usually also a garbage collection problem, because both depend on successful scanning for store references. -- Ricardo