소스 검색

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>
(cherry picked from commit 4728fdd4c06be07883e59eeb148c86cb74e10d73)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Yurii Monakov 5 년 전
부모
커밋
f5027f8371
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      fs/cpio/cpio.mk

+ 5 - 1
fs/cpio/cpio.mk

@@ -37,7 +37,11 @@ ROOTFS_CPIO_OPTS += --reproducible
 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 . \
+	| LC_ALL=C sort \
+	| cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \
+	> $@
 endef
 endef
 
 
 ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)
 ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)