[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.
pgpqFk3Tfm3vz.pgp
Description: PGP signature
Re: [nmh-workers] Reproducible build patch, Bakul Shah, 2018/07/23
Re: [nmh-workers] Reproducible build patch, Ralph Corderoy, 2018/07/24
Re: [nmh-workers] Reproducible build patch, Robert Elz, 2018/07/24