Building an object
Problem
How does a user specify something to be built?
We would like to simply specify the resulting object and the ComputePod system will then determine what needs to be built.
There are a number of phases in building an object:
-
Dependency Analysis (building an internal dependency graph (which because of ConTeXt is cyclic)).
-
Execution of the build
-
we plan to use a tup style build execution. (see: Build System Rules and Algorithms (PDF), see also sake))
Solution
To specify something to be built, the user will specify a high-level (YAML) project description file as well as a "target" described in the description file.
These project description files arelocated in the top-level of the project directory hierarchy.
A user specifies three things:
-
A project (a directory inside the user's ComputePod assigned area)
-
A project description file (inside the top-level directory of the project).
-
A project target (specified inside the project description).
Questions
-
How does the system know which workers can add to the dependency analysis:
-
if there are multiple (possible) ways to build the same object?
-
if there are no "bridges" between types of artifacts (such as the ConTeXt documents which "create" source code)?
-
A: All of this high-level detail should be specified in the project description file.