All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 2/6] boot/uboot: support building U-Boot with Python 3.x
Date: Sun, 3 May 2020 10:02:31 +0200	[thread overview]
Message-ID: <20200503080231.GV15673@scaer> (raw)
In-Reply-To: <20200502212812.51219-3-thomas.petazzoni@bootlin.com>

Thomas, All,

On 2020-05-02 23:28 +0200, Thomas Petazzoni spake thusly:
> U-Boot versions newer than 2020.01 use Python 3.x instead of Python
> 2.x in various scripts.
> 
> We already had the BR2_TARGET_UBOOT_NEEDS_PYLIBFDT and
> BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS options, but depending on the U-Boot
> version, we now need to indicate if Python 2.x or Python 3.x should be
> used.
> 
> In addition, it turns out that some U-Boot configurations need a
> Python interpreter, without needing pylibfdt or pyelftools. Some of
> our defconfigs were abusing the BR2_TARGET_UBOOT_NEEDS_PYLIBFDT option
> to make sure a Python interpreter was built.
> 
> To solve both issues, we add a new option
> BR2_TARGET_UBOOT_NEEDS_PYTHON, which itself has a choice to choose
> between Python 2.x and Python 3.x. It defaults to Python 2.x to
> preserve backward compatibility.
> 
> The existing BR2_TARGET_UBOOT_NEEDS_PYLIBFDT and
> BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS options select
> BR2_TARGET_UBOOT_NEEDS_PYTHON.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
>  boot/uboot/Config.in | 29 +++++++++++++++++++++++++++++
>  boot/uboot/uboot.mk  | 12 +++++++++++-
>  2 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
> index 7a6f5053fd..e10166a113 100644
> --- a/boot/uboot/Config.in
> +++ b/boot/uboot/Config.in
> @@ -147,14 +147,43 @@ config BR2_TARGET_UBOOT_NEEDS_DTC
>  	  Select this option if your U-Boot board configuration
>  	  requires the Device Tree compiler to be available.
>  
> +config BR2_TARGET_UBOOT_NEEDS_PYTHON
> +	bool "U-Boot needs host Python"
> +
> +if BR2_TARGET_UBOOT_NEEDS_PYTHON
> +
> +choice
> +	prompt "Python version"
> +	default BR2_TARGET_UBOOT_NEEDS_PYTHON2
> +
> +config BR2_TARGET_UBOOT_NEEDS_PYTHON2
> +	bool "python 2.x"
> +	help
> +	  Select this option if U-Boot needs a host Python 2.x
> +	  interpreter. This is the case for some U-Boot
> +	  configurations, prior to U-Boot 2020.01.
> +
> +config BR2_TARGET_UBOOT_NEEDS_PYTHON3
> +	bool "python 3.x"
> +	help
> +	  Select this option if U-Boot needs a host Python 3.x
> +	  interpreter. This is the case for some U-Boot
> +	  configurations, after U-Boot 2020.01.
> +
> +endchoice

I don't like it much that construct, where a boolean hides a choice.
Instead, we can siumply use a choice (options names abbreviated as I'm
lazy to type them full):

    choice
        "Python support needed"

    config UBOOT_PY_NONE
        "none"

    config UBOOT_PY2
        "python2"

    config UBOOT_PY3
        "python3"

    endchoice

> +endif
> +
>  config BR2_TARGET_UBOOT_NEEDS_PYLIBFDT
>  	bool "U-Boot needs pylibfdt"
> +	select BR2_TARGET_UBOOT_NEEDS_PYTHON
>  	help
>  	  Select this option if your U-Boot board configuration
>  	  requires the Python libfdt library to be available.
>  
>  config BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS
>  	bool "U-Boot needs pyelftools"
> +	select BR2_TARGET_UBOOT_NEEDS_PYTHON

Of course here (both pylibfdt and pyelftools), you'd have to switch to a
depends-on, but that does not change much afterall.

Regards,
Yann E. MORIN.

>  	help
>  	  Select this option if your U-Boot board configuration
>  	  requires the Python pyelftools library to be available.
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index 7bd9cbae52..1d50e72846 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -159,12 +159,22 @@ ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y)
>  UBOOT_DEPENDENCIES += host-dtc
>  endif
>  
> +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON2),y)
> +UBOOT_DEPENDENCIES += host-python
> +else ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON3),y)
> +UBOOT_DEPENDENCIES += host-python3
> +endif
> +
>  ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYLIBFDT),y)
> -UBOOT_DEPENDENCIES += host-python host-swig
> +UBOOT_DEPENDENCIES += host-swig
>  endif
>  
>  ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS),y)
> +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON2),y)
>  UBOOT_DEPENDENCIES += host-python-pyelftools
> +else ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON3),y)
> +UBOOT_DEPENDENCIES += host-python3-pyelftools
> +endif
>  endif
>  
>  ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSSL),y)
> -- 
> 2.26.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2020-05-03  8:02 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-02 21:28 [Buildroot] [PATCH 0/6] Support Python 3.x in U-Boot Thomas Petazzoni
2020-05-02 21:28 ` [Buildroot] [PATCH 1/6] package/python3-pyelftools: new package Thomas Petazzoni
2020-05-02 21:28 ` [Buildroot] [PATCH 2/6] boot/uboot: support building U-Boot with Python 3.x Thomas Petazzoni
2020-05-03  8:02   ` Yann E. MORIN [this message]
2020-05-03 13:12     ` Thomas Petazzoni
2020-05-09 21:45       ` Yann E. MORIN
2020-05-02 21:28 ` [Buildroot] [PATCH 3/6] configs/olimex_a20_olinuxino_lime{, 2}: use " Thomas Petazzoni
2020-05-02 21:28 ` [Buildroot] [PATCH 4/6] configs/beelink_gs1: " Thomas Petazzoni
2020-05-02 21:58   ` Clément Péron
2020-05-02 21:28 ` [Buildroot] [PATCH 5/6] configs/roc_pc_rk3399: fix U-Boot dependencies Thomas Petazzoni
2020-05-02 21:28 ` [Buildroot] [PATCH 6/6] configs/nanopi_neo4: " Thomas Petazzoni
2020-05-15 21:05 ` [Buildroot] [PATCH 0/6] Support Python 3.x in U-Boot Yann E. MORIN
2020-05-17 17:43   ` Clément Péron

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=20200503080231.GV15673@scaer \
    --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.