1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-20 00:42:27 +03:00

plpython: Reject Python 2 during build configuration.

Python 2.7 went EOL 2020-01-01 and the support for Python 2 requires a fair
bit of infrastructure. Therefore we are removing Python 2 support in plpython.

This patch just rejects Python 2 during configure / mkvcbuild.pl. Future
commits will remove the code and infrastructure for Python 2 support and
adjust more of the documentation. This way we can see the buildfarm state
after the removal sooner and we can be sure that failures are due to
desupporting Python 2, rather than caused by infrastructure cleanup.

Reviewed-By: Peter Eisentraut <peter@eisentraut.org>
Discussion: https://postgr.es/m/20211031184548.g4sxfe47n2kyi55r@alap3.anarazel.de
This commit is contained in:
Andres Freund 2022-02-16 22:47:35 -08:00
parent 8f388f6f55
commit 19252e8ec9
5 changed files with 19 additions and 20 deletions

View File

@ -9,6 +9,9 @@
# Look for Python and set the output variable 'PYTHON' if found, # Look for Python and set the output variable 'PYTHON' if found,
# fail otherwise. # fail otherwise.
# #
# Since we are supporting only Python 3.x, prefer python3 to plain python. If
# the latter exists at all, it very possibly points to python2.
# As the Python 3 transition happens and PEP 394 isn't updated, we # 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 # need to cater to systems that don't have unversioned "python" by
# default. Some systems ship with "python3" by default and perhaps # default. Some systems ship with "python3" by default and perhaps
@ -16,7 +19,7 @@
# "python2" and "python3", in which case it's reasonable to prefer the # "python2" and "python3", in which case it's reasonable to prefer the
# newer version. # newer version.
AC_DEFUN([PGAC_PATH_PYTHON], AC_DEFUN([PGAC_PATH_PYTHON],
[PGAC_PATH_PROGS(PYTHON, [python python3 python2]) [PGAC_PATH_PROGS(PYTHON, [python3 python])
AC_ARG_VAR(PYTHON, [Python program])dnl AC_ARG_VAR(PYTHON, [Python program])dnl
if test x"$PYTHON" = x""; then if test x"$PYTHON" = x""; then
AC_MSG_ERROR([Python not found]) AC_MSG_ERROR([Python not found])
@ -37,8 +40,8 @@ python_majorversion=`echo "$python_fullversion" | sed '[s/^\([0-9]*\).*/\1/]'`
python_minorversion=`echo "$python_fullversion" | sed '[s/^[0-9]*\.\([0-9]*\).*/\1/]'` python_minorversion=`echo "$python_fullversion" | sed '[s/^[0-9]*\.\([0-9]*\).*/\1/]'`
python_version=`echo "$python_fullversion" | sed '[s/^\([0-9]*\.[0-9]*\).*/\1/]'` python_version=`echo "$python_fullversion" | sed '[s/^\([0-9]*\.[0-9]*\).*/\1/]'`
# Reject unsupported Python versions as soon as practical. # Reject unsupported Python versions as soon as practical.
if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 7; then if test "$python_majorversion" -lt 3; then
AC_MSG_ERROR([Python version $python_version is too old (version 2.7 or later is required)]) AC_MSG_ERROR([Python version $python_version is too old (version 3 or later is required)])
fi fi
AC_MSG_CHECKING([for Python sysconfig module]) AC_MSG_CHECKING([for Python sysconfig module])

6
configure vendored
View File

@ -10280,7 +10280,7 @@ fi
if test "$with_python" = yes; then if test "$with_python" = yes; then
if test -z "$PYTHON"; then if test -z "$PYTHON"; then
for ac_prog in python python3 python2 for ac_prog in python3 python
do do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
@ -10346,8 +10346,8 @@ python_majorversion=`echo "$python_fullversion" | sed 's/^\([0-9]*\).*/\1/'`
python_minorversion=`echo "$python_fullversion" | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'` python_minorversion=`echo "$python_fullversion" | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`
python_version=`echo "$python_fullversion" | sed 's/^\([0-9]*\.[0-9]*\).*/\1/'` python_version=`echo "$python_fullversion" | sed 's/^\([0-9]*\.[0-9]*\).*/\1/'`
# Reject unsupported Python versions as soon as practical. # Reject unsupported Python versions as soon as practical.
if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt 7; then if test "$python_majorversion" -lt 3; then
as_fn_error $? "Python version $python_version is too old (version 2.7 or later is required)" "$LINENO" 5 as_fn_error $? "Python version $python_version is too old (version 3 or later is required)" "$LINENO" 5
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python sysconfig module" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python sysconfig module" >&5

View File

@ -136,7 +136,7 @@
to specify the location of your <productname>Python</productname> installation, to specify the location of your <productname>Python</productname> installation,
put the following in <filename>config.pl</filename>: put the following in <filename>config.pl</filename>:
<programlisting> <programlisting>
$config->{python} = 'c:\python26'; $config->{python} = 'c:\python310';
</programlisting> </programlisting>
You only need to specify those parameters that are different from what's in You only need to specify those parameters that are different from what's in
<filename>config_default.pl</filename>. <filename>config_default.pl</filename>.

View File

@ -196,11 +196,7 @@ su - postgres
language, you need a <productname>Python</productname> language, you need a <productname>Python</productname>
installation with the header files and installation with the header files and
the <application>sysconfig</application> module. The minimum the <application>sysconfig</application> module. The minimum
required version is <productname>Python</productname> 2.7. required version is <productname>Python</productname> 3.2.
<productname>Python 3</productname> is supported if it's
version 3.2 or later; but see
<xref linkend="plpython-python23"/>
when using Python 3.
</para> </para>
<para> <para>
@ -1868,14 +1864,10 @@ build-postgresql:
<term><envar>PYTHON</envar></term> <term><envar>PYTHON</envar></term>
<listitem> <listitem>
<para> <para>
Python interpreter program. This will be used to Python interpreter program. This will be used to determine the
determine the dependencies for building PL/Python. Also, dependencies for building PL/Python. If this is not set, the
whether Python 2 or 3 is specified here (or otherwise following are probed in this order:
implicitly chosen) determines which variant of the PL/Python <literal>python3 python</literal>.
language becomes available. See
<xref linkend="plpython-python23"/>
for more information. If this is not set, the following are probed
in this order: <literal>python python3 python2</literal>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -490,6 +490,10 @@ sub mkvcbuild
if (!(defined($pyprefix) && defined($pyver))); if (!(defined($pyprefix) && defined($pyver)));
my $pymajorver = substr($pyver, 0, 1); my $pymajorver = substr($pyver, 0, 1);
die "Python version $pyver is too old (version 3 or later is required)"
if int($pymajorver) < 3;
my $plpython = $solution->AddProject('plpython' . $pymajorver, my $plpython = $solution->AddProject('plpython' . $pymajorver,
'dll', 'PLs', 'src/pl/plpython'); 'dll', 'PLs', 'src/pl/plpython');
$plpython->AddIncludeDir($pyprefix . '/include'); $plpython->AddIncludeDir($pyprefix . '/include');