add CombinatorialSpecSet class for taking cross-products of Specs.

- add CombinatorialSpecSet in spack.util.spec_set module.
  - class is iterable and encaspulated YAML parsing and validation.

- Adjust YAML format to be more generic
  - YAML spec-set format now has a `matrix` section, which can contain
    multiple lists of specs, generated different ways. Including:
    - specs: a raw list of specs.
    - packages: a list of package names and versions
    - compilers: a list of compiler names and versions

  - All of the elements of `matrix` are dimensions for the build matrix;
    we take the cartesian product of these lists of specs to generate a
    build matrix.  This means we can add things like [^mpich, ^openmpi]
    to get builds with different MPI versions.  It also means we can
    multiply the build matrix out with lots of different parameters.

- Add a schema format for spec-sets
This commit is contained in:
Todd Gamblin
2018-06-26 03:28:49 -07:00
committed by Peter Scheibel
parent ad8036e5a2
commit be4b95ee30
5 changed files with 623 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
spec-set:
include: [ ape, atompaw, transset]
exclude: [binutils,tk]
packages:
ape:
versions: [2.2.1]
atompaw:
versions: [3.1.0.3, 4.0.0.13]
binutils:
versions: [2.20.1, 2.25, 2.23.2, 2.24, 2.27, 2.26]
tk:
versions: [8.6.5, 8.6.3]
transset:
versions: [1.0.1]
compilers:
gcc:
versions: [4.9, 4.8, 4.7]
clang:
versions: [3.5, 3.6]
dashboard: ["https://spack.io/cdash/submit.php?project=spack"]