Message260890
The _dlopen call in __init__.py I have been able to fix (hack) with the following:
root@x064:[/data/prj/aixtools/python/python-2.7.10/Lib/ctypes]diff -u __init__.py /opt/lib/python2.7/ctypes/__init__.py
--- __init__.py 2015-05-23 16:09:01 +0000
+++ /opt/lib/python2.7/ctypes/__init__.py 2016-02-26 08:40:19 +0000
@@ -11,6 +11,7 @@
from _ctypes import _Pointer
from _ctypes import CFuncPtr as _CFuncPtr
from _ctypes import __version__ as _ctypes_version
+# from _ctypes import RTLD_LOCAL, RTLD_GLOBAL, RTLD_NOW ## fails
from _ctypes import RTLD_LOCAL, RTLD_GLOBAL
from _ctypes import ArgumentError
@@ -32,6 +33,11 @@
if int(_os.uname()[2].split('.')[0]) < 8:
DEFAULT_MODE = RTLD_GLOBAL
+if _os.name == "posix" and _sys.platform.startswith("aix"):
+ RTLD_NOW = 0x00000002
+ RTLD_MEMBER = 0x00040000
+ DEFAULT_MODE |= (RTLD_NOW | RTLD_MEMBER)
+
from _ctypes import FUNCFLAG_CDECL as _FUNCFLAG_CDECL, \
FUNCFLAG_PYTHONAPI as _FUNCFLAG_PYTHONAPI, \
FUNCFLAG_USE_ERRNO as _FUNCFLAG_USE_ERRNO, \
I have an additional hack in util.py so that, e.g.,
find_Library("crypto")
returns:
'/usr/lib/libcrypto.a(libcrypto.so)'
When that is passed to dlopen (plus RTLD_MEMBER) the dlopen succeeds.
<CDLL '/usr/lib/libcrypto.a/(libcrypto.so)', handle 6 at 30146670>
With some help in util.py, to do some sensible searching, being able to establish if in 32 or 64-bit mode, etc. somehing nice can be made here (imho).
p.s. can any verify whether this is limited to python 2.7? Or should python 3.X be added as well? |
|
Date |
User |
Action |
Args |
2016-02-26 08:49:33 | Michael.Felt | set | recipients:
+ Michael.Felt |
2016-02-26 08:49:33 | Michael.Felt | set | messageid: <1456476573.81.0.0862852557307.issue26439@psf.upfronthosting.co.za> |
2016-02-26 08:49:33 | Michael.Felt | link | issue26439 messages |
2016-02-26 08:49:31 | Michael.Felt | create | |
|