On 11 May 2016 at 10:58, Matthew Brett <[email protected]> wrote:
> On Tue, May 10, 2016 at 6:38 PM, Nathaniel Smith <[email protected]> wrote: > > On Tue, May 10, 2016 at 3:09 PM, Leonardo Rochael Almeida > > <[email protected]> wrote: > >> On 10 May 2016 at 18:52, Matthew Brett <[email protected]> wrote: > >>> > >>> On Tue, May 10, 2016 at 5:26 PM, Matthew Brett < > [email protected]> > >>> wrote: > >>> >> [...] > >>> >> > >>> >> This would probably look like: > >>> >> > >>> >> _tkagg.so has a DT_NEEDED entry naming tkinter.so (or whatever > Python > >>> >> calls > >>> >> this module) > >>> >> > >>> >> Before loading _tkagg.so, we use Python level introspection figure > out > >>> >> where > >>> >> tkinter.so lives > >>> >> > >>> >> We add its directory to LD_LIBRARY_PATH > >>> >> > >>> >> we import _tkagg.so > >>> >> > >>> >> We take its directory back off of LD_LIBRARY_PATH > >>> >> > >>> >> Very weird, but I can't see why it wouldn't work, and probably more > >>> >> reliable > >>> >> than anything where we try to reimplement the dynamic loader's > search > >>> >> logic > >>> >> ourselves. > >>> > > >>> > Nice - yes - it does work in a first-pass test - I'll look into > >>> > automating that. > >>> > >>> Ah - except I do not believe it is possible to change the linker path > >>> for Python modules, within the Python process: > >>> > >>> http://www.gossamer-threads.com/lists/python/python/393770#393770 > > > > Doh :-( > > Any other suggestions? > Calling `patchelf` at runtime with the result of introspecting the `_tkinter.so` module? :-) On a more serious note, even though it would be dangerous to call `sys.setdlopenflags()` with `RTLD_GLOBAL`, we could perhaps manually call: - ctypes.CDLL("/path/to/introspected/libtk.so", DLFCN.RTLD_GLOBAL) - ctypes.CDLL("/path/to/introspected/libtcl.so", DLFCN.RTLD_GLOBAL) before importing a `_tkagg.so` with `libtk` and `libtcl` patchelf-removed (but not re-added). We would be dumping only libtcl/tk's symbols in the namespace of other python extension modules. > I guess this will be a problem for the external library PEP? > Likely, yes.
_______________________________________________ Wheel-builders mailing list [email protected] https://mail.python.org/mailman/listinfo/wheel-builders
