From: Michael Pratt Date: Mon, 29 May 2023 09:38:33 +0000 (-0400) Subject: prereq-build: replace relative symlinks only if broken X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=b890e2fbf9211648ad4a74f3e8b47bbf04a3cc7a;p=openwrt%2Fstaging%2Fjow.git prereq-build: replace relative symlinks only if broken Some programs installed to staging_dir/host/bin also install some symlinks to itself for an alternative name. Some of those new symlinks are overwriting symlinks that were installed by prereq stage. If prereq stage were to somehow be run again, it should not be overwriting symlinks that point to programs that are already built. To filter that out, catch all symlinks after first catching all symlinks that have an absolute target after all other cases in the case statement, make sure it is not broken, and if so exit successfully. Suggested-by: Kevin Darbyshire-Bryant Signed-off-by: Michael Pratt --- diff --git a/include/prereq.mk b/include/prereq.mk index c888268d85..546f36b8e3 100644 --- a/include/prereq.mk +++ b/include/prereq.mk @@ -114,6 +114,11 @@ define SetupHostCommand find "$(STAGING_DIR_HOST)/stamp" | grep $(strip $(1)) && \ [ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \ ;; \ + *" -> /"*) \ + ;; \ + *" -> "*) \ + [ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \ + ;; \ esac; \ ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \ exit 1; \