core/printvars: allow dumping a set of variables
PATCH 1/1 core/printvars: allow dumping a set of variables
Dumping our 176164 variables can take quite some time (~12s here). What takes the most time is sorting the variables (~9s), followed by the parsing of our Makefiles (~3s), with the actual printing in the noise.
However, sometimes only one or a few variables are needed. For example, one may want to retrieve the Linux build dir from a post-build hook (to get the Linux' actual .config after our fixups and check for various features).
Add the possibility to only dump the variables listed in $(VAR) which must be passed as a make argument, like so:
$ make -s printvars VARS="LINUX_DIR TOPDIR O"
LINUX_DIR=/home/ymorin/dev/buildroot/O/build/linux-4.3 ($(BUILD_DIR)/$(LINUX_BASE_NAME))
O=/home/ymorin/dev/buildroot/O/. (/home/ymorin/dev/buildroot/O/.)
TOPDIR=/home/ymorin/dev/buildroot/buildroot (/home/ymorin/dev/buildroot/buildroot)This is much faster (the time is just about the time it takes to parse our Makefiles, 3s here) and easier to parse.
--- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Makefile +2 -1
@@ -832,9 +832,10 @@ ifeq ($(NEED_WRAPPER),y) endif # printvars prints all the variables currently defined in our Makefiles +# or only the variables specified in $(VARS) printvars: @$(foreach V, \ - $(sort $(.VARIABLES)), \ + $(sort $(if $(VARS),$(VARS),$(.VARIABLES))), \ $(if $(filter-out environment% default automatic, \ $(origin $V)), \ $(info $V=$($V) ($(value $V)))))
Signature · 1 line
1.9.1
PATCH 1/1 core/printvars: allow dumping a set of variables
Dear Yann E. MORIN,
Quoted 17 lines · Yann E. MORIN
Dumping our 176164 variables can take quite some time (~12s here). What takes the most time is sorting the variables (~9s), followed by the parsing of our Makefiles (~3s), with the actual printing in the noise.
However, sometimes only one or a few variables are needed. For example, one may want to retrieve the Linux build dir from a post-build hook (to get the Linux' actual .config after our fixups and check for various features).
Add the possibility to only dump the variables listed in $(VAR) which must be passed as a make argument, like so:
$ make -s printvars VARS="LINUX_DIR TOPDIR O" LINUX_DIR=/home/ymorin/dev/buildroot/O/build/linux-4.3 ($(BUILD_DIR)/$(LINUX_BASE_NAME)) O=/home/ymorin/dev/buildroot/O/. (/home/ymorin/dev/buildroot/O/.) TOPDIR=/home/ymorin/dev/buildroot/buildroot (/home/ymorin/dev/buildroot/buildroot)
Quoted 4 lines
This is much faster (the time is just about the time it takes to parse our Makefiles, 3s here) and easier to parse.
Signed-off-by "Yann E. MORIN" <[email protected]>
I haven't thought about the implementation, but it possible to support wildcards, like LIBFOO_* or LIBFOO_% ?
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 core/printvars: allow dumping a set of variables
Thomas, All,
On 2015-11-04 21:45 +0100, Thomas Petazzoni spake thusly:
Quoted 18 lines · Yann E. MORIN
Quoted 17 lines
Dumping our 176164 variables can take quite some time (~12s here). What takes the most time is sorting the variables (~9s), followed by the parsing of our Makefiles (~3s), with the actual printing in the noise.
However, sometimes only one or a few variables are needed. For example, one may want to retrieve the Linux build dir from a post-build hook (to get the Linux' actual .config after our fixups and check for various features).
Add the possibility to only dump the variables listed in $(VAR) which must be passed as a make argument, like so:
$ make -s printvars VARS="LINUX_DIR TOPDIR O" LINUX_DIR=/home/ymorin/dev/buildroot/O/build/linux-4.3 ($(BUILD_DIR)/$(LINUX_BASE_NAME)) O=/home/ymorin/dev/buildroot/O/. (/home/ymorin/dev/buildroot/O/.) TOPDIR=/home/ymorin/dev/buildroot/buildroot (/home/ymorin/dev/buildroot/buildroot)
Quoted 7 lines
Quoted 4 lines
This is much faster (the time is just about the time it takes to parse our Makefiles, 3s here) and easier to parse.
Signed-off-by "Yann E. MORIN" <[email protected]>I haven't thought about the implementation, but it possible to support wildcards, like LIBFOO_* or LIBFOO_% ?
I'll look at it...
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 1/1 core/printvars: allow dumping a set of variables
In reply to Yann E. MORINQuoted 17 lines · Yann E. MORIN
Dumping our 176164 variables can take quite some time (~12s here). What takes the most time is sorting the variables (~9s), followed by the parsing of our Makefiles (~3s), with the actual printing in the noise.
However, sometimes only one or a few variables are needed. For example, one may want to retrieve the Linux build dir from a post-build hook (to get the Linux' actual .config after our fixups and check for various features).
Add the possibility to only dump the variables listed in $(VAR) which must be passed as a make argument, like so:
$ make -s printvars VARS="LINUX_DIR TOPDIR O" LINUX_DIR=/home/ymorin/dev/buildroot/O/build/linux-4.3 ($(BUILD_DIR)/$(LINUX_BASE_NAME)) O=/home/ymorin/dev/buildroot/O/. (/home/ymorin/dev/buildroot/O/.) TOPDIR=/home/ymorin/dev/buildroot/buildroot (/home/ymorin/dev/buildroot/buildroot)
Quoted 4 lines
This is much faster (the time is just about the time it takes to parse our Makefiles, 3s here) and easier to parse.
Signed-off-by "Yann E. MORIN" <[email protected]>
I was going to say you forgot to update the documentation, but there isn't any...
Regards,
Arnout
Quoted 21 lines
--- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)Makefile +2
-1@@ -832,9 +832,10 @@ ifeq ($(NEED_WRAPPER),y) endif # printvars prints all the variables currently defined in our Makefiles +# or only the variables specified in $(VARS) printvars: @$(foreach V, \ - $(sort $(.VARIABLES)), \ + $(sort $(if $(VARS),$(VARS),$(.VARIABLES))), \ $(if $(filter-out environment% default automatic, \ $(origin $V)), \ $(info $V=$($V) ($(value $V)))))
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF