BuildBranchToArchive

Not logged in - Log In / Register

Revision 10 as of 2010-01-27 11:13:43

Clear message

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.

Requirements

User Interface

See the build-branch-to-archive UI design page.

Current db-devel schema

The current db-devel schema

Dia version

High-Level Implementation and Work-Flow

We will also need assistance from IS to create an appropriate chroot for the builders that will run the builddeb instead of sbuild. [ACTION] Ask IS about the requirements for this from their security PoV. [ACTION] Confirm with James Westby exactly what needs to happen to convert the branch. Currently it's bzr builddeb but it needs to be something that does not connect to the internet to get more dependencies.

Considerations

Implementation

XXX Julian 2009-10-14 I think this section is premature.

  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

Notes

Questions