Compspec Spack
A compspec (Composition spec) is a specification and model for comparing things. Compspec spack is a plugin for extraction of spack subsystem metadata about software installed on a system (for a system or user spack install) that can be used for scheduling and other purposes. It output Json Graph Format version 2. To learn more:
- Compspec: the Python library that discovers and loads this plugin.
Usage
Install compspec and the plugin here:
pip install compspec
pip install compspec-spack
Then run an extraction with spack. You will want to provide the root to the spack install to describe:
compspec extract spack /opt/spack
To save to file:
compspec extract --outfile spack-subsystem.json spack /opt/spack
compspec-spack output
{
"graph": {
"nodes": {
"spack0": {
"metadata": {
"type": "spack",
"basename": "spack",
"name": "spack0",
"id": 0,
"uniq_id": 0,
"containment": {
"paths": "/spack0"
},
"size": 1,
"unit": "",
"rank": 0,
"exclusive": false
},
"label": "spack0"
},
"package1": {
"metadata": {
"type": "package",
"basename": "package",
"name": "package0",
"id": 1,
"uniq_id": 1,
"containment": {
"paths": "/spack0/package0"
},
"size": 1,
"unit": "",
"rank": 0,
"exclusive": false,
"attributes": {
"name": "perl",
"version": "5.38.0",
"platform": "linux",
"target": "skylake",
"os": "ubuntu22.04",
"vendor": "GenuineIntel",
"compiler_version": "11.4.0",
"compiler": "gcc"
}
},
...
"edges": [
{
"source": "package7721",
"target": "library7786",
"metadata": {
"name": {
"containment": "contains"
}
}
},
{
"source": "library7786",
"target": "package7721",
"metadata": {
"name": {
"containment": "in"
}
}
}
]
},
"metadata": {
"install_name": "compat-experiment",
"spack_root": "/home/vanessa/Desktop/Code/flux/spack/opt/spack"
}
Note that this output can get very large, even when we compress attributes for packages (nodes) at the level of the node! I do think we need to have libraries / binaries as separate nodes, hence why it gets so big.
Development
If you open the Development container in VSCode, you'll find spack on the path:
$ which spack
This allows us to easily develop and test the compatibility plugin. You can also just clone spack locally.
TODO
- Add python extraction example
- Testing gloob gloob gloob
License
HPCIC DevTools is distributed under the terms of the MIT license. All new contributions must be made under this license.
See LICENSE, COPYRIGHT, and NOTICE for details.
SPDX-License-Identifier: (MIT)
LLNL-CODE- 842614
Metadata
Release files for compspec-spack 0.0.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| compspec_spack-0.0.13.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| compspec_spack-0.0.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.7 kB
Release files / compspec_spack-0.0.13.tar.gz
| Download URL | compspec_spack-0.0.13.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11bef3e67cfb705aa553e95e784803341a2f8963ce733eb7cc1892b9ec15c7c1
|
|
BLAKE2b-256 checksum How to use checksums |
b711e363a8a5d695abe762f52fcf70a154b2f85915a566e70dc8ab28fcde7a9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.2
|
Release files / compspec_spack-0.0.13-py3-none-any.whl
| Download URL | compspec_spack-0.0.13-py3-none-any.whl |
|---|---|
| Size | 7.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac86bdd43a307f9ef914b17928458ff7f18857097bad8531ac3482c3a74863d2
|
|
BLAKE2b-256 checksum How to use checksums |
8610ce7bcf0ef6269a4340d046d958198b6d1ddafd9935760736cb9f348ccaf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.2
|