Build packages concurrently
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild-all.sh
1 #!/bin/sh
2 update=true
3 PKG="$1"
4 if test -z "$PKG"; then
5         if test -d deb-src; then
6                 cd deb-src      
7                 for d in *.dsc; do
8                         PKG=$d
9                 done
10         fi
11 fi
12 if test -z "$PKG"; then
13         echo "Specify .dsc file"
14         exit 1
15 fi
16 if test ! -e "$PKG"; then
17         echo "${PKG} does not exist"
18         exit 1
19 fi
20 PRODUCT=`echo *.dsc|sed 's/_.*//g'`
21 if test -z "$DEBIAN_DIST"; then
22         DEBIAN_DIST="squeeze etch lenny"
23 fi
24 if test -z "$UBUNTU_DIST"; then
25         UBUNTU_DIST="karmic jaunty intrepid hardy"
26 fi
27
28 if test "$2" = "upload"; then
29         for dist in ${UBUNTU_DIST}; do
30                 scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}
31         done
32         for dist in ${DEBIAN_DIST}; do
33                 scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/debian/${dist}
34         done
35         echo "Remember to update APT on ftp.indexdata.dk"
36         echo "cd git-tools/update-archive"
37         echo "sudo su"
38         echo "./update-archive.sh"
39         exit 0
40 fi
41 i=0
42 concurrency=4
43 echo "Building $PKG"
44 date
45 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
46     for arch in i386 amd64; do
47         rm -fr ${dist}-${arch}
48         (
49             if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then
50                 DIST=$dist ARCH=$arch pbuilder create
51             fi
52             if $update; then
53                 DIST=$dist ARCH=$arch pbuilder update --override-config
54             fi
55             DIST=$dist ARCH=$arch pbuilder --build $PKG
56             ) >${dist}-${arch}.log 2>&1 &
57         i=`expr $i + 1`
58         if test $i -eq $concurrency; then
59             i=0
60             wait
61         fi
62     done
63 done
64 wait
65 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
66     for arch in i386 amd64; do
67         
68         if test -f ${dist}-${arch}/*.dsc; then
69             :
70         else
71             echo "No .dsc file for ${dist}-${arch}"
72             exit 1
73         fi
74     done
75 done
76 date
77 echo "Done"