Hello List,

Varun, who is a debian packager ran into some problems while
compiling Enable, as it uses numpy.distutils, which did not locate
the location of the X11 libraries correctly.  Maybe this can be fixed
in the numpy 1.6.1 release.  Please the the forwarded conversation
below.

Thanks   Ilan


---------- Forwarded message ----------
From: Varun Hiremath <[email protected]>
Date: Wed, Jul 13, 2011 at 4:03 PM
Subject: [Enthought-Dev] Linking issues with libX11.so
To: [email protected]


Hi Ilan,

You were right, the issue was with the X11 library. The
_plat_support.so was not linked to libX11 and so the chaco examples
were failing; and the reason libX11 was not linked was because numpy
distutils' x11_info was failing.

I figured out that in debian/ubuntu with a new multi_arch build
support [1] the libraries are being moved from the standard /usr/lib
and /usr/lib64 directories to architecture specific directories like:

/usr/lib/i386-linux-gnu/
/usr/lib/x86_64-linux-gnu/

and so the numpy.distutil was failing to find libX11 with the latest
version of libX11-dev on debian which installs libX11.so in
/usr/lib/x86_64-linux-gnu/ (on my amd64 system). The nump.distutils'
scripts need to be updated to handle this, but for now I am using the
following patch to force _plat_support.so link with X11 (which I think
is always present in the default search path):

---------------------------
@@ -230,6 +144,7 @@
    elif plat in ['x11','gtk1']:
        x11_info = get_info('x11', notfound_action=1)
        dict_append(plat_info, **x11_info)
+        dict_append(plat_info, libraries = ['X11'])

---------------------------

With this everything seems to be working fine!

Thanks,
Varun

[1] https://wiki.ubuntu.com/MultiarchSpec

