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)