diff options
| author | Eneas U de Queiroz | 2020-02-20 21:29:03 +0000 |
|---|---|---|
| committer | Jo-Philipp Wich | 2021-03-19 10:48:31 +0000 |
| commit | 1fcd833c9afe2e990ec656ae15c6ec0386bf9fa8 (patch) | |
| tree | ceb30ef81625958fad85768ffc25e83fdf62c461 | |
| parent | 33df82be36cb44d61ab0285796e78c62fe1fe787 (diff) | |
| download | openwrt-1fcd833c9afe2e990ec656ae15c6ec0386bf9fa8.tar.gz | |
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)
| -rw-r--r-- | include/package-ipkg.mk | 12 |
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 |