summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrent Piepho <tpiepho@impinj.com>2018-09-17 11:10:54 -0700
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>2018-09-18 22:03:23 +0200
commitb8d0aadc6d52733cfc914ba3cd6f506238bd19f7 (patch)
tree52cd815256c6a7f550049144248f785f59d15073
parentca5ae83ccb7237e00d47cb4251ad2735012ae786 (diff)
downloadbuildroot-b8d0aadc6d52733cfc914ba3cd6f506238bd19f7.tar.gz
buildroot-b8d0aadc6d52733cfc914ba3cd6f506238bd19f7.zip
Makefile: fix issue with printvars executing giant shell command
The underlying problem is that $(foreach V,1 2 3,) does not evaluate to an empty string. It evaluates to "  ", three empty strings separated by whitespace. A construct of this format, with a giant list in the foreach, is part of the printvars command. This means that "@:$(foreach ....)", which is intended to expand to a null command, in fact expands to "@: " with a great deal of whitespace. Make chooses to execute this command with: execve("/bin/sh", ["/bin/sh", "-c", ": "] But with far more whitespace. So much that it can exceed shell command line length limits. This solution is to move the foreach to another step in the recipe. The "@:" is retained as the first line so the recipe is not Empty, which would cause a change in make behavior when make builds the target. The 2nd line, all whitespace, will be skipped by make. Signed-off-by: Trent Piepho <tpiepho@impinj.com> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-rw-r--r--Makefile3
1 files changed, 2 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 2c6af12989..57e776056c 100644
--- a/Makefile
+++ b/Makefile
@@ -988,7 +988,8 @@ $(BUILD_DIR)/.br2-external.in: $(BUILD_DIR)
# displayed.
.PHONY: printvars
printvars:
- @:$(foreach V, \
+ @:
+ $(foreach V, \
$(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \
$(if $(filter-out environment% default automatic, \
$(origin $V)), \
OpenPOWER on IntegriCloud