Return to Video

meetings-archive.debian.net/.../Removing_obsolete_packages_for_fun_and_profit.webm

  • Not Synced
    Hi, everybody, I'm Eric Doland.
  • Not Synced
  • Not Synced
    I'm the automake maintainer,
    among other things.
  • Not Synced
    Today I'm going to talk about removing obsolete packages.
  • Not Synced
    This is meant to be a BOF.
  • Not Synced
    I only have sixteen slides,
  • Not Synced
    so I'm going to talk about my experiences
  • Not Synced
    in removing old versions of automake.
  • Not Synced
    Please feel free to interrupt with questions
  • Not Synced
    or criticisms or comments as we go.
  • Not Synced
    Hopefully with a bit of discussion about how to do this better in the future,
  • Not Synced
    or maybe not better, we'll see.
  • Not Synced
    So just to set the context a little bit,
  • Not Synced
    automake in Debian,
  • Not Synced
    I started maintaining it a really long time ago.
  • Not Synced
    It's making me feel old. 2002.
  • Not Synced
    This was around the time that automake 1.6 came out, I think.
  • Not Synced
    One of the problems automake has is
  • Not Synced
    that new releases of it usually have incompatibilities
  • Not Synced
    with backwards-compatible completely.
  • Not Synced
    There's various reasons why this is,
  • Not Synced
    it provides a very weird interface,
  • Not Synced
    because you're basically embedding things inside make files,
  • Not Synced
    and it's hard to control the API of a make file.
  • Not Synced
    Back in the day, there was, for a very long time,
  • Not Synced
    automake 1.4, and that just sort of worked,
  • Not Synced
    and then, automake 1.5 was introduced,
  • Not Synced
    Debian upgraded to automake 1.5, and lots of packages broke.
  • Not Synced
    So what ended up happening is that automake 1.5 got moved into its own package,
  • Not Synced
    and automake 1.4 was automake package.
  • Not Synced
    Nowadays, the older versions get moved into their own packages,
  • Not Synced
    and generally, the currently released version--the most up-to-date version--
  • Not Synced
    is the automake package.
  • Not Synced
    This has some downsides, because it's not necessarily fully backwards-compatible,
  • Not Synced
    but this is usually what people want.
  • Not Synced
    They want the latest version of automake, and they don't want to have to install
  • Not Synced
    a new package any time a new version of automake comes out.
  • Not Synced
    All the automake packages provide an alternative
  • Not Synced
    so that you can have your /usr/bin/automake
  • Not Synced
    be exactly which automake you want it to be.
  • Not Synced
    The priority of that alternative usually means that the latest version of automake
  • Not Synced
    is the one automatically selected, but of course, you can override that.
  • Not Synced
    There's a note here that, depending on automake directly, is a little risky,
  • Not Synced
    because fancy automake files, new versions of automake, might break you, potentially.
  • Not Synced
    Anyway, this is not the automake BOF, this is just a little context
  • Not Synced
    about why automake is what it is in Debian.
  • Not Synced
    So there's problems with this, because these backwards-compatible issues, as I said,
  • Not Synced
    were packaging all the versions of automake.
  • Not Synced
    Each new version was getting a new package, basically,
  • Not Synced
    and we've gone through a lot of automake packages over the years.
  • Not Synced
    I didn't count them up, but it looks like almost close to ten, I guess,
  • Not Synced
    which is a lot of packages you have to deal with.
  • Not Synced
    People will depend on these individual packages, for whatever reason,
  • Not Synced
    and then getting them out of the system, when they become old, is troublesome.
  • Not Synced
    As of the wheezy release, we had four different automakes in the wheezy release.
  • Not Synced
    So we had what the old, old--as you can see, 1.4, 1.9, 1.10, and 1.11--
  • Not Synced
    and they say that at one point we're going to have five different versions of automake,
  • Not Synced
    which is a lot of versions of automake.
  • Not Synced
    You can also see that the 1.4 version was released in 2002,
  • Not Synced
    when I started maintaining this stuff, so it's really old.
  • Not Synced
    No one should be using it, and no one should have been using it for the last ten years,
  • Not Synced
    but we sort of kept it around because people were like
  • Not Synced
    "oh, maybe there's old software that, you know, still depends on automake 1.4."
  • Not Synced
    Um, yeah.
  • Not Synced
    This is crazy.
    There are too many versions of automake.
  • Not Synced
    No one really wants them. So, I started out on this mission
  • Not Synced
    to bring us down to, hopefully, one or two versions of automake for the next release.
  • Not Synced
    I've been doing this over the last year, and I was makign these slides
  • Not Synced
    and I was thinking about, it sort of had these weird parallels
  • Not Synced
    with some things I'd read about, so now I present to you
  • Not Synced
    the five stages of removing an obsolete package from Debian.
  • Not Synced
    The first stage is denial.
  • Not Synced
    [laughter]
  • Not Synced
    "If I send mail to debian-devel asking everyone to very nicely
  • Not Synced
    move off of these old versions of automake, they'll just do it, right?
  • Not Synced
    I mean, doesn't everyone agree that that's what will happen?
  • Not Synced
    Yeah, so that's what I started out by doing.
  • Not Synced
    I'm going to talk a little bit about the tools and stuff that I used in this process,
  • Not Synced
    so this is sort of technical, and sort of procedural.
  • Not Synced
    If you've got questions about either side, just shoot up your hand.
  • Not Synced
    The first thing you do, or the first thing I did, is that I used grep-dctrl to figure out
  • Not Synced
    which packages were build dependent on automake.
  • Not Synced
    Automake basically has no actual binary dependencies, it's all build dependencies.
  • Not Synced
    There were one hundred and sixty-nine packages--source packages.
  • Not Synced
    That's a lot, but in Debian scale, it's not that much. It should be fine, right?
  • Not Synced
    Then, I used the dlist tool to turn that list of packages into a list of maintainers,
  • Not Synced
    with their packages. It's a very nice tool for just ??
  • Not Synced
    Then, I sent out an email debian-devel saying,
  • Not Synced
    "Here's my plan: I want to get rid of these old versions of automake.
  • Not Synced
    Here are the packages that are build-dependent on them.
  • Not Synced
    Please, do your part and fix this.
  • Not Synced
    I sent that mail out on May 27, 2013, so before last DebConf, which I was not at.
  • Not Synced
    Stage Two: Anger.
  • Not Synced
    People aren't fixing these things!
  • Not Synced
    I'm going to have to actually do something other than send an email. All right, fine.
  • Not Synced
    The next thing I did, to try to encourage people again to make this move,
  • Not Synced
    Lintian has this really nice facility. One of tests is actually--there's a list of obsolete packages.
  • Not Synced
    If you put your package in that list,
  • Not Synced
    lintian will complain any time anyone depends on that package,
  • Not Synced
    to try to force maintainers that are paying attention,
  • Not Synced
    that they should't actually be depending on these packages.
  • Not Synced
    That's good. It's cheap to do. Just sent the patch to lintian.
  • Not Synced
    I don't see any reason they wouldn't take it if it made sense.
  • Not Synced
    Now, I have to file bugs. People don't read debian-devel.
  • Not Synced
    It's sort of, it's fair I guess. So I basically just went through the list of packages I had,
  • Not Synced
    with a simple substitution script, so now it mailed a mail that was like
  • Not Synced
    "Please stop depending on automake blank." with a very boiler-plate thing saying
  • Not Synced
    "this is why we're getting rid of these old versions of automake"
  • Not Synced
    and I sent that off to BTS. Which is really easy, right? Because BTS is just email.
  • Not Synced
    So you can just do that. You can file a bunch of bugs that way.
  • Not Synced
    I should note that my initial email was a proposal for this mass bug filing, as well,
  • Not Synced
    which you're supposed to do as part of the procedure of sending out mass bug filings.
  • Not Synced
    When I did this, I had to file one hundred and seventeen bugs.
  • Not Synced
    There's fifty two packages that got fixed between me sending my initial email
  • Not Synced
    and the bugs. So that's good, I shouldn't be that angry, maybe.
  • Not Synced
    I did wait four months between these two events, though, so there's plenty of time.
  • Not Synced
    The other thing I used was using BTS user tags, to track all of these bugs very easily easily
  • Not Synced
    using this automake clean-up 2013 tag. I added the date because
  • Not Synced
    I knew this would not be the last automake clean-up that I would have to do,
  • Not Synced
    so I keep these separate.
  • Not Synced
    Always good to date your work if you think you might have to repeat it.
  • Not Synced
    Yeah, no, I did not finish in 2013. I started in 2013.
  • Not Synced
    It should've been automake clean-up 2015 or something, if I wanted the finish date.
  • Not Synced
    All right, so stage three. Bargaining.
  • Not Synced
    Okay, so, I'm past the anger stage, and now I'm like "okay, I've filed all these bugs,
  • Not Synced
    but not much is happening, so let me just fix this for you.
  • Not Synced
    I'll give you the exact fix on how to much to the newer version of automake.
  • Not Synced
    Here's the patch. Just apply it and upload your package.
  • Not Synced
    I've done all the work; I've done all the hard stuff."
  • Not Synced
    So, before I even did this, thirty four packages were fixed
  • Not Synced
    without supplying a patch. I began the patching in late October of 2013
  • Not Synced
    and--this is the hard part, this is the part that's tough to automate--in many cases,
  • Not Synced
    just switching to the new version of automake worked, and then it was easy,
  • Not Synced
    but that was maybe 50% of the cases.
  • Not Synced
    I didn't keep good statistics about how tough this was exactly,
  • Not Synced
    but in a lot of cases, I had to fiddle with the build system,
  • Not Synced
    or a lot of build rules would run automake itself,
  • Not Synced
    instead of using dh-autoreconf.
  • Not Synced
    There was a lot of actual fiddling with packages, trying to get them to build,
  • Not Synced
    and then just waiting to build these things, which can take a very long time,
  • Not Synced
    to test that this worked. So this is a lot of actual, tough work.
  • Not Synced
    What else? I used pbuilder to do the builds and then if I successfully built something,
  • Not Synced
    with the new version of automake,
    I would just mail off a patch
  • Not Synced
    to the existing bug, in BTS, and flip the patch tag, saying "here's the patch."
  • Not Synced
    So I thought, okay, at this point, you know, there's patches out there
  • Not Synced
    for almost all of these problems.
  • Not Synced
    There should be a wave of uploads and everything should be great.
  • Not Synced
    Stage Four: Depression.
  • Not Synced
    That's not what happened. I was pretty much on my own.
  • Not Synced
    The responsible maintainers have already fixed this problem.
  • Not Synced
    So we're into this, sort of, long tale of people who don't care,
  • Not Synced
    or people who are too busy to deal with their packages or do anything here.
  • Not Synced
    Now I have to upload NMUs. I started this in late January, I think
  • Not Synced
Title:
Video Language:
English
Team:
Debconf
Project:
2014_debconf14

English subtitles

Incomplete

Revisions