Archive for June, 2011

Small API change to the PackageKit support for Plasma service lookup

Richard Hughes requested a small change to the PackageKit session API used to look up Plasma services before accepting the added function upstream: instead of a dedicated InstallPlasmaResources method, the org.freedesktop.PackageKit.Modify D-Bus interface got a generic InstallResources method, which allows installing all the existing resource types as well as Plasma services, and any other resource types added in the future. It takes a type parameter, which must be set to "plasma-service" in our case.

With those tweaks, the PackageKit change and the gnome-packagekit change are now committed to upstream git. For Apper (KPackageKit), which is our main target, there is a patch for Apper master on Review Board and a backport for KPackageKit 0.6.x on the packagekit mailing list. Hopefully, Daniel Nicoletti will have some time to review the patch soon. If not, he suggested on IRC that I can just commit the patch as is and he’ll refactor it later if needed, so that’s my fallback plan.

Advertisements

Leave a comment

PackageKit support for Plasma service lookup

I just submitted patches to the packagekit mailing list which implement a new InstallPlasmaResources method in the org.freedesktop.PackageKit.Modify D-Bus interface. There are patches for PackageKit itself, as well as for Apper (both master and KPackageKit 0.6.x) and gnome-packagekit. See my post to the packagekit mailing list for more details.

This completes the next step in my GSoC 2011 project. Now I can start working on using the new interface in Plasma.

Leave a comment

Automatic Plasma RPM Provides

This week, I worked on my first task in my GSoC project: automatically generating RPM Provides for Plasma services from Plasma’s metadata (in .desktop file format). This turned out to be much easier than I had initially expected, also because my mentor Rex Dieter already had a working proof of concept I was able to start from. I adapted the code to use RPM 4.9’s new plug&play dependency generation functionality and, after discussing this with my mentor, changed the format of the Provides to plasma4(servicetype-name).

My work on Provides and (later on) Requires can be found in the gsoc-2011-plasma-rpm branch of kde-settings on Fedora Hosted. It can be installed separately, but it might be merged into upstream RPM or Plasma once finished.

Today, I tested the script on the kdeplasma-addons package. The resulting Provides look like this:

