[U-Boot] [PATCH v3] Makefile: honor PYTHON configuration properly

Jonathan Gray jsg at jsg.id.au
Mon Aug 14 15:35:23 UTC 2017


On Mon, Aug 14, 2017 at 08:59:11AM +0200, Cl??ment B??sch wrote:
> On some systems `python` is `python3` (for instance, Archlinux). The
> `PYTHON` variable can be used to point to `python2` to have a successful
> build.
> 
> The use of `PYTHON` is currently limited in the Makefile and needs to be
> extended in other places:
> 
> First, pylibfdt is required to be a Python 2 binding (binman imports
> pylibfdt and is only compatible Python 2), so its setup.py needs to be
> called accordingly. An alternative would be to change the libfdt
> setup.py shebang to python2, but the binding is actually portable. Also,
> it would break on system where there is no such thing as `python2`.
> 
> Secondly, the libfdt import checks need to be done against Python 2 as
> well since the Python 2 compiled modules (in this case _libdft.so) can
> not be imported from Python 3.
> 
> Note on the libfdt imports: "@if ! PYTHONPATH=tools $(PYTHON) -c 'import
> libfdt'; then..." is probably simpler than the currently sub-optimal
> pipe.

Reviewed-by: Jonathan Gray <jsg at jsg.id.au>

This is also helpful for OpenBSD where python 2 is not 'python' or
'python2' but rather 'python2.7'.

> ---
>  Makefile             | 2 +-
>  scripts/Makefile.spl | 2 +-
>  tools/Makefile       | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 50a002e72f..1f70144e0a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1378,7 +1378,7 @@ $(timestamp_h): $(srctree)/Makefile FORCE
>  	$(call filechk,timestamp.h)
>  
>  checkbinman: tools
> -	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools python )); then \
> +	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
>  		echo >&2; \
>  		echo >&2 '*** binman needs the Python libfdt library.'; \
>  		echo >&2 '*** Either install it on your system, or try:'; \
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index ac3c2c7f13..c47248cc57 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -356,7 +356,7 @@ ifneq ($(cmd_files),)
>  endif
>  
>  checkdtoc: tools
> -	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools python )); then \
> +	@if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
>  		echo '*** dtoc needs the Python libfdt library. Either '; \
>  		echo '*** install it on your system, or try:'; \
>  		echo '***'; \
> diff --git a/tools/Makefile b/tools/Makefile
> index 0743677dc8..1940cdad1f 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -138,7 +138,7 @@ tools/_libfdt.so: $(LIBFDT_SRCS) $(LIBFDT_SWIG)
>  		CPPFLAGS="$(_hostc_flags)" OBJDIR=tools \
>  		SOURCES="$(LIBFDT_SRCS) tools/libfdt.i" \
>  		SWIG_OPTS="-I$(srctree)/lib/libfdt -I$(srctree)/lib" \
> -		$(libfdt_tree)/pylibfdt/setup.py --quiet build_ext \
> +		$(PYTHON) $(libfdt_tree)/pylibfdt/setup.py build_ext \
>  			--build-lib tools
>  
>  ifneq ($(CONFIG_MX23)$(CONFIG_MX28),)
> -- 
> 2.14.1
> 


More information about the U-Boot mailing list