From: Felix Fietkau Date: Sat, 5 Sep 2020 09:19:11 +0000 (+0200) Subject: build: fix extreme build system slowdown caused by SOURCE_DATE_EPOCH changes X-Git-Tag: v21.02.0-rc1~1657 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=7716a4309207addc5f359a4b5ab22f0104996028;p=openwrt%2Fstaging%2Fchunkeey.git build: fix extreme build system slowdown caused by SOURCE_DATE_EPOCH changes Adding inline shell invocations in per-target variables causes them to be executed over and over again, which causes a significant slowdown. Fix this by evaluating it only once per package directory Signed-off-by: Felix Fietkau --- diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index 0b7a561edc..62cda5b936 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -181,7 +181,7 @@ $$(call addfield,Depends,$$(Package/$(1)/DEPENDS) )$$(call addfield,LicenseFiles,$(LICENSE_FILES) )$$(call addfield,Section,$(SECTION) )$$(call addfield,Require-User,$(USERID) -)$$(call addfield,SourceDateEpoch,$(shell $(TOPDIR)/scripts/get_source_date_epoch.sh $(SOURCE)) +)$$(call addfield,SourceDateEpoch,$(PKG_SOURCE_DATE_EPOCH) )$(if $(PKG_CPE_ID),CPE-ID: $(PKG_CPE_ID) )$(if $(filter hold,$(PKG_FLAGS)),Status: unknown hold not-installed )$(if $(filter essential,$(PKG_FLAGS)),Essential: yes @@ -193,7 +193,7 @@ $(_endef) $$(IPKG_$(1)) : export CONTROL=$$(Package/$(1)/CONTROL) $$(IPKG_$(1)) : export DESCRIPTION=$$(Package/$(1)/description) $$(IPKG_$(1)) : export PATH=$$(TARGET_PATH_PKG) - $$(IPKG_$(1)) : export PKG_SOURCE_DATE_EPOCH=$(shell $(TOPDIR)/scripts/get_source_date_epoch.sh $(SOURCE)) + $$(IPKG_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH) $(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk @rm -rf $$(IDIR_$(1)); \ $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1)))) diff --git a/include/package.mk b/include/package.mk index a93d6b78f3..50bd838180 100644 --- a/include/package.mk +++ b/include/package.mk @@ -19,6 +19,8 @@ PKG_IREMAP ?= 1 MAKE_J:=$(if $(MAKE_JOBSERVER),$(MAKE_JOBSERVER) $(if $(filter 3.% 4.0 4.1,$(MAKE_VERSION)),-j)) +PKG_SOURCE_DATE_EPOCH:=$(if $(DUMP),,$(shell $(TOPDIR)/scripts/get_source_date_epoch.sh $(CURDIR))) + ifeq ($(strip $(PKG_BUILD_PARALLEL)),0) PKG_JOBS?=-j1 else