Only sign packages that are newer than signage
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild.sh
index b1d586a..51cb8e0 100755 (executable)
@@ -10,6 +10,7 @@ Usage: id-pbuild.sh [OPTIONS]
 Options:
        [--debian=distros]
        [--ubuntu=distros]
+       [--centos=distros]
        [--upload]
        [--concurrency=N]
        [--product=X]
@@ -21,6 +22,7 @@ EOF
 upload=false
 do_help=false
 concurrency=4
+ARCHS="i386 amd64"
 
 if test -f IDMETA; then
     . ./IDMETA
@@ -38,6 +40,9 @@ while test $# -gt 0; do
        --ubuntu=*)
            UBUNTU_DIST=$optarg
            ;;
+       --centos=*)
+           CENTOS_DIST=$optarg
+           ;;
         --upload)
            upload=true
            ;;
@@ -73,7 +78,7 @@ if test ! -x $MKDEBSRC; then
 fi
 
 if $upload; then
-    cd deb-src
+    :
 else
     if test "${SUDO_USER}"; then
        if test ! -d deb-src; then
@@ -81,13 +86,16 @@ else
        fi
     else
        if test -d deb-src; then
-           echo "Remove deb-src"
-           exit 1
+           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
-    cd deb-src
 fi
+cd deb-src
 
 for f in *.dsc; do
     if test -f "$f"; then
@@ -105,7 +113,6 @@ fi
 if test -z "$PRODUCT"; then
     PRODUCT=`echo *.dsc|sed 's/_.*//g'`
 fi
-ARCHS="i386 amd64"
 if grep "Architecture: all" $PKG >/dev/null; then
     USE_ARCHS=i386
 else
@@ -114,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 "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
@@ -128,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
@@ -136,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
 
@@ -168,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
@@ -180,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: