#! /bin/bash -e # Authors: Matthias Klose , Martin Pitt # License; Public Domain # # command for finding affected packages: # grep-dctrl -sPackage,Maintainer,Original-Maintainer -FVersion ubuntu archive.ubuntu.com_ubuntu_dists_feisty_*_source_Sources | grep-dctrl -sPackage -FMaintainer -v -n ubuntu export DEBEMAIL=martin.pitt@ubuntu.com DIST=feisty logentry="debian/control: Update maintainer fields according to debian-maintainer-field spec." # update the version number for a mere rebuild upload next_version_rebuild() { local ver=$1 case "$ver" in *ubuntu*) rel=${ver#*ubuntu} local base=$(echo $ver | sed 's/[0-9]*$//') echo "$base$(($rel+1))" ;; *build*) rel=${ver#*build} local base=$(echo $ver | sed 's/[0-9]*$//') echo "$base$(($rel+1))" ;; *) echo ${ver}build1 esac } # update the version number for a source-changes upload next_version() { local ver=$1 case "$ver" in *ubuntu*) rel=${ver#*ubuntu} local base=$(echo $ver | sed 's/[0-9]*$//') echo "$base$(($rel+1))" ;; *build*) echo ${ver%build*}ubuntu1 ;; *) echo ${ver}ubuntu1 esac } do_source_changes() { # main or universe? if grep -q 'Section:.*universe' ../show; then maint='Ubuntu MOTU Developers ' else maint='Ubuntu Core Developers ' fi sed -i "s/^\(Maintainer:.*$\)/Maintainer: $maint\nXSBC-Original-\1/" debian/control if [ -e debian/control.in ]; then sed -i "s/^\(Maintainer:.*$\)/Maintainer: $maint\nXSBC-Original-\1/" debian/control.in fi } # fetch source $1, update version number, changelog, and call do_source_changes update_pkg() { name=$1 tmpdir=$(mktemp -d ./pkg.XXXXXX) if ! apt-cache showsrc $p > $tmpdir/show; then rm -rf $tmpdir return fi version=$(awk '/^Version:/ {print $2}' $tmpdir/show | sort -n | tail -n 1) nextver=$(next_version_rebuild $version) case "$version" in *-*) olddir="$name-$(echo ${version#*:*} | sed 's/-[^-]*$//')" newdir=$olddir ;; *) olddir="$name-${version#*:*}" newdir="$name-${nextver#*:*}" esac echo "$name: $version -> $nextver ($olddir $newdir)" ( cd $tmpdir apt-get -q source $name [ $olddir = $newdir ] || mv $olddir $newdir cd $newdir chmod 644 debian/changelog debchange -p -D $DIST -v $nextver "$logentry" do_source_changes echo "building ..." dpkg-buildpackage -rfakeroot -S -us -uc > ../build.log 2>&1 ) if [ $? -ne 0 ]; then echo "ERROR building $name" mv $tmpdir failed-$name else mv $tmpdir/${name}_${nextver#*:*}* DONE/ mv $tmpdir/build.log DONE/${name}_${nextver#*:*}.buildlog rm -rf $tmpdir fi } # # entry point # base=$(basename $0) if [ $# -eq 0 ]; then echo >&2 "usage: $base [ ...]" exit 1 fi mkdir DONE for p in "$@"; do update_pkg $p done