aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2019-09-08 13:45:13 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2019-09-08 13:45:13 -0400
commitf1a9abe61fef1be9a6085baa2856f2c51d508728 (patch)
treee9d6fafd32185d7330ce1afcfee9d8e25f1c394a
parent3f68d138747734fff094861419c7cc6824c54db6 (diff)
downloadpostgresql-f1a9abe61fef1be9a6085baa2856f2c51d508728.tar.gz
postgresql-f1a9abe61fef1be9a6085baa2856f2c51d508728.zip
configure: Update python search order
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
-rw-r--r--config/python.m413
-rwxr-xr-xconfigure9
-rw-r--r--doc/src/sgml/installation.sgml3
3 files changed, 19 insertions, 6 deletions
diff --git a/config/python.m4 b/config/python.m4
index b95c8ed3b34..b8d5b890b22 100644
--- a/config/python.m4
+++ b/config/python.m4
@@ -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
diff --git a/configure b/configure
index 7eab1f8f752..5aff38ce984 100755
--- a/configure
+++ b/configure
@@ -7598,8 +7598,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 :
@@ -7638,6 +7640,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
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index d1bb729c685..e2079d37a99 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -1415,7 +1415,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>