[kevin@laptop64 x86_64]$ rpm -qp --provides kdeplasma-addons-4.6.3-1.fc15.x86_64.rpm
kcm_krunner_audioplayercontrol.so()(64bit)  
kcm_krunner_charrunner.so()(64bit)  
kcm_krunner_spellcheck.so()(64bit)  
kcm_plasma_runner_events.so()(64bit)  
krunner_audioplayercontrol.so()(64bit)  
krunner_browserhistory.so()(64bit)  
krunner_charrunner.so()(64bit)  
krunner_contacts.so()(64bit)  
krunner_converter.so()(64bit)  
krunner_katesessions.so()(64bit)  
krunner_konquerorsessions.so()(64bit)  
krunner_konsolesessions.so()(64bit)  
krunner_kopete.so()(64bit)  
krunner_mediawiki.so()(64bit)  
krunner_spellcheckrunner.so()(64bit)  
plasma-applet_systemloadviewer.so()(64bit)  
plasma-dataengine-comic = 4.6.3-1.fc15
plasma-dataengine-microblog = 4.6.3-1.fc15
plasma-dataengine-ocs = 4.6.3-1.fc15
plasma-dataengine-potd = 4.6.3-1.fc15
plasma-runner-events = 0.3.0-100
plasma4(applet-comic) = 1.0
plasma4(applet-dict) = 1.0
plasma4(applet-fileWatcher) = 1.0
plasma4(applet-frame) = 1.0
plasma4(applet-incomingmsg) = 1.0
plasma4(applet-kdeobservatory) = 0.2
plasma4(applet-knowledgebase) = 0.1
plasma4(applet-konqprofiles) = 1.0
plasma4(applet-konsoleprofiles) = 1.0
plasma4(applet-lancelot_launcher) = 1.9.5
plasma4(applet-lancelot_part) = 1.5
plasma4(applet-leavenote) = 1.0
plasma4(applet-life) = 0.8
plasma4(applet-magnifique) = 0.1
plasma4(applet-mediaplayer) = 0.1
plasma4(applet-nowplaying) = 1.0
plasma4(applet-opendesktop) = 0.1
plasma4(applet-opendesktop_activities) = 0.1
plasma4(applet-pastebin) = 1.0
plasma4(applet-plasma_applet_notes) = 1.0
plasma4(applet-plasma_applet_rtm) = 0.1
plasma4(applet-previewer) = 1.0
plasma4(applet-qalculate) = 0.7.2
plasma4(containment-org.kde.griddesktop) = 0.1
plasma4(containment-org.kde.groupingdesktop) = 0.1
plasma4(containment-org.kde.groupingpanel) = 0.1
plasma4(dataengine-comic)  
plasma4(dataengine-kdeobservatory) = 0.1
plasma4(dataengine-microblog)  
plasma4(dataengine-potd)  
plasma4(dataengine-rtm) = 0.1
plasma4(packagestructure-comic) = pre0.1
plasma4(runner-CharacterRunner) = 1
plasma4(runner-audioplayercontrol) = 0.1
plasma4(runner-browserhistory) = 1.0
plasma4(runner-katesessions) = 1.0
plasma4(runner-konquerorsessions) = 1.0
plasma4(runner-konsolesessions) = 1.0
plasma4(runner-kopete_runner) = 0.1
plasma4(runner-krunner_spellcheck) = 1.0
plasma4(runner-org.kde.datetime) = 1.0
plasma4(runner-org.kde.events_runner) = 0.3.0
plasma4(runner-techbase) = 1.0
plasma4(runner-unitconverter) = 1.0
plasma4(runner-wikipedia) = 1.0
plasma4(runner-wikitravel) = 1.0
plasma_applet_bball.so()(64bit)  
plasma_applet_binaryclock.so()(64bit)  
plasma_applet_blackboard.so()(64bit)  
plasma_applet_bookmarks.so()(64bit)  
plasma_applet_bubblemon.so()(64bit)  
plasma_applet_calculator.so()(64bit)  
plasma_applet_charselect.so()(64bit)  
plasma_applet_comic.so()(64bit)  
plasma_applet_dict.so()(64bit)  
plasma_applet_eyes.so()(64bit)  
plasma_applet_fifteenPuzzle.so()(64bit)  
plasma_applet_fileWatcher.so()(64bit)  
plasma_applet_frame.so()(64bit)  
plasma_applet_fuzzy_clock.so()(64bit)  
plasma_applet_incomingmsg.so()(64bit)  
plasma_applet_kdeobservatory.so()(64bit)  
plasma_applet_knowledgebase.so()(64bit)  
plasma_applet_kolourpicker.so()(64bit)  
plasma_applet_konqprofiles.so()(64bit)  
plasma_applet_konsoleprofiles.so()(64bit)  
plasma_applet_lancelot_launcher.so()(64bit)  
plasma_applet_lancelot_part.so()(64bit)  
plasma_applet_leavenote.so()(64bit)  
plasma_applet_life.so()(64bit)  
plasma_applet_luna.so()(64bit)  
plasma_applet_magnifique.so()(64bit)  
plasma_applet_mediaplayer.so()(64bit)  
plasma_applet_microblog.so()(64bit)  
plasma_applet_news.so()(64bit)  
plasma_applet_notes.so()(64bit)  
plasma_applet_nowplaying.so()(64bit)  
plasma_applet_opendesktop.so()(64bit)  
plasma_applet_opendesktop_activities.so()(64bit)  
plasma_applet_paste.so()(64bit)  
plasma_applet_pastebin.so()(64bit)  
plasma_applet_plasmaboard.so()(64bit)  
plasma_applet_previewer.so()(64bit)  
plasma_applet_qalculate.so()(64bit)  
plasma_applet_rssnow.so()(64bit)  
plasma_applet_rtm.so()(64bit)  
plasma_applet_showdashboard.so()(64bit)  
plasma_applet_showdesktop.so()(64bit)  
plasma_applet_spellcheck.so()(64bit)  
plasma_applet_timer.so()(64bit)  
plasma_applet_unitconverter.so()(64bit)  
plasma_applet_weather.so()(64bit)  
plasma_applet_weatherstation.so()(64bit)  
plasma_applet_webslice.so()(64bit)  
plasma_comic_krossprovider.so()(64bit)  
plasma_containment_griddesktop.so()(64bit)  
plasma_containment_groupingdesktop.so()(64bit)  
plasma_containment_groupingpanel.so()(64bit)  
plasma_engine_comic.so()(64bit)  
plasma_engine_kdeobservatory.so()(64bit)  
plasma_engine_microblog.so()(64bit)  
plasma_engine_ocs.so()(64bit)  
plasma_engine_potd.so()(64bit)  
plasma_engine_rtm.so()(64bit)  
plasma_packagestructure_comic.so()(64bit)  
plasma_potd_apodprovider.so()(64bit)  
plasma_potd_epodprovider.so()(64bit)  
plasma_potd_flickrprovider.so()(64bit)  
plasma_potd_oseiprovider.so()(64bit)  
plasma_potd_wcpotdprovider.so()(64bit)  
plasma_runner_datetime.so()(64bit)  
plasma_runner_events.so()(64bit)  
plasma_wallpaper_mandelbrot.so()(64bit)  
plasma_wallpaper_pattern.so()(64bit)  
plasma_wallpaper_virus.so()(64bit)  
plasma_wallpaper_weather.so()(64bit)  
kdeplasma-addons = 4.6.3-1.fc15
kdeplasma-addons(x86-64) = 4.6.3-1.fc15

(The Provides starting with “plasma4(” are the new, automatically detected ones.)

The next task is going to be asking upstream Plasma for feedback on this work and on how to proceed, because my next tasks will require closer interaction with Plasma upstream.

Leave a comment