Hi Ken,
We received the following bug report today:
http://savannah.nongnu.org/support/?109535
It seems to me like reproducible builds are probably a pretty good
idea
Yes.
and nmh should support them, and the patch looks relatively small.
It tinkers with the hostname too.
$ curl -sSgL
'https://savannah.nongnu.org/support/download.php?file_id=44608' |
> grep host
-host=`uname -n`
+host=${HOSTNAME:-`uname -n`}
char *version_str = "nmh-$version$git built $date on $host";
$
But to be completely portable the date line should be (from here):
https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal#Bash_.2F_POSIX_shell
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")
https://reproducible-builds.org/specs/source-date-epoch/ says
The value MUST be an ASCII representation of an integer with no
fractional component, identical to the output format of date +%s.
If the value is malformed, the build process SHOULD exit with a
non-zero error code.
So I think `:-' is the wrong test, and `:' should be used.
The `+0000' is being hard-coded into date's output, rather than asking
date for the TZ to spot if the attempt to use UTC failed.
I've found some fine documentation.
POSIX https://manned.org/date.1p
Coreutils https://manned.org/date.1
https://www.gnu.org/software/coreutils/manual/coreutils.html#Options-for-date
Plan9 https://manned.org/date.1plan9
OpenBSD https://man.openbsd.org/date
FreeBSD https://www.freebsd.org/cgi/man.cgi?date
macOS¹ https://ss64.com/osx/date.html (Maybe.)
How about
fmt='%Y-%m-%d %T %z'
now="${SOURCE_DATE_EPOCH-$(date +%s)}"
date="$(
exec 2>/dev/null
date -u -d "@$now" +"$fmt" ||
date -u -r "$now" +"$fmt" ||
date -u +"$fmt"
)"
printf '%q\n' "$fmt" "$now" "$date"
Tried with Coreutils and FreeBSD.
I think we should stick with `yyyy-mm-dd' rather than switching to
podium-style, like
https://sources.debian.org/src/nmh/1.7.1-2/debian/patches/11-repro/
--
Cheers, Ralph.
https://plus.google.com/+RalphCorderoy
--
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers