# pbuilder --create --distribution squeeze
#
# cat > /root/.pbuilderrc <<EOF
-# OTHERMIRROR='deb http://scientific.zcu.cz/repos/EMI3-external/debian/ stable/|deb file:///home/valtri/debian/ stable/'
-# BINDMOUNTS="/home/valtri/debian"
+# OTHERMIRROR='deb http://scientific.zcu.cz/repos/EMI3-external/debian/ stable/|deb file:///home/jenkins/debian-deps/ stable/|deb file:///home/jenkins/debian/ stable/'
+# BINDMOUNTS="/home/jenkins/debian-deps /home/jenkins/debian"
# EOF
-# cp /root/.pbuilderrc /home/valtri/.pbuilderrc
-# chown valtri:users /home/valtri/.pbuilderrc
+# cp /root/.pbuilderrc ~jenkins/.pbuilderrc
+# chown jenkins:jenkins ~jenkins/.pbuilderrc
#
-KEY_ID=${KEY_ID:-'7157882F'}
+KEY_ID=${KEY_ID:-'64FA8786'}
top_srcdir=${top_srcdir}
-DEBREPO=${DEBREPO:-~/debian}
+DEBREPO_MAIN=${DEBREPO_MAIN:-~/debian}
+DEBREPO_DEPS=${DEBREPO_DEPS:-~/debian-external}
DEBDISTRO=stable
#PBUILDER_OPTS='--debbuildopts "-j8"'
OS=`cat /etc/issue | head -n 1`
ARCH=`uname -i`
+was_build=
+was_external=
+
#CONF=sl-5-x86_64
#CONF=sl-5-i386
#CONF=sl-6-x86_64
REPORTS=results/reports
CMD="mock --configdir=mock -r $CONF --resultdir `pwd`/$REPORTS"
-mkdir -p $REPORTS 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
+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() {
rm -f $REPORTS/fail.$BASENAME
echo $BASENAME >> $REPORTS/success.log
echo "==== Done $BASENAME ===="
+ was_build=1
}
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() {
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
}
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
;;
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
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"
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