From: Enji Cooper Date: Fri, 5 Sep 2025 03:22:00 +0000 (-0700) Subject: Make the Unix build process more repeatable X-Git-Tag: openssl-3.3.5~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c94331eab0636fadc76dc5ecfc687ceb5965be18;p=thirdparty%2Fopenssl.git Make the Unix build process more repeatable Before this change all manpages would contain the date when pod2man was run. This resulted in outputs that differed between builds--or potentially across a single build if the host clock "ticked" to the next day when the build was being run. This commit modifies the manpage generation process as follows: - The date all manpages were generated will be normalized to a single date. - The release date specified in `VERSION.dat` is used instead of the date/time when `pod2man` was executed OR--in the event a date isn't specified in `VERSION.dat`--the time when the Makefiles were last regenerated. Embedding a consistent date into the generated manpages helps ensure that the build process as a whole is more repeatable and helps ensure that release versions of OpenSSL create artifacts consistent with the date that the official release was cut. Co-authored-by: Richard Levitte Signed-off-by: Enji Cooper Reviewed-by: Richard Levitte Reviewed-by: Matt Caswell Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/28449) (cherry picked from commit 2c0c9c83b292fdba001d968a8219db4083294003) --- diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 8c08096307e..04eecda2861 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -3,6 +3,8 @@ ## ## {- join("\n## ", @autowarntext) -} {- + use Time::Piece; + use OpenSSL::Util; our $makedep_scheme = $config{makedep_scheme}; @@ -74,6 +76,15 @@ FIPSKEY={- $config{FIPSKEY} -} VERSION={- "$config{full_version}" -} VERSION_NUMBER={- "$config{version}" -} +RELEASE_DATE={- my $t = localtime; + if ($config{"release_date"}) { + # Provide the user with a more meaningful error message + # than the default internal parsing error from + # `Time::Piece->strptime(..)`. + eval { $t = Time::Piece->strptime($config{"release_date"}, "%d %b %Y"); } || + die "Parsing \$config{release_date} ('$config{release_date}') failed: $@"; + } + $t->strftime("%Y-%m-%d") -} MAJOR={- $config{major} -} MINOR={- $config{minor} -} SHLIB_VERSION_NUMBER={- $config{shlib_version} -} @@ -1560,7 +1571,8 @@ EOF return <<"EOF"; $args{src}: $pod pod2man --name=$name --section=$section\$(MANSUFFIX) --center=OpenSSL \\ - --release=\$(VERSION) $pod >\$\@ + --date=\$(RELEASE_DATE) --release=\$(VERSION) \\ + $pod >\$\@ EOF } elsif (platform->isdef($args{src})) { #