ipxe:Makefile: fix issues of build reproducibility
authorBruce Rogers <brogers@suse.com>
Thu, 27 Jun 2019 16:15:24 +0000 (10:15 -0600)
committerwanchao-xu <wanchao.xu@samsung.com>
Tue, 9 Jan 2024 11:59:45 +0000 (19:59 +0800)
References: bsc#1011213

It is desirable to produce the same bits on subsequent
builds when the actual code of the package doesn't
change. (bsc#1011213)

Signed-off-by: Bruce Rogers <brogers@suse.com>
roms/ipxe/src/Makefile.housekeeping

index f8334921b8b93cbd03f0a0de9910caecef8a9cc9..97fa325bb52314e05192d04144364eb3be62b222 100644 (file)
@@ -1162,11 +1162,18 @@ 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 ) );'
+# NB: In the case of the SUSE qemu-ipxe package we want reproducible
+# builds, so we just use the TGT_ROM_NAME variable, which is already
+# a unique (in the context of the files we generate) hex value suitable
+# for specifying the build_id. We no longer define a BUILD_ID_CMD, as
+# we need to use the TGT_ROM_NAME variable directly in the link command
 
 # Build timestamp
 #
-BUILD_TIMESTAMP := $(shell date +%s)
+# NB: In the case of the SUSE qemu-ipxe package we want reproducible
+# builds, so we use a pre-determined timestamp, rather than the current
+# timestamp
+BUILD_TIMESTAMP := $(PACKAGING_TIMESTAMP)
 
 # Build version
 #
@@ -1186,7 +1193,7 @@ $(BIN)/version.%.o : core/version.c $(MAKEDEPS) $(GIT_INDEX)
 $(BIN)/%.tmp : $(BIN)/version.%.o $(BLIB) $(MAKEDEPS) $(LDSCRIPT)
        $(QM)$(ECHO) "  [LD] $@"
        $(Q)$(LD) $(LDFLAGS) -T $(LDSCRIPT) $(TGT_LD_FLAGS) $< $(BLIB) -o $@ \
-               --defsym _build_id=`$(BUILD_ID_CMD)` \
+               --defsym _build_id=`$(PRINTF) "0x%b" "$(TGT_ROM_NAME)"` \
                --defsym _build_timestamp=$(BUILD_TIMESTAMP) \
                -Map $(BIN)/$*.tmp.map
        $(Q)$(OBJDUMP) -ht $@ | $(PERL) $(SORTOBJDUMP) >> $(BIN)/$*.tmp.map