[arch-dev-public] Divide and Konquer - Splitting KDE packages

Pierre Schmitz pierre at archlinux.de
Thu Jan 22 19:21:30 EST 2009


Hey guys,

providing splitted KDE packages is one of most wanted feature request sine 
there was KDE in Arch. And people have good reasons demanding it. Let's have a 
look at the problem:

The KDE project does not provide source packages for every single application 
but they put them in some kind of categories. E.g. there are kdenetwork, 
kdemultimedia, kdegraphics etc.. So if you want an VNC client you have to 
install kdenetwork and you'll get an instant messanger, download manager, nvc 
server, samba client and others including their dependencies for free.

But there is hope: future versions of makepkg will be able to help splitting 
those packages in an easy way: http://dev.archlinux.org/~allan/makepkg-
git.html In fact KDE ist already prepared to be splitted; all you need to do 
is running make install in the right directory.

After 4.2 will hit [extra] I'd like to work on this. This will also be a good 
test case for the makepkg implementation. 

In addition to this we'll need to update our devtools and db-scripts to handle 
those packages right. extrapkg should be quite simple; archrelease and repo-
add should work just fine; only the db-scripts will really fail because they 
cannot guess the svn-dir just from the package name anymore.

My idea of splitting is to create one package for each app like kopete and not 
split by data, lib, docs etc.. Those packages will be members of a group; so 
pacamn -S kdenetwork still results in the same apps being installed. 

And last but not least: You might wonder why we not just include kdemod. I had 
a little talk with funkyou about this. KDEmod/Chakra has different goals and 
philosophy and is not really compatible with the Arch way. So they'd like to 
keep doing their own thing.

Greetings,

Pierre

PS: I have attached a quick&dirty example to just show you that this would not 
increase complexity that much; indeed I think this makes things a lot cleaner.

-- 

Pierre Schmitz


Clemens-August-Straße 76
53115 Bonn

Telefon		0228 9716608
Mobil		0160 95269831
Jabber		pierre at jabber.archlinux.de
WWW		http://www.archlinux.de

-------------- next part --------------
# $Id: PKGBUILD 24460 2009-01-17 13:41:39Z andrea $
# Maintainer: Pierre Schmitz <pierre at archlinux.de>

pkgname=('filesharing'
         'kdnssd'
         'kget'
         'kopete'
         'krdc'
         'krfb')
pkgver=4.1.96
pkgrel=1
arch=('i686' 'x86_64')
url='http://www.kde.org'
license=('GPL' 'LGPL' 'FDL')
groups=('kde' 'kdenetwork')
makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost' 'kdebase-workspace' 'libvncserver' 'libidn' 'libotr' 'qca' 'libmsn' 'ortp')
options=('docs')
source=("http://download.kde.org/unstable/${pkgver}/src/kdenetwork-${pkgver}.tar.bz2")
md5sums=('01c69a5982758b4939627a6c4aa8fd55')

build() {
	cd $srcdir
	mkdir build
	cd build
	cmake ../kdenetwork-${pkgver} \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DWITH_Xmms=OFF
	make
}

package_filesharing() {
	pkgdesc='network file sharing'
	depends=('kdebase-runtime' 'kdelibs')
	install='kdenetwork.install'
	cd $srcdir/build/filesharing
	make DESTDIR=$pkgdir install
}

package_kdnssd() {
	pkgdesc='Zeroconf'
	depends=('kdebase-runtime' 'kdelibs')
	cd $srcdir/build/kdnssd
	make DESTDIR=$pkgdir install
}

package_kget() {
	pkgdesc='an advanced download manager'
	depends=('kdebase-workspace' 'kdebase' 'qca')
	install='kdenetwork.install'
	cd $srcdir/build/kget
	make DESTDIR=$pkgdir install
	cd $srcdir/build/doc/kget
	make DESTDIR=$pkgdir install
}

package_kopete() {
	pkgdesc='Instant Messaging client'
	depends=('kdebase-runtime' 'kdepimlibs' 'qca' 'libotr' 'libmsn' 'libidn' 'libxss' 'qimageblitz')
	install='kdenetwork.install'
	cd $srcdir/build/kopete
	make DESTDIR=$pkgdir install
	cd $srcdir/build/doc/kopete
	make DESTDIR=$pkgdir install
}
# 
# package_kppp() {
# 	pkgdesc='dialer and front end for pppd'
# 	depends=('kdebase-runtime' 'kdelibs' 'ppp')
# 	install='kdenetwork.install'
# 	cd $srcdir/build/kppp
# 	make DESTDIR=$pkgdir install
# 	cd $srcdir/build/doc/kppp
# 	make DESTDIR=$pkgdir install
# }

package_krdc() {
	pkgdesc='a client for Desktop Sharing'
	depends=('kdebase-runtime' 'kdelibs' 'libvncserver' 'rdesktop')
	cd $srcdir/build/krdc
	make DESTDIR=$pkgdir install
	cd $srcdir/build/doc/krdc
	make DESTDIR=$pkgdir install
}

package_krfb() {
	pkgdesc='Desktop Sharing server, allow others to access your desktop via VNC'
	depends=('kdebase-runtime' 'kdelibs' 'libvncserver' 'libxdamage')
	cd $srcdir/build/krfb
	make DESTDIR=$pkgdir install
	cd $srcdir/build/doc/krfb
	make DESTDIR=$pkgdir install
}


More information about the arch-dev-public mailing list