Re: [Fuego] Report on python3 compatibility in Fuego (was something else)

<[email protected]> Thu, 27 Oct 2022 06:10:34 +0000
Newsgroups dev.linux.lists.fuego
Message-ID <OSYPR01MB5542D772D4AD013DFD654BA2A4339@OSYPR01MB5542.jpnprd01.prod.outlook.com>
Hi Tim,

Thanks for improving the python3 compatibility problems, please see my inli=
ne comments.

Thanks,
Venkata.
=20
>-----Original Message-----
>From: Bird, Tim <[email protected]>
>Sent: 19 October 2022 23:15
>To: pyla venkata(=1B$B#T#S#I#P=1B(B TMIEC ODG Porting) <Venkata.Pyla@toshi=
ba-
>tsip.com>; [email protected]
>Cc: nakkala sireesha(=1B$B#T#S#I#P=1B(B TMIEC ODG Porting) <sireesha.nakka=
la@toshiba-
>tsip.com>; dinesh kumar(=1B$B#T#S#I#P=1B(B TMIEC ODG Porting)
><[email protected]>; hayashi kazuhiro(=1B$BNS=1B(B =1B$BOB9(=
=1B(B =1B$B""#S#W#C"~#A#C#T=1B(B)
><[email protected]>
>Subject: Report on python3 compatibility in Fuego (was something else)
>
>OK - I'm hijacking this thread to so a general report on python3 compatibi=
lity in
>Fuego.
>
>I recently completed a long stretch of work on this, and here are some not=
es
>about the work.
>
>I modified common.sh, functions.sh, and test-parser.sh to set and use PY_E=
XE I
>experimented with doing an autodetect to use python3 or python (2).
>But ultimately I decided that doing an runtime autodetect is not a good po=
licy,
>as it means that factors unrelated to Fuego (such as installing a version =
of
>python) can affect Fuego in unexpected ways.
>
>So, I instead opted to create a script which can switch Fuego from python =
to
>python3 usage, or vice-versa.  That is, if a user switches Fuego to python=
3, but
>then discovers problems, they can switch back to python2.  The new utility=
 is
>called set-python, and is in fuego-core/scripts.  It also checks that the =
required
>libraries for the specified python version are present on the system.  In =
order to
>switch to a version of python, that version of python must be present on y=
our
>system.
>
>The tool is "idempotent", meaning that if you run it twice with the same
>arguments, it should not change anything the second time.  Specifically, i=
t
>should not have any deleterious effects.  So, if you're already done a con=
version
>to python3, you can run it again and it should not cause any problems.  No=
te
>that you can also run the tool with '-c' to just check the status, without=
 making
>any changes.

'set-python' tool is a nice tool that you prepared, it is checking and modi=
fying the shebang lines according to the system python version, this perfec=
tly suited for us as well.
I applied your changes in our project and I randomly checked and it is work=
ing.

We will further verify while executing some of the tests and if there are a=
ny problems we will send fixes for them or report to you.

>
>The tool must be run in fuego-core/scripts, outside of any docker containe=
r.
>Use '-h'
>to get usage help.  The script changes all shebang python lines in fuego s=
cripts,
>with the exception of parser.py shebang lines, which are always ignored.
>
>I removed all the shebang lines from the parser core (fuego-
>core/scripts/parser/*.py), but decided to leave the shebang lines in all t=
he
>test/*/parser.py files.  They could be removed (and probably should be), b=
ut I
>did a lot of changes this release and wanted to push these changes out bef=
ore
>doing another large set of changes.  The shebang lines in parser.py files =
are
>never used, so they are superfluous, and don't reflect how the scripts wil=
l
>actually be called.
>
>I also cleaned up remaining python3 incompatibilities in ftc and a few oth=
er
>scripts.
>Specifically, I handled the input vs. raw_input issue, and the urllib.pars=
e vs.
>urlparse issue.
>
>Please try out the latest master branch and let me know if you have any
>problems, especially with python3 compatibility.
>
>If you could run set-python in your lab, and let me know what it shows you=
,
>that would be helpful.
>That is please do:
>  $ cd fuego-core/scripts ; set-python python3 (or 'set-python -c python3'=
) and
>let me know the results.

I executed the 'set-python' in our environment with your patches and below =
are the results

1)
root@cloud:/fuego-core/scripts# ./set-python -c python3
Python version I am executing=3D'python3' (3, 9, 2)
Python version requested=3D'python3'
Report:
  Missing module jenkins

Here are the lines that need to change!
=3D=3D check-dependencies =3D=3D
=3D=3D deorphan-runs.py =3D=3D
=3D=3D ftc =3D=3D
=3D=3D gen-page.py =3D=3D
=3D=3D jdiff =3D=3D
=3D=3D ../tests/Functional.LTP/ltp_process.py =3D=3D
=3D=3D ../tests/Functional.apertis_sanity_check/make-script-from-yaml.py =
=3D=3D
=3D=3D common.sh =3D=3D
=3D=3D test-parser.sh =3D=3D

2)
root@cloud:/fuego-core/scripts# ./set-python python3
Python version I am executing=3D'python3' (3, 9, 2)
Python version requested=3D'python3'
Report:
  Missing module jenkins

Here are some line changes!
=3D=3D check-dependencies =3D=3D
#!/usr/bin/python
 -- is now --
#!/usr/bin/python3
=3D=3D deorphan-runs.py =3D=3D
#!/usr/bin/python
 -- is now --
#!/usr/bin/python3
=3D=3D ftc =3D=3D
 -- is now --
#!/usr/bin/python3
=3D=3D gen-page.py =3D=3D
#!/usr/bin/python
 -- is now --
#!/usr/bin/python3
=3D=3D jdiff =3D=3D
#!/usr/bin/python
 -- is now --
#!/usr/bin/python3
=3D=3D ../tests/Functional.LTP/ltp_process.py =3D=3D
#!/usr/bin/python
 -- is now --
#!/usr/bin/python3
=3D=3D ../tests/Functional.apertis_sanity_check/make-script-from-yaml.py =
=3D=3D
#!/usr/bin/python
 -- is now --
#!/usr/bin/python3
=3D=3D common.sh =3D=3D
PY_EXE=3D/usr/bin/python
 -- is now --
PY_EXE=3D/usr/bin/python3
=3D=3D test-parser.sh =3D=3D
PY_EXE=3D/usr/bin/python
 -- is now --
PY_EXE=3D/usr/bin/python3

I saw the shebang lines are changed to python3 and the tests are working.

>
>I haven't decided to switch Fuego to install using python3 by default, but=
 I may
>do so after I experiment with making serio python3 compatible, and when I =
do
>the next major release.
>I have modified the install scripts to load all the needed python3 librari=
es, but
>haven't done a docker test yet with these.
>
>Regards,
> -- Tim
>
>> -----Original Message-----
>> From: [email protected] <[email protected]>
>> Sent: Monday, October 10, 2022 7:00 AM
>> To: Bird, Tim <[email protected]>; [email protected]
>> Cc: [email protected]; [email protected];
>> [email protected]
>> Subject: RE: [PATCH] python3: Use python3 in the scripts to fully
>> migrate
>>
>> Hi Tim,
>>
>> Sorry for the late, I am on vacation last week.
>>
>> Please find my answers below.
>>
>> >-----Original Message-----
>> >From: Bird, Tim <[email protected]>
>> >Sent: 05 October 2022 05:52
>> >To: pyla venkata(=1B$B#T#S#I#P=1B(B TMIEC ODG Porting) <Venkata.Pyla@to=
shiba-
>> >tsip.com>; [email protected]
>> >Cc: nakkala sireesha(=1B$B#T#S#I#P=1B(B TMIEC ODG Porting)
>> ><sireesha.nakkala@toshiba- tsip.com>; dinesh kumar(=1B$B#T#S#I#P=1B(B T=
MIEC ODG
>> >Porting) <dinesh.kumar@toshiba- tsip.com>; hayashi kazuhiro(=1B$BNS=1B(=
B =1B$BOB9(=1B(B
>> >=1B$B""#S#W#C"~#A#C#T=1B(B)
>> ><[email protected]>
>> >Subject: RE: [PATCH] python3: Use python3 in the scripts to fully
>> >migrate
>> >
>> >OK -  I have some more comments on this patch.
>> >
>> >See inline below.
>> >
>> >> -----Original Message-----
>> >> From: [email protected] <[email protected]>
>> >>
>> >> The python scripts are failing to run in an environment where
>> >> `python` is not defined, though the scripts are migrated to work on
>> >> python3 the shebang is still pointing to python which may be
>> >> undefined
>> >>
>> >> Signed-off-by: venkata pyla <[email protected]>
>> >> ---
>> >>  scripts/check-dependencies              | 2 +-
>> >
>> >My first comment is that invocation using just the interpreter name
>> >of 'python' is in a lot more places than just these 4 files, and the pa=
rser.py
>scripts.
>> >
>> >I see it also in deorphan-runs.py, gen-page.py, jdiff, test_parser.sh
>> >, generic_parser.py, test_filelock.py (in the scripts directory).
>> >Many of these you are likely not using.
>> Yes, many of the files were not used by Toshiba, so we fixed only in the=
 tests
>where it is breaking.
>>
>> >
>> >However, some of these are intended for use by Fuego users, for
>> >special circumstances (like deorphan-runs.py and test_parser.sh).
>>
>>
>> >
>> >>  scripts/common.sh                       | 8 ++++----
>> >>  scripts/ftc                             | 2 +-
>> >>  scripts/functions.sh                    | 2 +-
>> >>  tests/Benchmark.Dhrystone/parser.py     | 2 +-
>> >>  tests/Benchmark.IOzone/parser.py        | 2 +-
>> >>  tests/Benchmark.Stream/parser.py        | 2 +-
>> >>  tests/Benchmark.bonnie/parser.py        | 2 +-
>> >>  tests/Benchmark.cyclictest/parser.py    | 2 +-
>> >>  tests/Benchmark.fio/parser.py           | 2 +-
>> >>  tests/Benchmark.hackbench/parser.py     | 2 +-
>> >>  tests/Benchmark.lmbench2/parser.py      | 2 +-
>> >>  tests/Benchmark.migratetest/parser.py   | 2 +-
>> >>  tests/Benchmark.pmqtest/parser.py       | 2 +-
>> >>  tests/Benchmark.ptsematest/parser.py    | 2 +-
>> >>  tests/Benchmark.signaltest/parser.py    | 2 +-
>> >>  tests/Benchmark.sigwaittest/parser.py   | 2 +-
>> >>  tests/Benchmark.svsematest/parser.py    | 2 +-
>> >>  tests/Functional.LTP/fuego_test.sh      | 4 ++--
>> >>  tests/Functional.LTP/ltp_process.py     | 2 +-
>> >>  tests/Functional.LTP/parser.py          | 2 +-
>> >>  tests/Functional.LTP_one_test/parser.py | 2 +-
>> >> tests/Functional.autopkgtest/parser.py  | 2 +-
>> >>  tests/Functional.linaro/parser.py       | 2 +-
>> >>  24 files changed, 28 insertions(+), 28 deletions(-)
>> >>
>> >> diff --git a/scripts/check-dependencies
>> >> b/scripts/check-dependencies index 583012e..7369bd4 100755
>> >> --- a/scripts/check-dependencies
>> >> +++ b/scripts/check-dependencies
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >
>> >check-dependencies is used by Functional.LTP, so I'm surprised you
>> >haven't run into this one.  Maybe you have and this program works fine =
with
>python3.
>> We use LTP test and so we changed the shebang here, and as you
>> suggested below it is good to use `run_python` which will internally fin=
d the
>right interpreter as you wrote the code, then this shebang is not required=
 or we
>can remove.
>>
>> >
>> >check-dependencies is invoked directly (not using run_python), or by
>> >calling the interpreter, but it is only called in one place
>> >(Functional.LTP/fuego_test.sh), so maybe that one place could call
>> >run_python, to make it so that this would work with a conditional
>interpreter.
>> >(see below for how I might make common.sh auto-detect the python
>> >interpreter)
>> This will be a good solution for the backward compatibility.
>>
>> >
>> >>  # vim: set ts=3D4 sw=3D4 et :
>> >>  #
>> >>  # check_dependencies - check config dependencies listed in a file
>> >> diff --git a/scripts/common.sh b/scripts/common.sh index
>> >> f916d84..cf93ddb 100644
>> >> --- a/scripts/common.sh
>> >> +++ b/scripts/common.sh
>> >> @@ -108,20 +108,20 @@ function run_python() {
>> >>      if [ ! -z $ORIG_PATH ] ; then
>> >>          dprint "run_python with PATH=3D$ORIG_PATH,
>TOOLCHAIN=3D$TOOLCHAIN"
>> >>          export TOOLCHAIN
>> >> -        PATH=3D$ORIG_PATH TOOLCHAIN=3D$TOOLCHAIN python "$@"
>> >> +        PATH=3D$ORIG_PATH TOOLCHAIN=3D$TOOLCHAIN python3 "$@"
>> >For this one and the next, I'm thinking of using a variable to
>> >indicate the
>> >interpreter:
>> >PYTHON_EXE, that I would detect outside of the run_python function,
>> >with something like this:
>> >
>> >INTERPRETER_LIST=3D"python3 python python2"
>> >for interpreter in $INTERPRETER_LIST ; do
>> >    if [ -x /usr/bin/${interpreter} ] ; then
>> >        PYTHON_EXE=3D"/usr/bin/${interpreter}"
>> >        break
>> >    fi
>> >done
>> >if [ -z "$PYTHON_EXE" ] ; then
>> >    abort_job "No python interpreter found!"
>> >fi
>> >
>> >this line would then become:
>> >PATH=3D$ORIG_PATH TOOLCHAIN=3D$TOOLCHAIN $PYTHON_EXE "$@"
>> >
>> >Note the use of $ORIG_PATH.  Some toolchain setup scrips modify the
>> >PATH so that the 'python' that is executed is one that the SDK for
>> >the toolchain set up, with libs from the target sysroot.  This is not
>> >desired for Fuego's use of python, which should always use the host's
>> >python interpreter.  I'll have to see if this proposed change (which
>> >would use the fullpath to the interpreter, instead of just the
>> >interpreter found in the PATH), would affect this use of ORIG_PATH with
>some toolchains.
>> >
>> >Let me know if you have any thoughts about this.
>> >Specifically, does your toolchain setup script set ORIG_PATH?
>> We are not using the ORIG_PATH variable, in our case the host environmen=
t
>interpreter is sufficient to run the scripts.
>>
>> But in our patch we have modified in both the places when ORIG_PATH is
>> defined and not defined because we wanted at least change python version
>problem in the same file.
>>
>> >
>> >>      else
>> >>          dprint "run_python with TOOLCHAIN=3D$TOOLCHAIN"
>> >>          export TOOLCHAIN
>> >> -        TOOLCHAIN=3D$TOOLCHAIN python "$@"
>> >> +        TOOLCHAIN=3D$TOOLCHAIN python3 "$@"
>> >and this would become:
>> >TOOLCHAIN=3D$TOOLCHAIN $PYTHON_EXE "$@"
>> >
>> >>      fi
>> >>  }
>> >>
>> >>  function run_python_quiet() {
>> >>      if [ ! -z $ORIG_PATH ]
>> >>      then
>> >> -        PATH=3D$ORIG_PATH python "$@"
>> >> +        PATH=3D$ORIG_PATH python3 "$@"
>> >As near as I can tell, run_python_quiet is only ever used by
>> >overlays/base/base- params.fuegoclass (and it shows up in expected
>> >values in Functional.fuego_ftc_test).
>> >This is used to invoke sercp, serlogin, and sersh for serial port
>> >connections to the target.
>> >(that is, when the TRANSPORT=3Dserial)
>> >
>> >I have NOT tested sercp, serlogin and sersh for python3 compatibility
>> >(but I already know they are NOT python3 compatible right now).
>> >Given that they are managing serial port data flow on the  serial
>> >port at a byte-at-a-time level, they will need extensive analysis to
>> >make sure that the string handling does not break when they are run
>> >with python3 (where strings default to Unicode instead of byte strings)=
.
>> >I have another project on github that also handles data flow on a
>> >serial port, and it was very difficult to make it work correctly on bot=
h
>python2 and python3.
>> >This one I'll have to defer.
>> >
>> >If I understand correctly, the way that you use Fuego is by
>> >installing it natively onto the device under test, and using
>> >TRANSPORT=3Dlocal.  If you don't use the serial TRANSPORT or the serial
>> >port tools (serio suite of tools), then this shouldn't affect you.
>> Yes, this change is not required for us, as mentioned above we modified =
all
>python versions in the same file.
>> You can ignore this change and thanks for letting me know about the func=
tion
>'run_python_quiet'
>>
>> >
>> >In any event, this can not be changed to python3 yet.
>> >>      else
>> >> -        python "$@"
>> >> +        python3 "$@"
>> >Nor this one. (see above)
>> >
>> >>      fi
>> >>  }
>> >>
>> >> diff --git a/scripts/ftc b/scripts/ftc index adce17b..4c5ff7e
>> >> 100755
>> >> --- a/scripts/ftc
>> >> +++ b/scripts/ftc
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >
>> >Have you been running ftc with this change already?
>> >
>> >ftc has a large number of dependencies on python modules, especially
>> >in the area of report generation.  The docker container never
>> >installs python3 versions of some of these esoteric modules, such as
>reportlab and openpyxl.
>> >
>> >Just out of curiosity, do you import these modules in your
>> >environment, or just not use the ftc functionality that depends on them=
?
>> We installed python3 dependencies in our target machine.
>> as you may know we are not using the docker-container and installing
>> the fuego-core directly on the target machine, and the python3 dependenc=
ies
>are already installed in the target machine.
>>
>> >
>> >Also, ftc has a few remaining python3 incompatibilities:
>> >  -  raw_input vs input
>> >  - some urllib-related fixes, for the python3 refactoring of
>> >ulrparse and urllib
>> >
>> >Is ftc functioning correctly with python3 now, for all your usage scena=
rios?
>> It is working fine with our current usage scenarios, because in our
>> environment we were not using the Jenkins or the features related to
>> those functions I think we should fix them because they are obviously
>required when completely migrate to pyhon3.
>>
>> >
>> >>  #
>> >>  # vim: set ts=3D4 sw=3D4 et :
>> >>  #
>> >> diff --git a/scripts/functions.sh b/scripts/functions.sh index
>> >> 7afe423..5a6e0e5 100755
>> >> --- a/scripts/functions.sh
>> >> +++ b/scripts/functions.sh
>> >> @@ -506,7 +506,7 @@ function build {
>> >>          call_if_present test_build
>> >>          ret=3D$?
>> >>          build_end_time=3D$(date +"%s.%N")
>> >> -        build_duration=3D$(python -c "print($build_end_time -
>$build_start_time)")
>> >> +        build_duration=3D$(python3 -c "print($build_end_time -
>> >> + $build_start_time)")
>> >If I do the PYTHON_EXE thing in common.sh, I should be able to use
>> >that here as well.
>> >
>> >>
>> >>          # test_build may change the current dir
>> >>          # get back to root of build dir, before 'touch'
>> >> diff --git a/tests/Benchmark.Dhrystone/parser.py
>> >> b/tests/Benchmark.Dhrystone/parser.py
>> >> index fd07cff..868f9de 100755
>> >> --- a/tests/Benchmark.Dhrystone/parser.py
>> >> +++ b/tests/Benchmark.Dhrystone/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >Finally, on all these parser shebangs, I'm not sure what to do.
>> >
>> >I experimented with creating a wrapper script, called run_python.sh,
>> >that determines the correct interpreter to use, and changing these to:
>> >#!/fuego-core/scripts/run_python.sh
>> >
>> >It works, but I don't know how robust it is.  These parser are never
>> >invoked directly, as far as I can tell.  It might be better to
>> >actually remove the shebang line to make it explicitly impossible to
>> >treat the parser.py scripts as standalone programs.
>> >
>> >I'm not sure if I'd be breaking anyone's workflow with this or not,
>> >so I hesitate to do that.
>> >
>> >What do you think?
>> In our use cases also we were not directly running them, so we can remov=
e
>the shebang lines if no one else also not using it directly.
>>
>> >
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.IOzone/parser.py
>> >> b/tests/Benchmark.IOzone/parser.py
>> >> index b1631ae..a56aa0e 100755
>> >> --- a/tests/Benchmark.IOzone/parser.py
>> >> +++ b/tests/Benchmark.IOzone/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.Stream/parser.py
>> >> b/tests/Benchmark.Stream/parser.py
>> >> index a564d74..926e611 100755
>> >> --- a/tests/Benchmark.Stream/parser.py
>> >> +++ b/tests/Benchmark.Stream/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.bonnie/parser.py
>> >> b/tests/Benchmark.bonnie/parser.py
>> >> index b68bc3e..962a7cd 100755
>> >> --- a/tests/Benchmark.bonnie/parser.py
>> >> +++ b/tests/Benchmark.bonnie/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.cyclictest/parser.py
>> >> b/tests/Benchmark.cyclictest/parser.py
>> >> index c29393e..4252654 100755
>> >> --- a/tests/Benchmark.cyclictest/parser.py
>> >> +++ b/tests/Benchmark.cyclictest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  import os, re, sys
>> >>  import common as plib
>> >>
>> >> diff --git a/tests/Benchmark.fio/parser.py
>> >> b/tests/Benchmark.fio/parser.py index ab3ea34..fedb734 100644
>> >> --- a/tests/Benchmark.fio/parser.py
>> >> +++ b/tests/Benchmark.fio/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  # See common.py for description of command-line arguments
>> >>
>> >>  import os, sys
>> >> diff --git a/tests/Benchmark.hackbench/parser.py
>> >> b/tests/Benchmark.hackbench/parser.py
>> >> index a22c480..3ac9ba5 100755
>> >> --- a/tests/Benchmark.hackbench/parser.py
>> >> +++ b/tests/Benchmark.hackbench/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.lmbench2/parser.py
>> >> b/tests/Benchmark.lmbench2/parser.py
>> >> index f06f132..410b46e 100755
>> >> --- a/tests/Benchmark.lmbench2/parser.py
>> >> +++ b/tests/Benchmark.lmbench2/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.migratetest/parser.py
>> >> b/tests/Benchmark.migratetest/parser.py
>> >> index 627ec2d..21b7c56 100755
>> >> --- a/tests/Benchmark.migratetest/parser.py
>> >> +++ b/tests/Benchmark.migratetest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  import os, re, sys
>> >>  import common as plib
>> >>
>> >> diff --git a/tests/Benchmark.pmqtest/parser.py
>> >> b/tests/Benchmark.pmqtest/parser.py
>> >> index 05ee57b..a5c31ba 100755
>> >> --- a/tests/Benchmark.pmqtest/parser.py
>> >> +++ b/tests/Benchmark.pmqtest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.ptsematest/parser.py
>> >> b/tests/Benchmark.ptsematest/parser.py
>> >> index 05ee57b..a5c31ba 100755
>> >> --- a/tests/Benchmark.ptsematest/parser.py
>> >> +++ b/tests/Benchmark.ptsematest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.signaltest/parser.py
>> >> b/tests/Benchmark.signaltest/parser.py
>> >> index 1992b21..95d4340 100755
>> >> --- a/tests/Benchmark.signaltest/parser.py
>> >> +++ b/tests/Benchmark.signaltest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Benchmark.sigwaittest/parser.py
>> >> b/tests/Benchmark.sigwaittest/parser.py
>> >> index 25a0262..120b7b5 100755
>> >> --- a/tests/Benchmark.sigwaittest/parser.py
>> >> +++ b/tests/Benchmark.sigwaittest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  import os, re, sys
>> >>  import common as plib
>> >>
>> >> diff --git a/tests/Benchmark.svsematest/parser.py
>> >> b/tests/Benchmark.svsematest/parser.py
>> >> index 05ee57b..a5c31ba 100755
>> >> --- a/tests/Benchmark.svsematest/parser.py
>> >> +++ b/tests/Benchmark.svsematest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Functional.LTP/fuego_test.sh
>> >> b/tests/Functional.LTP/fuego_test.sh
>> >> index ef58bcc..95dea2c 100755
>> >> --- a/tests/Functional.LTP/fuego_test.sh
>> >> +++ b/tests/Functional.LTP/fuego_test.sh
>> >> @@ -475,9 +475,9 @@ function test_processing {
>> >>          #  ImportError: No module named style
>> >>          if [ -n "$ORIG_PATH" ] ; then
>> >>              # Use ORIG_PATH, if defined, so that python works proper=
ly
>> >> -            PATH=3D$ORIG_PATH python ltp_process.py
>> >> +            PATH=3D$ORIG_PATH python3 ltp_process.py
>> >>          else
>> >> -            python ltp_process.py
>> >> +            python3 ltp_process.py
>> >>          fi
>> >>
>> >>          [ -e results.xlsx ] && cp results.xlsx
>> >> ${LOGDIR}/results.xlsx diff --git
>> >> a/tests/Functional.LTP/ltp_process.py
>> >> b/tests/Functional.LTP/ltp_process.py
>> >> index 8e2b637..27bc856 100644
>> >> --- a/tests/Functional.LTP/ltp_process.py
>> >> +++ b/tests/Functional.LTP/ltp_process.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  # -*- coding: UTF-8 -*-
>> >>  from openpyxl import Workbook
>> >>  from openpyxl.styles import Border, Side, PatternFill, Color,
>> >> Alignment diff --git a/tests/Functional.LTP/parser.py
>> >> b/tests/Functional.LTP/parser.py index 9ad7659..3467328 100755
>> >> --- a/tests/Functional.LTP/parser.py
>> >> +++ b/tests/Functional.LTP/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  # -*- coding: UTF-8 -*-
>> >>  import os, os.path, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Functional.LTP_one_test/parser.py
>> >> b/tests/Functional.LTP_one_test/parser.py
>> >> index 312bd5b..7002e35 100755
>> >> --- a/tests/Functional.LTP_one_test/parser.py
>> >> +++ b/tests/Functional.LTP_one_test/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>  # See common.py for description of command-line arguments
>> >>
>> >>  import os
>> >> diff --git a/tests/Functional.autopkgtest/parser.py
>> >> b/tests/Functional.autopkgtest/parser.py
>> >> index ba3dea1..ba8d2a0 100755
>> >> --- a/tests/Functional.autopkgtest/parser.py
>> >> +++ b/tests/Functional.autopkgtest/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/bin/python
>> >> +#!/bin/python3
>> >>
>> >>  import os, re, sys
>> >>  import common as plib
>> >> diff --git a/tests/Functional.linaro/parser.py
>> >> b/tests/Functional.linaro/parser.py
>> >> index 48b502b..5bbb5de 100755
>> >> --- a/tests/Functional.linaro/parser.py
>> >> +++ b/tests/Functional.linaro/parser.py
>> >> @@ -1,4 +1,4 @@
>> >> -#!/usr/bin/python
>> >> +#!/usr/bin/python3
>> >>
>> >>  import os, sys, collections
>> >>  import common as plib
>> >> --
>> >> 2.20.1
>> >>
>> >
>> >Finally, before changing the shebang in all the parser.py scripts,
>> >I'd like to implement the compatibility changes first.  That is,
>> >change all the print statements to be parenthesized, BEFORE changing
>> >the shebang lines.  This way the code is never left in a faulty state (=
such that
>a git bisect would fail).
>> >
>> >Let me know your thoughts on the issues above.
>> >
>> >It looks like at least some of you are on vacation the next few days,
>> >but I'll wait to hear back before I start attacking this problem.
>> >
>> >By the way - what distribution of Linux are you testing?  Is this for
>> >CIP? or for some Toshiba-internal distro of Linux?  (just curious).
>> We are using on Debian based distribution with Bullseye version, this
>> is one of the reason why we are changing the scripts to support python3,
>because bullseye in not supporting python2.
>>
>> At the first we have changed in few tests and some common function
>> scripts which we are using, because in our environment the fuego-core
>> runs on test/target machine directly this patch works for us, and I am
>> not confident these changes will work with docker- container, so the
>> reason we have not shared this patch initially and only the shared
>> some print statement fixes and other
>> python2to3 compatible fixes.
>>
>> After studying your suggestion in the above, there are quite few other
>conversions required to fully convert to python3.
>> Let me know if I can do some of the changes.
>>
>> >
>> > -- Tim
>>