summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorNathan Hanford <8302958+nhanford@users.noreply.github.com>2021-09-09 01:48:30 -0700
committerGitHub <noreply@github.com>2021-09-09 01:48:30 -0700
commitd83f7110d56fe565907180616b92330803544936 (patch)
treec7a746465e74d3570c7f495b659c7b334722820a /README.md
parentedb1d75b1bb7a9981851cf74b29b997a7c9ebcf0 (diff)
downloadspack-d83f7110d56fe565907180616b92330803544936.tar.gz
spack-d83f7110d56fe565907180616b92330803544936.tar.bz2
spack-d83f7110d56fe565907180616b92330803544936.tar.xz
spack-d83f7110d56fe565907180616b92330803544936.zip
specs: move to new spec.json format with build provenance (#22845)
This is a major rework of Spack's core core `spec.yaml` metadata format. It moves from `spec.yaml` to `spec.json` for speed, and it changes the format in several ways. Specifically: 1. The spec format now has a `_meta` section with a version (now set to version `2`). This will simplify major changes like this one in the future. 2. The node list in spec dictionaries is no longer keyed by name. Instead, it is a list of records with no required key. The name, hash, etc. are fields in the dictionary records like any other. 3. Dependencies can be keyed by any hash (`hash`, `full_hash`, `build_hash`). 4. `build_spec` provenance from #20262 is included in the spec format. This means that, for spliced specs, we preserve the *full* provenance of how to build, and we can reproduce a spliced spec from the original builds that produced it. **NOTE**: Because we have switched the spec format, this PR changes Spack's hashing algorithm. This means that after this commit, Spack will think a lot of things need rebuilds. There are two major benefits this PR provides: * The switch to JSON format speeds up Spack significantly, as Python's builtin JSON implementation is orders of magnitude faster than YAML. * The new Spec format will soon allow us to represent DAGs with potentially multiple versions of the same dependency -- e.g., for build dependencies or for compilers-as-dependencies. This PR lays the necessary groundwork for those features. The old `spec.yaml` format continues to be supported, but is now considered a legacy format, and Spack will opportunistically convert these to the new `spec.json` format.
Diffstat (limited to 'README.md')
0 files changed, 0 insertions, 0 deletions