From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: bug#30820: Chunked store references in compiled code break grafting (again) Date: Mon, 19 Mar 2018 15:16:30 -0400 Message-ID: <87in9rdgfl.fsf@netris.org> References: <87o9jq7j7r.fsf@gnu.org> <87muz3dgy1.fsf@netris.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59000) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ey0IH-0004ci-2T for bug-guix@gnu.org; Mon, 19 Mar 2018 15:18:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ey0ID-0004Gt-Sj for bug-guix@gnu.org; Mon, 19 Mar 2018 15:18:05 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:34262) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ey0ID-0004Gc-PE for bug-guix@gnu.org; Mon, 19 Mar 2018 15:18:01 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87muz3dgy1.fsf@netris.org> (Mark H. Weaver's message of "Mon, 19 Mar 2018 15:05:26 -0400") 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: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 30820@debbugs.gnu.org Mark H Weaver writes: > ludo@gnu.org (Ludovic Court=C3=A8s) writes: > >> The recently added glibc grafts triggered issues that, in the end, show >> the return of (=E2=80=9CStore references in = 8-byte >> chunks in compiled code=E2=80=9D). > > I think that we should generalize our reference scanning and grafting > code to support store references broken into pieces, as long as each > piece containing part of the hash is at least 8 bytes long. > > Here's my preliminary proposal: > > (1) The reference scanner should recognize any 8-byte substring of a > hash as a valid reference to that hash. To facilitate the transition: to support older versions of the Guix daemon (or Nix daemon), we could add a final phase to gnu-build-system which would "unhide" these references as follows: It would scan each output directory for 8-byte substrings of hashes. If it finds any references that the old scanner is unable to see, it would install a file to the output directory containing the full store names of the hidden references. This only works for output directories, though. I don't know what to do about output files containing hidden references. I guess the final phase should raise an error in this case, and hopefully it rarely happens. Mark