== Dev Week -- Fixing an Ubuntu bug using Bazaar -- james_w -- Fri Sep 4th, 2009 == UTC {{{ (01:59:51 PM) james_w: hi everyone (02:00:19 PM) james_w: I'm going to be talking about fixing an Ubuntu bug using bzr (02:00:29 PM) james_w: who's here to learn about that? (02:01:18 PM) james_w: excellent (02:01:36 PM) james_w: so, first things first, install the "bzr-builddeb" package if you don't have it installed yet (02:01:43 PM) james_w: we'll need it in a little while (02:02:27 PM) james_w: if you head on over to https://launchpad.net/ubuntu (02:02:42 PM) james_w: you'll see you are now able to click on the "Code" tab at the top (02:02:54 PM) james_w: which wasn't something you could do until recently (02:03:37 PM) james_w: what does that tab show you? (02:04:11 PM) james_w: it shows you bzr branches for every package in Ubuntu (02:04:29 PM) james_w: you can now get the source of (nearly) every package as a bzr branch (02:04:41 PM) james_w: this means you can more easily look at the history of the package (02:04:49 PM) james_w: more easily version control your changes (02:05:00 PM) james_w: and more easily merge changes from others (02:05:14 PM) james_w: I think this is wicked cool (02:06:16 PM) james_w: qense> QUESTION: How do the branches relate to the apt-get source command? (02:06:21 PM) james_w: good question (02:07:00 PM) james_w: branching lp:ubuntu/ will get you the same as "apt get source " (if you have karmic deb-src lines in your sources.list) (02:07:09 PM) james_w: it just gets it as a bzr branch rather than a tarball (02:07:24 PM) james_w: we keep the branches up to date with changes in the archive (02:07:39 PM) james_w: so that when there is a new upload it appears there very quickly (02:08:49 PM) james_w: e.g. Chuck uploaded net-snmp 43 minutes ago, and the change was available in bzr 5 minutes later (02:08:55 PM) james_w: QUESTION: same as mruiz: are all ubuntu packages there ? (02:08:59 PM) james_w: almost (02:09:06 PM) james_w: the intent is to have them all there (02:09:14 PM) james_w: we are still working on getting the last 10% there (02:10:07 PM) james_w: so, you don't have to use that long list of branches to navigate (02:10:22 PM) james_w: if you look at https://launchpad.net/ubuntu/+source/net-snmp (02:10:31 PM) james_w: which is the package page for net-snmp that I just mentioned (02:10:42 PM) james_w: you will see that the "Code" tab is again active (02:11:07 PM) james_w: clicking on that gives this page: https://code.launchpad.net/ubuntu/+source/net-snmp (02:11:14 PM) james_w: which is an overview of the branches available (02:11:21 PM) james_w: each branch is attached to a release of Ubuntu (02:11:37 PM) james_w: so you can see the karmic branches separate from the jaunty ones (02:11:46 PM) james_w: so at the top is lp:ubuntu/net-snmp (02:11:58 PM) james_w: which can also be written lp:ubuntu/karmic/net-snmp (02:12:07 PM) james_w: omitting the release gets you the current development one (02:13:06 PM) james_w: under that is lp:ubuntu/jaunty/net-snmp which is obvious the jaunty branch (02:13:15 PM) james_w: then there is intrepid, which is a bit more interesting (02:13:25 PM) james_w: lp:ubuntu/intrepid/net-snmp (02:13:41 PM) james_w: that's the source that was released with intrepid (02:14:00 PM) james_w: then lp:ubuntu/intrepid-security/net-snmp (02:14:08 PM) james_w: which is the source that is in intrepid-security (02:14:19 PM) james_w: so it contains one or more security updates (02:14:31 PM) james_w: QUESTION: What if you want to get the latest version in e.g. jaunty, but don't know if it's been published in backports, security and/or updates? (02:14:37 PM) james_w: good question (02:14:44 PM) james_w: there's no good answer for that currently (02:14:58 PM) james_w: it's partly that "latest" isn't exactly well defined (02:15:05 PM) james_w: I'm keen to provide that somehow (02:15:20 PM) james_w: but it may be implemented on top of what we have using the LP API or something (02:15:41 PM) james_w: so, that's the branches that are available, what do they contain? (02:15:53 PM) james_w: check out https://code.launchpad.net/~ubuntu-branches/ubuntu/karmic/net-snmp/karmic (02:16:02 PM) james_w: which is the page that corresponds to the karmic branch (02:16:28 PM) james_w: gives you some information on the branch, the latest revisions, and the bugs that have been fixed (02:16:59 PM) james_w: it also allows you to subscribe to the branch (02:17:13 PM) james_w: this would allow you to get an email every time there was an upload of a package (02:17:42 PM) james_w: which I don't think you can currently do without some procmail/rss2email type solution (02:18:47 PM) james_w: if you click on the "Source Code" link then you can see the contents of the branch (02:19:00 PM) james_w: https://bazaar.launchpad.net/~ubuntu-branches/ubuntu/karmic/net-snmp/karmic/changes (02:19:21 PM) james_w: and https://bazaar.launchpad.net/~ubuntu-branches/ubuntu/karmic/net-snmp/karmic/files (02:19:32 PM) james_w: so you can see that all the source is there as you would expect (02:19:47 PM) james_w: and you can also see the revision corresponding to each upload (02:20:04 PM) james_w: QUESTION: will it eventually be possible, with the correct upload rights, to push to one of these branches and have a package built & uploaded out of it? (or does this already happen? :) ) (02:20:10 PM) james_w: yes and yes (02:20:15 PM) james_w: that is currently in planning (02:20:23 PM) james_w: you will be able to push soon if you can upload (02:20:37 PM) james_w: and then you will be able to request a build from the branch (02:20:49 PM) james_w: (which will work from any packaging branch to PPAs as well) (02:21:00 PM) james_w: QUESTION: how are the default upload rights per branch ? (02:21:07 PM) james_w: this is still being discussed (02:21:26 PM) james_w: one rule will be that if you can upload the package then you will be able to push to these "official branches" (02:21:42 PM) james_w: I should have mentioned that the lp:ubuntu/net-snmp etc. branches are special (02:21:59 PM) james_w: they have been nominated to be "official" and correspond to what is in the archive (02:22:19 PM) james_w: you can push any branch you like to ~LP-ID/ubuntu/karmic/net-snmp/some-name (02:22:26 PM) james_w: if you want to work on this package (02:22:50 PM) james_w: which will work well for PPAs at some point (02:24:01 PM) james_w: in addition to all of this check out https://code.launchpad.net/debian (02:24:12 PM) james_w: we have exactly the same thing there for Debian (02:24:37 PM) james_w: so if you see an upload in Debian with a change you want in Ubuntu then you can merge the Debian branch from there to the Ubuntu one (02:24:57 PM) james_w: QUESTION: are they imported from git.debian.org ? (02:24:58 PM) james_w: no (02:25:05 PM) james_w: not every package is on there (02:25:14 PM) james_w: we would like to do that when it makes sense (02:25:21 PM) james_w: but we need some improvements in bzr first (02:25:27 PM) james_w: so we are working on that (02:26:09 PM) james_w: so, what else can you do with these branches? (02:26:16 PM) james_w: well, I hope you can use them to fix bugs (02:26:26 PM) james_w: otherwise I picked a bad title for this session (02:26:44 PM) james_w: so, I recorded a screencast that shows some of this (02:27:04 PM) james_w: unfortunately it has no audio, but it might help follow along or jog your memory (02:27:06 PM) james_w: http://people.canonical.com/~jamesw/dd.ogv (02:27:17 PM) james_w: <^arky^> QUESTION: Is it possible to checkout the source of package, apply custom patches and publish to personal PPA for testing (02:27:24 PM) james_w: yes, that will be possible one day (02:27:28 PM) james_w: you can do the first part now (02:27:40 PM) james_w: and you can upload the result to your PPA as normal with dput (02:27:53 PM) james_w: the branch -> PPA step will be a future addition (02:28:00 PM) james_w: QUESTION: Who control Ubuntu Branches team? (02:28:06 PM) james_w: (02:28:07 PM) james_w: I do (02:28:24 PM) james_w: it's kind of an implementation detail (02:28:47 PM) james_w: for all these branches there isn't really an owner, but we can't have no owner, so we just made a new team (02:29:03 PM) james_w: Not completely ontopic: I'd like to propose an update for the guake package with help of the branch system, but the diff comes from Git. How do I convert it to a usable patch I can add to the branch? (02:29:10 PM) james_w: check out "bzr patch" from bzrtools (02:29:18 PM) james_w: should be able to apply git diffs (02:30:48 PM) james_w: QUESTION: will bzr-builddeb be used on the launchpad side for building? (02:30:51 PM) james_w: dunno (02:31:00 PM) james_w: or a more precise answer: (02:31:03 PM) james_w: yes, but no (02:31:15 PM) james_w: there will be code reuse (02:31:29 PM) james_w: but we might want to reduce the amount of trusted code (02:31:38 PM) james_w: and it won't need all the features of bzr-builddeb (02:34:26 PM) james_w: sorry, just checking the cricket score (02:34:38 PM) james_w: right, so let's fix a "bug" (02:34:54 PM) james_w: we can carry on working on this net-snmp package (02:35:24 PM) james_w: oh, staging is down (02:35:29 PM) james_w: that will make this tricky (02:35:47 PM) james_w: we don't really want to create lots of useless merge proposals (02:36:16 PM) james_w: how about I commentate on the video instead? (02:36:18 PM) james_w: would that work? (02:36:31 PM) james_w: not good for the logs though :-/ (02:38:09 PM) james_w: we can at least grab a branch and look around, so let's do that (02:38:34 PM) james_w: bzr branch lp:ubuntu/net-snmp (02:38:51 PM) james_w: that will create a "net-snmp" directory that contains the bzr branch (02:41:51 PM) james_w: error- > bzr: ERROR: exceptions.KeyError: 'Bazaar repository format 2a (needs bzr 1.16 or later)\n (02:41:57 PM) james_w: so, what's going on here? (02:42:10 PM) james_w: bzr is just about to release 2.0 with a new default format (02:42:26 PM) james_w: this format is a lot better than it's previous ones in many ways (02:42:38 PM) james_w: most notably here in disk space (02:43:53 PM) james_w: as there are a *lot* of branches here it would have used loads of disk space in the old format (02:44:23 PM) james_w: so we used the new one a little before it is available to most people so that we could fit all these branches on a sensible number of disk drives (02:44:46 PM) james_w: this is unfortunate in that it makes it harder to use an old release to work on the branches (02:44:56 PM) james_w: there is https://launchpad.net/~bzr/+archive/ppa (02:45:16 PM) james_w: and we will go through the backport process once 2.0 is out (02:45:31 PM) james_w: plus, it's not long until karmic is released :-) (02:48:54 PM) james_w: so, we have the branch now (02:49:08 PM) james_w: you can look around and see that it looks just like a normal package (02:49:12 PM) james_w: how to build it? (02:49:21 PM) james_w: "bzr builddeb -S" (02:49:27 PM) james_w: that will build a source package (02:49:36 PM) james_w: "bzr builddeb" to build a binary one (02:49:39 PM) james_w: "bzr bd" (02:49:46 PM) james_w: you can use that alias for less typing (02:50:01 PM) james_w: QUESTION: Is there a mechanism for proposing something based on lp:ubuntu/foo/bar to become lp:ubuntu/foo-backports/bar ? (02:50:10 PM) james_w: that would be the normal backport process (02:50:27 PM) james_w: but no, we don't have anything nominations or anything for that (02:50:57 PM) james_w: so, feel free to fix any bugs you find in this package :-) (02:51:22 PM) james_w: if you do fix something then you can "bzr commit", or use "debcommit" after adding a changelog entry with "dch" (02:51:36 PM) james_w: then you should "bzr push" this to LP (02:51:59 PM) james_w: to something like "bzr push lp:~LP-ID/ubuntu/karmic/net-snmp/fix-bug" (02:53:29 PM) james_w: then you can open that branch in your web browser and "Propose for merging in to another branch" (02:53:50 PM) james_w: and that would create a "merge proposal" that allows us to review and comment on the changes (02:53:59 PM) james_w: you can see this in the screencast (02:54:08 PM) james_w: we're out of time, any last questions? (02:56:45 PM) james_w: ok, I'll make way for Laney (02:56:49 PM) james_w: thanks everyone (02:57:03 PM) james_w: I'm always up for discussing this, so grab me another time if you want to know more }}}