This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author michael-o
Recipients michael-o, vstinner
Date 2019-04-30.11:15:46
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1556622948.14.0.900799269401.issue36758@roundup.psfhosted.org>
In-reply-to
Content
I do compile Python from master on HP-UX with aCC:

# echo $LDFLAGS $CPPFLAGS
-L/opt/ports/lib/hpux32 -I/opt/ports/include
UNIX_STD=1998 LDFLAGS="$LDFLAGS -lreadline" CPPFLAGS="-I$PREFIX/include/ncurses $CPPFLAGS" ./configure --prefix=/opt/python \
  --libdir=/opt/python/lib/hpux32 --with-system-expat --with-openssl=/opt/openssl

having libs in hpux32 or hpux64 is a convention on this platform. When Python is installed the following happens:

$ /opt/python/bin/python3
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Python 3.8.0a3+ (default, Apr 30 2019, 12:09:29) [C] on hp-ux11
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/opt/python/lib/python38.zip', '/opt/python/lib/python3.8', '/opt/python/lib/lib-dynload', '/net/home/osipovmi/.local/lib/python3.8/site-packages', '/opt/python/lib/python3.8/site-packages']

I don't see hpux32 anywhere here. Though all shared objects are there.

Reconfiguring:

# echo $LDFLAGS $CPPFLAGS
-L/opt/ports/lib/hpux32 -I/opt/ports/include
UNIX_STD=1998 LDFLAGS="$LDFLAGS -lreadline" CPPFLAGS="-I$PREFIX/include/ncurses $CPPFLAGS" ./configure --prefix=/opt/python \
  --with-system-expat --with-openssl=/opt/openssl

gives me the expected result:
$ /opt/python/bin/python3
Python 3.8.0a3+ (default, Apr 30 2019, 12:21:15) [C] on hp-ux11
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/opt/python/lib/python38.zip', '/opt/python/lib/python3.8', '/opt/python/lib/python3.8/lib-dynload', '/net/home/osipovmi/.local/lib/python3.8/site-packages', '/opt/python/lib/python3.8/site-packages']
>>>

It pretty much seems like '--libdir' is not correctly passed down to the installation.

I can see that at least this is wrong:
./Lib/distutils/tests/test_install.py:59:        libdir = os.path.join(destination, "lib", "python")
./Lib/distutils/command/install.py:32:        'purelib': '$base/lib/python$py_version_short/site-packages',
./Lib/distutils/command/install.py:33:        'platlib': '$platbase/lib/python$py_version_short/site-packages',
./Lib/distutils/command/install.py:39:        'purelib': '$base/lib/python',
./Lib/distutils/command/install.py:40:        'platlib': '$base/lib/python',
./Lib/sysconfig.py:23:        'stdlib': '{installed_base}/lib/python{py_version_short}',
./Lib/sysconfig.py:24:        'platstdlib': '{platbase}/lib/python{py_version_short}',
./Lib/sysconfig.py:25:        'purelib': '{base}/lib/python{py_version_short}/site-packages',
./Lib/sysconfig.py:26:        'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
./Lib/sysconfig.py:35:        'stdlib': '{installed_base}/lib/python',
./Lib/sysconfig.py:36:        'platstdlib': '{base}/lib/python',
./Lib/sysconfig.py:37:        'purelib': '{base}/lib/python',
./Lib/sysconfig.py:38:        'platlib': '{base}/lib/python',
./Lib/sysconfig.py:65:        'stdlib': '{userbase}/lib/python{py_version_short}',
./Lib/sysconfig.py:66:        'platstdlib': '{userbase}/lib/python{py_version_short}',
./Lib/sysconfig.py:67:        'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
./Lib/sysconfig.py:68:        'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
./Lib/sysconfig.py:74:        'stdlib': '{userbase}/lib/python',
./Lib/sysconfig.py:75:        'platstdlib': '{userbase}/lib/python',
./Lib/sysconfig.py:76:        'purelib': '{userbase}/lib/python/site-packages',
./Lib/sysconfig.py:77:        'platlib': '{userbase}/lib/python/site-packages',
./configure.ac:4653:  LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
./Misc/python-config.sh.in:50:LIBDEST=${prefix_real}/lib/python${VERSION}
./Modules/getpath.c:129:    wchar_t *lib_python;               /* "lib/pythonX.Y" */
./Modules/getpath.c:131:    wchar_t zip_path[MAXPATHLEN+1];    /* ".../lib/pythonXY.zip" */
./Modules/getpath.c:520:     * e.g. /usr/local/lib/python1.5 is reduced to /usr/local.
./Modules/getpath.c:1018:    err = joinpath(calculate->zip_path, L"lib/python00.zip", zip_path_len);
./Modules/getpath.c:1147:    calculate->lib_python = Py_DecodeLocale("lib/python" VERSION, &len);
./Python/coreconfig.c:103:#  define PYTHONHOMEHELP "<prefix>/lib/pythonX.X"


I have changed those files manually by adding '/hpux32' everywhere and ran configure with custom libdir:
no avail. 'lib/python' will still be used. If this cannot be changed, a warning should be issued with ./configure that custom libdir will lead to loading issues.
History
Date User Action Args
2019-04-30 11:15:48michael-osetrecipients: + michael-o, vstinner
2019-04-30 11:15:48michael-osetmessageid: <1556622948.14.0.900799269401.issue36758@roundup.psfhosted.org>
2019-04-30 11:15:47michael-olinkissue36758 messages
2019-04-30 11:15:46michael-ocreate