[Buildroot] [PATCH 10/10] infra: introduce top-level, global show-info

Arnout Vandecappelle arnout at mind.be
Sat Apr 13 09:08:21 UTC 2019



On 07/04/2019 13:51, Yann E. MORIN wrote:
> Now that packages and filesystems can report their recursive info, use
> that to dump the whole info as a valid JSOn array.
> 
> As it is rather complex to ensure soemthing is run before every rules
> (to display the eldin opening '[' so as to have a valid JSON array),
> re-enter the Makefile and mangle the output with a sed expression, that:
> 
>   - 0,/^/s//[\n/;   inserts a '[' before the first line,
>   - $!s/$/,/;       appends a ',' at the end of every lines but the last,
>   - $s/$/\n]/       appends a ']' after the last line.
> 
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Cc: Thomas De Schampheleire <patrickdepinguin at gmail.com>
> Cc: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> Cc: Arnout Vandecappelle <arnout at mind.be>
> ---
>  Makefile | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/Makefile b/Makefile
> index 60bf7d7d08..13c4390ae4 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -876,6 +876,12 @@ graph-depends-requirements:
>  	@dot -? >/dev/null 2>&1 || \
>  		{ echo "ERROR: The 'dot' program from Graphviz is needed for graph-depends" >&2; exit 1; }
>  
> +.PHONY: show-info _show-info-private
> +show-info:
> +	@$(MAKE) -C $(CONFIG_DIR) _show-info-private |sed -r -e '0,/^/s//[\n/; $$!s/$$/,/; $$s/$$/\n]/'

 This would be so much simpler as $(subst }$(sep){,}$(comma)$(sep){,...) but
then of course you need to recurse through $(shell) instead of calling MAKE
directly, which makes it very ugly again...

 But of course, I would prefer this to be one big call:

ALL_PACKAGES = $(sort $(foreach pkg,$(PACKAGES) $(TARGETS_ROOTFS),\
	$($(call UPPERCASE,$(pkg))_FINAL_RECURSIVE_DEPENDENCIES)))

show-info:
	@:
	@$(info $(subst }$(sep){,}$(comma)$(sep){,\
		$(foreach pkg,$(ALL_PACKAGES),\
			$(call show-info,$(pkg),$(call UPPERCASE $(pkg))))))

> +_show-info-private: $(patsubst %,%-show-recursive-info,$(PACKAGES) $(TARGETS_ROOTFS))
> +	@:

 Why do you need an actual command for this rule? A dependency-only rule would
be OK, no?

 Regards,
 Arnout

> +
>  .PHONY: show-dependency-tree
>  show-dependency-tree: $(patsubst %,%-show-dependency-tree,$(PACKAGES) $(TARGETS_ROOTFS))
>  	@:
> 


More information about the buildroot mailing list