X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=id-deb-build%2Fid-pbuild.sh;h=b1d586a966184cdc46c148f9df537321fe5d028a;hb=a175f99f6116f96faa57ad1cd4a5bcb433d3ab6d;hp=f03c1ef8cbdd1c015f1487872f8175c51bf9ad0a;hpb=208cf3a9ff90a2efa4af44df2bca864e3d4caa3d;p=git-tools-moved-to-github.git diff --git a/id-deb-build/id-pbuild.sh b/id-deb-build/id-pbuild.sh index f03c1ef..b1d586a 100755 --- a/id-deb-build/id-pbuild.sh +++ b/id-deb-build/id-pbuild.sh @@ -6,12 +6,13 @@ usage() { cat <&2 fi -if test "$REMOTE"; then - if test ! -d deb-src; then - echo "deb-src not in current directory" - exit 1 - fi +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=${ID_DEB_BUILD}/id-mk-deb-src.sh +if test ! -x $MKDEBSRC; then + echo "$MKDEBSRC not found" + exit 1 +fi + +if $upload; then cd deb-src - PRODUCT=`echo *.dsc|sed 's/_.*//g'` - cd .. - ssh $REMOTE "mkdir -p $PRODUCT/deb-src" - scp IDMETA $REMOTE:$PRODUCT - scp deb-src/*.gz deb-src/*.dsc $REMOTE:$PRODUCT/deb-src - if $upload; then - ssh $REMOTE "cd $PRODUCT; \$HOME/proj/git-tools/id-deb-build/id-pbuild.sh --upload" +else + if test "${SUDO_USER}"; then + if test ! -d deb-src; then + $MKDEBSRC + fi else - ssh $REMOTE "cd $PRODUCT; sudo \$HOME/proj/git-tools/id-deb-build/id-pbuild.sh" + if test -d deb-src; then + echo "Remove deb-src" + exit 1 + fi + $MKDEBSRC fi - exit 0 -fi -if test -d deb-src; then cd deb-src fi + for f in *.dsc; do if test -f "$f"; then PKG=$f @@ -91,8 +102,9 @@ if test ! -e "$PKG"; then echo "${PKG} does not exist" exit 1 fi -PBUILDER=/usr/sbin/pbuilder -PRODUCT=`echo *.dsc|sed 's/_.*//g'` +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 @@ -102,6 +114,19 @@ 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 "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 + 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} @@ -120,31 +145,32 @@ if $upload; then echo "====================================================" exit 0 fi -# remove existing package directories -for f in [a-z]*; do - if test -d $f; then - rm -fr $f - fi -done 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 --home=${HOME_EXPORT} --dist=$dist --arch=$arch + done +done + +# call our privileged wrapper to do the real work, with --dsc option i=0 date - for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do for arch in ${USE_ARCHS}; do - rm -fr ${dist}-${arch} - ( - if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then - DIST=$dist ARCH=$arch $PBUILDER create - fi - DIST=$dist ARCH=$arch $PBUILDER update --override-config - DIST=$dist ARCH=$arch $PBUILDER --build $PKG - ) >${dist}-${arch}.log 2>&1 & + 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 i=0 wait + if test -f ${dist}-${arch}/*.dsc; then + : + else + echo "No .dsc file for ${dist}-${arch}" + exit 1 + fi fi done done