]> code.ossystems Code Review - openembedded-core.git/commitdiff
u-boot-tools: Fix reproducibility issue
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 20 Dec 2020 12:15:06 +0000 (12:15 +0000)
committerSteve Sakoman <steve@sakoman.com>
Tue, 22 Dec 2020 18:09:20 +0000 (08:09 -1000)
If you build on a system with git < 2.14 from scratch (e.g. debian9), the
tree will be marked as "dirty" and the version will include "-dirty", leading
to a reproducibility problem. The issue is the inode count for Licnses/README
changing due to do_populate_lic hardlinking a copy of the file. We avoid
this by ensuring the index is updated with a "git diff" before the
u-boot machinery tries to determine the version.

build$ ../git/scripts/setlocalversion ../git
""
build$ ln ../git/
build$ ln ../git/README ../foo
build$ ../git/scripts/setlocalversion ../git
""-dirty

(i.e. creating a hardlink dirties the index)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a4de915af9e2c4d365527ad09286483b2ee904fc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/recipes-bsp/u-boot/u-boot-tools.inc

index 8ae290acc6103604389284926387a6c465e63159..4ed936a70d37c20f60ac6a4bf5fbed067e65f9cf 100644 (file)
@@ -23,6 +23,21 @@ SED_CONFIG_EFI_armeb = ''
 SED_CONFIG_EFI_aarch64 = ''
 
 do_compile () {
+       # Yes, this is crazy. If you build on a system with git < 2.14 from scratch, the tree will
+       # be marked as "dirty" and the version will include "-dirty", leading to a reproducibility problem.
+       # The issue is the inode count for Licnses/README changing due to do_populate_lic hardlinking a
+       # copy of the file. We avoid this by ensuring the index is updated with a "git diff" before the
+       # u-boot machinery tries to determine the version.
+       #
+       # build$ ../git/scripts/setlocalversion ../git
+       # ""
+       # build$ ln ../git/
+       # build$ ln ../git/README ../foo
+       # build$ ../git/scripts/setlocalversion ../git
+       # ""-dirty
+       # (i.e. creating a hardlink dirties the index)
+       cd ${S}; git diff; cd ${B}
+
        oe_runmake -C ${S} sandbox_defconfig O=${B}
 
        # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and