October 19, 2011

Exhaustive testing of stable reverse dependencies

tl;dr - Developers, if you fix a problem with a stable package and do a version bump, please make sure to open a stabilization request for the bumped version. Many of problems described here have been fixed in the ~arch tree, just the fix was not pushed to stable.

Recently I started testing stable reverse dependencies in a more organized way. I used to go to sites like http://tinderbox.dev.gentoo.org/misc/dindex/, pick a few entries and random, see if they're stable, and emerge them after installing the unstable packages for testing.

That approach had several problems: some of the failures with reverse dependencies were not actually regressions, and many reverse dependencies listed on tinderbox are not marked as stable, which requires time for manual corrections.

Recently I wrote a tool for finding reverse dependencies. It only returns stable packages, and can even randomly choose a smaller number of packages in case of very large set of reverse dependencies (there are many packages depending on gtk+ for example).

My new workflow is to emerge the reverse dependencies first, and remove from list any packages that already have problems. Then I emerge the stable candidates, and re-emerge the reverse dependencies. Any problems that occurs in the last phase is most likely a regression.

So far I haven't really noticed that many regressions, but there are actually existing breakages in the stable tree, usually for less popular packages (that's why more organized testing is useful). Here are some examples of bugs I've encountered:

  • bug #351854 - media-libs/libquicktime-1.2.2 poor programming practices lead to failure
  • bug #380409 - dev-lang/ruby-enterprise- collides with dev-lang/ruby-1.8.7_p334-r2
  • bug #384499 - Please stabilize =dev-lang/tinycobol-0.65.9
  • bug #384501 - Please stabilize =dev-perl/Term-ReadLine-Gnu-1.200.0-r1
  • bug #384737 - media-tv/dvbstreamer-1.1-r1 fails to install (/usr/bin/install: will not overwrite just-created `.../types.h' with `types.h')
  • bug #384863 - sci-chemistry/raster3d-2.7c fails to compile (Error: Expression at (1) must be of INTEGER type, found REAL)
  • bug #384869 - app-admin/webalizer should not die on USE=nls and no LINGUAS in pkg_setup
  • bug #385265 - Please stabilize =net-misc/arpd-0.2-r1
  • bug #385403 - dev-php5/pecl-http-1.7.0-r1 sandbox violation
  • bug #385423 - games-simulation/crashtest-1.1 fails to build (fltk-config misuse?)
  • bug #387531 - Please stabilize =app-text/zathura- to avoid nasty blocker