build: use mkhash to replace various quirky md5sum/openssl calls

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2016-12-25 16:40:05 +01:00
parent dad48c6438
commit 84bd74057f
22 changed files with 28 additions and 45 deletions

View File

@ -13,7 +13,7 @@
DEP_FINDPARAMS := -x "*/.svn*" -x ".*" -x "*:*" -x "*\!*" -x "* *" -x "*\\\#*" -x "*/.*_check" -x "*/.*.swp" DEP_FINDPARAMS := -x "*/.svn*" -x ".*" -x "*:*" -x "*\!*" -x "* *" -x "*\\\#*" -x "*/.*_check" -x "*/.*.swp"
find_md5=$(SH_FUNC) find $(wildcard $(1)) -type f $(patsubst -x,-and -not -path,$(DEP_FINDPARAMS) $(2)) | md5s find_md5=find $(wildcard $(1)) -type f $(patsubst -x,-and -not -path,$(DEP_FINDPARAMS) $(2)) | mkhash md5
define rdep define rdep
.PRECIOUS: $(2) .PRECIOUS: $(2)

View File

@ -61,7 +61,7 @@ else
check_warn = $(if $(filter-out undefined,$(origin F_$(1))),$(filter ,$(shell $(call F_$(1),$(2),$(3),$(4)) >&2)),$(check_warn_nofix)) check_warn = $(if $(filter-out undefined,$(origin F_$(1))),$(filter ,$(shell $(call F_$(1),$(2),$(3),$(4)) >&2)),$(check_warn_nofix))
endif endif
gen_sha256sum = $(shell openssl dgst -sha256 $(DL_DIR)/$(1) | awk '{print $$2}') gen_sha256sum = $(shell mkhash sha256 $(DL_DIR)/$(1))
ifdef FIXUP ifdef FIXUP
F_hash_deprecated = $(SCRIPT_DIR)/fixup-makefile.pl $(CURDIR)/Makefile fix-hash $(3) $(call gen_sha256sum,$(1)) $(2) F_hash_deprecated = $(SCRIPT_DIR)/fixup-makefile.pl $(CURDIR)/Makefile fix-hash $(3) $(call gen_sha256sum,$(1)) $(2)

View File

@ -33,7 +33,7 @@ param_get_default = $(firstword $(call param_get,$(1),$(2)) $(3))
param_mangle = $(subst $(space),_,$(strip $(1))) param_mangle = $(subst $(space),_,$(strip $(1)))
param_unmangle = $(subst _,$(space),$(1)) param_unmangle = $(subst _,$(space),$(1))
mkfs_packages_id = $(shell echo $(sort $(1)) | md5sum | head -c 8) mkfs_packages_id = $(shell echo $(sort $(1)) | mkhash md5 | head -c 8)
mkfs_target_dir = $(if $(call param_get,pkg,$(1)),$(KDIR)/target-dir-$(call param_get,pkg,$(1)),$(TARGET_DIR)) mkfs_target_dir = $(if $(call param_get,pkg,$(1)),$(KDIR)/target-dir-$(call param_get,pkg,$(1)),$(TARGET_DIR))
KDIR=$(KERNEL_BUILD_DIR) KDIR=$(KERNEL_BUILD_DIR)

View File

@ -125,7 +125,7 @@ define Kernel/Configure/Default
cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.prev; \ cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.prev; \
} }
$(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install $(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install
$(SH_FUNC) grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | md5s > $(LINUX_DIR)/.vermagic grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | mkhash md5 > $(LINUX_DIR)/.vermagic
endef endef
define Kernel/Configure/Initramfs define Kernel/Configure/Initramfs

View File

@ -127,11 +127,6 @@ $(eval $(call SetupHostCommand,stat,Cannot find a file stat utility, \
gstat -c%s $(TMP_DIR)/.host.mk, \ gstat -c%s $(TMP_DIR)/.host.mk, \
stat -c%s $(TMP_DIR)/.host.mk)) stat -c%s $(TMP_DIR)/.host.mk))
$(eval $(call SetupHostCommand,md5sum,, \
gmd5sum /dev/null | grep d41d8cd98f00b204e9800998ecf8427e, \
md5sum /dev/null | grep d41d8cd98f00b204e9800998ecf8427e, \
$(SCRIPT_DIR)/md5sum /dev/null | grep d41d8cd98f00b204e9800998ecf8427e))
$(eval $(call SetupHostCommand,unzip,Please install 'unzip', \ $(eval $(call SetupHostCommand,unzip,Please install 'unzip', \
unzip 2>&1 | grep zipfile, \ unzip 2>&1 | grep zipfile, \
unzip)) unzip))

View File

