Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4d7d196

Browse files
committed
Replace use of deprecated Python module distutils.sysconfig, take 2.
With Python 3.10, configure spits out warnings about the moduledistutils.sysconfig being deprecated and scheduled for removal inPython 3.12. Change the uses in configure to use the module sysconfiginstead. The logic stays largely the same, although we have torely on INCLUDEPY instead of the deprecated get_python_inc function.Note that sysconfig exists since Python 2.7, so this moves theminimum required version up from Python 2.6 (or 2.4, before v13).Also, sysconfig didn't exist in Python 3.1, so the minimum 3.xversion is now 3.2.Back-patch of commitbd233bd into all supported branches.In v10, this also includes back-patching v11'sbeff4bb, primarilybecause this opinion is clearly out-of-date: While at it, get rid of the code's assumption that both the major and minor numbers contain exactly one digit. That will foreseeably be broken by Python 3.10 in perhaps four or five years. That's far enough out that we probably don't need to back-patch this.Peter Eisentraut, Tom Lane, Andres FreundDiscussion:https://postgr.es/m/c74add3c-09c4-a9dd-1a03-a846e5b2fc52@enterprisedb.com
1 parentff86ee3 commit4d7d196

File tree

3 files changed

+31
-45
lines changed

3 files changed

+31
-45
lines changed

‎config/python.m4

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,32 +37,25 @@ python_majorversion=`echo "$python_fullversion" | sed '[s/^\([0-9]*\).*/\1/]'`
3737
python_minorversion=`echo "$python_fullversion" | sed '[s/^[0-9]*\.\([0-9]*\).*/\1/]'`
3838
python_version=`echo "$python_fullversion" | sed '[s/^\([0-9]*\.[0-9]*\).*/\1/]'`
3939
# Reject unsupported Python versions as soon as practical.
40-
if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt6; then
41-
AC_MSG_ERROR([Python version $python_version is too old (version 2.6 or later is required)])
40+
if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt7; then
41+
AC_MSG_ERROR([Python version $python_version is too old (version 2.7 or later is required)])
4242
fi
4343
44-
AC_MSG_CHECKING([for Pythondistutils module])
45-
if "${PYTHON}" -c 'importdistutils' 2>&AS_MESSAGE_LOG_FD
44+
AC_MSG_CHECKING([for Pythonsysconfig module])
45+
if "${PYTHON}" -c 'importsysconfig' 2>&AS_MESSAGE_LOG_FD
4646
then
4747
AC_MSG_RESULT(yes)
4848
else
4949
AC_MSG_RESULT(no)
50-
AC_MSG_ERROR([distutils module not found])
50+
AC_MSG_ERROR([sysconfig module not found])
5151
fi
5252
5353
AC_MSG_CHECKING([Python configuration directory])
54-
python_configdir=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"`
54+
python_configdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBPL'))))"`
5555
AC_MSG_RESULT([$python_configdir])
5656
57-
AC_MSG_CHECKING([Python include directories])
58-
python_includespec=`${PYTHON} -c "
59-
import distutils.sysconfig
60-
a = '-I' + distutils.sysconfig.get_python_inc(False)
61-
b = '-I' + distutils.sysconfig.get_python_inc(True)
62-
if a == b:
63-
print(a)
64-
else:
65-
print(a + ' ' + b)"`
57+
AC_MSG_CHECKING([Python include directory])
58+
python_includespec=`${PYTHON} -c "import sysconfig; print('-I' + sysconfig.get_config_var('INCLUDEPY'))"`
6659
if test "$PORTNAME" = win32 ; then
6760
python_includespec=`echo $python_includespec | sed 's,[[\]],/,g'`
6861
fi
@@ -96,8 +89,8 @@ AC_DEFUN([PGAC_CHECK_PYTHON_EMBED_SETUP],
9689
[AC_REQUIRE([_PGAC_CHECK_PYTHON_DIRS])
9790
AC_MSG_CHECKING([how to link an embedded Python application])
9891
99-
python_libdir=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"`
100-
python_ldlibrary=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"`
92+
python_libdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBDIR'))))"`
93+
python_ldlibrary=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDLIBRARY'))))"`
10194
10295
# If LDLIBRARY exists and has a shlib extension, use it verbatim.
10396
ldlibrary=`echo "${python_ldlibrary}" | sed -e 's/\.so$//' -e 's/\.dll$//' -e 's/\.dylib$//' -e 's/\.sl$//'`
@@ -109,11 +102,11 @@ else
109102
# Otherwise, guess the base name of the shlib.
110103
# LDVERSION was added in Python 3.2, before that use VERSION,
111104
# or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS.
112-
python_ldversion=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
105+
python_ldversion=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDVERSION'))))"`
113106
if test x"${python_ldversion}" != x""; then
114107
ldlibrary="python${python_ldversion}"
115108
else
116-
python_version_var=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"`
109+
python_version_var=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('VERSION'))))"`
117110
if test x"${python_version_var}" != x""; then
118111
ldlibrary="python${python_version_var}"
119112
else
@@ -173,7 +166,7 @@ PL/Python.])
173166
fi
174167
python_libspec="-L${python_libdir} -l${ldlibrary}"
175168
176-
python_additional_libs=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
169+
python_additional_libs=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
177170
178171
AC_MSG_RESULT([${python_libspec} ${python_additional_libs}])
179172

