Build packages concurrently
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 9 Mar 2010 13:30:28 +0000 (14:30 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 9 Mar 2010 13:30:28 +0000 (14:30 +0100)
At this point running 4 in parallel. A higher value seems to require
too much disk I/O.

id-deb-build/id-pbuild-all.sh

index ce267ba..3af753a 100755 (executable)
@@ -38,21 +38,40 @@ if test "$2" = "upload"; then
        echo "./update-archive.sh"
        exit 0
 fi
+i=0
+concurrency=4
+echo "Building $PKG"
+date
 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
-       for arch in i386 amd64; do
-               if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then
-                       DIST=$dist ARCH=$arch pbuilder create
-               fi
-               if $update; then
-                       DIST=$dist ARCH=$arch pbuilder update --override-config
-               fi
-               DIST=$dist ARCH=$arch pbuilder --build $PKG
-               if test -f ${dist}-${arch}/*.dsc; then
-                       :
-               else
-                       echo "No .dsc file for ${dist}-${arch}"
-                       exit 1
-               fi
-       done
+    for arch in i386 amd64; do
+        rm -fr ${dist}-${arch}
+       (
+           if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then
+               DIST=$dist ARCH=$arch pbuilder create
+           fi
+           if $update; then
+               DIST=$dist ARCH=$arch pbuilder update --override-config
+           fi
+           DIST=$dist ARCH=$arch pbuilder --build $PKG
+           ) >${dist}-${arch}.log 2>&1 &
+       i=`expr $i + 1`
+       if test $i -eq $concurrency; then
+           i=0
+           wait
+       fi
+    done
 done
-
+wait
+for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
+    for arch in i386 amd64; do
+       
+       if test -f ${dist}-${arch}/*.dsc; then
+           :
+       else
+           echo "No .dsc file for ${dist}-${arch}"
+           exit 1
+       fi
+    done
+done
+date
+echo "Done"