[wxPython] RE: [SciPy-dev] Announce: First installable version of Chaco plotting toolkit is now available
Skip Montanaro
skip at pobox.com
Mon Sep 23 15:57:26 EDT 2002
Skip> export WXPREF=/usr/local
Skip> ../configure --with-gtk --prefix=$WXPREF --enable-rpath=$WXPREF/lib \
Skip> --with-opengl --enable-optimise --enable-debug_flag \
Skip> --with-libjpeg=builtin --with-libpng=builtin --with-libtiff=builtin \
Skip> --with-zlib=builtin
Robin> If you're going to install wxWindows into /usr/local then there's
Robin> no real reason to follow the directions for the private wx, but
Robin> it should still work like this...
That's what I figured, but I also figured it was marginally better to be
pedantic in case WXPREF was used somewhere other than via the command line.
Skip> I poked around for "__ti7wxEvent". All I found were a couple undefined
Skip> references:
Skip> ./wxPython/build/temp.linux-i686-2.3/helpers.o
Skip> U __ti7wxEvent
Skip> ./wxPython/build/temp.linux-i686-2.3/dynamicsash.o
Skip> U __ti7wxEvent
Robin> I've just tried exactly what you did above on my Mandrake 8.2
Robin> system with Python 2.2 and it works fine.
What file defines wxEvent? You must surely have a .o file which defines it
as an exportable symbol.
Robin> One possibility -- since the wxPython build gets its compiler
Robin> flags and etc. from Python's build via distutils -- is that there
Robin> is some flag conflicting with wxGTK's build that has changed with
Robin> Python 2.3. I'd be interested in seeing a copy of a compile
Robin> commandline for one of the sources from the wxGTK build and
Robin> another one from the wxPython build.
An example from (wxPython's internal) wxGTK with the no_rtti and
no_exceptions flags set:
c++ -c -I./lib/wx/include/gtkd-2.3 -I../include -I../src/zlib \
-I../src/png -I../src/jpeg -I../src/tiff -I/usr/include/gtk-1.2 \
-I/usr/include/glib-1.2 -I/usr/lib/glib/include -D_REENTRANT \
-I/usr/X11R6/include -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES \
-D__WXGTK__ -D__WXDEBUG__ -fno-rtti -fno-exceptions -O2 -MMD -pthread \
-Wall -fPIC -o brush.o ../src/gtk/brush.cpp
Here's one from wxPython:
gcc -DNDEBUG -O3 -fPIC -DSWIG_GLOBAL -DHAVE_CONFIG_H -DWXP_USE_THREAD=1 \
-Isrc -I/usr/local/include/python2.3 -c contrib/dllwidget/dllwidget.cpp \
-o build/temp.linux-i686-2.3/dllwidget.o \
-I/usr/local/lib/wx/include/gtkd-2.3 -D__WXDEBUG__ -D__WXGTK__ \
-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -fno-rtti -fno-exceptions \
-I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include \
-I/usr/X11R6/include -UNDEBUG
Robin> Another possibility is that it may be fixed simply by disabling
Robin> rtti and/or exceptions in the wxGTK build. You can try adding
Robin> the following flags and then rebuilding all of wxGTK and
Robin> wxPython:
Robin> --enable-no_rtti
Robin> --enable-no_exceptions
Just tried that. Running wxPython/demo/demo.py now yields:
Traceback (most recent call last):
File "demo.py", line 3, in ?
import Main
File "Main.py", line 15, in ?
from wxPython.wx import *
File "/usr/local/lib/python2.3/site-packages/wxPython/__init__.py", line 20, in ?
import wxc
ImportError: /usr/local/lib/python2.3/site-packages/wxPython/wxc.so:
undefined symbol: Eof__C13wxInputStream
which c++filt reports as
wxInputStream::Eof(void) const
The original __ti7wxEvent symbol is no longer to be found anywhere (defined
or referenced). Eof__C13wxInputStream is referenced from
./wxPython/build/temp.linux-i686-2.3/helpers.o.
Ah, wait a minute. I see a likely candidate for the screwup:
% type c++
c++ is /usr/local/bin/c++
% c++ --version
3.0.4
% type gcc
gcc is /usr/bin/gcc
% gcc --version
2.96
Does mix-n-match across GCC versions strike you as a plausible reason for
the errors? I am rebuilding while I await your reply...
Skip
More information about the SciPy-Dev
mailing list