[v2,01/11] kbuild: define PYTHON2 and PYTHON3 variables instead of PYTHON

Message ID 1519965121-12017-2-git-send-email-yamada.masahiro@socionext.com
State New
Headers show
Series
  • Add Kconfig unit tests
Related show

Commit Message

Masahiro Yamada March 2, 2018, 4:31 a.m.
The variable 'PYTHON' allows users to specify a proper executable
name in case the default 'python' does not work.  However, this does
not address the case where both Python 2 and Python 3 scripts are
used in one source tree.

PEP 394 (https://www.python.org/dev/peps/pep-0394/) provides a
convention for Python scripts portability.  Here is a quotation:

  In order to tolerate differences across platforms, all new code
  that needs to invoke the Python interpreter should not specify
  'python', but rather should specify either 'python2' or 'python3'.
  This distinction should be made in shebangs, when invoking from a
  shell script, when invoking via the system() call, or when invoking
  in any other context.

arch/ia64/scripts/unwcheck.py is apparently written in Python 2, so
it should be invoked by 'python2'.

It is legitimate to use 'python' for scripts compatible with both
Python 2 and Python 3, but this is rare (at least I do not see the
case in kernel tree).  You do not need to make efforts to write your
scripts in that way.  Anyway, Python 2 will retire in 2020.

This commit is needed for new scripts written in Python 3.

For the backward compatibility for ia64, if 'PYTHON' is specified,
it is propagated to 'PYTHON2'.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

---

Changes in v2:
  - Add backward compatibility for PYTHON

 Makefile           | 5 +++--
 arch/ia64/Makefile | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

-- 
2.7.4

Comments

Luck, Tony March 6, 2018, 5:16 p.m. | #1
On Thu, Mar 1, 2018 at 8:31 PM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> arch/ia64/scripts/unwcheck.py is apparently written in Python 2, so

> it should be invoked by 'python2'.


I pushed the patch from Corentin Labbe to update this script to run with either
python2 or python3. Linus took it yesterday:

bd5edbe67794 ("ia64: convert unwcheck.py to python3")

-Tony
Masahiro Yamada March 7, 2018, 2:22 a.m. | #2
2018-03-07 2:16 GMT+09:00 Tony Luck <tony.luck@intel.com>:
> On Thu, Mar 1, 2018 at 8:31 PM, Masahiro Yamada

> <yamada.masahiro@socionext.com> wrote:

>> arch/ia64/scripts/unwcheck.py is apparently written in Python 2, so

>> it should be invoked by 'python2'.

>

> I pushed the patch from Corentin Labbe to update this script to run with either

> python2 or python3. Linus took it yesterday:

>

> bd5edbe67794 ("ia64: convert unwcheck.py to python3")

>

> -Tony


Thanks for the reminder!

Yeah, I noticed this commit yesterday.
Now, unwcheck.py seems to be compatible
with both Python 2.x and 3.x
(I have not tested it, but I understood so from the
commit log.)

I will keep 'PYTHON' and arch/ia64/Makefile as they are.

I will just add 'PYTHON2' and 'PYTHON3'.




-- 
Best Regards
Masahiro Yamada

Patch

diff --git a/Makefile b/Makefile
index 4fb97e9..ea23d9b 100644
--- a/Makefile
+++ b/Makefile
@@ -393,7 +393,8 @@  GENKSYMS	= scripts/genksyms/genksyms
 INSTALLKERNEL  := installkernel
 DEPMOD		= /sbin/depmod
 PERL		= perl
-PYTHON		= python
+PYTHON2	       := $(if $(PYTHON), $(PYTHON), python2)
+PYTHON3	       := python3
 CHECK		= sparse
 
 CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
@@ -439,7 +440,7 @@  GCC_PLUGINS_CFLAGS :=
 
 export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
 export CPP AR NM STRIP OBJCOPY OBJDUMP HOSTLDFLAGS HOST_LOADLIBES
-export MAKE LEX YACC AWK GENKSYMS INSTALLKERNEL PERL PYTHON UTS_MACHINE
+export MAKE LEX YACC AWK GENKSYMS INSTALLKERNEL PERL PYTHON2 PYTHON3 UTS_MACHINE
 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
 
 export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 2dd7f51..862a2ba 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -75,7 +75,7 @@  vmlinux.gz: vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) $@
 
 unwcheck: vmlinux
-	-$(Q)READELF=$(READELF) $(PYTHON) $(srctree)/arch/ia64/scripts/unwcheck.py $<
+	-$(Q)READELF=$(READELF) $(PYTHON2) $(srctree)/arch/ia64/scripts/unwcheck.py $<
 
 archclean:
 	$(Q)$(MAKE) $(clean)=$(boot)