Monthly Archives: February 2007

Rebuilding the Archive Using Cowbuilder

Did you ever want to rebuild the archive, but setting up this whole wanna-build/sbuild/buildd stuff somewhat scared you? Then this small script might be for you. All you need is cowbuilder, the rights to build inside a cowbuilder environment and this script.

When you call it with a list of packages as argument it will build every package in a clean cowbuilder environment, saving the buildlog (succeeded-$package or failed-$package) and cleaning up the rest afterwards.

To speed up things you can run several instances of this script concurrently — lockfiles will prevent the script from building the same package more than once.

It is even safe to kill the script and restart it later. It will automatically skip all packages where a logfile (succeded|failed)-$package already exists. All you have to do after you killed the script is to remove the lockfile in the LOGDIR and the $package-directory in the BUILDDIR.


#!/bin/sh
# Version: 2007-02-20

LIST=$1

LOGDIR=$(pwd)/"logs"
BUILDDIR=$(pwd)/"build"
BASEPATH="/var/cache/pbuilder/base-testing.cow"

function build {
    PACKAGE=$1

    mkdir -p $BUILDDIR/$PACKAGE
    cd $BUILDDIR/$PACKAGE

    apt-get source $PACKAGE &> /dev/null
    cd $(find . -type d ! -name .)
    pdebuild --pbuilder cowbuilder --use-pdebuild-internal --buildresult .. -- --basepath $BASEPATH &> $LOGDIR/.$PACKAGE

    if [ $? -eq 0 ]; then
        mv $LOGDIR/.$PACKAGE $LOGDIR/succeeded-$PACKAGE
    else
        mv $LOGDIR/.$PACKAGE $LOGDIR/failed-$PACKAGE
    fi

    cd $BUILDDIR
    rm -rf $PACKAGE
}


[ -d $LOGDIR ] || mkdir $LOGDIR

if [ ! -e $LIST ]; then
    echo "No Buildlist given."
    exit 1
fi

while read package; do
    # Create Lockfile (ln -s is atomic and fails if link already exists)
    ln -s $package $LOGDIR/.$package.lock 2> /dev/null || continue

    # Build the package if not already built
    if [ ! -e $LOGDIR/succeeded-$package -a ! -e $LOGDIR/failed-$package ]; then
        echo $(date +%F\ %T) Building $package...
        build $package
    fi

    # Remove Lockfile
    rm -f $LOGDIR/.$package.lock
done < $LIST

I know my bash scripting skills are shitty, so please send patches after you laughed ;)

I'm currently running two instances concurrently for 3 days on my Pentium 2,4GHz HT box and have rebuilt ~70% of the testing archive so far.

It would be cool to distribute the rebuilt across a few computers via ssh, so that they're all building on the same list but using their own cowbuilders. It should be sufficient if all computers shared the same LOGDIR across the network, but I'm not sure how to do this. NFS does not the trick since it cannot guarantee the atomicity of the ln-command.

DPL 2007, Current Candidates

For those who don’t follow -vote regularly, it seems like we have currently four official nominations for this year’s DPL vote:

and two pending ones:

  • RaphaĆ«l Hertzog (undecided)
  • Sam Hocevar (unofficial)

A totally unrelated note: If you want to get really frustrated and angry but don’t feel like participating in Debian’s infamous flamefests — try to learn to juggle a 5 ball cascade. This will keep you busy for several months without getting on everybody’s (well, everybody but your neighbor’s) nerves.

Update: Ooops, I forgot Wouter — thanks Alexander.

Pimp My Boot Process (II)

I’m still working on a grub/usplash splashscreen in order to pimp my boot process.

Let’s see what we have:

Creating the grub image is rather easy. What’s obviously missing here is the correct position and color of the text stuff.

Creating a working splash image for usplash was kinda tricky. I tried several HOWTOs which took a long time since I had to reboot in order to test the result. Unfortunately every attempt I made resulted in either a blank screen or the default fallback splash.

As a last resort I took the source of debian-edu-artwork which has a working usplash, replaced their image with mine and rebuild the package. I don’t know yet why, but it worked.

I plan to create package with combined grub/usplash(/xDM) artwork and several alternative themes, but since our usplash version is lagging behind upstreams I think I’ll wait until we catched up again. The new version is not backwards compatible with the old one and the new one as quite a lot new cool features like:

  • scripts which help to create splashscreens
  • support of 256 colors (currently 16)
  • support of different resolutions (currently 640×480 is hardcoded)

which make it a lot easier to create good looking splash screens.

RC Bug Triage

In the last three days I made 15 NMUs, fixing 11 RC- and 4 l10n-bugs.

I noticed that some maintainers were not aware that one of their packages had an open RC bug from the mails I received afterwards. So please double check your QA package for open RC bugs and fix them if you can.

If you have some spare time please go to the unofficial RC-bugs page and check the bugs which are older than 7 days and affect etch and sid. We’re currently in a permanent BSP till etch is out, so 0-day NMUs are allowed.

If you are an NM or no maintainer at all, you still can help by providing patches, submitting them to the BTS and tagging the bug with “patch”. Someone will upload ASAP and might even thank you in the corresponding changelog entry.