From 28c04898547f67f610191be985e6f0229ca4e50c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Tue, 23 Apr 2013 12:26:17 +0200 Subject: [PATCH] Support local repository for external dependencies, default for jenkins on emain.zcu.cz. --- mock.sh | 143 ++++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 103 insertions(+), 40 deletions(-) diff --git a/mock.sh b/mock.sh index 717eced..40a326c 100755 --- a/mock.sh +++ b/mock.sh @@ -12,22 +12,26 @@ # pbuilder --create --distribution squeeze # # cat > /root/.pbuilderrc </dev/null || : -if test "$CONF" != "pbuilder"; then - mkdir mock 2>/dev/null || : - ln -s /etc/mock/logging.ini mock/ 2>/dev/null || : - if ! test -f mock/site-defaults.cfg; then - touch mock/site-defaults.cfg - fi - if test ! -s mock/$CONF.cfg -o $LAUNCHDIR/$CONF.cfg.template -nt mock/$CONF.cfg; then - sed -e "s,@PWD@,`pwd`," -e "s,@REPO@,results," $LAUNCHDIR/$CONF.cfg.template > mock/$CONF.cfg - fi +if test "$1" != "clean"; then + mkdir -p $REPORTS 2>/dev/null || : + mkdir externals 2>/dev/null || : + if test "$CONF" != "pbuilder"; then + mkdir mock 2>/dev/null || : + ln -s /etc/mock/logging.ini mock/ 2>/dev/null || : + if ! test -f mock/site-defaults.cfg; then + touch mock/site-defaults.cfg + fi + if test ! -s mock/$CONF.cfg -o $LAUNCHDIR/$CONF.cfg.template -nt mock/$CONF.cfg; then + sed -e "s,@PWD@,`pwd`," -e "s,@REPO@,results," $LAUNCHDIR/$CONF.cfg.template > mock/$CONF.cfg + fi - createrepo results + createrepo results + createrepo externals + fi fi mock_build() { @@ -90,6 +98,7 @@ mock_build() { rm -f $REPORTS/fail.$BASENAME echo $BASENAME >> $REPORTS/success.log echo "==== Done $BASENAME ====" + was_build=1 } pbuilder_build() { @@ -107,14 +116,15 @@ pbuilder_build() { (cd $SUBDIR; pdebuild --buildresult $BASEDIR/results/pbuilder --auto-debsign --debsign-k $KEY_ID -- --hookdir $LAUNCHDIR/pbuilder $PBUILDER_OPTS) mv $DIR/*.build results/reports CHANGES=`find results/pbuilder -type f -name ${BASENAME}_\*.changes | head -n 1` - # upload invalide the gpg sign - rm -f $DEBREPO/$DEBDISTRO/Release.gpg + # upload invalides the gpg sign + rm -f $DEBREPO_MAIN/$DEBDISTRO/Release.gpg # buggy mini-dinstall? - rm -f $DEBREPO/*.db + rm -f $DEBREPO_MAIN/*.db dput -U local $CHANGES rm -f $REPORTS/fail.$BASENAME echo $BASENAME >> $REPORTS/success.log echo "==== Done $BASENAME ====" + was_build=1 } package() { @@ -133,9 +143,38 @@ package() { fi } +add() { + local FILE=$1 + local BASENAME=`basename "$FILE" | sed -e 's/_[0-9]\+.*//'` + + echo "==== Adding external $BASENAME ====" + if test "$CONF" = "pbuilder"; then + # upload invalides the gpg sign + rm -f $DEBREPO_DEPS/$DEBDISTRO/Release.gpg + # buggy mini-dinstall? + rm -f $DEBREPO_DEPS/*.db + dput -U local_deps $FILE + else + cp -p $FILE externals/ + createrepo externals + fi + rm -f $REPORTS/fail.$BASENAME + echo $BASENAME >> $REPORTS/success.log + was_external=1 + echo "==== Done external $BASENAME ====" +} + release_sign() { if test "$CONF" = "pbuilder"; then - (cd $DEBREPO/$DEBDISTRO; rm -f Release.gpg; gpg -abs -o Release.gpg Release) + [ -z "$was_build" ] || (cd $DEBREPO_MAIN/$DEBDISTRO; rm -f Release.gpg; gpg -abs -o Release.gpg Release) + [ -z "$was_external" ] || (cd $DEBREPO_DEPS/$DEBDISTRO; rm -f Release.gpg; gpg -abs -o Release.gpg Release) + else + [ -z "$was_build" ] || files="$files `ls -1 results/*.rpm`" + [ -z "$was_external" ] || files="$files `ls -1 externals/*.rpm`" + if test -n "$was_build" -o "$was_external"; then + echo rpmsign --addsign $files + rpmsign --addsign $files + fi fi } @@ -144,12 +183,19 @@ while test -n "$1"; do case "$1" in clean) [ -d results ] && (rm -rfv results || sudo rm -rfv results) + [ -d externals ] && (rm -rfv externals || sudo rm -rfv externals) if test "$CONF" = "pbuilder"; then - rm -rfv $DEBREPO/stable $DEBREPO/unstable $DEBREPO/$DEBDISTRO $DEBREPO/*.db - mkdir -p $DEBREPO/$DEBDISTRO + rm -rfv $DEBREPO_MAIN/stable $DEBREPO_MAIN/unstable $DEBREPO_MAIN/$DEBDISTRO $DEBREPO_MAIN/*.db + mkdir -p $DEBREPO_MAIN/$DEBDISTRO + # fragile mini-dinstall + mkdir -p $DEBREPO_MAIN/mini-dinstall/incoming + touch $DEBREPO_MAIN/$DEBDISTRO/Packages + + rm -rfv $DEBREPO_DEPS/stable $DEBREPO_DEPS/unstable $DEBREPO_DEPS/$DEBDISTRO $DEBREPO_DEPS/*.db + mkdir -p $DEBREPO_DEPS/$DEBDISTRO # fragile mini-dinstall - mkdir -p $DEBREPO/mini-dinstall/incoming - touch $DEBREPO/$DEBDISTRO/Packages + mkdir -p $DEBREPO_DEPS/mini-dinstall/incoming + touch $DEBREPO_DEPS/$DEBDISTRO/Packages fi exit 0 ;; @@ -227,7 +273,7 @@ while test -n "$1"; do if test "$CONF" = "pbuilder"; then (cd $repo; ls -1 | grep '\.changes$' | sort) > old - (cd $DEBREPO/$DEBDISTRO; ls -1 | grep '\.changes$' | sort) > new + (cd $DEBREPO_MAIN/$DEBDISTRO; ls -1 | grep '\.changes$' | sort) > new diff -U0 old new | tail -n +3 | grep -v ^@ | grep '^+' | cut -c2- > changes echo "New packages:" cat changes @@ -235,18 +281,29 @@ while test -n "$1"; do echo "Commands:" cat << EOF -rm -rf $DEBREPO/$DEBDISTRO.allnew -mv $DEBREPO/$DEBDISTRO $DEBREPO/$DEBDISTRO.allnew -mkdir $DEBREPO -cp -rp $repo $DEBREPO/$DEBDISTRO -(cd $DEBREPO/$DEBDISTRO/; rm -rv Sources* Packages* Release*; touch Packages); rm -fv $DEBREPO/*.db +rm -rf $DEBREPO_MAIN/$DEBDISTRO.allnew +mv $DEBREPO_MAIN/$DEBDISTRO $DEBREPO_MAIN/$DEBDISTRO.allnew +mkdir $DEBREPO_MAIN +cp -rp $repo $DEBREPO_MAIN/$DEBDISTRO +(cd $DEBREPO_MAIN/$DEBDISTRO/; rm -rv Sources* Packages* Release*; touch Packages); rm -fv $DEBREPO_MAIN/*.db (cd results/pbuilder; dput -U local `cat changes | tr '\n' ' '`) -(cd $DEBREPO/$DEBDISTRO; gpg -abs -o Release.gpg Release) +(cd $DEBREPO_MAIN/$DEBDISTRO; gpg -abs -o Release.gpg Release) EOF fi ;; + add) + shift + FILES=$@ + if test -z "$FILES"; then + echo "Usage: $0 push { FILE.rpm... | FILE.changes... }" + exit 1 + fi + + for file in $FILES; do add $file; shift; done + ;; + *) if test "$CONF" = "pbuilder"; then pbuilder_build "$1" @@ -259,12 +316,18 @@ EOF shift done -if test "$CONF" = "pbuilder"; then - release_sign - sudo rm -rfv results/pbuilder - mkdir results/debian/ - cp -rp $DEBREPO/$DEBDISTRO results/debian/ -else - rpmsign --addsign results/*.rpm - createrepo results +release_sign +if test -n "$was_build"; then + if test "$CONF" = "pbuilder"; then + sudo rm -rfv results/pbuilder + mkdir results/debian/ + cp -rp $DEBREPO_MAIN/$DEBDISTRO results/debian/ + else + createrepo results + fi +fi +if test -n "$was_external"; then + if test "$CONF" != "pbuilder"; then + createrepo externals + fi fi -- 1.8.2.3