Makefile: honor PYTHON configuration properly
authorClément Bœsch <u@pkh.me>
Mon, 14 Aug 2017 06:59:11 +0000 (08:59 +0200)
committerTom Rini <trini@konsulko.com>
Sun, 20 Aug 2017 13:53:13 +0000 (09:53 -0400)
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@jsg.id.au>
Makefile
scripts/Makefile.spl
tools/Makefile

index 2fc4616bb67ed1b63b09dbca3d77acb4cf80f734..a0f3bfd2a52f5c4e7e52befe789406590e79efcb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1379,7 +1379,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:'; \
index 3ba00077d34a91cab9ead3ebc3f4082ce287d5f5..dd8065d87d0608113ac338cca94046f967eaae28 100644 (file)
@@ -369,7 +369,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 '***'; \
index a1790ebd59b24c4d6d18d66e0b082e17063e1fc4..086c533eff0f019d433ffba529d4baf878fd0717 100644 (file)
@@ -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),)