Merging

Differences between revisions 1 and 2
Revision 1 as of 2007-11-20 13:34:44
Size: 560
Editor: i59F72C00
Comment:
Revision 2 as of 2007-11-20 14:12:29
Size: 4138
Editor: i59F72C00
Comment:
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
== Background & History ==
Merging and Syncing are operations required to keep the packages in the Universe and Multiverse repositories in line with the latest software in the Debian repositories. Debian packages that need to be changed (patched etc) before inclusion in the Ubuntu repositories are said to require "merging" while packages that can be included in Ubuntu without changes to the corresponding Debian package are said to require "syncing".
The need for changes in a package prior to inclusion in Ubuntu's Universe repository arise from differences in policy, bug-fixes, and branding that are local to Ubuntu.

== The Process of Merging/Syncing ==
Currently Scott's excellent Merge-O-Matic tool (rather the output from that tool) at http://merges.ubuntu.com/ is used to lay the groundwork for the process. On http://merges.ubuntu.com/universe.html, you'll see a pretty lengthy list of pending merges. Near the leading vertical ("top") of the page, you'll see three links, one for outstanding merges, another for new, and another for updated.

 * 'Outstanding' merges are those that have not been tackled in Ubuntu at all across any release.
 * 'New' merges means that no one has tackled these merges yet in the current development cycle.
 * 'Updated' merges means that newer Debian versions are available for merges that have already been done in the current development cycle.

The above lists include all the packages that contain Ubuntu changes from their Debian counterparts at the time of the snapshot. Several packages that have previously been imported from Debian to Ubuntu are automatically synced at specific times in each release cycle. Those automatically "synced" packages are not include in the list of pending merges.

=== Outline of Algorithm for Tackling Merges ===
 1. Grab the Merge-O-Matic output. You can do this using [http://merges.ubuntu.com/grab-merge.sh grab-merge.sh].
 1. Read the Merge-O-Matic output (either in the extracted source or via REPORT on the website).
 1. Inspect the conflicts in each file listed in the M-O-M output, and follow this subroutine:
  1. Prefer the newer Debian changes when possible. This means we discard Ubuntu changes until we have to use one. [[BR]] /!\ When packages split and introduce conflicts/replaces statements, we often cannot safely discard the Ubuntu version number, because the new conflicts statement may refer to the Debian version number, but in Ubuntu it needs to be the Ubuntu number.
  1. If newer Debian changes were made that don't affect the old Ubuntu source package, then extract the newer pristine Debian source package and check if those Debian changes allow the Ubuntu merges to be dropped from the merged source.
  1. If those Debian changes allow the Ubuntu merges to be dropped, then make the modifications in the merged source package.
  1. Continue this step for all files listed in the M-O-M output.
 1. Sanity-check the package. For instance, you don't want hardcoded paths for older software (that you just dropped) sitting in the source.
 1. Change the debian/changelog to note your work. Note which Ubuntu deltas are still valid and why invalid ones were dropped. Change the M-O-M e-mail address and name to yours.
 1. Generate a new merged source package using the merge-buildpackage script. Remember to pass any necessary options like " -rfakeroot -k<your_gpg_key_id> ".
 1. Sanity-build the source package in pbuilder, check the contents of the created debs (using dpkg-deb -c foo.deb), and alert a MOTU to your merged source package.

Include(UbuntuDevelopment/Header/Menu)

__          __  _____   _____  
\ \        / / |_   _| |  __ \ 
 \ \  /\  / /    | |   | |__) |
  \ \/  \/ /     | |   |  ___/ 
   \  /\  /     _| |_  | |     
    \/  \/     |_____| |_|     

Background & History

Merging and Syncing are operations required to keep the packages in the Universe and Multiverse repositories in line with the latest software in the Debian repositories. Debian packages that need to be changed (patched etc) before inclusion in the Ubuntu repositories are said to require "merging" while packages that can be included in Ubuntu without changes to the corresponding Debian package are said to require "syncing". The need for changes in a package prior to inclusion in Ubuntu's Universe repository arise from differences in policy, bug-fixes, and branding that are local to Ubuntu.

The Process of Merging/Syncing

Currently Scott's excellent Merge-O-Matic tool (rather the output from that tool) at http://merges.ubuntu.com/ is used to lay the groundwork for the process. On http://merges.ubuntu.com/universe.html, you'll see a pretty lengthy list of pending merges. Near the leading vertical ("top") of the page, you'll see three links, one for outstanding merges, another for new, and another for updated.

  • 'Outstanding' merges are those that have not been tackled in Ubuntu at all across any release.
  • 'New' merges means that no one has tackled these merges yet in the current development cycle.
  • 'Updated' merges means that newer Debian versions are available for merges that have already been done in the current development cycle.

The above lists include all the packages that contain Ubuntu changes from their Debian counterparts at the time of the snapshot. Several packages that have previously been imported from Debian to Ubuntu are automatically synced at specific times in each release cycle. Those automatically "synced" packages are not include in the list of pending merges.

Outline of Algorithm for Tackling Merges

  1. Grab the Merge-O-Matic output. You can do this using [http://merges.ubuntu.com/grab-merge.sh grab-merge.sh].

  2. Read the Merge-O-Matic output (either in the extracted source or via REPORT on the website).
  3. Inspect the conflicts in each file listed in the M-O-M output, and follow this subroutine:
    1. Prefer the newer Debian changes when possible. This means we discard Ubuntu changes until we have to use one. BR Warning /!\ When packages split and introduce conflicts/replaces statements, we often cannot safely discard the Ubuntu version number, because the new conflicts statement may refer to the Debian version number, but in Ubuntu it needs to be the Ubuntu number.

    2. If newer Debian changes were made that don't affect the old Ubuntu source package, then extract the newer pristine Debian source package and check if those Debian changes allow the Ubuntu merges to be dropped from the merged source.
    3. If those Debian changes allow the Ubuntu merges to be dropped, then make the modifications in the merged source package.
    4. Continue this step for all files listed in the M-O-M output.
  4. Sanity-check the package. For instance, you don't want hardcoded paths for older software (that you just dropped) sitting in the source.
  5. Change the debian/changelog to note your work. Note which Ubuntu deltas are still valid and why invalid ones were dropped. Change the M-O-M e-mail address and name to yours.
  6. Generate a new merged source package using the merge-buildpackage script. Remember to pass any necessary options like " -rfakeroot -k<your_gpg_key_id> ".

  7. Sanity-build the source package in pbuilder, check the contents of the created debs (using dpkg-deb -c foo.deb), and alert a MOTU to your merged source package.


Go back to [:UbuntuDevelopment].BR CategoryProcessBRCategoryUbuntuDevelopment

UbuntuDevelopment/Merging (last edited 2022-09-22 14:36:38 by eslerm)