Le jeudi 11 décembre 2008 à 14:48 +0100, Dag Wieers a écrit :
> Hi Guillaume,
> 
> Yes! I finally got it to work ! But I had to make some more changes to the 
> codebase to get past certain stages.
> 
Good news :)

> I found how to disable some plugins, and in the end (for the time being) I 
> disabled these:
> 
>       disabled_plugins = ['elisa-plugin-ipod', 'elisa-plugin-flickr', 
> 'elisa-plugin-lirc', 'elisa-plugin-hal', 'elisa-plugin-avahi']
> 
> I noticed the on RHEL the avahi python bindings are inside the package 
> avahi-tools, but installing it would still make the plugin fail. More 
> about that later.
> 
> After doing that I got the following fatal error:
> 
> ------
> Traceback (most recent call last):
>    File "/usr/lib/python2.4/site-packages/twisted/internet/gtk2reactor.py", 
> line 226, in simulate
>      self.runUntilCurrent()
>    File "/usr/lib/python2.4/site-packages/twisted/internet/base.py", line 
> 705, in runUntilCurrent
>      call.func(*call.args, **call.kw)
>    File "/usr/lib/python2.4/site-packages/twisted/internet/task.py", line 
> 251, in _tick
>      result = iterator.next()
>    File "/usr/lib/python2.4/site-packages/elisa/core/manager.py", line 101, 
> in load_components_iter
>      dfr = plugin_registry.create_component(component_name)
> --- <exception caught here> ---
>    File "/usr/lib/python2.4/site-packages/elisa/core/plugin_registry.py", 
> line 940, in create_component
>      component_class = reflect.namedAny('%s.%s' % (module, klass))
>    File "/usr/lib/python2.4/site-packages/twisted/python/reflect.py", line 
> 426, in namedAny
>      topLevelPackage = _importAndCheckStack(trialname)
>    File "/usr/lib/python2.4/site-packages/twisted/python/reflect.py", line 
> 377, in _importAndCheckStack
>      return __import__(importName)
>    File 
> "/usr/lib/python2.4/site-packages/elisa/plugins/database/media_scanner.py", 
> line 40, in ?
>      from elisa.plugins.database.database_parser import DatabaseParser
>    File 
> "/usr/lib/python2.4/site-packages/elisa/plugins/database/database_parser.py", 
> line 27, in ?
>      from elisa.plugins.gstreamer.amp_master import GstMetadataAmpClient
>    File 
> "/usr/lib/python2.4/site-packages/elisa/plugins/gstreamer/amp_master.py", 
> line 29, in ?
>      from elisa.plugins.gstreamer.gst_metadata import able_to_handle, \
>    File 
> "/usr/lib/python2.4/site-packages/elisa/plugins/gstreamer/gst_metadata.py", 
> line 35, in ?
>      from elisa.plugins.gstreamer.thumbnail import get_thumbnail_location
>    File 
> "/usr/lib/python2.4/site-packages/elisa/plugins/gstreamer/thumbnail.py", line 
> 126, in ?
>      class PngImageSnapshotBin(ImageSnapshotMixIn, gst.Bin, Loggable):
>    File "/usr/lib/python2.4/site-packages/gtk-2.0/gobject/__init__.py", line 
> 37, in __init__
>      cls._type_register(cls.__dict__)
>    File "/usr/lib/python2.4/site-packages/gtk-2.0/gobject/__init__.py", line 
> 49, in _type_register
>      type_register(cls, namespace.get('__gtype_name__'))
> exceptions.OverflowError: long int too large to convert to int (while 
> registering property 'width' for GType 
> 'elisa+plugins+gstreamer+thumbnail+PngImageSnapshotBin')
> ------
> 
> If fixed this by changing elisa/plugins/gstreamer/thumbnail.py on line 51 
> and 53 into:
> 
> ------
>      __gproperties__ = {
>          'width': (gobject.TYPE_UINT, 'width',
>                  'Snapshot width', 16, (2**16) - 1, THUMBNAIL_SIZE, 
> gobject.PARAM_READWRITE),
>          'height': (gobject.TYPE_UINT, 'height',
>                  'Snapshot height', 16, (2**16) - 1, THUMBNAIL_SIZE, 
> gobject.PARAM_READWRITE),
>      }
> ------
> 
> (2**31) - 1 works too, but for some reason (2**32) - 1 triggers python.
> 
> After that I got the following problem:
> 
> ------
> Traceback (most recent call last):
>    File "/usr/lib/python2.4/site-packages/twisted/internet/gtk2reactor.py", 
> line 186, in run
>      self.__run()
>    File "/usr/lib/python2.4/site-packages/twisted/internet/gtk2reactor.py", 
> line 226, in simulate
>      self.runUntilCurrent()
>    File "/usr/lib/python2.4/site-packages/twisted/internet/base.py", line 
> 705, in runUntilCurrent
>      call.func(*call.args, **call.kw)
>    File "/usr/lib/python2.4/site-packages/twisted/internet/base.py", line 
> 545, in fireSystemEvent
>      event.fireEvent()
> --- <exception caught here> ---
>    File "/usr/lib/python2.4/site-packages/twisted/internet/base.py", line 
> 368, in fireEvent
>      result = callable(*args, **kwargs)
>    File "/usr/lib/python2.4/site-packages/elisa/core/application.py", line 
> 562, in stop
>      dfr = self.interface_controller.stop()
>    File 
> "/usr/lib/python2.4/site-packages/elisa/core/interface_controller.py", line 
> 141, in stop
>      dfr = frontend.clean()
>    File 
> "/usr/lib/python2.4/site-packages/elisa/plugins/pigment/pigment_frontend.py", 
> line 695, in clean
>      if self.controller:
> exceptions.AttributeError: 'PigmentFrontend' object has no attribute 
> 'controller'
> Exception exceptions.AttributeError: "'NoneType' object has no attribute 
> 'bus_release_name'" in <bound method BusName.__del__ of <dbus.service.BusName 
> com.fluendo.Elisa on <dbus.Bus on SESSION at 0x8e2918c> at 0x8e4e70c>> ignored
> ------
> 
> Which is caused by not having dbus, it seems dbus is mandatory by the 
> current implementation. However, I catched the exception and just 
> returned, which seems sufficient to get Elisa running.
> 
> In file elisa/plugins/database/dbus_browser.py on line 185 I added:
> 
> ------
>       def __init__(self, browser, *args, **kw):
> +        try:
>               dbus.service.Object.__init__(self, *args, **kw)
> +        except:
> +            return
>           self.impl = BrowserImpl(browser)
> ------
> 
> Now I have a working interface, but not everything is properly working 
> yet. I will go and add the missing requirements for some of the plugins. 
> Can you make the change to elisa/plugins/gstreamer/thumbnail.py ?
> 
> For the dbus problems, how would you proceed ? Make dbus optional instead 
> of mandatory, or rather make dbus work with an older release (1.2).
> 
> I'd prefer the second, but I can understand if there is no interest in 
> having the complexity.


Uh, a lot of issues here. For the changes that you have ready, is it
possible for you to make bazaar bundles and send them to the merge
mailing list (see
http://elisa.fluendo.com/wiki/QualityAssurance/HowToSubmitAMergeRequest)? It 
would make it easier to discuss these changes separately and going quickly 
towards there inclusion.

Alternatively, and especially for the things that you feel need more
discussion, can you file bug reports and attach the patch to them?
(https://bugs.launchpad.net/elisa/+filebug).

It is better if we can have separate places to discuss these separate
issues, and where we can easily keep track of them.

For the dbus stuff, I don't think we (fluendo embedded) would have time
to write support for 1.2, but a patch could be accepted. For the
complexity issue, I think that it's OK if you manage to have all that
complexity in one place, and not loads of "if dbus_version < 1.4"
everywhere. But I should admit I have no ideas of the differences
between the two versions, nor if we depend a lot on recent features of
dbus.

Guillaume

Reply via email to