From: Michael Pratt Date: Sat, 27 May 2023 21:11:47 +0000 (-0400) Subject: prereq-build: do not replace binaries with symlinks X-Git-Tag: v24.10.0-rc1~4887 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=729909c07fae4201591e51895833112cb88485e1;p=openwrt%2Fopenwrt.git prereq-build: do not replace binaries with symlinks Some programs, like bash and patch, are checked by prereq stage and have a symlink installed, but then is later built from source. Now that the prereq-build checks are not successful just by finding the file alone, it is possible for a new symlink to overwrite the installed binary. If a normal file is found in staging_dir/host/bin, let the check look for the associated stampfile, and if found, skip creation of a symlink and exit successfully. Suggested-by: Kevin Darbyshire-Bryant Signed-off-by: Michael Pratt --- diff --git a/include/prereq.mk b/include/prereq.mk index c72878ebb0..c888268d85 100644 --- a/include/prereq.mk +++ b/include/prereq.mk @@ -110,6 +110,10 @@ define SetupHostCommand *" -> $$$$$$$$bin"*) \ [ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \ ;; \ + "-"*) \ + find "$(STAGING_DIR_HOST)/stamp" | grep $(strip $(1)) && \ + [ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \ + ;; \ esac; \ ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \ exit 1; \