From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 10/16 v3] core: introduce per br2-external ID
Date: Sat, 27 Aug 2016 23:59:51 +0200 [thread overview]
Message-ID: <20160827215951.GJ5755@free.fr> (raw)
In-Reply-To: <4bce70e5-7e9a-ef8b-6dc8-dbe2356df194@mind.be>
Arnout, All,
On 2016-08-27 23:49 +0200, Arnout Vandecappelle spake thusly:
> I guess you're about to send a v3 so I'll try to still do a quick review of the
> remaining things.
Not really "about" to. But I will, yes.
Thanks! :-)
> On 17-07-16 12:34, Yann E. MORIN wrote:
> > This unique ID is used to construct a per br2-external tree variable,
> > BR2_EXTERNAL_$(ID), which contains the path to the br2-external tree.
> >
> > This variable is available both from Kconfig (set in the Kconfig
> > snippet) and from the .mk files.
> >
> > Also, display the BR2_EXTERNAL_$(ID) and its path as a comment in the
> > menuconfig.
> >
> > This will ultimately allow us to support multiple br2-external trees at
> > once, with that ID (and thus BR2_EXTERNAL_$(ID)) uniquely defining which
> > br2-external tree is being used.
> >
> > Note: since the variables in the Makefile and in Kconfig are named the
> > same, the one we computed early on (second hunk) will be overridden by
> > the one in .config when we have it. Thus, even though they are set to
> > the same raw value, the one from .config is quoted and, being included
> > later in the Makefile, will take precedence, so we must un-quote it
> > before we include the br2-external's makefile (third hunk). That's
> > unfortunate, but there is no easy way around that as we want the two
> > variables to be named the same in Makefile and Kconfig (and we can't
> > ask the user to un-quote that variable himself either), hence the
> > little dirty trick.
> >
> > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > Cc: Peter Korsgaard <jacmet@uclibc.org>
> > Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
> > Cc: Arnout Vandecappelle <arnout@mind.be>
> > ---
> > Makefile | 22 +++++++++++++++++++++-
> > 1 file changed, 21 insertions(+), 1 deletion(-)
> >
> > diff --git a/Makefile b/Makefile
> > index be2f586..72b55cb 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -148,6 +148,9 @@ $(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
> > #
> > # When BR2_EXTERNAL is set to an empty value (e.g. explicitly in command
> > # line), the .br-external file is removed.
> > +#
> > +# If the br2-external tree defines its ID, then export the path in the
> > +# BR2_EXTERNAL_$(ID) variable.
>
> I agree with Thomas that NAME is better than ID.
>
> The name can be anything, including, for example, MK - which would create a
> conflict with BR2_EXTERNAL_MK. Therefore I think there should be an additional
> prefix, e.g. BR2_EXTERNAL_DIR_$(NAME).
OK, will see to it.
> > BR2_EXTERNAL_FILE = $(BASE_DIR)/.br-external
> > -include $(BR2_EXTERNAL_FILE)
> > @@ -160,6 +163,13 @@ else
> > endif
> > override BR2_EXTERNAL := $(_BR2_EXTERNAL)
> > $(shell echo BR2_EXTERNAL ?= $(BR2_EXTERNAL) > $(BR2_EXTERNAL_FILE))
> > + ifneq ($(wildcard $(BR2_EXTERNAL)/external.id),)
> > + BR2_EXTERNAL_ID := $(shell cat $(BR2_EXTERNAL)/external.id 2>/dev/null)
>
> BR2_EXTERNAL_ID is an internal variable, so it should be EXTERNAL_NAME I think.
> Admittedly many of the currently existing BR2_EXTERNAL variables wrongly have
> the BR2 prefix, but let's not make it worse :-)
OK, fair enough. Will see to it.
> > + ifeq ($(BR2_EXTERNAL_ID),)
> > + $(error $(BR2_EXTERNAL) has no ID (in file 'external.id'))
> > + endif
> > + BR2_EXTERNAL_$(BR2_EXTERNAL_ID) = $(BR2_EXTERNAL)
> > + endif
> > BR2_EXTERNAL_MK = $(BR2_EXTERNAL)/external.mk
> > endif
> >
> > @@ -457,6 +467,10 @@ include boot/common.mk
> > include linux/linux.mk
> > include fs/common.mk
> >
> > +# If the br2-external tree defines its ID, then the BR2_EXTERNAL_$(ID)
> > +# variable is also present in .config, so it is quoted. We must unquote
> > +# it before feeding it to the br2-external makefile.
> > +BR2_EXTERNAL_$(BR2_EXTERNAL_ID) := $(call qstrip,$(BR2_EXTERNAL_$(BR2_EXTERNAL_ID)))
> > # Nothing to include if no BR2_EXTERNAL tree in use
> > include $(BR2_EXTERNAL_MK)
> >
> > @@ -882,7 +896,13 @@ $(BUILD_DIR)/.br2-external.in: $(BUILD_DIR)
> > $(Q)if [ -n '$(BR2_EXTERNAL)' ]; then \
> > printf "#\n# Automatically generated file; DO NOT EDIT.\n#\n\n"; \
> > printf 'menu "User-provided options"\n\n'; \
> > - printf 'source "%s/Config.in"\n\n' $$(cd $(BR2_EXTERNAL) >/dev/null 2>&1 && pwd); \
> > + if [ -z "$(BR2_EXTERNAL_ID)" ]; then \
> > + printf 'source "%s/Config.in"\n\n' $$(cd $(BR2_EXTERNAL) >/dev/null 2>&1 && pwd); \
> > + else \
> > + printf 'config BR2_EXTERNAL_%s\n' $(BR2_EXTERNAL_ID); \
> > + printf '\tstring\n\tdefault "%s"\n\n' $(BR2_EXTERNAL_$(BR2_EXTERNAL_ID)); \
>
> Why is this config still needed? It was there before because that's the only
> way to use it in the 'source' statement, but now that we generate the external
> Config.in, I don't think it's needed anymore. Which also removes the need for
> the unquoting.
Hmmm.. As far as I can see, it is still needed, because the Config.in
files in the br2-external tree may want to include other Config.in
files, no?
Like for example (with the variable renamed as per above):
.../ext-tree/Config.in
source "$BR2_EXTERNAL_DIR_FOO/package/pkg-1/Config.in"
source "$BR2_EXTERNAL_DIR_FOO/package/pkg-2/Config.in"
So it is stil needed to have the path to each br2-external paths from
Kconfig.
Unless I missed something?
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| 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. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2016-08-27 21:59 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-17 10:34 [Buildroot] [PATCH 00/16 v3] br2-external: support multiple trees at once (branch yem/multi-br2-external-ID-7) Yann E. MORIN
2016-07-17 10:34 ` [Buildroot] [PATCH 01/16 v3] core: move pkg-utils.mk to support/ Yann E. MORIN
2016-07-24 20:43 ` Romain Naour
2016-08-27 14:11 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 02/16 v3] core: commonalise the bundled and br2-external %_defconfig rules Yann E. MORIN
2016-07-30 20:48 ` Romain Naour
2016-08-27 14:12 ` Thomas Petazzoni
2016-08-27 14:16 ` Yann E. MORIN
2016-08-27 17:10 ` Arnout Vandecappelle
2016-07-17 10:34 ` [Buildroot] [PATCH 03/16 v3] doc/asciidoc: add possibility to define document dependencies Yann E. MORIN
2016-08-06 15:02 ` Romain Naour
2016-08-27 14:14 ` Thomas Petazzoni
2016-08-27 14:42 ` Yann E. MORIN
2016-08-27 19:58 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 04/16 v3] core: introduce an intermediate rule before the configurators Yann E. MORIN
2016-08-06 15:13 ` Romain Naour
2016-08-27 14:47 ` Yann E. MORIN
2016-08-27 19:39 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 05/16 v3] core: move rule to create basic directories Yann E. MORIN
2016-08-06 15:16 ` Romain Naour
2016-08-27 14:14 ` Thomas Petazzoni
2016-08-27 14:34 ` Yann E. MORIN
2016-08-27 19:41 ` Thomas Petazzoni
2016-08-27 22:07 ` Yann E. MORIN
2016-07-17 10:34 ` [Buildroot] [PATCH 06/16 v3] core: introduce a generated kconfig snippet Yann E. MORIN
2016-08-06 15:18 ` Romain Naour
2016-08-27 14:16 ` Thomas Petazzoni
2016-08-27 15:01 ` Yann E. MORIN
2016-08-28 20:50 ` Peter Korsgaard
2016-08-29 7:19 ` Thomas Petazzoni
2016-08-29 7:50 ` Peter Korsgaard
2016-08-29 10:02 ` Thomas Petazzoni
2016-08-29 22:14 ` Arnout Vandecappelle
2016-08-29 22:25 ` Yann E. MORIN
2016-08-29 22:16 ` Yann E. MORIN
2016-08-29 22:46 ` Arnout Vandecappelle
2016-08-30 9:00 ` Yann E. MORIN
2016-08-30 9:40 ` Peter Korsgaard
2016-08-30 20:01 ` Arnout Vandecappelle
2016-09-01 17:52 ` Yann E. MORIN
2016-09-01 18:57 ` Peter Korsgaard
2016-09-01 21:30 ` Arnout Vandecappelle
2016-09-01 21:51 ` Peter Korsgaard
2016-08-27 19:46 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 07/16 v3] docs/manual: prepare-config can be used as a dependency of documents Yann E. MORIN
2016-08-06 15:19 ` Romain Naour
2016-08-27 19:58 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 08/16 v3] core: do not hard-code inclusion of br2-external in Kconfig Yann E. MORIN
2016-08-06 15:21 ` Romain Naour
2016-08-27 20:00 ` Thomas Petazzoni
2016-08-27 22:14 ` Yann E. MORIN
2016-07-17 10:34 ` [Buildroot] [PATCH 09/16 v3] core: get rid of our dummy br2-external tree Yann E. MORIN
2016-08-06 15:30 ` Romain Naour
2016-08-06 15:37 ` Yann E. MORIN
2016-07-17 10:34 ` [Buildroot] [PATCH 10/16 v3] core: introduce per br2-external ID Yann E. MORIN
2016-08-06 15:41 ` Romain Naour
2016-08-27 20:10 ` Thomas Petazzoni
2016-08-27 22:15 ` Yann E. MORIN
2016-08-27 21:49 ` Arnout Vandecappelle
2016-08-27 21:59 ` Yann E. MORIN [this message]
2016-08-28 10:48 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 11/16 v3] docs/manual: document the " Yann E. MORIN
2016-08-06 15:48 ` Romain Naour
2016-08-27 15:05 ` Yann E. MORIN
2016-08-27 20:13 ` Thomas Petazzoni
2016-08-27 22:19 ` Yann E. MORIN
2016-08-30 20:36 ` Arnout Vandecappelle
2016-07-17 10:34 ` [Buildroot] [PATCH 12/16 v3] core: handle .br-external in a make rule Yann E. MORIN
2016-07-24 20:05 ` Romain Naour
2016-07-25 21:13 ` Yann E. MORIN
2016-08-27 15:51 ` Yann E. MORIN
2016-08-27 20:16 ` Thomas Petazzoni
2016-08-27 22:22 ` Yann E. MORIN
2016-08-28 10:49 ` Thomas Petazzoni
2016-07-17 10:34 ` [Buildroot] [PATCH 13/16 v3] core: add support for multiple br2-external trees Yann E. MORIN
2016-07-24 20:25 ` Romain Naour
2016-07-25 21:25 ` Yann E. MORIN
2016-08-27 20:20 ` Thomas Petazzoni
2016-08-29 22:11 ` Yann E. MORIN
2016-07-17 10:34 ` [Buildroot] [PATCH 14/16 v3] support/scripts: teach gen-manual-lists about BR2_EXTERNAL Yann E. MORIN
2016-08-06 15:59 ` Romain Naour
2016-07-17 10:34 ` [Buildroot] [PATCH 15/16 v3] docs/manual: include packages from BR2_EXTERNAL if set Yann E. MORIN
2016-08-06 16:07 ` Romain Naour
2016-07-17 10:34 ` [Buildroot] [PATCH 16/16 v3] docs/manual: document multi br2-external Yann E. MORIN
2016-08-06 16:15 ` Romain Naour
2016-08-30 21:37 ` [Buildroot] [PATCH 00/16 v3] br2-external: support multiple trees at once (branch yem/multi-br2-external-ID-7) Arnout Vandecappelle
2016-08-31 6:15 ` Peter Korsgaard
2016-08-31 7:14 ` Thomas Petazzoni
2016-08-31 9:26 ` Yann E. MORIN
2016-09-01 21:43 ` Arnout Vandecappelle
2016-09-01 21:46 ` Yann E. MORIN
2016-09-01 22:04 ` Arnout Vandecappelle
2016-09-04 18:42 ` Peter Korsgaard
2016-09-04 21:14 ` Yann E. MORIN
2016-09-05 10:31 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160827215951.GJ5755@free.fr \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.