Thursday 28 May 2020

+1 maintenance report

#!/bin/sh

set -e

release=groovy
dry_run=false

while [ $# -gt 0 ]; do
case $1 in
--dry-run)
dry_run=:
;;
*)
if [ -z "$olddep" ]; then
olddep=$1
elif [ -z "$newdep" ]; then
newdep=$1
else
echo "Unknown argument: $1"
exit 1
fi
;;
esac
shift
done

sudo apt-get install wget ubuntu-dev-tools grep-dctrl devscripts equivs dput

echo "Transitioning $olddep -> $newdep"

oldre=$(echo "$olddep" | sed -e's/+/\\+/g')
newre=$(echo "$newdep" | sed -e's/+/\\+/g')

# don't include our own source package in the list of those needing rebuilds...
oursrc=$(grep-dctrl -n -sSource:Package -w -FPackage "$oldre" /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_"$release"_*Packages |head -n1)
for pkg in $(
grep-dctrl -n -sSource:Package \( -w -FDepends "$oldre" \
-o -w -FPre-Depends "$oldre" \) \
-a '!' -X -FSource:Package "$oursrc" \
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_"$release"_*Packages \
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_"$release"-proposed_*Packages \
| sed -e's/(.*)//' | sort -u)
do
# special-casing when needed
case $pkg in
libguestfs)
# broken, skip it for now.
#continue
;;
esac

if grep-dctrl -q -FSource:Package -X "$pkg" \
-a '!' -w -FDepends "$oldre" \
-a -w -FDepends "$newre" \
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_"$release"-proposed_*Packages
then
echo "Package $pkg already fixed in $release-proposed."
continue
fi

if proposed_ver=$(grep-dctrl -sVersion -n -FPackage -X "$pkg" /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_"$release"-proposed_*Sources)
then
echo "Package $pkg already present in $release-proposed (but not fixed)"
if ! grep-dctrl -q -FSource:Package -X "$pkg" \
-a -FVersion -X "$proposed_ver" \
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_$release-proposed_*Packages
then
echo " (Package $pkg not built in $release-proposed)"
continue
fi
fi

echo "Rebuilding $pkg"
if $dry_run; then
continue
fi
apt-get source $pkg
build_failed=false
(cd ${pkg}-*
dch -R "No-change rebuild against $newdep"
# dch -R "No-change rebuild for new GHC ABIs"
update-maintainer
dch -r -D "$release" ''
# sudo mk-build-deps -i -r -t 'apt-get --no-install-recommends -y'
debuild --no-lintian -S -nc
) || build_failed=:

if $build_failed; then
rm -rf ${pkg}[-_]*
continue
fi
dput ${pkg}*_source.changes
rm -r ${pkg}[-_]*
done
After roughly a week or so of the baton being passed between folks on +1
maintenance rotation, as of today the perl/re2/gdal/gsl/hdf5/qt/pdl/etc
transition has finally completed, comprising 416 packages (out of a total of
467 packages which were candidates) that have migrated as a group to the
release pocket.

My work on this over the last two days largely consisted of:

- finagling autopkgtests to get them to pass with the correct triggers
- rebuilding packages for several of the ancilliary transitions that had
only been partially completed
- rolling back r-cran-lwgeom in the archive because the new upstream
version has regressed on s390x for reasons that are not altogether clear
(git bisect points at a commit consisting of a wholesale import of a new
vendored version of liblwgeom from postgis, and there my investigation
stopped)
- with my archive admin hat, removing a handful of riscv64 binaries from
the release pocket which had regressed in buildability in -proposed as
part of the transition
- continuing to investigate the riscv64 build failure of atlas-ecmwf

I've also rebuilt libguestfs for a libyara transition, which should allow
that autohint from
https://people.canonical.com/~ubuntu-archive/proposed-migration/update_output.txt
to also complete.

That finishes all of the non-rust-related transitions that the autohinter
knows about; on the next run of proposed-migration,
https://people.canonical.com/~ubuntu-archive/proposed-migration/update_output.txt
should be a bit shorter and people may want to investigate why individual
packages there are stalled (for example, I just noticed libx86emu is an
soname transition, so triggered a no-change rebuild of hwinfo for that).

Also, I'm attaching the script I use locally for driving no-change rebuilds
for library transitions; perhaps others will find this useful, and perhaps
this can be cleaned up enough to be committed somewhere.

Things to hand off:

- ntirpc has a library transition, but its sole reverse-dependency,
nfs-ganesha, FTBFS and needs investigation.

- golang-pretty-dev is dropped in -proposed, so packages need updating to
golang-github-kr-pretty-dev.

- nautilus-python has dropped python2 bindings, its revdeps need sorting

- there are plenty of rust packages stuck in -proposed. Unfortunately the
rust packages we sync from Debian are not generally in a consistent state
allowing migration (to Debian testing or to the Ubuntu release). If
someone takes a look at these, they will probably want to recommend
removals of various leaf packages blocking transitions.

--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer https://www.debian.org/
slangasek@ubuntu.com vorlon@debian.org