TclError: couldn't load file "/usr/lib/libtix": /usr/lib/libtix.so:
undefined symbol: XLowerWindow
rendering Tix unuseable. This has been reported a few weeks ago on
comp.lang.python.
The problem is that the RPM libtix.so is not linked against libX11.so, and when
_tkinter.so loads the former dynamically, many symbols can't be resolved
(starting with XLowerWindow). By comparison, tixwish works normally as it is
linked against both libtix.so and libX11.so.
The solution is to explicitly link _tkinter.so against libtix.so, so that
references to libX11.so can be resolved when _tkinter.so itself is loaded
(_tkinter.so is already linked against libX11.so).
Somewhere in setup.py for Python 2.2 is the following:
# Add the Tcl/Tk libraries
libs.append('tk'+version)
libs.append('tcl'+version)
Insert a line to have _tkinter.so linked against libtix.so:
# Add the Tcl/Tk libraries
libs.append('tix')
libs.append('tk'+version)
libs.append('tcl'+version)
then
python setup.py build
python setup.py install
as usual. A more generic solution would add this entry only if Tix was
available, but this quick workaround works for me.
--
Ben Caradoc-Davies <b...@wintersun.org>
http://wintersun.org/
Imprisonment on arrival is the authentic Australian immigration experience.
Yikes! A clean Python build and installation should of course be
./configure; make; make test; make install
Must try to get more sleeeeep ...
> Yikes! A clean Python build and installation should of course be
>
> ./configure; make; make test; make install
>
> Must try to get more sleeeeep ...
I'd suggest
./configure && make && make test && make install
:-).
--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/ \ Never make a promise or plan / Take a little love where you can
\__/ Florence, _Chess_
Bosskey.net: Quake III Arena / http://www.bosskey.net/q3a/
A personal guide to Quake III Arena.
I have tried your suggestion for Python 2.3a1
(under Red Hat 7.2). Doesn't work. Same error. :-(
Michele
1. Did you do a clean install (using make, not my stupid "python setup.py
install")? I noticed that without the make, _tkinter.so gets installed into
site-packages, not into lib-dynload, and the old _tkinter.so is found
first. You have to move it by hand into lib-dynload. Sorry for the
confusion.
2. Was _tkinter.so linked against libtix.so? Use (assuming
--prefix=/usr/local)
find /usr/local/lib/python2.3 -name _tkinter.so
to see how many _tkinter.so you have ;-) then
find /usr/local/lib/python2.3 -name _tkinter.so -exec ldd {} \;
to see if it is linked against libtix.so. You may have an old _tkinter.so
in lib-dynload.
The fix works with Red Hat 7.2 + Python 2.2c1, and Red Hat 7.0 + lots of
updates + Python 2.2.1.
Depends how much faith you have in your reflexes. ;-)
> Erik Max Francis <m...@alcyone.com> wrote:
>
> > I'd suggest
> >
> > ./configure && make && make test && make install
> >
> > :-).
>
> Depends how much faith you have in your reflexes. ;-)
I was thinking more along the lines of faith (or lack thereof) in each
step succeeding.
--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/ \ Do not seek death. Death will find you.
\__/ Dag Hammarskjold
Esperanto reference / http://www.alcyone.com/max/lang/esperanto/
An Esperanto reference for English speakers.
What's wrong with a shriek of panic and a half-dozen ^C^C^C^C^C^C to save your
production box if a step doesn't work? Surely there's a junior staff member you
can blame? ;->