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>
This commit is contained in:
parent
40acc13ca7
commit
78d1f3ac61
@ -18,10 +18,20 @@ IPKG_REMOVE:= \
|
|||||||
|
|
||||||
IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg
|
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
|
# 1: package name
|
||||||
# 2: candidate ipk files
|
# 2: candidate ipk files
|
||||||
define remove_ipkg_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
|
endef
|
||||||
|
|
||||||
# 1: package name
|
# 1: package name
|
||||||
|
Loading…
Reference in New Issue
Block a user