Skip to content

Commit ca2d752

Browse files
committed
build: improve reliability/portability of date command usage
Changes: * Use the exact same source date string for all `date` invocations * Use `-d` instead of `--date=` * Fallback to `-r` and then to no argument Some `date` implementations only support BSD `-r` instead of GNU `-d` / `--date=` and others may not support any of them since neither option is in POSIX. For example, if zoneinfo is installed by chromebrew on ChromeOS, it provides a date program that only supports `-r` and overrides the system one (which supports `-d`) [1]: ./mkman.sh 0.9.72 src/man/firejail.man firejail.1 date: invalid option -- '-' date: usage: date [-u] [-c] [-r seconds] [+format] make: *** [Makefile:42: firejail.1] Error 1 Environment: zoneinfo 2024a on ChromeOS M125. Note: The changes are based on what is suggested by reproducible-builds.org [2]. Relates to #193. Fixes #6403. [1] #6403 (comment) [2] https://reproducible-builds.org/docs/source-date-epoch/ Reported-by: @Zopolis4
1 parent 6c8b104 commit ca2d752

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/man/mkman.sh

+9-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,15 @@
55

66
set -e
77

8-
MONTH="$(LC_ALL=C date -u --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%b)"
9-
YEAR="$(LC_ALL=C date -u --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y)"
8+
test -z "$SOURCE_DATE_EPOCH" && SOURCE_DATE_EPOCH="$(date +%s)"
9+
10+
format='+%b %Y'
11+
date="$(LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" "$format" 2>/dev/null ||
12+
LC_ALL=C date -u -r "$SOURCE_DATE_EPOCH" "$format" 2>/dev/null ||
13+
LC_ALL=C date -u "$format")"
14+
15+
MONTH="$(printf '%s\n' "$date" | cut -f 1 -d ' ')"
16+
YEAR="$(printf '%s\n' "$date" | cut -f 2 -d ' ')"
1017

1118
sed \
1219
-e "s/VERSION/$1/g" \

0 commit comments

Comments
 (0)