[Kde-scm-interest] Package splitting

Thiago Macieira thiago at kde.org
Wed Jan 27 22:46:52 CET 2010


Em Terça-feira 26. Janeiro 2010, às 01.39.36, Troy Unrau escreveu:
> Feedback requested. Thiago told me that ossi has already brought this
> up somewhere, but I haven't grepped through the archives yet.

Here's a suggestion on how splitting could work.

Disclaimer: I am not satisfied that splitting is the way to go.

Remember that the objective here is to have a simple dependency-management 
system. It must be resolvable by humans (not scripts or machines) and it must 
forbid any loops.

IF we split the KDE repositories into one per app, we'll have hundreds of them 
(I estimate about 700). It's VERY, VERY easy to produce loops. The end result 
would be a GNOME-style mesh of dependencies, which make building very hard. 
Remember that's why Patrick Volkerding stopped packaging GNOME on Slackware.

Anyway, my suggestion is to have each repository tagged in two levels: 
category and stage. The category is a logical group that the repository 
belongs. The stage is one of "libs", "release", "review" and "playground".

The build rules are:
1) "KDE Support" comes first

2) "KDE Base" comes second

3) within each category, libs comes first

4) everything else is build-order independent (that is, must not depend on)

So a sample structure is like follows (FAQ below):

Category: KDE Support
 - libs
	Qt
	QCA
	Soprano
	Akonadi
	Strigi
	Taglib
 - release
	Oxygen Icons
	Shared Desktop Ontologies

KDE Base
 - libs
	kdelibs
	knotificationitem-experimental
 - release
	runtime
	dolphin
	konqueror
	konsole
	kwrite
 - review
	device-automounter
 - playground
	freespacenotifier
	kfingerprint

KDE Workspace
 - libs
	libkworkspace ?
 - release
	plasma
	kwin
	krunner
	kmenuedit
 - review
	some plasmoids?
 - playground
	dataengines, plasma applets
	etc.

KDE Educational
 - libs
	libkdeedu
 - release
	kalgebra
	kalzium
	kgeography
 - review
	?
 - playground
	kard
	kverbos

KDE Multimedia
 - libs
	libkcddb
	libkdemultimedia
 - release
	amarok
	dragonplayer
	juk
	kmix
	kmplayer
	kplayer
 - review
 - playground
	
KDE Network
 - libs
	libbtcore
 - release
	kget
	kopete
	krdc
	ktorrent
	konversation
 - review
 - playground
	kbluetooth
	rekonq


Q: Does the build order imply a dependency?
A: No. It implies that a dependency could happen, not that it is mandated. 
However, the reverse of the order implies an absence of dependency.

For example, Amarok could depend on libkdemultimedia if it wanted to. But it 
cannot depend on libbtcore or libkdeedu.

Q: What can my app depend on?
A: Libs inside your category, KDE Base/Libs, KDE Support. That's all.

Q: Can my app depend on another app in the same category and stage?
A: No.

Q: What can my lib depend on?
A: In the general case, KDE Base/Libs and KDE Support. If it's a KDE Base 
library, then it's a good question.

Q: What are the flaws in this design?
A: Points not addressed:
 - most libraries depend on Qt, but if Qt is in KDE Support, then there's an 
order problem
 - it's impossible to have addons/plugins to apps
 - it's impossible to have libraries depend on other libraries
And other stuff I've missed.

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
  Senior Product Manager - Nokia, Qt Development Frameworks
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/kde-scm-interest/attachments/20100127/15c51f95/attachment.sig 


More information about the Kde-scm-interest mailing list