1
0

Accepting request 706696 from Base:System

- reproducible.patch: generate timestamp in .pot files from SOURCE_DATE_EPOCH
  for reproducible builds

- reproducible.patch: generate timestamp in .pot files from SOURCE_DATE_EPOCH
  for reproducible builds (forwarded request 705693 from msmeissn)

OBS-URL: https://build.opensuse.org/request/show/706696
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gettext-runtime?expand=0&rev=79
This commit is contained in:
Dominique Leuenberger 2019-06-12 11:06:26 +00:00 committed by Git OBS Bridge
commit d184888ca7
7 changed files with 64 additions and 5 deletions

View File

@ -1,7 +1,7 @@
#
# spec file for package gettext-csharp
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed

View File

@ -1,7 +1,7 @@
#
# spec file for package gettext-java
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Sat May 25 11:53:33 UTC 2019 - Marcus Meissner <meissner@suse.com>
- reproducible.patch: generate timestamp in .pot files from SOURCE_DATE_EPOCH
for reproducible builds
-------------------------------------------------------------------
Mon Mar 4 11:28:14 UTC 2019 - Dominique Leuenberger <dimstar@opensuse.org>

View File

@ -1,7 +1,7 @@
#
# spec file for package gettext-runtime
# spec file for package gettext-runtime-mini
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Sat May 25 11:53:33 UTC 2019 - Marcus Meissner <meissner@suse.com>
- reproducible.patch: generate timestamp in .pot files from SOURCE_DATE_EPOCH
for reproducible builds
-------------------------------------------------------------------
Mon Mar 4 11:28:14 UTC 2019 - Dominique Leuenberger <dimstar@opensuse.org>

View File

@ -1,7 +1,7 @@
#
# spec file for package gettext-runtime
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed

View File

@ -26,3 +26,50 @@ Index: gettext-0.19.8.1/gettext-tools/man/help2man
(my $program = $ARGV[0]) =~ s!.*/!!;
my $package = $program;
my $version;
Index: gettext-0.19.8.1/gettext-tools/src/xgettext.c
===================================================================
--- gettext-0.19.8.1.orig/gettext-tools/src/xgettext.c
+++ gettext-0.19.8.1/gettext-tools/src/xgettext.c
@@ -3714,6 +3714,9 @@ construct_header ()
char *msgstr;
char *comment;
static lex_pos_ty pos = { __FILE__, __LINE__ };
+ char *source_date_epoch;
+ unsigned long long epoch;
+ char *endptr;
if (package_name != NULL)
{
@@ -3734,7 +3738,31 @@ the MSGID_BUGS_ADDRESS variable there; o
specify an --msgid-bugs-address command line option.\n\
")));
- time (&now);
+ source_date_epoch = getenv("SOURCE_DATE_EPOCH");
+ if (source_date_epoch) {
+ errno = 0;
+ epoch = strtoull(source_date_epoch, &endptr, 10);
+ if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
+ || (errno != 0 && epoch == 0)) {
+ fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n", strerror(errno));
+ exit(EXIT_FAILURE);
+ }
+ if (endptr == source_date_epoch) {
+ fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n", endptr);
+ exit(EXIT_FAILURE);
+ }
+ if (*endptr != '\0') {
+ fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n", endptr);
+ exit(EXIT_FAILURE);
+ }
+ if (epoch > ULONG_MAX) {
+ fprintf(stderr, "Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to %lu but was found to be: %llu \n", ULONG_MAX, epoch);
+ exit(EXIT_FAILURE);
+ }
+ now = epoch;
+ } else {
+ now = time(NULL);
+ }
timestring = po_strftime (&now);
msgstr = xasprintf ("\