summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2016-07-26 15:05:35 +0200
committerJo-Philipp Wich <jo@mein.io>2016-08-01 18:11:21 +0200
commit27854a0a84cd2db9539b662a1f1fc95ef7409962 (patch)
tree445387e09212e6741a19c284c65d5c96e6d91b6a
parent4d9fc1bd44e9012de7452c6ec1fe7ca9d098f3dd (diff)
downloadopenwrt-27854a0a84cd2db9539b662a1f1fc95ef7409962.tar.gz
openwrt-27854a0a84cd2db9539b662a1f1fc95ef7409962.tar.bz2
openwrt-27854a0a84cd2db9539b662a1f1fc95ef7409962.zip
build: add checksum target
Add a new "checksum" make target which generates an sha256sums file over the image files produced in bin/targets/ and automatically call it during make world after the package index generation. The advantage of this new target is that it is guaranteed to run after the images, the SDK and the ImageBuilder archives have been generated to ensure that they all end up in the checksum file. Fixes FS#51. Uses sed to postprocess the OpenSSL digest output into an sha256sum command compatible format. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--Makefile4
-rw-r--r--rules.mk7
-rw-r--r--target/imagebuilder/files/Makefile6
3 files changed, 17 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index c3e1ed7707..5bd4fb2ca7 100644
--- a/Makefile
+++ b/Makefile
@@ -83,9 +83,13 @@ prereq: $(target/stamp-prereq) tmp/.prereq_packages
exit 1; \
fi
+checksum: FORCE
+ $(call sha256sums,$(BIN_DIR))
+
prepare: .config $(tools/stamp-install) $(toolchain/stamp-install)
world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-install) $(target/stamp-install) FORCE
$(_SINGLE)$(SUBMAKE) -r package/index
+ $(_SINGLE)$(SUBMAKE) -r checksum
.PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean
diff --git a/rules.mk b/rules.mk
index 12a79ba30c..de24778614 100644
--- a/rules.mk
+++ b/rules.mk
@@ -371,6 +371,13 @@ define file_copy
$(CP) $(1) $(2)
endef
+# Calculate sha256sum of any plain file within a given directory
+# $(1) => Input directory
+define sha256sums
+ (cd $(1); find . -maxdepth 1 -type f -not -name 'sha256sums' -printf "%P\n" | sort | \
+ xargs openssl dgst -sha256 | sed -ne 's!^SHA256(\(.*\))= \(.*\)$$!\2 *\1!p' > sha256sums)
+endef
+
# file extension
ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1)))
diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile
index 44439854d6..493012ff72 100644
--- a/target/imagebuilder/files/Makefile
+++ b/target/imagebuilder/files/Makefile
@@ -125,6 +125,7 @@ ifneq ($(USER_FILES),)
endif
$(MAKE) package_postinst
$(MAKE) build_image
+ $(MAKE) checksum
package_index: FORCE
@echo
@@ -170,6 +171,11 @@ build_image: FORCE
$(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
+checksum: FORCE
+ @echo
+ @echo Calculating checksums...
+ @$(call sha256sums,$(BIN_DIR))
+
clean:
rm -rf $(TMP_DIR) $(DL_DIR) $(TARGET_DIR) $(BIN_DIR)