‎configure

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10038,38 +10038,31 @@ python_majorversion=`echo "$python_fullversion" | sed 's/^\([0-9]*\).*/\1/'`
1003810038
python_minorversion=`echo "$python_fullversion" | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`
1003910039
python_version=`echo "$python_fullversion" | sed 's/^\([0-9]*\.[0-9]*\).*/\1/'`
1004010040
# Reject unsupported Python versions as soon as practical.
10041-
if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt6; then
10042-
as_fn_error $? "Python version $python_version is too old (version 2.6 or later is required)" "$LINENO" 5
10041+
if test "$python_majorversion" -lt 3 -a "$python_minorversion" -lt7; then
10042+
as_fn_error $? "Python version $python_version is too old (version 2.7 or later is required)" "$LINENO" 5
1004310043
fi
1004410044

10045-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pythondistutils module" >&5
10046-
$as_echo_n "checking for Pythondistutils module... " >&6; }
10047-
if "${PYTHON}" -c 'importdistutils' 2>&5
10045+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Pythonsysconfig module" >&5
10046+
$as_echo_n "checking for Pythonsysconfig module... " >&6; }
10047+
if "${PYTHON}" -c 'importsysconfig' 2>&5
1004810048
then
1004910049
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
1005010050
$as_echo "yes" >&6; }
1005110051
else
1005210052
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
1005310053
$as_echo "no" >&6; }
10054-
as_fn_error $? "distutils module not found" "$LINENO" 5
10054+
as_fn_error $? "sysconfig module not found" "$LINENO" 5
1005510055
fi
1005610056

1005710057
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python configuration directory" >&5
1005810058
$as_echo_n "checking Python configuration directory... " >&6; }
10059-
python_configdir=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"`
10059+
python_configdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBPL'))))"`
1006010060
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_configdir" >&5
1006110061
$as_echo "$python_configdir" >&6; }
1006210062

10063-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python include directories" >&5
10064-
$as_echo_n "checking Python include directories... " >&6; }
10065-
python_includespec=`${PYTHON} -c "
10066-
import distutils.sysconfig
10067-
a = '-I' + distutils.sysconfig.get_python_inc(False)
10068-
b = '-I' + distutils.sysconfig.get_python_inc(True)
10069-
if a == b:
10070-
print(a)
10071-
else:
10072-
print(a + ' ' + b)"`
10063+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python include directory" >&5
10064+
$as_echo_n "checking Python include directory... " >&6; }
10065+
python_includespec=`${PYTHON} -c "import sysconfig; print('-I' + sysconfig.get_config_var('INCLUDEPY'))"`
1007310066
if test "$PORTNAME" = win32 ; then
1007410067
python_includespec=`echo $python_includespec | sed 's,[\],/,g'`
1007510068
fi
@@ -10081,8 +10074,8 @@ $as_echo "$python_includespec" >&6; }
1008110074
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link an embedded Python application" >&5
1008210075
$as_echo_n "checking how to link an embedded Python application... " >&6; }
1008310076

10084-
python_libdir=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"`
10085-
python_ldlibrary=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"`
10077+
python_libdir=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBDIR'))))"`
10078+
python_ldlibrary=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDLIBRARY'))))"`
1008610079

1008710080
# If LDLIBRARY exists and has a shlib extension, use it verbatim.
1008810081
ldlibrary=`echo "${python_ldlibrary}" | sed -e 's/\.so$//' -e 's/\.dll$//' -e 's/\.dylib$//' -e 's/\.sl$//'`
@@ -10094,11 +10087,11 @@ else
1009410087
# Otherwise, guess the base name of the shlib.
1009510088
# LDVERSION was added in Python 3.2, before that use VERSION,
1009610089
# or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS.
10097-
python_ldversion=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
10090+
python_ldversion=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LDVERSION'))))"`
1009810091
if test x"${python_ldversion}" != x""; then
1009910092
ldlibrary="python${python_ldversion}"
1010010093
else
10101-
python_version_var=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"`
10094+
python_version_var=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('VERSION'))))"`
1010210095
if test x"${python_version_var}" != x""; then
1010310096
ldlibrary="python${python_version_var}"
1010410097
else
@@ -10158,7 +10151,7 @@ PL/Python." "$LINENO" 5
1015810151
fi
1015910152
python_libspec="-L${python_libdir} -l${ldlibrary}"
1016010153

10161-
python_additional_libs=`${PYTHON} -c "importdistutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
10154+
python_additional_libs=`${PYTHON} -c "import sysconfig; print(' '.join(filter(None,sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
1016210155

1016310156
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${python_libspec} ${python_additional_libs}" >&5
1016410157
$as_echo "${python_libspec} ${python_additional_libs}" >&6; }

‎doc/src/sgml/installation.sgml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,10 @@ su - postgres
195195
To build the <application>PL/Python</application> server programming
196196
language, you need a <productname>Python</productname>
197197
installation with the header files and
198-
the <application>distutils</application> module. The minimum
199-
required version is <productname>Python</productname> 2.6.
198+
the <application>sysconfig</application> module. The minimum
199+
required version is <productname>Python</productname> 2.7.
200200
<productname>Python 3</productname> is supported if it's
201-
version 3.1 or later; but see
201+
version 3.2 or later; but see
202202
<xref linkend="plpython-python23"/>
203203
when using Python 3.
204204
</para>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp