From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 03 04:54:32 2020 Received: (at 38958) by debbugs.gnu.org; 3 Sep 2020 08:54:32 +0000 Received: from localhost ([127.0.0.1]:33443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kDl0q-0004i6-3C for submit@debbugs.gnu.org; Thu, 03 Sep 2020 04:54:32 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49074) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kDl0n-0004hs-5M for 38958@debbugs.gnu.org; Thu, 03 Sep 2020 04:54:30 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33813) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kDl0h-0004Pv-Rx for 38958@debbugs.gnu.org; Thu, 03 Sep 2020 04:54:23 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=40408 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kDl0g-0001NU-W9 for 38958@debbugs.gnu.org; Thu, 03 Sep 2020 04:54:23 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: 38958@debbugs.gnu.org Subject: Re: bug#38958: Timestamp out of range; substituting 2514-05-30 01:53:03.999999999 References: Date: Thu, 03 Sep 2020 10:54:17 +0200 In-Reply-To: (Roel Janssen's message of "Sun, 05 Jan 2020 21:45:01 +0100") Message-ID: <87lfhr1bra.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38958 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, Roel Janssen skribis: > I encounter a problem when running "make" for some code base: > make[3]: /gnu/store/5hkc9q38w6afhrf7xyz5ybxidr87d1mq-profile/include/sysl= og.h: > Timestamp out of range; substituting 2514-05-30 01:53:03.999999999 This issue manifests itself in build environments as well; I=E2=80=99ve see= n it on berlin while running =E2=80=9Cguix build guix --no-offload=E2=80=9D: --8<---------------cut here---------------start------------->8--- mv "doc/contributing.fr.texi.tmp" "doc/contributing.fr.texi" PO4A doc/contributing.zh_CN.texi mv "doc/contributing.ru.texi.tmp" "doc/contributing.ru.texi" make: guix/store/schema.sql: Timestamp out of range; substituting 2514-05-3= 0 01:53:03.999999999 make: Warning: File 'guix/store/schema.sql' has modification time 155807475= 86 s in the future PO4A doc/guix-cookbook.de.texi [=E2=80=A6] test ! -f guix.po || { \ if test -f ./guix.pot; then \ sed -f remove-potcdate.sed < ./guix.pot > guix.1po && \ sed -f remove-potcdate.sed < guix.po > guix.2po && \ if cmp guix.1po guix.2po >/dev/null 2>&1; then \ rm -f guix.1po guix.2po guix.po; \ else \ rm -f guix.1po guix.2po ./guix.pot && \ mv guix.po ./guix.pot; \ fi; \ else \ mv guix.po ./guix.pot; \ fi; \ } make[3]: warning: Clock skew detected. Your build may be incomplete. make[3]: Leaving directory '/tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/sou= rce/po/guix' [=E2=80=A6] make[2]: guix/base16.scm: Timestamp out of range; substituting 2514-05-30 0= 1:53:03.999999999 make[2]: Warning: File 'guix/base16.scm' has modification time 15580748038 = s in the future make[2]: guix/base32.scm: Timestamp out of range; substituting 2514-05-30 0= 1:53:03.999999999 [=E2=80=A6] make[2]: guix/search-paths.scm: Timestamp out of range; substituting 2514-0= 5-30 01:53:03.999999999 make[2]: guix/import/gnu.scm: Timestamp out of range; substituting 2514-05-= 30 01:53:03.999999999 make[2]: guix/import/snix.scm: Timestamp out of range; substituting 2514-05= -30 01:53:03.999999999 make[2]: guix/scripts/perform-download.scm: Timestamp out of range; substit= uting 2514-05-30 01:53:03.999999999 make[2]: guix/scripts/authenticate.scm: Timestamp out of range; substitutin= g 2514-05-30 01:53:03.999999999 make[2]: guix/scripts/import/gnu.scm: Timestamp out of range; substituting = 2514-05-30 01:53:03.999999999 make[2]: guix/scripts/import/nix.scm: Timestamp out of range; substituting = 2514-05-30 01:53:03.999999999 make[2]: guix/scripts/import/texlive.scm: Timestamp out of range; substitut= ing 2514-05-30 01:53:03.999999999 make[2]: guix/scripts/container.scm: Timestamp out of range; substituting 2= 514-05-30 01:53:03.999999999 make[2]: guix.scm: Timestamp out of range; substituting 2514-05-30 01:53:03= .999999999 --8<---------------cut here---------------end--------------->8--- The files in question have mtime =3D Epoch + 1 as expected: --8<---------------cut here---------------start------------->8--- $ stat /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/base16.scm=20 File: /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/base16.scm Size: 3251 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 10880988 Links: 1 Access: (0444/-r--r--r--) Uid: (30001/guixbuilder01) Gid: (30000/guixbui= ld) Access: 2020-09-03 10:18:35.594069572 +0200 Modify: 1970-01-01 00:00:01.000000000 +0100 Change: 2020-09-03 10:18:27.670122206 +0200 Birth: 2020-09-03 10:18:27.670122206 +0200 $ stat /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/base32.scm=20 File: /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/base32.scm Size: 13325 Blocks: 32 IO Block: 4096 regular file Device: 801h/2049d Inode: 10881034 Links: 1 Access: (0444/-r--r--r--) Uid: (30001/guixbuilder01) Gid: (30000/guixbui= ld) Access: 2020-09-03 10:18:35.594069572 +0200 Modify: 1970-01-01 00:00:01.000000000 +0100 Change: 2020-09-03 10:18:27.674122179 +0200 Birth: 2020-09-03 10:18:27.674122179 +0200 $ stat /gnu/store/0br13w7y2wdfby74wnq7m7yzbx27hm1s-guix-1.1.0-25.44c6e6f-ch= eckout/guix/base{16,32}.scm File: /gnu/store/0br13w7y2wdfby74wnq7m7yzbx27hm1s-guix-1.1.0-25.44c6e6f-c= heckout/guix/base16.scm Size: 3251 Blocks: 8 IO Block: 4096 regular file Device: 811h/2065d Inode: 344654478 Links: 10338 Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-09-03 09:36:43.818923620 +0200 Modify: 1970-01-01 00:00:01.000000000 +0100 Change: 2020-09-03 09:29:05.830024528 +0200 Birth: 2018-06-25 22:37:25.560482991 +0200 File: /gnu/store/0br13w7y2wdfby74wnq7m7yzbx27hm1s-guix-1.1.0-25.44c6e6f-c= heckout/guix/base32.scm Size: 13325 Blocks: 32 IO Block: 4096 regular file Device: 811h/2065d Inode: 344654504 Links: 9327 Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-09-03 09:36:43.822923593 +0200 Modify: 1970-01-01 00:00:01.000000000 +0100 Change: 2020-09-03 09:29:07.054016225 +0200 Birth: 2018-06-25 22:37:25.682483782 +0200 --8<---------------cut here---------------end--------------->8--- In the output of =E2=80=98make=E2=80=99 above, guix/import/gnu.scm is liste= d, but not guix/import/pypi.scm for instance. What=E2=80=99s the difference? --8<---------------cut here---------------start------------->8--- $ stat /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/import/{gnu,= pypi}.scm File: /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/import/gnu.= scm Size: 4714 Blocks: 16 IO Block: 4096 regular file Device: 801h/2049d Inode: 10881084 Links: 1 Access: (0444/-r--r--r--) Uid: (30001/guixbuilder01) Gid: (30000/guixbui= ld) Access: 2020-09-03 10:26:30.745348482 +0200 Modify: 1970-01-01 00:00:01.000000000 +0100 Change: 2020-09-03 10:26:23.029400312 +0200 Birth: 2020-09-03 10:26:23.029400312 +0200 File: /tmp/guix-build-guix-1.1.0-25.44c6e6f.drv-0/source/guix/import/pypi= .scm Size: 23270 Blocks: 48 IO Block: 4096 regular file Device: 801h/2049d Inode: 10881093 Links: 1 Access: (0444/-r--r--r--) Uid: (30001/guixbuilder01) Gid: (30000/guixbui= ld) Access: 2020-09-03 10:26:30.745348482 +0200 Modify: 1970-01-01 01:00:01.000000000 +0100 Change: 2020-09-03 10:26:23.029400312 +0200 Birth: 2020-09-03 10:26:23.029400312 +0200 --8<---------------cut here---------------end--------------->8--- Nothing obvious. After checking the clock was fine, I turned off ntpd to be sure and spawned another build, but the result was the same. This is happening on berlin with a recent kernel: --8<---------------cut here---------------start------------->8--- $ uname -rm 5.4.55-gnu x86_64 --8<---------------cut here---------------end--------------->8--- The GNU=C2=A0make warnings come from this impenetrable function: --8<---------------cut here---------------start------------->8--- FILE_TIMESTAMP file_timestamp_cons (const char *fname, time_t stamp, long int ns) { int offset =3D ORDINARY_MTIME_MIN + (FILE_TIMESTAMP_HI_RES ? ns : 0); FILE_TIMESTAMP s =3D stamp; FILE_TIMESTAMP product =3D (FILE_TIMESTAMP) s << FILE_TIMESTAMP_LO_BITS; FILE_TIMESTAMP ts =3D product + offset; if (! (s <=3D FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX) && product <=3D ts && ts <=3D ORDINARY_MTIME_MAX)) { char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1]; const char *f =3D fname ? fname : _("Current time"); ts =3D s <=3D OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX; file_timestamp_sprintf (buf, ts); OSS (error, NILF, _("%s: Timestamp out of range; substituting %s"), f, buf); } return ts; } --8<---------------cut here---------------end--------------->8--- What=E2=80=99s OLD_MTIME? --8<---------------cut here---------------start------------->8--- /* The file does not exist, and we assume that it is older than any actual file. */ #define OLD_MTIME 2 /* The smallest and largest ordinary timestamps. */ #define ORDINARY_MTIME_MIN (OLD_MTIME + 1) --8<---------------cut here---------------end--------------->8--- That would mean that any file with mtime < 3 is considered bogus, but then, why wouldn=E2=80=99t things fail on other machines as well? I=E2=80=99m looking for ideas! :-) Ludo=E2=80=99.