Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
configure: Update python search order
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 8 Sep 2019 17:45:13 +0000 (13:45 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 8 Sep 2019 17:45:13 +0000 (13:45 -0400)
Some systems don't ship with "python" by default anymore, only
"python3" or "python2" or some combination, so include those in the
configure search.

Back-patch of commit 7291733ac.  At the time that was only pushed
back as far as v10, because of concerns about interactions with
commit b21c569ce.  Closer analysis shows that if we just
s/AC_PATH_PROG/AC_PATH_PROGS/, there is no effect on the older
branches' behavior when PYTHON is explicitly specified, so it should
be okay to back-patch: this will not break any configuration that
worked before.  And the need to support platforms with only a
"python3" or "python2" executable is getting ever more urgent.

Original patch by Peter Eisentraut, back-patch analysis by me

Discussion: https://www.postgresql.org/message-id/flat/1457.1543184081%40sss.pgh.pa.us#c9cc1199338fd6a257589c6dcea6cf8d

config/python.m4
configure
doc/src/sgml/installation.sgml

index c4209d0c7590b24bf6d5fd97daf2bb66909250e7..060efda8308eeb4c5369b38143805b435b655f4d 100644 (file)
@@ -6,10 +6,17 @@
 
 # PGAC_PATH_PYTHON
 # ----------------
-# Look for Python and set the output variable 'PYTHON'
-# to 'python' if found, empty otherwise.
+# Look for Python and set the output variable 'PYTHON' if found,
+# fail otherwise.
+#
+# As the Python 3 transition happens and PEP 394 isn't updated, we
+# need to cater to systems that don't have unversioned "python" by
+# default.  Some systems ship with "python3" by default and perhaps
+# have "python" in an optional package.  Some systems only have
+# "python2" and "python3", in which case it's reasonable to prefer the
+# newer version.
 AC_DEFUN([PGAC_PATH_PYTHON],
-[AC_PATH_PROG(PYTHON, python)
+[AC_PATH_PROGS(PYTHON, [python python3 python2])
 if test x"$PYTHON" = x""; then
   AC_MSG_ERROR([Python not found])
 fi
index 53ebf82282614c49e5e149abee9da0c4681765ef..65cd7d3fd39dca891eb9385121df7fea6a3b6ca4 100755 (executable)
--- a/configure
+++ b/configure
@@ -7562,8 +7562,10 @@ fi
 fi
 
 if test "$with_python" = yes; then
-  # Extract the first word of "python", so it can be a program name with args.
-set dummy python; ac_word=$2
+  for ac_prog in python python3 python2
+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+:} false; then :
@@ -7602,6 +7604,9 @@ $as_echo "no" >&6; }
 fi
 
 
+  test -n "$PYTHON" && break
+done
+
 if test x"$PYTHON" = x""; then
   as_fn_error $? "Python not found" "$LINENO" 5
 fi
index 3e1146c4436e6509272323d7652d9a284cc307a0..fb8725111751b737d0c4996aaad3724a5d6ca640 100644 (file)
@@ -1438,7 +1438,8 @@ su - postgres
          <![%standalone-include[the <application>PL/Python</>
          documentation]]>
          <![%standalone-ignore[<xref linkend="plpython-python23">]]>
-         for more information.
+         for more information.  If this is not set, the following are probed
+         in this order: <literal>python python3 python2</literal>.
         </para>
        </listitem>
       </varlistentry>