Hi Mike,

OK, I've just done the svn co of v0_91_maint and get the output here:

============================================================================
BUILDING MATPLOTLIB
             matplotlib: 0.91.2svn
                 python: 2.5.2 (r252:60911, Apr 21 2008, 11:12:42)  [GCC
                         4.2.3 (Ubuntu 4.2.3-2ubuntu7)]
               platform: linux2

REQUIRED DEPENDENCIES
                  numpy: 1.0.4
              freetype2: 9.16.3

OPTIONAL BACKEND DEPENDENCIES
                 libpng: 1.2.15beta5
                Tkinter: no
                         * Tkinter present, but header files are not found.
                         * You may need to install development packages.
               wxPython: 2.8.7.1
                         * WxAgg extension not required for wxPython >= 2.8
                   Gtk+: gtk+: 2.12.9, glib: 2.16.3, pygtk: 2.12.1,
                         pygobject: 2.14.1
                         * Could not find Gtk+ headers in any of
                         * '/usr/local/include', '/usr/include', '.'
                     Qt: Qt: 3.3.8, PyQt: 3.17.4
                    Qt4: Qt: 4.3.4, PyQt4: 4.3.3
                  Cairo: 1.4.0

OPTIONAL DATE/TIMEZONE DEPENDENCIES
               datetime: present, version unknown
               dateutil: 1.3
                   pytz: 2007k

OPTIONAL USETEX DEPENDENCIES
                 dvipng: 1.9
            ghostscript: 8.61
                  latex: 3.141592
                pdftops: 3.00

EXPERIMENTAL CONFIG PACKAGE DEPENDENCIES
              configobj: 4.4.0
       enthought.traits: 2.0.1b1

=========================================================================

I then added the python-gtk2-dev package and it built the _gtkagg.so 
backend by default. This looks fine, but it is not making TkAgg. So I 
added "tkagg = True" to setup.cfg and it gets up to:

=========================================================================
building 'matplotlib.backends._tkagg' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall 
-Wstrict-prototypes -fPIC -I/usr/share/include -I/usr/share/include 
-I/usr/include/libpng12 -I/usr/local/include -I/usr/include -I. -Isrc 
-Iswig -Iagg23/include -I. -I/usr/include/freetype2 -I/usr/local/include 
-I/usr/include -I. -I/usr/include/python2.5 -c src/_tkagg.cpp -o 
build/temp.linux-i686-2.5/src/_tkagg.o
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for 
Ada/C/ObjC but not for C++
src/_tkagg.cpp:28:18: error: tk.h: No such file or directory
src/_tkagg.cpp:36: error: ISO C++ forbids declaration of Tcl_Interp with 
no type
src/_tkagg.cpp:36: error: expected ; before * token
[snip - more errors ...]
========================================================================

It has missed tk.h. I have the tk-dev and tcl-dev packages (and of course 
the "build-essential" which gives standard headers etc).

`locate tk.h` gives /usr/include/tcl8.4/tk.h

so I edited setupext.py to give:

svn diff
Index: setupext.py
===================================================================
--- setupext.py (revision 5276)
+++ setupext.py (working copy)
@@ -977,6 +977,12 @@
                      os.path.exists('/usr/include/tk.h')):
                      tcl_inc = '/usr/include'
                      tk_inc = '/usr/include'
