Re: Python versions (was Re: RHEL 8.0 build) - Mailing list pgsql-hackers
From | Tom Lane |
---|---|
Subject | Re: Python versions (was Re: RHEL 8.0 build) |
Date | |
Msg-id | 30972.1567887505@sss.pgh.pa.us Whole thread Raw |
In response to | Re: Python versions (was Re: RHEL 8.0 build) (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>) |
Responses |
Re: Python versions (was Re: RHEL 8.0 build)
|
List | pgsql-hackers |
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes: >>> [ patch to search for python, then python3, then python2 ] > Committed with some documentation updates. > I only backpatched to PG10, because before that the handling of absolute > paths vs nonabsolute paths is a bit murky and inconsistent, so I didn't > want to add more logic and potentially confusing documentation on top of > that. So this subject has just intruded itself again, because new buildfarm member "morepork" is failing in the pre-v10 branches, because ... you guessed it ... it has "python3" but not "python". This situation is going to get worse, not better, as time goes on, so I think we really should back-patch 7291733ac into all active branches. You were concerned about the fact that b21c569ce had changed AC_PATH_PROG to PGAC_PATH_PROGS here, but I think we can just ignore that and make the patch be s/AC_PATH_PROG/AC_PATH_PROGS/, because that isn't going to change the behavior of that macro w.r.t. overriding. It was the places that had had AC_CHECK_PROGS that we were worried about the behavior of, and this place never did have it. Demonstration that it won't change anything is the very small delta in the actual configure script in the attached patch for 9.6. (I've not tested this yet for 9.5 or 9.4, but it appears to apply cleanly in those branches.) Thoughts? regards, tom lane diff --git a/config/python.m4 b/config/python.m4 index b95c8ed..b8d5b89 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 cfaf11a..48edbf1 100755 --- a/configure +++ b/configure @@ -7683,8 +7683,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 : @@ -7723,6 +7725,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 481f2ac..cae7973 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1441,7 +1441,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>
pgsql-hackers by date: