Author: nbd
Date: 2016-02-01 00:29:16 +0100 (Mon, 01 Feb 2016)
New Revision: 48586

Modified:
   trunk/include/image.mk
   trunk/include/kernel-build.mk
   trunk/scripts/sysupgrade-nand.sh
Log:
build system: have tar use $SOURCE_DATE_EPOCH for --mtime

The --mtime argument to 'tar' sets the modification time for all files within
the archive, which determines the timestamp files will get when they are
extracted. In this case, rootfs and other tarballs will get mtimes which
correspond to the last commit timestamp of the build system, as reported by
git/subversion.

This is a step towards reproducible image builds.

Signed-off-by: bryan newbold <[email protected]>
Signed-off-by: Alexander Couzens <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>

Modified: trunk/include/image.mk
===================================================================
--- trunk/include/image.mk      2016-01-31 23:29:12 UTC (rev 48585)
+++ trunk/include/image.mk      2016-01-31 23:29:16 UTC (rev 48586)
@@ -186,7 +186,8 @@
        [ -z "$(2)" ] || $(CP) "$(KDIR)/root.$(2)" 
"$(KDIR_TMP)/sysupgrade-$(1)/root"
        [ -z "$(3)" ] || $(CP) "$(3)" "$(KDIR_TMP)/sysupgrade-$(1)/kernel"
        (cd "$(KDIR_TMP)"; $(TAR) cvf \
-               "$(BIN_DIR)/$(IMG_PREFIX)-$(1)-$(2)-sysupgrade.tar" 
sysupgrade-$(1))
+               "$(BIN_DIR)/$(IMG_PREFIX)-$(1)-$(2)-sysupgrade.tar" 
sysupgrade-$(1) \
+                       $(if 
$(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)")
    endef
 
 # $(1) board name
@@ -248,7 +249,10 @@
 endef
 
 define Image/mkfs/targz
-       $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if 
$(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz --numeric-owner 
--owner=0 --group=0 --sort=name -C $(TARGET_DIR)/ .
+       $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if 
$(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz \
+               --numeric-owner --owner=0 --group=0 --sort=name \
+               $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
+               -C $(TARGET_DIR)/ .
 endef
 
 E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024)))

Modified: trunk/include/kernel-build.mk
===================================================================
--- trunk/include/kernel-build.mk       2016-01-31 23:29:12 UTC (rev 48585)
+++ trunk/include/kernel-build.mk       2016-01-31 23:29:16 UTC (rev 48586)
@@ -54,7 +54,9 @@
                $(STAGING_DIR_ROOT)/lib/modules/$(LINUX_VERSION)/* \
                $(KERNEL_BUILD_DIR)/debug/modules/
        $(FIND) $(KERNEL_BUILD_DIR)/debug -type f | $(XARGS) 
$(KERNEL_CROSS)strip --only-keep-debug
-       $(TAR) c -C $(KERNEL_BUILD_DIR) debug | bzip2 -c -9 > 
$(BIN_DIR)/kernel-debug.tar.bz2
+       $(TAR) c -C $(KERNEL_BUILD_DIR) debug \
+               $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
+               | bzip2 -c -9 > $(BIN_DIR)/kernel-debug.tar.bz2
   endef
 endif
 

Modified: trunk/scripts/sysupgrade-nand.sh
===================================================================
--- trunk/scripts/sysupgrade-nand.sh    2016-01-31 23:29:12 UTC (rev 48585)
+++ trunk/scripts/sysupgrade-nand.sh    2016-01-31 23:29:16 UTC (rev 48586)
@@ -56,7 +56,12 @@
 [ -z "${rootfs}" ] || cp "${rootfs}" "${tmpdir}/sysupgrade-${board}/root"
 [ -z "${kernel}" ] || cp "${kernel}" "${tmpdir}/sysupgrade-${board}/kernel"
 
-(cd "$tmpdir"; tar cvf sysupgrade.tar sysupgrade-${board})
+mtime=""
+if [ -n "$SOURCE_DATE_EPOCH" ]; then
+       mtime="--mtime=@${SOURCE_DATE_EPOCH}"
+fi
+
+(cd "$tmpdir"; tar cvf sysupgrade.tar sysupgrade-${board} ${mtime})
 err="$?"
 if [ -e "$tmpdir/sysupgrade.tar" ]; then
        cp "$tmpdir/sysupgrade.tar" "$outfile"
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to