From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: Output of guix build --check foo is not part of store deduplication Date: Sat, 25 Aug 2018 00:08:09 +0200 Message-ID: <87va7zifjq.fsf@gnu.org> References: <20180809114555.33f21652@alma-ubu> 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]:47440) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ftKFY-0001T7-EH for help-guix@gnu.org; Fri, 24 Aug 2018 18:08:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ftKFX-0000fW-JA for help-guix@gnu.org; Fri, 24 Aug 2018 18:08:12 -0400 In-Reply-To: <20180809114555.33f21652@alma-ubu> (=?utf-8?Q?=22Bj=C3=B6rn?= =?utf-8?Q?_H=C3=B6fling=22's?= message of "Thu, 9 Aug 2018 11:45:55 +0200") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: =?utf-8?Q?Bj=C3=B6rn_H=C3=B6fling?= Cc: Guix-Help Hello! Bj=C3=B6rn H=C3=B6fling skribis: > Usually, the store gets deduplicated, i.e. if files bar and baz have > the same content, they will hard-link to the same thing on disk. That's > cool for saving space if for example some package get's updated because > of a changed dependency but really there is no or little change to the > output files. > > But the '-check' files are somehow not part of that deduplication. Even > if you enforce deduplication with guix gc --optimize. You can see it > like this: I think it=E2=80=99s on purpose: =E2=80=9C-check=E2=80=9D items are not reg= istered as valid (in the database), and thus it makes little sense to deduplicate them since they=E2=80=99ll be GC=E2=80=99d rapidly. (And Chris provides useful links = to the relevant code.) > If you now diffoscope them, diffoscope will call stat and then we get > diffs like: > > =E2=94=82 =E2=94=82 --- /gnu/store/h63cx6akyrv3m73lky585ba10qq3mydc-lib= chop-0.5.2/share/info/libchop.info.gz > =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 +++ /gnu/store/h63cx6akyr= v3m73lky585ba10qq3mydc-libchop-0.5.2-check/share/info/libchop.info.gz > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80 /gnu/store/as7v= b5xx7vqdwmmqj9543470r49b4c0c-coreutils-8.28/bin/stat {} > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 @@ -1,8 +1,8 @@ > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82=20=20 > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Size: 29524 Blocks: 6= 4 IO Block: 4096 regular file > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 -Links: 3 > =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 +Links: 1 > > > This is annoying because it hides the actual unreproducibility-problem.=20 > Is there any reason for that? I think this information is useful for .deb or RPM packages, but typically useless for Nix and Guix because we =E2=80=9Ccanonicalize=E2=80= =9D file metadata. Diffoscope chould have a flag to disable =E2=80=98stat=E2=80=99 comparison = altogether, not just nlinks, but the patch by Eelco that you mention should have the same effect in practice. Ludo=E2=80=99.