PostgreSQL Friends:
Trying to build 9.6RC1, with Python3.4, on OpenIndiana (Illumos). It seems the
detection of shared library status of the .so has changed. This appears to be
related to a different(?) elucidation of python configuration.
A 'hardwired' change to the configure script to trap platform 'solaris' will
work, but this seems the inappropriate approach.
Would be happy to work through this here - I'd like to make it a small
'contribution'.
Clipped from configure script:
1.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link an embedded
Python application" >&5
2.
$as_echo_n "checking how to link an embedded Python application... " >&6; }
3.
4.
python_libdir=`${PYTHON} -c "import distutils.sysconfig; print('
'.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'"`
5.
python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print('
'.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'"`
6.
python_so=`${PYTHON} -c "import distutils.sysconfig; print('
'.join(filter(None,distutils.sysconfig.get_config_vars('SO'"`
7.
echo "-"
8.
echo "- LOU MOD: python_so: $python_so"
9.
echo "-"
10.
11.
configure finds '.so' on Python2.7
12.
configure finds '.cpython-34m.so' on Python3.4
13.
14.
- LATER in the config script, the following 'hardwired' change will
'fix' this, but is likely not the right approach:
15.
(our Python _is_ built as a shared lib. So, this is wonky, but it will work: )
16.
17.
# We need libpython as a shared library. With Python >=2.5, we
18.
# check the Py_ENABLE_SHARED setting. On Debian, the setting is not
19.
# correct before the jessie release (http://bugs.debian.org/695979).
20.
# We also want to support older Python versions. So as a fallback
21.
# we see if there is a file that is named like a shared library.
22.
23.
if test "$python_enable_shared" != 1; then
24.
if test "$PORTNAME" = darwin; then
25.
# macOS does supply a .dylib even though Py_ENABLE_SHARED does
26.
# not get set. The file detection logic below doesn't succeed
27.
# on older macOS versions, so make it explicit.
28.
python_enable_shared=1
29.
elif test "$PORTNAME" = win32; then
30.
# Windows also needs an explicit override.
31.
python_enable_shared=1
32.
# - MOD BY LOU:
33.
elif test "$PORTNAME" = solaris; then
34.
# Solaris explicit override.
35.
python_enable_shared=1
36.
else
37.
# We don't know the platform shared library extension here yet,
38.
# so we try some candidates.
39.
for dlsuffix in .so .sl; do
40.
if ls "$python_libdir"/libpython*${dlsuffix}* >/dev/null 2>&1; then
41.
python_enable_shared=1
42.
break
43.
fi
44.
done
45.
fi
46.
fi