KDE/Paketbau/Kochbuch
aus openSUSE, der freien Wissensdatenbank
Inhaltsverzeichnis |
KDE-Paketbaukochbuch
Um es einfacher zu machen, den Bau von KDE-Anwendungen und -Komponenten zu erlernen, hat das KDE-Team einige 'Rezepte' bereitgestellt. Das Basisrezept ist eine spec-Dateivorlage für eine KDE-Anwendung.
Erster Schritt
- Registrieren Sie ihr Build Service-Nutzerkonto.
- Machen Sie sich mit der Build Service-Web-Anwendung vertraut
- Fügen Sie dasopenSUSE Tools-Depot zu ihren Paketquellen hinzu und installieren Sie osc.
- Fügen Sie das Depot hinzu, für welches Sie bauen wollen. Ein guter Einstig ist 'openSUSE 10.3'. Pakete für verschiedene Distributionen zu bauen ist wesentlich anspruchsvoller.
- Fügen Sie im Build Service ein Paket für die Software hinzu, die Sie bauen wollen.
- 'Name' ist der Name des Pakets, bspw. ultimativesoftware.rpm.
- 'Title' ist die Zusammenfassung die in der Paketliste der Softwareverwaltung von YaST sichtbar ist.
- 'Description' ist die ausführliche Beschreibung, die separat angezeigt wird.
- Lassen Sie 'Create RPM SPEC file template' leer, wenn Sie die unten gezeigte KDE-Vorlage nutzen wollen.
spec-Dateivorlage
Kopieren Sie die Vorlage und speichern Sie sie in <paketname>.spec, um Sie mit osc oder über die Web-Schnittstelle in den Build Service zu laden. Die in Großbuchstaben geschriebenen Felder sind für ihre Änderungen gedacht - die Zeile do_make ist extra!
#
# spec file for package PAKETNAME (Version VERSION)
#
# Copyright (c) PAKETBAUERNAME
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# norootforbuild
Name: PAKETNAME
BuildRequires: kdelibs3-devel
License: GNU General Public License (GPL)
Group: System/Filesystems
Summary: PAKETLIZENZ
Version: PAKETVERSION
Release: 1
URL: PAKETURL
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %name-%{version}.tar.bz2
%description
PAKETBESCHREIBUNG
Authors:
--------
AUTORENNAME <AUTORENEMAIL>
%prep
%setup -q
. /etc/opt/kde3/common_options
update_admin
%build
. /etc/opt/kde3/common_options
./configure $configkde --disable-final
do_make %{?jobs:-j %jobs}
%install
. /etc/opt/kde3/common_options
do_make DESTDIR=$RPM_BUILD_ROOT $INSTALL_TARGET
%suse_update_desktop_file -G GENERISCHERNAME APP KATEGORIE1 KATEGORIE2
kde_post_install
%find_lang %name
%clean
rm -rf $RPM_BUILD_ROOT
%files -f %name.lang
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog README TODO
/opt/kde3/bin/APP
/opt/kde3/share/appl*/*/APP.desktop
/opt/kde3/share/apps/APP
/opt/kde3/share/icons/*
%changelog
* Wed Oct 31 2007 - PACKAGEREMAIL
- initial package created
Beispiel
Dieses Beispiel verwendet das Werkzeug knice priority manager. Es wurde gewählt, weil es einige der Fallen zeigt, die das Paketbauerleben interessant machen. Schauen Sie sich dazu auch den Abschnitt 'Stolpersteine' weiter unten an.
- Laden Sie das Quellkodearchiv herunter
- Bearbeiten Sie die spec-Datei
knice.spec:
#
# spec file for package knice (Version 1.0RC2)
#
# Copyright (c) Will Stephenson <wstephenson@suse.de>
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# norootforbuild
Name: knice
BuildRequires: kdelibs3-devel
License: GNU General Public License (GPL)
Group: System/Filesystems
Summary: A Graphical Process Priority Manager
Version: 1.0RC2
Release: 1
URL: http://kde-apps.org/content/show.php/KDE+Priority+handler?content=66266&PHPSESSID=2e9ea4f41ef50a38e4af3c80afebc621
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}_%{version}.tar.gz
Patch0: knice_no_applnk_needed.patch
%description
KDE Priority handler is an application that monitors the current active processes/applications and lets the user categorize the process into a priority group.
This is very useful for buggy and/or cpu intensive applications. By adding these to an low priority group makes the desktop usable even if they go berserk on the system.
Authors:
--------
Peter Bengtsson <dev@lilltiger.se>
%prep
%setup -q -n %{name}
%patch0
. /etc/opt/kde3/common_options
update_admin
%build
. /etc/opt/kde3/common_options
./configure $configkde --disable-final
do_make %{?jobs:-j %jobs}
%install
. /etc/opt/kde3/common_options
do_make DESTDIR=$RPM_BUILD_ROOT $INSTALL_TARGET
%suse_update_desktop_file -G "Priority Manager" %name System Monitor
kde_post_install
%find_lang %name
%clean
rm -rf $RPM_BUILD_ROOT
%files -f %name.lang
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog README TODO
/opt/kde3/bin/knice
/opt/kde3/share/appl*/*/knice.desktop
/opt/kde3/share/apps/knice
#/opt/kde3/share/icons/*
%changelog
* Wed Oct 31 2007 - wstephenson@suse.de
- initial package created
Stolpersteine
- knice hält sich nicht an die Namenskonvention name-version.tar.bz2 für Quellkodearchive, weshalb der Source0: Tag berichtigt wurde - schauen Sie nach Schemata, die Sie als Platzhalter verwenden können.
- Das Verzeichnis innerhalb der Quellkodearchivs heißt 'knice', an Stelle des konventionellen <name>-<version>/, weshalb wir
%setup -n %nameverwenden. - Eine automatische Prüfung, ob sich das Paket an die Freedesktop.org-Namenskonvention hält, ergibt, dass knice.desktop keine Kategorie und keinen generischen Namen enthält. Wir nutzen deshalb das
%suse_update_desktop_file-Makro um diese Informationen einfach hinzuzufügen. Dies stellt sicher, dass die Anwendung an der richtigen Stelle im K-Menü auftaucht.- Die genutzt Form ist
%suse_update_desktop_file -G <GenericName> <appname> <MainCategory> <SubCategory>. GenericName ist der Untertitel der im Menü erscheint. /usr/lib/rpm/map-desktop-category.sh enthält die Kategorien.
- Die genutzt Form ist
- Ein anderer Test stellt fest, dass die gleiche .dekstop-Datei doppelt installiert wird. Das Bausystem von knice verwendet immer noch die auslaufende applnk-Hierarchie an Stelle von XDG. Wir patchen dieses Verhalten mit Patch0 (unten) raus.
knice_no_applnk_needed.patch:
--- src/Makefile.am +++ src/Makefile.am @@ -31,8 +31,8 @@ knice_LDADD = $(LIB_KIO) $(LIB_KDEUI) # this is where the desktop file will go -shelldesktopdir = $(kde_appsdir)/Utilities -shelldesktop_DATA = knice.desktop +#shelldesktopdir = $(kde_appsdir)/Utilities +#shelldesktop_DATA = knice.desktop # this is where the shell's XML-GUI resource file goes shellrcdir = $(kde_datadir)/knice
Bauen
Wir nutzen das osc-Werkzeug, um einen lokalen Bau durchzuführen; wiederholte Bauvorgänge um Fehler zu korrigieren laufen schneller wenn osc mit dem Parameter --noinit gestartet wird.
osc build openSUSE_10.3 i586 knice.specSobald das Paket gebaut ist, checken wir es mit
osc commitin den Build Service ein.

