{"id":23278542,"url":"https://github.com/hdfgroup/spack_daos","last_synced_at":"2025-07-03T19:07:01.869Z","repository":{"id":66041921,"uuid":"274491088","full_name":"HDFGroup/spack_daos","owner":"HDFGroup","description":"Spack repository for DAOS","archived":false,"fork":false,"pushed_at":"2022-05-10T17:23:55.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T12:45:57.203Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HDFGroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-23T19:25:32.000Z","updated_at":"2022-05-05T20:59:22.000Z","dependencies_parsed_at":"2023-06-02T00:38:18.206Z","dependency_job_id":null,"html_url":"https://github.com/HDFGroup/spack_daos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HDFGroup/spack_daos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2Fspack_daos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2Fspack_daos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2Fspack_daos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2Fspack_daos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HDFGroup","download_url":"https://codeload.github.com/HDFGroup/spack_daos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HDFGroup%2Fspack_daos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263385652,"owners_count":23458742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-19T22:32:12.886Z","updated_at":"2025-07-03T19:07:01.829Z","avatar_url":"https://github.com/HDFGroup.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# spack-packages for the DAOS stack\n\nHere are a collection of [spack](https://spack.io/) packages to manage\nbuilding the DAOS stack.\n\nFor more about spack and what you can do with it, spack has lots of\n[documentation](https://spack.readthedocs.io/en/latest/) and a good\n[tutorial](https://spack.readthedocs.io/en/latest/tutorial_sc16.html).\n\n## Spack Installation\n\nThe DAOS stack requires a few changes to the packages that are provided by\nspack (mpich, etc). While this may change in the future, you will for now\nneed to check out the branch named `topic_daos` from this fork of spack:\n\n```\ngit clone git@github.com:soumagne/spack.git -b topic_daos\n```\n\nOnce you do that you must add spack to your environment, see this [page](https://spack.readthedocs.io/en/latest/getting_started.html#add-spack-to-the-shell). For instance for BASH\nadd to your .bashrc:\n\n```\nSPACK_ROOT=/path/to/spack\nif [ -f $SPACK_ROOT/share/spack/setup-env.sh ]; then\n    . $SPACK_ROOT/share/spack/setup-env.sh\n    export SPACK_ROOT\nfi\n```\n\nThe next step is to setup compilers, see this [page](https://spack.readthedocs.io/en/latest/getting_started.html#compiler-configuration).\n\nFinally set up modules, see this [page](https://spack.readthedocs.io/en/latest/getting_started.html#environment-modules). Before running the `spack bootstrap`\ncommand, it is advisable to verify which module environment your system is using.\nYou can specify that in your spack system package file\n`~/.spack/\u003carch\u003e/packages.yaml` (see also this [page](https://spack.readthedocs.io/en/latest/getting_started.html#system-packages)). For example:\n\n```\npackages:\n    environment-modules:\n        paths:\n            environment-modules@4.2.4: /usr\n        buildable: False\n```\n\n## Repo Installation\n\nOnce you've set up spack itself, you need to teach it about this collection\n of packages ('repository' in spack lingo). Go to the top-level directory of\nthis project and execute the following command:\n\n```\ncd spack_daos\nspack repo add .\n```\n\nDid it work?\n\n```\nspack repo list\n```\n\n## DAOS Installation\n\nBefore installing daos, it is wise to check the dependencies that spack will\nneed to install (there are quite a few), this can be done with:\n\n```\nspack spec -I daos\n```\n\nYou may then tell spack about the system package that you already have installed\n(see side note below).\nTo build the entire DAOS stack with the default configuration,\nsimply install daos:\n\n```\nspack install -v daos\n```\n\n## HDF5 Installation\n\nTo install HDF5 with MPI support, it is recommended to use the latest MPICH that\nalso comes with DAOS support in order to compare native HDF5 with the\nHDF5 DAOS VOL connector. To build HDF5, do:\n\n```\nspack install -v hdf5+map+mpi^mpich@develop+daos\n```\n\n### Side note: System packages vs spack packages\n\nThe largest dependency for Mercury is the Boost package.  If your system\nalready has Boost, you can teach spack about it and other\n[system packages](https://spack.readthedocs.io/en/latest/getting_started.html#system-packages).\n\nLet's say you installed Boost through your distribution (an RPM or DEB package)\nTo inform spack about Boost you e.g. installed from an RPM, you would add it to\n`~/.spack/\u003carch\u003e/packages.yaml`\n\n```\npackages:\n    boost:\n        paths:\n            boost@system: /usr\n        version: [system]\n        buildable: False\n```\n\nSeveral other large dependencies are handled just fine by the\noperating system.  Here is an example of a `${HOME}/.spack/linux/packages.yaml`:\n\n```\npackages:\n    openssl:\n        paths:\n            openssl@1.0.2g: /usr\n        buildable: False\n    cmake:\n        paths:\n            cmake@3.9.1: /usr\n        buildable: False\n    boost:\n        paths:\n            boost@1.62: /usr\n        buildable: False\n    autoconf:\n        paths:\n            autoconf@2.69: /usr\n        buildable: False\n    automake:\n        paths:\n            automake@1.15.1: /usr\n        buildable: False\n```\n\nYou can see that several packages are flagged as `buildable: False`,\ngeneraly because they are either large packages or have large dependencies.\n\nThese `packages` files live in a platform-specific directory (run `spack arch\n-p` to see what platform spack thinks you are on).  Pretty helpful for e.g.\nArgonne, where a home file system is shared between a linux cluster, a blue\ngene, and a Cray.  You can describe `packages.py` for each platform.\n\n### Side note: using modules\n\nSpack works well with the module command for loading and unloading\nparticular packages in your environment once they have been built. In theory\nyou could integrate it with an existing environment-modules or lmod package\non your system.  Alternatively you can have spack set up its own modules\nsystem:\n\n* run ```spack bootstrap```\n    * this will make spack build and install its very own\n      environment-modules package that is automatically aware of packages\n      that have been installed via spack\n\nThe remainder of this document assumes that you will use the module command\nto load and unload packages once built.\n\n### Further package configuration\n\nSpack has a bit of trouble resolving a dependency if it is not exactly the same\nbetween packages.  For example, the `hdf5` package depends on mpich when using\nthe variant `+mpi`. If you install `mpich`, then install `hdf5`,\nyou may end up with two instances of mpich. If you remember to install\n`mpich` with the `@develop+daos` variant, you can avoid this duplication,\nbut it's easy to forget (and kind of a pain) to type `spack install\nhdf5+map+mpi^mpich@develop+daos`.\n\nIn my `~/.spack/linux/packages.yaml` you can tell spack you'd like to always build particular variants:\n\n```\npackages:\n    hdf5:\n        variants: +map+mpi\n```\n\n## Using DAOS\n\nOne consequence of the spack design (where packages are installed into a prefix\nbased on a hash of their configuration and compiler) is that library and header\npaths are unwieldy. An environment-management tool such as `modules` helps a\nlot here, and is nicely integrated into spack.\n\nThe integration can also help you load in all the dependencies:\n\n```\nspack load -r daos\n```\n\n## Using HDF5\n\nSimilary, you can do:\n\n```\nspack load -r hdf5\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdfgroup%2Fspack_daos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhdfgroup%2Fspack_daos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhdfgroup%2Fspack_daos/lists"}