[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: binNMUs for haskell



Dear everyone interested,

Am Mittwoch, den 01.01.2014, 16:56 +0100 schrieb Andreas Barth:
> 16:32 < aurel32> couldn't the dependency of haskell be handled in a better way
> 16:32 < aurel32> some packages are already at the 3rd binNMU in 3 days
> 16:32 < aurel32> some packages are binNMUed the day after they are uploaded
> 16:34 < aurel32> just found one with the second binNMU in 6 hours
> 16:37 < aba> who is scheduling those?
> 16:41 < aurel32> haskell-markdown on mips finished building at 09:40 this morning
> 16:41 < aurel32> waiting for a new binNMU
> 16:41 < aba> k
> 16:42 < aurel32> pandoc on i386, finished building yesterday at 12:55 after an upload, binNMU finished to build at 02:12 this morning
> 16:42 < aurel32> haskell-glade on i386, binNMued the 30, the 31 and the 01
> 16:44 < aurel32> it looks like some dep-wait would be welcomed

I’ll happily clear it up, but better ask on d-haskell instead of
expecting us to somehow noticing such discussions (and thanks for aba
for forwarding it)

The problem, very roughly, is that new upstream versions require rebuild
of every direct dependency. Such a rebuild can (but will not
necessarily) change the ABI of the rebuilt package, require rebuilds of
its dependencies. This is reflected by dependencies of virtual packages
that contain the ABI – so far nothing new, I believe.

So when a package (say haskell-tagsoup) is uploaded, a number of package
will become uninstallable. I have a (not very good) script¹ which will
 1. check the installability of all Haskell packages, and for those who 
    are not installable
 2. check whether they are in state “Installed“ in wanna-build’s DB, and
 3. generate "wb nmu" lines for these packages.

Debwaits should not be necessary: A package only has a binNMU scheduled
if it is uninstallable. So if a dependency of a package is
uninstallable, it will be in state BD-Uninstallable until that is built
first, and everything falls in place.

That said, there are two reasons I can think of that will cause lots of
binNMUs:
 * Race conditions. A rebuilt package might have been uploaded and 
   already in state "Installed" in wanna-build, but the new package
   might not have hit the archive, or the used mirror, yet.
   I try to let things settle a bit before running the script again, but
   the last few days have seen lots of uploads, so I was running it a 
   bit more often than usually.
 * Unfortunate upload sequences. This is what happened yesterday:
   - Jonas uploaded pandoc on Monday. Lots of things were able to build
     again, some binNMUs required.
   - Clint uploaded haskell-tagsoup on Tuesday. This happens to be a 
     dependency of pandoc, so pandoc, and some of its dependencies, 
     need to be rebuild.

The first point might be fixable by a better script. I think when I
wrote it, the Version column  in the database did not contain the
"...+b1" version after a binNMU was done, this seems to be fixed now. So
it should be possible to detect such a race condition in the script.

The second point is harder to avoid. I think it will be better as soon
as we have DPAs (or PPAs?), as I hope we can do all haskell uploads to a
DPA first, do all the binNMUing there first on only one architecture,
and do occasional migrations of all changed packages at once into
unstable. This will reduce the Haskell binNMU load on the other
architectures, and reduce uninstallability times in unstable.

Greetings,
Joachim
  


¹ http://anonscm.debian.org/darcs/pkg-haskell/tools/haskell-pkg-debcheck.hs


-- 
Joachim "nomeata" Breitner
Debian Developer
  nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: