diff options
author | Eneas U de Queiroz <cotequeiroz@gmail.com> | 2020-02-20 18:29:04 -0300 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-07-11 13:33:28 +0200 |
commit | 11192484fa320cd233849441bd00ddf58964de42 (patch) | |
tree | 3cc5e033023051182c3b0843e6c09cdc2935856e /include/package-ipkg.mk | |
parent | 78d1f3ac61b1740f2a45c40bcde0e83246308a18 (diff) | |
download | upstream-11192484fa320cd233849441bd00ddf58964de42.tar.gz upstream-11192484fa320cd233849441bd00ddf58964de42.tar.bz2 upstream-11192484fa320cd233849441bd00ddf58964de42.zip |
build: reduce number of files passed to ipk-remove
Instead of using xargs to pass a huge number of files to
script/ipkg-remove, which will usually pick only one, use a more
restrictive wildcard so that, currently, at the most 325 files are
examined, instead of up to over 2,300. The 325-file package is python,
which is picking up python3* ipks. It is about to be removed.
Runner-up is ddns-scripts with 7 files.
This makes a second run of make package/luci/compile go from
real 16.40s; user 17.42s; sys 2.73s
to
real 10.71s; user 9.51s; sys 1.27s
There is a caveat though: if one were to remove the ABI_VERSION of a
package that ends in a digit [0-9], then the old package ipk will not be
removed from the bin directory by make package/abc2/clean.
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Diffstat (limited to 'include/package-ipkg.mk')
-rw-r--r-- | include/package-ipkg.mk | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index 7fc0f86124..622cbf3223 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -18,20 +18,16 @@ IPKG_REMOVE:= \ IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg -# 1: command and initial arguments -# 2: arguments list -# 3: tmp filename -define maybe_use_xargs - $(if $(word 512,$(2)), \ - $(file >$(3),$(2)) $(XARGS) $(1) < "$(3)"; rm "$(3)", \ - $(1) $(2)) +# Generates a make statement to return a wildcard for candidate ipkg files +# 1: package name +define gen_ipkg_wildcard + $(1)$$(if $$(filter -%,$$(ABIV_$(1))),,[^a-z-])* endef # 1: package name # 2: candidate ipk files define remove_ipkg_files - $(if $(strip $(2)), \ - $(call maybe_use_xargs,$(IPKG_REMOVE) $(1),$(2),$(TMP_DIR)/$(1).in)) + $(if $(strip $(2)),$(IPKG_REMOVE) $(1) $(2)) endef # 1: package name @@ -201,7 +197,8 @@ $(_endef) $$(IPKG_$(1)) : export DESCRIPTION=$$(Package/$(1)/description) $$(IPKG_$(1)) : export PATH=$$(TARGET_PATH_PKG) $(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,$(1)*)) + @rm -rf $$(IDIR_$(1)); \ + $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1)))) mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR) $(call Package/$(1)/install,$$(IDIR_$(1))) $(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay) @@ -269,7 +266,7 @@ $(_endef) @[ -f $$(IPKG_$(1)) ] $(1)-clean: - $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(1)*)) + $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1)))) clean: $(1)-clean |