diff mbox series

contrib: Improve dg-extract-results.sh's Python detection

Message ID 20240307141638.153366-1-sam@gentoo.org
State New
Headers show
Series contrib: Improve dg-extract-results.sh's Python detection | expand

Commit Message

Sam James March 7, 2024, 2:16 p.m. UTC
'python' on some systems (e.g. SLES 15) might be Python 2. Prefer ${EPYTHON}
if defined (used by Gentoo's python-exec wrapping), then python3, then python.

contrib/ChangeLog:

    * dg-extract-results.sh: Check for python3 before python.
---
 contrib/dg-extract-results.sh | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Comments

Jakub Jelinek March 7, 2024, 2:21 p.m. UTC | #1
On Thu, Mar 07, 2024 at 02:16:37PM +0000, Sam James wrote:
> 'python' on some systems (e.g. SLES 15) might be Python 2. Prefer ${EPYTHON}
> if defined (used by Gentoo's python-exec wrapping), then python3, then python.

I'd say EPYTHON is too distro specific, just use for python in python3 python ?
Other scripts just have
#!/usr/bin/env python3
as the first line and go with that.

> contrib/ChangeLog:
> 
>     * dg-extract-results.sh: Check for python3 before python.
> ---
>  contrib/dg-extract-results.sh | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh
> index 00ef80046f74..2d1cd76fe255 100755
> --- a/contrib/dg-extract-results.sh
> +++ b/contrib/dg-extract-results.sh
> @@ -28,14 +28,17 @@
>  
>  PROGNAME=dg-extract-results.sh
>  
> -# Try to use the python version if possible, since it tends to be faster.
> +# Try to use the python version if possible, since it tends to be faster and
> +# produces more stable results.
>  PYTHON_VER=`echo "$0" | sed 's/sh$/py/'`
> -if test "$PYTHON_VER" != "$0" &&
> -   test -f "$PYTHON_VER" &&
> -   python -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
> -     > /dev/null 2> /dev/null; then
> -  exec python $PYTHON_VER "$@"
> -fi
> +for python in ${EPYTHON:-python3} python ; do
> +	if test "$PYTHON_VER" != "$0" &&
> +	   test -f "$PYTHON_VER" &&
> +	   ${python} -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
> +	     > /dev/null 2> /dev/null; then
> +	  exec ${python} $PYTHON_VER "$@"
> +	fi
> +done
>  
>  usage() {
>    cat <<EOF >&2
> -- 
> 2.44.0

	Jakub
Sam James March 7, 2024, 2:25 p.m. UTC | #2
Jakub Jelinek <jakub@redhat.com> writes:

> On Thu, Mar 07, 2024 at 02:16:37PM +0000, Sam James wrote:
>> 'python' on some systems (e.g. SLES 15) might be Python 2. Prefer ${EPYTHON}
>> if defined (used by Gentoo's python-exec wrapping), then python3, then python.
>
> I'd say EPYTHON is too distro specific, just use for python in python3 python ?
> Other scripts just have
> #!/usr/bin/env python3
> as the first line and go with that.

Sure. Should I add python2 too as well (last), given the script nominally tries to
work with it still?

>
>> contrib/ChangeLog:
>> 
>>     * dg-extract-results.sh: Check for python3 before python.
>> ---
>>  contrib/dg-extract-results.sh | 17 ++++++++++-------
>>  1 file changed, 10 insertions(+), 7 deletions(-)
>> 
>> diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh
>> index 00ef80046f74..2d1cd76fe255 100755
>> --- a/contrib/dg-extract-results.sh
>> +++ b/contrib/dg-extract-results.sh
>> @@ -28,14 +28,17 @@
>>  
>>  PROGNAME=dg-extract-results.sh
>>  
>> -# Try to use the python version if possible, since it tends to be faster.
>> +# Try to use the python version if possible, since it tends to be faster and
>> +# produces more stable results.
>>  PYTHON_VER=`echo "$0" | sed 's/sh$/py/'`
>> -if test "$PYTHON_VER" != "$0" &&
>> -   test -f "$PYTHON_VER" &&
>> -   python -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
>> -     > /dev/null 2> /dev/null; then
>> -  exec python $PYTHON_VER "$@"
>> -fi
>> +for python in ${EPYTHON:-python3} python ; do
>> +	if test "$PYTHON_VER" != "$0" &&
>> +	   test -f "$PYTHON_VER" &&
>> +	   ${python} -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
>> +	     > /dev/null 2> /dev/null; then
>> +	  exec ${python} $PYTHON_VER "$@"
>> +	fi
>> +done
>>  
>>  usage() {
>>    cat <<EOF >&2
>> -- 
>> 2.44.0
>
> 	Jakub
Jakub Jelinek March 7, 2024, 2:26 p.m. UTC | #3
On Thu, Mar 07, 2024 at 02:25:09PM +0000, Sam James wrote:
> Jakub Jelinek <jakub@redhat.com> writes:
> 
> > On Thu, Mar 07, 2024 at 02:16:37PM +0000, Sam James wrote:
> >> 'python' on some systems (e.g. SLES 15) might be Python 2. Prefer ${EPYTHON}
> >> if defined (used by Gentoo's python-exec wrapping), then python3, then python.
> >
> > I'd say EPYTHON is too distro specific, just use for python in python3 python ?
> > Other scripts just have
> > #!/usr/bin/env python3
> > as the first line and go with that.
> 
> Sure. Should I add python2 too as well (last), given the script nominally tries to
> work with it still?

Yes.

	Jakub
diff mbox series

Patch

diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh
index 00ef80046f74..2d1cd76fe255 100755
--- a/contrib/dg-extract-results.sh
+++ b/contrib/dg-extract-results.sh
@@ -28,14 +28,17 @@ 
 
 PROGNAME=dg-extract-results.sh
 
-# Try to use the python version if possible, since it tends to be faster.
+# Try to use the python version if possible, since it tends to be faster and
+# produces more stable results.
 PYTHON_VER=`echo "$0" | sed 's/sh$/py/'`
-if test "$PYTHON_VER" != "$0" &&
-   test -f "$PYTHON_VER" &&
-   python -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
-     > /dev/null 2> /dev/null; then
-  exec python $PYTHON_VER "$@"
-fi
+for python in ${EPYTHON:-python3} python ; do
+	if test "$PYTHON_VER" != "$0" &&
+	   test -f "$PYTHON_VER" &&
+	   ${python} -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
+	     > /dev/null 2> /dev/null; then
+	  exec ${python} $PYTHON_VER "$@"
+	fi
+done
 
 usage() {
   cat <<EOF >&2