id-pbuild.sh now builds for CentOS too
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild.sh
index 10b6578..0230627 100755 (executable)
@@ -10,6 +10,7 @@ Usage: id-pbuild.sh [OPTIONS]
 Options:
        [--debian=distros]
        [--ubuntu=distros]
+       [--centos=distros]
        [--upload]
        [--concurrency=N]
        [--product=X]
@@ -38,6 +39,9 @@ while test $# -gt 0; do
        --ubuntu=*)
            UBUNTU_DIST=$optarg
            ;;
+       --centos=*)
+           CENTOS_DIST=$optarg
+           ;;
         --upload)
            upload=true
            ;;
@@ -58,27 +62,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,12 +121,14 @@ fi
 echo "Dsc $PKG . Product $PRODUCT"
 echo "Ubuntu distros: $UBUNTU_DIST"
 echo "Debian distros: $DEBIAN_DIST"
+echo "Centos distros: $CENTOS_DIST"
 if test "${SUDO_USER}"; then
     echo "Running as sudo."
-    echo "You can avoid it by adding the following in /etc/sudoers"
-    echo "${SUDO_USER} ALL=NOPASSWD: /home/${SUDO_USER}/proj/git-tools/id-deb-build/id-pbuild-root.sh"
+    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
@@ -119,6 +137,16 @@ if test ! -f ${HOME_EXPORT}/.pbuilderrc; then
 fi
 
 if $upload; then
+    for dist in ${CENTOS_DIST}; do
+       arch=amd64
+       prodver=${PRODUCT}-${VERSION}
+       if ssh $dist "cd rpmbuild/SOURCES/${prodver} && ../../../proj/git-tools/id-rpm-build/upload-rpms.sh ${PRODUCT}.spec"; then
+           :
+           else
+           echo "Upload failed for $dist"
+           exit 1
+       fi
+    done
     for dist in ${UBUNTU_DIST}; do
        scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}
     done
@@ -127,21 +155,62 @@ if $upload; then
     done
     echo ""
     echo "===================================================="
-    echo "Remember to update APT on ftp.indexdata.dk !!!"
+    echo "Remember to update APT/YUM on ftp.indexdata.dk !!!"
     echo ""
     echo "ssh ftp.indexdata.dk"
     echo "cd ~/proj/git-tools/update-archive"
     echo "sudo su"
     echo "./update-archive.sh"
+    if test ${CENTOS_DIST}; then
+       echo "./update-yum-archive.sh"
+    fi
     echo "===================================================="
     exit 0
 fi
+
 rm -f *.log
 
+# copy tars to centos build hosts
+for dist in ${CENTOS_DIST}; do
+    arch=amd64
+    prodver=${PRODUCT}-${VERSION}
+    tarname=${prodver}.tar.gz
+    if test ! -f ../${tarname}; then
+       echo "$tarname: missing"
+       exit 1
+    fi
+
+    if ssh $dist "test -f .rpmmacros && test -d rpmbuild/SOURCES && test -d rpmbuild/RPMS && test -d rpmbuild/SRPMS && test -x proj/git-tools/id-rpm-build/upload-rpms.sh"; then
+       :
+    else
+       echo "Host $dist does not seem to be prepared with git-tools and rpmbuild directories"
+       exit 1
+    fi
+
+    if scp ../${tarname} $dist:rpmbuild/SOURCES/ ; then
+       :
+    else
+       echo "Could not copy $tarname to $dist"
+       exit 1
+    fi
+    if ssh $dist "cd rpmbuild/SOURCES && rm -fr $prodver && tar zxf $tarname && cd ${prodver} && rpmbuild -ba ${PRODUCT}.spec" >${dist}-${arch}.log 2>&1; then
+       :
+    else
+       echo "FAILED: See ${dist}-${arch}.log"
+       exit 1
+    fi
+done
+
 # 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 --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
 
@@ -159,7 +228,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
@@ -171,11 +240,12 @@ 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
 done
+
 date
 echo "Done"
 # Local Variables: