>>>> I had trouble getting the gi module to import from the context of
>>>> the
>>>> Kodi process, so I separated the Grilo functionality into a
>>>> daemon
>>>> process (grilohttpd) which bridges HTTP and Grilo sources. Kodi
>>>> addons are stateless, so grilohttpd has the nice side effect of
>>>> providing a persistent cache of the things available through a
>>>> Grilo
>>>> source. I would be interested to hear any theories on why gi
>>>> might
>>>> have been malfunctioning in my earlier attempt.
 
>>> What errors did you get trying to import and then use gi in Kodi?

>> From what I could tell, the "import gi" statement would never
>> complete. The Kodi process would continue to respond to input (e.g.,
>> I could "esc" out of the plugin), however the plugin itself would
>> continuously display its progress spinner.
 
> Any chance you could get a backtrace from that? Any other errors in the
> journal or in the application's output?

Here is a simplified addon:

import gi

xbmc.log('1', level=xbmc.LOGERROR)

gi.require_version('Soup', '2.4')
xbmc.log('2', level=xbmc.LOGERROR)

gi.require_version('GLib', '2.0')
xbmc.log('3', level=xbmc.LOGERROR)

gi.require_version('Grl',  '0.3')
xbmc.log('4', level=xbmc.LOGERROR)

from gi.repository import Soup
xbmc.log('5', level=xbmc.LOGERROR)

from gi.repository import GLib
xbmc.log('6', level=xbmc.LOGERROR)

from gi.repository import Grl
xbmc.log('7', level=xbmc.LOGERROR)

And the Kodi log which results from clicking on the addon,
exiting, and clicking on it again follows. Notice Kodi prints '1'--'7'
on the first run, but the second stops at '4'. Does gi rely on a full
exit to release its resources?

21:59:18.447 T:140706892663296  NOTICE: initialize done
21:59:18.447 T:140706892663296  NOTICE: Running the application...
21:59:18.449 T:140706892663296  NOTICE: starting zeroconf publishing
21:59:18.449 T:140706892663296  NOTICE: starting upnp client
21:59:18.450 T:140704781158144  NOTICE: ES: Starting UDP Event server on port 
9777
21:59:18.450 T:140704781158144  NOTICE: UDP: Listening on port 9777 (ipv6 : 
false)
21:59:21.866 T:140706340919040   ERROR: GetDirectory - Error getting
21:59:21.909 T:140704759109376   ERROR: Previous line repeats 3 times.
21:59:21.909 T:140704759109376   ERROR: 1
21:59:21.909 T:140704759109376   ERROR: 2
21:59:21.910 T:140704759109376   ERROR: 3
21:59:21.910 T:140704759109376   ERROR: 4
21:59:21.926 T:140704759109376   ERROR: 5
21:59:21.926 T:140704759109376   ERROR: 6
21:59:21.926 T:140704759109376   ERROR: 7
21:59:21.935 T:140706892663296   ERROR: GetDirectory - Error getting 
plugin://plugin.audio.grilo/
21:59:21.935 T:140706892663296   ERROR: 
CGUIMediaWindow::GetDirectory(plugin://plugin.audio.grilo/) failed
21:59:39.331 T:140706892663296   ERROR: Control 55 in window 10502 has been 
asked to focus, but it can't
21:59:39.363 T:140705272092416   ERROR: 1
21:59:39.363 T:140705272092416   ERROR: 2
21:59:39.363 T:140705272092416   ERROR: 3
21:59:39.363 T:140705272092416   ERROR: 4
21:59:39.372 T:140705272092416   ERROR: EXCEPTION Thrown (PythonToCppException) 
: -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO 
MEMORY LEAKS!
                                            Error Type: <type 
'exceptions.TypeError'>
                                            Error Contents: Error when calling 
the metaclass bases
                                                'NoneType' object is not 
callable
                                            Traceback (most recent call last):
                                              File 
"/home/mike/.kodi/addons/plugin.audio.grilo/addon.py", line 17, in <module>
                                                from gi.repository import Soup
                                              File 
"/usr/lib64/python2.7/site-packages/gi/importer.py", line 145, in load_module
                                                
importlib.import_module('gi.repository.' + dep.split("-")[0])
                                              File 
"/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
                                                __import__(name)
                                              File 
"/usr/lib64/python2.7/site-packages/gi/importer.py", line 145, in load_module
                                                
importlib.import_module('gi.repository.' + dep.split("-")[0])
                                              File 
"/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
                                                __import__(name)
                                              File 
"/usr/lib64/python2.7/site-packages/gi/importer.py", line 145, in load_module
                                                
importlib.import_module('gi.repository.' + dep.split("-")[0])
                                              File 
"/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
                                                __import__(name)
                                              File 
"/usr/lib64/python2.7/site-packages/gi/importer.py", line 146, in load_module
                                                dynamic_module = 
load_overrides(introspection_module)
                                              File 
"/usr/lib64/python2.7/site-packages/gi/overrides/__init__.py", line 125, in 
load_overrides
                                                override_mod = 
importlib.import_module(override_package_name)
                                              File 
"/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
                                                __import__(name)
                                              File 
"/usr/lib64/python2.7/site-packages/gi/overrides/GLib.py", line 228, in <module>
                                                class Variant(GLib.Variant):
                                              File 
"/usr/lib64/python2.7/site-packages/gi/types.py", line 324, in __init__
                                                super(StructMeta, 
cls).__init__(name, bases, dict_)
                                            TypeError: Error when calling the 
metaclass bases
                                                'NoneType' object is not 
callable
                                            -->End of Python script error 
report<--
21:59:39.388 T:140706892663296   ERROR: GetDirectory - Error getting 
plugin://plugin.audio.grilo/
21:59:39.388 T:140706892663296   ERROR: 
CGUIMediaWindow::GetDirectory(plugin://plugin.audio.grilo/) failed

-- 
Mike

:wq
_______________________________________________
grilo-list mailing list
grilo-list@gnome.org
https://mail.gnome.org/mailman/listinfo/grilo-list

Reply via email to