gdb/python: look for python, then python 3 at configure time
authorAndrew Burgess <aburgess@redhat.com>
Mon, 4 Jul 2022 15:40:05 +0000 (16:40 +0100)
committerAndrew Burgess <aburgess@redhat.com>
Mon, 18 Jul 2022 10:32:40 +0000 (11:32 +0100)
It is possible that a system might have a python3 executable, but no
python executable.  For example, on my Fedora system the python2
package provides /usr/bin/python2, the python3 package provides
/usr/bin/python3, and the python-unversioned-command package provides
/usr/bin/python, which picks between python2 and python3.

It is quite possible to only have python3 available on a system.

Currently, when GDB configures, it looks for a 'python' executable.
If non is found then GDB will be built without python support.  Or the
user needs to configure using --with-python=/usr/bin/python3.

This commit updates GDB's configure.ac script to first look for
'python', and then 'python3'.  Now, on a system that only has a
python3 executable, GDB will automatically find, and use that in order
to provide python support, no user supplied configure arguments are
needed.

I've tested this on my local machine by removing the
python-unversioned-command package, confirming that there is no longer
a 'python' executable in my $PATH, and then rebuilding GDB from
scratch.  GDB with this patch has python support.

gdb/configure
gdb/configure.ac

index 1b8213908010592f9bba5045f035d976747784b2..4b5e031bff906a0dde5785070403a5d451ea80cd 100755 (executable)
@@ -11098,8 +11098,11 @@ else
     case "${with_python}" in
     yes | auto)
       if test "${build}" = "${host}"; then
-        # Extract the first word of "python", so it can be a program name with args.
-set dummy python; ac_word=$2
+        # Look first for 'python', then 'python3'.
+        for ac_prog in python python3
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_path_python_prog_path+:} false; then :
@@ -11125,7 +11128,6 @@ done
   done
 IFS=$as_save_IFS
 
-  test -z "$ac_cv_path_python_prog_path" && ac_cv_path_python_prog_path="missing"
   ;;
 esac
 fi
@@ -11139,6 +11141,10 @@ $as_echo "no" >&6; }
 fi
 
 
+  test -n "$python_prog_path" && break
+done
+test -n "$python_prog_path" || python_prog_path="missing"
+
         if test "${python_prog_path}" = missing; then
           python_prog=missing
         else
index bf03b875dfe634eee56e394829d1d8c1744dd47c..b681988d7a4f38a2966b8f5319b4d50555049f52 100644 (file)
@@ -811,7 +811,8 @@ else
     case "${with_python}" in
     yes | auto)
       if test "${build}" = "${host}"; then
-        AC_PATH_PROG(python_prog_path, python, missing)
+        # Look first for 'python', then 'python3'.
+        AC_PATH_PROGS(python_prog_path, [python python3], missing)
         if test "${python_prog_path}" = missing; then
           python_prog=missing
         else