- packagekit auto-installation of plasma dataengines, anyone?
- August 24th, 2009
From a recent conversation on irc (log below), there's an opportunity for someone to help implement some packagekit hooks in libplasma. Anyone interested?
[08:58] <rdieter> was just digging into some rpm packaging for plasma applets, data engines... found it relatively easy to grok service .desktop files to determine data engine providers, but short of digging through applet code, not obvious to me to determine consumers of plasma data engines.
[08:58] <rdieter> Is there a way? if not, could/should there be? :)
[09:02] <notmart> rdieter: yeah, i think the only way is to look for dataEngine("foo"); calls in the code
[09:04] <rdieter> notmart: I was just holding out hope for an easier, ideally automated/codeable method to extract such dependencies
[09:06] <notmart> seems quite possible to automate it, just a couple of regexp..
[09:06] <rdieter> would folks be receptive to adding such dependency metadata to applet .desktop files (or something equivalent)?
[09:06] <rdieter> notmart: preferably automate'able on the installed files, not the source.
[09:07] <notmart> not sure if it's realistic to expect that all the old plasmoids will immediately compile properly the desktop file...
[09:07] * rdieter was thinking about writing rpm autogenerators for Requires/Provides plama applets/dataengines, ultimately
[09:07] <notmart> rdieter: oh :/
[09:42] <aseigo> rdieter: that could be done in libplasma i think
[09:43] <aseigo> rdieter: when an engine is requested, if it doesn't exist we could do a lookup using packagekit or whatever the kde wrapper for that is, and see if it's available there instead
[09:43] <rdieter> I like the sound of that.
[09:45] <aseigo> rdieter: should probably cache which engines have been looked up in the package db unless it becomes a cheap operation...
[09:46] <aseigo> rdieter: but the work should probably happen in ... *looks* hm.. DataEngineManager::loadEngine() .. maybe..
[09:46] <aseigo> hm.
[09:47] <aseigo> probaby that should still return NULL on failure immediately (since this process would need to be async, i think...
[09:47] <aseigo> so maybe a new method in DataEnigneManager that checks to see if the engine can be installed (and does so if possible?)
[09:47] <aseigo> and then use that in DataEngineConsumer (in kdelibs/plasma/private/dataengineconsumer_p.h)[09:48] <aseigo> sth like that anyways
[09:48] <aseigo> and if it is available ......
[09:49] <aseigo> then we'd probably need a special dataengine that can create dummy sources on request and then when the REAL engine is installed, request those sources in the new engine and become a "repeater" for it
[09:53] <rdieter> sounds evil enough, neat. I'll go poke around #fedora-*, see if I can find anyone interested in helping implement any of that
[09:55] * aseigo is happy to mentor :)