@ -149,7 +149,8 @@ define Quilt/Template
echo "The source directory contains no quilt patches."; \ echo "The source directory contains no quilt patches."; \
false; \ false; \
} }
@[ -n "$$$$(ls $(1)/patches/series)" -o "$$$$(cat $(1)/patches/series | md5sum)" = "$$(sort $(1)/patches/series | md5sum)" ] || { \ @[ -n "$$$$(ls $(1)/patches/series)" -o \
"$$$$(cat $(1)/patches/series | mkhash md5)" = "$$(sort $(1)/patches/series | mkhash md5)" ] || { \
echo "The patches are not sorted in the right order. Please fix."; \ echo "The patches are not sorted in the right order. Please fix."; \
false; \ false; \
} }

View File

@ -85,7 +85,7 @@ $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST)
$(TARGET_STAMP):: $(TARGET_STAMP)::
+( \ +( \
$(NO_TRACE_MAKE) $(FILELIST); \ $(NO_TRACE_MAKE) $(FILELIST); \
MD5SUM=$$(cat $(FILELIST) $(OVERRIDELIST) | (md5sum || md5) 2>/dev/null | awk '{print $$1}'); \ MD5SUM=$$(cat $(FILELIST) $(OVERRIDELIST) | mkhash md5 | awk '{print $$1}'); \
[ -f "$@.$$MD5SUM" ] || { \ [ -f "$@.$$MD5SUM" ] || { \
rm -f $@.*; \ rm -f $@.*; \
touch $@.$$MD5SUM; \ touch $@.$$MD5SUM; \

View File

@ -13,10 +13,3 @@ isset() {
eval "var=\"\${$1}\"" eval "var=\"\${$1}\""
[ -n "$var" ] [ -n "$var" ]
} }
md5s() {
cat "$@" | (
md5sum 2>/dev/null ||
md5
) | awk '{print $1}'
}

View File

@ -23,7 +23,7 @@ PKG_CONFIG_DEPENDS := CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARG
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
ifneq ($(DUMP),1) ifneq ($(DUMP),1)
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) echo $(CONFIG_TARGET_INIT_PATH) | md5s) STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | mkhash md5)
TARGET:=-$(BOARD) TARGET:=-$(BOARD)
endif endif

View File

@ -24,7 +24,7 @@ export SHELL:=/bin/sh
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
ifeq ($(DUMP),) ifeq ($(DUMP),)
STAMP_BUILT:=$(STAMP_BUILT)_$(firstword $(shell $(SCRIPT_DIR)/kconfig.pl $(LINUX_DIR)/.config | md5sum)) STAMP_BUILT:=$(STAMP_BUILT)_$(shell $(SCRIPT_DIR)/kconfig.pl $(LINUX_DIR)/.config | mkhash md5)
-include $(LINUX_DIR)/.config -include $(LINUX_DIR)/.config
endif endif

View File

@ -28,7 +28,7 @@ PKG_CONFIG_DEPENDS:=CONFIG_TARGET_INIT_PATH CONFIG_DROPBEAR_ECC CONFIG_DROPBEAR_
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
ifneq ($(DUMP),1) ifneq ($(DUMP),1)
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) echo $(CONFIG_TARGET_INIT_PATH) | md5s) STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | mkhash md5)
endif endif
define Package/dropbear/Default define Package/dropbear/Default

View File

@ -28,7 +28,7 @@ include $(INCLUDE_DIR)/package.mk
ifeq ($(DUMP),) ifeq ($(DUMP),)
-include $(LINUX_DIR)/.config -include $(LINUX_DIR)/.config
include $(INCLUDE_DIR)/netfilter.mk include $(INCLUDE_DIR)/netfilter.mk
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) grep 'NETFILTER' $(LINUX_DIR)/.config | md5s) STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell grep 'NETFILTER' $(LINUX_DIR)/.config | mkhash md5)
endif endif

View File

@ -33,7 +33,7 @@ include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk include $(INCLUDE_DIR)/cmake.mk
ifeq ($(DUMP),) ifeq ($(DUMP),)
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) echo $(CONFIG_TARGET_INIT_PATH) | md5s) STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | mkhash md5)
endif endif
CMAKE_OPTIONS += -DEARLY_PATH="$(TARGET_INIT_PATH)" CMAKE_OPTIONS += -DEARLY_PATH="$(TARGET_INIT_PATH)"

View File

@ -27,7 +27,7 @@ PKG_LICENSE_FILES:=LICENSE archival/libarchive/bz/LICENSE
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
ifeq ($(DUMP),) ifeq ($(DUMP),)
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) grep '^CONFIG_BUSYBOX_' $(TOPDIR)/.config | md5s) STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell grep '^CONFIG_BUSYBOX_' $(TOPDIR)/.config | mkhash md5)
endif endif
ifneq ($(findstring c,$(OPENWRT_VERBOSE)),) ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)

View File

