KDE-Paketierung

Dieses Dokument beschreibt die besten Vorgehensweisen für das Paketieren von Software der KDE Frameworks zur Verwendung in Fedora.

Bauabhängigkeiten

Bei Verwendung von CMake sind die folgenden BuildRequires ein MUSS:

BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: kf6-rpm-macros

kf6-rpm-macros muss in kf5-rpm-macros geändert werden, wenn für Plasma 5 anstatt für Plasma 6 gebaut wird.

Verfügbare Makros

Die folgenden Makros werden beim Erstellen von KDE-Paketen verwendet. Beachten Sie, dass die Version der Makros (d. h. %cmake_kf5 und %cmake_kf6) je nach der Version von Plasma, für die Sie bauen, geändert werden kann.

%cmake_kf6

Ähnlich wie %cmake definiert dieses Makro CFLAGS, LDFLAGS usw. und ruft %__cmake mit den entsprechenden Parametern auf (z. B. -DCMAKE_INSTALL_PREFIX:PATH=/usr), jedoch mit zusätzlichen KDE-spezifischen Flags und Parametern. Sie können -Doption=Wert an dieses Makro übergeben, um Optionen für das Buildsystem festzulegen.

%stable_kf6

Wird in den Quellcode-Links des Pakets verwendet, sofern das Paket auf dem offiziellen KDE-Downloadserver veröffentlicht ist. Gibt je nach Paketversion entweder stable oder unstable aus.

Hier ein Beispiel, wie das aussehen könnte:

Source0: http://download.kde.org/%{stable_kf6}/release-service/%{version}/src/%{name}-%{version}.tar.xz
%find_lang_kf6

Dieses Makro wird manchmal anstelle von %find_lang in Paketen verwendet, die Sprachdateien mit der Endung _qt.qm verwenden.

Makros für von Buildsystemen gesetzte und verwendete Pfade

Die folgende Tabelle listet Makros auf, die in .spec-Dateien in Fedora häufig verwendet werden. Diese Makros werden von den Paketen kf5-rpm-macros (für Plasma 5) und kf6-rpm-macros (für Plasma 6) bereitgestellt.

Bei Plasma 5 kann die Versionsnummer der folgenden Makros einfach so geändert werden, dass sie die Plasma 5-Version widerspiegelt (zum Beispiel würde %{_kf6_datadir} zu %{_kf5_datadir} werden).

Makro Definition Kommentar

%{_kf6_prefix}

%{_prefix}

%{_kf6_archdatadir}

%{_qt6_archdatadir}

Vorgabe: /usr/lib64/qt6

%{_kf6_bindir}

%{_kf6_prefix}/bin

%{_kf6_datadir}

%{_datadir}

Vorgabe: /usr/share

%{_kf6_includedir}

%{_includedir}/KF6

Vorgabe: /usr/include/KF6

%{_kf6_libdir}

%{_exec_prefix}/%{_lib}

Vorgabe: /usr/%{_lib}

%{_kf6_libexecdir}

%{_libexecdir}/kf6

Vorgabe: /usr/libexec/kf6

%{_kf6_metainfodir}

%{_metainfodir}

Vorgabe: /usr/share/metainfo

%{_kf6_qtplugindir}

%{_qt6_plugindir}

Vorgabe: /usr/%{_lib}/qt6/plugins

%{_kf6_plugindir}

%{_qt6_plugindir}/kf6

Vorgabe: /usr/%{_lib}/qt6/plugins/kf6

%{_kf6_sysconfdir}

%{_sysconfdir}

Vorgabe: /etc

%{_kf6_mandir}

%{_kf6_datadir}/man

Vorgabe: /usr/share/man

%{_kf6_qmldir}

%{_kf6_archdatadir}/qml

Vorgabe: /usr/lib64/qt6/qml