aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Yurii Monakov <monakov.y@gmail.com>2020-06-29 15:37:01 +0300
committerGravatar Yann E. MORIN <yann.morin.1998@free.fr>2020-06-29 17:57:12 +0200
commit4728fdd4c06be07883e59eeb148c86cb74e10d73 (patch)
tree41da0d77655d67003d4426730051fdabb8510b11
parent16a522b5e0e983d42f602d4fadb2934409b83374 (diff)
downloadbuildroot-4728fdd4c06be07883e59eeb148c86cb74e10d73.tar.gz
buildroot-4728fdd4c06be07883e59eeb148c86cb74e10d73.tar.bz2
fs/cpio: generate reproducible archives
The output of 'find' depends on the directory entries, and is not ordered. As a consequence, the cpio archive is not reproducible. Fix that by sorting the output of find. Use the 'C' locale to enforce reproducibility that does not depend on the locale. The command line is now pretty long, so we wrap it. Signed-off-by: Yurii Monakov <monakov.y@gmail.com> [yann.morin.1998@free.fr: - use LC_ALL=C when sorting - wrap long line - reword commit log ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
-rw-r--r--fs/cpio/cpio.mk6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk
index 28a435dd5e..81f8c393d1 100644
--- a/fs/cpio/cpio.mk
+++ b/fs/cpio/cpio.mk
@@ -37,7 +37,11 @@ ROOTFS_CPIO_OPTS += --reproducible
endif
define ROOTFS_CPIO_CMD
- cd $(TARGET_DIR) && find . | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc > $@
+ cd $(TARGET_DIR) && \
+ find . \
+ | LC_ALL=C sort \
+ | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \
+ > $@
endef
ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)