From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Subject: bug#26734: Snippets (even empty ones) of tar sources reset the timestamps of all files Date: Wed, 03 May 2017 10:58:59 +0200 Message-ID: <87fugmxqng.fsf@gnu.org> References: <874lx4d6j7.fsf@lassieur.org> <87h913h0rj.fsf@gnu.org> <87d1brmm8m.fsf@lassieur.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]:56434) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5q8l-0004JM-NG for bug-guix@gnu.org; Wed, 03 May 2017 05:00:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5q8h-0000Kf-2G for bug-guix@gnu.org; Wed, 03 May 2017 05:00:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:53702) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5q8g-0000KY-VQ for bug-guix@gnu.org; Wed, 03 May 2017 05:00:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1d5q8g-0005ul-Lw for bug-guix@gnu.org; Wed, 03 May 2017 05:00:02 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87d1brmm8m.fsf@lassieur.org> ("=?UTF-8?Q?Cl=C3=A9ment?= Lassieur"'s message of "Tue, 02 May 2017 15:17:29 +0200") 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: =?UTF-8?Q?Cl=C3=A9ment?= Lassieur Cc: 26734@debbugs.gnu.org Cl=C3=A9ment Lassieur skribis: > Ludovic Court=C3=A8s writes: > >> Cl=C3=A9ment Lassieur skribis: >> >>> I tried to patch 'patch-and-repack', but it triggers a full >>> rebuild... WDYT? >> >> Right, it=E2=80=99s expected to trigger a full rebuild, so this should b= e fixed >> in =E2=80=98core-updates=E2=80=99. > > Yes, but is there a way to test the patch on one package without having > first to rebuild everything? I would add a snippet in =E2=80=98gnu-make-boot0=E2=80=99, which is the fir= st package being built, and then run: ./pre-inst-env guix build -S --rounds=3D2 \ -e '(@@ (gnu packages commencement) gnu-make-boot0)' >> I guess we=E2=80=99ll have to collect the timestamps of all non-symlink = files=C2=B9 >> in step #1 and to reapply them with =E2=80=98set-file-time=E2=80=99 from= (guix build >> utils) after step #2. > > Does that mean that symlinks will still have their timestamps changed? No, that means symlinks will still have their timestamps unchanged. :-) BTW, what timestamps to we put on the modified files? We want that to be deterministic so we cannot use the build time. We cannot use a date in the future, either. We cannot use Jan. 1 1970 either because that means that modified files may now be older than the unmodified files, which may break build systems; for the same reason, we cannot leave the mtime of modified files unchanged. Now that I think about it, it=E2=80=99s not clear to me what can be done wi= thout breaking something. Thoughts? >> =C2=B9 Because Guile provides bindings for =E2=80=98utime=E2=80=99, whic= h does not support >> setting timestamps on symlinks. > > If the guile binding doesn't support setting timestamps on symlinks, I > guess we can still use another way, like a system touch. Or we could add bindings for =E2=80=98futimes=E2=80=99. Thanks, Ludo=E2=80=99.