9c449f9dd8
Since we use --xattrs-include='*' to include all extended attributes, tar creates a PAX formatted archive. The archive metadata captures atime and ctime of files. To fix this, GNU recommends that we pass this added argument to tar to create binary reproducible packages. Setting of mtime is handled in fs/common.mk using touch on all files. Diffoscope output pre-change: https://gitlab.com/snippets/1871111 Diffoscope output after change is blank i.e. binary reproducibile rootfs is created. GNU Recommendation: https://www.gnu.org/software/tar/manual/tar.html#SEC147 Signed-off-by: Atharva Lele <itsatharva@gmail.com> Reviewed-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
20 lines
649 B
Makefile
20 lines
649 B
Makefile
################################################################################
|
|
#
|
|
# tar to archive target filesystem
|
|
#
|
|
################################################################################
|
|
|
|
TAR_OPTS := $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS))
|
|
|
|
ROOTFS_TAR_DEPENDENCIES = $(BR2_TAR_HOST_DEPENDENCY)
|
|
|
|
# do not store atime/ctime in PaxHeaders to ensure reproducbility
|
|
TAR_OPTS += --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0
|
|
|
|
define ROOTFS_TAR_CMD
|
|
(cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \
|
|
tar $(TAR_OPTS) -cf $@ --null --xattrs-include='*' --no-recursion -T - --numeric-owner)
|
|
endef
|
|
|
|
$(eval $(rootfs))
|