[U-Boot] [PATCH] build: create time and date independent binary

Heiko Schocher hs at denx.de
Mon Jun 15 15:04:32 CEST 2015


Hello Paul,

Am 12.06.2015 22:21, schrieb Paul Kocialkowski:
> Le vendredi 12 juin 2015 à 17:31 +0200, Heiko Schocher a écrit :
>> With this option enabled each compilation creates the exact
>> same binary. There are no timestamps, with which a U-Boot
>> binary can be identified.
>>
>> This option is disabled by default.
>
> I think a bit more is needed to get truly reproducible builds in U-Boot,
> but this is a first good step!
>
> I have been thinking about bringing reproducible builds to U-Boot for a
> little while, but never got around actually doing it. Are you interested
> in helping me on that? I have some free time these days, so I could do
> some work on this.

Hmm.. define what is a "reproducible build" ... my patch produces
always the same u-boot binary if you not change the toolchain ...

> It would certainly be relevant to get in touch with the people working
> on reproducing builds for Debian (I know Lunar is involved with this),
> since Debian packages U-Boot for many devices and they're apparently
> willing to help upstream with automated tests, as they're doing with
> coreboot and OpenWRT!

Yep, that would be helpful ...

bye,
Heiko
>
>> Signed-off-by: Heiko Schocher <hs at denx.de>
>> ---
>>
>>   Kconfig  | 9 +++++++++
>>   Makefile | 8 ++++++++
>>   2 files changed, 17 insertions(+)
>>
>> diff --git a/Kconfig b/Kconfig
>> index 15e15af..c0c7eb8 100644
>> --- a/Kconfig
>> +++ b/Kconfig
>> @@ -81,6 +81,15 @@ menuconfig EXPERT
>>   	  Only use this if you really know what you are doing.
>>
>>   if EXPERT
>> +	config SYS_EXACT_BINARY
>> +	bool "Create time and date independent binary"
>> +	default n
>> +	help
>> +	  With this option enabled each compilation creates the exact
>> +	  same binary. There are no timestamps, with which a U-Boot
>> +	  binary can be identified.
>> +	  This option is disabled by default.
>> +
>>   	config SYS_MALLOC_CLEAR_ON_INIT
>>   	bool "Init with zeros the memory reserved for malloc (slow)"
>>   	default y
>> diff --git a/Makefile b/Makefile
>> index 0a674bf..4ae2701 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1230,11 +1230,19 @@ define filechk_version.h
>>   	echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
>>   endef
>>
>> +ifeq ($(CONFIG_SYS_EXACT_BINARY),y)
>> +define filechk_timestamp.h
>> +	(LC_ALL=C date +'#define U_BOOT_DATE "NODATE"'; \
>> +	LC_ALL=C date +'#define U_BOOT_TIME "NOTIME"'; \
>> +	LC_ALL=C date +'#define U_BOOT_TZ "NOTZ"')
>> +endef
>> +else
>>   define filechk_timestamp.h
>>   	(LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
>>   	LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
>>   	LC_ALL=C date +'#define U_BOOT_TZ "%z"')
>>   endef
>> +endif
>>
>>   $(version_h): include/config/uboot.release FORCE
>>   	$(call filechk,version.h)
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list