X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=id-deb-build%2Fid-pbuild-all.sh;h=c88ec51cf79e3a4e13ed13b37b6d7215a713c6c8;hb=a976381e4c2ba6c2837fa01d6775b5dd3f88fc1a;hp=ce267ba9448a6392b0f4f31418708da5bffd59d8;hpb=a3f555e62b1d74fd20d7f8125acbf037357a1b65;p=git-tools-moved-to-github.git diff --git a/id-deb-build/id-pbuild-all.sh b/id-deb-build/id-pbuild-all.sh index ce267ba..c88ec51 100755 --- a/id-deb-build/id-pbuild-all.sh +++ b/id-deb-build/id-pbuild-all.sh @@ -1,58 +1,140 @@ #!/bin/sh +# This script builds Debian packages for one or more distributions +# in i386/amd64 architectures. It uses pbuilder. pbuilder requires root +# privilege and is invoked with sudo. +# +# In order to avoid having to type-in the password for it, you might +# use something like this in sudoers +# user ALL=NOPASSWD,SETENV: /usr/sbin/pbuilder +# where user is your username. + +usage() +{ + cat <&2 +fi + +if test -d deb-src; then + cd deb-src fi +for f in *.dsc; do + if test -f "$f"; then + PKG=$f + fi +done if test -z "$PKG"; then - echo "Specify .dsc file" - exit 1 + echo "Specify .dsc file" + exit 1 fi if test ! -e "$PKG"; then - echo "${PKG} does not exist" - exit 1 + echo "${PKG} does not exist" + exit 1 fi +PBUILDER=/usr/sbin/pbuilder 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 +ARCHS="i386 amd64" +echo "Dsc $PKG . Product $PRODUCT" +echo "Ubuntu distros: $UBUNTU_DIST" +echo "Debian distros: $DEBIAN_DIST" +if $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 +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 ${ARCHS}; do + rm -fr ${dist}-${arch} + ( + if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then + sudo DIST=$dist ARCH=$arch $PBUILDER create + fi + if $update; then + sudo DIST=$dist ARCH=$arch $PBUILDER update --override-config + fi + sudo 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 ${ARCHS}; do + if test -f ${dist}-${arch}/*.dsc; then + : + else + echo "No .dsc file for ${dist}-${arch}" + exit 1 + fi + done +done +date +echo "Done" +# Local Variables: +# mode:shell-script +# sh-indentation: 2 +# sh-basic-offset: 4 +# End: