[pacman-dev] Splitting packages in makepkg

Miklos Vajna vmiklos at frugalware.org
Tue Jun 17 17:17:42 EDT 2008


On Mon, Jun 16, 2008 at 04:31:11PM -0500, Dan McGee <dpmcgee at gmail.com> wrote:
> > and this is where you make it impossible to name a subpkg 'kopete',
> > right?
> >
> > how would that handle the case when for example openoffice.org-i18n-de
> > is split from openoffice.org?
> >
> > (given that the implementation we have in pacman-g2 was already flamed
> > off here, iirc - i don't want to hype it here, but that one deals with
> > such a problem properly.)
> 
> Can you possibly give us an overview of how it works? I think it would
> be quite relevant to this discussion as it is actually a system that
> is used, rather than a bunch of "well this might work" scenarios.

http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=blob;f=doc/FrugalBuild.txt;hb=HEAD

-> '=== Package splitting'

basically we have a subpkgs() array which defines the subpackages, and
we have subfoo variables for other foo variables, like:

pkgname=libfoo
groups=('foo' 'bar')

pkgname=foo-doc
groups=('baz' 'blah')

becomes

subpkgs=('libfoo' "$pkgname-doc")
groups=('foo bar' 'baz blah')

the main package's files are still under $startdir/pkg, but libfoo is
under $startdir/pkg.libfoo, foo-doc is under $startdir/pkg.foo-doc, etc.

there is also a macro called Fsplit that moves a files/directories from
$startdir/pkg to a $startdir/pkg.foo dir, like:

Fsplit subpkgname usr/share/

but of course it can be done manually using mkdir and mv.

here is a more complex example when there are a lot of subpackages:

http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-stable.git;a=blob;f=source/locale-extra/kde-i18n/FrugalBuild;hb=HEAD

probably the biggest problem with it (since every implementation has
some problems) is that it can be a bit tricky to see for example what
deps are set for a given subpackage if you have a lot of them.

like this:

http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-stable.git;a=blob;f=source/devel/gcc/FrugalBuild;hb=HEAD

if you ask me what deps 'gcc-objc++' has, then i can't say the answer
right now, i have to search a bit.

and the big benefit (what rpm does not have) is that if you don't split
a given file then it's included in the main package and it is not just
dropped, like rpm does.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://archlinux.org/pipermail/pacman-dev/attachments/20080617/a8515c1f/attachment.pgp>


More information about the pacman-dev mailing list