If a prereq-build command check defines a command env var (ex: MANPAGER=cat git
...)
prereq SetupHostCommand breaks. This is because it looks for the binary using
which on
the first space-separated item (which might be the env var definition)
This patch replaces bash substitution by a sed regex that removes both env
parameters and
command args.
---
include/prereq.mk | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/prereq.mk b/include/prereq.mk
index 6cb590e..839b663 100644
--- a/include/prereq.mk
+++ b/include/prereq.mk
@@ -92,8 +92,11 @@ define SetupHostCommand
$(call QuoteHostCommand,$(7)) $(call QuoteHostCommand,$(8)) \
$(call QuoteHostCommand,$(9)); do \
if [ -n "$$$$$$$$cmd" ]; then \
+
regex_rm_vars='s/^(\w+=(\['\'\"]']|'\''[^'\'']*'\''|"[^"]*"|[^ ]*(\\ )?)*
)*//'; \
+ regex_rm_args='s/[[:space:]].*//'; \
+
regex_clean_cmd="$$$$$$$$regex_rm_vars;$$$$$$$$regex_rm_args"; \
bin="$$$$$$$$(PATH="$(subst $(space),:,$(filter-out
$(STAGING_DIR_HOST)/%,$(subst :,$(space),$(PATH))))" \
- which "$$$$$$$${cmd%% *}")"; \
+ which "$$$$$$$$(echo $$$$$$$$cmd | sed -re
"$$$$$$$$regex_clean_cmd")")"; \
if [ -x "$$$$$$$$bin" ] && eval "$$$$$$$$cmd"
>/dev/null 2>/dev/null; then \
mkdir -p "$(STAGING_DIR_HOST)/bin"; \
ln -sf "$$$$$$$$bin"
"$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \
--
2.5.0
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel