Initial commit of build scripts and config
authorSteve McIntyre <steve@einval.com>
Tue, 23 Oct 2018 17:30:33 +0000 (17:30 +0000)
committerSteve McIntyre <steve@einval.com>
Wed, 24 Oct 2018 15:03:16 +0000 (15:03 +0000)
15 files changed:
bin/analyze_results [new file with mode: 0755]
bin/build-client [new file with mode: 0755]
bin/get_package [new file with mode: 0755]
bin/remove_duplicates [new file with mode: 0755]
bin/report_build_result [new file with mode: 0755]
bin/requeue [new file with mode: 0755]
build-config/pbuilder/buildd-config.sh [new file with mode: 0644]
build-config/pbuilder/hooks/B01kill-gpg-agent [new file with mode: 0755]
build-config/pbuilder/hooks/C01kill-gpg-agent [new symlink]
build-config/pbuilder/hooks/D01update [new file with mode: 0755]
build-config/pbuilder/hooks/D02enable_swp [new file with mode: 0755]
build-config/pbuilderrc [new file with mode: 0644]
build-config/sbuild/sbuild.conf [new file with mode: 0644]
build-config/schroot/chroot.d/sid-armel-sbuild-9o0hzk [new file with mode: 0644]
build-config/schroot/chroot.d/sid-armhf-sbuild-ov4BWj [new file with mode: 0644]

