Merging

Differences between revisions 4 and 5
Revision 4 as of 2006-01-04 00:45:01
Size: 12141
Editor: d213-103-255-197
Comment:
Revision 5 as of 2006-01-06 01:26:04
Size: 14787
Editor: raphink
Comment:
Deletions are marked like this. Additions are marked like this.
Line 54: Line 54:
The easiest way is just to use the [http://tiber.tauware.de/~shermann/motu-tools/ motu-tools]. But you can do it manually.
Line 56: Line 55:
 * Before you work on one merge, file a bug against the source-package product in malone.
  * BUG Title Format: {{{Title: <sourcepackage-name>: merge new debian version}}}
  * BUG Description Format: {{{MoM: <url to scotts merged package directory>
=== The easy way, using MOTU-tools ===

The easiest way to merge packages is to use the [http://tiber.tauware.de/~shermann/motu-tools/ motu-tools].
You can use bazaar-ng to get these tools:
 * Install the bzr package
 * Type {{{bzr branch http://tiber.tauware.de/~shermann/motu-tools/}}}

You should find a README file in the motu-tools directory. It explains step-by-step how to use motu-tools during the merging process.


=== General tasks to be done ===

There are several ways of merging packages. The one described here is merely a suggestion, but contains the mandatory steps.


==== File a bug ====

Before you work on one merge, file a bug in [http://launchpad.net/malone Malone] against the source-package product:
 * BUG Title Format: {{{<sourcepackage-name>: merge new debian version}}}
 * BUG Description Format: {{{MoM: <url to scotts merged package directory>
Line 60: Line 76:
 * Assign the bug to "motumergers" (find the right assignee via Choose link, don't use the tiber.tauware.de address)
 * Compare the Debian and Ubuntu versions. If needed, prepare a debdiff and add it to the bug report. Don't forget to state against with package (Debian or Ubuntu) you made the diff. If a sync is possible, tell so in the bug report.
  * You can fetch the <package>.diff.gz, <package>.orig.tar.gz, and <package>.dsc files from http://people.ubuntu.com/~scott/ongoing-merge/<package>/ and use dpkg-source -x <package>.dsc to extract the source
  * You can try apt-get build-dep <package> first, then dpkg-buildpackage or debuild
  * Better yet, use pbuilder to ensure your build-deps are clean.
  * See also ["ReviewingTips"].
 * Update the status depending on the work you did.
  * If you work on it, it's NEW
  * If you checked, if it's a sync or a merge and you think it's ready to upload (PendingUpload)
 * Assign the bug to motureviewers.
 * Then try to make your change uploaded :
  * If you are a MOTU Hopeful, you could ask a MOTU to review your merge or your sync. But you don't need to. Eventually, a MOTU will review bugs assigned to motureviewers.
  * If you are a MOTU:
   * Review and upload merges assigned to motureviewers
   * Review and request syncs from elmo
 * Check the Build Daemons on http://people.ubuntu.com/~lamont/buildLogs/ or http://people.ubuntu.com/~lamont/buildLogs/byDate/today.html and if it was build on all archs please mark the bug as fixed

Assign the bug to "motumergers" (find the right assignee via {{{Choose link}}}, don't use the tiber.tauware.de address)

If you are using the MOTU-tools, you can use {{{./lpbugs.py -n <sourcepackage>}}} to file this bug. Note that lpbugs.py won't assign the bug to motumergers, so you'll need to to it manually either now or when you're done preparing the merge.


==== Get the files you need ====

The first thing to do is to get the files:
  * Fetch the <package>.diff.gz, <package>.orig.tar.gz, and <package>.dsc files from http://people.ubuntu.com/~scott/ongoing-merge/<package>/ and use dpkg-source -x <package>.dsc to extract the source
 * Get the Debian package source: {{{mdt dist-apt-get sid source <source-packagename>}}}


==== Get to work ====

 * Check the package_ubuntu.debdiff file to check what has been modified in Ubuntu in previous versions and why.
 * Check if the changes made in Ubuntu have been merged in Debian. If it is not the case, try to find out why, and if these patches are still necessary.
 * Try to build the Debian package souce in Dapper, preferably using a PBuilder.

If the Ubuntu patches can be dropped, you can use lpbugs to update the bug: {{{./lpbugs.py -u -b <bugid> -s}}}


===== Case of a sync =====

If the patches are not necessary anymore and the Debian package source builds, installs and works fine in Dapper, then it's a sync.

In this case,
 * Update the bug status to PendingUpload.
 * Ping elmo to sync the package (or ask a MOTU to do so).


===== Case of a merge =====

Update the bug on Malone to tell you're working on the merge.
If you're using the MOTU-tools, use {{{./lpbugs.py -u -b <bugid> -p }}}.

So there are changes to do on the Debian package source?
Look closely at the patches and diffs provided by MoM and try to make the minimal change to set the package right. Work directly on the Debian package source.

Once you're done patching the package, don't forget to update debian/changelog. You have several options to do so. An easy one is to use the debian/changelog created by MoM from the packages extracted using the merged source (from the dsc and diff.gz fetched from scotts directory):
 * Extract the MoM package source using {{{dpkg-source -x mergedpackage.dsc}}} if it's not done yet.
 * Copy debian/changelog from this source to the Debian package source.
 * Use dch to update the file, or modify it manually. Add as many infos as necessary to make your changes fully understandable. The new package version should be -Xubuntu1, where X is the Debian version on which the merge is done.

After you're done with this, rebuild the package with {{{debuild -S -sa}}}, and check if it builds fine. Otherwise, keep working on it ;)

Generate a debdiff between the Debian dsc and your modified one. Attach this debdiff to the bug report on Malone.
Please check [:MOTUReviewers] about how to submit debdiffs.

See also ["ReviewingTips"].
Update the status of the bug depending on the work you did.


===== Get your work uploaded =====

The next step is to try to make your change uploaded :
 * If you are a MOTU Hopeful, you could ask a MOTU to review your merge or your sync. But you don't need to. Eventually, a MOTU will review bugs assigned to motureviewers.
 * If you are a MOTU:
  * Review and upload merges assigned to motureviewers
  * Review and request syncs from elmo


Check the Build Daemons on http://people.ubuntu.com/~lamont/buildLogs/ or http://people.ubuntu.com/~lamont/buildLogs/byDate/today.html.


Once the package is built on all archs please mark the bug as fixed.
If you're using the MOTU-tools, use {{{./lpbugs.py -c -b <bugid>}}}
Line 77: Line 144:
Please check [:MOTUReviewers] about how to submit debdiffs.

This page might need some cleanup / reorganisation. Don't hesitate !

Merging and Syncing from Debian: Introduction

Until UpstreamVersionFreeze, Debian packages are automatically synced to Ubuntu if the Ubuntu has no local changes. If the Ubuntu version has local changes (a -ubuntuX version), the package shows up on [http://people.ubuntu.com/~scott/ongoing-merge/ Merge-o-Matic (MoM)] (see [http://people.ubuntu.com/~scott/ongoing-merge/README README]) and manual action has to be taken.

  • If all Ubuntu-specific changes can be overriden (because they were integrated into Debian, or because they are no longer necessary), the package can be synced: the Debian package will simply get into Ubuntu.

  • If some Ubuntu-specific changes have to be kept, the package has to be merged.

Read also ["Merging"].

Useful tools

Some reasons for divergence between Debian and Ubuntu

See also [http://lists.ubuntu.com/archives/ubuntu-motu/2005-December/000080.html this thread].

During merging for dapper, we want to try and clean up as many packages as possible, this includes various things including getting patches upstream and fixing mistakes we made in the past

Build System Changes

During breezy, alot of people decided to put dpatch on top of a package, and then use that for source code patches.

The decision to do this has been reversed, for three main reasons

  • It is a generally accepted debian thing, not to mess with the maintainers build systme
  • It makes our patch deltas bigger, which means bigger hassles later merging our changes with debian
  • It annoys some debian maintainers, and we want to try and keep in with them as much as possible.

As such, packages which have integrated dpatch should probably be reveresed, see the MOTU/HowToPatch page for information on how source patches should be applied

If you are not sure, ASK! The IRC channel and Mailing List are there to be used

Check for obsolete patches, send patches upstream

During breezy, we have applied patches to packages for various things, these include (but are not limited to, feel free to expand this list)

  • GCC4
    • Alot of patches were made to make packages compile with GCC4, during the dapper cycle (in fact now), debian is undergoing the GCC4 transition itself, so these changes should become largely redundant and either already be in debian, be done differently in debian or fixed in a new upstream version
    • If they are not yet fixed, FILE A BUG! http://bugs.debian.org/ and include the GCC4 patch, it may be more appropriate to comment on an existing bug

  • aalib - This was transitioned in debian too, so hopefully any aalib changes (aalib1-dev -> libaa-dev etc) can be dropped

  • MOTUGLUTransition
    • Unfortunately, debian is not ready for this transition! And I do not know if they will be within the dapper timeframe, so, any GL/GLU build-deps will need to stay patched, check out the MOTUGLUTransition page for info. Note if you find a package that is not transitioned when merging (e.g. it build-depends on xlibmesa*), please fix it. Do not send these patches up to debian yet.
  • Python2.4
    • We currently have patched many things to use the default version of python as 2.4, fortunately debian should be undergoing this transition but it has not yet, so we will need to keep this patches. They probably don't need to go in bug reports.
  • Desktop Files
    • We also have patches for desktop files, it has been suggested by seb128 that we send .desktop files UPSTREAM TO THE SOURCE! (not debian), if upstream is unresponsive, try debian.

Try to drop the need to merge all together

Hopefully, after going through all this, you will be left with no changes to merge. GREAT! This means we could just request the package be synced directly from debian.

If you still need to merge

Then do so, as appropriate. Don't forget, File patches in the debian or upstream bug trackign system, IF APPROPRIATE, the above transition list should be a starting guide on whether or not it is suitable. If you are unsure ask someone! People are here to help you

How to work on merges and syncs

The easy way, using MOTU-tools

The easiest way to merge packages is to use the [http://tiber.tauware.de/~shermann/motu-tools/ motu-tools]. You can use bazaar-ng to get these tools:

  • Install the bzr package
  • Type bzr branch http://tiber.tauware.de/~shermann/motu-tools/

You should find a README file in the motu-tools directory. It explains step-by-step how to use motu-tools during the merging process.

General tasks to be done

There are several ways of merging packages. The one described here is merely a suggestion, but contains the mandatory steps.

File a bug

Before you work on one merge, file a bug in [http://launchpad.net/malone Malone] against the source-package product:

  • BUG Title Format: <sourcepackage-name>: merge new debian version

  • BUG Description Format: {{{MoM: <url to scotts merged package directory>

MOTU: <your name>}}} The url to scotts merged package directory has the form of: http://people.ubuntu.com/~scott/ongoing-merge/<source-packagename>

Assign the bug to "motumergers" (find the right assignee via Choose link, don't use the tiber.tauware.de address)

If you are using the MOTU-tools, you can use ./lpbugs.py -n <sourcepackage> to file this bug. Note that lpbugs.py won't assign the bug to motumergers, so you'll need to to it manually either now or when you're done preparing the merge.

Get the files you need

The first thing to do is to get the files:

  • Get the Debian package source: mdt dist-apt-get sid source <source-packagename>

Get to work

  • Check the package_ubuntu.debdiff file to check what has been modified in Ubuntu in previous versions and why.
  • Check if the changes made in Ubuntu have been merged in Debian. If it is not the case, try to find out why, and if these patches are still necessary.
  • Try to build the Debian package souce in Dapper, preferably using a PBuilder.

If the Ubuntu patches can be dropped, you can use lpbugs to update the bug: ./lpbugs.py -u -b <bugid> -s

Case of a sync

If the patches are not necessary anymore and the Debian package source builds, installs and works fine in Dapper, then it's a sync.

In this case,

  • Update the bug status to PendingUpload.

  • Ping elmo to sync the package (or ask a MOTU to do so).

Case of a merge

Update the bug on Malone to tell you're working on the merge. If you're using the MOTU-tools, use ./lpbugs.py -u -b <bugid> -p .

So there are changes to do on the Debian package source? Look closely at the patches and diffs provided by MoM and try to make the minimal change to set the package right. Work directly on the Debian package source.

Once you're done patching the package, don't forget to update debian/changelog. You have several options to do so. An easy one is to use the debian/changelog created by MoM from the packages extracted using the merged source (from the dsc and diff.gz fetched from scotts directory):

  • Extract the MoM package source using dpkg-source -x mergedpackage.dsc if it's not done yet.

  • Copy debian/changelog from this source to the Debian package source.
  • Use dch to update the file, or modify it manually. Add as many infos as necessary to make your changes fully understandable. The new package version should be -Xubuntu1, where X is the Debian version on which the merge is done.

After you're done with this, rebuild the package with debuild -S -sa, and check if it builds fine. Otherwise, keep working on it Wink ;)

Generate a debdiff between the Debian dsc and your modified one. Attach this debdiff to the bug report on Malone. Please check [:MOTUReviewers] about how to submit debdiffs.

See also ["ReviewingTips"]. Update the status of the bug depending on the work you did.

Get your work uploaded

The next step is to try to make your change uploaded :

  • If you are a MOTU Hopeful, you could ask a MOTU to review your merge or your sync. But you don't need to. Eventually, a MOTU will review bugs assigned to motureviewers.
  • If you are a MOTU:
    • Review and upload merges assigned to motureviewers
    • Review and request syncs from elmo

Check the Build Daemons on http://people.ubuntu.com/~lamont/buildLogs/ or http://people.ubuntu.com/~lamont/buildLogs/byDate/today.html.

Once the package is built on all archs please mark the bug as fixed. If you're using the MOTU-tools, use ./lpbugs.py -c -b <bugid>

How To Track The Status Of Merges

Get subscribed to universe-bugs@lists.ubuntu.com : ([http://lists.ubuntu.com/mailman/listinfo/universe-bugs Mailman Interface to the list])

For Main repository merges

bugs list for the main repository are on the [https://bugzilla.ubuntu.com/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&component=UNKNOWN&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&bug_status=UPSTREAM&bug_status=PENDINGUPLOAD&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=product&type0-0-0=substring&value0-0-0=merging&field0-0-1=component&type0-0-1=substring&value0-0-1=merging&field0-0-2=short_desc&type0-0-2=substring&value0-0-2=merging&field0-0-3=status_whiteboard&type0-0-3=substring&value0-0-3=merging Ubuntu bugzilla].

Merges List

Those lists shouldn't be used anymore:

  • As a MOTU Hopeful, assign your merge bug to the motureviewers launchpad team.
  • As a MOTU, review and upload bugs assigned to the motureviewers launchpad team.

Finished Merges

Your Name

Malone Bug Link to the Merge Bug

StephanHermann

[https://launchpad.net/malone/bugs/4020 amule], [https://launchpad.net/malone/bugs/4015 achilles],[https://launchpad.net/malone/bugs/4014 alleyoop],[https://launchpad.net/malone/bugs/4012 ace], [https://launchpad.net/malone/bugs/4053 alsamixergui], [https://launchpad.net/malone/bugs/4051 afterstep],[https://launchpad.net/malone/bugs/4052 alexandria],BR[https://launchpad.net/malone/bugs/4058 apt-proxy],[https://launchpad.net/malone/bugs/4057 apt-move],[https://launchpad.net/malone/bugs/4056 apoo],[https://launchpad.net/malone/bugs/4062 apt-watch], [https://launchpad.net/malone/bugs/4063 ardour], [https://launchpad.net/malone/bugs/4064 aria]

LoicPefferkorn

[https://launchpad.net/malone/4109 kboincspy], [https://launchpad.net/malone/4650 kodos]

DanielTChen

alsaplayer, zhcon, zapping, yappy, xwit, xt, xpuzzles, xonix, xmpi, xfonts-jmk, mftrace, xdiskusage, xcruise, xconq, xclass, xchm, xcdroast, xawtv, wmnet, wings3d, wing, webmin-optional, wajig, vips

PatrickDavies

[http://revu.tauware.de/details.py?upid=1116 kxdocker] [http://lists.ubuntu.com/archives/dapper-changes/2005-December/002824.html Uploaded by Jonathan Riddell]

ZakElep

[https://launchpad.net/malone/bugs/4085 boa-constructor], [https://launchpad.net/malone/bugs/4088 centericq], [https://launchpad.net/malone/bugs/4089 gpsd], [https://launchpad.net/malone/bugs/4090 gtkpbbuttons], [https://launchpad.net/malone/bugs/4634 hardware-monitor], [https://launchpad.net/malone/bugs/4092 ion3], [https://launchpad.net/malone/bugs/4632 kexi], [https://launchpad.net/malone/bugs/4633 libccaudio], [https://launchpad.net/malone/bugs/4093 libcommoncpp2], [https://launchpad.net/malone/bugs/4094 linphone], [https://launchpad.net/malone/bugs/4635 logilab-common], [https://launchpad.net/malone/bugs/4095 lostirc], [https://launchpad.net/malone/bugs/4105 mpd], [https://launchpad.net/malone/bugs/4106 netatalk], [https://launchpad.net/malone/bugs/4631 nip2], [https://launchpad.net/malone/bugs/4107 nss-mdns] [https://launchpad.net/malone/bugs/4114 pdftk], [https://launchpad.net/malone/bugs/4115 piuparts], [https://launchpad.net/malone/bugs/4764 eris], [https://launchpad.net/malone/bugs/4765 eyed3], [https://launchpad.net/malone/bugs/4766 francine], [https://launchpad.net/malone/bugs/4768 ion2], [https://launchpad.net/malone/bugs/4769 ipkungfu], [https://launchpad.net/malone/bugs/5112 lessdisks], [https://launchpad.net/malone/bugs/5113 libapt-pkg-perl], [https://launchpad.net/malone/bugs/5114 lucene], [https://launchpad.net/malone/bugs/5115 luxman], [https://launchpad.net/malone/bugs/5116 mas], [https://launchpad.net/malone/bugs/5117 matrem], [https://launchpad.net/malone/bugs/5118 moosic], [https://launchpad.net/malone/bugs/5119 muttprint]... See my WikiPage for the complete list Wink ;)

Merges to Upload (for MOTU Hopefuls)

Your Name

Malone Bug Link to the Merge Bug

JordanMantha

[https://launchpad.net/distros/ubuntu/+source/xchat-systray/+bug/4081 xchat-systray] (sync), [https://launchpad.net/distros/ubuntu/+source/tex-guy/+bug/4175 tex-guy] (merge), [https://launchpad.net/malone/bugs/4722 gpib] (sync), [https://launchpad.net/malone/bugs/4725 mayavi] (merge), [https://launchpad.net/malone/bugs/4745 rubber] (sync)

MingHua

[https://launchpad.net/distros/ubuntu/+source/grace/+bug/4403 grace], [https://launchpad.net/distros/ubuntu/+source/libmath++/+bug/4087 libmath++]

Gauvain

[https://launchpad.net/distros/ubuntu/+source/numlockx/+bug/4639 numlockx], [https://launchpad.net/distros/ubuntu/+source/numlockx/+bug/4644 qjackctl]

LukeYelavich

[https://launchpad.net/distros/ubuntu/+source/partimage/+bug/5391 spiralsynthmodular], [https://launchpad.net/distros/ubuntu/+source/libibtk/+bug/5414 libibtk], [https://launchpad.net/distros/ubuntu/+source/ecasound2.2/+bug/5561 ecasound2.2]


["CategoryMOTU"]

MOTU/Merging (last edited 2008-08-06 16:28:41 by localhost)