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

Paul Kocialkowski contact at paulk.fr
Fri Jun 12 22:21:43 CEST 2015


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.

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!

> 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)

-- 
Paul Kocialkowski, Replicant developer

Replicant is a fully free Android distribution running on several
devices, a free software mobile operating system putting the emphasis on
freedom and privacy/security.

Website: http://www.replicant.us/
Blog: http://blog.replicant.us/
Wiki/tracker/forums: http://redmine.replicant.us/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150612/dc33cfbb/attachment.sig>


More information about the U-Boot mailing list