diff --git a/bin/analyze_results b/bin/analyze_results
new file mode 100755 (executable)
index 0000000..f3727d4
--- /dev/null
@@ -0,0 +1,299 @@
+#! /usr/bin/perl
+
+# Script to analyze failed build logs. Look for specific regexps to
+# classify things
+
+use strict;
+use warnings;
+
+my $logs = "/home/build/logs";
+my $logs_fail = "$logs/FAIL";
+my $num_fail = 0;
+
+# Known failure modes to look for
+my @logcheck = (
+    {
+       # Couldn't install build-deps
+       string   => '^Unable to resolve dependencies',
+       pstring  => '.*',
+       message  => 'build-deps failed',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "rchitecture mismatch" -> should never build on this arch
+       # Stop working on this log at this point
+       string   => 'rchitecture mismatch',
+       pstring  => '.*',
+       message  => 'architecture mismatch',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       string   => 'not in arch list or does not match any',
+       pstring  => '.*',
+       message  => 'architecture mismatch',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       string   => 'No space left on device',
+       pstring  => '.*',
+       message  => 'ran out of disk space',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "binary build with no binary artifacts found" -> no packages
+       # built. Why not picked up already above?.
+       # Stop working on this log at this point
+       string   => 'binary build with no binary artifacts found',
+       pstring  => '.*',
+       message  => 'no binaries built',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "Bus error" -> alignment bug
+       string   => 'Bus error',
+       pstring  => '.*',
+       message  => 'alignment problem',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "Segmentation fault" -> code problem
+       string   => 'Segmentation fault',
+       pstring  => 'Setting up libglib2.0-cil',
+       message  => 'Segmentation fault (mono)',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "Segmentation fault" -> code problem
+       string   => 'Segmentation fault',
+       pstring  => '.*',
+       message  => 'Segmentation fault',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "Illegal instruction" -> bad build target?
+       string   => 'Illegal instruction',
+       pstring  => 'Setting up ghc',
+       message  => 'Illegal instruction (ghc)',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # "Illegal instruction" -> bad build target?
+       string   => 'Illegal instruction',
+       pstring  => '.*',
+       message  => 'Illegal instruction',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Installing build-deps failed
+       string   => 'dpkg: error processing package',
+       pstring  => '.*',
+       message  => 'build-deps failed',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Installing build-deps failed
+       string   => 'E: Unmet dependencies',
+       pstring  => '.*',
+       message  => 'build-deps failed',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Installing build-deps failed
+       string   => 'unsat-dependency:',
+       pstring  => '.*',
+       message  => 'build-deps failed',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed - missing build-dep?
+       string   => 'build dependencies/conflicts unsatisfied',
+       pstring  => '.*',
+       message  => 'build-deps not satisfiable',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed - missing build-dep?
+       string   => 'ld: cannot find',
+       pstring  => '.*',
+       message  => 'build failure: missing library - missing build-dep?',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed - missing build-dep?
+       string   => 'fatal error:.*No such file or directory',
+       pstring  => '.*',
+       message  => 'build failure: missing header - missing build-dep?',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed - missing build-dep?
+       string   => 'SEVERE: Cannot resolve dependencies',
+       pstring  => '.*',
+       message  => 'build failure - missing build-dep?',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed - can't exec something...
+       string   => 'error trying to exec.*execvp: No',
+       pstring  => '.*',
+       message  => 'build failure (missing binary)',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed
+       string   => 'make.*returned exit code',
+       pstring  => '.*',
+       message  => 'build failure (other)',
+       check    => 1,
+       stop     => 0,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed
+       string   => '^make.*Error \d+$',
+       pstring  => '.*',
+       message  => 'build failure (other)',
+       check    => 0,
+       stop     => 0,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed
+       string   => 'dpkg-source: error: unrepresentable changes to source',
+       pstring  => '.*',
+       message  => 'dpkg-source failure',
+       check    => 1,
+       stop     => 1,
+       timeout  => 0, # This is a real error, not a build timeout
+    },
+    {
+       # Build failed
+       string   => 'fakeroot debian/rules binary',
+       pstring  => '.*',
+       message  => 'build failure (other)',
+       check    => 0,
+       stop     => 1,
+    },
+    {
+       # Timeout. pbuilder is too dumb to do this properly :-(
+       string   => 'I: Terminating build process due to timeout',
+       pstring  => '.*',
+       message  => 'build timeout',
+       check    => 1,
+       stop     => 1,
+       timeout  => 1, # This is a build timeout. If this happened
+                      # before other errors, then we should retry
+    },
+);
+
+my %log_results;
+
+#foreach my $checktmp (@logcheck) {
+#    my %check = %$checktmp;
+#    print "looking for \"$check{string}\"\n";
+#    print "  with log message \"$check{message}\"\n";
+#    print "  check this regexp: $check{check}\n";
+#    print "  stop if found: $check{stop}\n";
+#}
+
+print "<html>\n";
+print "<head>\n";
+print "<title>Build log analysis</title>\n";
+print "</head>\n";
+print "<body>\n";
+print "<h1>Build log analysis</h1>\n";
+print "<h2>Packages</h2>\n";
+print "<ol>\n";
+
+foreach my $input (@ARGV) {
+    open (IN, "< $input") or die "Can't read $input: $!\n";
+    $num_fail++;
+    my $stop = 0;
+    my $lineno = 0;
+    my $errors = 0;
+    my $oldline = "";
+    my %file_results;
+    print "<li>Looking at <a href=\"$input\">$input</a>:\n";
+    print "<ul>\n";
+    while (defined (my $line = <IN>) and !$stop) {
+       $lineno++;
+       foreach my $checktmp (@logcheck) {
+           my %check = %$checktmp;
+           if ($check{check}) {
+               if (!$stop
+                   and $line =~ m/$check{string}/
+                   and $oldline =~ m/$check{pstring}/) {
+#                  print "  Line $lineno: found \"$check{string}\"\n";
+                   $file_results{$check{message}} = 1;
+                   if ($check{timeout} and $errors == 0) {
+                       print "  <li>Build killed by timeout before any errors at line $lineno\n";
+                   } else {
+                       print "  <li>Line $lineno: $check{message}\n";
+                       $errors++;
+                   }
+                   if ($check{stop}) {
+#                      print "  stopping processing\n";
+                       $stop = 1;
+                   }
+               }
+           }
+       }
+       $oldline = $line;
+    }
+    # End of checking this package
+    print "  <li><strong>found errors: $errors</strong>\n";
+    if (!$errors) {
+       print " (maybe just timed out during build?)\n";
+    }
+    print "</ul>\n";
+    foreach my $key (keys %file_results) {
+       $log_results{$key} += 1;
+#      print "now have $log_results{$key} for \"$key\"\n";
+    }
+}
+print "</ol>\n";
+
+print "<h2>Summary of results from $num_fail failed builds:</h2>\n";
+print "<ol>\n";
+foreach my $key (keys %log_results) {
+    print "  <li>Found $log_results{$key} logs showing $key\n";
+}
+print "</ol>\n";
+print "</body>\n";
+print "</html>\n";
diff --git a/bin/build-client b/bin/build-client
new file mode 100755 (executable)
index 0000000..029c613
--- /dev/null
@@ -0,0 +1,149 @@
+#!/bin/bash
+
+INPUT=/home/steve/build-list
+LOGDIR=/chroot/rebuildd/logs
+PBUILD_CACHE=/var/cache/pbuilder
+PBUILD_OUT=/chroot/rebuildd/out
+HOSTNAME=$(hostname)
+BUILDS_DONE=0
+MAX_BUILDS=0
+JACK_SCRIPT=/home/build/bin/build-client
+if [ "$1"x != ""x ]; then
+    MAX_BUILDS=$1
+fi
+
+cd /chroot/rebuildd
+
+# Make sure we're building in our temp space, not in /var/lib
+mkdir -p /chroot/rebuildd/schroot/unpack /chroot/rebuildd/sbuild/build
+mount | grep -q /var/lib/schroot/unpack
+if [ $? -ne 0 ]; then
+    mount --bind /chroot/rebuildd/schroot/unpack /var/lib/schroot/unpack
+fi
+mount | grep -q /var/lib/sbuild/build
+if [ $? -ne 0 ]; then
+    mount --bind /chroot/rebuildd/sbuild/build /var/lib/sbuild/build
+fi
+
+attempt_update () {
+    rsync -a build@jack:build-config/ /etc/
+    rsync -a --delete build@jack:chroots/ /chroot/rebuildd/chroots/
+    apt-get update
+    
+    MY_MD5=$(md5sum $0 | awk '{print $1}')
+    JACK_MD5=$(ssh build@jack md5sum $JACK_SCRIPT | awk '{print $1}')
+    if [ "$MY_MD5" = "$JACK_MD5" ]; then
+       return 0
+    fi
+
+    if [ x"$JACK_MD5" == x"" ]; then
+       return 0
+    fi    
+
+    # Different. Assumg that the one on jack is correct!
+    DATE=$(date)
+    echo "$DATE: Grabbing a new build-client script from jack"
+    echo "Old MD5 $MY_MD5, new MD5 $JACK_MD5"
+    
+    # Remove myself, so I can copy a new file in place
+    rm -f $0
+    rsync build@jack:$JACK_SCRIPT $0
+
+    # Now re-exec the new script
+    exec $0 $@
+}
+
+grab_and_build () {
+    BNUM=$1
+    PKG=$2
+    VER=$3
+    ARCH=$4
+    local error
+
+    DATE=$(date)
+    echo "$DATE: starting ${BNUM}: build of ${PKG} version ${VER} arch ${ARCH} on $HOSTNAME"
+    echo "Running apt-get -q --download-only --only-source source ${PKG}=${VER}"
+    apt-get -q --download-only --only-source source ${PKG}=${VER}
+    error=$?
+    ls -l
+    if [ $error -ne 0 ]; then
+       echo "Status: given-back"
+       return 1
+    fi
+
+    echo 1 > /proc/sys/abi/swp || true
+    
+#    PBUILD_TAR=${PBUILD_CACHE}/unstable-${ARCH}.tgz
+#    pbuilder build \
+#           --buildresult /chroot/rebuildd/out-$PKG \
+#           --bindmounts "/sys /proc /dev /dev/pts" \
+#           --basetgz ${PBUILD_TAR} \
+#           --timeout 4h \
+#           *.dsc
+
+    sudo -u sbuild sbuild \
+        --host=$ARCH --build=$ARCH -A -d sid \
+        --apt-update --apt-distupgrade -n \
+        *.dsc
+
+    mv -f * /chroot/rebuildd/out-$PKG
+
+    return 0
+}    
+
+while true; do
+    if [ -f /chroot/rebuildd/EXIT ]; then
+       echo "Found EXIT file, stopping here"
+       exit 0
+    fi
+
+    # Should we update ourselves?
+    attempt_update
+
+    # Ask jack for a package to build
+    BNUM_PKG_VER_ARCH=$(ssh build@jack ./bin/get_package $HOSTNAME)
+    BNUM=$(echo $BNUM_PKG_VER_ARCH | cut -d " " -f1)
+    PKG_VER_ARCH=$(echo $BNUM_PKG_VER_ARCH | cut -d " " -f2)
+    if [ "$PKG_VER_ARCH" = "NOPACKAGE" ]; then
+       echo "Nothing to do, wait..."
+       sleep 10
+       continue
+    fi
+    
+    PKG=$(echo $PKG_VER_ARCH | cut -d _ -f1)
+    VER=$(echo $PKG_VER_ARCH | cut -d _ -f2)
+    ARCH=$(echo $PKG_VER_ARCH | cut -d _ -f3)    
+
+    DATE=$(date)
+    echo "$DATE: starting build $BNUM: ${PKG} version ${VER} for ${ARCH}"
+    rm -rf build-$PKG out-$PKG
+    mkdir build-$PKG out-$PKG
+    cd build-$PKG
+    (grab_and_build $BNUM $PKG $VER $ARCH >${LOGDIR}/${PKG_VER_ARCH}.log 2>&1)
+
+    RESULT=$(tail -10 ${LOGDIR}/${PKG_VER_ARCH}.log | awk '/^Status:/ {print $2}')
+    DATE=$(date)
+    echo "   $DATE: returned $RESULT"
+    cd ..
+    rm -rf build-$PKG
+    case $RESULT in
+       successful)
+           rsync ${LOGDIR}/${PKG_VER_ARCH}.log build@jack:logs/${ARCH}/PASS/${PKG_VER_ARCH}.log
+           ;;
+       given-back)
+           rsync ${LOGDIR}/${PKG_VER_ARCH}.log build@jack:logs/${ARCH}/FAIL_SOURCE/${PKG_VER_ARCH}.log
+           ;;
+       *)
+           rsync ${LOGDIR}/${PKG_VER_ARCH}.log build@jack:logs/${ARCH}/FAIL/${PKG_VER_ARCH}.log
+           ;;
+    esac
+    rm ${LOGDIR}/${PKG_VER_ARCH}.log
+    rsync -a /chroot/rebuildd/out-$PKG/ build@jack:out/
+    rm -rf /chroot/rebuildd/out-$PKG
+    ssh build@jack ./bin/report_build_result "$HOSTNAME says $BNUM $PKG_VER_ARCH was $RESULT"
+    BUILDS_DONE=$(($BUILDS_DONE + 1))
+    if [ $MAX_BUILDS -gt 0 ] && [ $BUILDS_DONE -ge $MAX_BUILDS ]; then
+       echo "Reached build limit of $MAX_BUILDS, stopping"
+       exit 0
+    fi
+done
diff --git a/bin/get_package b/bin/get_package
new file mode 100755 (executable)
index 0000000..3444f56
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+CLIENT=$1
+LOGDIR=/home/build/logs
+LOGFILE=/var/log/builder.log
+
+cd in
+
+while true; do
+    FILE=$(ls -1 *.q | head -1)
+    NUM=$(echo $FILE | cut -d. -f1)
+    mv $NUM.q $NUM.proc
+    if [ $? -ne 0 ]; then # we clashed
+       echo NOPACKAGE
+       exit 1
+    fi
+
+    PKG_VER_ARCH=$(cat $NUM.proc)
+
+    DATE=$(date)
+
+    if [ -f ${LOGDIR}/${ARCH}/PASS/${PKG_VER_ARCH}.log ] || [ -f ${LOGDIR}/${ARCH}/FAIL/${PKG_VER_ARCH}.log ]; then
+       for file in ${LOGDIR}/${ARCH}/{PASS,FAIL}/${PKG_VER_ARCH}.log; do
+           # Ignore and try again
+           if [ -f  $file ]; then
+               echo "$DATE: Ignoring package $NUM: $PKG_VER_ARCH, already have logfile $file" >> $LOGFILE
+           fi
+       done
+       continue
+    fi
+
+    # else
+    echo "$DATE: Queued package $NUM: $PKG_VER_ARCH on $CLIENT" >> $LOGFILE
+    echo "$NUM $PKG_VER_ARCH"
+    exit 0
+done
+
+exit 0
+
diff --git a/bin/remove_duplicates b/bin/remove_duplicates
new file mode 100755 (executable)
index 0000000..f8acb14
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Run in the armel or armhf directory
+
+if [ ! -d PASS ] && [ ! -d FAIL ]; then
+    echo "Can't find PASS/FAIL dirs; abort";
+    exit 1
+fi
+
+for stem in $( (ls -1 PASS ; ls -1 FAIL) | grep -v .html$ | \
+    awk '{fields=split($1,a,"_"); count[a[1]]++};
+       END { for (keys in count) { if (count[keys] != 1) { print keys }}}'); do
+    NUM=$(ls -l */"$stem"_* | wc -l)
+    NUM=$(($NUM - 1))
+    for file in $(ls -1 */"$stem"_* | head -$NUM); do
+       echo "rm -v $file"
+    done
+    file=$(ls -1 */"$stem"_* | tail -1)
+    printf "### Keeping $file\n\n"
+done
diff --git a/bin/report_build_result b/bin/report_build_result
new file mode 100755 (executable)
index 0000000..0ae4a85
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+MESSAGE="$@"
+LOGFILE=/var/log/builder.log
+
+DATE=$(date)
+echo "$DATE: build result: $MESSAGE" >> $LOGFILE
+
+exit 0
+
diff --git a/bin/requeue b/bin/requeue
new file mode 100755 (executable)
index 0000000..f825037
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+# Helper script to requeue a build that has failed, due to missing
+# source, missing build-deps etc.
+
+IN=/home/build/in
+LOGS=/home/build/logs
+SOURCES=/mirror/debian/dists/unstable/main/source/Sources.gz
+MAX_BUILD_NUM=$(ls -1 $IN | tail -1 | sed 's,\..*$,,')
+
+for file in $@; do
+    if [ ! -e $file ] && [ -e $file.proc ]; then
+       file=$file.proc
+    fi
+    if [ ! -e $file ]; then
+       echo "Ignoring non-existent $file"
+       continue
+    fi
+    BASE=$(basename $file .proc)
+    PKG_VER_ARCH=$(cat $file)
+    PKG=$(echo $PKG_VER_ARCH | cut -d _ -f1)
+    VER=$(echo $PKG_VER_ARCH | cut -d _ -f2)
+    ARCH=$(echo $PKG_VER_ARCH | cut -d _ -f3)
+    if [ -f ${LOGS}/${ARCH}/PASS/${PKG}_${VER}_${ARCH}.log ]; then
+       echo "Ignoring successfully-built $file: $PKG_VER_ARCH"
+       continue
+    fi
+    if [ -f ${LOGS}/${ARCH}/FAIL/${PKG}_${VER}_${ARCH}.log ]; then
+       echo "Ignoring failed $file: $PKG_VER_ARCH"
+       continue
+    fi
+#    echo "Original build attempt source-failed for $file: $PKG_VER_ARCH"
+    echo "  Old version was $VER"
+    echo "  Checking what version now exists"
+    NEW_VER=$(zcat $SOURCES | grep-dctrl -S -X ${PKG} -s version | awk '{print $2}' | tail -1)
+    if [ "$NEW_VER"x = ""x ]; then
+       echo "  Can't find any version for $PKG now, giving up"
+    else
+       if [ "$NEW_VER"x = "$VER"x ]; then
+           echo "  Same version still exists!"
+           if [ -f ${LOGS}/${ARCH}/FAIL_SOURCE/${PKG}_${VER}_${ARCH}.log ]; then
+               echo "  Moving old log file to one side"
+               mv ${LOGS}/${ARCH}/FAIL_SOURCE/${PKG}_${VER}_${ARCH}.log ${LOGS}/${ARCH}/FAIL_SOURCE/${PKG}_${VER}_${ARCH}.log.1
+           fi
+           echo "  And requeueing"
+           rm -f $BASE.proc
+           echo "${PKG}_${VER}_${ARCH}" > $BASE.q
+       else
+           echo "  Version moved from $VER to $NEW_VER"
+           echo "  Deleting old log file"
+           rm -f  ${LOGS}/${ARCH}/FAIL_SOURCE/${PKG}_${VER}_${ARCH}.log
+           echo "  And queueing new version"
+           MAX_BUILD_NUM=$(($MAX_BUILD_NUM + 1))
+           echo "${PKG}_${NEW_VER}_${ARCH}" > ${MAX_BUILD_NUM}.q
+           ls -l ${MAX_BUILD_NUM}.q
+       fi
+    fi
+done
+
diff --git a/build-config/pbuilder/buildd-config.sh b/build-config/pbuilder/buildd-config.sh
new file mode 100644 (file)
index 0000000..bdfe2fe
--- /dev/null
@@ -0,0 +1,16 @@
+# this is the configuration for buildd-pbuilder.
+
+BASEDIRECTORY=/var/cache/pbuilder/pbuildd/
+MIRROR=ftp.debian.org
+HOOKDIR=/usr/share/doc/pbuilder/examples/pbuildd/hookdir
+ROOTCOMMAND=sudo
+
+# the following is one sample:
+function waitingroutine () {
+    while sleep 1s; do
+       if ps ax | grep "x[l]ock"; then
+               # if xlock does exist, break from loop
+               break
+       fi
+    done
+}
\ No newline at end of file
diff --git a/build-config/pbuilder/hooks/B01kill-gpg-agent b/build-config/pbuilder/hooks/B01kill-gpg-agent
new file mode 100755 (executable)
index 0000000..0545d82
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# B<digit><digit><whatever-else-you-want> is executed after build
+# system finishes building, successfully, before copying back the
+# build result.
+#
+# C<digit><digit><whatever-else-you-want> is executed after build
+# failure, before cleanup.
+
+PIDS=$(pidof gpg-agent)
+
+if [ "$PIDS"x != ""x ]; then
+    echo "Found running gpg-agent on $PIDS; killing..."
+    kill -9 $PIDS
+fi
+
+# kill anything else still running as user 1234
+PIDS=$(ps wwwaux | grep 1234 | awk '{print $2}')
+if [ "$PIDS"x != ""x ]; then
+    echo "Found other processes running as uid 1234, killing them:"
+    echo $PIDS
+    kill -9 $PIDS
+fi
+
+exit 0
diff --git a/build-config/pbuilder/hooks/C01kill-gpg-agent b/build-config/pbuilder/hooks/C01kill-gpg-agent
new file mode 120000 (symlink)
index 0000000..92d23bb
--- /dev/null
@@ -0,0 +1 @@
+B01kill-gpg-agent
\ No newline at end of file
diff --git a/build-config/pbuilder/hooks/D01update b/build-config/pbuilder/hooks/D01update
new file mode 100755 (executable)
index 0000000..d8a784c
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# D<digit><digit><whatever-else-you-want> is executed before unpacking
+# the source inside the chroot, after setting up the chroot
+# environment.  Create $TMP, and $TMPDIR if necessary.
+
+apt-get update
+apt-get -y install procps
diff --git a/build-config/pbuilder/hooks/D02enable_swp b/build-config/pbuilder/hooks/D02enable_swp
new file mode 100755 (executable)
index 0000000..9d6dd47
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# D<digit><digit><whatever-else-you-want> is executed before unpacking
+# the source inside the chroot, after setting up the chroot
+# environment.  Create $TMP, and $TMPDIR if necessary.
+
+echo 1 > /proc/sys/abi/swp
+
diff --git a/build-config/pbuilderrc b/build-config/pbuilderrc
new file mode 100644 (file)
index 0000000..7cccbfb
--- /dev/null
@@ -0,0 +1,10 @@
+# this is your configuration file for pbuilder.
+# the file in /usr/share/pbuilder/pbuilderrc is the default template.
+# /etc/pbuilderrc is the one meant for overwriting defaults in
+# the default template
+#
+# read pbuilderrc.5 document for notes on specific options.
+MIRRORSITE=http://mirror.einval.org/debian
+
+HOOKDIR="/etc/pbuilder/hooks"
+BUILDPLACE=/chroot/rebuildd/pbuilder
diff --git a/build-config/sbuild/sbuild.conf b/build-config/sbuild/sbuild.conf
new file mode 100644 (file)
index 0000000..14f847c
--- /dev/null
@@ -0,0 +1,1157 @@
+# sbuild.conf: sbuild settings.                                    -*- Perl -*-
+# Default settings are commented out.
+# Note that all possible settings are listed here.  Many may be set on
+# the command-line, and do not normally need setting here,
+# e.g. $verbose.  Others need setting by each individual user in their
+# ~/.sbuildrc, but are listed here for completeness.
+
+
+##
+## Build environment
+##
+
+# LD_LIBRARY_PATH
+# Type: STRING
+# Library search path to use inside the chroot.
+# See also related command line options in sbuild(1):
+#   --use-snapshot
+#$ld_library_path = undef;
+
+# PATH
+# Type: STRING
+# PATH to set when running dpkg-buildpackage.
+# See also related command line options in sbuild(1):
+#   --use-snapshot
+#$path =
+#'/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games';
+
+
+
+##
+## Build options
+##
+
+# APPEND_TO_VERSION
+# Type: STRING
+# Suffix to append to version number.  May be useful for derivative
+# distributions.
+# See also related command line options in sbuild(1):
+#   --append-to-version
+#$append_to_version = undef;
+
+# BIN_NMU
+# Type: STRING
+# Binary NMU changelog entry.
+# See also related command line options in sbuild(1):
+#   --make-binNMU
+#$bin_nmu = undef;
+
+# BIN_NMU_CHANGELOG
+# Type: STRING
+# The content of a binary-only changelog entry. Leading and trailing
+# newlines will be stripped.
+# See also related command line options in sbuild(1):
+#   --binNMU-changelog
+#$bin_nmu_changelog = undef;
+
+# BIN_NMU_TIMESTAMP
+# Type: STRING
+# Binary NMU timestamp. The timestamp is either given as n integer in Unix
+# time or as a string in the format compatible with Debian changelog
+# entries (i.e. as it is generated by date -R). If set to the default
+# (undef) the date at build time is used.
+# See also related command line options in sbuild(1):
+#   --binNMU-timestamp
+#$bin_nmu_timestamp = undef;
+
+# BIN_NMU_VERSION
+# Type: STRING
+# Binary NMU version number.
+# See also related command line options in sbuild(1):
+#   --binNMU
+#   --make-binNMU
+#$bin_nmu_version = undef;
+
+# BUILD_ARCH
+# Type: STRING
+# Build architecture (Arch we are building on).
+# See also related command line options in sbuild(1):
+#   --arch
+#   --build
+#build_arch = ...;
+
+# BUILD_ARCH_ALL
+# Type: BOOL
+# Build architecture: all packages by default.
+# See also related command line options in sbuild(1):
+#   --arch-all
+#   --no-arch-all
+#$build_arch_all = 0;
+
+# BUILD_ARCH_ANY
+# Type: BOOL
+# Build architecture: any packages by default.
+# See also related command line options in sbuild(1):
+#   --arch-any
+#   --no-arch-any
+#$build_arch_any = 1;
+
+# BUILD_ENV_CMND
+# Type: STRING
+# This command is run with the dpkg-buildpackage command line passed to it
+# (in the chroot, if doing a chrooted build).  It is used by the sparc
+# buildd (which is sparc64) to call the wrapper script that sets the
+# environment to sparc (32-bit).  It could be used for other build
+# environment setup scripts.  Note that this is superseded by schroot's
+# 'command-prefix' option
+#$build_env_cmnd = '';
+
+# BUILD_PATH
+# Type: STRING
+# By default the package is built in a path of the following format
+# /build/packagename-XXXXXX/packagename-version/ where XXXXXX is a random
+# ascii string. This option allows one to specify a custom path where the
+# package is built inside the chroot. The sbuild user in the chroot must
+# have permissions to create the path. Common writable locations are
+# subdirectories of /tmp or /build. Using /tmp might be dangerous, because
+# (depending on the chroot backend) the /tmp inside the chroot might be a
+# world writable location that can be accessed by processes outside the
+# chroot. The directory /build can only be accessed by the sbuild user and
+# group and should be a safe location. The buildpath must be an empty
+# directory because the last component of the path will be removed after
+# the build is finished. Notice that depending on the chroot backend (see
+# CHROOT_MODE), some locations inside the chroot might be bind mounts that
+# are shared with other sbuild instances. You must avoid using these shared
+# locations as the build path or otherwise concurrent runs of sbuild will
+# likely fail. With the default schroot chroot backend, the directory
+# /build is shared between multiple schroot sessions. You can change this
+# behaviour in /etc/schroot/sbuild/fstab. The behaviour of other chroot
+# backends will vary.
+# See also related command line options in sbuild(1):
+#   --build-path
+#$build_path = undef;
+
+# BUILD_PROFILES
+# Type: STRING
+# Build profiles. Separated by spaces.
+# See also related command line options in sbuild(1):
+#   --profiles
+#$build_profiles = '';
+
+# BUILD_SOURCE
+# Type: BOOL
+# By default, do not build a source package (binary only build).  Set to 1
+# to force creation of a source package, but note that this is
+# inappropriate for binary NMUs, where the option will always be disabled.
+# See also related command line options in sbuild(1):
+#   -s
+#   --source
+#   --no-source
+#$build_source = 0;
+
+# CHECK_SPACE
+# Type: BOOL
+# Check free disk space prior to starting a build.  sbuild requires the
+# free space to be at least twice the size of the unpacked sources to allow
+# a build to proceed.  Can be disabled to allow building if space is very
+# limited, but the threshold to abort a build has been exceeded despite
+# there being sufficient space for the build to complete.
+$check_space = 0;
+
+# CLEAN_SOURCE
+# Type: BOOL
+# When running sbuild from within an unpacked source tree, run the 'clean'
+# target before generating the source package. This might require some of
+# the build dependencies necessary for running the 'clean' target to be
+# installed on the host machine. Only disable if you start from a clean
+# checkout and you know what you are doing.
+# See also related command line options in sbuild(1):
+#   --clean-source
+#   --no-clean-source
+#$clean_source = 1;
+
+# DISTRIBUTION
+# Type: STRING
+# Default distribution.  By default, no distribution is defined, and the
+# user must specify it with the -d option.  However, a default may be
+# configured here if desired.  Users must take care not to upload to the
+# wrong distribution when this option is set, for example experimental
+# packages will be built for upload to unstable when this is not what is
+# required.
+# See also related command line options in sbuild(1):
+#   -d
+#   --dist
+#$distribution = undef;
+
+# FORCE_ORIG_SOURCE
+# Type: BOOL
+# By default, the -s option only includes the .orig.tar.gz when needed
+# (i.e. when the Debian revision is 0 or 1).  By setting this option to 1,
+# the .orig.tar.gz will always be included when -s is used.
+# See also related command line options in sbuild(1):
+#   --force-orig-source
+#$force_orig_source = 0;
+
+# GCC_SNAPSHOT
+# Type: BOOL
+# Build using current GCC snapshot?
+# See also related command line options in sbuild(1):
+#   --use-snapshot
+#$gcc_snapshot = 0;
+
+# HOST_ARCH
+# Type: STRING
+# Host architecture (Arch we are building for)
+# See also related command line options in sbuild(1):
+#   --arch
+#   --host
+#host_arch = ...;
+
+# PGP_OPTIONS
+# Type: ARRAY:STRING
+# Additional signing options for dpkg-buildpackage
+#$pgp_options = [
+#                '-us',
+#                '-uc'
+#              ];
+
+# SOURCE_ONLY_CHANGES
+# Type: BOOL
+# Also produce a changes file suitable for a source-only upload.
+# See also related command line options in sbuild(1):
+#   --source-only-changes
+#$source_only_changes = 0;
+
+# TOOLCHAIN_REGEX
+# Type: ARRAY:STRING
+# Regular expressions identifying toolchain packages.  Note that for
+# backward compatibility, this is also settable using the array
+# @toolchain_regex (deprecated), rather than an array reference.
+#$toolchain_regex = [
+#                    'binutils$',
+#                    'dpkg-dev$',
+#                    'gcc-[\\d.]+$',
+#                    'g\\+\\+-[\\d.]+$',
+#                    'libstdc\\+\\+',
+#                    'libc[\\d.]+-dev$',
+#                    'linux-kernel-headers$',
+#                    'linux-libc-dev$',
+#                    'gnumach-dev$',
+#                    'hurd-dev$',
+#                    'kfreebsd-kernel-headers$'
+#                  ];
+
+
+
+##
+## Build timeouts
+##
+
+# INDIVIDUAL_STALLED_PKG_TIMEOUT
+# Type: HASH:NUMERIC
+# Some packages may exceed the general timeout (e.g. redirecting output to
+# a file) and need a different timeout.  This has is a mapping between
+# source package name and timeout.  Note that for backward compatibility,
+# this is also settable using the hash %individual_stalled_pkg_timeout
+# (deprecated) , rather than a hash reference.
+#    %individual_stalled_pkg_timeout = (smalleiffel => 300,
+#                                 jade => 300,
+#                                 atlas => 300,
+#                                 glibc => 1000,
+#                                 'gcc-3.3' => 300,
+#                                 kwave => 600);
+#$individual_stalled_pkg_timeout = {};
+
+# LOCK_INTERVAL
+# Type: NUMERIC
+# Lock wait interval (seconds).  Maximum wait time is (max_lock_trys x
+# lock_interval).
+#$lock_interval = 5;
+
+# MAX_LOCK_TRYS
+# Type: NUMERIC
+# Number of times to try waiting for a lock.
+#$max_lock_trys = 120;
+
+# STALLED_PKG_TIMEOUT
+# Type: NUMERIC
+# Time (in minutes) of inactivity after which a build is terminated.
+# Activity is measured by output to the log file.
+$stalled_pkg_timeout = 720;
+
+##
+## Build validation
+##
+
+# AUTOPKGTEST
+# Type: STRING
+# Path to autopkgtest binary
+# See also related command line options in sbuild(1):
+#   --autopkgtest-opt
+#   --autopkgtest-opts
+#$autopkgtest = 'autopkgtest';
+
+# AUTOPKGTEST_OPTIONS
+# Type: ARRAY:STRING
+# Options to pass to autopkgtest.  Each option is a separate arrayref
+# element.  For example, ['-b', '<chroot_tarball>'] to add -b and
+# <chroot_tarball>.
+#$autopkgtest_opts = [];
+
+# AUTOPKGTEST_ROOT_ARGS
+# Type: ARRAY:STRING
+# Preceding arguments to launch autopkgtest as root. With the default value
+# (the empty array) "sudo --" will be used as a prefix. If the first
+# element in the array is the empty string, no prefixing will be done. If
+# the value is a scalar, it will be prefixed by that string. If the scalar
+# is an empty string, no prefixing will be done.
+# See also related command line options in sbuild(1):
+#   --autopkgtest-root-arg
+#   --autopkgtest-root-args
+#    # prefix with "sudo --":
+#    $autopkgtest_root_args = [];
+#    $autopkgtest_root_args = ['sudo', '--'];
+#    # prefix with "env":
+#    $autopkgtest_root_args = ['env'];
+#    $autopkgtest_root_args = 'env';
+#    # prefix with nothing:
+#    $autopkgtest_root_args = '';
+#    $autopkgtest_root_args = [''];
+#    $autopkgtest_root_args = ['', 'whatever'];
+#$autopkgtest_root_args = [];
+
+# LINTIAN
+# Type: STRING
+# Path to lintian binary
+#$lintian = 'lintian';
+
+# LINTIAN_OPTIONS
+# Type: ARRAY:STRING
+# Options to pass to lintian.  Each option is a separate arrayref element. 
+# For example, ['-i', '-v'] to add -i and -v.
+# See also related command line options in sbuild(1):
+#   --lintian-opt
+#   --lintian-opts
+#$lintian_opts = [];
+
+# PIUPARTS
+# Type: STRING
+# Path to piuparts binary
+# See also related command line options in sbuild(1):
+#   --piuparts-opt
+#   --piuparts-opts
+#$piuparts = 'piuparts';
+
+# PIUPARTS_OPTIONS
+# Type: ARRAY:STRING
+# Options to pass to piuparts. Each option is a separate arrayref element.
+#  For example, ['-b', '<chroot_tarball>'] to add -b and <chroot_tarball>.
+#$piuparts_opts = [];
+
+# PIUPARTS_ROOT_ARGS
+# Type: ARRAY:STRING
+# Preceding arguments to launch piuparts as root. With the default value
+# (the empty array) "sudo --" will be used as a prefix. If the first
+# element in the array is the empty string, no prefixing will be done. If
+# the value is a scalar, it will be prefixed by that string. If the scalar
+# is an empty string, no prefixing will be done.
+# See also related command line options in sbuild(1):
+#   --piuparts-root-arg
+#   --piuparts-root-args
+#    # prefix with "sudo --":
+#    $piuparts_root_args = [];
+#    $piuparts_root_args = ['sudo', '--'];
+#    # prefix with "env":
+#    $piuparts_root_args = ['env'];
+#    $piuparts_root_args = 'env';
+#    # prefix with nothing:
+#    $piuparts_root_args = '';
+#    $piuparts_root_args = [''];
+#    $piuparts_root_args = ['', 'whatever'];
+#$piuparts_root_args = [];
+
+# RUN_AUTOPKGTEST
+# Type: BOOL
+# Run autopkgtest
+# See also related command line options in sbuild(1):
+#   --run-autopkgtest
+#   --no-run-autopkgtest
+#$run_autopkgtest = 0;
+
+# RUN_LINTIAN
+# Type: BOOL
+# Run lintian?
+# See also related command line options in sbuild(1):
+#   --run-lintian
+#   --no-run-lintian
+#$run_lintian = 0;
+
+# RUN_PIUPARTS
+# Type: BOOL
+# Run piuparts
+# See also related command line options in sbuild(1):
+#   --run-piuparts
+#   --no-run-piuparts
+#$run_piuparts = 0;
+
+
+
+##
+## Chroot options
+##
+
+# APT_ALLOW_UNAUTHENTICATED
+# Type: BOOL
+# Force APT to accept unauthenticated packages.  By default,
+# unauthenticated packages are not allowed.  This is to keep the build
+# environment secure, using apt-secure(8).  By setting this to 1,
+# APT::Get::AllowUnauthenticated is set to "true" when running apt-get.
+# This is disabled by default: only enable it if you know what you are
+# doing.
+#$apt_allow_unauthenticated = 0;
+
+# APT_CLEAN
+# Type: BOOL
+# APT clean.  1 to enable running "apt-get clean" at the start of each
+# build, or 0 to disable.
+# See also related command line options in sbuild(1):
+#   --apt-clean
+#   --no-apt-clean
+#$apt_clean = 0;
+
+# APT_DISTUPGRADE
+# Type: BOOL
+# APT distupgrade.  1 to enable running "apt-get dist-upgrade" at the start
+# of each build, or 0 to disable.
+# See also related command line options in sbuild(1):
+#   --apt-distupgrade
+#   --no-apt-distupgrade
+#$apt_distupgrade = 1;
+
+# APT_UPDATE
+# Type: BOOL
+# APT update.  1 to enable running "apt-get update" at the start of each
+# build, or 0 to disable. This option has no effect on updating the
+# internal sbuild apt repository, the repository for extra packages (see
+# EXTRA_PACKAGES) and the repositories given via EXTRA_REPOSITORIES. These
+# are always updated. Thus, this option only influences updates of the
+# default repositories of the chroot.
+# See also related command line options in sbuild(1):
+#   --apt-update
+#   --no-apt-update
+#$apt_update = 1;
+
+# APT_UPDATE_ARCHIVE_ONLY
+# Type: BOOL
+# Update local temporary APT archive directly (1, the default) or set to 0
+# to disable and do a full apt update (not recommended in case the mirror
+# content has changed since the build started).
+#$apt_update_archive_only = 1;
+
+# APT_UPGRADE
+# Type: BOOL
+# APT upgrade. 1 to enable running "apt-get upgrade" at the start of each
+# build, or 0 to disable.
+# See also related command line options in sbuild(1):
+#   --apt-upgrade
+#   --no-apt-upgrade
+#$apt_upgrade = 0;
+
+# CHROOT
+# Type: STRING
+# Default chroot (defaults to distribution[-arch][-sbuild])
+# See also related command line options in sbuild(1):
+#   -c
+#   --chroot
+#$chroot = undef;
+
+# CHROOT_MODE
+# Type: STRING
+# Mechanism to use for chroot virtualisation.  Possible value are "schroot"
+# (default), "sudo" and "autopkgtest".
+# See also related command line options in sbuild(1):
+#   --chroot-mode
+#$chroot_mode = 'schroot';
+
+# CHROOT_SETUP_SCRIPT
+# Type: STRING
+# Script to run to perform custom setup tasks in the chroot.
+# See also related command line options in sbuild(1):
+#   --setup-hook
+#$chroot_setup_script = undef;
+
+# CHROOT_SPLIT
+# Type: BOOL
+# Run in split mode?  In split mode, apt-get and dpkg are run on the host
+# system, rather than inside the chroot.
+#$chroot_split = 0;
+
+# EXTERNAL_COMMANDS
+# Type: HASH:ARRAY:STRING
+# External commands to run at various stages of a build. Commands are held
+# in a hash of arrays of arrays data structure.
+# See also related command line options in sbuild(1):
+#   --setup-hook
+#   --pre-build-commands
+#   --chroot-setup-commands
+#   --chroot-update-failed-commands
+#   --build-deps-failed-commands
+#   --build-failed-commands
+#   --anything-failed-commands
+#   --starting-build-commands
+#   --finished-build-commands
+#   --chroot-cleanup-commands
+#   --post-build-commands
+#    $external_commands = {
+#        "pre-build-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "chroot-setup-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "chroot-update-failed-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "build-deps-failed-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "build-failed-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "starting-build-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "finished-build-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "chroot-cleanup-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#        "post-build-commands" => [
+#            ['foo', 'arg1', 'arg2'],
+#            ['bar', 'arg1', 'arg2', 'arg3'],
+#        ],
+#    };
+#$external_commands = {
+#                      'build-deps-failed-commands' => [],
+#                      'build-failed-commands' => [],
+#                      'chroot-cleanup-commands' => [],
+#                      'chroot-setup-commands' => [],
+#                      'chroot-update-failed-commands' => [],
+#                      'finished-build-commands' => [],
+#                      'post-build-commands' => [],
+#                      'pre-build-commands' => [],
+#                      'starting-build-commands' => []
+#                    };
+
+# LOG_EXTERNAL_COMMAND_ERROR
+# Type: BOOL
+# Log standard error of commands run by sbuild?
+# See also related command line options in sbuild(1):
+#   --log-external-command-error
+#$log_external_command_error = 1;
+
+# LOG_EXTERNAL_COMMAND_OUTPUT
+# Type: BOOL
+# Log standard output of commands run by sbuild?
+# See also related command line options in sbuild(1):
+#   --log-external-command-output
+#$log_external_command_output = 1;
+
+# PACKAGE_CHECKLIST
+# Type: STRING
+# Where to store list currently installed packages inside chroot
+#$package_checklist = '/var/lib/sbuild/package-checklist';
+
+# PURGE_BUILD_DEPS
+# Type: STRING
+# When to purge the build dependencies after a build; possible values are
+# "never", "successful", and "always"
+# See also related command line options in sbuild(1):
+#   -p
+#   --purge
+#   --purge-deps
+#$purge_build_deps = 'always';
+
+# PURGE_BUILD_DIRECTORY
+# Type: STRING
+# When to purge the build directory after a build; possible values are
+# "never", "successful", and "always"
+# See also related command line options in sbuild(1):
+#   -p
+#   --purge
+#   --purge-build
+#$purge_build_directory = 'always';
+
+# PURGE_EXTRA_PACKAGES
+# Type: BOOL
+# Try to remove all additional packages that are not strictly required for
+# the build right after build dependencies were installed. This currently
+# works best with the aspcud resolver. The apt resolver will not make as
+# much effort to remove all unneeded packages and will keep all providers
+# of a virtual package and all packages from any dependency alternative
+# that happen to be installed. The aptitude and xapt resolver do not
+# implement this feature yet. The removed packages are not yet added again
+# after the build finished. This can have undesirable side effects like
+# lintian not working (because there is no apt to install its dependencies)
+# or bare chroots becoming totally unusable after apt was removed from
+# them. Thus, this option should only be used with throw-away chroots like
+# schroot provides them where the original state is automatically restored
+# after each build.
+# See also related command line options in sbuild(1):
+#   --purge-extra-packages
+#$purge_extra_packages = 0;
+
+# PURGE_SESSION
+# Type: STRING
+# Purge the schroot session following a build. This is useful in
+# conjunction with the --purge and --purge-deps options when using snapshot
+# chroots, since by default the snapshot will be deleted. Possible values
+# are "always" (default), "never", and "successful"
+# See also related command line options in sbuild(1):
+#   -p
+#   --purge
+#   --purge-session
+#$purge_session = 'always';
+
+
+
+##
+## Core options
+##
+
+# ARCHIVE
+# Type: STRING
+# Archive being built. Only set in build log.  This might be useful for
+# derivative distributions.
+# See also related command line options in sbuild(1):
+#   --archive
+#$archive = undef;
+
+# BATCH_MODE
+# Type: BOOL
+# Enable batch mode?
+# See also related command line options in sbuild(1):
+#   -b
+#   --batch
+#$batch_mode = 0;
+
+# BUILD_DIR
+# Type: STRING
+# This option is deprecated.  Directory for chroot symlinks and sbuild
+# logs.  Defaults to the current directory if unspecified.  It is used as
+# the location of chroot symlinks (obsolete) and for current build log
+# symlinks and some build logs.  There is no default; if unset, it defaults
+# to the current working directory.  $HOME/build is another common
+# configuration.
+#    $build_dir = '/home/pete/build';
+#build_dir = ...;
+
+# BUILD_ENVIRONMENT
+# Type: HASH:STRING
+# Environment to set during the build. Defaults to setting PATH and
+# LD_LIBRARY_PATH only.  Note that these environment variables are not
+# subject to filtering with ENVIRONMENT_FILTER.  Example:
+#    $build_environment = {
+#            'CCACHE_DIR' => '/build/cache'
+#    };
+#$build_environment = {};
+
+# BUILD_USER
+# Type: STRING
+# Username used for running dpkg-buildpackage. By default the user running
+# sbuild is used within the chroot as well but that might allow a process
+# from within the chroot to break out of the chroot by attaching to a
+# process running outside the chroot with eg. gdb and then becoming root
+# inside the chroot through schroot and thus be able to leave the chroot.
+#build_user = ...;
+
+# CORE_DEPENDS
+# Type: ARRAY:STRING
+# Packages which must be installed in the chroot for all builds.
+#$core_depends = [
+#                 'build-essential:native',
+#                 'fakeroot:native'
+#               ];
+
+# ENVIRONMENT_FILTER
+# Type: ARRAY:STRING
+# Only environment variables matching one of the regular expressions in
+# this arrayref will be passed to dpkg-buildpackage and other programs run
+# by sbuild. The default value for this configuration setting is the list
+# of variable names as returned by
+# Dpkg::Build::Info::get_build_env_whitelist() which is also the list of
+# variable names that is whitelisted to be recorded in .buildinfo files.
+# Caution: the default value listed below was retrieved from the dpkg Perl
+# library version available when this man page was generated. It might be
+# different if your dpkg Perl library version differs.
+#    # Setting the old environment filter
+#    $environment_filter = ['^PATH$',
+#                      '^DEB(IAN|SIGN)?_[A-Z_]+$',
+#                      '^(C(PP|XX)?|LD|F)FLAGS(_APPEND)?$',
+#                      '^USER(NAME)?$',
+#                      '^LOGNAME$',
+#                      '^HOME$',
+#                      '^TERM$',
+#                      '^SHELL$'];
+#    # Appending FOOBAR to the default
+#    use Dpkg::Build::Info;
+#    $environment_filter = [Dpkg::Build::Info::get_build_env_whitelist(), 'FOOBAR'];
+#    # Removing FOOBAR from the default
+#    use Dpkg::Build::Info;
+#    $environment_filter = [map /^FOOBAR$/ ? () : $_, Dpkg::Build::Info::get_build_env_whitelist()];
+#$environment_filter = [
+#                       '^AR$',
+#                       '^ARFLAGS$',
+#                       '^AS$',
+#                       '^AWK$',
+#                       '^CC$',
+#                       '^CFLAGS$',
+#                       '^CPP$',
+#                       '^CPPFLAGS$',
+#                       '^CXX$',
+#                       '^CXXFLAGS$',
+#                       '^DEB_BUILD_OPTIONS$',
+#                       '^DEB_BUILD_PROFILES$',
+#                       '^DEB_VENDOR$',
+#                       '^DPKG_ADMINDIR$',
+#                       '^DPKG_DATADIR$',
+#                       '^DPKG_GENSYMBOLS_CHECK_LEVEL$',
+#                       '^DPKG_ORIGINS_DIR$',
+#                       '^DPKG_ROOT$',
+#                       '^FC$',
+#                       '^FFLAGS$',
+#                       '^GCJFLAGS$',
+#                       '^LANG$',
+#                       '^LC_ADDRESS$',
+#                       '^LC_ALL$',
+#                       '^LC_COLLATE$',
+#                       '^LC_CTYPE$',
+#                       '^LC_IDENTIFICATION$',
+#                       '^LC_MEASUREMENT$',
+#                       '^LC_MESSAGES$',
+#                       '^LC_MONETARY$',
+#                       '^LC_NAME$',
+#                       '^LC_NUMERIC$',
+#                       '^LC_PAPER$',
+#                       '^LC_TELEPHONE$',
+#                       '^LC_TIME$',
+#                       '^LD$',
+#                       '^LDFLAGS$',
+#                       '^LD_LIBRARY_PATH$',
+#                       '^LEX$',
+#                       '^M2C$',
+#                       '^MAKE$',
+#                       '^MAKEFLAGS$',
+#                       '^OBJC$',
+#                       '^OBJCFLAGS$',
+#                       '^OBJCXX$',
+#                       '^OBJCXXFLAGS$',
+#                       '^PC$',
+#                       '^RANLIB$',
+#                       '^SOURCE_DATE_EPOCH$',
+#                       '^YACC$'
+#                     ];
+
+# JOB_FILE
+# Type: STRING
+# Job status file (only used in batch mode)
+#$job_file = 'build-progress';
+
+# MANUAL_CONFLICTS
+# Type: ARRAY:STRING
+# Additional per-build dependencies.
+# See also related command line options in sbuild(1):
+#   --add-conflicts
+#$manual_conflicts = [];
+
+# MANUAL_CONFLICTS_ARCH
+# Type: ARRAY:STRING
+# Additional per-build dependencies.
+# See also related command line options in sbuild(1):
+#   --add-conflicts-arch
+#$manual_conflicts_arch = [];
+
+# MANUAL_CONFLICTS_INDEP
+# Type: ARRAY:STRING
+# Additional per-build dependencies.
+# See also related command line options in sbuild(1):
+#   --add-conflicts-indep
+#$manual_conflicts_indep = [];
+
+# MANUAL_DEPENDS
+# Type: ARRAY:STRING
+# Additional per-build dependencies.
+# See also related command line options in sbuild(1):
+#   --add-depends
+#$manual_depends = [];
+
+# MANUAL_DEPENDS_ARCH
+# Type: ARRAY:STRING
+# Additional per-build dependencies.
+# See also related command line options in sbuild(1):
+#   --add-depends-arch
+#$manual_depends_arch = [];
+
+# MANUAL_DEPENDS_INDEP
+# Type: ARRAY:STRING
+# Additional per-build dependencies.
+# See also related command line options in sbuild(1):
+#   --add-depends-indep
+#$manual_depends_indep = [];
+
+# SBUILD_MODE
+# Type: STRING
+# sbuild behaviour; possible values are "user" (exit status reports build
+# failures) and "buildd" (exit status does not report build failures) for
+# use in a buildd setup.  "buildd" also currently implies enabling of
+# "legacy features" such as chroot symlinks in the build directory and the
+# creation of current symlinks in the build directory.
+# See also related command line options in sbuild(1):
+#   --sbuild-mode
+#$sbuild_mode = 'user';
+
+
+
+##
+## Dependency resolution
+##
+
+# ASPCUD_CRITERIA
+# Type: STRING
+# Optimization criteria in extended MISC 2012 syntax passed to aspcud
+# through apt-cudf.  Optimization criteria are separated by commas, sorted
+# by decreasing order of priority and are prefixed with a polarity (+ to
+# maximize and - to minimize). The default criteria is
+# '-removed,-changed,-new' which first minimizes the number of removed
+# packages, then the number of changed packages (up or downgrades) and then
+# the number of new packages. A common task is to minimize the number of
+# packages from experimental.  To do this you can add a criteria like
+# '-count(solution,APT-Release:=/a=experimental/)' to the default criteria.
+#  This will then minimize the number of packages in the solution which
+# contain the string 'a=experimental' in the 'APT-Release' field of the
+# EDSP output created by apt. See the apt-cudf man page help on the
+# --criteria option for more information.
+# See also related command line options in sbuild(1):
+#   --aspcud-criteria
+#$aspcud_criteria = '-removed,-changed,-new';
+
+# BD_UNINSTALLABLE_EXPLAINER
+# Type: STRING
+# Method to use for explaining build dependency installation failures.
+# Possible value are "dose3" (default) and "apt". Set to the empty string
+# or undef to disable running any explainer.
+# See also related command line options in sbuild(1):
+#   --bd-uninstallable-explainer
+#$bd_uninstallable_explainer = 'dose3';
+
+# BUILD_DEP_RESOLVER
+# Type: STRING
+# Build dependency resolver.  The 'apt' resolver is currently the default,
+# and recommended for most users.  This resolver uses apt-get to resolve
+# dependencies.  Alternative resolvers are 'apt', 'aptitude' and 'aspcud'.
+# The 'apt' resolver uses a built-in resolver module while the 'aptitude'
+# resolver uses aptitude to resolve build dependencies.  The aptitude
+# resolver is similar to apt, but is useful in more complex situations,
+# such as where multiple distributions are required, for example when
+# building from experimental, where packages are needed from both unstable
+# and experimental, but defaulting to unstable. If the dependency situation
+# is too complex for either apt or aptitude to solve it, you can use the
+# 'aspcud' resolver which (in contrast to apt and aptitude) is a real
+# solver (in the math sense) and will thus always find a solution if a
+# solution exists.
+# See also related command line options in sbuild(1):
+#   --build-dep-resolver
+#$build_dep_resolver = 'apt';
+
+# EXTRA_PACKAGES
+# Type: ARRAY:STRING
+# Additional per-build packages available as build dependencies.
+# See also related command line options in sbuild(1):
+#   --extra-package
+#$extra_packages = [];
+
+# EXTRA_REPOSITORIES
+# Type: ARRAY:STRING
+# Additional per-build apt repositories.
+# See also related command line options in sbuild(1):
+#   --extra-repository
+#$extra_repositories = [];
+
+# EXTRA_REPOSITORY_KEYS
+# Type: ARRAY:STRING
+# Additional per-build apt repository keys.
+# See also related command line options in sbuild(1):
+#   --extra-repository-key
+#$extra_repository_keys = [];
+
+# RESOLVE_ALTERNATIVES
+# Type: BOOL
+# Should the dependency resolver use alternatives in Build-Depends,
+# Build-Depends-Arch and Build-Depends-Indep?  By default, using 'apt'
+# resolver, only the first alternative will be used; all other alternatives
+# will be removed.  When using the 'aptitude' resolver, it will default to
+# using all alternatives.  Note that this does not include
+# architecture-specific alternatives, which are reduced to the build
+# architecture prior to alternatives removal.  This should be left disabled
+# when building for unstable; it may be useful when building for
+# experimental or backports.  Set to undef to use the default, 1 to enable,
+# or 0 to disable.
+# See also related command line options in sbuild(1):
+#   --resolve-alternatives
+#   --no-resolve-alternatives
+#    $resolve_alternatives = 0;
+#$resolve_alternatives = undef;
+
+# SBUILD_BUILD_DEPENDS_PUBLIC_KEY
+# Type: STRING
+# GPG public key for temporary local apt archive.
+#$sbuild_build_depends_public_key =
+#'/var/lib/sbuild/apt-keys/sbuild-key.pub';
+
+# SBUILD_BUILD_DEPENDS_SECRET_KEY
+# Type: STRING
+# GPG secret key for temporary local apt archive.
+#$sbuild_build_depends_secret_key =
+#'/var/lib/sbuild/apt-keys/sbuild-key.sec';
+
+
+
+##
+## Logging options
+##
+
+# COMPRESS_BUILD_LOG_MAILS
+# Type: BOOL
+# Should build log mails be compressed?
+#$compress_build_log_mails = 1;
+
+# DEBUG
+# Type: NUMERIC
+# Debug logging level
+#$debug = 0;
+
+# LOG_COLOUR
+# Type: BOOL
+# Colour log messages such as critical failures, warnings and success
+#$log_colour = 1;
+
+# LOG_DIR
+# Type: STRING
+# Directory for storing build logs.  This defaults to '.' when SBUILD_MODE
+# is set to 'user' (the default), and to '$HOME/logs' when SBUILD_MODE is
+# set to 'buildd'.
+#$log_dir = undef;
+
+# LOG_FILTER
+# Type: BOOL
+# Filter variable strings from log messages such as the chroot name and
+# build directory
+#$log_filter = 1;
+
+# MAILFROM
+# Type: STRING
+# email address set in the From line of build logs
+# See also related command line options in sbuild(1):
+#   --mailfrom
+#$mailfrom = 'Source Builder <sbuild>';
+
+# MAILTO
+# Type: STRING
+# email address to mail build logs to
+# See also related command line options in sbuild(1):
+#   --mail-log-to
+#$mailto = '';
+
+# MAILTO_HASH
+# Type: HASH:STRING
+# Like MAILTO, but per-distribution.  This is a hashref mapping
+# distribution name to MAILTO. Note that for backward compatibility, this
+# is also settable using the hash %mailto (deprecated), rather than a hash
+# reference.
+#$mailto_hash = {};
+
+# MIME_BUILD_LOG_MAILS
+# Type: BOOL
+# Should build log mails be MIME encoded?
+#$mime_build_log_mails = 1;
+
+# NOLOG
+# Type: BOOL
+# Disable use of log file
+# See also related command line options in sbuild(1):
+#   -n
+#   --nolog
+#$nolog = 0;
+
+# VERBOSE
+# Type: NUMERIC
+# Verbose logging level
+$verbose = 1;
+
+
+
+##
+## Maintainer options
+##
+
+# KEY_ID
+# Type: STRING
+# Key ID to use in .changes for the current upload.  It overrides both
+# $maintainer_name and $uploader_name.
+# See also related command line options in sbuild(1):
+#   -k
+#   --keyid
+#$key_id = undef;
+
+# MAINTAINER_NAME
+# Type: STRING
+# Name to use as override in .changes files for the Maintainer field.  The
+# Maintainer field will not be overridden unless set here.
+# See also related command line options in sbuild(1):
+#   -m
+#   --maintainer
+#$maintainer_name = undef;
+
+# UPLOADER_NAME
+# Type: STRING
+# Name to use as override in .changes file for the Changed-By: field.
+# See also related command line options in sbuild(1):
+#   -e
+#   --uploader
+#$uploader_name = undef;
+
+
+
+##
+## Multiarch support (transitional)
+##
+
+# CROSSBUILD_CORE_DEPENDS
+# Type: HASH:ARRAY:STRING
+# Per-architecture dependencies required for cross-building. By default, if
+# a Debian architecture is not found as a key in this hash, the package
+# crossbuild-essential-${hostarch}:native will be installed.
+#    
+#    $crossbuild_core_depends = {
+#        nios2 => ['crossbuild-essential-nios2:native', 'special-package'],
+#        musl-linux-mips => ['crossbuild-essential-musl-linux-mips:native', 'super-special'],
+#    }
+#$crossbuild_core_depends = {};
+
+
+
+##
+## Programs
+##
+
+# APTITUDE
+# Type: STRING
+# Path to aptitude binary
+#$aptitude = 'aptitude';
+
+# APT_CACHE
+# Type: STRING
+# Path to apt-cache binary
+#$apt_cache = 'apt-cache';
+
+# APT_GET
+# Type: STRING
+# Path to apt-get binary
+#$apt_get = 'apt-get';
+
+# AUTOPKGTEST_VIRT_SERVER
+# Type: STRING
+# Path to autopkgtest-virt-* binary, selecting the virtualization server.
+# See also related command line options in sbuild(1):
+#   --autopkgtest-virt-server
+#$autopkgtest_virt_server = 'autopkgtest-virt-schroot';
+
+# AUTOPKGTEST_VIRT_SERVER_OPTIONS
+# Type: ARRAY:STRING
+# Additional command-line options for autopkgtest-virt-*
+# See also related command line options in sbuild(1):
+#   --autopkgtest-virt-server-opt
+#   --autopkgtest-virt-server-opts
+#$autopkgtest_virt_server_options = [];
+
+# DPKG_BUILDPACKAGE_USER_OPTIONS
+# Type: ARRAY:STRING
+# Additional command-line options for dpkg-buildpackage.
+# See also related command line options in sbuild(1):
+#   --debbuildopt
+#   --debbuildopts
+#   --jobs
+#$dpkg_buildpackage_user_options = [];
+
+# DPKG_SOURCE
+# Type: STRING
+# Path to dpkg-source binary
+#$dpkg_source = 'dpkg-source';
+
+# DPKG_SOURCE_OPTIONS
+# Type: ARRAY:STRING
+# Additional command-line options for dpkg-source
+# See also related command line options in sbuild(1):
+#   --dpkg-source-opt
+#   --dpkg-source-opts
+#$dpkg_source_opts = [];
+
+# FAKEROOT
+# Type: STRING
+# Path to fakeroot binary
+#$fakeroot = 'fakeroot';
+
+# MAILPROG
+# Type: STRING
+# Program to use to send mail
+#$mailprog = '/usr/sbin/sendmail';
+
+# MD5SUM
+# Type: STRING
+# Path to md5sum binary
+#$md5sum = 'md5sum';
+
+# SCHROOT_OPTIONS
+# Type: ARRAY:STRING
+# Additional command-line options for schroot
+#$schroot_options = [
+#                    '-q'
+#                  ];
+
+# SU
+# Type: STRING
+# Path to su binary
+#$su = 'su';
+
+# SUDO
+# Type: STRING
+# Path to sudo binary
+#$sudo = 'sudo';
+
+# XAPT
+# Type: STRING
+#$xapt = 'xapt';
+
+
+
+##
+## Statistics
+##
+
+# STATS_DIR
+# Type: STRING
+# Directory for writing build statistics to
+# See also related command line options in sbuild(1):
+#   --stats-dir
+#stats_dir = ...;
+
+1;
diff --git a/build-config/schroot/chroot.d/sid-armel-sbuild-9o0hzk b/build-config/schroot/chroot.d/sid-armel-sbuild-9o0hzk
new file mode 100644 (file)
index 0000000..d35cbf6
--- /dev/null
@@ -0,0 +1,7 @@
+[sid-armel-sbuild]
+description=Debian sid/armel autobuilder
+groups=root,sbuild
+root-groups=root,sbuild
+profile=sbuild
+type=file
+file=/chroot/rebuildd/chroots/sid-armel.tar.gz
diff --git a/build-config/schroot/chroot.d/sid-armhf-sbuild-ov4BWj b/build-config/schroot/chroot.d/sid-armhf-sbuild-ov4BWj
new file mode 100644 (file)
index 0000000..bca6a98
--- /dev/null
@@ -0,0 +1,7 @@
+[sid-armhf-sbuild]
+description=Debian sid/armhf autobuilder
+groups=root,sbuild
+root-groups=root,sbuild
+profile=sbuild
+type=file
+file=/chroot/rebuildd/chroots/sid-armhf.tar.gz