linux: override build timestamp for reproducible builds
authorGilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Wed, 23 Nov 2016 12:58:44 +0000 (13:58 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 23 Nov 2016 21:56:49 +0000 (22:56 +0100)
Linux kernel include a few information about build environment in its binary.
This feature is incompatible with BR2_REPRODUCIBLE. This patch overload build
information when BR2_REPRODUCIBLE is enabled.

Note that usage of KBUILD_BUILD_TIMESTAMP is not mandatory since Buildroot
use `fakedate'. However, native solution is prefered when upstream
provide one.

Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
linux/linux.mk

index 988427ca7cce8e4b0c77864b3ba3e3c41f42c530..7e826ccdf08bede14dd27bd72355e90781fe7898 100644 (file)
@@ -94,6 +94,14 @@ LINUX_MAKE_ENV = \
        $(TARGET_MAKE_ENV) \
        BR_BINARIES_DIR=$(BINARIES_DIR)
 
+ifeq ($(BR2_REPRODUCIBLE),y)
+LINUX_MAKE_ENV += \
+       KBUILD_BUILD_VERSION=1 \
+       KBUILD_BUILD_USER=buildroot \
+       KBUILD_BUILD_HOST=buildroot \
+       KBUILD_BUILD_TIMESTAMP="$(shell date -d @$(SOURCE_DATE_EPOCH))"
+endif
+
 # Get the real Linux version, which tells us where kernel modules are
 # going to be installed in the target filesystem.
 LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null`