Use C locale when setting CC_VERSION_STRING and LD_VERSION_STRING.
authorVagrant Cascadian <vagrant@debian.org>
Sun, 12 Jun 2016 12:18:48 +0000 (05:18 -0700)
committerVagrant Cascadian <vagrant@debian.org>
Tue, 28 Jun 2016 07:38:27 +0000 (07:38 +0000)
The output reported may be locale-dependent, which results in
unreproducible builds.

  $ LANG=C ld --version | head -n 1
    GNU ld (GNU Binutils for Debian) 2.26

  $ LANG=it_CH.UTF-8 ld --version | head -n 1
    ld di GNU (GNU Binutils for Debian) 2.26

Forcing LC_ALL=C ensures the output is consistant regardless of the
build environment.

Thanks to HW42 for debugging the issue:

  https://lists.alioth.debian.org/pipermail/reproducible-builds/Week-of-Mon-20160606/005722.html

For more information about reproducible builds:

  https://reproducible-builds.org/

Series-to: u-boot
Series-cc: HW42 <hw42@ipsumj.de>, reproducible-builds@lists.alioth.debian.org

Gbp-Pq: Topic upstream/submitted/reproducible
Gbp-Pq: Name 0001-Use-C-locale-when-setting-CC_VERSION_STRING-and-LD_V.patch

Makefile

index 089aeacdfc7e37ad704cb10c974ae73201850e20..834af865b9e2bdd429cc9c0dcb53127c1b768216 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1263,8 +1263,8 @@ prepare: prepare0
 define filechk_version.h
        (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
        echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
-       echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \
-       echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
+       echo \#define CC_VERSION_STRING \"$$(LC_ALL=C $(CC) --version | head -n 1)\"; \
+       echo \#define LD_VERSION_STRING \"$$(LC_ALL=C $(LD) --version | head -n 1)\"; )
 endef
 
 # The SOURCE_DATE_EPOCH mechanism requires a date that behaves like GNU date.