+update_sources() {
+ local ver="$1"
+ local patch msg over file
+
+ echo "Updating $specfile to $ver"
+ patch=${ver#$basever.}
+ if [ -z "$patch" ]; then
+ echo >&2 "Will not set empty patchlevel"
+ exit 1
+ fi
+ sed -i -e "
+ s/^\(%define[ \t]\+patchlevel[ \t]\+\)[0-9]\+\$/\1$patch/
+ s/^\(%define[ \t]\+rel[ \t]\+\)[0-9.]\+\$/\11/
+ " $specfile
+
+ # fetch missing/mismatching files manually. faster than builder script does that
+ md5sum -c sources 2>/dev/null | awk -F: '$NF != " OK" {print $1}' | while read file; do
+ echo "$baseurl/$file"
+ done | wget -nv -i -
+
+ WGET_OPTS="-nv" ../builder -g $specfile
+
+ if [ "$build_package" != 0 ]; then
+ build_package
+ fi
+
+ # autocommit
+ msg=$(mktemp)
+ echo "updated to $ver" > $msg
+ echo "" >> $msg
+ over=$(git diff sources | awk '/^\+[0-9a-f]+/{over=$NF; gsub(/\./, "\\.",over); print over; exit}')
+ sed -ne "/$over/,\$p" README.patches | sed -re 's,^[ 0-9]+ ,,' >> $msg
+ git commit -F $msg $specfile sources
+ rm -f $msg
+}
+
+build_package() {
+ local logfile=$outdir/$pkg.log
+
+ install -d $rpmdir
+
+ # setup custom logfile via $HOME_ETC hack
+ # TODO: just add --logfile support for builder
+ cat > $outdir/.builderrc <<-EOF
+ if [ -n "$HOME_ETC" ]; then
+ . "$HOME_ETC/.builderrc"
+ elif [ -r ~/.builderrc ]; then
+ . ~/.builderrc
+ fi
+ LOGFILE='$logfile'
+ EOF
+
+ > $logfile
+ HOME_ETC=$outdir \
+ ../builder -bb --clean \
+ --define "_unpackaged_files_terminate_build 1" \
+ --define '_enable_debug_packages 0' \
+ --define "_builddir $outdir" \
+ --define "_rpmdir $rpmdir" \
+ $specfile || {
+ echo "Package build failed" >&2
+ tail -n 1000 $logfile >&2
+ exit 1
+ }
+ echo >&2 "Package build OK"
+
+ if [ "$publish_packages" ] && [ "$(ls $rpmdir/*.rpm 2>/dev/null)" ]; then
+ publish_packages
+ fi
+}
+
+publish_packages() {
+ local rpmdest=~/public_html/$dist/$arch/
+
+ install -d $rpmdest
+ umask 022
+ chmod 644 $rpmdir/*.rpm
+ mv -v $rpmdir/*.rpm $rpmdest/
+ poldek --cachedir=$HOME/tmp --mkidx -s $rpmdest/ --mt=pndir
+}
+