forked from public/airgap
Switch to bsdtar strategy for deterministic cpio
This commit is contained in:
parent
fa079ab953
commit
434d641c46
|
@ -1,16 +1,24 @@
|
||||||
diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk
|
diff --git a/fs/cpio/cpio.mk b/fs/cpio/cpio.mk
|
||||||
index 28a435dd5e..81f8c393d1 100644
|
index 28a435dd5e..72923ded47 100644
|
||||||
--- a/fs/cpio/cpio.mk
|
--- a/fs/cpio/cpio.mk
|
||||||
+++ b/fs/cpio/cpio.mk
|
+++ b/fs/cpio/cpio.mk
|
||||||
@@ -37,7 +37,11 @@ ROOTFS_CPIO_OPTS += --reproducible
|
@@ -32,12 +32,17 @@ ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT
|
||||||
|
# --reproducible option was introduced in cpio v2.12, which may not be
|
||||||
|
# available in some old distributions, so we build host-cpio
|
||||||
|
ifeq ($(BR2_REPRODUCIBLE),y)
|
||||||
|
-ROOTFS_CPIO_DEPENDENCIES += host-cpio
|
||||||
|
-ROOTFS_CPIO_OPTS += --reproducible
|
||||||
|
+ROOTFS_CPIO_DEPENDENCIES += host-cpio host-libarchive
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define ROOTFS_CPIO_CMD
|
define ROOTFS_CPIO_CMD
|
||||||
- cd $(TARGET_DIR) && find . | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc > $@
|
- cd $(TARGET_DIR) && find . | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc > $@
|
||||||
+ cd $(TARGET_DIR) && \
|
+ cd $(TARGET_DIR) \
|
||||||
+ find . \
|
+ && find . -mindepth 1 -execdir touch -hcd "@0" "{}" + \
|
||||||
+ | LC_ALL=C sort \
|
+ && find . -mindepth 1 -printf '%P\0' \
|
||||||
+ | cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \
|
+ | sort -z \
|
||||||
|
+ | LANG=C bsdtar --null -cnf - -T - \
|
||||||
|
+ | LANG=C bsdtar --uid 0 --gid 0 --null -cf - --format=newc @- \
|
||||||
+ > $@
|
+ > $@
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue