wiki:BuildSystemTheory

Version 2 (modified by zooko, at 2012-03-22T17:59:57Z) (diff)

remove darcs and tarball options from "Developer"

Build Types and Goals

Novice User

In this build type, a user downloads the tahoe source and everything is as automatic as possible. Internet access is assumed, and there is nothing wrong with using it.

Developer

In this build type, someone would like to make changes to tahoe, and gets source from git. TODO

Packaging System

In this build type, the build user is a packager of rpms/debs or pkgsrc. Rather than convenience, the concern is a stable and repeatable build that produces exactly the same output bits regardless of which prereqs were already installed. Using the network is not acceptable.

Within a packaging system, there are typically build phases, loosely derived from how autoconf works.

  • fetch: obtain the "distfiles" (tarballs published by e.g. the tahoe project)
  • patch: apply OS-local/pkgsrc-local changes (goal is to drive these to zero)
  • configure: search for dependencies and configure paths
  • build: compile sources to object form, run nroff to make man pages, etc.
  • install: place bits either in the running system or in a destdir, suitable for running
  • package: create a binary package from the installed bits