aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Spooren <mail@aparcar.org>2019-06-13 02:24:04 +0200
committerDaniel Golle <daniel@makrotopia.org>2019-08-13 10:40:36 +0200
commit454021581f630d5d04afeb8ff6581c1bda295c87 (patch)
tree51d3fe0048f9af6f115fe737856a8ef1d0e63d96
parentbcfd1d76852974170780dbe368e6194dbb0e123e (diff)
downloadupstream-454021581f630d5d04afeb8ff6581c1bda295c87.tar.gz
upstream-454021581f630d5d04afeb8ff6581c1bda295c87.tar.bz2
upstream-454021581f630d5d04afeb8ff6581c1bda295c87.zip
build: add buildinfo files for reproducibility
generate feeds.buildinfo and version.buildinfo in build dir after containing the feed revisions (via ./scripts/feeds list -sf) as well as the current revision of buildroot (via ./scripts/getver.sh). With this information it should be possible to reproduce any build, especially the release builds. Usage would be to move feeds.buildinfo to feeds.conf and git checkout the revision hash of version.buildinfo. Content of feeds.buildinfo would look similar to this: src-git routing https://git.openwrt.org/feed/routing.git^bf475d6 src-git telephony https://git.openwrt.org/feed/telephony.git^470eb8e ... Content of version.buildinfo would look similar to this: r10203+1-c12bd3a21b Without the exact feed revision it is not possible to determine installed package versions. Also rename config.seed to config.buildinfo to follow the recommended style of https://reproducible-builds.org/docs/recording/ Signed-off-by: Paul Spooren <mail@aparcar.org>
-rw-r--r--Makefile10
-rw-r--r--config/Config-build.in2
-rw-r--r--package/base-files/Makefile2
3 files changed, 10 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 5301883061..ab97eacc9d 100644
--- a/Makefile
+++ b/Makefile
@@ -89,12 +89,18 @@ prereq: $(target/stamp-prereq) tmp/.prereq_packages
checksum: FORCE
$(call sha256sums,$(BIN_DIR),$(CONFIG_BUILDBOT))
+buildversion: FORCE
+ $(SCRIPT_DIR)/getver.sh > $(BIN_DIR)/version.buildinfo
+
+feedsversion: FORCE
+ $(SCRIPT_DIR)/feeds list -fs > $(BIN_DIR)/feeds.buildinfo
+
diffconfig: FORCE
mkdir -p $(BIN_DIR)
- $(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.seed
+ $(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.buildinfo
prepare: .config $(tools/stamp-compile) $(toolchain/stamp-compile)
- $(_SINGLE)$(SUBMAKE) -r diffconfig
+ $(_SINGLE)$(SUBMAKE) -r diffconfig buildversion feedsversion
world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-install) $(target/stamp-install) FORCE
$(_SINGLE)$(SUBMAKE) -r package/index
diff --git a/config/Config-build.in b/config/Config-build.in
index fe916e22ea..35341833e3 100644
--- a/config/Config-build.in
+++ b/config/Config-build.in
@@ -93,7 +93,7 @@ menu "Global build settings"
bool "Include build configuration in firmware" if DEVEL
default n
help
- If enabled, config.seed will be stored in /etc/build.config of firmware.
+ If enabled, config.buildinfo will be stored in /etc/build.config of firmware.
config COLLECT_KERNEL_DEBUG
bool
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 49254a3680..f105d2cd27 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -198,7 +198,7 @@ define Package/base-files/install
$(if $(CONFIG_INCLUDE_CONFIG), \
echo -e "# Build configuration for board $(BOARD)/$(SUBTARGET)/$(PROFILE)\n" >$(1)/etc/build.config; \
- cat $(BIN_DIR)/config.seed >>$(1)/etc/build.config)
+ cat $(BIN_DIR)/config.buildinfo >>$(1)/etc/build.config)
$(if $(CONFIG_CLEAN_IPKG),, \
mkdir -p $(1)/etc/opkg; \