mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-18 21:28:02 +00:00
9ffd6013b9
This reverts commit7855378fcd
. The return "exit 1" was intentional and actually just makes the symlink checks much more strict. This new level of strictness added to the checks revealed what was a confusing regression with prereq stage that already existed but was not presenting itself because of the simple way that checks used to be done before. Either way, reverting to "exit 0" was a nice workaround until the true root cause was discovered, so as to not interfere with others' pull requests and builds in the meantime. It turns out that this problem was the inconsistent value of $PATH between different commands within the SetupHostCommand recipe, now fixed in the parent commit, using the variable created in the parent of the parent commit. Ref:f75204036c
("prereq-build: allow host command symlinks to update") Signed-off-by: Michael Pratt <mcpratt@pm.me>
124 lines
2.9 KiB
Makefile
124 lines
2.9 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Copyright (C) 2006-2020 OpenWrt.org
|
|
|
|
ifneq ($(__prereq_inc),1)
|
|
__prereq_inc:=1
|
|
|
|
prereq:
|
|
if [ -f $(TMP_DIR)/.prereq-error ]; then \
|
|
echo; \
|
|
cat $(TMP_DIR)/.prereq-error; \
|
|
rm -f $(TMP_DIR)/.prereq-error; \
|
|
echo; \
|
|
false; \
|
|
fi
|
|
|
|
.SILENT: prereq
|
|
endif
|
|
|
|
PREREQ_PREV=
|
|
|
|
# 1: display name
|
|
# 2: error message
|
|
define Require
|
|
export PREREQ_CHECK=1
|
|
ifeq ($$(CHECK_$(1)),)
|
|
prereq: prereq-$(1)
|
|
|
|
prereq-$(1): $(if $(PREREQ_PREV),prereq-$(PREREQ_PREV)) FORCE
|
|
printf "Checking '$(1)'... "
|
|
if $(NO_TRACE_MAKE) -f $(firstword $(MAKEFILE_LIST)) check-$(1) PATH="$(ORIG_PATH)" >/dev/null 2>/dev/null; then \
|
|
echo 'ok.'; \
|
|
elif $(NO_TRACE_MAKE) -f $(firstword $(MAKEFILE_LIST)) check-$(1) PATH="$(ORIG_PATH)" >/dev/null 2>/dev/null; then \
|
|
echo 'updated.'; \
|
|
else \
|
|
echo 'failed.'; \
|
|
echo "$(PKG_NAME): $(strip $(2))" >> $(TMP_DIR)/.prereq-error; \
|
|
fi
|
|
|
|
check-$(1): FORCE
|
|
$(call Require/$(1))
|
|
CHECK_$(1):=1
|
|
|
|
.SILENT: prereq-$(1) check-$(1)
|
|
.NOTPARALLEL:
|
|
endif
|
|
|
|
PREREQ_PREV=$(1)
|
|
endef
|
|
|
|
|
|
define RequireCommand
|
|
define Require/$(1)
|
|
command -v $(1)
|
|
endef
|
|
|
|
$$(eval $$(call Require,$(1),$(2)))
|
|
endef
|
|
|
|
define RequireHeader
|
|
define Require/$(1)
|
|
[ -e "$(1)" ]
|
|
endef
|
|
|
|
$$(eval $$(call Require,$(1),$(2)))
|
|
endef
|
|
|
|
# 1: header to test
|
|
# 2: failure message
|
|
# 3: optional compile time test
|
|
# 4: optional link library test (example -lncurses)
|
|
define RequireCHeader
|
|
define Require/$(1)
|
|
echo 'int main(int argc, char **argv) { $(3); return 0; }' | gcc -include $(1) -x c -o $(TMP_DIR)/a.out - $(4)
|
|
endef
|
|
|
|
$$(eval $$(call Require,$(1),$(2)))
|
|
endef
|
|
|
|
define QuoteHostCommand
|
|
'$(subst ','"'"',$(strip $(1)))'
|
|
endef
|
|
|
|
# 1: display name
|
|
# 2: failure message
|
|
# 3: test
|
|
define TestHostCommand
|
|
define Require/$(1)
|
|
($(3)) >/dev/null 2>/dev/null
|
|
endef
|
|
|
|
$$(eval $$(call Require,$(1),$(2)))
|
|
endef
|
|
|
|
# 1: canonical name
|
|
# 2: failure message
|
|
# 3+: candidates
|
|
define SetupHostCommand
|
|
define Require/$(1)
|
|
mkdir -p "$(STAGING_DIR_HOST)/bin"; \
|
|
for cmd in $(call QuoteHostCommand,$(3)) $(call QuoteHostCommand,$(4)) \
|
|
$(call QuoteHostCommand,$(5)) $(call QuoteHostCommand,$(6)) \
|
|
$(call QuoteHostCommand,$(7)) $(call QuoteHostCommand,$(8)) \
|
|
$(call QuoteHostCommand,$(9)) $(call QuoteHostCommand,$(10)) \
|
|
$(call QuoteHostCommand,$(11)) $(call QuoteHostCommand,$(12)); do \
|
|
if [ -n "$$$$$$$$cmd" ]; then \
|
|
bin="$$$$$$$$(command -v "$$$$$$$${cmd%% *}")"; \
|
|
if [ -x "$$$$$$$$bin" ] && eval "$$$$$$$$cmd" >/dev/null 2>/dev/null; then \
|
|
case "$$$$$$$$(ls -dl -- $(STAGING_DIR_HOST)/bin/$(strip $(1)))" in \
|
|
*" -> $$$$$$$$bin"*) \
|
|
[ -x "$(STAGING_DIR_HOST)/bin/$(strip $(1))" ] && exit 0 \
|
|
;; \
|
|
esac; \
|
|
ln -sf "$$$$$$$$bin" "$(STAGING_DIR_HOST)/bin/$(strip $(1))"; \
|
|
exit 1; \
|
|
fi; \
|
|
fi; \
|
|
done; \
|
|
exit 1
|
|
endef
|
|
|
|
$$(eval $$(call Require,$(1),$(if $(2),$(2),Missing $(1) command)))
|
|
endef
|