[PATCH] gnu: cross-base: Add mingw-w64 specific binutils patches.

  • Done
  • quality assurance status badge
Details
4 participants
  • Carl Dong
  • Carl Dong
  • Mathieu Othacehe
  • Marius Bakke
Owner
unassigned
Submitted by
Carl Dong
Severity
normal
C
C
Carl Dong wrote on 1 Apr 2020 00:48
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
Zel3Xcb7x0-7-LXef-o7GY6JJbcTvq0PC6BXddwDh4YrO7Trk2Tz8dC4WZQEw14bd6vb04AbS79Z6MAr4sRyecgmHoau2BR12fXXsAgJCAw=@carldong.me
These patches were originally found at the debian mingw-w64 team's
binutils repo, and should improve the reproducibility of our mingw-w64
toolchain.

* gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch:
New file.
* gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch:
New file.
* gnu/packages/cross-base.scm (cross-binutils): Apply relevant patches
if target is mingw-w64.
(package-with-extra-patches): New procedure.
---
gnu/packages/cross-base.scm | 21 ++-
...gw-w64-reproducible-import-libraries.patch | 22 +++
...binutils-mingw-w64-specify-timestamp.patch | 137 ++++++++++++++++++
3 files changed, 175 insertions(+), 5 deletions(-)
create mode 100755 gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch
create mode 100755 gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch

Toggle diff (210 lines)
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index ab866eebc6..571a47f72a 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -76,6 +76,12 @@
(source (origin (inherit (package-source original))
(patches (list patch))))))

+(define (package-with-extra-patches original patches)
+ "Return package ORIGINAL with all PATCHES appended to its list of patches."
+ (package-with-patch original
+ `(,@(origin-patches (package-source original))
+ ,@patches))
+
(define (cross-binutils target)
"Return a cross-Binutils for TARGET."
(let ((binutils (package (inherit binutils)
@@ -97,11 +103,16 @@
`(cons "--with-sysroot=/" ,flags)))))))

;; For Xtensa, apply Qualcomm's patch.
- (cross (if (string-prefix? "xtensa-" target)
- (package-with-patch binutils
- (search-patch
- "ath9k-htc-firmware-binutils.patch"))
- binutils)
+ (cross (cond ((string-prefix? "xtensa-" target)
+ (package-with-patch binutils
+ (search-patch
+ "ath9k-htc-firmware-binutils.patch")))
+ ((target-mingw? target)
+ (package-with-extra-patches binutils
+ (search-patches
+ "binutils-mingw-w64-specify-timestamp.patch"
+ "binutils-mingw-w64-reproducible-import-libraries.patch")))
+ (else binutils))
target)))

(define (cross-gcc-arguments target xgcc libc)
diff --git a/gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch b/gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch
new file mode 100755
index 0000000000..3e48b87935
--- /dev/null
+++ b/gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch
@@ -0,0 +1,22 @@
+This following patch was originally found at the debian mingw-w64 team's
+binutils repo located here:
+https://salsa.debian.org/mingw-w64-team/binutils-mingw-w64.git
+
+Invoke the following in the aforementioned repo to see the original patch:
+
+ $ git show da63f6b:debian/patches/reproducible-import-libraries.patch
+
+Description: Make DLL import libraries reproducible
+Author: Benjamin Moody <benjamin.moody@gmail.com>
+Bug-Debian: https://bugs.debian.org/915055
+
+--- a/ld/pe-dll.c
++++ b/ld/pe-dll.c
+@@ -2844,6 +2844,7 @@
+
+ bfd_set_format (outarch, bfd_archive);
+ outarch->has_armap = 1;
++ outarch->flags |= BFD_DETERMINISTIC_OUTPUT;
+
+ /* Work out a reasonable size of things to put onto one line. */
+ ar_head = make_head (outarch);
diff --git a/gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch b/gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch
new file mode 100755
index 0000000000..b785043b62
--- /dev/null
+++ b/gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch
@@ -0,0 +1,137 @@
+This following patch was originally found at the debian mingw-w64 team's
+binutils repo located here:
+https://salsa.debian.org/mingw-w64-team/binutils-mingw-w64.git
+
+Invoke the following in the aforementioned repo to see the original patch:
+
+ $ git show da63f6b:debian/patches/specify-timestamp.patch
+
+Description: Allow the PE timestamp to be specified
+Author: Stephen Kitt <skitt@debian.org>
+
+--- a/bfd/peXXigen.c
++++ b/bfd/peXXigen.c
+@@ -70,6 +70,9 @@
+ #include <wctype.h>
+ #endif
+
++#include <errno.h>
++#include <limits.h>
++
+ /* NOTE: it's strange to be including an architecture specific header
+ in what's supposed to be general (to PE/PEI) code. However, that's
+ where the definitions are, and they don't vary per architecture
+@@ -879,10 +882,38 @@
+
+ /* Use a real timestamp by default, unless the no-insert-timestamp
+ option was chosen. */
+- if ((pe_data (abfd)->insert_timestamp))
+- H_PUT_32 (abfd, time (0), filehdr_out->f_timdat);
+- else
++ if (pe_data (abfd)->insert_timestamp) {
++ time_t now;
++ char *source_date_epoch;
++ unsigned long long epoch;
++ char *endptr;
++
++ now = time(NULL);
++ 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)) {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n",
++ strerror(errno));
++ } else if (endptr == source_date_epoch) {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n",
++ endptr);
++ } else if (*endptr != '\0') {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n",
++ endptr);
++ } else if (epoch > ULONG_MAX) {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n",
++ ULONG_MAX, epoch);
++ } else {
++ now = epoch;
++ }
++ }
++ H_PUT_32 (abfd, now, filehdr_out->f_timdat);
++ } else {
+ H_PUT_32 (abfd, 0, filehdr_out->f_timdat);
++ }
+
+ PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr,
+ filehdr_out->f_symptr);
+--- a/ld/pe-dll.c
++++ b/ld/pe-dll.c
+@@ -26,6 +26,8 @@
+ #include "filenames.h"
+ #include "safe-ctype.h"
+
++#include <errno.h>
++#include <limits.h>
+ #include <time.h>
+
+ #include "ld.h"
+@@ -1202,8 +1204,36 @@
+
+ memset (edata_d, 0, edata_sz);
+
+- if (pe_data (abfd)->insert_timestamp)
+- H_PUT_32 (abfd, time (0), edata_d + 4);
++ if (pe_data (abfd)->insert_timestamp) {
++ time_t now;
++ char *source_date_epoch;
++ unsigned long long epoch;
++ char *endptr;
++
++ now = time(NULL);
++ 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)) {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n",
++ strerror(errno));
++ } else if (endptr == source_date_epoch) {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n",
++ endptr);
++ } else if (*endptr != '\0') {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n",
++ endptr);
++ } else if (epoch > ULONG_MAX) {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n",
++ ULONG_MAX, epoch);
++ } else {
++ now = epoch;
++ }
++ }
++ H_PUT_32 (abfd, now, edata_d + 4);
++ }
+
+ if (pe_def_file->version_major != -1)
+ {
+--- a/ld/emultempl/pe.em
++++ b/ld/emultempl/pe.em
+@@ -303,7 +303,7 @@
+ OPTION_USE_NUL_PREFIXED_IMPORT_TABLES},
+ {"no-leading-underscore", no_argument, NULL, OPTION_NO_LEADING_UNDERSCORE},
+ {"leading-underscore", no_argument, NULL, OPTION_LEADING_UNDERSCORE},
+- {"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
++ {"insert-timestamp", optional_argument, NULL, OPTION_INSERT_TIMESTAMP},
+ {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
+ #ifdef DLL_SUPPORT
+ /* getopt allows abbreviations, so we do this to stop it
+--- a/ld/emultempl/pep.em
++++ b/ld/emultempl/pep.em
+@@ -321,7 +321,7 @@
+ {"no-bind", no_argument, NULL, OPTION_NO_BIND},
+ {"wdmdriver", no_argument, NULL, OPTION_WDM_DRIVER},
+ {"tsaware", no_argument, NULL, OPTION_TERMINAL_SERVER_AWARE},
+- {"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
++ {"insert-timestamp", optional_argument, NULL, OPTION_INSERT_TIMESTAMP},
+ {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
+ {"build-id", optional_argument, NULL, OPTION_BUILD_ID},
+ {NULL, no_argument, NULL, 0}
--
2.25.1
M
M
Mathieu Othacehe wrote on 1 Apr 2020 16:14
(name . Carl Dong)(address . contact@carldong.me)(address . 40362@debbugs.gnu.org)
87d08rcmyx.fsf@gmail.com
Hello Carl!

Toggle quote (5 lines)
> * gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch:
> New file.
> * gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch:
> New file.

You also need to add those patches to gnu/local.mk.

Toggle quote (6 lines)
> +(define (package-with-extra-patches original patches)
> + "Return package ORIGINAL with all PATCHES appended to its list of patches."
> + (package-with-patch original
> + `(,@(origin-patches (package-source original))
> + ,@patches))

Nitpick, maybe we could just name it package-with-patches?

Toggle quote (5 lines)
> + (package-with-extra-patches binutils
> + (search-patches
> + "binutils-mingw-w64-specify-timestamp.patch"
> + "binutils-mingw-w64-reproducible-import-libraries.patch")))

This is over the 78 column limit.

Otherwise, seems fine!

Thanks,

Mathieu
C
C
Carl Dong wrote on 1 Apr 2020 21:54
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(name . 40362@debbugs.gnu.org)(address . 40362@debbugs.gnu.org)
fQjjD1M7ZMQf43KbNEedNJC3YuSJ9P2ZHW1e1IScwbLiWPdttpw12AxzocBguBUVKJi9P4s-K0EJbtgrPx3E3UlBZiIr8PsAwA2d5FaBpXA=@carldong.me
Hey Mathieu!

Toggle quote (7 lines)
> > - gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch:
> > New file.
> > - gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch:
> > New file.
>
> You also need to add those patches to gnu/local.mk.

Added!

Toggle quote (8 lines)
> > +(define (package-with-extra-patches original patches)
> > - "Return package ORIGINAL with all PATCHES appended to its list of patches."
> > - (package-with-patch original
> > - `(,@(origin-patches (package-source original))
> > - ,@patches))
>
> Nitpick, maybe we could just name it package-with-patches?

I named it this way to make it clear that PACKAGE-WITH-PATCH overrides the
patches, whereas PACKAGE-WITH-EXTRA-PATCHES appends the patches (just like
PACKAGE-WITH-EXTRA-CONFIGURE-VARIABLE)... In fact, I'm not sure that Ludovic
originally intended PACKAGE-WITH-PATCH to override rather than append?

Toggle quote (7 lines)
> > - (package-with-extra-patches binutils
> > - (search-patches
> > - "binutils-mingw-w64-specify-timestamp.patch"
> > - "binutils-mingw-w64-reproducible-import-libraries.patch")))
>
> This is over the 78 column limit.

See the updated patch below, is this the right solution?

Many thanks for the review!

Cheers,
Carl Dong
accounts@carldong.me
"I fight for the users"


From c2d53e94eef8bc0b6750e1c1218335cd1461f1be Mon Sep 17 00:00:00 2001
From: Carl Dong <contact@carldong.me>
Date: Tue, 24 Mar 2020 15:39:06 -0400
Subject: [PATCH v2] gnu: cross-base: Add mingw-w64 specific binutils patches.

These patches were originally found at the debian mingw-w64 team's
binutils repo, and should improve the reproducibility of our mingw-w64
toolchain.

* gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch:
New file.
* gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Update accordingly.
* gnu/packages/cross-base.scm (cross-binutils): Apply relevant patches
if target is mingw-w64.
(package-with-extra-patches): New procedure.
---
gnu/local.mk | 2 +
gnu/packages/cross-base.scm | 23 ++-
...gw-w64-reproducible-import-libraries.patch | 22 +++
...binutils-mingw-w64-specify-timestamp.patch | 137 ++++++++++++++++++
4 files changed, 179 insertions(+), 5 deletions(-)
create mode 100755 gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch
create mode 100755 gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch

Toggle diff (225 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 19ab32c0f5..fe685c4e1b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -768,6 +768,8 @@ dist_patch_DATA = \
%D%/packages/patches/bidiv-update-fribidi.patch \
%D%/packages/patches/binutils-boot-2.20.1a.patch \
%D%/packages/patches/binutils-loongson-workaround.patch \
+ %D%/packages/patches/binutils-mingw-w64-specify-timestamp.patch \
+ %D%/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch \
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
%D%/packages/patches/blender-2.79-python-3.7-fix.patch \
%D%/packages/patches/bluez-CVE-2020-0556.patch \
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index ab866eebc6..858ee743ed 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -76,6 +76,12 @@
(source (origin (inherit (package-source original))
(patches (list patch))))))

+(define (package-with-extra-patches original patches)
+ "Return package ORIGINAL with all PATCHES appended to its list of patches."
+ (package-with-patch original
+ `(,@(origin-patches (package-source original))
+ ,@patches))
+
(define (cross-binutils target)
"Return a cross-Binutils for TARGET."
(let ((binutils (package (inherit binutils)
@@ -97,11 +103,18 @@
`(cons "--with-sysroot=/" ,flags)))))))

;; For Xtensa, apply Qualcomm's patch.
- (cross (if (string-prefix? "xtensa-" target)
- (package-with-patch binutils
- (search-patch
- "ath9k-htc-firmware-binutils.patch"))
- binutils)
+ (cross (cond ((string-prefix? "xtensa-" target)
+ (package-with-patch binutils
+ (search-patch
+ "ath9k-htc-firmware-binutils.patch")))
+ ((target-mingw? target)
+ (package-with-extra-patches binutils
+ (search-patches
+ "binutils-mingw-w64-specify-tim\
+estamp.patch"
+ "binutils-mingw-w64-reproducibl\
+e-import-libraries.patch")))
+ (else binutils))
target)))

(define (cross-gcc-arguments target xgcc libc)
diff --git a/gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch b/gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch
new file mode 100755
index 0000000000..3e48b87935
--- /dev/null
+++ b/gnu/packages/patches/binutils-mingw-w64-reproducible-import-libraries.patch
@@ -0,0 +1,22 @@
+This following patch was originally found at the debian mingw-w64 team's
+binutils repo located here:
+https://salsa.debian.org/mingw-w64-team/binutils-mingw-w64.git
+
+Invoke the following in the aforementioned repo to see the original patch:
+
+ $ git show da63f6b:debian/patches/reproducible-import-libraries.patch
+
+Description: Make DLL import libraries reproducible
+Author: Benjamin Moody <benjamin.moody@gmail.com>
+Bug-Debian: https://bugs.debian.org/915055
+
+--- a/ld/pe-dll.c
++++ b/ld/pe-dll.c
+@@ -2844,6 +2844,7 @@
+
+ bfd_set_format (outarch, bfd_archive);
+ outarch->has_armap = 1;
++ outarch->flags |= BFD_DETERMINISTIC_OUTPUT;
+
+ /* Work out a reasonable size of things to put onto one line. */
+ ar_head = make_head (outarch);
diff --git a/gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch b/gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch
new file mode 100755
index 0000000000..b785043b62
--- /dev/null
+++ b/gnu/packages/patches/binutils-mingw-w64-specify-timestamp.patch
@@ -0,0 +1,137 @@
+This following patch was originally found at the debian mingw-w64 team's
+binutils repo located here:
+https://salsa.debian.org/mingw-w64-team/binutils-mingw-w64.git
+
+Invoke the following in the aforementioned repo to see the original patch:
+
+ $ git show da63f6b:debian/patches/specify-timestamp.patch
+
+Description: Allow the PE timestamp to be specified
+Author: Stephen Kitt <skitt@debian.org>
+
+--- a/bfd/peXXigen.c
++++ b/bfd/peXXigen.c
+@@ -70,6 +70,9 @@
+ #include <wctype.h>
+ #endif
+
++#include <errno.h>
++#include <limits.h>
++
+ /* NOTE: it's strange to be including an architecture specific header
+ in what's supposed to be general (to PE/PEI) code. However, that's
+ where the definitions are, and they don't vary per architecture
+@@ -879,10 +882,38 @@
+
+ /* Use a real timestamp by default, unless the no-insert-timestamp
+ option was chosen. */
+- if ((pe_data (abfd)->insert_timestamp))
+- H_PUT_32 (abfd, time (0), filehdr_out->f_timdat);
+- else
++ if (pe_data (abfd)->insert_timestamp) {
++ time_t now;
++ char *source_date_epoch;
++ unsigned long long epoch;
++ char *endptr;
++
++ now = time(NULL);
++ 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)) {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n",
++ strerror(errno));
++ } else if (endptr == source_date_epoch) {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n",
++ endptr);
++ } else if (*endptr != '\0') {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n",
++ endptr);
++ } else if (epoch > ULONG_MAX) {
++ _bfd_error_handler("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n",
++ ULONG_MAX, epoch);
++ } else {
++ now = epoch;
++ }
++ }
++ H_PUT_32 (abfd, now, filehdr_out->f_timdat);
++ } else {
+ H_PUT_32 (abfd, 0, filehdr_out->f_timdat);
++ }
+
+ PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr,
+ filehdr_out->f_symptr);
+--- a/ld/pe-dll.c
++++ b/ld/pe-dll.c
+@@ -26,6 +26,8 @@
+ #include "filenames.h"
+ #include "safe-ctype.h"
+
++#include <errno.h>
++#include <limits.h>
+ #include <time.h>
+
+ #include "ld.h"
+@@ -1202,8 +1204,36 @@
+
+ memset (edata_d, 0, edata_sz);
+
+- if (pe_data (abfd)->insert_timestamp)
+- H_PUT_32 (abfd, time (0), edata_d + 4);
++ if (pe_data (abfd)->insert_timestamp) {
++ time_t now;
++ char *source_date_epoch;
++ unsigned long long epoch;
++ char *endptr;
++
++ now = time(NULL);
++ 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)) {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n",
++ strerror(errno));
++ } else if (endptr == source_date_epoch) {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n",
++ endptr);
++ } else if (*endptr != '\0') {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n",
++ endptr);
++ } else if (epoch > ULONG_MAX) {
++ einfo("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to: %lu but was found to be: %llu\n",
++ ULONG_MAX, epoch);
++ } else {
++ now = epoch;
++ }
++ }
++ H_PUT_32 (abfd, now, edata_d + 4);
++ }
+
+ if (pe_def_file->version_major != -1)
+ {
+--- a/ld/emultempl/pe.em
++++ b/ld/emultempl/pe.em
+@@ -303,7 +303,7 @@
+ OPTION_USE_NUL_PREFIXED_IMPORT_TABLES},
+ {"no-leading-underscore", no_argument, NULL, OPTION_NO_LEADING_UNDERSCORE},
+ {"leading-underscore", no_argument, NULL, OPTION_LEADING_UNDERSCORE},
+- {"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
++ {"insert-timestamp", optional_argument, NULL, OPTION_INSERT_TIMESTAMP},
+ {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
+ #ifdef DLL_SUPPORT
+ /* getopt allows abbreviations, so we do this to stop it
+--- a/ld/emultempl/pep.em
++++ b/ld/emultempl/pep.em
+@@ -321,7 +321,7 @@
+ {"no-bind", no_argument, NULL, OPTION_NO_BIND},
+ {"wdmdriver", no_argument, NULL, OPTION_WDM_DRIVER},
+ {"tsaware", no_argument, NULL, OPTION_TERMINAL_SERVER_AWARE},
+- {"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
++ {"insert-timestamp", optional_argument, NULL, OPTION_INSERT_TIMESTAMP},
+ {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
+ {"build-id", optional_argument, NULL, OPTION_BUILD_ID},
+ {NULL, no_argument, NULL, 0}
--
2.25.1
M
M
Mathieu Othacehe wrote on 2 Apr 2020 11:45
(name . Carl Dong)(address . accounts@carldong.me)(name . 40362@debbugs.gnu.org)(address . 40362@debbugs.gnu.org)
875zeicjbv.fsf@gmail.com
Hey,

Toggle quote (5 lines)
> I named it this way to make it clear that PACKAGE-WITH-PATCH overrides the
> patches, whereas PACKAGE-WITH-EXTRA-PATCHES appends the patches (just like
> PACKAGE-WITH-EXTRA-CONFIGURE-VARIABLE)... In fact, I'm not sure that Ludovic
> originally intended PACKAGE-WITH-PATCH to override rather than append?

Well I'm also unsure, but yes it makes sense to name it this way then!

Toggle quote (2 lines)
> See the updated patch below, is this the right solution?

In general, its preferred to send one of the procedure call to the next
line and let Emacs indent everything. Like this:

Toggle snippet (14 lines)
(cross (cond ((string-prefix? "xtensa-" target)
(package-with-patch binutils
(search-patch
"ath9k-htc-firmware-binutils.patch")))
((target-mingw? target)
(package-with-extra-patches
binutils
(search-patches
"binutils-mingw-w64-specify-timestamp.patch"
"binutils-mingw-w64-reproducible-import-libraries.patch")))
(else binutils))
target)))

This patch will trigger a rebuild of all cross-compiled packages, so it
would be better to send it to core-updates maybe? And as core-updates
has been frozen a few days ago, you may need to wait for
core-updates-next to open.

Thanks,

Mathieu
M
M
Marius Bakke wrote on 2 Apr 2020 17:53
(name . 40362@debbugs.gnu.org)(address . 40362@debbugs.gnu.org)
87mu7tsx2n.fsf@devup.no
Mathieu Othacehe <m.othacehe@gmail.com> writes:

Toggle quote (5 lines)
> This patch will trigger a rebuild of all cross-compiled packages, so it
> would be better to send it to core-updates maybe? And as core-updates
> has been frozen a few days ago, you may need to wait for
> core-updates-next to open.

We traditionally only cared about native builds for the rebuild limit as
the CI only cross-compiles a handful of packages. So 'master' is
probably fine.

Perhaps that will change now that people can cross-compile full system
configurations. What is your opinion Mathieu, as a major stakeholder in
the cross-compilation camp? :-)
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl6GCpAACgkQoqBt8qM6
VPrQUQf+PCuwuLdpSSq2swy8IjiX/crqTu8Ek+4bxGnwSSuL7030wY98Vh+ZQGHT
DJVNTg6uqT9UB4AzKS3sHlWuVripMk9sFa2uDPxcwVv8dQTAUU3T+kJzBB7ncaQr
AlALDFxswKVi0RzRuWG1mDjyPXZey6o2SNRT95egx9L7+vgjM/0NDPhmGzY0chbe
MQDTzh9hZZZsAy5L+lwANFGodBlpXGNCbZf4Jrq4jB+zF+1KJQ1Y6dfZ8/xgG0X7
rBrXH130CR7eRXRQSel1Unrj4N5rI5TrTEYyC0lKZAYRBOvrQs1ESFJckB0x30Qg
Q+FSjtJNZ9PoHF9ocUeTIvKPBz8ubw==
=wtra
-----END PGP SIGNATURE-----

M
M
Mathieu Othacehe wrote on 2 Apr 2020 18:12
(name . Marius Bakke)(address . mbakke@fastmail.com)
87o8s927el.fsf@gmail.com
Toggle quote (4 lines)
> Perhaps that will change now that people can cross-compile full system
> configurations. What is your opinion Mathieu, as a major stakeholder in
> the cross-compilation camp? :-)

Hehe, for now that is fine with me :) I guess you can then push to
master Carl.

Thanks,

Mathieu
M
M
Mathieu Othacehe wrote on 3 Apr 2020 18:26
control message for bug #40362
(address . control@debbugs.gnu.org)
87ftdkcz7t.fsf@gmail.com
close 40362
quit
?
Your comment

This issue is archived.

To comment on this conversation send an email to 40362@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 40362
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch