unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: 38958@debbugs.gnu.org
Subject: bug#38958: Timestamp out of range; substituting 2514-05-30 01:53:03.999999999
Date: Thu, 03 Sep 2020 10:54:17 +0200	[thread overview]
Message-ID: <87lfhr1bra.fsf@gnu.org> (raw)
In-Reply-To: <d2d7f1ef9036caa9134d29b0227c895511866ec3.camel@gnu.org> (Roel Janssen's message of "Sun, 05 Jan 2020 21:45:01 +0100")

Hi,

Roel Janssen <roel@gnu.org> skribis:

> I encounter a problem when running "make" for some code base:
> make[3]: /gnu/store/5hkc9q38w6afhrf7xyz5ybxidr87d1mq-profile/include/syslog.h:
> Timestamp out of range; substituting 2514-05-30 01:53:03.999999999

This issue manifests itself in build environments as well; I’ve seen it
on berlin while running “guix build guix --no-offload”:

--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-30 01:53:03.999999999
make: Warning: File 'guix/store/schema.sql' has modification time 15580747586 s in the future
  PO4A doc/guix-cookbook.de.texi
[…]
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/source/po/guix'
[…]
make[2]: guix/base16.scm: Timestamp out of range; substituting 2514-05-30 01: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 01:53:03.999999999
[…]
make[2]: guix/search-paths.scm: Timestamp out of range; substituting 2514-05-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; substituting 2514-05-30 01:53:03.999999999
make[2]: guix/scripts/authenticate.scm: Timestamp out of range; substituting 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; substituting 2514-05-30 01:53:03.999999999
make[2]: guix/scripts/container.scm: Timestamp out of range; substituting 2514-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 = 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 
  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/guixbuild)
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 
  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/guixbuild)
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-checkout/guix/base{16,32}.scm
  File: /gnu/store/0br13w7y2wdfby74wnq7m7yzbx27hm1s-guix-1.1.0-25.44c6e6f-checkout/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-checkout/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 ‘make’ above, guix/import/gnu.scm is listed, but not
guix/import/pypi.scm for instance.  What’s 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/guixbuild)
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/guixbuild)
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 make 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 = ORDINARY_MTIME_MIN + (FILE_TIMESTAMP_HI_RES ? ns : 0);
  FILE_TIMESTAMP s = stamp;
  FILE_TIMESTAMP product = (FILE_TIMESTAMP) s << FILE_TIMESTAMP_LO_BITS;
  FILE_TIMESTAMP ts = product + offset;

  if (! (s <= FILE_TIMESTAMP_S (ORDINARY_MTIME_MAX)
         && product <= ts && ts <= ORDINARY_MTIME_MAX))
    {
      char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
      const char *f = fname ? fname : _("Current time");
      ts = s <= 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’s 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’t things fail on other machines as well?

I’m looking for ideas!  :-)

Ludo’.




  parent reply	other threads:[~2020-09-03  8:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-05 20:45 bug#38958: Timestamp out of range; substituting 2514-05-30 01:53:03.999999999 Roel Janssen
2020-01-08 21:58 ` Ludovic Courtès
2020-03-27  9:26   ` Roel Janssen
2020-03-27 11:54     ` Ludovic Courtès
2020-09-03  8:54 ` Ludovic Courtès [this message]
2020-09-03 19:42   ` Mark H Weaver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lfhr1bra.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=38958@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).