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.