[Python-Dev] Use of objdump within ctypes _get_soname() (original) (raw)
Ray Donnelly mingw.android at gmail.com
Wed Oct 10 07:24:54 EDT 2018
- Previous message (by thread): [Python-Dev] Use of objdump within ctypes _get_soname()
- Next message (by thread): [Python-Dev] Python startup time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I've looked into this more and it is more subtle than my initial report suggests (as usual).
We have some custom code in AD around find_library() so it looks in sys.prefix/lib (on Unix) and I had a bug in that code when _get_soname returned None. I've fixed that now.
I believe there is a condition under which this could go wrong which is if the soname returned by objdump differs from the filename and then the filename is not found. This would happen to people with objdump installed but not to people without it installed, so I feel the behaviour here should be unified. If you think we should unify it by implementing a python replacement for this functionality then I'll get on with a PR (and file that bug report too), the other option is to just remove this part and have just the fallbacks happen instead? On Tue, Oct 9, 2018 at 8:13 AM Gregory P. Smith <greg at krypto.org> wrote:
On Mon, Oct 8, 2018 at 11:59 PM Ray Donnelly <mingw.android at gmail.com> wrote: Hi, We ran into an issue on the Anaconda Distribution recently where we added libarchive-c to conda-build (so we can un-compress more source archive formats than tarfile supports) and everything was good a few hours, until it hit various CI systems where objdump is not installed. I was a bit surprised by this dependency and wondered if there'd be interest in a fallback path that inspects the elf with some fairly simple python code to determine the soname instead? I have code that works already - though it could do with and a tidy up - and has been tested on a variety of architectures. Would CPython be interested in an attempt to upstream this? Is it documented anywhere that objdump is needed to load some extension modules on Linux? Wow, that looks like gross code buried within ctypes.util (which libarchive-c uses) that calls various platforms versions of objdump or equivalent. File a bugs.python.org issue and submit a PR, native ELF header reading code for this makes sense. -G
Best regards, Ray Donnelly, Anaconda Inc,
Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/greg%40krypto.org
- Previous message (by thread): [Python-Dev] Use of objdump within ctypes _get_soname()
- Next message (by thread): [Python-Dev] Python startup time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]