id-pbuild.sh: allow deb-src to be already present
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild.sh
index 501eb6c..656b374 100755 (executable)
@@ -58,27 +58,39 @@ if test "$do_help" = "yes"; then
     usage 1 1>&2
 fi
 
-PBUILDROOT=`dirname $0`/id-pbuild-root.sh
+D0=`dirname $0`
+ID_DEB_BUILD=`cd $D0; pwd`
+PBUILDROOT=${ID_DEB_BUILD}/id-pbuild-root.sh
 if test ! -x $PBUILDROOT; then
     echo "$PBUILDROOT not found"
     exit 1
 fi
 
-MKDEBSRC=`dirname $0`/id-mk-deb-src.sh
+MKDEBSRC=${ID_DEB_BUILD}/id-mk-deb-src.sh
 if test ! -x $MKDEBSRC; then
     echo "$MKDEBSRC not found"
     exit 1
 fi
 
-if test -d deb-src; then
-    cd deb-src
+if $upload; then
+    :
 else
-    $MKDEBSRC
-fi
-
-if test -d deb-src; then
-    cd deb-src
+    if test "${SUDO_USER}"; then
+       if test ! -d deb-src; then
+           $MKDEBSRC
+       fi
+    else
+       if test -d deb-src; then
+           rm -f deb-src/*.gz
+           if test $? -ne 0; then
+               echo "deb-src could not be removed. Remove deb-src manually"
+               exit 1
+           fi
+       fi
+       $MKDEBSRC
+    fi
 fi
+cd deb-src
 
 for f in *.dsc; do
     if test -f "$f"; then
@@ -105,6 +117,20 @@ fi
 echo "Dsc $PKG . Product $PRODUCT"
 echo "Ubuntu distros: $UBUNTU_DIST"
 echo "Debian distros: $DEBIAN_DIST"
+if test "${SUDO_USER}"; then
+    echo "Running as sudo."
+    echo "Tip: You can avoid it by adding the following in /etc/sudoers"
+    echo "${SUDO_USER} ALL=NOPASSWD: ${ID_DEB_BUILD}/id-pbuild-root.sh"
+    HOME_EXPORT=/home/${SUDO_USER}
+else
+    sudo -k
+    HOME_EXPORT=$HOME
+fi
+if test ! -f ${HOME_EXPORT}/.pbuilderrc; then
+    echo "${HOME_EXPORT}/.pbuilderrc missing"
+    exit 1
+fi
+
 if $upload; then
     for dist in ${UBUNTU_DIST}; do
        scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}
@@ -128,7 +154,13 @@ rm -f *.log
 # call our privileged wrapper to clean the directories, no --dsc option
 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
     for arch in ${USE_ARCHS}; do
-       sudo -n $PBUILDROOT --dist=$dist --arch=$arch
+       sudo -n $PBUILDROOT --home=${HOME_EXPORT} --dist=$dist --arch=$arch
+       if test $? -ne 0; then
+           echo "FAILED"
+           echo "Run id-pbuild.sh using sudo or add yourself to /etc/sudoers:"
+           echo "${USER} ALL=NOPASSWD: ${ID_DEB_BUILD}/id-pbuild-root.sh"
+           exit 1
+       fi
     done
 done
 
@@ -137,7 +169,7 @@ i=0
 date
 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
     for arch in ${USE_ARCHS}; do
-       sudo -n $PBUILDROOT \
+       sudo -n $PBUILDROOT --home=${HOME_EXPORT} \
            --dist=$dist --arch=$arch --dsc=$PKG >${dist}-${arch}.log 2>&1 &
        i=`expr $i + 1`
        if test $i -eq $concurrency; then
@@ -146,7 +178,7 @@ for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
            if test -f ${dist}-${arch}/*.dsc; then
                :
            else
-               echo "No .dsc file for ${dist}-${arch}"
+               echo "FAILED: No .dsc file for ${dist}-${arch}"
                exit 1
            fi
        fi
@@ -158,7 +190,7 @@ for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
        if test -f ${dist}-${arch}/*.dsc; then
            :
        else
-           echo "No .dsc file for ${dist}-${arch}"
+           echo "FAILED: No .dsc file for ${dist}-${arch}"
            exit 1
        fi
     done