aboutsummaryrefslogtreecommitdiff
path: root/tools/build-automation/introduction.nw
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build-automation/introduction.nw')
-rw-r--r--tools/build-automation/introduction.nw82
1 files changed, 82 insertions, 0 deletions
diff --git a/tools/build-automation/introduction.nw b/tools/build-automation/introduction.nw
new file mode 100644
index 000000000000..9e51864ec4b7
--- /dev/null
+++ b/tools/build-automation/introduction.nw
@@ -0,0 +1,82 @@
+% $Id: introduction.nw 2532 2012-08-03 06:31:47Z jkoshy $
+%
+% The introduction to the build system.
+
+\part{The Build System}\label{part.intro}
+
+\chapter{Introduction}\label{chap.introduction}
+
+\section{Design Goals}
+
+\begin{goal}
+ The system should support build and testing our source tree, on the
+ target operating systems and machine architectures of our interest.
+\end{goal}
+
+This is the primary design goal for the tool, its
+\foreignphrase{raison d'\^etre}.
+
+\begin{goal}
+ The system should support building and testing our source tree on
+ non-native architectures (relative to the build host).
+\end{goal}
+
+Builds on non-native machine architectures and operating systems are
+would involve the use of virtual machines and CPU emulators. The
+actual build will be done using \tool{make} or equivalent utility.
+
+\begin{goal}
+ The system should be easy to use.
+\end{goal}
+
+Defining a build needs to be intuitive, and should utilize
+pre-existing tools where possible.
+
+The number of new notations and file formats that a user needs to
+learn should be kept to a minimum.
+
+Invoking a build should be simple. Sensible defaults should be used
+to minimize the need for user input at the time of invocation.
+
+\begin{goal}
+ The system should be able to run entirely on a relatively power and
+ resource constrained system such as a laptop, i.e., without needing
+ a beefy build box, or architecture-specific hardware.
+\end{goal}
+
+The ability to be able to work using a low power compute platform is a
+necessity in the project's current development environment
+
+The need to be frugal in resource consumption rules out the use of
+certain convenient but resource hungry implementation options.
+
+\begin{goal}
+ The system should work in ``offline'' mode, without requiring
+ external network access to function.
+\end{goal}
+
+The intent is to be able to work in ``standalone'' mode, without
+needing to contact a master server on the network.
+
+\begin{goal}
+ The system should allow a source tree that is in-development to be
+ built and tested, prior to a check-in.
+\end{goal}
+
+This system is primarily a development aid, and not primarily a tool
+for implementing continuous integration.
+
+\begin{goal}
+ The system should be easy to deploy, with the minimum of software
+ dependencies.
+\end{goal}
+
+The fewer dependencies on third party packages, the easier it is to
+support target operating systems.
+
+\begin{goal}
+ The utility should be easy to port to a new operating system.
+\end{goal}
+
+This goal is meant to reduce the effort needed to support new
+operating systems.