Contents
KDE Team
Nickname | Name | Time zone | |
---|---|---|---|
neoclust | neoclust (at) mageia (dot) org | Neoclust | |
anaselli | anaselli (at) mageia (dot) org | anaselli | UTC+1 |
mikala | mikala (at) mageia (dot) org | John | UTC-3 |
schultz | watersnowrock (at) gmail (dot) com | Donald |
Note: Changes/commits in Qt/KDE related packages by NON-kde packagers need to be reviewed and approved by the kde team or some representative.
Meetings
Proposals
- Have someone elected (or by other decision) to represent the team in any other meeting or place (council)
- Define strict rules about package naming (for example for library packages use only underscore _ instead a regular trace - )
- Rules about major changes
- Have a season for bug hunting and tests in cauldron (and commits are only done in a time defined by the team)
- Have a season to dedicate to Mageia 1 (backports,updates) with also a time defined for commits
- etc.
All these proposals are to be updated/changed and exist to keep the team tuned and syncronized.
Goals
Qt/KDE Packaging Policy
We decided try at most make some standards for upcoming KF5/ Plasma packaging, so any newcomer in Mageia tools and packaging will have some template to follow and some standard rules to follow as well.
WARNING: valid for Qt/KDE related packages.
Package application naming
In the past, we use to have nomenclatures like kdebase-konsole, kdegraphics-kpdf, etc..
All applications package ( or subpackage ) naming now should be exactly the same name as their main binary. Ex:
- okular - Coming from package kdegraphics and splitted
- akregator - Coming from package kdepim and splitted
- konversation - Coming from their own package konversation
Library policy
Every library should be splitted with their proper soname. There's usual complain to have too many subpackages, but this is just a excuse for laziness. Some reasons behind splits:
- Developers need to change soname and binary api. If we have library inside package, upgrade would be hard
- Legacy applications should need the library only, not the whole package. If we decide install an application like akregator only, theres no reason to have whole kdepim package installed
- Development packages can requires just library packages, not the whole package.
Package should not requires libraries explicitely. Mageia RPM build already set the necessary dependencies automatically
How it will be on spec file using standard Mageia style ?
%define kfoo_major 1 %define libkfoo %mklibname kfoo %kfoo_major %package -n %libkfoo Summary: Kfoo library Group: System/Libraries %description -n %libkfoo Kfoo library. %files -n %libkfoo %_kf5_libdir/libkfoo.so.%{kfoo_major}*
WARNING: KDE have many modules that at first sight for new packagers looks like a library. You usually can find it in %{_kf5_libdir} They are not libraries at all, are dynamic loading modules, and:
- Should not need ldconfig
- Must go together with main application subpackage, not splitted nor in a library package
Patch policy
Every patch for a package MUST have this header :
#
# Description:
# Forwarded:
# Bug:
# Author:
#
Basic requires for every common KF5 / Plasma application
* kf5-macros
Configure and building with one line ( be free from auto*hell )
Since start of KF5, the cmake build utility was adopted. Cmake is a good easy text base build utility that provides common ways to make out of the source buildings. With kf5-macros package, we provide a common framework to make the most complex build in plasma easy.
So, to build a kf5/Plasma package, you will need just this in %build section:
%build %cmake_kf5 %make
If you need debug packages, just define _with_debug=1 in the rpm command line or bm. We strongly recommend use bm tool to build your specs.
bm -l --define _with_debug=1
Check that your spec & packages generated match the Mageia policy
Please also install rpmlint-mageia-policy package to check your spec, the src.rpm & the binary generated
rpmlint kmanyfoo.src.rpm rpmlint kmanyfoo-1.1.mga1.i586.rpm rpmlint libkmanyfoo1-1.1.mga1.i586.rpm rpmlint kmanyfoo.spec
Errors found by rpmlint need to be fixed because the package even if it's build won't be upload by our Build System
SPEC defines provided by kf5-macros
TODO
SPEC Layout
This is kind of controversial for many old school packagers, but the nested layout style was adopted since some time by some stubborn packagers ( mostly this one who is kindly writing for you now ) and proves to be more efficient in big packages for edit. The basic idea is, all subpackages have all related entries nested in one block on their spec, instead of having all definitions, then all descriptions, then all post/postun sections then the files sections. In the template below we show an package kmanyfoo, which have two apps and one library.
Template
Name: kmanyfoo Summary: K Desktop Environment Group: Graphical desktop/KDE Version: 4.0.70 Release: %mkrel 1 License: GPLv2 URL: http://www.kde.org Source:· ftp://ftp.kde.org/pub/kde/stable/%version/src/kfoo-%version.tar.bz2 BuildRequires: kf5-macros Requires: kfooblue Requires: kfoored %description - kmanyfoo is a kfoo metapackage for all kfoo applications # we let the files section empty or with a README to assure package is generated. # If the main package is just a convenience main description and doesn't need a meta pack, we don't even need this section %files #------------------------------------------------------ %package kfooblue Summary: KFoo Blue package Group: Graphical desktop/KDE %description kfooblue KFoo Blue package %files kfooblue %_kf5_bindir/kfooblue %_kf5_libdir/kde4/bluemodule.so %_kf5_appsdir/kfooblue # You don't need made all iconspaths explicit, use glob %_kf5_iconsdir/*/*/*/kfooblue.* #------------------------------------------------------ %package kfoored Summary: KFoo RED package Group: Graphical desktop/KDE %description kfoored KFoo RED package %files kfoored %_kf5_bindir/kfoored # You don't need made all iconspaths explicit, use glob %_kf5_iconsdir/*/*/*/kfoored.* %_kf5_services/kfoored.desktop #------------------------------------------------------ %define kfoo_major 1 %define libkfoo %mklibname kfoo %kfoo_major %package -n %libkfoo Summary: Kfoo library Group: System/Libraries %description -n %libkfoo Kfoo library. %files -n %libkfoo %_kf5_libdir/libkfoo.so.%{kfoo_major}* #------------------------------------------------------ %prep %setup -q %build %cmake_kf5 %make %install %makeinstall_std -C build
This page is available under the Creative Commons Attribution-ShareAlike 2.5 License
Authors
- Helio Chissini de Castro
- Gustavo Pichorim Boiko
- Nicolas Lécureuil
- Markus Espunkt
- Daniel Kreuter
- Rémy Clouard