On Mon, Jul 11, 2011 at 10:53 PM, Ilan Schnell <[email protected]> wrote:
> Hello Varun,
>
> the important part is: _plat_support.so: undefined symbol: XCreateImage
> This indicates that the kiva/agg/_plat_support.so C extension was
> not linked to X11 while compiling.  Until
> https://github.com/enthought/enable/commit/ebecdbfc5c4596282204e61ff687c3ab2442947a
> which was made shortly after the release, it was easy to create a broken
> Enable build like this one.  Note that this commit does *not* fix the problem,
> it only causes the build to fail right away, instead of creating a broken 
> build.
> This was added because of the famous esr quote:
> "When you must fail, fail noisily and as soon as possible."
>
> As enable uses numpy.distutils to build agg, the fix is to edit:
> <python prefix>/lib/python2.6/site-packages/numpy/distutils/site.cfg
>
> and add:
> [x11]
> library_dirs = ...
> include_dirs = ...
>
> - Ilan
>
>
> On Mon, Jul 11, 2011 at 9:23 PM, Varun Hiremath <[email protected]> 
> wrote:
>> Hi all,
>>
>> I am facing another issue running chaco examples with the new ETS 4.0
>> packages. I am getting the following error when I run any chaco
>> example:
>> --------------------------
>> $$ python zoom_plot.py
>> /usr/lib/python2.6/dist-packages/enable/wx/image.py:16: Warning: Error 
>> initializing Agg: 
>> /usr/lib/python2.6/dist-packages/kiva/agg/_plat_support.so: undefined 
>> symbol: XCreateImage
>>  from kiva.agg import CompiledPath, GraphicsContextSystem as GraphicsContext
>> Traceback (most recent call last):
>>  File "zoom_plot.py", line 15, in <module>
>>    from enable.api import Component, ComponentEditor
>>  File "/usr/lib/python2.6/dist-packages/enable/api.py", line 42, in <module>
>>    from graphics_context import GraphicsContextEnable, 
>> ImageGraphicsContextEnable
>>  File "/usr/lib/python2.6/dist-packages/enable/graphics_context.py", line 
>> 86, in <module>
>>    class GraphicsContextEnable(EnableGCMixin, GraphicsContext):
>> TypeError: Error when calling the metaclass bases
>>    metaclass conflict: the metaclass of a derived class must be a 
>> (non-strict) subclass of the metaclasses of all its bases
>> -------------------------
>>
>> Does anybody know what could be the problem?
>>
>> Thanks,
>> Varun
>>
>> p.s. Most of the ETS 4.0 debian packages are now available in debian 
>> unstable.
>>
>>
>> On Sat, 09 Jul, 2011 at 12:45:32PM -0500, Ilan Schnell wrote:
>>> I'm glad it worked.  That's a good idea, I'll release traitsui-4.0.1
>>> later today.
>>>
>>> - Ilan
>>>
>>>
>>> On Sat, Jul 9, 2011 at 11:20 AM, Varun Hiremath <[email protected]> 
>>> wrote:
>>> > Hi Ilan,
>>> >
>>> > Thanks, that worked! Are you planning on doing a point release for
>>> > traitsui to fix this bug? It would make packaging easier then.
>>> >
>>> > Thanks,
>>> > Varun
>>> >
>>> > On Sat, 09 Jul, 2011 at 11:11:26AM -0500, Ilan Schnell wrote:
>>> >> Hello Varun,
>>> >>
>>> >> I ran into the same bug when preparing the EPD 7.1 release.
>>> >> The fix is commited to the github master of traitsui:
>>> >> https://github.com/enthought/traitsui/commit/4f36a8a27cfa131347dd90d1a8e10a37358cf634
>>> >>
>>> >> Just replace the two zip-files with the fixed ones, and it should work.
>>> >>
>>> >> - Ilan
>>> >>
>>> >>
>>> >> On Sat, Jul 9, 2011 at 10:27 AM, Varun Hiremath 
>>> >> <[email protected]> wrote:
>>> >> > Hi,
>>> >> >
>>> >> > I was trying to update the debian packages to the new ETS 4.0 release,
>>> >> > but I am having some trouble getting mayavi2 running. I get the error
>>> >> > shown below when I run mayavi2. Could someone please let me know what
>>> >> > might be causing this error?
>>> >> >
>>> >> > Thanks,
>>> >> > Varun
>>> >> >
>>> >> > -----------------
>>> >> > $ mayavi2
>>> >> > Traceback (most recent call last):
>>> >> >  File "/usr/bin/mayavi2", line 658, in <module>
>>> >> >    main()
>>> >> >  File "/usr/bin/mayavi2", line 649, in main
>>> >> >    mayavi.main(sys.argv[1:])
>>> >> >  File "/usr/lib/python2.6/dist-packages/mayavi/plugins/app.py", line 
>>> >> > 195, in main
>>> >> >    app.run()
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/mayavi/plugins/mayavi_workbench_application.py",
>>> >> >  line 81, in run
>>> >> >    window.open()
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/pyface/workbench/workbench_window.py",
>>> >> >  line 144, in open
>>> >> >    self._create()
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/pyface/ui/wx/application_window.py", 
>>> >> > line 150, in _create
>>> >> >    contents = self._create_contents(body)
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/pyface/workbench/workbench_window.py",
>>> >> >  line 217, in _create_contents
>>> >> >    contents = self.layout.create_initial_layout(parent)
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/pyface/ui/wx/workbench/workbench_window_layout.py",
>>> >> >  line 151, in create_initial_layout
>>> >> >    self._wx_view_dock_window = WorkbenchDockWindow(parent)
>>> >> >  File "/usr/lib/python2.6/dist-packages/pyface/dock/dock_window.py", 
>>> >> > line 324, in __init__
>>> >> >    if self.theme.use_theme_color:
>>> >> >  File "/usr/lib/python2.6/dist-packages/pyface/dock/dock_window.py", 
>>> >> > line 335, in _theme_default
>>> >> >    return dock_window_theme()
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/traitsui/dock_window_theme.py", line 
>>> >> > 92, in dock_window_theme
>>> >> >    from .default_dock_window_theme import default_dock_window_theme
>>> >> >  File 
>>> >> > "/usr/lib/python2.6/dist-packages/traitsui/default_dock_window_theme.py",
>>> >> >  line 39, in <module>
>>> >> >    label = ( 0, -3 ), content = ( 7, 6, 0, 0 ) ),
>>> >> >  File "/usr/lib/python2.6/dist-packages/traitsui/theme.py", line 63, 
>>> >> > in __init__
>>> >> >    self.image = image
>>> >> >  File "/usr/lib/python2.6/dist-packages/traitsui/ui_traits.py", line 
>>> >> > 229, in validate
>>> >> >    self.error( object, name, value )
>>> >> >  File "/usr/lib/python2.6/dist-packages/traits/trait_handlers.py", 
>>> >> > line 168, in error
>>> >> >    value )
>>> >> > traits.trait_errors.TraitError: The 'image' trait of a Theme instance 
>>> >> > must be an ImageResource or string that can be used to define one, but 
>>> >> > a value of '@std:tab_active' <type 'str'> was specified.
>>> >> > Exception in thread Thread-1:
>>> >> > Traceback (most recent call last):
>>> >> >  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
>>> >> >    self.run()
>>> >> >  File "/usr/lib/python2.6/threading.py", line 484, in run
>>> >> >    self.__target(*self.__args, **self.__kwargs)
>>> >> >  File "/usr/lib/python2.6/dist-packages/traitsui/image/image.py", line 
>>> >> > 329, in _process
>>> >> >    if time() > (self.time_stamp + 2.0):
>>> >> > TypeError: 'NoneType' object is not callable
>>> >> > ---------------
>>> >> > _______________________________________________
>>> >> > Enthought-Dev mailing list
>>> >> > [email protected]
>>> >> > https://mail.enthought.com/mailman/listinfo/enthought-dev
>>> >> >
>>> >> _______________________________________________
>>> >> Enthought-Dev mailing list
>>> >> [email protected]
>>> >> https://mail.enthought.com/mailman/listinfo/enthought-dev
>>> > _______________________________________________
>>> > Enthought-Dev mailing list
>>> > [email protected]
>>> > https://mail.enthought.com/mailman/listinfo/enthought-dev
>>> >
>>> _______________________________________________
>>> Enthought-Dev mailing list
>>> [email protected]
>>> https://mail.enthought.com/mailman/listinfo/enthought-dev
>> _______________________________________________
>> Enthought-Dev mailing list
>> [email protected]
>> https://mail.enthought.com/mailman/listinfo/enthought-dev
>>
> _______________________________________________
> Enthought-Dev mailing list
> [email protected]
> https://mail.enthought.com/mailman/listinfo/enthought-dev
>
_______________________________________________
Enthought-Dev mailing list
[email protected]
https://mail.enthought.com/mailman/listinfo/enthought-dev
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to