# Compspec Spack
<p align="center">
<img height="300" src="https://raw.githubusercontent.com/compspec/spec/main/img/compspec-circle.png">
</p>
[![PyPI version](https://badge.fury.io/py/compspec-spack.svg)](https://badge.fury.io/py/compspec-spack)
A compspec (Composition spec) is a specification and model for comparing things. Compspec spack is
a plugin for extraction of [spack](https://github.com/spack/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](https://github.com/compspec/compspec): the Python library that discovers and loads this plugin.
## Usage
Install compspec and the plugin here:
```bash
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:
```bash
compspec extract spack /path/to/spack
```
To save to file:
```bash
compspec extract --outfile spack-subsystem.json spack /path/to/spack
```
<details>
<summary>compspec-spack output</summary>
```console
{
"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"
}
```
</details>
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](.devcontainer) in VSCode, you'll find spack on the path:
```bash
$ 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](https://github.com/converged-computing/cloud-select/blob/main/LICENSE),
[COPYRIGHT](https://github.com/converged-computing/cloud-select/blob/main/COPYRIGHT), and
[NOTICE](https://github.com/converged-computing/cloud-select/blob/main/NOTICE) for details.
SPDX-License-Identifier: (MIT)
LLNL-CODE- 842614
Raw data
{
"_id": null,
"home_page": "https://github.com/compspec/compspec-spack",
"name": "compspec-spack",
"maintainer": "Vanessa Sochat",
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "compatibility, compspec, spack, subsystem, scheduling, hpc",
"author": "Vanessa Sochat",
"author_email": "vsoch@users.noreply.github.com",
"download_url": "https://files.pythonhosted.org/packages/37/e9/2466e47af0c47f4ae2090eb5928b51d1dd8fc8816af2060c6c85f396a414/compspec-spack-0.0.1.tar.gz",
"platform": null,
"description": "# Compspec Spack\n\n<p align=\"center\">\n <img height=\"300\" src=\"https://raw.githubusercontent.com/compspec/spec/main/img/compspec-circle.png\">\n</p>\n\n[![PyPI version](https://badge.fury.io/py/compspec-spack.svg)](https://badge.fury.io/py/compspec-spack)\n\nA compspec (Composition spec) is a specification and model for comparing things. Compspec spack is\na plugin for extraction of [spack](https://github.com/spack/spack) subsystem metadata about software installed\non a system (for a system or user spack install) that can be used for scheduling and other purposes.\nIt output Json Graph Format version 2. To learn more:\n\n - [Compspec](https://github.com/compspec/compspec): the Python library that discovers and loads this plugin.\n\n\n## Usage\n\nInstall compspec and the plugin here:\n\n```bash\npip install compspec\npip install compspec-spack\n```\n\nThen run an extraction with spack. You will want to provide the root to the spack install to describe:\n\n```bash\ncompspec extract spack /path/to/spack\n```\n\nTo save to file:\n\n```bash\ncompspec extract --outfile spack-subsystem.json spack /path/to/spack\n```\n\n\n<details>\n\n<summary>compspec-spack output</summary>\n\n```console\n{\n \"graph\": {\n \"nodes\": {\n \"spack0\": {\n \"metadata\": {\n \"type\": \"spack\",\n \"basename\": \"spack\",\n \"name\": \"spack0\",\n \"id\": 0,\n \"uniq_id\": 0,\n \"containment\": {\n \"paths\": \"/spack0\"\n },\n \"size\": 1,\n \"unit\": \"\",\n \"rank\": 0,\n \"exclusive\": false\n },\n \"label\": \"spack0\"\n },\n \"package1\": {\n \"metadata\": {\n \"type\": \"package\",\n \"basename\": \"package\",\n \"name\": \"package0\",\n \"id\": 1,\n \"uniq_id\": 1,\n \"containment\": {\n \"paths\": \"/spack0/package0\"\n },\n \"size\": 1,\n \"unit\": \"\",\n \"rank\": 0,\n \"exclusive\": false,\n \"attributes\": {\n \"name\": \"perl\",\n \"version\": \"5.38.0\",\n \"platform\": \"linux\",\n \"target\": \"skylake\",\n \"os\": \"ubuntu22.04\",\n \"vendor\": \"GenuineIntel\",\n \"compiler_version\": \"11.4.0\",\n \"compiler\": \"gcc\"\n }\n },\n...\n \"edges\": [\n {\n \"source\": \"package7721\",\n \"target\": \"library7786\",\n \"metadata\": {\n \"name\": {\n \"containment\": \"contains\"\n }\n }\n },\n {\n \"source\": \"library7786\",\n \"target\": \"package7721\",\n \"metadata\": {\n \"name\": {\n \"containment\": \"in\"\n }\n }\n }\n ]\n },\n \"metadata\": {\n \"install_name\": \"compat-experiment\",\n \"spack_root\": \"/home/vanessa/Desktop/Code/flux/spack/opt/spack\"\n }\n\n```\n</details>\n\nNote 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.\n\n\n### Development\n\nIf you open the [Development container](.devcontainer) in VSCode, you'll find spack on the path:\n\n```bash\n$ which spack\n```\n\nThis allows us to easily develop and test the compatibility plugin. You can also just clone spack locally.\n\n#### TODO\n\n- Add python extraction example\n- Testing gloob gloob gloob\n\n## License\n\nHPCIC DevTools is distributed under the terms of the MIT license.\nAll new contributions must be made under this license.\n\nSee [LICENSE](https://github.com/converged-computing/cloud-select/blob/main/LICENSE),\n[COPYRIGHT](https://github.com/converged-computing/cloud-select/blob/main/COPYRIGHT), and\n[NOTICE](https://github.com/converged-computing/cloud-select/blob/main/NOTICE) for details.\n\nSPDX-License-Identifier: (MIT)\n\nLLNL-CODE- 842614\n",
"bugtrack_url": null,
"license": "LICENSE",
"summary": "Subsystem graph generation for a spack install",
"version": "0.0.1",
"project_urls": {
"Homepage": "https://github.com/compspec/compspec-spack"
},
"split_keywords": [
"compatibility",
" compspec",
" spack",
" subsystem",
" scheduling",
" hpc"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2a32f5bdf08241c76ec729b137e25b353437b0401320834e842b4eb1d9ba0846",
"md5": "7c17abe9f7333b6750ec5a8b71fab35a",
"sha256": "b329fa37b6de413114ba8eb97990bb1f65e8ac1e94edef9cc6435db24228f756"
},
"downloads": -1,
"filename": "compspec_spack-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7c17abe9f7333b6750ec5a8b71fab35a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 10815,
"upload_time": "2024-06-05T07:54:56",
"upload_time_iso_8601": "2024-06-05T07:54:56.899128Z",
"url": "https://files.pythonhosted.org/packages/2a/32/f5bdf08241c76ec729b137e25b353437b0401320834e842b4eb1d9ba0846/compspec_spack-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "37e92466e47af0c47f4ae2090eb5928b51d1dd8fc8816af2060c6c85f396a414",
"md5": "ece1605ebe1876a4a0c6c09ccc7a0347",
"sha256": "a3bbee41c6408550cb56b796ef3e39db037ecb761ce6b20633993f880938f4fa"
},
"downloads": -1,
"filename": "compspec-spack-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "ece1605ebe1876a4a0c6c09ccc7a0347",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8070,
"upload_time": "2024-06-05T07:54:58",
"upload_time_iso_8601": "2024-06-05T07:54:58.524566Z",
"url": "https://files.pythonhosted.org/packages/37/e9/2466e47af0c47f4ae2090eb5928b51d1dd8fc8816af2060c6c85f396a414/compspec-spack-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-05 07:54:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "compspec",
"github_project": "compspec-spack",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "compspec-spack"
}