]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[build] Replace random build ID with a deterministic one
authorManuel Mendez <mmendez534@gmail.com>
Thu, 28 Jan 2021 21:45:04 +0000 (16:45 -0500)
committerMichael Brown <mcb30@ipxe.org>
Sat, 30 Jan 2021 18:21:59 +0000 (18:21 +0000)
Calculate the build ID as a checksum over the input files.  Since the
input files include $(BIN)/version.%.o which itself includes the build
target name (from which TGT_LD_FLAGS is calculated), this should be
sufficient to meet the requirement that the build ID be unique for
each $(BIN)/%.tmp even within the same build run.

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/Makefile.housekeeping

index 81bd3c450e2f9421626458346ec33acb694aba87..9b52e12c23b6a416e8e28bcc083fd6d4d0582d03 100644 (file)
@@ -1163,7 +1163,13 @@ blib : $(BLIB)
 # Command to generate build ID.  Must be unique for each $(BIN)/%.tmp,
 # even within the same build run.
 #
-BUILD_ID_CMD   := perl -e 'printf "0x%08x", int ( rand ( 0xffffffff ) );'
+# The build ID is supposed to be collision-free across all ROMs that
+# might ever end up installed in the same system.  It doesn't just
+# disambiguate targets within a single build; it also disambiguates
+# different builds (such as builds for multiple ROMs all built from
+# the same blib.a).
+#
+BUILD_ID_CMD = sha1sum $^ | sort | cksum | awk '{printf "0x%08x", $$1}'
 
 # Build timestamp
 #