Howto-ReleaseAKernelUpdate

Releasing Kernel Updates

The Kernel Team produces kernel packages every two weeks as part of the Stable Release Cadence. This document is intended to walk through how to pull together the source package for the start of the cadence.

For the purposes of this example we will be using the Lucid kernel git tree.

  1. Clone a new copy of the master, Lucid git repo.
     git clone zinc.canonical.com:/srv/kernel.ubuntu.com/git/ubuntu/ubuntu-lucid
  2. We will be working on two branches, the master branch and the master-next branch. Since we will be making changes to both branches setup our local repo appropriately.
     cd ubuntu-lucid
     git branch --track master-next origin/master-next
  3. The master branch should be at the point we last left it after producing the last release. We need to prepare the master branch for the start of a new release.
     git checkout master
     maint-startnewrelease
    • Note: For where to get the maint-startnewrelease script go to the See Also section of this wiki page.

  4. Look at the commits on the master-next branch and see if an ABI bump is necessary. If it is necessary you should be able to see a commit since the previous release release which bumps the ABI. If one is necessary, it's usually safest to do the ABI bump by hand rather than try to cherry-pick it from the master-next branch.
    1. Edit the changelog and increment the ABI number by one.
    2. Commit the changelog change.
         git add debian.master/changelog
         git commit -s -F debian/commit-templates/bumpabi
  5. Apply all the commits from the master-next branch since the previous release to the master branch.
  6. Do a test build. I recomend using the build-* scripts in the kteam-tools collection to do your test builds.

     build-prep -d lucid tangerine-amd64
     build-start -d lucid tangerine-amd64
     build-monitor -d lucid tangerine-amd64
  7. Install and boot the kernel you just built.
    1. Copy the version of the linux-image appropriate for your installation, and install it.
         scp tangerine.buildd:/home/<username>/lucid-amd64/linux-image-2.6.32-<new-abi>-generic_2.6.32-<new-abi>.<new-buildno>_amd64.deb .
         sudo dpkg -i linux-image-2.6.32-<new-abi>-generic_2.6.32-<new-abi>.<new-buildno>_amd64.deb
         sudo reboot
  8. Finish up the release.
    1. Insert the changes into the changelog
         fdr clean
         fdr insertchanges
    2. Create a release tracking bug and add the appropriate information to the changelog.
         create-release-tracker

      Note: For where to get the create-release-tracker script go to the See Also section of this wiki page.

    3. Change the series and pocket information in the changelog.
    4. Commit the changelog changes. Use the information on the first line of the debian.master/changelog.
         git add debian.master/changelog
         git ci -s -m "UBUNTU: Ubuntu-2.6.32-<new-abi>.<new-buildno>"
    5. Tag the repo with the release version string.
         git tag -s -m Ubuntu-2.6.32-<new-abi>.<new-buildno> Ubuntu-2.6.32-<new-abi>.<new-buildno>
    6. Verify that your local repository is in the proper shape.
         verify-release-ready
    7. Update the master-next branch
         git checkout master-next
         git reset --hard master
    8. Push the banches up to the master repository
         git push origin master Ubuntu-2.6.32-<new-abi>.<new-buildno>
         git push origin +master-next
  9. Create the source package.
     dpkg-buildpackage -S -rfakeroot -I.git -I.gitignore -i'\.git.*' -uc -us -v<version-in-updates>

See Also

  • Kteam Tools

    A repository of useful tools. This is where maint-rebase-branch comes from.

Kernel/Dev/Howto-ReleaseAKernelUpdate (last edited 2011-03-03 00:26:51 by brad-figg)