X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=id-deb-build%2Fid-pbuild.sh;h=51cb8e0164beba1ede7bb558bc41b2d0777f84fe;hb=723891166cf587acc94977b1215daa5d008842fa;hp=10b657868ef05572dd1d27e1bc449c363e2bcd11;hpb=8e02411beadd0f2f2cbf5a9f90b05dd6dd5693db;p=git-tools-moved-to-github.git diff --git a/id-deb-build/id-pbuild.sh b/id-deb-build/id-pbuild.sh index 10b6578..51cb8e0 100755 --- a/id-deb-build/id-pbuild.sh +++ b/id-deb-build/id-pbuild.sh @@ -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 ;; @@ -58,27 +63,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 @@ -96,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 @@ -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: