Home | Linux | Sound | Guestbook | Me

ABS (ArchBuildSystem)

ABS (Arch Build System) is Archlinux powerfull package builder. You can use this to add new packages to Archlinux or to make your own versions of existing packages (e.g. rebuild the arts package so it supports Alsa). First of all you need a fresh copy of all buildfiles on your locale system:

abs

You need cvsup for this command, so issue a pacman -S cvsup if you don't have cvsup installed. Now abs will download all the BUILDPKG files to your local /usr/abs repository. When it's done just head over there and start editing a MAKEPKG file :)

In the following example I will add Alsa support to the arts sound deamon:

Edit the BUILDPKG file in /usr/abs/kde/arts and look for the line which says --disable-alsa, remove that part and save the file. Now issue the following command and enjoy the show:

makepkg

This command will start the ABS engine which reads your BUILDPKG file. First the sources are downloaded then the sources are unpacked in /usr/abs/kde/arts/src and compiled in the /usr/abs/kde/arts/pkg directory. When the compiling process is finished the package is gzipped and placed in the /usr/abs/kde/arts directory. A simple pacman -U *gz will upgrade arts to the alsa enabled version. And some people say sources are scary :)

Making a BUILDPKG file for a new package isn't very hard, I'll give an example (next package doesn't really exists)

# Contributor: Lucien Immink <l.immink@vpro.nl> your name and email
pkgname=Foo Name of the package
pkgver=0.1 Version
pkgrel=1 release version
url="http://foo.bar/" url where to get the sources
depends('gtk2' 'glibc') packages you have to install when you want to use this package
conflicts() packages this package conflicts with, e.g. the both offer the same lib
backup() files that are backuped before upgrading or installing this package
source=($url/$pkgname-$pkgver.tar.gz) the complete url, as you can see you can use earlier defines variables
build() {
cd $startdir/src/$pkgname-$pkgver
./configure --prefix=/usr
make || return 1
make DESTDIR=$startdir/pkg install
}
The compilation itself, see how simple it is? In most cases you don't have to edit this part of the BUILDPKG file.
  Wasted space