see also wiki:Packaging = 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