KDE package guidelines
32-bit – CLR – CMake – Cross – DKMS – Eclipse – Electron – Font – Free Pascal – GNOME – Go – Haskell – Java – KDE – Kernel modules – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust - Security – Shell – VCS – Web – Wine
The KDE packages on Arch Linux follow a certain schema.
Build directory
A good way of building CMake packages is to make a build directory outside the root of the project and run cmake from that directory. The PKGBUILD should look this way:
prepare() { mkdir -p build } build() { cd build cmake ../${pkgname}-${pkgver} }
Install prefix
Every packages must set the CMAKE_INSTALL_PREFIX
variable.
-DCMAKE_INSTALL_PREFIX=/usr
Build type
Generally you should not specify the build type; this makes CMake honor environmental variables like such as CFLAGS
, CPPFLAGS
, etc. [1]
Force Qt version
KF package naming
Some packages even do not follow kde4 naming scheme. Some examples: kde theme, plasma-runners.
Also, there are still some outdated kf5-related packages: plasma5-applets, plasma5-runners, kf5-servicemenus, plasma5-themes.
Plasma widgets
Plasma widgets (formerly Plasmoids) packages should be named plasma6-applets-widgetname
so that they are recognizable as Plasma 6-related packages; this also distinguishes them from the official packages. See plasma6-applets examples.
Runners
Plasma runners packages should be named plasma6-runners-runnername
so that they are recognizable as Plasma 6-related packages; this also distinguishes them from the official packages. See plasma6-runners examples.
Service menus packages should be named kf6-servicemenus-servicename
so that they are recognizable as KF6 related packages. See kf6-servicemenus examples.
Themes
Plasma themes packages should be named plasma6-themes-themename
so that they are recognizable as Plasma 6-related packages. See plasma6-themes examples.
Icons and .desktop files installation
Some KDE software provide icons in the hicolor icon theme and .desktop
files, which must be installed via pacman hooks. Refrain from using installation command for these type of files in a .install
, as it would result in unnecessary double execution of them.