nmh-workers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [nmh-workers] Reproducible build patch


From: valdis . kletnieks
Subject: Re: [nmh-workers] Reproducible build patch
Date: Mon, 23 Jul 2018 16:44:14 -0400

On Mon, 23 Jul 2018 14:09:13 -0400, Ken Hornstein said:
> >On Mon, 23 Jul 2018 09:17:45 -0400, Ken Hornstein said:
> >
> >> DATE_FMT="%Y-%m-%d %T +0000"
> >> SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +s)}"
> >> date=$(TZ=GMT0 date --date="@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null 
> >> ||
> >> date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u 
> >> "+$DATE_FMT")

> >I doubt that's right - at least on Fedora, /usr/bin/date doesn't work that 
> >way....
>
> Um, isn't /usr/bin/date on Fedora GNU date?  If so, shouldn't the --date
> option work?

Well, first off - last I heard we support nmh on more than just Linux.

Also, the "date +s" and the "date -u -r" don't do what you think they do...

16:24:10 1 [~] set -v
16:24:22 0 [~] set -x
set -x
16:24:27 0 [~] DATE_FMT="%Y-%m-%d %T +0000"
DATE_FMT="%Y-%m-%d %T +0000"
+ DATE_FMT='%Y-%m-%d %T +0000'
16:24:35 0 [~] SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +s)}"
SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +s)}"
++ date +s                                  Not set, so we take the replacement 
value...
+ SOURCE_DATE_EPOCH=s        *** probably not what we intended
16:24:44 0 [~] date=$(TZ=GMT0 date --date="@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 
2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date 
-u "+$DATE_FMT")
date=$(TZ=GMT0 date --date="@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || 
date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u 
"+$DATE_FMT")
++ TZ=GMT0
++ date address@hidden '+%Y-%m-%d %T +0000'     (This dies because 
address@hidden  is bogus
++ date -u -r s '+%Y-%m-%d %T +0000'           (This dies because '-r s' is 
bogus as there's no file 's' to snarf a timestamp from
++ date -u '+%Y-%m-%d %T +0000'            And we end up in the last case, 
which works.
+ date='2018-07-23 20:25:04 +0000'

Now, this may magically work if $SOURCE_DATE_EPOCH is set to something
sane before we enter this code - but if it isn't set, it only happens to work

Aha.  Found it.  In the debian.org link:

BUILD_DATE="$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y-%m-%d)"

date +%s
16:32:25 123 [~/src/nmh] date +%s
1532378290

6:38:59 0 [~] DATE_FMT="%Y-%m-%d %T +0000"
DATE_FMT="%Y-%m-%d %T +0000"
+ DATE_FMT='%Y-%m-%d %T +0000'
16:39:05 0 [~] SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++ date +%s
+ SOURCE_DATE_EPOCH=1532378360
16:39:20 0 [~] date=$(TZ=GMT0 date --date="@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 
2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date 
-u "+$DATE_FMT")
date=$(TZ=GMT0 date --date="@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || 
date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u 
"+$DATE_FMT")
++ TZ=GMT0
++ date address@hidden '+%Y-%m-%d %T +0000'
+ date='2018-07-23 20:39:20 +0000'

That %s matters.  A lot.

I'm assuming that the BSD 'date'  takes -r as a timestamp rather than a 
filename.  Somebody
on a BSD system will need to check that.




Attachment: pgpqFk3Tfm3vz.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]