+                # Ubuntu 8.04
+                if (sys.platform.startswith('linux') and
+                    os.path.exists('/usr/include/tcl8.4/tcl.h') and
+                    os.path.exists('/usr/include/tcl8.4/tk.h')):
+                    tcl_inc = '/usr/include/tcl8.4'
+                    tk_inc = '/usr/include/tcl8.4'
          else:
              message = """\
  Using default library and include directories for Tcl and Tk because a
==================================================================

... and now it builds and seems to work. With this patch it says:

=============================================================
...
OPTIONAL BACKEND DEPENDENCIES
...
                Tkinter: Tkinter: 50704, Tk: 8.4, Tcl: 8.4
=============================================================



I thought you are expected to pick up the correct include directories from 
the files tclConfig.sh and tkConfig.sh, which are found in the lib 
directory returned from your query_tcltk function? Obviously, my solution 
is going to give problems for people who are not using 8.4, or who have 
something else different etc. Parsing tclConfig.sh seems like overkill - 
maybe try asking the python/distutils folks?

Best

Jon








On Tue, 27 May 2008, Michael Droettboom wrote:

> I'm moving this second question onto the matplotlib-devel list.
>
> It seems that a user is unable to build the tkagg extension from source on 
> Ubuntu 8.04.  I know the Tcl/Tk header lookup mechanism is inherently 
> complex.  Could someone who knows what's going on there have a look?
>
> Jonathan: Could you please provide the output of a compile without your 
> modifications to make it work?  We'd like this to work automatically.
>
> Cheers,
> Mike
>
> Jonathan Wright wrote:
>> Mike,
>> 
>> That fixes things for me - many thanks. Unrelated, but to build from SVN I 
>> had to go diving in setupext.py to say that the tk include files are in:
>> 
>> /usr/include/tcl8.4
>> 
>> ... while the tcl install home is /usr/share/tcltk. The command "locate 
>> tk.h" was particularly useful.
>> 
>> Many thanks again,
>> 
>> Jon
>> 
>> Michael Droettboom wrote:
>>> I assume you're using the matplotlib 0.91.2 that's distributed with 
>>> Ubuntu 8.04.
>>> 
>>> There was a recent fix for segfaulting in the exact same place (outside 
>>> of any sort of freezing apparatus).  Since it was related to the 
>>> interpretation of a pointer, it's possible that you would see this 
>>> inside of cx-freeze and not outside on the same machine, just because 
>>> things get loaded into different parts of memory.  I would try that fix 
>>> first, and then look at problems related to freezing.
>>> 
>>> We should have a new release out shortly, but it's unclear how long that 
>>> will take to trickle down into Ubuntu repositories.
>>> 
>>> You can check out the SVN maintenance branch from here (which has this 
>>> bugfix):
>>> 
>>>  svn co 
>>> https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_91_maint 
>>> matplotlib-0.91.x
>>> 
>>> Let us know how that works for you.
>>> 
>>> Cheers,
>>> Mike
>>> 
>>> Jonathan Wright wrote:
>>>> Hello,
>>>> 
>>>> I am getting segmentation faults when I try to freeze a script which 
>>>> uses the TkAgg backend, on python2.5.2, gcc 4.2.3 (ubuntu 8.04, hardy 
>>>> heron).  A trial script is:
>>>> 
>>>> import matplotlib
>>>> matplotlib.use("TkAgg")  # unless you have it in matplotlibrc
>>>> import matplotlib.backends.backend_tkagg # explicit for freezer
>>>> from matplotlib.pylab import plot, show
>>>> plot(range(10), range(10), "+")
>>>> show()
>>>> 
>>>> Is anyone already familiar with the problem? Things seem to work with 
>>>> the GTkAgg backend, but sadly many years ago I decided to use Tk as I 
>>>> thought it'd be easier to distribute. In order to reproduce the 
>>>> problem with bbfreeze you should just need this freezing script:
>>>> 
>>>> from bbfreeze import Freezer
>>>> f = Freezer("dist",
>>>>            includes=("matplotlib",
>>>>                      "matplotlib.numerix.fft",
>>>>                      "matplotlib.numerix.linear_algebra",
>>>>                      "matplotlib.numerix.ma",
>>>>                      "matplotlib.numerix.mlab",
>>>>                      "matplotlib.numerix.random_array"))
>>>> f.addScript("t.py")
>>>> f()
>>>> 
>>>> For reproducing the problem with cx-freeze you need to (a) install it 
>>>> by patching the cx-freeze setup.py [so that (2, 5) -> (2, 6)] and (b) 
>>>> add an import for numpy.linalg.lapack_lite and edit your 
>>>> numpy.__init__ to remove numpy.test.
>>>> 
>>>> Thanks for any advice,
>>>> 
>>>> Jon
>>>> ---
>>>> 
>>>> PS: gdb  says
>>>> Program received signal SIGSEGV, Segmentation fault.
>>>> [Switching to Thread 0xb7c806b0 (LWP 8158)]
>>>> 0xb6e145a0 in ?? () from 
>>>> /home/wright/testcx/build/exe.linux-i686-2.5/matplotlib.backends._tkagg.so 
>>>> (gdb) bt
>>>> #0  0xb6e145a0 in ?? () from 
>>>> /home/wright/testcx/build/exe.linux-i686-2.5/matplotlib.backends._tkagg.so 
>>>> #1  0xb6badb6e in TclInvokeStringCommand () from 
>>>> /usr/lib/libtcl8.4.so.0
>>>> #2  0xb6baee56 in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so.0
>>>> #3  0xb6baf0db in Tcl_EvalObjv () from /usr/lib/libtcl8.4.so.0
>>>> #4  0xb6ef96c6 in ?? () from 
>>>> /home/wright/testcx/build/exe.linux-i686-2.5/_tkinter.so
>>>> #5  0x0827a0c8 in ?? ()
>>>> #6  0x00000005 in ?? ()
>>>> ...
>>>> 
>>>> 
>>>> ------------------------------------------------------------------------- 
>>>> This SF.net email is sponsored by: Microsoft Defy all challenges. 
>>>> Microsoft(R) Visual Studio 2008. 
>>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>>> _______________________________________________
>>>> Matplotlib-users mailing list
>>>> [EMAIL PROTECTED]
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>> 
>>> 
>> 
>
> -- 
> Michael Droettboom
> Science Software Branch
> Operations and Engineering Division
> Space Telescope Science Institute
> Operated by AURA for NASA
>
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to