[source] build: add checksum target

LEDE Commits lede-commits at lists.infradead.org
Mon Aug 1 09:11:57 PDT 2016


jow pushed a commit to source.git, branch master:
https://git.lede-project.org/?p=source.git;a=commitdiff;h=27854a0a84cd2db9539b662a1f1fc95ef7409962

commit 27854a0a84cd2db9539b662a1f1fc95ef7409962
Author: Jo-Philipp Wich <jo at mein.io>
AuthorDate: Tue Jul 26 15:05:35 2016 +0200

    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 at mein.io>
---
 Makefile                           | 4 ++++
 rules.mk                           | 7 +++++++
 target/imagebuilder/files/Makefile | 6 ++++++
 3 files changed, 17 insertions(+)

diff --git a/Makefile b/Makefile
index c3e1ed7..5bd4fb2 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 12a79ba..de24778 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 4443985..493012f 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)
 



More information about the lede-commits mailing list