Diff for "BuildBranchToArchive"

Not logged in - Log In / Register

Differences between revisions 1 and 2
Revision 1 as of 2009-08-07 16:19:43
Size: 3040
Editor: jml
Comment:
Revision 2 as of 2009-08-10 13:08:35
Size: 3039
Editor: barry
Comment:
Deletions are marked like this. Additions are marked like this.
Line 57: Line 57:
 * Not sure how to make surce that rev_id, branch_url & requester are passed all of the way through.  * Not sure how to make sure that rev_id, branch_url & requester are passed all of the way through.

Why

Ubuntu is beginning to manage its source packages as Bazaar branches, as part of the DistributedDevelopment project.

One incredibly important activity for source packages is building them into binary packages that can be downloaded and installed. This spec explains how Launchpad can make this a wonderful experience. In particular, this is important for the DailyBuilds project.

What

A single button that takes a branch and builds it into a binary package in an archive of the user's choice.

Implementation

  1. Given an IBranch and an IArchive by the user, we create a branch job.

  2. The branch job has the following information:
    • branch

    • requester

    • archive

    • rev_id -- this is either provided by the user or is the rev_id of the branch's tip at the time of request.

For any given build-to-archive branch job, we:

  1. Extract the suite and source package name from the Changelog in the branch. XXX - What if this fails? -- JonathanLange <<Date(2009-08-07T16:19:43Z)>>

  2. Based on this information, we fire off a builder, providing it with
    • A branch URL
    • A chroot URL
    • The requester
    • The rev_id
  3. The builder then
    1. Pulls the given rev_id of the branch
    2. Grabs the chroot, unpacks it, etc.
    3. Does magic to build the source package (based on bzr builddeb)
    4. Produces:
      • The changes file
      • The dsc file
      • The tar.gz
      • The diff
      • Some information including the requster, branch_url & rev_id waves hands.

  4. The dispatcher then pulls this data down & dismantles the builder

  5. The dispatcher uploads that information to the relevant archive
  6. Done! Soyuz takes care of the rest.

Steps

  • Investigate buildd code
  • Change buildd code to be much more generic, and thus allow building of source package branches
  • Confirm the schema changes for the job table, if any required
  • Spec out the user interface for the build button
  • Write the dispatcher
  • Write modified builddeb worker

Notes

  • Our draft diagram refers to {name: url} and a name field in the builder. We don't know what this means.

  • Only applicable to public branches at the moment, due to the sandbox lacking any way to gain authenticated access to bazaar.launchpad.net.

  • At no point is anything in the process signed with anyone's GPG key. This might be a problem.
  • There's a potential conflict between the distroseries and sourcepackagename on the branch and the information in the debian/ metadata.

  • It might be nice to sign the .dsc with a well-known key representing this Launchpad system.
  • Not sure how to make sure that rev_id, branch_url & requester are passed all of the way through.

  • My notes include "API for buildding" in steps -- don't know what this means.
  • My notes include "Start linking table discussion" in steps -- don't know what this means

BuildBranchToArchive (last edited 2010-02-10 20:29:25 by brianfromme)