@ -383,7 +383,7 @@ endef
# $(1) => Input directory # $(1) => Input directory
define sha256sums 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 'sha256sums' -printf "%P\n" | sort | \
xargs openssl dgst -sha256 | sed -ne 's!^SHA256(\(.*\))= \(.*\)$$!\2 *\1!p' > sha256sums) xargs -r $(STAGING_DIR_HOST)/bin/mkhash -n sha256 | sed -ne 's!^\(.*\) \(.*\)$$!\1 *\2!p' > sha256sums)
endef endef
# file extension # file extension

View File

@ -47,7 +47,7 @@ while [ "$#" -gt 1 ]
[ ! -f "$file" ] && echo "$ME: Not a valid file: $file" && usage [ ! -f "$file" ] && echo "$ME: Not a valid file: $file" && usage
FILES="$FILES $file" FILES="$FILES $file"
md5=$(cat "$file" | md5sum -) md5=$(mkhash md5 "$file")
printf "%-32s%08x%32s" "$filename" $(stat -c "%s" "$file") "${md5%% *}" >> $IMG_OUT printf "%-32s%08x%32s" "$filename" $(stat -c "%s" "$file") "${md5%% *}" >> $IMG_OUT
shift 2 shift 2
done done

View File

@ -16,7 +16,7 @@ dd if="$1" of="$kern" bs=$BLKSZ conv=sync 2>/dev/null
dd if="$2" of="$root" bs=$BLKSZ conv=sync 2>/dev/null dd if="$2" of="$root" bs=$BLKSZ conv=sync 2>/dev/null
# Calculate md5sum over combined kernel and rootfs image. # Calculate md5sum over combined kernel and rootfs image.
md5=$(cat "$kern" "$root" | md5sum -) md5=$(cat "$kern" "$root" | mkhash md5)
# Write image header followed by kernel and rootfs image. # Write image header followed by kernel and rootfs image.
# The header is padded to 64k, format is: # The header is padded to 64k, format is:

View File

@ -65,12 +65,8 @@ sub hash_cmd() {
my $len = length($file_hash); my $len = length($file_hash);
my $cmd; my $cmd;
$len == 64 and return "openssl dgst -sha256 | sed -e 's,.*= ,,'"; $len == 64 and return "mkhash sha256";
$len == 32 and do { $len == 32 and return "mkhash md5";
my $cmd = which("md5sum") || which("md5") || die 'no md5 checksum program found, please install md5 or md5sum';
chomp $cmd;
return $cmd;
};
return undef; return undef;
} }

View File

@ -18,7 +18,7 @@ for pkg in `find $pkg_dir -name '*.ipk' | sort`; do
[[ "$name" = "libc" ]] && continue [[ "$name" = "libc" ]] && continue
echo "Generating index for package $pkg" >&2 echo "Generating index for package $pkg" >&2
file_size=$(ls -l $pkg | awk '{print $5}') file_size=$(ls -l $pkg | awk '{print $5}')
sha256sum=$(openssl dgst -sha256 $pkg | awk '{print $2}') sha256sum=$(mkhash sha256 $pkg)
# Take pains to make variable value sed-safe # Take pains to make variable value sed-safe
sed_safe_pkg=`echo $pkg | sed -e 's/^\.\///g' -e 's/\\//\\\\\\//g'` sed_safe_pkg=`echo $pkg | sed -e 's/^\.\///g' -e 's/\\//\\\\\\//g'`
tar -xzOf $pkg ./control.tar.gz | tar xzOf - ./control | sed -e "s/^Description:/Filename: $sed_safe_pkg\\ tar -xzOf $pkg ./control.tar.gz | tar xzOf - ./control | sed -e "s/^Description:/Filename: $sed_safe_pkg\\

View File

