lkml.org 
[lkml]   [2018]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 06/14] kbuild: define PYTHON2 and PYTHON3 variables instead of PYTHON
    2018-02-06 18:34 GMT+09:00 Greg Kroah-Hartman <gregkh@linuxfoundation.org>:
    > On Tue, Feb 06, 2018 at 09:34:46AM +0900, Masahiro Yamada wrote:
    >> 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 system.
    >>
    >> 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 my new scripts written in Python 3.
    >>
    >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    >> ---
    >>
    >> Makefile | 5 +++--
    >> arch/ia64/Makefile | 2 +-
    >> 2 files changed, 4 insertions(+), 3 deletions(-)
    >>
    >> diff --git a/Makefile b/Makefile
    >> index 11aff0f..c4e935c 100644
    >> --- a/Makefile
    >> +++ b/Makefile
    >> @@ -384,7 +384,8 @@ GENKSYMS = scripts/genksyms/genksyms
    >> INSTALLKERNEL := installkernel
    >> DEPMOD = /sbin/depmod
    >> PERL = perl
    >> -PYTHON = python
    >> +PYTHON2 = python2
    >> +PYTHON3 = python3
    >
    > Is this going to break any systems that were previous setting PYTHON?
    >
    > I like this change, and feel it is the correct thing to do, but having a
    > "fallback" might be needed here.
    >
    > Could you do what the perf makefile does and do something like:
    > override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON2))
    > or is it really not an issue as only ia64 seems to care about this?
    >

    As far as I see, ia64 is the only instance that has used this ever.

    (the perf Makefile defines PYTHON by itself, so should not be a problem.)


    If people expect the backward-compatibility for this, I can do like follows:

    # backward compatibility for 'PYTHON'
    PYTHON2 := $(if $(PYTHON), $(PYTHON), python2)



    Another (unlikely) possible breakage is
    'python2' may not be installed on users' system.

    I believe this is rare, but if needed, I could do like follows
    at the cost of ugliness.


    PYTHON2 := $(if $(PYTHON), $(PYTHON), \
    $(shell python2 --version 2>/dev/null && echo python2 || echo python))



    --
    Best Regards
    Masahiro Yamada

    \
     
     \ /
      Last update: 2018-02-06 11:46    [W:2.671 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site