chiark / gitweb /
bin/mdw-build, bin/mdw-sbuild, bin/mdw-sbuild-server: Additional packages.
[profile] / bin / mdw-sbuild-server
index 048fcbef1fec1d7af40048df5dbc60379a002fbe..705592b8ffb7f26a8d691c32b12b622b33fa3611 100755 (executable)
@@ -137,6 +137,7 @@ case "$#,$1" in
       ## racing with another process, but that's why we're trying in a loop.
       if mkdir "$ver#$nn" >/dev/null 2>&1; then
        winp=t
+       cd "$ver#$nn"
        break
       fi
 
@@ -149,6 +150,9 @@ case "$#,$1" in
     ## Make sure we actually succeeded.
     case $winp in t) ;; *) fail "failed to create build directory" ;; esac
 
+    ## Make an empty directory for dependency packages.
+    mkdir -p pkgs/
+
     ## Done.
     echo "$buildroot/$dist#$nn"
     ;;
@@ -245,6 +249,18 @@ case "$#,$1" in
       nil) firstopt="$firstopt --debbuildopt=-A" ;;
     esac
 
+    ## Sort out the additional packages.  This is rather annoying, because
+    ## sbuild(1) does this in a really stupid way.
+    rm -rf pkgs.*
+    for a in $buildarchs; do
+      mkdir pkgs.$a
+      for f in $(dpkg-scanpackages -a$a pkgs/ |
+                   sed -n '/^Filename: /s///p')
+      do
+       ln $f pkgs.$a/
+      done
+    done
+
     ## Build a cheesy makefile to run these in parallel.
     cat >build.mk <<EOF
 ### -*-makefile-*-
@@ -257,6 +273,7 @@ sbuild-wrap = \\
        suite=\$\${full%%-*} target=\$\${full\#*-}; \\
        { echo started >build-status.\$\$full; \\
          sbuild \\
+               --extra-package=pkgs.\$\$target/ \\
                --dist=\$\$suite --build=\$\$host --host=\$\$target \\
                --chroot=\$\$suite-\$\$host --verbose \$1 \$(DSC); \\
          rc=\$\$?; case \$\$rc in \\