IntrepidLpiaKernelMaintenance

DOs

  • Use the sauce-patch commit-template (debian/commit-templates/sauce-patch) for every commit that should be retained upon a rebase
  • Use the rebase-intrepid script (debian/scripts/misc/rebase-intrepid) to rebase the tree on top of the Ubuntu Intrepid git tree.
    • Report any bugs in the script, it will be used for maintenance of other git trees.
  • Rebase on the Ubuntu Intrepid kernel tree only when it has been tagged for upload
    • This is usually signified by a commit with a message of the form Ubuntu-2.6.26-X.YZ and a corresponding tag of the same name
    • Rebasing at such logical points ensures that the kernel has already been test compiled and most pre-upload problems have been resolved.
  • Since this tree is expected to be rebased only a few times during the development cycle, it will have only a few un-controlled ABI bumps
    • It is expected that every rebase will yield an ABI bump, but where the Ubuntu kernel might have jumped 3 ABIs, this kernel will only jump 1 version.

DON'Ts

  • Refuse to rebase on the Ubuntu Intrepid kernel at all.
    • This will make your patchset hard to merge into the main tree toward the end of the development cycle if we choose to.

Workflow

Environment

  1. Setup your git environment. e.g. Add these lines (appropriately modified) to your .bashrc

        export GIT_AUTHOR_NAME="Amit Kucheria";
        export GIT_AUTHOR_EMAIL="amit.kucheria@ubuntu.com";
        export GIT_COMMITTER_NAME="Amit Kucheria";
        export GIT_COMMITTER_EMAIL="amit.kucheria@ubuntu.com"; 
  2. Clone the git tree from zinc

        git clone git://kernel.ubuntu.com/amitk/ubuntu-intrepid-lpia.git 
  3. You need an lpia chroot to work with the kernel. Creating one is covered in DebootstrapChroot.

Rebasing

  1. Enter the kernel directory and run the rebase script. This should download the latest version of the Ubuntu kernel tree, export your patches, and rebase your patchset on top of the Ubuntu kernel commits.

        debian/scripts/misc/rebase-intrepid . 
    1. If everything goes smoothly (no conflicts during rebase), you will be left with your patches rebased on an updated Ubuntu Intrepid kernel in a new branch auto-tmp-remote

    2. There are instructions on how to make this your master branch if it passes your inspection
    3. If the rebase fails, fix the offending patch(es) and carry these changes to your master branch as above

New patches

  1. When committing a new patch, use the following commands

        git add <file names>
        git commit -s -F debian/commit-templates/sauce-patch -e 
    1. This ensures that your new patch is marked SAUCE. This allows the rebase script to treat it correctly.

Config changes

  1. To change configs, I find it convenient to use the prepare target in the build system as follows

    1. First merge the split configs

          cd debian/configs/lpia
          for cfg in config.*; do
            cat config >> $cfg
          done
          rm config
          cd ../../.. 
    2. Make changes to the config and copy it over

          fakeroot debian/rules prepare-lpia
          make O=debian/build/build-lpia/ menuconfig   (Make config changes as required)
          cp debian/build/build-lpia/.config debian/configs/lpia/config.lpia 
    3. Run splitconfig

          fakeroot debian/rules updateconfigs 
    4. Commit the config changes as a SAUCE patch

Uploads

  1. For doing ABI bumps and the actual uploads, please read the KernelMaintenanceStarter and KernelMaintenance wiki pages.

Tips

  • gitk is a useful tool to visualize the commit history.

References