From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Subject: bug#33848: Store references in SBCL-compiled code are "invisible" Date: Thu, 27 Dec 2018 22:54:36 +0100 Message-ID: <87zhsq8wkj.fsf@gnu.org> References: <87r2e8jpfx.fsf@gnu.org> <877eg0i43j.fsf@netris.org> <87d0psi1xo.fsf@gnu.org> <874lb3kin6.fsf@ambrevar.xyz> <87sgynezha.fsf@gnu.org> <87tvj2yesd.fsf@netris.org> <877efwe04u.fsf@gnu.org> <8736qji7c1.fsf@ambrevar.xyz> <87tvizvzgk.fsf@netris.org> <87o9979gfn.fsf@gnu.org> <87tvizgghs.fsf@ambrevar.xyz> <87k1juaomo.fsf@gnu.org> <87muoqhk62.fsf@ambrevar.xyz> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([208.118.235.92]:54443) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gcdeQ-0000pz-Sq for bug-guix@gnu.org; Thu, 27 Dec 2018 16:57:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gcdcQ-0001fi-GN for bug-guix@gnu.org; Thu, 27 Dec 2018 16:55:13 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:53426) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gcdcM-0001Wx-Eh for bug-guix@gnu.org; Thu, 27 Dec 2018 16:55:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gcdcM-0006Qo-6X for bug-guix@gnu.org; Thu, 27 Dec 2018 16:55:02 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87muoqhk62.fsf@ambrevar.xyz> (Pierre Neidhardt's message of "Thu, 27 Dec 2018 19:57:41 +0100") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Pierre Neidhardt Cc: 33848@debbugs.gnu.org Pierre Neidhardt skribis: >> Every file in the store is properly scanned for references. It=E2=80=99= s just >> that users cannot create top-level items with a non-ASCII file name. > > So if '/gnu/store/...-foo/=C3=A1' is stored as UTF-8 in a binary, then it= will be > found? Is it because the filesystem encoding is also UTF-8 and Guix scan= s over > byte arrays? The reference scanner, currently written in C++, traverses whole directory trees. Being C++ it treats file names as byte arrays so it doesn=E2=80=99t matter what the file name encoding is. Note also that the reference scanner only looks for =E2=80=9Cxyz=E2=80=A6-f= oo=E2=80=9D; what comes before and after doesn=E2=80=99t matter. So for example if you have =E2=80=9C/gnu/store/xyz=E2=80=A6-foo/=C3=A0=E2=80=9D, what=E2=80=99s import= ant is the =E2=80=9Cxyz=E2=80=A6-foo=E2=80=9D bit. This is all happening in libstore/references.cc (which is surprisingly small) and in (guix build graft) for the grafting part, which Mark wrote a while back. HTH, Ludo=E2=80=99.