build: use mkhash for IPK metadata checksums
authorPaul Spooren <mail@aparcar.org>
Thu, 16 Jul 2020 20:34:11 +0000 (10:34 -1000)
committerPaul Spooren <mail@aparcar.org>
Fri, 27 Nov 2020 05:06:13 +0000 (19:06 -1000)
When setting the option IPK_FILES_CHECKSUMS the build system stores
checksums of all package file as metadata. In combination with pkg_check
this allows to see if a package is broken, e.g. caused by bad flash.

To create those checksums the tool `sha256sum` were used while the rest
of OpenWrt uses `mkhash`, a small & fast implementation of sha256. As
the build system does not check the existence of `sha256sum` and the
stderr output is moved to /dev/null, a situation where the option is
enabled but no actual checksum are created may occur.

Instead of adding `sha256sum` as a requirement, this replaces it with
`mkhash sha256` and adapts the `sed` pipe command to fit spacing.

CC: Xu Wang <xwang1498@gmx.com>
CC: Michal Hrusecky <Michal@Hrusecky.net>
Signed-off-by: Paul Spooren <mail@aparcar.org>
include/package-ipkg.mk

index 0bca8ae84dd2e7133337be2f36e987fbf32a3b62..a92d69212147301124935d969115353a969ae346 100644 (file)
@@ -218,8 +218,8 @@ $(_endef)
     ifneq ($$(CONFIG_IPK_FILES_CHECKSUMS),)
        (cd $$(IDIR_$(1)); \
                ( \
     ifneq ($$(CONFIG_IPK_FILES_CHECKSUMS),)
        (cd $$(IDIR_$(1)); \
                ( \
-                       find . -type f \! -path ./CONTROL/\* -exec sha256sum \{\} \; 2> /dev/null | \
-                       sed 's|\([[:blank:]]\)\./|\1/|' > $$(IDIR_$(1))/CONTROL/files-sha256sum \
+                       find . -type f \! -path ./CONTROL/\* -exec mkhash sha256 -n \{\} \; 2> /dev/null | \
+                       sed 's|\([[:blank:]]\)\./| \1/|' > $$(IDIR_$(1))/CONTROL/files-sha256sum \
                ) || true \
        )
     endif
                ) || true \
        )
     endif