Hi, Mark H Weaver <m...@netris.org> writes:
> John Soo <js...@asu.edu> writes: >> I looked into it and I think a patch to fish might be required but I >> got buried in other work. > > Note that commit 1bab9b9f17256a9e4f45f5b0cceb8b52e0a1b1ed (April 2021) > added support in our grafting code to find and rewrite UTF-16 and UTF-32 > store references. That might have mitigated or even eliminated the > adverse effects of this bug. > > However, the Guix daemon's reference scanner still does not detect > UTF-16/32 references. This could be a problem if some store item is > reachable *only* via UTF-16/32 store references, because "guix gc" might > delete it even though it is still needed. > > However, if it is the case that every referenced store item is > represented in ASCII or UTF-8 at least once, everything should work. > Therefore, an easy workaround would be to add another phase that simply > creates a file in the output(s) that contains ASCII or UTF-8 references > to any needed store items. Working with what I see (the fish build outputs results), the only UCS-4 references (either big or small endian) it registered to the store via multi-byte encoded strings are: --8<---------------cut here---------------start------------->8--- $ strings -e L /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin/fish* | grep /gnu /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/share/doc/fish /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/share/fish /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/etc/fish /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin strings -e B /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin/fish* | grep /gnu /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/share/doc/fish /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/share/fish /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/etc/fish /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin /gnu/store/qfy1rxm1vzd68y9jvcvq4zzz0cnbla8i-fish-3.5.1/bin --8<---------------cut here---------------end--------------->8--- No UCS-2 references are detected via 'strings'. Thanks for having shared the history and background. Closing. -- Maxim