diff mbox

kbuild: create deterministic initramfs directory listings

Message ID 20170624144810.7363-1-bjorn.forsman@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bjørn Forsman June 24, 2017, 2:48 p.m. UTC
kbuild runs "find" on each entry in CONFIG_INITRAMFS_SOURCE that is a
directory. The order of the file listing output by "find" matter for
build reproducability, hence this patch applies "sort" to get
deterministic results.

Without this patch, two different machines with identical initramfs
directory input may produce differing initramfs cpio archives (different
hash) due to the different order of the files within the archive.

Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
---
 scripts/gen_initramfs_list.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Masahiro Yamada July 2, 2017, 11:06 p.m. UTC | #1
2017-06-24 23:48 GMT+09:00 Bjørn Forsman <bjorn.forsman@gmail.com>:
> kbuild runs "find" on each entry in CONFIG_INITRAMFS_SOURCE that is a
> directory. The order of the file listing output by "find" matter for
> build reproducability, hence this patch applies "sort" to get
> deterministic results.
>
> Without this patch, two different machines with identical initramfs
> directory input may produce differing initramfs cpio archives (different
> hash) due to the different order of the files within the archive.
>
> Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>

Applied to linux-kbuild/misc.  Thanks!
diff mbox

Patch

diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh
index 0055b07b03b6..72f094585cca 100755
--- a/scripts/gen_initramfs_list.sh
+++ b/scripts/gen_initramfs_list.sh
@@ -174,7 +174,7 @@  dir_filelist() {
 	${dep_list}header "$1"
 
 	srcdir=$(echo "$1" | sed -e 's://*:/:g')
-	dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n")
+	dirlist=$(find "${srcdir}" -printf "%p %m %U %G\n" | sort)
 
 	# If $dirlist is only one line, then the directory is empty
 	if [  "$(echo "${dirlist}" | wc -l)" -gt 1 ]; then