aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorEneas U de Queiroz <cotequeiroz@gmail.com>2020-02-20 18:29:03 -0300
committerJo-Philipp Wich <jo@mein.io>2021-03-19 11:48:31 +0100
commit1fcd833c9afe2e990ec656ae15c6ec0386bf9fa8 (patch)
treeceb30ef81625958fad85768ffc25e83fdf62c461 /include
parent33df82be36cb44d61ab0285796e78c62fe1fe787 (diff)
downloadupstream-1fcd833c9afe2e990ec656ae15c6ec0386bf9fa8.tar.gz
upstream-1fcd833c9afe2e990ec656ae15c6ec0386bf9fa8.tar.bz2
upstream-1fcd833c9afe2e990ec656ae15c6ec0386bf9fa8.zip
build: call ipkg-remove using xargs if #args>=512
The wildcard call to clean up luci package (luci*) can pick up over 2,300 files when the full tree is built. Running make package/luci/clean or a second run of make package/luci/compile would fail with an 'Argument list too long' error. To avoid that, a maybe_use_xargs function was created that runs the command straight as usual if the number of arguments is < 512, or saves the list in a temporary file and feeds it to xargs otherwise. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com> (cherry picked from commit 78d1f3ac61b1740f2a45c40bcde0e83246308a18)
Diffstat (limited to 'include')
-rw-r--r--include/package-ipkg.mk12
1 files changed, 11 insertions, 1 deletions
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
index 00ebb9197f..cbce90a0f1 100644
--- a/include/package-ipkg.mk
+++ b/include/package-ipkg.mk
@@ -18,10 +18,20 @@ 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))
+endef
+
# 1: package name
# 2: candidate ipk files
define remove_ipkg_files
- $(if $(strip $(2)),$(IPKG_REMOVE) $(1) $(2))
+ $(if $(strip $(2)), \
+ $(call maybe_use_xargs,$(IPKG_REMOVE) $(1),$(2),$(TMP_DIR)/$(1).in))
endef
# 1: package name