From 6dbc72795e1660b37aa3c6e3676b0bd4e21b0358 Mon Sep 17 00:00:00 2001 From: gdt <> Date: Sat, 27 Nov 2010 23:12:48 +0000 Subject: [PATCH] [Imported from Trac: page BuildSystemTheory, version 1] --- BuildSystemTheory.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 BuildSystemTheory.md diff --git a/BuildSystemTheory.md b/BuildSystemTheory.md new file mode 100644 index 0000000..99ac9bd --- /dev/null +++ b/BuildSystemTheory.md @@ -0,0 +1,22 @@ +# 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 darcs/git or from a tarball. 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