[pacman-dev] Schematic system for pacman-lib question and discussion

Christian Hamar krics at linuxforum.hu
Mon Dec 19 12:59:51 EST 2005


Hey again. Sorry i'm a little bit busy and lacks the patches from me :)

But, not for this while i'm writing.

We talked about Judd on IRC (freenode) about an idea, to made pacman-lib
(call pacman3 for in this mail) to support more distros and other
things.

As i see there are out some distro which using pacman as package
manager. (4-5 maybe ?) Especially at frugalware we got many changes in
makepkg, gensync, updatesync, etc. Those are frugalware specific
changes. But go for other distros. Other distros got changes too.
Example the PACKAGE_EXTENSION (which is .tar.gz in arch and .fpm in
frugalware) the file locations, cache locations, etc.. And makepkg
gensync and other scripts can be different on different distributions.

Since we are using autoconf/automake we got the power to put things to
config.h and use it globally in the .c code (now such values are
hardcoded in the sources).

As we talked about Judd, i got an idea. With autoconf/automake i can
make a schema system for those things which i wrote it in here before.
Something like this:

./configure --with-distro=archlinux (or frugalware or anythingelse)

And we can solve many problems in config.h and we got schemas. Example

if x$distro$ was archlinux ; then ... 
PACKAGE_EXT=tar.gz ... 
if frugalware ; then ...
PACKAGE_EXT=fpm ...

and other many usable thing. With the current conception it is a problem
for distros, because other distros need patch and hack and sed pacman
source and scripts to customize for their needs.

The schematic version will be solve this too. And maybe pacman will be
greater and simpler to use in any distro which want to use pacman as
package manager.

This was the good part :) Now see the bad part (not very bad :) )

First. 

1. At source files, we can do everything from config.h and we can use
#ifdefs where we need them in the source. (Specially archlinux got some
function which will give back a package version and release, but in
frugalware we got an extra variable named $arch (which is for the
architecture) there need some #ifdef.)

2. The problem. At scripts (gensync, updatesync, makepkg, etc) this was
(config.h) isn't a very walkable way, because it is more complex. We can
use there some global vars too (packageextension, etc...) but example in
frugalware there is many many improvements and differences. So that
isn't configurable via config.h or configure. 

My idea for that. We need something like this:

scripts/makepkg.archlinux.in
scripts/makepkg.frugalware.in
scripts/makepkg.someotherdistro.in

This way is good, because we are in sync and distros can not """broke"""
other distros scripts, but we got the sync between those scripts.
Because if somebody found a bug in makepkg.archlinux then it is
"backportable" for otherdistros script too. (Of course by the
distribution manager)

Think on it please and i'm waiting for opinions and ideas or
improvements and comments and critics :) and money ! :)) (was a
joke :P )

Sorry for long mail. :)

Regards

Christian Hamar alias krix
Hungary
Frugalware Developer Team






More information about the pacman-dev mailing list