FixingDesktopBugs

Dev Week -- Fixing Desktop bugs -- seb128 -- Thu, 3rd Feb, 2012

   1 [15:00] <seb128> ok, it's time to start
   2 [15:00] <seb128> thanks everybody for joining
   3 [15:01] <seb128> I'm Sebastien Bacher and working in the Ubuntu Desktop Team
   4 [15:01] <seb128> I will show you a bit of what you do in the desktop team today
   5 [15:01] <seb128> first some infos, you can find us on #ubuntu-desktop on this IRC channel
   6 [15:02] <seb128> or that mailing list: https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop
   7 [15:02] <seb128> feel free to join to ask question, participate to discussion or help doing work ;-)
   8 [15:02] <seb128> so let's get started, what we do in the desktop team is basically keeping the desktop in shape
   9 [15:02] <seb128> which means
  10 [15:03] <seb128> - keeping the components updated
  11 [15:03] <seb128> - fixing bugs
  12 [15:03] <seb128> - looking to your bug reports
  13 [15:03] <seb128> - talking to our upstreams (GNOME, Debian, dx, etc)
  14 [15:03] <seb128> you can find some pointers and documentation on https://wiki.ubuntu.com/DesktopTeam/
  15 [15:04] <seb128> I will first walk you through a backport of an upstream GNOME git commit to one of our packages
  16 [15:04] <seb128> note that the desktop team packages use a different workflow for most part than the "UDD" new standard workflow
  17 [15:05] <seb128> the reason are basically that it works better for us still and we wait for a few extra issues to get sorted with UDD (mostly quilt handling and download times)
  18 [15:05] <seb128> you can read https://wiki.ubuntu.com/DesktopTeam/Bzr to get some details on our workflow
  19 [15:05] <seb128> so
  20 [15:05] <seb128> let's start by fetch a source
  21 [15:05] <seb128> we will use gnome-control-center in that example
  22 [15:05] <seb128> for that you usually want to use "debcheckout <source>"
  23 [15:06] <seb128> $ debcheckout gnome-control-center
  24 [15:06] <seb128> in this case
  25 [15:06] <seb128> which should give you something around those lines
  26 [15:06] <seb128> bzr branch http://code.launchpad.net/~ubuntu-desktop/gnome-control-center/ubuntu gnome-control-center ...
  27 [15:06] <seb128> then it's downloading the source for you
  28 [15:07] <seb128> wait a bit for that to be done and you should get that:
  29 [15:07] <seb128> $ ls
  30 [15:07] <seb128> gnome-control-center
  31 [15:07] <seb128> gnome-control-center_3.2.2-2ubuntu5.debian.tar.gz
  32 [15:07] <seb128> gnome-control-center_3.2.2-2ubuntu5.dsc
  33 [15:07] <seb128> gnome-control-center_3.2.2.orig.tar.bz2
  34 [15:07] <seb128> the first one is a checkout of the vcs directory
  35 [15:07] <seb128> the other files are the source package from the archive
  36 [15:07] <seb128>  
  37 [15:08] <seb128> let's have a look to the dir
  38 [15:09] <seb128> hum, demo effect, that didn't do what I wanted today on precise
  39 [15:09] <seb128> will have to look into that
  40 [15:09] <seb128> so what it should have done and what I'm doing now it's what it wrote
  41 [15:09] <seb128> which is basically
  42 [15:10] <seb128> bzr branch lp:~ubuntu-desktop/gnome-control-center/ubuntu g
  43 [15:10] <seb128> bzr branch lp:~ubuntu-desktop/gnome-control-center/ubuntu
  44 [15:10] <seb128> ok, now I got what I wanted ;-)
  45 [15:10] <seb128> let's visit that directory
  46 [15:10] <seb128> cd ubuntu
  47 [15:10] <seb128> $ ls
  48 [15:11] <seb128> debian
  49 [15:11] <seb128> so you get a debian dir there, it's where we will do our work
  50 [15:11] <seb128> to continue you will need the bzr-builddeb and the build-depends of gnome-control-center
  51 [15:11] <seb128> so assuming that you have the deb-src for oneiric or precise enable you can type those commands
  52 [15:12] <seb128> sudo apt-get install bzr-builddeb
  53 [15:12] <seb128> sudo apt-get build-dep gnome-control-center
  54 [15:12] <seb128> the second one will install all the Build-Depends for gnome-control-center, i.e what you need to build it
  55 [15:13] <seb128> now you should be set
  56 [15:13] <seb128> so we are in the debian directory
  57 [15:13] <seb128> rather in the ubuntu dir
  58 [15:13] <seb128> bzr bd-do will give you a shell environement where you can do changes
  59 [15:14] <seb128> whatever change you do that in the debian directory will be applied to the vcs checkout you did when you exit 0
  60 [15:14] <seb128> if you exit with something else than 0 you will not get the changes copied over
  61 [15:16] <seb128> let's assume for the exercice than we want to backport the fix from http://git.gnome.org/browse/gnome-control-center/commit/?h=gnome-3-2&id=81fb28de5cf8708932224f482a8923322191b00f
  62 [15:16] <seb128> ie http://git.gnome.org/browse/gnome-control-center/patch/?id=81fb28de5cf8708932224f482a8923322191b00f
  63 [15:16] <seb128> so you did bzr bd-do and are in an unpacked source of gnome-control-center
  64 [15:18] <seb128> let's save the content of that commit in a file, name it git_backport_printer_fix.patch
  65 [15:18] <seb128> new you do
  66 [15:18] <seb128> quilt import git_backport_printer_fix.patch
  67 [15:19] <seb128> Importing patch git_backport_printer_fix.patch (stored as git_backport_printer_fix.patch)
  68 [15:19] <seb128>  
  69 [15:19] <seb128> the patch is imported
  70 [15:19] <seb128> let's check that it applies well
  71 [15:19] <seb128> $ quilt push
  72 [15:19] <seb128> Applying patch git_backport_printer_fix.patch
  73 [15:19] <seb128> patching file panels/printers/cc-printers-panel.c
  74 [15:19] <seb128> Now at patch git_backport_printer_fix.patch
  75 [15:19] <seb128>  
  76 [15:19] <seb128> it does
  77 [15:19] <seb128> let's refresh it
  78 [15:19] <seb128> $ quilt refresh
  79 [15:19] <seb128> Refreshed patch git_backport_printer_fix.patch
  80 [15:20] <seb128> so all good
  81 [15:20] <ClassBot> There are 10 minutes remaining in the current session.
  82 [15:20] <seb128> we have our patch, it applies to our package and we refresh it
  83 [15:20] <seb128> we are happy about it
  84 [15:20] <seb128> we can exit
  85 [15:20] <seb128> $ exit 0
  86 [15:20] <seb128> it bring you back to your vcs dir
  87 [15:21] <seb128> let's see where we stand
  88 [15:21] <seb128> $ bzr statusmodified:
  89 [15:21] <seb128>   debian/patches/series
  90 [15:21] <seb128> unknown:
  91 [15:21] <seb128>   debian/patches/git_backport_printer_fix.patch
  92 [15:21] <seb128> ok
  93 [15:21] <seb128> so the series got updated, and we have a new file
  94 [15:21] <seb128> $ bzr diff
  95 [15:21] <seb128> === modified file 'debian/patches/series'
  96 [15:21] <seb128> --- debian/patches/series      2012-01-25 16:38:52 +0000
  97 [15:21] <seb128> +++ debian/patches/series      2012-02-02 15:18:21 +0000
  98 [15:21] <seb128> @@ -25,3 +25,4 @@
  99 [15:21] <seb128>  93_change_window_role_on_panel_change.patch
 100 [15:21] <seb128>  94_git_adding_shortcuts.patch
 101 [15:21] <seb128>  95_git_ctrlw_shortcut.patch
 102 [15:21] <seb128> +git_backport_printer_fix.patch
 103 [15:21] <seb128>  
 104 [15:21] <seb128> the patch got added to the serie
 105 [15:21] <seb128> we need to add the file to the vcs, that was not done for us
 106 [15:21] <seb128> so we use
 107 [15:22] <seb128> $ bzr add debian/patches/git_backport_printer_fix.patch
 108 [15:22] <seb128> adding debian/patches/git_backport_printer_fix.patch
 109 [15:22] <seb128> at this point we are mostly good
 110 [15:22] <seb128> we need still to update the changelog
 111 [15:22] <seb128> type
 112 [15:22] <seb128> dch -i
 113 [15:22] <seb128> and write a changelog entry
 114 [15:22] <seb128>  * backport fix from git (lp: #...) for example
 115 [15:22] <seb128> then you can bzr diff again
 116 [15:22] <seb128> you get a new revision with a backported patch ready to test!
 117 [15:22] <seb128> now to test it's easy, run bzr bd
 118 [15:23] <seb128> it will build the new version for you
 119 [15:23] <seb128> if you don't have a gpg key matching your changelog email don't worry, it will warn you about that, that's ok
 120 [15:23] <seb128> your deb are in ../build-area after the build
 121 [15:23] <seb128> you can go there, sudo dpkg -i *.deb and try the new version
 122 [15:24] <seb128> if you are happy with the change go back to the ubuntu dir
 123 [15:24] <seb128> $ bzr commit
 124 [15:24] <seb128> to commit you work
 125 [15:24] <seb128> then
 126 [15:24] <seb128> $ bzr push lp:~yourlaunchpadid/gnome-control-conter/my-fix
 127 [15:24] <seb128> $ bzr lp-submit to do a merge proposal
 128 [15:25] <seb128> and wait for us to review your work ;-)
 129 [15:25] <seb128>  
 130 [15:25] <ClassBot> There are 5 minutes remaining in the current session.
 131 [15:25] <seb128> ok, that was basically it for a patch backport, 5 minutes left
 132 [15:25] <seb128> questions?
 133 [15:25] <ClassBot> dholbach asked: Will Wanda the Fish ever come back?
 134 [15:26] <seb128> dholbach, it's still in gnome-panel upstream, you can "free the fish" in the dash but it's not as cool as the vuntz' version I've been told and will not go around you screen ;-)
 135 [15:26] <ClassBot> jincreator asked: I tried debcheckout but only get debian folder, not having ,dsc, .debian.tar.gz, .orig.tar.bz2.
 136 [15:27] <seb128> jincreator, that's probably better, seems the tools changed behaviour in precise which confused me
 137 [15:27] <seb128> you probably got the equivalent of my second command
 138 [15:27] <seb128>  
 139 [15:27] <ClassBot> ali1234 asked: don't you need to export QUILT_PATCH_DIR?
 140 [15:27] <seb128> good point, I'm sorry about that
 141 [15:27] <seb128> it's one of those suboptimal thing you have to do, I did it years ago and forgot :p
 142 [15:28] <seb128> you need to "export QUILT_PATCHES=debian/patches"
 143 [15:28] <seb128> put that in your environement then you can forget about it like me :p
 144 [15:28] <seb128>  
 145 [15:28] <ClassBot> ali1234 asked: what if the package doesn't use quilt but something else?
 146 [15:28] <seb128> I couldn't cover all the patch systems there
 147 [15:29] <seb128> you can use edit-patch (great tool that mvo wrote) than wrap around the different patch systems
 148 [15:29] <seb128> it will do the quilt magic for you, or call cdbs-edit-patch or similar
 149 [15:29] <seb128>  
 150 [15:29] <seb128> one minutes left and no question
 151 [15:29] <seb128> seems we are good ;-)

MeetingLogs/devweek1201/FixingDesktopBugs (last edited 2012-02-03 09:23:48 by dholbach)