1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Package definition returned by package
// - Version
// - Compiler (what about python, rust, R, etc.?)
// - Just a package everything depends on?
// - Conflicts with 'compiler'?
//
// Package returns a list of commands to run?
//
// Importable modules for predefiend packages?
// - make
// - CMake
// - Python
// - Cargo
// Two phase build process:
// 1. Planning Packages process their options and return a planning object of
// some sort, which details what options are/are not available.
//
// For example, the object may specify that a version >= 3.14 is required
// and that OpenBLAS, OpenMPI and LLVM are required for the program to
// build
// 2. Building Packages provide the build steps necessary to compile based on
// the planned.
//
// For example, a package could return a set of CMake commands to compile
// the program with BLAS and MPI support.
// pub mod spec;
pub type WipRegistry<'a> = Registry;
pub type BuiltRegistry<'a> =
Registry;