Build packages concurrently
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild-all.sh
index 534f435..3af753a 100755 (executable)
@@ -1,11 +1,15 @@
 #!/bin/sh
 update=true
-if test "$1" == "-f"; then
-       shift
-       update=false
-fi
 PKG="$1"
 if test -z "$PKG"; then
+       if test -d deb-src; then
+               cd deb-src      
+               for d in *.dsc; do
+                       PKG=$d
+               done
+       fi
+fi
+if test -z "$PKG"; then
        echo "Specify .dsc file"
        exit 1
 fi
@@ -13,11 +17,61 @@ if test ! -e "$PKG"; then
        echo "${PKG} does not exist"
        exit 1
 fi
-for dist in etch lenny; do
-       for arch in i386 amd64; do
-               if $update; then
-                       DIST=$dist ARCH=$arch pbuilder update --override-config
-               fi
-               DIST=$dist ARCH=$arch pbuilder --build $PKG
+PRODUCT=`echo *.dsc|sed 's/_.*//g'`
+if test -z "$DEBIAN_DIST"; then
+       DEBIAN_DIST="squeeze etch lenny"
+fi
+if test -z "$UBUNTU_DIST"; then
+       UBUNTU_DIST="karmic jaunty intrepid hardy"
+fi
+
+if test "$2" = "upload"; then
+       for dist in ${UBUNTU_DIST}; do
+               scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}
+       done
+       for dist in ${DEBIAN_DIST}; do
+               scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/debian/${dist}
        done
+       echo "Remember to update APT on ftp.indexdata.dk"
+       echo "cd git-tools/update-archive"
+       echo "sudo su"
+       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
+        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"