Added a script id-clone
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild.sh
index 8985207..75916cd 100755 (executable)
@@ -13,7 +13,6 @@ Options:
        [--centos=distros]
        [--upload]
        [--concurrency=N]
-       [--product=X]
 EOF
     exit $1
 }
@@ -32,16 +31,15 @@ while test $# -gt 0; do
        -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
        *) optarg= ;;
     esac
-    
     case $1 in
        --debian=*)
-           DEBIAN_DIST=$optarg
+           DEBIAN_DIST_A=$optarg
            ;;
        --ubuntu=*)
-           UBUNTU_DIST=$optarg
+           UBUNTU_DIST_A=$optarg
            ;;
        --centos=*)
-           CENTOS_DIST=$optarg
+           CENTOS_DIST_A=$optarg
            ;;
         --upload)
            upload=true
@@ -49,16 +47,19 @@ while test $# -gt 0; do
         --concurrency=*)
            concurrency=$optarg
            ;;
-        --product=*)
-           PRODUCT=$optarg
-           ;;
        -*)
            do_help=yes
            ;;
-    esac 
+    esac
     shift
 done
 
+if test "$DEBIAN_DIST_A" -o "$UBUNTU_DIST_A" -o "$CENTOS_DIST_A"; then
+    DEBIAN_DIST=$DEBIAN_DIST_A
+    UBUNTU_DIST=$UBUNTU_DIST_A
+    CENTOS_DIST=$CENTOS_DIST_A
+fi
+
 if test "$do_help" = "yes"; then
     usage 1 1>&2
 fi
@@ -77,16 +78,38 @@ if test ! -x $PBUILDROOT; then
     exit 1
 fi
 
-MKDEBSRC=${ID_DEB_BUILD}/id-mk-deb-src.sh
-if test ! -x $MKDEBSRC; then
-    echo "$MKDEBSRC not found"
-    exit 1
+if test "$CENTOS_DIST"; then
+    RNAME=`awk '/Name:/ {print $2}' *.spec`
+    echo "RNAME=$RNAME"
+    if test "$NAME" -a "$NAME" != "$RNAME"; then
+       echo "NAME in IDMETA ($NAME) does not match RPM spec NAME ($RNAME)"
+       exit 1
+    fi
+    PRODUCT=$RNAME
 fi
-
-if $upload; then
-    :
-else
-    if $debian; then
+if $debian; then
+    DNAME=`awk '/Source:/ {print $2}' debian/control`
+    if test "$NAME" -a "$NAME" != "$DNAME"; then
+       echo "NAME in IDMETA ($NAME) does not match debian/control ($DNAME)"
+       exit 1
+    fi
+    PRODUCT=$DNAME
+    if ! $upload; then
+       MKDEBSRC=${ID_DEB_BUILD}/id-mk-deb-src.sh
+       if test ! -x $MKDEBSRC; then
+           echo "$MKDEBSRC not found"
+           exit 1
+       fi
+       DCH=debian/changelog
+       if ! git ls-files $DCH --error-unmatch >/dev/null 2>&1; then
+           rm -f $DCH
+           echo "${DNAME} (${VERSION}-1.indexdata) unstable; urgency=medium" >$DCH
+           echo '' >>$DCH
+           echo '  * Upstream.' >>$DCH
+           echo '' >>$DCH
+           echo " -- `git config --get user.name` <`git config --get user.email`>  `date -R`" >>$DCH
+           echo '' >>$DCH
+       fi
        if test "${SUDO_USER}"; then
            if test ! -d deb-src; then
                $MKDEBSRC
@@ -98,12 +121,13 @@ else
                    echo "deb-src could not be removed. Remove deb-src manually"
                    exit 1
                fi
+               rm -f deb-src/*.dsc
            fi
            $MKDEBSRC
        fi
-    else
-       mkdir -p deb-src
     fi
+else
+    mkdir -p deb-src
 fi
 
 cd deb-src
@@ -129,17 +153,7 @@ if $debian; then
     fi
 fi
 
-if test -z "$PRODUCT"; then
-    PRODUCT=$NAME
-fi
-if test -z "$PRODUCT"; then
-    if $debian; then
-       PRODUCT=`echo *.dsc|sed 's/_.*//g'`
-    else
-       PRODUCT=`cd ..;rpm -q --specfile *.spec --queryformat "%{NAME};" | cut -d ";" -f1`
-    fi
-fi
-echo "Dsc $PKG . Product $PRODUCT"
+echo "Product: $PRODUCT"
 echo "Ubuntu distros: $UBUNTU_DIST"
 echo "Debian distros: $DEBIAN_DIST"
 echo "Centos distros: $CENTOS_DIST"
@@ -156,6 +170,7 @@ if $debian; then
     fi
     if test ! -f ${HOME_EXPORT}/.pbuilderrc; then
        echo "${HOME_EXPORT}/.pbuilderrc missing"
+       echo "You may need to run: ln -s ~/proj/git-tools/id-deb-build/pbuilderrc ~/.pbuilderrc"
        exit 1
     fi
 fi
@@ -164,9 +179,7 @@ if $upload; then
     for dist in ${CENTOS_DIST}; do
        arch=amd64
        prodver=${PRODUCT}-${VERSION}
-       if scp ${ID_DEB_BUILD}/../id-rpm-build/upload-rpms.sh ${dist}:rpmbuild/SOURCES/${prodver}/; then
-           :
-       else
+       if ! scp ${ID_DEB_BUILD}/../id-rpm-build/upload-rpms.sh ${dist}:rpmbuild/SOURCES/${prodver}/; then
            echo "Copy of upload-rpms.sh to $dist failed"
            exit 1
        fi
@@ -178,23 +191,32 @@ if $upload; then
        fi
     done
     for dist in ${UBUNTU_DIST}; do
-       scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}
+       ssh ftp.indexdata.dk "mkdir -p /home/ftp/pub/${PRODUCT}/ubuntu/${dist}"
+       if ! scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/ubuntu/${dist}; then
+            echo "Upload failed for $dist"
+            exit 1
+        fi
     done
     for dist in ${DEBIAN_DIST}; do
-       scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/debian/${dist}
+       ssh ftp.indexdata.dk "mkdir -p /home/ftp/pub/${PRODUCT}/debian/${dist}"
+       if ! scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/debian/${dist}; then
+            echo "Upload failed for $dist"
+           exit 1
+        fi
     done
-    echo ""
-    echo "===================================================="
-    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"
+       if ! ssh ftp.indexdata.dk "sudo -n /home/indexdata/proj/git-tools/update-archive/update-yum-archive.sh"; then
+            echo "update-yum-archive.sh failed"
+            exit 1
+        fi
+    fi
+    if test "${UBUNTU_DIST}" -o "${DEBIAN_DIST}"; then
+       if ! ssh ftp.indexdata.dk "sudo -n /home/indexdata/proj/git-tools/update-archive/update-archive.sh --ubuntu=\"${UBUNTU_DIST}\" --debian=\"${DEBIAN_DIST}\""; then
+            echo "update-archive.sh failed"
+            exit 1
+        fi
     fi
-    echo "===================================================="
+    echo "Upload successful - we hope"
     exit 0
 fi