classification
Title: EXT_SUFFIX is missing '.sl' on HP-UX
Type: behavior Stage: resolved
Components: Extension Modules Versions: Python 3.11
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: florinspatar, lukasz.langa, mattip, miss-islington, pablogsal, python-dev, vstinner
Priority: normal Keywords: patch

Created on 2021-08-20 09:34 by florinspatar, last changed 2021-11-18 16:19 by lukasz.langa. This issue is now closed.

Files
File name Uploaded Description Edit
python-hpux-extension-suffixes.patch florinspatar, 2021-08-20 09:34 proposed fixing patch
Pull Requests
URL Status Linked Edit
PR 27857 merged python-dev, 2021-08-20 10:57
PR 29152 merged miss-islington, 2021-10-22 10:30
PR 29153 merged miss-islington, 2021-10-22 10:30
Messages (9)
msg399945 - (view) Author: Florin Spătar (florinspatar) * Date: 2021-08-20 09:34
On HP-UX, python can no longer find extension modules with the '.sl' suffix.

[fspatar@hpux1131:/cust/fspatar/buildtest/hp-ux/11.31/build]> ~/tmp/investigation3/old/bin/python3
Python 3.8.11 (default, Aug  3 2021, 06:15:31) 
[GCC 4.2.4] on hp-ux-pa
Type "help", "copyright", "credits" or "license" for more information.
>>> import M2Crypto
Traceback (most recent call last):
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/m2crypto.py", line 16, in swig_import_helper
    fp, pathname, description = imp.find_module('_m2crypto', [dirname(__file__)])
  File "/h/fspatar/tmp/investigation3/old/lib/python3.8/imp.py", line 296, in find_module
    raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named '_m2crypto'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/__init__.py", line 37, in <module>
    from M2Crypto import (ASN1, AuthCookie, BIO, BN, DH, DSA, EVP, Engine, Err,
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/ASN1.py", line 15, in <module>
    from M2Crypto import BIO, m2, py27plus, six, has_typing
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/BIO.py", line 9, in <module>
    from M2Crypto import m2, py27plus, six, has_typing
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/m2.py", line 30, in <module>
    from M2Crypto.m2crypto import *
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/m2crypto.py", line 26, in <module>
    _m2crypto = swig_import_helper()
  File "/cust/fspatar/buildtest/hp-ux/11.31/build/M2Crypto/m2crypto.py", line 18, in swig_import_helper
    import _m2crypto
ModuleNotFoundError: No module named '_m2crypto'

This works fine in python 3.8.5

[fspatar@hpux1131:/cust/fspatar/buildtest/hp-ux/11.31/build]> /opt/OPSWbuildtools/2.0.5/python/3.8.5.04/bin/python3
Python 3.8.5 (default, Jul 28 2021, 08:38:55) 
[GCC 4.2.4] on hp-ux-pa
Type "help", "copyright", "credits" or "license" for more information.
>>> import M2Crypto

It seems to be related to recent changes from https://bugs.python.org/issue42604

Given the file name is _m2crypto.sl, python 3.8.11 can no longer find it. Based on https://www.python.org/dev/peps/pep-3149/#pep-384, my understanding is that python should search for the following file names when extension module _m2crypto is imported (in this order):

_m2crypto.cpython-38.sl
_m2crypto.so

Python can only load the extension module if the file name is _m2crypto.cpython-38.sl

[fspatar@hpux1131:/cust/fspatar/buildtest/hp-ux/11.31/build]> ~/tmp/investigation3/old/bin/python3
Python 3.8.11 (default, Aug  3 2021, 06:15:31) 
[GCC 4.2.4] on hp-ux-pa
Type "help", "copyright", "credits" or "license" for more information.
>>> import _imp
>>> _imp.extension_suffixes()
['.cpython-38.sl']
>>> 

[fspatar@hpux1131:/cust/fspatar/buildtest/hp-ux/11.31/build]> /opt/OPSWbuildtools/2.0.5/python/3.8.5.04/bin/python3
Python 3.8.5 (default, Jul 28 2021, 08:38:55) 
[GCC 4.2.4] on hp-ux-pa
Type "help", "copyright", "credits" or "license" for more information.
>>> import _imp
>>> _imp.extension_suffixes()
['.sl']
>>>
msg399947 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2021-08-20 09:37
Can you please try to convert your patch into a GitHub pull request?
msg399955 - (view) Author: mattip (mattip) * Date: 2021-08-20 10:21
I assume you tried and succeeded with your patch. Could you post what `_imp.extension_suffixes()` reports after the patch? 

I am a bit confused because you said the following, should the last line be `_m2crypto.sl` and not `_m2crypto.sl` ?

my understanding is that python should search for the following file names when extension module _m2crypto is imported (in this order):

_m2crypto.cpython-38.sl
_m2crypto.so
msg399959 - (view) Author: Florin Spătar (florinspatar) * Date: 2021-08-20 10:38
@mattip
Yes, the patch fixed the issue and the extension module import works.

With the patch applied:

[fspatar@hpux1131:/cust/fspatar/buildtest/hp-ux/11.31/build]> /opt/OPSWbuildtools/2.0.5/python/3.8.11.01/bin/python3
Python 3.8.11 (default, Aug  4 2021, 03:13:01) 
[GCC 4.2.4] on hp-ux-pa
Type "help", "copyright", "credits" or "license" for more information.
>>> import _imp
>>> _imp.extension_suffixes()
['.cpython-38.sl', '.sl']
>>> 

Sorry for the confusion; I meant python should search for the following file names when extension module _m2crypto is imported (in this order):

_m2crypto.cpython-38.sl
_m2crypto.sl

@vstinner
I'm working on the pull request.
msg401379 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2021-09-08 12:43
New changeset 2396fa6537d79554ac694dbd2b0b30eeb3476c80 by Florin Spătar in branch 'main':
bpo-44959: Add fallback to extension modules with '.sl' suffix on HP-UX (GH-27857)
https://github.com/python/cpython/commit/2396fa6537d79554ac694dbd2b0b30eeb3476c80
msg404742 - (view) Author: Florin Spătar (florinspatar) * Date: 2021-10-22 10:12
Can this be merged to python 3.10 as well? Thanks
msg404747 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2021-10-22 10:31
> Can this be merged to python 3.10 as well? Thanks

It's unclear to me if it's a new feature or a bugfix. But since the change is trivial, I'm fine with backporting it as a bugfix to 3.9 and 3.10 branches.
msg404751 - (view) Author: miss-islington (miss-islington) Date: 2021-10-22 11:08
New changeset aa8c3446c085175e65e736b0d2e32719c00004d2 by Miss Islington (bot) in branch '3.9':
bpo-44959: Add fallback to extension modules with '.sl' suffix on HP-UX (GH-27857)
https://github.com/python/cpython/commit/aa8c3446c085175e65e736b0d2e32719c00004d2
msg406552 - (view) Author: Łukasz Langa (lukasz.langa) * (Python committer) Date: 2021-11-18 16:19
New changeset 6d66de97f814fb504296c153957d87e49993f8ec by Miss Islington (bot) in branch '3.10':
bpo-44959: Add fallback to extension modules with '.sl' suffix on HP-UX (GH-27857) (GH-29152)
https://github.com/python/cpython/commit/6d66de97f814fb504296c153957d87e49993f8ec
History
Date User Action Args
2021-11-18 16:19:28lukasz.langasetnosy: + lukasz.langa
messages: + msg406552
2021-10-22 11:08:54miss-islingtonsetmessages: + msg404751
2021-10-22 10:31:32vstinnersetmessages: + msg404747
2021-10-22 10:30:32miss-islingtonsetpull_requests: + pull_request27430
2021-10-22 10:30:27miss-islingtonsetpull_requests: + pull_request27429
2021-10-22 10:12:58florinspatarsetmessages: + msg404742
2021-09-08 12:43:39vstinnersetstatus: open -> closed
stage: patch review -> resolved
resolution: fixed
versions: + Python 3.11, - Python 3.8
2021-09-08 12:43:07vstinnersetmessages: + msg401379
2021-08-20 10:57:27python-devsetnosy: + python-dev

pull_requests: + pull_request26316
stage: patch review
2021-08-20 10:38:42florinspatarsetmessages: + msg399959
2021-08-20 10:21:29mattipsetmessages: + msg399955
2021-08-20 09:37:39vstinnersetmessages: + msg399947
2021-08-20 09:34:42florinspatarcreate