diff mbox

[LEDE-DEV,v2] build: reintroduce md5 checksums for generated firmware images

Message ID 20160818041653.2cb1de46@mir
State Rejected
Headers show

Commit Message

Stefan Lippers-Hollmann Aug. 18, 2016, 2:16 a.m. UTC
Commit 83175687c81bee594885d0738cfd488673f5a3fb "build: remove image
specific checksum code" dropped the generation of md5 checksums in
favour of only shipping sha256 ones.

A default Lede installation however doesn't enable busybox' sha256sum
applet, which makes confirming the checksum on the device itself (e.g.
for transmission errors to the device) more difficult than necessary,
this patch reintroduces the generation of MD5 checksums for all
firmware images.

Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
---

It would be simpler to call md5sum rather than openssl to generate the
MD5 checksums, but in order to keep the prereqs small, I re-used
openssl for this task as well, given that it's needed for the SHA256
checksums already.

This adds roughly 3.6 seconds to the build times for ar71xx (589 files)

v2: make sure to exclude {md5,sha256}sums from checksum files

 Makefile                           | 1 +
 rules.mk                           | 9 ++++++++-
 target/imagebuilder/files/Makefile | 1 +
 3 files changed, 10 insertions(+), 1 deletion(-)

Comments

John Crispin Aug. 20, 2016, 3:35 a.m. UTC | #1
On 18/08/2016 04:16, Stefan Lippers-Hollmann wrote:
> Commit 83175687c81bee594885d0738cfd488673f5a3fb "build: remove image
> specific checksum code" dropped the generation of md5 checksums in
> favour of only shipping sha256 ones.
> 
> A default Lede installation however doesn't enable busybox' sha256sum
> applet, which makes confirming the checksum on the device itself (e.g.
> for transmission errors to the device) more difficult than necessary,
> this patch reintroduces the generation of MD5 checksums for all
> firmware images.
> 
> Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
> ---
> 
> It would be simpler to call md5sum rather than openssl to generate the
> MD5 checksums, but in order to keep the prereqs small, I re-used
> openssl for this task as well, given that it's needed for the SHA256
> checksums already.
> 
> This adds roughly 3.6 seconds to the build times for ar71xx (589 files)
> 
> v2: make sure to exclude {md5,sha256}sums from checksum files

jow enabled the sha256sum tool in busybox instead

	John

> 
>  Makefile                           | 1 +
>  rules.mk                           | 9 ++++++++-
>  target/imagebuilder/files/Makefile | 1 +
>  3 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 59320d4..51a2e38 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -84,6 +84,7 @@ prereq: $(target/stamp-prereq) tmp/.prereq_packages
>  	fi
>  
>  checksum: FORCE
> +	$(call md5sums,$(BIN_DIR))
>  	$(call sha256sums,$(BIN_DIR))
>  
>  prepare: .config $(tools/stamp-install) $(toolchain/stamp-install)
> diff --git a/rules.mk b/rules.mk
> index de24778..a3d296b 100644
> --- a/rules.mk
> +++ b/rules.mk
> @@ -371,10 +371,17 @@ define file_copy
>  	$(CP) $(1) $(2)
>  endef
>  
> +# Calculate md5sum of any plain file within a given directory
> +# $(1) => Input directory
> +define md5sums
> +	(cd $(1); find . -maxdepth 1 -type f -not -name 'md5sums' -not -name 'sha256sums' -printf "%P\n" | sort | \
> +		xargs openssl dgst -md5 | sed -ne 's!^MD5(\(.*\))= \(.*\)$$!\2 *\1!p' > md5sums)
> +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 | \
> +	(cd $(1); find . -maxdepth 1 -type f -not -name 'md5sums' -not -name 'sha256sums' -printf "%P\n" | sort | \
>  		xargs openssl dgst -sha256 | sed -ne 's!^SHA256(\(.*\))= \(.*\)$$!\2 *\1!p' > sha256sums)
>  endef
>  
> diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile
> index 493012f..15c34ed 100644
> --- a/target/imagebuilder/files/Makefile
> +++ b/target/imagebuilder/files/Makefile
> @@ -174,6 +174,7 @@ build_image: FORCE
>  checksum: FORCE
>  	@echo
>  	@echo Calculating checksums...
> +	@$(call md5sums,$(BIN_DIR))
>  	@$(call sha256sums,$(BIN_DIR))
>  
>  clean:
> 
> 
> 
> _______________________________________________
> Lede-dev mailing list
> Lede-dev@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
>
diff mbox

Patch

diff --git a/Makefile b/Makefile
index 59320d4..51a2e38 100644
--- a/Makefile
+++ b/Makefile
@@ -84,6 +84,7 @@  prereq: $(target/stamp-prereq) tmp/.prereq_packages
 	fi
 
 checksum: FORCE
+	$(call md5sums,$(BIN_DIR))
 	$(call sha256sums,$(BIN_DIR))
 
 prepare: .config $(tools/stamp-install) $(toolchain/stamp-install)
diff --git a/rules.mk b/rules.mk
index de24778..a3d296b 100644
--- a/rules.mk
+++ b/rules.mk
@@ -371,10 +371,17 @@  define file_copy
 	$(CP) $(1) $(2)
 endef
 
+# Calculate md5sum of any plain file within a given directory
+# $(1) => Input directory
+define md5sums
+	(cd $(1); find . -maxdepth 1 -type f -not -name 'md5sums' -not -name 'sha256sums' -printf "%P\n" | sort | \
+		xargs openssl dgst -md5 | sed -ne 's!^MD5(\(.*\))= \(.*\)$$!\2 *\1!p' > md5sums)
+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 | \
+	(cd $(1); find . -maxdepth 1 -type f -not -name 'md5sums' -not -name 'sha256sums' -printf "%P\n" | sort | \
 		xargs openssl dgst -sha256 | sed -ne 's!^SHA256(\(.*\))= \(.*\)$$!\2 *\1!p' > sha256sums)
 endef
 
diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile
index 493012f..15c34ed 100644
--- a/target/imagebuilder/files/Makefile
+++ b/target/imagebuilder/files/Makefile
@@ -174,6 +174,7 @@  build_image: FORCE
 checksum: FORCE
 	@echo
 	@echo Calculating checksums...
+	@$(call md5sums,$(BIN_DIR))
 	@$(call sha256sums,$(BIN_DIR))
 
 clean: