[Buildroot] [PATCH 00/13 v2] core: allow br2-external trees to provide resources usually in choices (branch yem/br2-ext-providers)
Yann E. MORIN
yann.morin.1998 at free.fr
Mon Jul 29 20:20:00 UTC 2019
Hello All!
Some packages, like jpeg, openssl or the external toolchains, are
presented to the user in a kconfig choice, which precludes br2-external
trees to easily provide alternatives to those.
This series prepares Buildroot to accept br2-external trees to provide
such alternatives, that are seamlessly integrated into the existing
choices.
The naive solution would be to simply add a new entry in every such
coices, like "from a br2-external tree", and let the br2-external tree
provide standard packages. However, this solution suffers frm two flaws:
- it is not very user-friendly,
- it still allows to select two or more providers for such packages,
a situation which the choice otherwise avoids.
We could have lived with that, like we do for providers of other virtual
packages that are not in a choice, but this is not so nice. And in the
end, the alternative solution, implemented in this series, see below,
will even allow us to move all virtual packages into a set of choices
(when that makes sense).
Before we can allow br2-external trees to provide them we must allow for
the kconfig variables that hold the paths to br2-external trees, to be
available through-out kconfig, not only at the end. It usually does not
matter in kconfig when a variable gets assigned a value, except when the
variable is used to source a file, at which point its value must be
known.
So, the few preparatory patches make it so that the paths are defined
early, so they are available everywhere, and makes the handling of the
internal .br-exterrnal.mk more logical and consistent.
Finally, the series introduces the possibility for br2-external trees to
provide alternatives to the three meaningful packages: external
toolchains, jpeg and openssl.
Eventually, this is documented in the manual.
In the future, we will be able to turn the GL providers into a choice.
With this new mechanism, br2-external tree will be able to expose their
GL providers, and they will appear in that choice.
Notes: we decided to go with a single do_kconfig() function in the
helper script, so the redirection is a bit disconcerting at first,
especially in the do_mk() function. The alternative would have been to
provide one funciton for each feature, and redirect the output of each
functions, like so:
do_mk >$output_mk
do_kconfig_paths >$output_paths_in
do_kconfig_menus >$output_menus_in
do_kconfig_jpeg >$output_jpeg_in
but that would have meant that each of those functions would have had to
repeat all the boilerplate:
- the comment "this is a generated file; don't edit"
- testing if there was no br2-external tree and returning if so
- the loop over all the br2_names
- the evaluation of br2_desc and br2_ext (the path)
In the end, at the expense of a bit more complexity in the redirections,
a single function was deemed nicer overall.
Changes v1 -> v2:
- push back redirection of helpers to its own patch
- expand manual changes
- reorder patches to have fixes first
Regards,
Yann E. MORIN.
The following changes since commit b254cb25b2ab89ac482abd4da91d827abfe2344e
package/zip: adjust the version to 3.0 (2019-07-29 09:26:26 +0200)
are available in the git repository at:
git://git.buildroot.org/~ymorin/git/buildroot.git
for you to fetch changes up to 7f27bb724debc80a274d44a169f1680e88509189
docs/manual: document providers from br2-external (2019-07-29 22:19:03 +0200)
----------------------------------------------------------------
Yann E. MORIN (13):
supports/scripts: declare missing local variables
support/scripts: drop help for internal helper script
core: move generated .br2-external kconfig file to $(BASE_DIR)
core: rename generated .br-external.mk file
core: simplify removal of generated br2-external files
core: generate all br2-external files in one go
core: drop now-useless prepare-kconfig rule
core: prepare for generating multiple kconfig fragments
core: split generated kconfig file
core: allow br2-external trees to provide pre-configured toolchains
core: allow br2-external trees to provide libjpeg
core: allow br2-external trees to provide opensl
docs/manual: document providers from br2-external
Config.in | 10 +-
Makefile | 41 +++----
docs/manual/customize-outside-br.txt | 91 ++++++++++++++-
package/jpeg/Config.in | 3 +
package/openssl/Config.in | 3 +
support/scripts/br2-external | 196 +++++++++++++++++----------------
toolchain/toolchain-external/Config.in | 5 +-
7 files changed, 224 insertions(+), 125 deletions(-)
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list