@ -41,16 +41,16 @@ esac
CHECK_BS=65536 CHECK_BS=65536
KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH") KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH")
KERNEL_MD5=$(md5=$(md5sum $KERNEL_PATH); echo ${md5%% *}) KERNEL_MD5=$(mkhash md5 $KERNEL_PATH)
KERNEL_SHA256=$(openssl dgst -sha256 $KERNEL_PATH | awk '{print $2}') KERNEL_SHA256=$(mkhash sha256 $KERNEL_PATH)
KERNEL_PART_SIZE=$(size=$(($KERNEL_SIZE / $FLASH_BS)); [ $(($size * $FLASH_BS)) -lt $KERNEL_SIZE ] && size=$(($size + 1)); echo $(($size * $FLASH_BS / 1024))) KERNEL_PART_SIZE=$(size=$(($KERNEL_SIZE / $FLASH_BS)); [ $(($size * $FLASH_BS)) -lt $KERNEL_SIZE ] && size=$(($size + 1)); echo $(($size * $FLASH_BS / 1024)))
ROOTFS_FLASH_ADDR=$(addr=$(($KERNEL_FLASH_ADDR + ($KERNEL_PART_SIZE * 1024))); printf "0x%x" $addr) ROOTFS_FLASH_ADDR=$(addr=$(($KERNEL_FLASH_ADDR + ($KERNEL_PART_SIZE * 1024))); printf "0x%x" $addr)
ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH") ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH")
ROOTFS_CHECK_BLOCKS=$((($ROOTFS_SIZE / $CHECK_BS) - $MD5_SKIP_BLOCKS)) ROOTFS_CHECK_BLOCKS=$((($ROOTFS_SIZE / $CHECK_BS) - $MD5_SKIP_BLOCKS))
ROOTFS_MD5=$(md5=$(dd if=$ROOTFS_PATH bs=$CHECK_BS count=$ROOTFS_CHECK_BLOCKS 2>&- | md5sum); echo ${md5%% *}) ROOTFS_MD5=$(dd if=$ROOTFS_PATH bs=$CHECK_BS count=$ROOTFS_CHECK_BLOCKS 2>&- | mkhash md5)
ROOTFS_MD5_FULL=$(md5=$(md5sum $ROOTFS_PATH); echo ${md5%% *}) ROOTFS_MD5_FULL=$(mkhash md5 $ROOTFS_PATH)
ROOTFS_SHA256_FULL=$(openssl dgst -sha256 $ROOTFS_PATH | awk '{print $2}') ROOTFS_SHA256_FULL=$(mkhash sha256 $ROOTFS_PATH)
ROOTFS_CHECK_SIZE=$(printf '0x%x' $(($ROOTFS_CHECK_BLOCKS * $CHECK_BS))) ROOTFS_CHECK_SIZE=$(printf '0x%x' $(($ROOTFS_CHECK_BLOCKS * $CHECK_BS)))
ROOTFS_PART_SIZE=$(($MAX_PART_SIZE - $KERNEL_PART_SIZE)) ROOTFS_PART_SIZE=$(($MAX_PART_SIZE - $KERNEL_PART_SIZE))

View File

@ -22,11 +22,9 @@ endef
define Build/elecom-header define Build/elecom-header
cp $@ $(KDIR)/v_0.0.0.bin cp $@ $(KDIR)/v_0.0.0.bin
( \ ( \
$(STAGING_DIR_HOST)/bin/md5sum $(KDIR)/v_0.0.0.bin | \ mkhash md5 $(KDIR)/v_0.0.0.bin && \
sed 's/ .*//' && \
echo 458 \ echo 458 \
) | $(STAGING_DIR_HOST)/bin/md5sum | \ ) | mkhash md5 > $(KDIR)/v_0.0.0.md5
sed 's/ .*//' > $(KDIR)/v_0.0.0.md5
$(STAGING_DIR_HOST)/bin/tar -cf $@ -C $(KDIR) v_0.0.0.bin v_0.0.0.md5 $(STAGING_DIR_HOST)/bin/tar -cf $@ -C $(KDIR) v_0.0.0.bin v_0.0.0.md5
endef endef

View File

@ -8,13 +8,13 @@ define Build/ubnt-erx-factory-image
$(TAR) -cf $(1) --transform='s/^.*/compat/' $(1).compat; \ $(TAR) -cf $(1) --transform='s/^.*/compat/' $(1).compat; \
\ \
$(TAR) -rf $(1) --transform='s/^.*/vmlinux.tmp/' $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE); \ $(TAR) -rf $(1) --transform='s/^.*/vmlinux.tmp/' $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE); \
md5sum --binary $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) | awk '{print $$1}'> $(1).md5; \ mkhash md5 $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) > $(1).md5; \
$(TAR) -rf $(1) --transform='s/^.*/vmlinux.tmp.md5/' $(1).md5; \ $(TAR) -rf $(1) --transform='s/^.*/vmlinux.tmp.md5/' $(1).md5; \
\ \
echo "dummy" > $(1).rootfs; \ echo "dummy" > $(1).rootfs; \
$(TAR) -rf $(1) --transform='s/^.*/squashfs.tmp/' $(1).rootfs; \ $(TAR) -rf $(1) --transform='s/^.*/squashfs.tmp/' $(1).rootfs; \
\ \
md5sum --binary $(1).rootfs | awk '{print $$1}'> $(1).md5; \ mkhash md5 $(1).rootfs > $(1).md5; \
$(TAR) -rf $(1) --transform='s/^.*/squashfs.tmp.md5/' $(1).md5; \ $(TAR) -rf $(1) --transform='s/^.*/squashfs.tmp.md5/' $(1).md5; \
\ \
echo '$(BOARD) $(VERSION_CODE) $(VERSION_NUMBER)' > $(1).version; \ echo '$(BOARD) $(VERSION_CODE) $(VERSION_NUMBER)' > $(1).version; \