mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 06:33:41 +00:00
948dc515dc
Add a variable that stores the original value of $PATH
in the host system's shell, before Make alters it.
This can be useful for when it is necessary
to ignore symlinks and programs made by the build system.
Define this new variable before all instances of
'export PATH:=' or similar.
Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit d87a8aa148
)
122 lines
3.7 KiB
Makefile
122 lines
3.7 KiB
Makefile
include $(TOPDIR)/include/verbose.mk
|
|
include $(TOPDIR)/rules.mk
|
|
TMP_DIR:=$(TOPDIR)/tmp
|
|
|
|
all: $(TMP_DIR)/.$(SCAN_TARGET)
|
|
|
|
SCAN_TARGET ?= packageinfo
|
|
SCAN_NAME ?= package
|
|
SCAN_DIR ?= package
|
|
TARGET_STAMP:=$(TMP_DIR)/info/.files-$(SCAN_TARGET).stamp
|
|
FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE)
|
|
OVERRIDELIST:=$(TMP_DIR)/info/.overrides-$(SCAN_TARGET)-$(SCAN_COOKIE)
|
|
|
|
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
|
export PATH:=$(STAGING_DIR_HOST)/bin:$(PATH)
|
|
|
|
define feedname
|
|
$(if $(patsubst feeds/%,,$(1)),,$(word 2,$(subst /, ,$(1))))
|
|
endef
|
|
|
|
ifeq ($(SCAN_NAME),target)
|
|
SCAN_DEPS=image/Makefile profiles/*.mk $(TOPDIR)/include/kernel*.mk $(TOPDIR)/include/target.mk image/*.mk
|
|
else
|
|
SCAN_DEPS=$(TOPDIR)/include/package*.mk
|
|
ifneq ($(call feedname,$(SCAN_DIR)),)
|
|
SCAN_DEPS += $(TOPDIR)/feeds/$(call feedname,$(SCAN_DIR))/*.mk
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(IS_TTY),1)
|
|
ifneq ($(strip $(NO_COLOR)),1)
|
|
define progress
|
|
printf "\033[M\r$(1)" >&2;
|
|
endef
|
|
else
|
|
define progress
|
|
printf "\r$(1)" >&2;
|
|
endef
|
|
endif
|
|
else
|
|
define progress
|
|
:;
|
|
endef
|
|
endif
|
|
|
|
define PackageDir
|
|
$(TMP_DIR)/.$(SCAN_TARGET): $(TMP_DIR)/info/.$(SCAN_TARGET)-$(1)
|
|
$(TMP_DIR)/info/.$(SCAN_TARGET)-$(1): $(SCAN_DIR)/$(2)/Makefile $(foreach DEP,$(DEPS_$(SCAN_DIR)/$(2)/Makefile) $(SCAN_DEPS),$(wildcard $(if $(filter /%,$(DEP)),$(DEP),$(SCAN_DIR)/$(2)/$(DEP))))
|
|
{ \
|
|
$$(call progress,Collecting $(SCAN_NAME) info: $(SCAN_DIR)/$(2)) \
|
|
echo Source-Makefile: $(SCAN_DIR)/$(2)/Makefile; \
|
|
$(if $(3),echo Override: $(3),true); \
|
|
$(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) 2>/dev/null || { \
|
|
mkdir -p "$(TOPDIR)/logs/$(SCAN_DIR)/$(2)"; \
|
|
$(NO_TRACE_MAKE) --no-print-dir -r DUMP=1 FEED="$(call feedname,$(2))" -C $(SCAN_DIR)/$(2) $(SCAN_MAKEOPTS) > $(TOPDIR)/logs/$(SCAN_DIR)/$(2)/dump.txt 2>&1; \
|
|
$$(call progress,ERROR: please fix $(SCAN_DIR)/$(2)/Makefile - see logs/$(SCAN_DIR)/$(2)/dump.txt for details\n) \
|
|
rm -f $$@; \
|
|
}; \
|
|
echo; \
|
|
} > $$@.tmp
|
|
mv $$@.tmp $$@
|
|
endef
|
|
|
|
$(OVERRIDELIST):
|
|
rm -f $(TMP_DIR)/info/.overrides-$(SCAN_TARGET)-*
|
|
touch $@
|
|
|
|
ifeq ($(SCAN_NAME),target)
|
|
GREP_STRING=BuildTarget
|
|
else
|
|
GREP_STRING=(Build/DefaultTargets|BuildPackage|KernelPackage)
|
|
endif
|
|
|
|
$(FILELIST): $(OVERRIDELIST)
|
|
rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-*
|
|
find -L $(SCAN_DIR) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) $(SCAN_EXTRA) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f include/scan.awk > $@
|
|
|
|
$(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST)
|
|
( \
|
|
cat $< | awk '{print "$(SCAN_DIR)/" $$0 "/Makefile" }' | xargs grep -HE '^ *SCAN_DEPS *= *' | awk -F: '{ gsub(/^.*DEPS *= */, "", $$2); print "DEPS_" $$1 "=" $$2 }'; \
|
|
awk -F/ -v deps="$$DEPS" -v of="$(OVERRIDELIST)" ' \
|
|
BEGIN { \
|
|
while (getline < (of)) \
|
|
override[$$NF]=$$0; \
|
|
close(of) \
|
|
} \
|
|
{ \
|
|
info=$$0; \
|
|
gsub(/\//, "_", info); \
|
|
dir=$$0; \
|
|
pkg=""; \
|
|
if($$NF in override) \
|
|
pkg=override[$$NF]; \
|
|
print "$$(eval $$(call PackageDir," info "," dir "," pkg "))"; \
|
|
} ' < $<; \
|
|
true; \
|
|
) > $@.tmp
|
|
mv $@.tmp $@
|
|
|
|
-include $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk
|
|
|
|
$(TARGET_STAMP)::
|
|
+( \
|
|
$(NO_TRACE_MAKE) $(FILELIST); \
|
|
MD5SUM=$$(cat $(FILELIST) $(OVERRIDELIST) | $(MKHASH) md5 | awk '{print $$1}'); \
|
|
[ -f "$@.$$MD5SUM" ] || { \
|
|
rm -f $@.*; \
|
|
touch $@.$$MD5SUM; \
|
|
touch $@; \
|
|
} \
|
|
)
|
|
|
|
$(TMP_DIR)/.$(SCAN_TARGET): $(TARGET_STAMP)
|
|
$(call progress,Collecting $(SCAN_NAME) info: merging...)
|
|
-cat $(FILELIST) | awk '{gsub(/\//, "_", $$0);print "$(TMP_DIR)/info/.$(SCAN_TARGET)-" $$0}' | xargs cat > $@ 2>/dev/null
|
|
$(call progress,Collecting $(SCAN_NAME) info: done)
|
|
echo
|
|
|
|
FORCE:
|
|
.PHONY: FORCE
|
|
.NOTPARALLEL:
|