PackageMerging
Ubuntu Open Week - Merging Packages 101 - Nicolas Valcárcel - Tue, Apr 29, 2008
[19:00] <nxvl> \o/
[19:01] <nxvl> wooohooo
[19:01] <nxvl> it's merging time!!
[19:01] <nxvl> Hi!
[19:01] <nxvl> We are going to learn how to merge packages
[19:01] <nxvl> But, first of all we need to understand what this merging thing is.
[19:01] <nxvl> On the first stage of our development circle we import packages from debian unstable (sid)
[19:01] <nxvl> and then we start working on them
[19:02] <nxvl> fixing bugs and adding features
[19:02] <nxvl> but if we import all the packages from debian, the work done before will be missing?
[19:02] <nxvl> Well, that's not entirely true.
[19:02] <nxvl> We have 2 ways to import packages from debian: sync and merge
[19:02] <nxvl> To sync a package is to import it from debian as it is, without furter changes.
[19:02] <nxvl> On the other hand we have merging.
[19:03] <nxvl> To merge a package is to take the debian package, and include on it the ubuntu changes
[19:03] <nxvl> but, not all changes, we need to check if the ubuntu changes hasn't been already included on debian.
[19:04] <nxvl> That happends often since in ubuntu we are thankfull with debian and send the patches back to them
[19:04] <nxvl> so they can also take approach of our work.
[19:04] <nxvl> < Raseel> QUESTION: So syncing is usually done for new packages taken from Debian ?
[19:04] <nxvl> Raseel: good one
[19:04] <nxvl> Raseel: yes, it is
[19:04] <nxvl> Raseel: but not only on this cases
[19:04] <nxvl> Raseel: also we do sync when we haven't change the package in ubuntu
[19:05] <nxvl> Raseel: and when all the ubuntu work has been already included on debian
[19:05] <nxvl> < rlaager> QUESTION: If I'm interested in getting a new package into
[19:05] <nxvl> Ubuntu (by way of Debian), when is the cut-off?
[19:05] <nxvl> rlaager: the Debian import Freeze is the time we don't import anything
[19:06] <nxvl> rlaager: after the DIF we only include special packages
[19:06] <nxvl> rlaager: so you need to ask for an exception to it
[19:07] <nxvl> for Ibex the DIF is going to be on Jube 26
[19:07] <nxvl> June*
[19:07] <nxvl> you can see more of it on https://wiki.ubuntu.com/IntrepidReleaseSchedule
[19:07] <nxvl> Ok have we understand what a merge is?
[19:07] <nxvl> well
[19:07] <nxvl> it seems se did
[19:07] <nxvl> So, now that we have clear the concept of merging i will explain how a merge is done
[19:08] <nxvl> and do a merge with you, so this will be a hands on talk.
[19:08] <nxvl> First of all we need to check what packages need to be merged, since sync is done automatically.
[19:08] <nxvl> and that where MoM goes in.
[19:08] <nxvl> We call MoM our merging tool, which is an acronym of Merge-o-Matic - MoM
[19:09] <nxvl> It can be found on http://merges.ubuntu.com
[19:09] <nxvl> We are going on how to use it later, first we need some tools.
[19:09] <nxvl> First of all we need to create a work directory, i use to use ubuntu/src, but you could use whatever
you want to
[19:09] <nxvl> From now on we are calling this $WORK_DIR, so please create a working directory for your own.
[19:10] <nxvl> now store the path on the $WORK_DIR variable writting "export $WORK_DIR=/path/to/work/directory"
[19:10] <nxvl> which in my case will be "export WORK_DIR=~/ubuntu/src"
[19:10] <nxvl> ok, now that we have it we need to download the grab-merge script
[19:11] <nxvl> you can find it in MoM, there is a link on the header text which point to it.
[19:11] <nxvl> For making it easier just download it from here: http://merges.ubuntu.com/grab-merge.sh
[19:11] <nxvl> and save it on $WORK_DIR, just write on your terminal:
[19:11] <nxvl> cd $WORK_DIR ; wget -c http://merges.ubuntu.com/grab-merge.sh; chmod +x grab-merge.sh
[19:12] <nxvl> ok, now we will need some packages, we need devscripts, which are packages for doing our packaging work
[19:12] <nxvl> and most important for merging patchutils, so please run:
[19:12] <nxvl> sudo apt-get install devscripts patchutils
[19:12] <nxvl> i will wait a little so you all can download and install them
[19:13] <nxvl> oh! i have a question in here
[19:13] <nxvl> 13:09 <progfou> QUESTION: so, except during the DIF time, any Debian package will be sync'd ?
[19:13] <nxvl> progfou: yes, all the packages that doesn't need to be merged are automatically synced
[19:14] <nxvl> after DIF we need special cases to sync and merge packages
[19:14] <nxvl> ok!
[19:14] <nxvl> so all of you must have the tools installed
[19:14] <nxvl> < Raseel> QUESTION: Which package are we planning to merge ?
[19:14] <nxvl> Raseel: beagle
[19:14] <nxvl> ok, i think we have all what we need now, so let's start
[19:15] <nxvl> i will do a complete, so a "complex" merge, so you understand everything you can see on a merge
[19:15] <nxvl> and later i will do a simple and easy merge if we have time.
[19:15] <nxvl> What we need?
[19:15] <nxvl> just to pick a package and make an empty directory.
[19:15] <nxvl> to pick a package you need to browse the list of packages on MoM
[19:16] <nxvl> as we are new contributor our main focus will be on universe, so go into the universe list:
[19:16] <nxvl> http://merges.ubuntu.com/universe.html
[19:16] <nxvl> There we find a large list of packages, with their ubuntu, debian and base version
[19:16] <nxvl> also we see the last uploader, which is the last person who work on the package, and in some cases the
uploader
[19:17] <nxvl> QUESTION: as a debian maintainer, is it safe to wait that the package to merge is in testing ?
[19:17] <nxvl> rZr: nop
[19:17] <nxvl> rZr: we merge from debian sid, not from testing
[19:17] <nxvl> why isn't the person who work on a package the one who upload it? well, as contributor we don't have
access to the servers
[19:17] <nxvl> < arhimodeg> QUESTION: on apt-get is always the last revision of a program?
[19:17] <nxvl> arhimodeg: yes
[19:18] <nxvl> < rZr> even when there are know RC bugs ?
[19:18] <nxvl> rZr: yes
[19:18] <nxvl> rZr: we fix them after DIF
[19:18] <nxvl> ok
[19:18] <nxvl> why isn't the person who work on a package the one who upload it? well, as contributor we don't have
access to the servers
[19:18] <nxvl> so we need a sponsor who will check our work, send us some feedback if something is wrong and/or upload
it when they are happy with our work
[19:19] <nxvl> but more on this later.
[19:19] <nxvl> We are going to work on beagle
[19:19] <nxvl> so we are going to create an empty directory to work on it and get into it:
[19:19] <nxvl> mkdir $WORK_DIR/beagle ; cd $WORK_DIR/beagle
[19:19] <nxvl> now we need to download the packages to work on them, that's easily done with the script we download
earlier:
[19:19] <nxvl> ../grab-merge.sh beagle
[19:20] <nxvl> i will give you some minutes so we all have the files we need
[19:20] <nxvl> now we wait until it downloads the debian package and the ubuntu one.
[19:21] <nxvl> most of the work have been already done by MoM, we only need to work on some tunning and the tasks
which need human intervension
[19:21] <nxvl> rZr: thnx :D
[19:21] <nxvl> ok, if everything is already downloaded we can see a file called REPORT, this is the first thing we
need to look at
[19:22] <nxvl> in this case we see a CONFLICTS title on it where we can find a line saying:
[19:22] <nxvl> C debian/patches/00list
[19:22] <nxvl> That means that on this file we have a conflict and we need to decide what to include and what to
remove
[19:23] <nxvl> so, open it with your prefered text editor, i prefer vim, so i will use it for the example, feel free
to use the one you are more comfortable with
[19:23] <nxvl> cd beagle-0.3.4-1ubuntu1/ ; vim debian/patches/00list
[19:23] <nxvl> there we see:
[19:23] <nxvl> <<<<<<< beagle-0.3.3-2ubuntu1 (ubuntu)
[19:23] <nxvl> glib-sharp-2.0-support.dpatch
[19:23] <nxvl> =======
[19:23] <nxvl> fix_system-scripts.dpatch
[19:23] <nxvl> >>>>>>> beagle-0.3.4-1 (debian)
[19:23] <nxvl> now we need to check what this patches are and what to keep
[19:24] <nxvl> doing 'ls debian/patches/' we find that we have the 2 patches in there
[19:24] <nxvl> we need to check at the changelog to decide if we want to delete one of them, we can use dch command
for this:
[19:24] <nxvl> dch -e
[19:24] <nxvl> there we see that Luca Falavigna added glib-sharp-2.0-support.dpatch on 0.3.3-2ubuntu1
[19:25] <nxvl> (if you are using vim put the cursor on 0.3.3-2ubuntu1 and press space bar
[19:25] <nxvl> but we alse see that Jose Carlos Garcia Sogo disable it on 0.3.4-1:
[19:25] <nxvl> + glib-sharp-2.0-support: disabled. Included upstream.
[19:25] <nxvl> but there is no explicit change adding glib-sharp-2.0-support.dpatch to debian, but we can assume that
he include it on 0.3.3-3
[19:25] <nxvl> since the patch has been included to fix FTBFS as well as the change on 0.3.3-3, se we need to check
what Debian bug #470328 is
[19:25] <nxvl> we can check it on BTS, the debian bug tacker, at
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=470328
[19:26] <nxvl> as we see on the report Luca send his patch back to debian, and they include it, so now we are sure
that the patch was included on 0.3.3-3 and it's save to remove it
[19:26] <nxvl> so we need to remove:
[19:26] <nxvl> <<<<<<< beagle-0.3.3-2ubuntu1 (ubuntu)
[19:26] <nxvl> glib-sharp-2.0-support.dpatch
[19:26] <nxvl> =======
[19:26] <nxvl> and
[19:26] <nxvl> >>>>>>> beagle-0.3.4-1 (debian)
[19:26] <nxvl> from debian/patches/00list and also is a good idea to remove
debian/patches/glib-sharp-2.0-support.dpatch since we don't need it anymore
[19:27] <nxvl> Then we just need to edit the changelog adding the changes we are keeping, so the changelog entry needs
to be:
[19:27] <nxvl> beagle (0.3.4-1ubuntu1) hardy; urgency=low
[19:27] <nxvl> * Merge from debian unstable, remaining changes:
[19:27] <nxvl> - debian/control:
[19:27] <nxvl> + Rename ice{weasel,dove}-beagle to {mozilla,thunderbird}-beagle and
[19:27] <nxvl> and update the dependencies accordingly.
[19:27] <nxvl> + Change Maintainer to Ubuntu Mono Team.
[19:27] <nxvl> - debian/rules:
[19:27] <nxvl> + Install the mozilla-beagle and thunderbird-beagle extensions.
[19:27] <nxvl> - ice{dove,weasel}.dirs:
[19:27] <nxvl> + Renamed to {mozilla,thunderbird}-beagle.dirs.
[19:27] <nxvl> + Fixed paths to point to usr/lib/{firefox,thunderbird}
[19:28] <nxvl> -- Nicolas Valcárcel <nvalcarcel@ubuntu.com> Tue, 29 Apr 2008 00:33:30 -0500
[19:28] <nxvl> 13:28 < ScottK> lintian will also kvetch at you if you have a patch system, but no patches.
[19:28] * nxvl HUGS ScottK
[19:28] <nxvl> ok
[19:28] <nxvl> i will slow a little
[19:28] <nxvl> i will wait a bit until everyone is with me again
[19:28] <nxvl> :D
[19:28] <nxvl> if you have questions ask them now
[19:29] <nxvl> i have uploaded my changelog to pastebin
[19:29] <nxvl> http://pastebin.ca/1001989
[19:29] <nxvl> so you can check it clearly
[19:30] <nxvl> are you already with me?
[19:31] <nxvl> raise your hands if you have you changelog already edited: o/
[19:31] <nxvl> < Syntux> QUESTION: do we have to delete the patches files or remove them from certain file that list
all patches?
[19:31] <nxvl> Syntux: both
[19:32] <nxvl> Syntux: we need to remove the line containing "glib-sharp-2.0-support.dpatch" from 00list
[19:32] <nxvl> and remove the patch file from debian/patches
[19:32] <nxvl> no one raise his hand :(
[19:33] <nxvl> ok
[19:33] <nxvl> it seems that everyone is still downloading the packages
[19:34] <nxvl> Syntux: yes, sorry about that :(
[19:35] <nxvl> Syntux: i was expeting better broadband from the audience than mine
[19:37] <nxvl> ok
[19:37] <nxvl> i will continue for now
[19:37] <nxvl> if you have still problems downloading you can check at the logs after the session and ping me, i'm always online
[19:37] <nxvl> :D
[19:38] <nxvl> ok
[19:38] <nxvl> so, why we have this o the changelog?
[19:38] <nxvl> we have included this things
[19:38] <nxvl> since the only changes we are keeping are the ones from the last merge.
[19:38] <nxvl> Then is just a matter of generating the debdiff, reporting the bug asking for merge, upload the debdiff
and ask for sponsorship.
[19:39] <nxvl> Sometimes we are not keeping any ubuntu changes since all of them have been already included in debian,
then we need to ask for a sync.
[19:39] <nxvl> i have already report the bug and upload the debdiff
[19:39] <nxvl> on Bug #224318
[19:40] <nxvl> https://bugs.edge.launchpad.net/ubuntu/+source/beagle/+bug/224318
[19:40] <nxvl> ScottK: i will apreciate if you sponsor it :D
[19:40] <nxvl> so i was thinking on do another merge
[19:41] <nxvl> but as everyone is still stuck on the first one
[19:41] <nxvl> i will only answer questions
[19:41] <nxvl> :D
[19:41] <nxvl> so, please try to finish the merge
[19:41] <nxvl> and ask questions if you have some
[19:42] <nxvl> < RoAkSoAx> QUESTION: do we have to be on Intrepid Ibex to do the merging?
[19:43] <nxvl> RoAkSoAx: nop
[19:43] <nxvl> RoAkSoAx: but it is helpfull to have a chroot environment
[19:43] <nxvl> RoAkSoAx: i use pbuilder, but you can use whatever you want
[19:44] <nxvl> < Gilou> QUESTION: what is the relationship between ubuntu & deb developpers? What would happen if
debian would take too long to take your patch into account, would you just roll out your own, and deal with a merge
(or non merge) later once the patch is committed (or not) in debian?
[19:44] <nxvl> Gilou: we send our packages back to debian, to contribute to them
[19:45] <nxvl> Gilou: also, not all our patches are used by DD, because the bug is only present on ubuntu, or they
don't want that feature
[19:45] <nxvl> Gilou: so, if the patch is not included on debian you just need to merge it on the next development
circle
=== nxvl changed the topic of #ubuntu-classroom to: Ubuntu Open Week | Information and Logs:
https://wiki.ubuntu.com/UbuntuOpenWeek | How to ask questions: https://wiki.ubuntu.com/UbuntuOpenWeek/Rules | Ask
questions in #ubuntu-classroom-chat, prefaced with "QUESTION:" | See https://wiki.ubuntu.com/UbuntuOpenWeek/JoiningIn
to filter out channel noise | Current session: "Merging 101" - Nicolas ValcÃarcel
=== nxvl changed the topic of #ubuntu-classroom to: Ubuntu Open Week | Information and Logs: https://wiki.ubuntu.com/UbuntuOpenWeek | How to ask questions: https://wiki.ubuntu.com/UbuntuOpenWeek/Rules | Ask questions in #ubuntu-classroom-chat, prefaced with "QUESTION:" | See https://wiki.ubuntu.com/UbuntuOpenWeek/JoiningIn to filter out channel noise | Current session: "Merging 101" - Nicolas Valcarcel
[19:47] <nxvl> stani: done :D
[19:47] <nxvl> Gilou: does that answers your question?
[19:47] <nxvl> < Monika|K> Question: You write Change Maintainer to Ubuntu Mono Team ... should that be MOTU Team?
[19:48] <nxvl> Monika|K: not in this case, the maintainers of beagle are Mono Team
[19:48] <nxvl> Monika|K: since they are the ones in charge of Mono packages
[19:48] <nxvl> Monika|K: but in most cases it will we MOTU or Core Developers
[19:49] <nxvl> Monika|K: but there are also specific cases in which a person is listed as Maintainer
[19:49] <nxvl> < Monika|K> Question: What is beagle and what does it have to do with Firefox?
[19:49] <nxvl> Monika|K: beagle is a search engine
[19:50] <nxvl> Monika|K: it an app that do files search on our system, it also finds firefox bookmarks
[19:50] <nxvl> Monika|K: but that's a little OT
[19:50] <nxvl> rZr: i have see those logs before, i'm not sure where they keep them
[19:52] <nxvl> < Monika|K> Question: In what cases would a person be listed as maintainer?
[19:52] <nxvl> on ubuntu we don't use it
[19:52] <nxvl> but there are cases in which the Debian Maintainer is also an Ubuntu Developer and he want's to still
be the Maintainer of the package in ubuntu
[19:52] <nxvl> or when the package are just synced
[19:53] <nxvl> s/are/is
[19:53] <nxvl> ScottK: isn't it?
[19:55] <nxvl> did you have any last questions?
[19:55] <nxvl> have you all merge the package?
[19:56] <nxvl> if you merge the package raise your hands: o/
[19:56] <nxvl> ok
[19:57] <nxvl> so as i'm getting out of time
[19:57] <nxvl> just a few last words
[19:57] <nxvl> please if you want to be involved on ubuntu, keep in mind that we depend on debian's work
[19:57] <nxvl> and we need to be thankfull with DD
[19:58] <nxvl> so if you have corrected a bug, try to check if it is also present in debian and send them the patch
[19:58] <nxvl> also
[19:58] <nxvl> you need to keep in mind that if someone helps you
[19:58] <nxvl> you need to make 2 things:
[19:58] <nxvl> 1) say thanks
[19:58] <nxvl> 2) hug hime like this:
[19:58] * nxvl HUGS ScottK
[19:58] <nxvl> :D
[19:59] <nxvl> thanks to all for comming here
[19:59] <nxvl> if you have problems you can ask in #ubuntu-motu
[19:59] <nxvl> there is always good people around helping new contributors
[20:00] <nxvl> and i hope to see you around
[20:00] <nxvl> 14:01 < rZr> QUESTION: i would appreciate that LP can list rc bugs thats are in ubuntu and debian ,
is that planned ?
[20:00] <nxvl> rZr: take a look at ubuntuwire
[20:01] <nxvl> http://www.ubuntuwire.comMeetingLogs/openweekhardy/PackageMerging (last edited 2008-08-06 16:34:44 by localhost)