bug#27773: [PATCH] Allow to override build date

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

bug#27773: [PATCH] Allow to override build date

Bernhard M. Wiedemann
and use gmtime to not be influenced by timezone settings
in order to make builds reproducible.

While working on the reproducible builds effort, I found that
when building the automake package for openSUSE Linux,
there were slight differences between each build

See https://reproducible-builds.org/ for why this is matters
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.
---
 doc/help2man | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/help2man b/doc/help2man
index e651b8d2d..4a9f75064 100755
--- a/doc/help2man
+++ b/doc/help2man
@@ -217,7 +217,7 @@ $version_text ||= get_option_value $ARGV[0], $version_option;
 # the English version expands to the month as a word and the full year.  It
 # is used on the footer of the generated manual pages.  If in doubt, you may
 # just use %x as the value (which should be the full locale-specific date).
-my $date = enc strftime _("%B %Y"), localtime;
+my $date = enc strftime _("%B %Y"), gmtime($ENV{SOURCE_DATE_EPOCH} || time());
 (my $program = $ARGV[0]) =~ s!.*/!!;
 my $package = $program;
 my $version;
--
2.12.3




Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

bug#27773: [PATCH] Allow to override build date

Mathieu Lirzin
Hello,

"Bernhard M. Wiedemann" <[hidden email]> writes:

> and use gmtime to not be influenced by timezone settings
> in order to make builds reproducible.
>
> While working on the reproducible builds effort, I found that
> when building the automake package for openSUSE Linux,
> there were slight differences between each build
>
> See https://reproducible-builds.org/ for why this is matters
> and https://reproducible-builds.org/specs/source-date-epoch/
> for the definition of this variable.
> ---
>  doc/help2man | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/doc/help2man b/doc/help2man
> index e651b8d2d..4a9f75064 100755
> --- a/doc/help2man
> +++ b/doc/help2man
> @@ -217,7 +217,7 @@ $version_text ||= get_option_value $ARGV[0], $version_option;
>  # the English version expands to the month as a word and the full year.  It
>  # is used on the footer of the generated manual pages.  If in doubt, you may
>  # just use %x as the value (which should be the full locale-specific date).
> -my $date = enc strftime _("%B %Y"), localtime;
> +my $date = enc strftime _("%B %Y"), gmtime($ENV{SOURCE_DATE_EPOCH} || time());
>  (my $program = $ARGV[0]) =~ s!.*/!!;
>  my $package = $program;
>  my $version;

'help2man' is a bundled script that is maintained outside of Automake
repository.  Unfortunately it has not being synced with upstream for a
while.  Latest version of GNU Help2man [1] seems to already fix this
reproducibility issue [2].  So instead of applying your patch I have
simply upgraded the bundled script in commit
9322f409a957f153b38ff37ba79ddf4c19cff6ca.

Hopefully that will fix the issue.  If that is not the case feel free to
reopen this bug.

Thanks for the report.

--
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37

[1] https://ftp.gnu.org/gnu/help2man/help2man-1.47.4.tar.xz
[2] https://anonscm.debian.org/git/users/bod/help2man.git/commit/?id=8448110e8b7567147b70ff54ddf771306a56d39d



Loading...