Compare commits
144 Commits
develop-20
...
fix-linux-
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cc0fed4539 | ||
![]() |
26f291ef25 | ||
![]() |
da030617a1 | ||
![]() |
1ebfcd3b18 | ||
![]() |
d385a57da3 | ||
![]() |
37df8bfc73 | ||
![]() |
b781a530a1 | ||
![]() |
390b0aa25c | ||
![]() |
620835e30c | ||
![]() |
da10487219 | ||
![]() |
4d51810888 | ||
![]() |
6c7b2e1056 | ||
![]() |
749e99bf11 | ||
![]() |
6db8e0a61e | ||
![]() |
6fe914421a | ||
![]() |
9275f180bb | ||
![]() |
2541b42fc2 | ||
![]() |
fb340f130b | ||
![]() |
d2ddd99ef6 | ||
![]() |
492a8111b9 | ||
![]() |
d846664165 | ||
![]() |
31b3e4898b | ||
![]() |
82f1267486 | ||
![]() |
19202b2528 | ||
![]() |
831cbec71f | ||
![]() |
bb2ff802e2 | ||
![]() |
83e9537f57 | ||
![]() |
3488e83deb | ||
![]() |
c116eee921 | ||
![]() |
9cb291b41b | ||
![]() |
c0f1072dc7 | ||
![]() |
3108036533 | ||
![]() |
215c699307 | ||
![]() |
f609093c6e | ||
![]() |
eb4fd98f09 | ||
![]() |
08da9a854a | ||
![]() |
3a18fe04cc | ||
![]() |
512e41a84a | ||
![]() |
8089aedde1 | ||
![]() |
6b9e103305 | ||
![]() |
00396fbe6c | ||
![]() |
a3be9cb853 | ||
![]() |
81f58229ab | ||
![]() |
2eb16a8ea2 | ||
![]() |
9db782f8d9 | ||
![]() |
633df54520 | ||
![]() |
e2a7f2ee9a | ||
![]() |
28c49930e2 | ||
![]() |
6c1868f8ae | ||
![]() |
4f992475f4 | ||
![]() |
7a358c9005 | ||
![]() |
b5079614b0 | ||
![]() |
482525d0f9 | ||
![]() |
599220924d | ||
![]() |
d341be83e5 | ||
![]() |
b027d7d0de | ||
![]() |
0357df0c8b | ||
![]() |
f70ae6e3c4 | ||
![]() |
921ed1c21b | ||
![]() |
c95d43771a | ||
![]() |
db3d816f8b | ||
![]() |
1d6a142608 | ||
![]() |
98271c3712 | ||
![]() |
e3f6df884e | ||
![]() |
b0f36b2cd9 | ||
![]() |
5524492e25 | ||
![]() |
112f045352 | ||
![]() |
72ed8711a7 | ||
![]() |
55e0c2c900 | ||
![]() |
e20c05fcdf | ||
![]() |
36183eac40 | ||
![]() |
7254c76b68 | ||
![]() |
e0e6ff5a68 | ||
![]() |
b0d49d4973 | ||
![]() |
4ce5d14066 | ||
![]() |
9e9653ac58 | ||
![]() |
bec873aec9 | ||
![]() |
bf7f54449b | ||
![]() |
9f0e3c0fed | ||
![]() |
79e7da9420 | ||
![]() |
0f43074f3e | ||
![]() |
d297098504 | ||
![]() |
284eaf1afe | ||
![]() |
da637dba84 | ||
![]() |
931fce2c24 | ||
![]() |
42fbf17c82 | ||
![]() |
d9cacf664c | ||
![]() |
7bf6780de2 | ||
![]() |
91178d40f3 | ||
![]() |
2817cd2936 | ||
![]() |
92a6ddcbc3 | ||
![]() |
58017f484c | ||
![]() |
86d2e1af97 | ||
![]() |
bf23be291b | ||
![]() |
3b32a9918c | ||
![]() |
f0260c84b4 | ||
![]() |
8746c75db0 | ||
![]() |
e8f230199f | ||
![]() |
1e3c7abc1c | ||
![]() |
12e51da102 | ||
![]() |
992291c738 | ||
![]() |
78e63fa257 | ||
![]() |
487ea8b263 | ||
![]() |
0d877b4184 | ||
![]() |
994544f208 | ||
![]() |
36bb2a5d09 | ||
![]() |
071c1c38dc | ||
![]() |
b480ae2b7d | ||
![]() |
7a390f503d | ||
![]() |
b7cb3462d4 | ||
![]() |
f2230100ac | ||
![]() |
4b06862a7f | ||
![]() |
06057d6dba | ||
![]() |
bb03a1768b | ||
![]() |
75ed26258c | ||
![]() |
1da8477a3c | ||
![]() |
4c111554ae | ||
![]() |
615312fcee | ||
![]() |
453625014d | ||
![]() |
1b75651af6 | ||
![]() |
b3e3604f46 | ||
![]() |
6c4ce379ca | ||
![]() |
a9dcba76ce | ||
![]() |
32f21f2a01 | ||
![]() |
e60bbd1bfc | ||
![]() |
71c5b948d0 | ||
![]() |
726d6b9881 | ||
![]() |
aff64c02e8 | ||
![]() |
31ae5cba91 | ||
![]() |
0a91d2411a | ||
![]() |
5f3af3d5e4 | ||
![]() |
37158cb913 | ||
![]() |
a596e16a37 | ||
![]() |
4e69f5121f | ||
![]() |
2a0f4393c3 | ||
![]() |
c9e1e7d90c | ||
![]() |
7170f2252c | ||
![]() |
b09073e01e | ||
![]() |
2d509dc3eb | ||
![]() |
8a9d45cc29 | ||
![]() |
b25f8643ff | ||
![]() |
9120b6644d | ||
![]() |
68dbd25f5f | ||
![]() |
9e54134daf |
2
.github/workflows/audit.yaml
vendored
2
.github/workflows/audit.yaml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
operating_system: ["ubuntu-latest", "macos-latest"]
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # @v2
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # @v2
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # @v2
|
||||
with:
|
||||
python-version: ${{inputs.python_version}}
|
||||
- name: Install Python packages
|
||||
|
2
.github/workflows/nightly-win-builds.yml
vendored
2
.github/workflows/nightly-win-builds.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236
|
||||
with:
|
||||
python-version: 3.9
|
||||
- name: Install Python packages
|
||||
|
8
.github/workflows/unit_tests.yaml
vendored
8
.github/workflows/unit_tests.yaml
vendored
@@ -50,7 +50,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # @v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # @v2
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # @v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install System packages
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # @v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # @v2
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # @v2
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- name: Install System packages
|
||||
@@ -155,7 +155,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # @v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # @v2
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # @v2
|
||||
with:
|
||||
python-version: '3.11'
|
||||
- name: Install System packages
|
||||
@@ -190,7 +190,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # @v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # @v2
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # @v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install Python packages
|
||||
|
4
.github/workflows/valid-style.yml
vendored
4
.github/workflows/valid-style.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236
|
||||
with:
|
||||
python-version: '3.11'
|
||||
cache: 'pip'
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236
|
||||
with:
|
||||
python-version: '3.11'
|
||||
cache: 'pip'
|
||||
|
6
.github/workflows/windows_python.yml
vendored
6
.github/workflows/windows_python.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236
|
||||
with:
|
||||
python-version: 3.9
|
||||
- name: Install Python packages
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236
|
||||
with:
|
||||
python-version: 3.9
|
||||
- name: Install Python packages
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
|
||||
- uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236
|
||||
with:
|
||||
python-version: 3.9
|
||||
- name: Install Python packages
|
||||
|
54
CITATION.cff
54
CITATION.cff
@@ -27,12 +27,53 @@
|
||||
# And here's the CITATION.cff format:
|
||||
#
|
||||
cff-version: 1.2.0
|
||||
type: software
|
||||
message: "If you are referencing Spack in a publication, please cite the paper below."
|
||||
title: "The Spack Package Manager: Bringing Order to HPC Software Chaos"
|
||||
abstract: >-
|
||||
Large HPC centers spend considerable time supporting software for thousands of users, but the complexity of HPC software is quickly outpacing the capabilities of existing software management tools.
|
||||
Scientific applications require specific versions of compilers, MPI, and other dependency libraries, so using a single, standard software stack is infeasible.
|
||||
However, managing many configurations is difficult because the configuration space is combinatorial in size.
|
||||
We introduce Spack, a tool used at Lawrence Livermore National Laboratory to manage this complexity.
|
||||
Spack provides a novel, re- cursive specification syntax to invoke parametric builds of packages and dependencies.
|
||||
It allows any number of builds to coexist on the same system, and it ensures that installed packages can find their dependencies, regardless of the environment.
|
||||
We show through real-world use cases that Spack supports diverse and demanding applications, bringing order to HPC software chaos.
|
||||
preferred-citation:
|
||||
title: "The Spack Package Manager: Bringing Order to HPC Software Chaos"
|
||||
type: conference-paper
|
||||
doi: "10.1145/2807591.2807623"
|
||||
url: "https://github.com/spack/spack"
|
||||
url: "https://tgamblin.github.io/pubs/spack-sc15.pdf"
|
||||
authors:
|
||||
- family-names: "Gamblin"
|
||||
given-names: "Todd"
|
||||
- family-names: "LeGendre"
|
||||
given-names: "Matthew"
|
||||
- family-names: "Collette"
|
||||
given-names: "Michael R."
|
||||
- family-names: "Lee"
|
||||
given-names: "Gregory L."
|
||||
- family-names: "Moody"
|
||||
given-names: "Adam"
|
||||
- family-names: "de Supinski"
|
||||
given-names: "Bronis R."
|
||||
- family-names: "Futral"
|
||||
given-names: "Scott"
|
||||
conference:
|
||||
name: "Supercomputing 2015 (SC’15)"
|
||||
city: "Austin"
|
||||
region: "Texas"
|
||||
country: "US"
|
||||
date-start: 2015-11-15
|
||||
date-end: 2015-11-20
|
||||
month: 11
|
||||
year: 2015
|
||||
identifiers:
|
||||
- description: "The concept DOI of the work."
|
||||
type: doi
|
||||
value: 10.1145/2807591.2807623
|
||||
- description: "The DOE Document Release Number of the work"
|
||||
type: other
|
||||
value: "LLNL-CONF-669890"
|
||||
authors:
|
||||
- family-names: "Gamblin"
|
||||
given-names: "Todd"
|
||||
- family-names: "LeGendre"
|
||||
@@ -47,12 +88,3 @@ preferred-citation:
|
||||
given-names: "Bronis R."
|
||||
- family-names: "Futral"
|
||||
given-names: "Scott"
|
||||
title: "The Spack Package Manager: Bringing Order to HPC Software Chaos"
|
||||
conference:
|
||||
name: "Supercomputing 2015 (SC’15)"
|
||||
city: "Austin"
|
||||
region: "Texas"
|
||||
country: "USA"
|
||||
month: November 15-20
|
||||
year: 2015
|
||||
notes: LLNL-CONF-669890
|
||||
|
@@ -41,4 +41,4 @@ concretizer:
|
||||
# "none": allows a single node for any package in the DAG.
|
||||
# "minimal": allows the duplication of 'build-tools' nodes only (e.g. py-setuptools, cmake etc.)
|
||||
# "full" (experimental): allows separation of the entire build-tool stack (e.g. the entire "cmake" subDAG)
|
||||
strategy: none
|
||||
strategy: minimal
|
||||
|
1
lib/spack/docs/.gitignore
vendored
1
lib/spack/docs/.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
package_list.html
|
||||
command_index.rst
|
||||
spack*.rst
|
||||
llnl*.rst
|
||||
|
@@ -45,7 +45,8 @@ Listing available packages
|
||||
|
||||
To install software with Spack, you need to know what software is
|
||||
available. You can see a list of available package names at the
|
||||
:ref:`package-list` webpage, or using the ``spack list`` command.
|
||||
`packages.spack.io <https://packages.spack.io>`_ website, or
|
||||
using the ``spack list`` command.
|
||||
|
||||
.. _cmd-spack-list:
|
||||
|
||||
@@ -60,7 +61,7 @@ can install:
|
||||
:ellipsis: 10
|
||||
|
||||
There are thousands of them, so we've truncated the output above, but you
|
||||
can find a :ref:`full list here <package-list>`.
|
||||
can find a `full list here <https://packages.spack.io>`_.
|
||||
Packages are listed by name in alphabetical order.
|
||||
A pattern to match with no wildcards, ``*`` or ``?``,
|
||||
will be treated as though it started and ended with
|
||||
|
@@ -3,6 +3,103 @@
|
||||
|
||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
|
||||
.. _concretizer-options:
|
||||
|
||||
==========================================
|
||||
Concretization Settings (concretizer.yaml)
|
||||
==========================================
|
||||
|
||||
The ``concretizer.yaml`` configuration file allows to customize aspects of the
|
||||
algorithm used to select the dependencies you install. The default configuration
|
||||
is the following:
|
||||
|
||||
.. literalinclude:: _spack_root/etc/spack/defaults/concretizer.yaml
|
||||
:language: yaml
|
||||
|
||||
--------------------------------
|
||||
Reuse already installed packages
|
||||
--------------------------------
|
||||
|
||||
The ``reuse`` attribute controls whether Spack will prefer to use installed packages (``true``), or
|
||||
whether it will do a "fresh" installation and prefer the latest settings from
|
||||
``package.py`` files and ``packages.yaml`` (``false``).
|
||||
You can use:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
% spack install --reuse <spec>
|
||||
|
||||
to enable reuse for a single installation, and you can use:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
spack install --fresh <spec>
|
||||
|
||||
to do a fresh install if ``reuse`` is enabled by default.
|
||||
``reuse: true`` is the default.
|
||||
|
||||
------------------------------------------
|
||||
Selection of the target microarchitectures
|
||||
------------------------------------------
|
||||
|
||||
The options under the ``targets`` attribute control which targets are considered during a solve.
|
||||
Currently the options in this section are only configurable from the ``concretizer.yaml`` file
|
||||
and there are no corresponding command line arguments to enable them for a single solve.
|
||||
|
||||
The ``granularity`` option can take two possible values: ``microarchitectures`` and ``generic``.
|
||||
If set to:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
concretizer:
|
||||
targets:
|
||||
granularity: microarchitectures
|
||||
|
||||
Spack will consider all the microarchitectures known to ``archspec`` to label nodes for
|
||||
compatibility. If instead the option is set to:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
concretizer:
|
||||
targets:
|
||||
granularity: generic
|
||||
|
||||
Spack will consider only generic microarchitectures. For instance, when running on an
|
||||
Haswell node, Spack will consider ``haswell`` as the best target in the former case and
|
||||
``x86_64_v3`` as the best target in the latter case.
|
||||
|
||||
The ``host_compatible`` option is a Boolean option that determines whether or not the
|
||||
microarchitectures considered during the solve are constrained to be compatible with the
|
||||
host Spack is currently running on. For instance, if this option is set to ``true``, a
|
||||
user cannot concretize for ``target=icelake`` while running on an Haswell node.
|
||||
|
||||
---------------
|
||||
Duplicate nodes
|
||||
---------------
|
||||
|
||||
The ``duplicates`` attribute controls whether the DAG can contain multiple configurations of
|
||||
the same package. This is mainly relevant for build dependencies, which may have their version
|
||||
pinned by some nodes, and thus be required at different versions by different nodes in the same
|
||||
DAG.
|
||||
|
||||
The ``strategy`` option controls how the solver deals with duplicates. If the value is ``none``,
|
||||
then a single configuration per package is allowed in the DAG. This means, for instance, that only
|
||||
a single ``cmake`` or a single ``py-setuptools`` version is allowed. The result would be a slightly
|
||||
faster concretization, at the expense of making a few specs unsolvable.
|
||||
|
||||
If the value is ``minimal`` Spack will allow packages tagged as ``build-tools`` to have duplicates.
|
||||
This allows, for instance, to concretize specs whose nodes require different, and incompatible, ranges
|
||||
of some build tool. For instance, in the figure below the latest `py-shapely` requires a newer `py-setuptools`,
|
||||
while `py-numpy` still needs an older version:
|
||||
|
||||
.. figure:: images/shapely_duplicates.svg
|
||||
:scale: 70 %
|
||||
:align: center
|
||||
|
||||
Up to Spack v0.20 ``duplicates:strategy:none`` was the default (and only) behavior. From Spack v0.21 the
|
||||
default behavior is ``duplicates:strategy:minimal``.
|
||||
|
||||
.. _build-settings:
|
||||
|
||||
================================
|
||||
@@ -232,76 +329,6 @@ Specific limitations include:
|
||||
then Spack will not add a new external entry (``spack config blame packages``
|
||||
can help locate all external entries).
|
||||
|
||||
.. _concretizer-options:
|
||||
|
||||
----------------------
|
||||
Concretizer options
|
||||
----------------------
|
||||
|
||||
``packages.yaml`` gives the concretizer preferences for specific packages,
|
||||
but you can also use ``concretizer.yaml`` to customize aspects of the
|
||||
algorithm it uses to select the dependencies you install:
|
||||
|
||||
.. literalinclude:: _spack_root/etc/spack/defaults/concretizer.yaml
|
||||
:language: yaml
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Reuse already installed packages
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The ``reuse`` attribute controls whether Spack will prefer to use installed packages (``true``), or
|
||||
whether it will do a "fresh" installation and prefer the latest settings from
|
||||
``package.py`` files and ``packages.yaml`` (``false``).
|
||||
You can use:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
% spack install --reuse <spec>
|
||||
|
||||
to enable reuse for a single installation, and you can use:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
spack install --fresh <spec>
|
||||
|
||||
to do a fresh install if ``reuse`` is enabled by default.
|
||||
``reuse: true`` is the default.
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Selection of the target microarchitectures
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The options under the ``targets`` attribute control which targets are considered during a solve.
|
||||
Currently the options in this section are only configurable from the ``concretizer.yaml`` file
|
||||
and there are no corresponding command line arguments to enable them for a single solve.
|
||||
|
||||
The ``granularity`` option can take two possible values: ``microarchitectures`` and ``generic``.
|
||||
If set to:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
concretizer:
|
||||
targets:
|
||||
granularity: microarchitectures
|
||||
|
||||
Spack will consider all the microarchitectures known to ``archspec`` to label nodes for
|
||||
compatibility. If instead the option is set to:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
concretizer:
|
||||
targets:
|
||||
granularity: generic
|
||||
|
||||
Spack will consider only generic microarchitectures. For instance, when running on an
|
||||
Haswell node, Spack will consider ``haswell`` as the best target in the former case and
|
||||
``x86_64_v3`` as the best target in the latter case.
|
||||
|
||||
The ``host_compatible`` option is a Boolean option that determines whether or not the
|
||||
microarchitectures considered during the solve are constrained to be compatible with the
|
||||
host Spack is currently running on. For instance, if this option is set to ``true``, a
|
||||
user cannot concretize for ``target=icelake`` while running on an Haswell node.
|
||||
|
||||
.. _package-requirements:
|
||||
|
||||
--------------------
|
||||
|
@@ -25,8 +25,8 @@ use Spack to build packages with the tools.
|
||||
The Spack Python class ``IntelOneapiPackage`` is a base class that is
|
||||
used by ``IntelOneapiCompilers``, ``IntelOneapiMkl``,
|
||||
``IntelOneapiTbb`` and other classes to implement the oneAPI
|
||||
packages. See the :ref:`package-list` for the full list of available
|
||||
oneAPI packages or use::
|
||||
packages. Search for ``oneAPI`` at `<packages.spack.io>`_ for the full
|
||||
list of available oneAPI packages, or use::
|
||||
|
||||
spack list -d oneAPI
|
||||
|
||||
|
@@ -48,9 +48,6 @@
|
||||
os.environ["COLIFY_SIZE"] = "25x120"
|
||||
os.environ["COLUMNS"] = "120"
|
||||
|
||||
# Generate full package list if needed
|
||||
subprocess.call(["spack", "list", "--format=html", "--update=package_list.html"])
|
||||
|
||||
# Generate a command index if an update is needed
|
||||
subprocess.call(
|
||||
[
|
||||
|
@@ -310,53 +310,11 @@ Once all of the dependencies are installed, you can try building the documentati
|
||||
$ make clean
|
||||
$ make
|
||||
|
||||
If you see any warning or error messages, you will have to correct those before
|
||||
your PR is accepted.
|
||||
|
||||
If you are editing the documentation, you should obviously be running the
|
||||
documentation tests. But even if you are simply adding a new package, your
|
||||
changes could cause the documentation tests to fail:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
package_list.rst:8745: WARNING: Block quote ends without a blank line; unexpected unindent.
|
||||
|
||||
At first, this error message will mean nothing to you, since you didn't edit
|
||||
that file. Until you look at line 8745 of the file in question:
|
||||
|
||||
.. code-block:: rst
|
||||
|
||||
Description:
|
||||
NetCDF is a set of software libraries and self-describing, machine-
|
||||
independent data formats that support the creation, access, and sharing
|
||||
of array-oriented scientific data.
|
||||
|
||||
Our documentation includes :ref:`a list of all Spack packages <package-list>`.
|
||||
If you add a new package, its docstring is added to this page. The problem in
|
||||
this case was that the docstring looked like:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class Netcdf(Package):
|
||||
"""
|
||||
NetCDF is a set of software libraries and self-describing,
|
||||
machine-independent data formats that support the creation,
|
||||
access, and sharing of array-oriented scientific data.
|
||||
"""
|
||||
|
||||
Docstrings cannot start with a newline character, or else Sphinx will complain.
|
||||
Instead, they should look like:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class Netcdf(Package):
|
||||
"""NetCDF is a set of software libraries and self-describing,
|
||||
machine-independent data formats that support the creation,
|
||||
access, and sharing of array-oriented scientific data."""
|
||||
|
||||
Documentation changes can result in much more obfuscated warning messages.
|
||||
If you don't understand what they mean, feel free to ask when you submit
|
||||
your PR.
|
||||
If you see any warning or error messages, you will have to correct those before your PR
|
||||
is accepted. If you are editing the documentation, you should be running the
|
||||
documentation tests to make sure there are no errors. Documentation changes can result
|
||||
in some obfuscated warning messages. If you don't understand what they mean, feel free
|
||||
to ask when you submit your PR.
|
||||
|
||||
--------
|
||||
Coverage
|
||||
|
2784
lib/spack/docs/images/shapely_duplicates.svg
Normal file
2784
lib/spack/docs/images/shapely_duplicates.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 108 KiB |
@@ -54,9 +54,16 @@ or refer to the full manual below.
|
||||
features
|
||||
getting_started
|
||||
basic_usage
|
||||
Tutorial: Spack 101 <https://spack-tutorial.readthedocs.io>
|
||||
replace_conda_homebrew
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Links
|
||||
|
||||
Tutorial (spack-tutorial.rtfd.io) <https://spack-tutorial.readthedocs.io>
|
||||
Packages (packages.spack.io) <https://packages.spack.io>
|
||||
Binaries (binaries.spack.io) <https://cache.spack.io>
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: Reference
|
||||
@@ -72,7 +79,6 @@ or refer to the full manual below.
|
||||
repositories
|
||||
binary_caches
|
||||
command_index
|
||||
package_list
|
||||
chain
|
||||
extensions
|
||||
pipelines
|
||||
|
@@ -1,17 +0,0 @@
|
||||
.. Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
||||
Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
|
||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
.. _package-list:
|
||||
|
||||
============
|
||||
Package List
|
||||
============
|
||||
|
||||
This is a list of things you can install using Spack. It is
|
||||
automatically generated based on the packages in this Spack
|
||||
version.
|
||||
|
||||
.. raw:: html
|
||||
:file: package_list.html
|
@@ -4,7 +4,7 @@
|
||||
SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
=====================================
|
||||
Using Spack to Replace Homebrew/Conda
|
||||
Spack for Homebrew/Conda Users
|
||||
=====================================
|
||||
|
||||
Spack is an incredibly powerful package manager, designed for supercomputers
|
||||
@@ -191,18 +191,18 @@ The ``--fresh`` flag tells Spack to use the latest version of every package
|
||||
where possible instead of trying to optimize for reuse of existing installed
|
||||
packages.
|
||||
|
||||
The ``--force`` flag in addition tells Spack to overwrite its previous
|
||||
concretization decisions, allowing you to choose a new version of Python.
|
||||
If any of the new packages like Bash are already installed, ``spack install``
|
||||
The ``--force`` flag in addition tells Spack to overwrite its previous
|
||||
concretization decisions, allowing you to choose a new version of Python.
|
||||
If any of the new packages like Bash are already installed, ``spack install``
|
||||
won't re-install them, it will keep the symlinks in place.
|
||||
|
||||
-----------------------------------
|
||||
Updating & Cleaning Up Old Packages
|
||||
-----------------------------------
|
||||
|
||||
If you're looking to mimic the behavior of Homebrew, you may also want to
|
||||
clean up out-of-date packages from your environment after an upgrade. To
|
||||
upgrade your entire software stack within an environment and clean up old
|
||||
If you're looking to mimic the behavior of Homebrew, you may also want to
|
||||
clean up out-of-date packages from your environment after an upgrade. To
|
||||
upgrade your entire software stack within an environment and clean up old
|
||||
package versions, simply run the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
@@ -212,9 +212,9 @@ package versions, simply run the following commands:
|
||||
$ spack concretize --fresh --force
|
||||
$ spack install
|
||||
$ spack gc
|
||||
|
||||
Running ``spack mark -i --all`` tells Spack to mark all of the existing
|
||||
packages within an environment as "implicitly" installed. This tells
|
||||
|
||||
Running ``spack mark -i --all`` tells Spack to mark all of the existing
|
||||
packages within an environment as "implicitly" installed. This tells
|
||||
spack's garbage collection system that these packages should be cleaned up.
|
||||
|
||||
Don't worry however, this will not remove your entire environment.
|
||||
@@ -223,8 +223,8 @@ a fresh concretization and will re-mark any packages that should remain
|
||||
installed as "explicitly" installed.
|
||||
|
||||
**Note:** if you use multiple spack environments you should re-run ``spack install``
|
||||
in each of your environments prior to running ``spack gc`` to prevent spack
|
||||
from uninstalling any shared packages that are no longer required by the
|
||||
in each of your environments prior to running ``spack gc`` to prevent spack
|
||||
from uninstalling any shared packages that are no longer required by the
|
||||
environment you just upgraded.
|
||||
|
||||
--------------
|
||||
|
@@ -2,10 +2,10 @@ sphinx==7.2.6
|
||||
sphinxcontrib-programoutput==0.17
|
||||
sphinx_design==0.5.0
|
||||
sphinx-rtd-theme==1.3.0
|
||||
python-levenshtein==0.21.1
|
||||
python-levenshtein==0.22.0
|
||||
docutils==0.18.1
|
||||
pygments==2.16.1
|
||||
urllib3==2.0.5
|
||||
urllib3==2.0.6
|
||||
pytest==7.4.2
|
||||
isort==5.12.0
|
||||
black==23.9.1
|
||||
|
@@ -1,9 +1,8 @@
|
||||
Name, Supported Versions, Notes, Requirement Reason
|
||||
Python, 3.6--3.11, , Interpreter for Spack
|
||||
Python, 3.6--3.12, , Interpreter for Spack
|
||||
C/C++ Compilers, , , Building software
|
||||
make, , , Build software
|
||||
patch, , , Build software
|
||||
bash, , , Compiler wrappers
|
||||
tar, , , Extract/create archives
|
||||
gzip, , , Compress/Decompress archives
|
||||
unzip, , , Compress/Decompress archives
|
||||
|
|
@@ -23,7 +23,7 @@
|
||||
import warnings
|
||||
from contextlib import closing, contextmanager
|
||||
from gzip import GzipFile
|
||||
from typing import List, NamedTuple, Optional, Union
|
||||
from typing import Dict, List, NamedTuple, Optional, Tuple, Union
|
||||
from urllib.error import HTTPError, URLError
|
||||
|
||||
import llnl.util.filesystem as fsys
|
||||
@@ -216,11 +216,11 @@ def _associate_built_specs_with_mirror(self, cache_key, mirror_url):
|
||||
with self._index_file_cache.read_transaction(cache_key):
|
||||
db._read_from_file(cache_path)
|
||||
except spack_db.InvalidDatabaseVersionError as e:
|
||||
msg = (
|
||||
tty.warn(
|
||||
f"you need a newer Spack version to read the buildcache index for the "
|
||||
f"following mirror: '{mirror_url}'. {e.database_version_message}"
|
||||
)
|
||||
raise BuildcacheIndexError(msg) from e
|
||||
return
|
||||
|
||||
spec_list = db.query_local(installed=False, in_buildcache=True)
|
||||
|
||||
@@ -625,8 +625,7 @@ def buildinfo_file_name(prefix):
|
||||
"""
|
||||
Filename of the binary package meta-data file
|
||||
"""
|
||||
name = os.path.join(prefix, ".spack/binary_distribution")
|
||||
return name
|
||||
return os.path.join(prefix, ".spack/binary_distribution")
|
||||
|
||||
|
||||
def read_buildinfo_file(prefix):
|
||||
@@ -1158,57 +1157,99 @@ def gzip_compressed_tarfile(path):
|
||||
yield tar
|
||||
|
||||
|
||||
def deterministic_tarinfo(tarinfo: tarfile.TarInfo):
|
||||
# We only add files, symlinks, hardlinks, and directories
|
||||
# No character devices, block devices and FIFOs should ever enter a tarball.
|
||||
if tarinfo.isdev():
|
||||
return None
|
||||
|
||||
# For distribution, it makes no sense to user/group data; since (a) they don't exist
|
||||
# on other machines, and (b) they lead to surprises as `tar x` run as root will change
|
||||
# ownership if it can. We want to extract as the current user. By setting owner to root,
|
||||
# root will extract as root, and non-privileged user will extract as themselves.
|
||||
tarinfo.uid = 0
|
||||
tarinfo.gid = 0
|
||||
tarinfo.uname = ""
|
||||
tarinfo.gname = ""
|
||||
|
||||
# Reset mtime to epoch time, our prefixes are not truly immutable, so files may get
|
||||
# touched; as long as the content does not change, this ensures we get stable tarballs.
|
||||
tarinfo.mtime = 0
|
||||
|
||||
# Normalize mode
|
||||
if tarinfo.isfile() or tarinfo.islnk():
|
||||
# If user can execute, use 0o755; else 0o644
|
||||
# This is to avoid potentially unsafe world writable & exeutable files that may get
|
||||
# extracted when Python or tar is run with privileges
|
||||
tarinfo.mode = 0o644 if tarinfo.mode & 0o100 == 0 else 0o755
|
||||
else: # symbolic link and directories
|
||||
tarinfo.mode = 0o755
|
||||
|
||||
return tarinfo
|
||||
def _tarinfo_name(p: str):
|
||||
return p.lstrip("/")
|
||||
|
||||
|
||||
def tar_add_metadata(tar: tarfile.TarFile, path: str, data: dict):
|
||||
# Serialize buildinfo for the tarball
|
||||
bstring = syaml.dump(data, default_flow_style=True).encode("utf-8")
|
||||
tarinfo = tarfile.TarInfo(name=path)
|
||||
tarinfo.size = len(bstring)
|
||||
tar.addfile(deterministic_tarinfo(tarinfo), io.BytesIO(bstring))
|
||||
def tarfile_of_spec_prefix(tar: tarfile.TarFile, prefix: str) -> None:
|
||||
"""Create a tarfile of an install prefix of a spec. Skips existing buildinfo file.
|
||||
Only adds regular files, symlinks and dirs. Skips devices, fifos. Preserves hardlinks.
|
||||
Normalizes permissions like git. Tar entries are added in depth-first pre-order, with
|
||||
dir entries partitioned by file | dir, and sorted alphabetically, for reproducibility.
|
||||
Partitioning ensures only one dir is in memory at a time, and sorting improves compression.
|
||||
|
||||
Args:
|
||||
tar: tarfile object to add files to
|
||||
prefix: absolute install prefix of spec"""
|
||||
if not os.path.isabs(prefix) or not os.path.isdir(prefix):
|
||||
raise ValueError(f"prefix '{prefix}' must be an absolute path to a directory")
|
||||
hardlink_to_tarinfo_name: Dict[Tuple[int, int], str] = dict()
|
||||
stat_key = lambda stat: (stat.st_dev, stat.st_ino)
|
||||
|
||||
try: # skip buildinfo file if it exists
|
||||
files_to_skip = [stat_key(os.lstat(buildinfo_file_name(prefix)))]
|
||||
except OSError:
|
||||
files_to_skip = []
|
||||
|
||||
dir_stack = [prefix]
|
||||
while dir_stack:
|
||||
dir = dir_stack.pop()
|
||||
|
||||
# Add the dir before its contents
|
||||
dir_info = tarfile.TarInfo(_tarinfo_name(dir))
|
||||
dir_info.type = tarfile.DIRTYPE
|
||||
dir_info.mode = 0o755
|
||||
tar.addfile(dir_info)
|
||||
|
||||
# Sort by name: reproducible & improves compression
|
||||
with os.scandir(dir) as it:
|
||||
entries = sorted(it, key=lambda entry: entry.name)
|
||||
|
||||
new_dirs = []
|
||||
for entry in entries:
|
||||
if entry.is_dir(follow_symlinks=False):
|
||||
new_dirs.append(entry.path)
|
||||
continue
|
||||
|
||||
file_info = tarfile.TarInfo(_tarinfo_name(entry.path))
|
||||
|
||||
s = entry.stat(follow_symlinks=False)
|
||||
|
||||
# Skip existing binary distribution files.
|
||||
id = stat_key(s)
|
||||
if id in files_to_skip:
|
||||
continue
|
||||
|
||||
# Normalize the mode
|
||||
file_info.mode = 0o644 if s.st_mode & 0o100 == 0 else 0o755
|
||||
|
||||
if entry.is_symlink():
|
||||
file_info.type = tarfile.SYMTYPE
|
||||
file_info.linkname = os.readlink(entry.path)
|
||||
tar.addfile(file_info)
|
||||
|
||||
elif entry.is_file(follow_symlinks=False):
|
||||
# Deduplicate hardlinks
|
||||
if s.st_nlink > 1:
|
||||
if id in hardlink_to_tarinfo_name:
|
||||
file_info.type = tarfile.LNKTYPE
|
||||
file_info.linkname = hardlink_to_tarinfo_name[id]
|
||||
tar.addfile(file_info)
|
||||
continue
|
||||
hardlink_to_tarinfo_name[id] = file_info.name
|
||||
|
||||
# If file not yet seen, copy it.
|
||||
file_info.type = tarfile.REGTYPE
|
||||
file_info.size = s.st_size
|
||||
|
||||
with open(entry.path, "rb") as f:
|
||||
tar.addfile(file_info, f)
|
||||
|
||||
dir_stack.extend(reversed(new_dirs)) # we pop, so reverse to stay alphabetical
|
||||
|
||||
|
||||
def deterministic_tarinfo_without_buildinfo(tarinfo: tarfile.TarInfo):
|
||||
"""Skip buildinfo file when creating a tarball, and normalize other tarinfo fields."""
|
||||
if tarinfo.name.endswith("/.spack/binary_distribution"):
|
||||
return None
|
||||
|
||||
return deterministic_tarinfo(tarinfo)
|
||||
|
||||
|
||||
def _do_create_tarball(tarfile_path: str, binaries_dir: str, pkg_dir: str, buildinfo: dict):
|
||||
def _do_create_tarball(tarfile_path: str, binaries_dir: str, buildinfo: dict):
|
||||
with gzip_compressed_tarfile(tarfile_path) as tar:
|
||||
tar.add(name=binaries_dir, arcname=pkg_dir, filter=deterministic_tarinfo_without_buildinfo)
|
||||
tar_add_metadata(tar, buildinfo_file_name(pkg_dir), buildinfo)
|
||||
# Tarball the install prefix
|
||||
tarfile_of_spec_prefix(tar, binaries_dir)
|
||||
|
||||
# Serialize buildinfo for the tarball
|
||||
bstring = syaml.dump(buildinfo, default_flow_style=True).encode("utf-8")
|
||||
tarinfo = tarfile.TarInfo(name=_tarinfo_name(buildinfo_file_name(binaries_dir)))
|
||||
tarinfo.type = tarfile.REGTYPE
|
||||
tarinfo.size = len(bstring)
|
||||
tarinfo.mode = 0o644
|
||||
tar.addfile(tarinfo, io.BytesIO(bstring))
|
||||
|
||||
|
||||
class PushOptions(NamedTuple):
|
||||
@@ -1280,14 +1321,12 @@ def _build_tarball_in_stage_dir(spec: Spec, out_url: str, stage_dir: str, option
|
||||
):
|
||||
raise NoOverwriteException(url_util.format(remote_specfile_path))
|
||||
|
||||
pkg_dir = os.path.basename(spec.prefix.rstrip(os.path.sep))
|
||||
|
||||
binaries_dir = spec.prefix
|
||||
|
||||
# create info for later relocation and create tar
|
||||
buildinfo = get_buildinfo_dict(spec)
|
||||
|
||||
_do_create_tarball(tarfile_path, binaries_dir, pkg_dir, buildinfo)
|
||||
_do_create_tarball(tarfile_path, binaries_dir, buildinfo)
|
||||
|
||||
# get the sha256 checksum of the tarball
|
||||
checksum = checksum_tarball(tarfile_path)
|
||||
|
@@ -10,7 +10,7 @@
|
||||
|
||||
import spack.builder
|
||||
import spack.package_base
|
||||
from spack.directives import build_system, depends_on, variant
|
||||
from spack.directives import build_system, conflicts, depends_on, variant
|
||||
from spack.multimethod import when
|
||||
|
||||
from ._checks import BaseBuilder, execute_build_time_tests
|
||||
@@ -47,6 +47,13 @@ class MesonPackage(spack.package_base.PackageBase):
|
||||
variant("strip", default=False, description="Strip targets on install")
|
||||
depends_on("meson", type="build")
|
||||
depends_on("ninja", type="build")
|
||||
# Python detection in meson requires distutils to be importable, but distutils no longer
|
||||
# exists in Python 3.12. In Spack, we can't use setuptools as distutils replacement,
|
||||
# because the distutils-precedence.pth startup file that setuptools ships with is not run
|
||||
# when setuptools is in PYTHONPATH; it has to be in system site-packages. In a future meson
|
||||
# release, the distutils requirement will be dropped, so this conflict can be relaxed.
|
||||
# We have patches to make it work with meson 1.1 and above.
|
||||
conflicts("^python@3.12:", when="^meson@:1.0")
|
||||
|
||||
def flags_to_build_system_args(self, flags):
|
||||
"""Produces a list of all command line arguments to pass the specified
|
||||
|
@@ -6,6 +6,7 @@
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import stat
|
||||
from typing import Optional
|
||||
|
||||
import archspec
|
||||
@@ -25,6 +26,7 @@
|
||||
from spack.directives import build_system, depends_on, extends, maintainers
|
||||
from spack.error import NoHeadersError, NoLibrariesError, SpecError
|
||||
from spack.install_test import test_part
|
||||
from spack.util.executable import Executable
|
||||
from spack.version import Version
|
||||
|
||||
from ._checks import BaseBuilder, execute_install_time_tests
|
||||
@@ -351,6 +353,51 @@ def libs(self):
|
||||
raise NoLibrariesError(msg.format(self.spec.name, root))
|
||||
|
||||
|
||||
def fixup_shebangs(path: str, old_interpreter: bytes, new_interpreter: bytes):
|
||||
# Recurse into the install prefix and fixup shebangs
|
||||
exe = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
|
||||
dirs = [path]
|
||||
hardlinks = set()
|
||||
|
||||
while dirs:
|
||||
with os.scandir(dirs.pop()) as entries:
|
||||
for entry in entries:
|
||||
if entry.is_dir(follow_symlinks=False):
|
||||
dirs.append(entry.path)
|
||||
continue
|
||||
|
||||
# Only consider files, not symlinks
|
||||
if not entry.is_file(follow_symlinks=False):
|
||||
continue
|
||||
|
||||
lstat = entry.stat(follow_symlinks=False)
|
||||
|
||||
# Skip over files that are not executable
|
||||
if not (lstat.st_mode & exe):
|
||||
continue
|
||||
|
||||
# Don't modify hardlinks more than once
|
||||
if lstat.st_nlink > 1:
|
||||
key = (lstat.st_ino, lstat.st_dev)
|
||||
if key in hardlinks:
|
||||
continue
|
||||
hardlinks.add(key)
|
||||
|
||||
# Finally replace shebangs if any.
|
||||
with open(entry.path, "rb+") as f:
|
||||
contents = f.read(2)
|
||||
if contents != b"#!":
|
||||
continue
|
||||
contents += f.read()
|
||||
|
||||
if old_interpreter not in contents:
|
||||
continue
|
||||
|
||||
f.seek(0)
|
||||
f.write(contents.replace(old_interpreter, new_interpreter))
|
||||
f.truncate()
|
||||
|
||||
|
||||
@spack.builder.builder("python_pip")
|
||||
class PythonPipBuilder(BaseBuilder):
|
||||
phases = ("install",)
|
||||
@@ -447,8 +494,36 @@ def global_options(self, spec, prefix):
|
||||
"""
|
||||
return []
|
||||
|
||||
@property
|
||||
def _build_venv_path(self):
|
||||
"""Return the path to the virtual environment used for building when
|
||||
python is external."""
|
||||
return os.path.join(self.spec.package.stage.path, "build_env")
|
||||
|
||||
@property
|
||||
def _build_venv_python(self) -> Executable:
|
||||
"""Return the Python executable in the build virtual environment when
|
||||
python is external."""
|
||||
return Executable(os.path.join(self._build_venv_path, "bin", "python"))
|
||||
|
||||
def install(self, pkg, spec, prefix):
|
||||
"""Install everything from build directory."""
|
||||
python: Executable = spec["python"].command
|
||||
# Since we invoke pip with --no-build-isolation, we have to make sure that pip cannot
|
||||
# execute hooks from user and system site-packages.
|
||||
if spec["python"].external:
|
||||
# There are no environment variables to disable the system site-packages, so we use a
|
||||
# virtual environment instead. The downside of this approach is that pip produces
|
||||
# incorrect shebangs that refer to the virtual environment, which we have to fix up.
|
||||
python("-m", "venv", "--without-pip", self._build_venv_path)
|
||||
pip = self._build_venv_python
|
||||
else:
|
||||
# For a Spack managed Python, system site-packages is empty/unused by design, so it
|
||||
# suffices to disable user site-packages, for which there is an environment variable.
|
||||
pip = python
|
||||
pip.add_default_env("PYTHONNOUSERSITE", "1")
|
||||
pip.add_default_arg("-m")
|
||||
pip.add_default_arg("pip")
|
||||
|
||||
args = PythonPipBuilder.std_args(pkg) + ["--prefix=" + prefix]
|
||||
|
||||
@@ -472,8 +547,31 @@ def install(self, pkg, spec, prefix):
|
||||
else:
|
||||
args.append(".")
|
||||
|
||||
pip = inspect.getmodule(pkg).pip
|
||||
with fs.working_dir(self.build_directory):
|
||||
pip(*args)
|
||||
|
||||
@spack.builder.run_after("install")
|
||||
def fixup_shebangs_pointing_to_build(self):
|
||||
"""When installing a package using an external python, we use a temporary virtual
|
||||
environment which improves build isolation. The downside is that pip produces shebangs
|
||||
that point to the temporary virtual environment. This method fixes them up to point to the
|
||||
underlying Python."""
|
||||
# No need to fixup shebangs if no build venv was used. (this post install function also
|
||||
# runs when install was overridden in another package, so check existence of the venv path)
|
||||
if not os.path.exists(self._build_venv_path):
|
||||
return
|
||||
|
||||
# Use sys.executable, since that's what pip uses.
|
||||
interpreter = (
|
||||
lambda python: python("-c", "import sys; print(sys.executable)", output=str)
|
||||
.strip()
|
||||
.encode("utf-8")
|
||||
)
|
||||
|
||||
fixup_shebangs(
|
||||
path=self.spec.prefix,
|
||||
old_interpreter=interpreter(self._build_venv_python),
|
||||
new_interpreter=interpreter(self.spec["python"].command),
|
||||
)
|
||||
|
||||
spack.builder.run_after("install")(execute_install_time_tests)
|
||||
|
@@ -64,7 +64,7 @@ class RacketBuilder(spack.builder.Builder):
|
||||
|
||||
@property
|
||||
def subdirectory(self):
|
||||
if self.racket_name:
|
||||
if self.pkg.racket_name:
|
||||
return "pkgs/{0}".format(self.pkg.racket_name)
|
||||
return None
|
||||
|
||||
|
@@ -50,6 +50,9 @@
|
||||
TEMP_STORAGE_MIRROR_NAME = "ci_temporary_mirror"
|
||||
SPACK_RESERVED_TAGS = ["public", "protected", "notary"]
|
||||
SHARED_PR_MIRROR_URL = "s3://spack-binaries-prs/shared_pr_mirror"
|
||||
JOB_NAME_FORMAT = (
|
||||
"{name}{@version} {/hash:7} {%compiler.name}{@compiler.version}{arch=architecture}"
|
||||
)
|
||||
|
||||
spack_gpg = spack.main.SpackCommand("gpg")
|
||||
spack_compiler = spack.main.SpackCommand("compiler")
|
||||
@@ -69,48 +72,23 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
|
||||
return False
|
||||
|
||||
|
||||
def get_job_name(spec, osarch, build_group):
|
||||
"""Given the necessary parts, format the gitlab job name
|
||||
def get_job_name(spec: spack.spec.Spec, build_group: str = ""):
|
||||
"""Given a spec and possibly a build group, return the job name. If the
|
||||
resulting name is longer than 255 characters, it will be truncated.
|
||||
|
||||
Arguments:
|
||||
spec (spack.spec.Spec): Spec job will build
|
||||
osarch: Architecture TODO: (this is a spack.spec.ArchSpec,
|
||||
but sphinx doesn't recognize the type and fails).
|
||||
build_group (str): Name of build group this job belongs to (a CDash
|
||||
notion)
|
||||
|
||||
Returns: The job name
|
||||
"""
|
||||
item_idx = 0
|
||||
format_str = ""
|
||||
format_args = []
|
||||
|
||||
format_str += "{{{0}}}".format(item_idx)
|
||||
format_args.append(spec.name)
|
||||
item_idx += 1
|
||||
|
||||
format_str += "/{{{0}}}".format(item_idx)
|
||||
format_args.append(spec.dag_hash(7))
|
||||
item_idx += 1
|
||||
|
||||
format_str += " {{{0}}}".format(item_idx)
|
||||
format_args.append(spec.version)
|
||||
item_idx += 1
|
||||
|
||||
format_str += " {{{0}}}".format(item_idx)
|
||||
format_args.append(spec.compiler)
|
||||
item_idx += 1
|
||||
|
||||
format_str += " {{{0}}}".format(item_idx)
|
||||
format_args.append(osarch)
|
||||
item_idx += 1
|
||||
job_name = spec.format(JOB_NAME_FORMAT)
|
||||
|
||||
if build_group:
|
||||
format_str += " {{{0}}}".format(item_idx)
|
||||
format_args.append(build_group)
|
||||
item_idx += 1
|
||||
job_name = "{0} {1}".format(job_name, build_group)
|
||||
|
||||
return format_str.format(*format_args)
|
||||
return job_name[:255]
|
||||
|
||||
|
||||
def _remove_reserved_tags(tags):
|
||||
@@ -337,7 +315,7 @@ def _spec_matches(spec, match_string):
|
||||
|
||||
|
||||
def _format_job_needs(
|
||||
dep_jobs, osname, build_group, prune_dag, rebuild_decisions, enable_artifacts_buildcache
|
||||
dep_jobs, build_group, prune_dag, rebuild_decisions, enable_artifacts_buildcache
|
||||
):
|
||||
needs_list = []
|
||||
for dep_job in dep_jobs:
|
||||
@@ -347,7 +325,7 @@ def _format_job_needs(
|
||||
if not prune_dag or rebuild:
|
||||
needs_list.append(
|
||||
{
|
||||
"job": get_job_name(dep_job, dep_job.architecture, build_group),
|
||||
"job": get_job_name(dep_job, build_group),
|
||||
"artifacts": enable_artifacts_buildcache,
|
||||
}
|
||||
)
|
||||
@@ -1023,8 +1001,7 @@ def main_script_replacements(cmd):
|
||||
if "after_script" in job_object:
|
||||
job_object["after_script"] = _unpack_script(job_object["after_script"])
|
||||
|
||||
osname = str(release_spec.architecture)
|
||||
job_name = get_job_name(release_spec, osname, build_group)
|
||||
job_name = get_job_name(release_spec, build_group)
|
||||
|
||||
job_vars = job_object.setdefault("variables", {})
|
||||
job_vars["SPACK_JOB_SPEC_DAG_HASH"] = release_spec_dag_hash
|
||||
@@ -1051,7 +1028,6 @@ def main_script_replacements(cmd):
|
||||
job_object["needs"].extend(
|
||||
_format_job_needs(
|
||||
dep_jobs,
|
||||
osname,
|
||||
build_group,
|
||||
prune_dag,
|
||||
rebuild_decisions,
|
||||
|
@@ -268,7 +268,7 @@ def _matching_specs(specs: List[Spec]) -> List[Spec]:
|
||||
return [spack.cmd.disambiguate_spec(s, ev.active_environment(), installed=any) for s in specs]
|
||||
|
||||
|
||||
def push_fn(args):
|
||||
def push_fn(args: argparse.Namespace):
|
||||
"""create a binary package and push it to a mirror"""
|
||||
if args.spec_file:
|
||||
tty.warn(
|
||||
@@ -414,7 +414,7 @@ def preview_fn(args):
|
||||
)
|
||||
|
||||
|
||||
def check_fn(args):
|
||||
def check_fn(args: argparse.Namespace):
|
||||
"""check specs against remote binary mirror(s) to see if any need to be rebuilt
|
||||
|
||||
this command uses the process exit code to indicate its result, specifically, if the
|
||||
@@ -429,7 +429,7 @@ def check_fn(args):
|
||||
specs = spack.cmd.parse_specs(args.spec or args.spec_file)
|
||||
|
||||
if specs:
|
||||
specs = _matching_specs(specs, specs)
|
||||
specs = _matching_specs(specs)
|
||||
else:
|
||||
specs = spack.cmd.require_active_env("buildcache check").all_specs()
|
||||
|
||||
|
@@ -11,7 +11,6 @@
|
||||
|
||||
def _for_each_enabled(spec, method_name, explicit=None):
|
||||
"""Calls a method for each enabled module"""
|
||||
spack.modules.ensure_modules_are_enabled_or_warn()
|
||||
set_names = set(spack.config.get("modules", {}).keys())
|
||||
for name in set_names:
|
||||
enabled = spack.config.get("modules:%s:enable" % name)
|
||||
|
@@ -7,15 +7,10 @@
|
||||
include Tcl non-hierarchical modules, Lua hierarchical modules, and others.
|
||||
"""
|
||||
|
||||
from .common import disable_modules, ensure_modules_are_enabled_or_warn
|
||||
from .common import disable_modules
|
||||
from .lmod import LmodModulefileWriter
|
||||
from .tcl import TclModulefileWriter
|
||||
|
||||
__all__ = [
|
||||
"TclModulefileWriter",
|
||||
"LmodModulefileWriter",
|
||||
"disable_modules",
|
||||
"ensure_modules_are_enabled_or_warn",
|
||||
]
|
||||
__all__ = ["TclModulefileWriter", "LmodModulefileWriter", "disable_modules"]
|
||||
|
||||
module_types = {"tcl": TclModulefileWriter, "lmod": LmodModulefileWriter}
|
||||
|
@@ -33,10 +33,8 @@
|
||||
import datetime
|
||||
import inspect
|
||||
import os.path
|
||||
import pathlib
|
||||
import re
|
||||
import string
|
||||
import warnings
|
||||
from typing import Optional
|
||||
|
||||
import llnl.util.filesystem
|
||||
@@ -820,43 +818,6 @@ def verbose(self):
|
||||
return self.conf.verbose
|
||||
|
||||
|
||||
def ensure_modules_are_enabled_or_warn():
|
||||
"""Ensures that, if a custom configuration file is found with custom configuration for the
|
||||
default tcl module set, then tcl module file generation is enabled. Otherwise, a warning
|
||||
is emitted.
|
||||
"""
|
||||
|
||||
# TODO (v0.21 - Remove this function)
|
||||
# Check if TCL module generation is enabled, return early if it is
|
||||
enabled = spack.config.get("modules:default:enable", [])
|
||||
if "tcl" in enabled:
|
||||
return
|
||||
|
||||
# Check if we have custom TCL module sections
|
||||
for scope in spack.config.CONFIG.file_scopes:
|
||||
# Skip default configuration
|
||||
if scope.name.startswith("default"):
|
||||
continue
|
||||
|
||||
data = spack.config.get("modules:default:tcl", scope=scope.name)
|
||||
if data:
|
||||
config_file = pathlib.Path(scope.path)
|
||||
if not scope.name.startswith("env"):
|
||||
config_file = config_file / "modules.yaml"
|
||||
break
|
||||
else:
|
||||
return
|
||||
|
||||
# If we are here we have a custom "modules" section in "config_file"
|
||||
msg = (
|
||||
f"detected custom TCL modules configuration in {config_file}, while TCL module file "
|
||||
f"generation for the default module set is disabled. "
|
||||
f"In Spack v0.20 module file generation has been disabled by default. To enable "
|
||||
f"it run:\n\n\t$ spack config add 'modules:default:enable:[tcl]'\n"
|
||||
)
|
||||
warnings.warn(msg)
|
||||
|
||||
|
||||
class BaseModuleFileWriter:
|
||||
def __init__(self, spec, module_set_name, explicit=None):
|
||||
self.spec = spec
|
||||
|
@@ -73,10 +73,10 @@
|
||||
#: Valid name for specs and variants. Here we are not using
|
||||
#: the previous "w[\w.-]*" since that would match most
|
||||
#: characters that can be part of a word in any language
|
||||
IDENTIFIER = r"([a-zA-Z_0-9][a-zA-Z_0-9\-]*)"
|
||||
DOTTED_IDENTIFIER = rf"({IDENTIFIER}(\.{IDENTIFIER})+)"
|
||||
GIT_HASH = r"([A-Fa-f0-9]{40})"
|
||||
GIT_VERSION = rf"((git\.({DOTTED_IDENTIFIER}|{IDENTIFIER}))|({GIT_HASH}))"
|
||||
IDENTIFIER = r"(?:[a-zA-Z_0-9][a-zA-Z_0-9\-]*)"
|
||||
DOTTED_IDENTIFIER = rf"(?:{IDENTIFIER}(?:\.{IDENTIFIER})+)"
|
||||
GIT_HASH = r"(?:[A-Fa-f0-9]{40})"
|
||||
GIT_VERSION = rf"(?:(?:git\.(?:{DOTTED_IDENTIFIER}|{IDENTIFIER}))|(?:{GIT_HASH}))"
|
||||
|
||||
NAME = r"[a-zA-Z_0-9][a-zA-Z_0-9\-.]*"
|
||||
|
||||
@@ -85,15 +85,15 @@
|
||||
#: A filename starts either with a "." or a "/" or a "{name}/,
|
||||
# or on Windows, a drive letter followed by a colon and "\"
|
||||
# or "." or {name}\
|
||||
WINDOWS_FILENAME = r"(\.|[a-zA-Z0-9-_]*\\|[a-zA-Z]:\\)([a-zA-Z0-9-_\.\\]*)(\.json|\.yaml)"
|
||||
UNIX_FILENAME = r"(\.|\/|[a-zA-Z0-9-_]*\/)([a-zA-Z0-9-_\.\/]*)(\.json|\.yaml)"
|
||||
WINDOWS_FILENAME = r"(?:\.|[a-zA-Z0-9-_]*\\|[a-zA-Z]:\\)(?:[a-zA-Z0-9-_\.\\]*)(?:\.json|\.yaml)"
|
||||
UNIX_FILENAME = r"(?:\.|\/|[a-zA-Z0-9-_]*\/)(?:[a-zA-Z0-9-_\.\/]*)(?:\.json|\.yaml)"
|
||||
if not IS_WINDOWS:
|
||||
FILENAME = UNIX_FILENAME
|
||||
else:
|
||||
FILENAME = WINDOWS_FILENAME
|
||||
|
||||
VALUE = r"([a-zA-Z_0-9\-+\*.,:=\~\/\\]+)"
|
||||
QUOTED_VALUE = r"[\"']+([a-zA-Z_0-9\-+\*.,:=\~\/\\\s]+)[\"']+"
|
||||
VALUE = r"(?:[a-zA-Z_0-9\-+\*.,:=\~\/\\]+)"
|
||||
QUOTED_VALUE = r"[\"']+(?:[a-zA-Z_0-9\-+\*.,:=\~\/\\\s]+)[\"']+"
|
||||
|
||||
VERSION = r"=?([a-zA-Z0-9_][a-zA-Z_0-9\-\.]*\b)"
|
||||
VERSION_RANGE = rf"({VERSION}\s*:\s*{VERSION}(?!\s*=)|:\s*{VERSION}(?!\s*=)|{VERSION}\s*:|:)"
|
||||
@@ -125,34 +125,34 @@ class TokenType(TokenBase):
|
||||
"""
|
||||
|
||||
# Dependency
|
||||
DEPENDENCY = r"(\^)"
|
||||
DEPENDENCY = r"(?:\^)"
|
||||
# Version
|
||||
VERSION_HASH_PAIR = rf"(@({GIT_VERSION})=({VERSION}))"
|
||||
VERSION = rf"(@\s*({VERSION_LIST}))"
|
||||
VERSION_HASH_PAIR = rf"(?:@(?:{GIT_VERSION})=(?:{VERSION}))"
|
||||
VERSION = rf"(?:@\s*(?:{VERSION_LIST}))"
|
||||
# Variants
|
||||
PROPAGATED_BOOL_VARIANT = rf"((\+\+|~~|--)\s*{NAME})"
|
||||
BOOL_VARIANT = rf"([~+-]\s*{NAME})"
|
||||
PROPAGATED_KEY_VALUE_PAIR = rf"({NAME}\s*==\s*({VALUE}|{QUOTED_VALUE}))"
|
||||
KEY_VALUE_PAIR = rf"({NAME}\s*=\s*({VALUE}|{QUOTED_VALUE}))"
|
||||
PROPAGATED_BOOL_VARIANT = rf"(?:(?:\+\+|~~|--)\s*{NAME})"
|
||||
BOOL_VARIANT = rf"(?:[~+-]\s*{NAME})"
|
||||
PROPAGATED_KEY_VALUE_PAIR = rf"(?:{NAME}\s*==\s*(?:{VALUE}|{QUOTED_VALUE}))"
|
||||
KEY_VALUE_PAIR = rf"(?:{NAME}\s*=\s*(?:{VALUE}|{QUOTED_VALUE}))"
|
||||
# Compilers
|
||||
COMPILER_AND_VERSION = rf"(%\s*({NAME})([\s]*)@\s*({VERSION_LIST}))"
|
||||
COMPILER = rf"(%\s*({NAME}))"
|
||||
COMPILER_AND_VERSION = rf"(?:%\s*(?:{NAME})(?:[\s]*)@\s*(?:{VERSION_LIST}))"
|
||||
COMPILER = rf"(?:%\s*(?:{NAME}))"
|
||||
# FILENAME
|
||||
FILENAME = rf"({FILENAME})"
|
||||
FILENAME = rf"(?:{FILENAME})"
|
||||
# Package name
|
||||
FULLY_QUALIFIED_PACKAGE_NAME = rf"({DOTTED_IDENTIFIER})"
|
||||
UNQUALIFIED_PACKAGE_NAME = rf"({IDENTIFIER})"
|
||||
FULLY_QUALIFIED_PACKAGE_NAME = rf"(?:{DOTTED_IDENTIFIER})"
|
||||
UNQUALIFIED_PACKAGE_NAME = rf"(?:{IDENTIFIER})"
|
||||
# DAG hash
|
||||
DAG_HASH = rf"(/({HASH}))"
|
||||
DAG_HASH = rf"(?:/(?:{HASH}))"
|
||||
# White spaces
|
||||
WS = r"(\s+)"
|
||||
WS = r"(?:\s+)"
|
||||
|
||||
|
||||
class ErrorTokenType(TokenBase):
|
||||
"""Enum with regexes for error analysis"""
|
||||
|
||||
# Unexpected character
|
||||
UNEXPECTED = r"(.[\s]*)"
|
||||
UNEXPECTED = r"(?:.[\s]*)"
|
||||
|
||||
|
||||
class Token:
|
||||
|
@@ -312,21 +312,19 @@ def from_json(cls, stream, repository):
|
||||
def to_json(self, stream):
|
||||
sjson.dump({"patches": self.index}, stream)
|
||||
|
||||
def patch_for_package(self, sha256, pkg):
|
||||
def patch_for_package(self, sha256: str, pkg):
|
||||
"""Look up a patch in the index and build a patch object for it.
|
||||
|
||||
Arguments:
|
||||
sha256 (str): sha256 hash to look up
|
||||
sha256: sha256 hash to look up
|
||||
pkg (spack.package_base.PackageBase): Package object to get patch for.
|
||||
|
||||
We build patch objects lazily because building them requires that
|
||||
we have information about the package's location in its repo.
|
||||
|
||||
"""
|
||||
we have information about the package's location in its repo."""
|
||||
sha_index = self.index.get(sha256)
|
||||
if not sha_index:
|
||||
raise NoSuchPatchError(
|
||||
"Couldn't find patch for package %s with sha256: %s" % (pkg.fullname, sha256)
|
||||
raise PatchLookupError(
|
||||
f"Couldn't find patch for package {pkg.fullname} with sha256: {sha256}"
|
||||
)
|
||||
|
||||
# Find patches for this class or any class it inherits from
|
||||
@@ -335,8 +333,8 @@ def patch_for_package(self, sha256, pkg):
|
||||
if patch_dict:
|
||||
break
|
||||
else:
|
||||
raise NoSuchPatchError(
|
||||
"Couldn't find patch for package %s with sha256: %s" % (pkg.fullname, sha256)
|
||||
raise PatchLookupError(
|
||||
f"Couldn't find patch for package {pkg.fullname} with sha256: {sha256}"
|
||||
)
|
||||
|
||||
# add the sha256 back (we take it out on write to save space,
|
||||
@@ -405,5 +403,9 @@ class NoSuchPatchError(spack.error.SpackError):
|
||||
"""Raised when a patch file doesn't exist."""
|
||||
|
||||
|
||||
class PatchLookupError(NoSuchPatchError):
|
||||
"""Raised when a patch file cannot be located from sha256."""
|
||||
|
||||
|
||||
class PatchDirectiveError(spack.error.SpackError):
|
||||
"""Raised when the wrong arguments are suppled to the patch directive."""
|
||||
|
@@ -2595,6 +2595,7 @@ class SpecBuilder:
|
||||
r"^node_compiler$",
|
||||
r"^package_hash$",
|
||||
r"^root$",
|
||||
r"^variant_default_value_from_cli$",
|
||||
r"^virtual_node$",
|
||||
r"^virtual_root$",
|
||||
]
|
||||
|
@@ -20,7 +20,7 @@
|
||||
|
||||
% Integrity constraints on DAG nodes
|
||||
:- attr("root", PackageNode), not attr("node", PackageNode).
|
||||
:- attr("version", PackageNode), not attr("node", PackageNode).
|
||||
:- attr("version", PackageNode, _), not attr("node", PackageNode), not attr("virtual_node", PackageNode).
|
||||
:- attr("node_version_satisfies", PackageNode), not attr("node", PackageNode).
|
||||
:- attr("hash", PackageNode, _), not attr("node", PackageNode).
|
||||
:- attr("node_platform", PackageNode, _), not attr("node", PackageNode).
|
||||
@@ -58,7 +58,6 @@ unification_set(SetID, ChildNode) :- attr("depends_on", ParentNode, ChildNode, T
|
||||
unification_set(("build", node(X, Child)), node(X, Child))
|
||||
:- attr("depends_on", ParentNode, node(X, Child), Type),
|
||||
Type == "build",
|
||||
SetID != "generic_build",
|
||||
multiple_unification_sets(Child),
|
||||
unification_set(SetID, ParentNode).
|
||||
|
||||
@@ -68,18 +67,18 @@ unification_set("generic_build", node(X, Child))
|
||||
not multiple_unification_sets(Child),
|
||||
unification_set(_, ParentNode).
|
||||
|
||||
% Any dependency of type "build" in a unification set that is in the leaf unification set,
|
||||
% stays in that unification set
|
||||
unification_set(SetID, ChildNode)
|
||||
:- attr("depends_on", ParentNode, ChildNode, Type),
|
||||
Type == "build",
|
||||
SetID == "generic_build",
|
||||
unification_set(SetID, ParentNode).
|
||||
|
||||
unification_set(SetID, VirtualNode)
|
||||
:- provider(PackageNode, VirtualNode),
|
||||
unification_set(SetID, PackageNode).
|
||||
|
||||
% Do not allow split dependencies, for now. This ensures that we don't construct graphs where e.g.
|
||||
% a python extension depends on setuptools@63.4 as a run dependency, but uses e.g. setuptools@68
|
||||
% as a build dependency.
|
||||
%
|
||||
% We'll need to relax the rule before we get to actual cross-compilation
|
||||
:- depends_on(ParentNode, node(X, Dependency)), depends_on(ParentNode, node(Y, Dependency)), X < Y.
|
||||
|
||||
|
||||
#defined multiple_unification_sets/1.
|
||||
|
||||
%----
|
||||
|
@@ -5,6 +5,8 @@
|
||||
import collections
|
||||
from typing import List, Set
|
||||
|
||||
from llnl.util import lang
|
||||
|
||||
import spack.deptypes as dt
|
||||
import spack.package_base
|
||||
import spack.repo
|
||||
@@ -95,8 +97,17 @@ def _compute_cache_values(self):
|
||||
)
|
||||
self._link_run_virtuals.update(self._possible_virtuals)
|
||||
for x in self._link_run:
|
||||
current = spack.repo.PATH.get_pkg_class(x).dependencies_of_type(dt.BUILD)
|
||||
self._direct_build.update(current)
|
||||
build_dependencies = spack.repo.PATH.get_pkg_class(x).dependencies_of_type(dt.BUILD)
|
||||
virtuals, reals = lang.stable_partition(
|
||||
build_dependencies, spack.repo.PATH.is_virtual_safe
|
||||
)
|
||||
|
||||
self._possible_virtuals.update(virtuals)
|
||||
for virtual_dep in virtuals:
|
||||
providers = spack.repo.PATH.providers_for(virtual_dep)
|
||||
self._direct_build.update(str(x) for x in providers)
|
||||
|
||||
self._direct_build.update(reals)
|
||||
|
||||
self._total_build = set(
|
||||
spack.package_base.possible_dependencies(
|
||||
|
@@ -74,6 +74,7 @@
|
||||
import spack.deptypes as dt
|
||||
import spack.error
|
||||
import spack.hash_types as ht
|
||||
import spack.patch
|
||||
import spack.paths
|
||||
import spack.platforms
|
||||
import spack.provider_index
|
||||
@@ -1604,13 +1605,20 @@ def _add_dependency(self, spec: "Spec", *, depflag: dt.DepFlag, virtuals: Tuple[
|
||||
try:
|
||||
dspec = next(dspec for dspec in orig if depflag == dspec.depflag)
|
||||
except StopIteration:
|
||||
raise DuplicateDependencyError("Cannot depend on '%s' twice" % spec)
|
||||
current_deps = ", ".join(
|
||||
dt.flag_to_chars(x.depflag) + " " + x.spec.short_spec for x in orig
|
||||
)
|
||||
raise DuplicateDependencyError(
|
||||
f"{self.short_spec} cannot depend on '{spec.short_spec}' multiple times.\n"
|
||||
f"\tRequired: {dt.flag_to_chars(depflag)}\n"
|
||||
f"\tDependency: {current_deps}"
|
||||
)
|
||||
|
||||
try:
|
||||
dspec.spec.constrain(spec)
|
||||
except spack.error.UnsatisfiableSpecError:
|
||||
raise DuplicateDependencyError(
|
||||
"Cannot depend on incompatible specs '%s' and '%s'" % (dspec.spec, spec)
|
||||
f"Cannot depend on incompatible specs '{dspec.spec}' and '{spec}'"
|
||||
)
|
||||
|
||||
def add_dependency_edge(
|
||||
@@ -3899,7 +3907,15 @@ def patches(self):
|
||||
for sha256 in self.variants["patches"]._patches_in_order_of_appearance:
|
||||
index = spack.repo.PATH.patch_index
|
||||
pkg_cls = spack.repo.PATH.get_pkg_class(self.name)
|
||||
patch = index.patch_for_package(sha256, pkg_cls)
|
||||
try:
|
||||
patch = index.patch_for_package(sha256, pkg_cls)
|
||||
except spack.patch.PatchLookupError as e:
|
||||
raise spack.error.SpecError(
|
||||
f"{e}. This usually means the patch was modified or removed. "
|
||||
"To fix this, either reconcretize or use the original package "
|
||||
"repository"
|
||||
) from e
|
||||
|
||||
self._patches.append(patch)
|
||||
|
||||
return self._patches
|
||||
|
@@ -899,22 +899,21 @@ def test_tarball_doesnt_include_buildinfo_twice(tmpdir):
|
||||
tarball = str(tmpdir.join("prefix.tar.gz"))
|
||||
|
||||
bindist._do_create_tarball(
|
||||
tarfile_path=tarball,
|
||||
binaries_dir=str(p),
|
||||
pkg_dir="my-pkg-prefix",
|
||||
buildinfo={"metadata": "new"},
|
||||
tarfile_path=tarball, binaries_dir=p.strpath, buildinfo={"metadata": "new"}
|
||||
)
|
||||
|
||||
expected_prefix = p.strpath.lstrip("/")
|
||||
|
||||
# Verify we don't have a repeated binary_distribution file,
|
||||
# and that the tarball contains the new one, not the old one.
|
||||
with tarfile.open(tarball) as tar:
|
||||
assert syaml.load(tar.extractfile("my-pkg-prefix/.spack/binary_distribution")) == {
|
||||
assert syaml.load(tar.extractfile(f"{expected_prefix}/.spack/binary_distribution")) == {
|
||||
"metadata": "new"
|
||||
}
|
||||
assert tar.getnames() == [
|
||||
"my-pkg-prefix",
|
||||
"my-pkg-prefix/.spack",
|
||||
"my-pkg-prefix/.spack/binary_distribution",
|
||||
f"{expected_prefix}",
|
||||
f"{expected_prefix}/.spack",
|
||||
f"{expected_prefix}/.spack/binary_distribution",
|
||||
]
|
||||
|
||||
|
||||
@@ -935,15 +934,17 @@ def test_reproducible_tarball_is_reproducible(tmpdir):
|
||||
|
||||
# Create a tarball with a certain mtime of bin/app
|
||||
os.utime(app, times=(0, 0))
|
||||
bindist._do_create_tarball(tarball_1, binaries_dir=p, pkg_dir="pkg", buildinfo=buildinfo)
|
||||
bindist._do_create_tarball(tarball_1, binaries_dir=p.strpath, buildinfo=buildinfo)
|
||||
|
||||
# Do it another time with different mtime of bin/app
|
||||
os.utime(app, times=(10, 10))
|
||||
bindist._do_create_tarball(tarball_2, binaries_dir=p, pkg_dir="pkg", buildinfo=buildinfo)
|
||||
bindist._do_create_tarball(tarball_2, binaries_dir=p.strpath, buildinfo=buildinfo)
|
||||
|
||||
# They should be bitwise identical:
|
||||
assert filecmp.cmp(tarball_1, tarball_2, shallow=False)
|
||||
|
||||
expected_prefix = p.strpath.lstrip("/")
|
||||
|
||||
# Sanity check for contents:
|
||||
with tarfile.open(tarball_1, mode="r") as f:
|
||||
for m in f.getmembers():
|
||||
@@ -951,11 +952,11 @@ def test_reproducible_tarball_is_reproducible(tmpdir):
|
||||
assert m.uname == m.gname == ""
|
||||
|
||||
assert set(f.getnames()) == {
|
||||
"pkg",
|
||||
"pkg/bin",
|
||||
"pkg/bin/app",
|
||||
"pkg/.spack",
|
||||
"pkg/.spack/binary_distribution",
|
||||
f"{expected_prefix}",
|
||||
f"{expected_prefix}/bin",
|
||||
f"{expected_prefix}/bin/app",
|
||||
f"{expected_prefix}/.spack",
|
||||
f"{expected_prefix}/.spack/binary_distribution",
|
||||
}
|
||||
|
||||
|
||||
@@ -979,21 +980,23 @@ def test_tarball_normalized_permissions(tmpdir):
|
||||
with open(data, "w", opener=lambda path, flags: os.open(path, flags, 0o477)) as f:
|
||||
f.write("hello world")
|
||||
|
||||
bindist._do_create_tarball(tarball, binaries_dir=p, pkg_dir="pkg", buildinfo={})
|
||||
bindist._do_create_tarball(tarball, binaries_dir=p.strpath, buildinfo={})
|
||||
|
||||
expected_prefix = p.strpath.lstrip("/")
|
||||
|
||||
with tarfile.open(tarball) as tar:
|
||||
path_to_member = {member.name: member for member in tar.getmembers()}
|
||||
|
||||
# directories should have 0o755
|
||||
assert path_to_member["pkg"].mode == 0o755
|
||||
assert path_to_member["pkg/bin"].mode == 0o755
|
||||
assert path_to_member["pkg/.spack"].mode == 0o755
|
||||
assert path_to_member[f"{expected_prefix}"].mode == 0o755
|
||||
assert path_to_member[f"{expected_prefix}/bin"].mode == 0o755
|
||||
assert path_to_member[f"{expected_prefix}/.spack"].mode == 0o755
|
||||
|
||||
# executable-by-user files should be 0o755
|
||||
assert path_to_member["pkg/bin/app"].mode == 0o755
|
||||
assert path_to_member[f"{expected_prefix}/bin/app"].mode == 0o755
|
||||
|
||||
# not-executable-by-user files should be 0o644
|
||||
assert path_to_member["pkg/share/file"].mode == 0o644
|
||||
assert path_to_member[f"{expected_prefix}/share/file"].mode == 0o644
|
||||
|
||||
|
||||
def test_tarball_common_prefix(dummy_prefix, tmpdir):
|
||||
@@ -1062,3 +1065,50 @@ def test_tarfile_with_files_outside_common_prefix(tmpdir, dummy_prefix):
|
||||
ValueError, match="Tarball contains file /etc/config_file outside of prefix"
|
||||
):
|
||||
bindist._ensure_common_prefix(tarfile.open("broken.tar", mode="r"))
|
||||
|
||||
|
||||
def test_tarfile_of_spec_prefix(tmpdir):
|
||||
"""Tests whether hardlinks, symlinks, files and dirs are added correctly,
|
||||
and that the order of entries is correct."""
|
||||
prefix = tmpdir.mkdir("prefix")
|
||||
prefix.ensure("a_directory", dir=True).join("file").write("hello")
|
||||
prefix.ensure("c_directory", dir=True).join("file").write("hello")
|
||||
prefix.ensure("b_directory", dir=True).join("file").write("hello")
|
||||
prefix.join("file").write("hello")
|
||||
os.symlink(prefix.join("file"), prefix.join("symlink"))
|
||||
os.link(prefix.join("file"), prefix.join("hardlink"))
|
||||
|
||||
file = tmpdir.join("example.tar")
|
||||
|
||||
with tarfile.open(file, mode="w") as tar:
|
||||
bindist.tarfile_of_spec_prefix(tar, prefix.strpath)
|
||||
|
||||
expected_prefix = prefix.strpath.lstrip("/")
|
||||
|
||||
with tarfile.open(file, mode="r") as tar:
|
||||
# Verify that entries are added in depth-first pre-order, files preceding dirs,
|
||||
# entries ordered alphabetically
|
||||
assert tar.getnames() == [
|
||||
f"{expected_prefix}",
|
||||
f"{expected_prefix}/file",
|
||||
f"{expected_prefix}/hardlink",
|
||||
f"{expected_prefix}/symlink",
|
||||
f"{expected_prefix}/a_directory",
|
||||
f"{expected_prefix}/a_directory/file",
|
||||
f"{expected_prefix}/b_directory",
|
||||
f"{expected_prefix}/b_directory/file",
|
||||
f"{expected_prefix}/c_directory",
|
||||
f"{expected_prefix}/c_directory/file",
|
||||
]
|
||||
|
||||
# Check that the types are all correct
|
||||
assert tar.getmember(f"{expected_prefix}").isdir()
|
||||
assert tar.getmember(f"{expected_prefix}/file").isreg()
|
||||
assert tar.getmember(f"{expected_prefix}/hardlink").islnk()
|
||||
assert tar.getmember(f"{expected_prefix}/symlink").issym()
|
||||
assert tar.getmember(f"{expected_prefix}/a_directory").isdir()
|
||||
assert tar.getmember(f"{expected_prefix}/a_directory/file").isreg()
|
||||
assert tar.getmember(f"{expected_prefix}/b_directory").isdir()
|
||||
assert tar.getmember(f"{expected_prefix}/b_directory/file").isreg()
|
||||
assert tar.getmember(f"{expected_prefix}/c_directory").isdir()
|
||||
assert tar.getmember(f"{expected_prefix}/c_directory/file").isreg()
|
||||
|
@@ -1990,8 +1990,7 @@ def test_ci_reproduce(
|
||||
|
||||
ci_cmd("generate", "--output-file", pipeline_path, "--artifacts-root", artifacts_root)
|
||||
|
||||
target_name = spack.platforms.test.Test.default
|
||||
job_name = ci.get_job_name(job_spec, "test-debian6-%s" % target_name, None)
|
||||
job_name = ci.get_job_name(job_spec)
|
||||
|
||||
repro_file = os.path.join(working_dir.strpath, "repro.json")
|
||||
repro_details = {
|
||||
|
@@ -2121,12 +2121,9 @@ def duplicates_test_repository():
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("mutable_config", "duplicates_test_repository")
|
||||
@pytest.mark.only_clingo("Not supported by the original concretizer")
|
||||
class TestConcretizeSeparately:
|
||||
@pytest.mark.parametrize("strategy", ["minimal", "full"])
|
||||
@pytest.mark.skipif(
|
||||
os.environ.get("SPACK_TEST_SOLVER") == "original",
|
||||
reason="Not supported by the original concretizer",
|
||||
)
|
||||
def test_two_gmake(self, strategy):
|
||||
"""Tests that we can concretize a spec with nodes using the same build
|
||||
dependency pinned at different versions.
|
||||
@@ -2151,10 +2148,6 @@ def test_two_gmake(self, strategy):
|
||||
assert len(pinned_gmake) == 1 and pinned_gmake[0].satisfies("@=3.0")
|
||||
|
||||
@pytest.mark.parametrize("strategy", ["minimal", "full"])
|
||||
@pytest.mark.skipif(
|
||||
os.environ.get("SPACK_TEST_SOLVER") == "original",
|
||||
reason="Not supported by the original concretizer",
|
||||
)
|
||||
def test_two_setuptools(self, strategy):
|
||||
"""Tests that we can concretize separate build dependencies, when we are dealing
|
||||
with extensions.
|
||||
@@ -2191,10 +2184,6 @@ def test_two_setuptools(self, strategy):
|
||||
gmake = s["python"].dependencies(name="gmake", deptype="build")
|
||||
assert len(gmake) == 1 and gmake[0].satisfies("@=3.0")
|
||||
|
||||
@pytest.mark.skipif(
|
||||
os.environ.get("SPACK_TEST_SOLVER") == "original",
|
||||
reason="Not supported by the original concretizer",
|
||||
)
|
||||
def test_solution_without_cycles(self):
|
||||
"""Tests that when we concretize a spec with cycles, a fallback kicks in to recompute
|
||||
a solution without cycles.
|
||||
@@ -2207,6 +2196,21 @@ def test_solution_without_cycles(self):
|
||||
assert s["cycle-a"].satisfies("~cycle")
|
||||
assert s["cycle-b"].satisfies("+cycle")
|
||||
|
||||
@pytest.mark.parametrize("strategy", ["minimal", "full"])
|
||||
def test_pure_build_virtual_dependency(self, strategy):
|
||||
"""Tests that we can concretize a pure build virtual dependency, and ensures that
|
||||
pure build virtual dependencies are accounted in the list of possible virtual
|
||||
dependencies.
|
||||
|
||||
virtual-build@1.0
|
||||
| [type=build, virtual=pkgconfig]
|
||||
pkg-config@1.0
|
||||
"""
|
||||
spack.config.CONFIG.set("concretizer:duplicates:strategy", strategy)
|
||||
|
||||
s = Spec("virtual-build").concretized()
|
||||
assert s["pkgconfig"].name == "pkg-config"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"v_str,v_opts,checksummed",
|
||||
|
@@ -4,4 +4,4 @@ concretizer:
|
||||
granularity: microarchitectures
|
||||
host_compatible: false
|
||||
duplicates:
|
||||
strategy: none
|
||||
strategy: minimal
|
||||
|
@@ -17,6 +17,7 @@
|
||||
import spack.package_base
|
||||
import spack.spec
|
||||
from spack.version import (
|
||||
EmptyRangeError,
|
||||
GitVersion,
|
||||
StandardVersion,
|
||||
Version,
|
||||
@@ -695,9 +696,9 @@ def test_version_range_nonempty():
|
||||
|
||||
|
||||
def test_empty_version_range_raises():
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(EmptyRangeError, match="2:1.0 is an empty range"):
|
||||
assert VersionRange("2", "1.0")
|
||||
with pytest.raises(ValueError):
|
||||
with pytest.raises(EmptyRangeError, match="2:1.0 is an empty range"):
|
||||
assert ver("2:1.0")
|
||||
|
||||
|
||||
|
@@ -270,16 +270,6 @@ def visit_Assert(self, node):
|
||||
self.write(", ")
|
||||
self.dispatch(node.msg)
|
||||
|
||||
def visit_Exec(self, node):
|
||||
self.fill("exec ")
|
||||
self.dispatch(node.body)
|
||||
if node.globals:
|
||||
self.write(" in ")
|
||||
self.dispatch(node.globals)
|
||||
if node.locals:
|
||||
self.write(", ")
|
||||
self.dispatch(node.locals)
|
||||
|
||||
def visit_Global(self, node):
|
||||
self.fill("global ")
|
||||
interleave(lambda: self.write(", "), self.write, node.names)
|
||||
@@ -338,31 +328,6 @@ def visit_Try(self, node):
|
||||
with self.block():
|
||||
self.dispatch(node.finalbody)
|
||||
|
||||
def visit_TryExcept(self, node):
|
||||
self.fill("try")
|
||||
with self.block():
|
||||
self.dispatch(node.body)
|
||||
|
||||
for ex in node.handlers:
|
||||
self.dispatch(ex)
|
||||
if node.orelse:
|
||||
self.fill("else")
|
||||
with self.block():
|
||||
self.dispatch(node.orelse)
|
||||
|
||||
def visit_TryFinally(self, node):
|
||||
if len(node.body) == 1 and isinstance(node.body[0], ast.TryExcept):
|
||||
# try-except-finally
|
||||
self.dispatch(node.body)
|
||||
else:
|
||||
self.fill("try")
|
||||
with self.block():
|
||||
self.dispatch(node.body)
|
||||
|
||||
self.fill("finally")
|
||||
with self.block():
|
||||
self.dispatch(node.finalbody)
|
||||
|
||||
def visit_ExceptHandler(self, node):
|
||||
self.fill("except")
|
||||
if node.type:
|
||||
@@ -380,6 +345,10 @@ def visit_ClassDef(self, node):
|
||||
self.fill("@")
|
||||
self.dispatch(deco)
|
||||
self.fill("class " + node.name)
|
||||
if getattr(node, "type_params", False):
|
||||
self.write("[")
|
||||
interleave(lambda: self.write(", "), self.dispatch, node.type_params)
|
||||
self.write("]")
|
||||
with self.delimit_if("(", ")", condition=node.bases or node.keywords):
|
||||
comma = False
|
||||
for e in node.bases:
|
||||
@@ -394,21 +363,6 @@ def visit_ClassDef(self, node):
|
||||
else:
|
||||
comma = True
|
||||
self.dispatch(e)
|
||||
if sys.version_info[:2] < (3, 5):
|
||||
if node.starargs:
|
||||
if comma:
|
||||
self.write(", ")
|
||||
else:
|
||||
comma = True
|
||||
self.write("*")
|
||||
self.dispatch(node.starargs)
|
||||
if node.kwargs:
|
||||
if comma:
|
||||
self.write(", ")
|
||||
else:
|
||||
comma = True
|
||||
self.write("**")
|
||||
self.dispatch(node.kwargs)
|
||||
with self.block():
|
||||
self.dispatch(node.body)
|
||||
|
||||
@@ -425,6 +379,10 @@ def __FunctionDef_helper(self, node, fill_suffix):
|
||||
self.dispatch(deco)
|
||||
def_str = fill_suffix + " " + node.name
|
||||
self.fill(def_str)
|
||||
if getattr(node, "type_params", False):
|
||||
self.write("[")
|
||||
interleave(lambda: self.write(", "), self.dispatch, node.type_params)
|
||||
self.write("]")
|
||||
with self.delimit("(", ")"):
|
||||
self.dispatch(node.args)
|
||||
if getattr(node, "returns", False):
|
||||
@@ -640,11 +598,6 @@ def visit_Name(self, node):
|
||||
def visit_NameConstant(self, node):
|
||||
self.write(repr(node.value))
|
||||
|
||||
def visit_Repr(self, node):
|
||||
self.write("`")
|
||||
self.dispatch(node.value)
|
||||
self.write("`")
|
||||
|
||||
def _write_constant(self, value):
|
||||
if isinstance(value, (float, complex)):
|
||||
# Substitute overflowing decimal literal for AST infinities.
|
||||
@@ -985,16 +938,10 @@ def visit_arguments(self, node):
|
||||
self.write(", ")
|
||||
self.write("*")
|
||||
if node.vararg:
|
||||
if hasattr(node.vararg, "arg"):
|
||||
self.write(node.vararg.arg)
|
||||
if node.vararg.annotation:
|
||||
self.write(": ")
|
||||
self.dispatch(node.vararg.annotation)
|
||||
else:
|
||||
self.write(node.vararg)
|
||||
if getattr(node, "varargannotation", None):
|
||||
self.write(": ")
|
||||
self.dispatch(node.varargannotation)
|
||||
self.write(node.vararg.arg)
|
||||
if node.vararg.annotation:
|
||||
self.write(": ")
|
||||
self.dispatch(node.vararg.annotation)
|
||||
|
||||
# keyword-only arguments
|
||||
if getattr(node, "kwonlyargs", False):
|
||||
@@ -1014,16 +961,10 @@ def visit_arguments(self, node):
|
||||
first = False
|
||||
else:
|
||||
self.write(", ")
|
||||
if hasattr(node.kwarg, "arg"):
|
||||
self.write("**" + node.kwarg.arg)
|
||||
if node.kwarg.annotation:
|
||||
self.write(": ")
|
||||
self.dispatch(node.kwarg.annotation)
|
||||
else:
|
||||
self.write("**" + node.kwarg)
|
||||
if getattr(node, "kwargannotation", None):
|
||||
self.write(": ")
|
||||
self.dispatch(node.kwargannotation)
|
||||
self.write("**" + node.kwarg.arg)
|
||||
if node.kwarg.annotation:
|
||||
self.write(": ")
|
||||
self.dispatch(node.kwarg.annotation)
|
||||
|
||||
def visit_keyword(self, node):
|
||||
if node.arg is None:
|
||||
@@ -1138,3 +1079,23 @@ def visit_MatchOr(self, node):
|
||||
with self.require_parens(_Precedence.BOR, node):
|
||||
self.set_precedence(pnext(_Precedence.BOR), *node.patterns)
|
||||
interleave(lambda: self.write(" | "), self.dispatch, node.patterns)
|
||||
|
||||
def visit_TypeAlias(self, node):
|
||||
self.fill("type ")
|
||||
self.dispatch(node.name)
|
||||
self.write(" = ")
|
||||
self.dispatch(node.value)
|
||||
|
||||
def visit_TypeVar(self, node):
|
||||
self.write(node.name)
|
||||
if node.bound:
|
||||
self.write(": ")
|
||||
self.dispatch(node.bound)
|
||||
|
||||
def visit_TypeVarTuple(self, node):
|
||||
self.write("*")
|
||||
self.write(node.name)
|
||||
|
||||
def visit_ParamSpec(self, node):
|
||||
self.write("**")
|
||||
self.write(node.name)
|
||||
|
@@ -16,6 +16,7 @@
|
||||
"""
|
||||
|
||||
from .common import (
|
||||
EmptyRangeError,
|
||||
VersionChecksumError,
|
||||
VersionError,
|
||||
VersionLookupError,
|
||||
@@ -54,5 +55,6 @@
|
||||
"VersionError",
|
||||
"VersionChecksumError",
|
||||
"VersionLookupError",
|
||||
"EmptyRangeError",
|
||||
"any_version",
|
||||
]
|
||||
|
@@ -35,3 +35,7 @@ class VersionChecksumError(VersionError):
|
||||
|
||||
class VersionLookupError(VersionError):
|
||||
"""Raised for errors looking up git commits as versions."""
|
||||
|
||||
|
||||
class EmptyRangeError(VersionError):
|
||||
"""Raised when constructing an empty version range."""
|
||||
|
@@ -12,6 +12,7 @@
|
||||
|
||||
from .common import (
|
||||
COMMIT_VERSION,
|
||||
EmptyRangeError,
|
||||
VersionLookupError,
|
||||
infinity_versions,
|
||||
is_git_version,
|
||||
@@ -595,14 +596,17 @@ def up_to(self, index) -> StandardVersion:
|
||||
class ClosedOpenRange:
|
||||
def __init__(self, lo: StandardVersion, hi: StandardVersion):
|
||||
if hi < lo:
|
||||
raise ValueError(f"{lo}:{hi} is an empty range")
|
||||
raise EmptyRangeError(f"{lo}..{hi} is an empty range")
|
||||
self.lo: StandardVersion = lo
|
||||
self.hi: StandardVersion = hi
|
||||
|
||||
@classmethod
|
||||
def from_version_range(cls, lo: StandardVersion, hi: StandardVersion):
|
||||
"""Construct ClosedOpenRange from lo:hi range."""
|
||||
return ClosedOpenRange(lo, next_version(hi))
|
||||
try:
|
||||
return ClosedOpenRange(lo, next_version(hi))
|
||||
except EmptyRangeError as e:
|
||||
raise EmptyRangeError(f"{lo}:{hi} is an empty range") from e
|
||||
|
||||
def __str__(self):
|
||||
# This simplifies 3.1:<3.2 to 3.1:3.1 to 3.1
|
||||
|
@@ -165,6 +165,10 @@ default:
|
||||
extends: [ ".generate-base" ]
|
||||
tags: ["spack", "public", "medium", "aarch64"]
|
||||
|
||||
.generate-neoverse_v1:
|
||||
extends: [ ".generate-base" ]
|
||||
tags: ["spack", "public", "medium", "aarch64", "graviton3"]
|
||||
|
||||
.generate-deprecated:
|
||||
extends: [ ".base-job" ]
|
||||
stage: generate
|
||||
@@ -287,7 +291,7 @@ protected-publish:
|
||||
|
||||
e4s-generate:
|
||||
extends: [ ".e4s", ".generate-x86_64"]
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-amd64-gcc-11.4:2023.08.01
|
||||
|
||||
e4s-build:
|
||||
extends: [ ".e4s", ".build" ]
|
||||
@@ -300,6 +304,52 @@ e4s-build:
|
||||
- artifacts: True
|
||||
job: e4s-generate
|
||||
|
||||
########################################
|
||||
# E4S Neoverse V1 pipeline
|
||||
########################################
|
||||
.e4s-neoverse_v1:
|
||||
extends: [ ".linux_neoverse_v1" ]
|
||||
variables:
|
||||
SPACK_CI_STACK_NAME: e4s-neoverse_v1
|
||||
|
||||
e4s-neoverse_v1-generate:
|
||||
extends: [ ".e4s-neoverse_v1", ".generate-neoverse_v1" ]
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-arm64-gcc-11.4:2023.08.01
|
||||
|
||||
e4s-neoverse_v1-build:
|
||||
extends: [ ".e4s-neoverse_v1", ".build" ]
|
||||
trigger:
|
||||
include:
|
||||
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
||||
job: e4s-neoverse_v1-generate
|
||||
strategy: depend
|
||||
needs:
|
||||
- artifacts: True
|
||||
job: e4s-neoverse_v1-generate
|
||||
|
||||
########################################
|
||||
# E4S ROCm External pipeline
|
||||
########################################
|
||||
.e4s-rocm-external:
|
||||
extends: [ ".linux_x86_64_v3" ]
|
||||
variables:
|
||||
SPACK_CI_STACK_NAME: e4s-rocm-external
|
||||
|
||||
e4s-rocm-external-generate:
|
||||
extends: [ ".e4s-rocm-external", ".generate-x86_64"]
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-amd64-gcc-11.4-rocm5.4.3:2023.08.01
|
||||
|
||||
e4s-rocm-external-build:
|
||||
extends: [ ".e4s-rocm-external", ".build" ]
|
||||
trigger:
|
||||
include:
|
||||
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
||||
job: e4s-rocm-external-generate
|
||||
strategy: depend
|
||||
needs:
|
||||
- artifacts: True
|
||||
job: e4s-rocm-external-generate
|
||||
|
||||
########################################
|
||||
# GPU Testing Pipeline
|
||||
########################################
|
||||
@@ -333,7 +383,7 @@ gpu-tests-build:
|
||||
|
||||
e4s-oneapi-generate:
|
||||
extends: [ ".e4s-oneapi", ".generate-x86_64"]
|
||||
image: ecpe4s/ubuntu20.04-runner-x86_64-oneapi:2023.07.21
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-amd64-oneapi-2023.2.1:2023.08.01
|
||||
|
||||
e4s-oneapi-build:
|
||||
extends: [ ".e4s-oneapi", ".build" ]
|
||||
@@ -350,7 +400,7 @@ e4s-oneapi-build:
|
||||
# E4S on Power
|
||||
########################################
|
||||
.e4s-power-generate-tags-and-image:
|
||||
image: { "name": "ecpe4s/ubuntu20.04-runner-ppc64le:2023-01-01", "entrypoint": [""] }
|
||||
image: { "name": "ghcr.io/spack/ubuntu20.04-runner-ppc64-gcc-11.4:2023.08.01", "entrypoint": [""] }
|
||||
tags: ["spack", "public", "large", "ppc64le"]
|
||||
|
||||
.e4s-power:
|
||||
@@ -827,16 +877,16 @@ e4s-cray-rhel-build:
|
||||
variables:
|
||||
SPACK_CI_STACK_NAME: e4s-cray-sles
|
||||
|
||||
e4s-cray-sles-generate:
|
||||
extends: [ ".generate-cray-sles", ".e4s-cray-sles" ]
|
||||
# e4s-cray-sles-generate:
|
||||
# extends: [ ".generate-cray-sles", ".e4s-cray-sles" ]
|
||||
|
||||
e4s-cray-sles-build:
|
||||
extends: [ ".build", ".e4s-cray-sles" ]
|
||||
trigger:
|
||||
include:
|
||||
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
||||
job: e4s-cray-sles-generate
|
||||
strategy: depend
|
||||
needs:
|
||||
- artifacts: True
|
||||
job: e4s-cray-sles-generate
|
||||
# e4s-cray-sles-build:
|
||||
# extends: [ ".build", ".e4s-cray-sles" ]
|
||||
# trigger:
|
||||
# include:
|
||||
# - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
||||
# job: e4s-cray-sles-generate
|
||||
# strategy: depend
|
||||
# needs:
|
||||
# - artifacts: True
|
||||
# job: e4s-cray-sles-generate
|
||||
|
@@ -4,22 +4,16 @@ spack:
|
||||
cmake:
|
||||
variants: ~ownlibs
|
||||
ecp-data-vis-sdk:
|
||||
require:
|
||||
- one_of:
|
||||
- +ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf +sensei +sz +unifyfs
|
||||
+veloc +vtkm +zfp
|
||||
- one_of:
|
||||
- +paraview ~visit
|
||||
- ~paraview +visit
|
||||
require: "+ascent +adios2 +cinema +darshan +faodel +hdf5 +pnetcdf +sensei +sz +unifyfs +veloc +vtkm +zfp"
|
||||
hdf5:
|
||||
require:
|
||||
- one_of: ['@1.14', '@1.12']
|
||||
mesa:
|
||||
require: +glx +osmesa +opengl ~opengles +llvm
|
||||
require: "+glx +osmesa +opengl ~opengles +llvm"
|
||||
libosmesa:
|
||||
require: mesa +osmesa
|
||||
require: "mesa +osmesa"
|
||||
libglx:
|
||||
require: mesa +glx
|
||||
require: "mesa +glx"
|
||||
ospray:
|
||||
require: '@2.8.0 +denoiser +mpi'
|
||||
llvm:
|
||||
@@ -57,9 +51,11 @@ spack:
|
||||
# Test ParaView and VisIt builds with different GL backends
|
||||
- matrix:
|
||||
- [$sdk_base_spec]
|
||||
- ["+paraview ~visit"]
|
||||
- [$^paraview_specs]
|
||||
- matrix:
|
||||
- [$sdk_base_spec]
|
||||
- ["~paraview +visit"]
|
||||
- [$^visit_specs]
|
||||
|
||||
mirrors: {mirror: s3://spack-binaries/develop/data-vis-sdk}
|
||||
|
@@ -20,42 +20,156 @@ spack:
|
||||
target: [zen4]
|
||||
variants: +mpi
|
||||
|
||||
tbb:
|
||||
require: "intel-tbb"
|
||||
binutils:
|
||||
variants: +ld +gold +headers +libiberty ~nls
|
||||
hdf5:
|
||||
variants: +fortran +hl +shared
|
||||
libunwind:
|
||||
variants: +pic +xz
|
||||
ncurses:
|
||||
require: '@6.3 +termlib'
|
||||
openblas:
|
||||
require: '@0.3.20'
|
||||
variants: threads=openmp
|
||||
xz:
|
||||
variants: +pic
|
||||
boost:
|
||||
variants: +python +filesystem +iostreams +system
|
||||
cuda:
|
||||
version: [11.7.0]
|
||||
elfutils:
|
||||
variants: +bzip2 ~nls +xz
|
||||
require: '%gcc'
|
||||
require: "%gcc"
|
||||
hdf5:
|
||||
variants: +fortran +hl +shared
|
||||
libfabric:
|
||||
variants: fabrics=sockets,tcp,udp,rxm
|
||||
libunwind:
|
||||
variants: +pic +xz
|
||||
mpich:
|
||||
variants: ~wrapperrpath
|
||||
ncurses:
|
||||
variants: +termlib
|
||||
paraview:
|
||||
# Don't build GUI support or GLX rendering for HPC/container deployments
|
||||
require: "@5.11 ~qt+osmesa"
|
||||
python:
|
||||
version: [3.8.13]
|
||||
trilinos:
|
||||
require:
|
||||
- one_of: [+amesos +amesos2 +anasazi +aztec +boost +epetra +epetraext +ifpack
|
||||
+intrepid +intrepid2 +isorropia +kokkos +minitensor +nox +piro +phalanx
|
||||
+rol +rythmos +sacado +stk +shards +stratimikos +tempus +tpetra
|
||||
+trilinoscouplings +zoltan]
|
||||
- one_of: [gotype=long_long, gotype=all]
|
||||
- one_of: [~ml ~muelu ~zoltan2 ~teko, +ml +muelu +zoltan2 +teko]
|
||||
xz:
|
||||
variants: +pic
|
||||
mesa:
|
||||
version: [21.3.8]
|
||||
unzip:
|
||||
require: '%gcc'
|
||||
require: "%gcc"
|
||||
|
||||
specs:
|
||||
- adios2
|
||||
- amrex
|
||||
# CPU
|
||||
- adios
|
||||
- aml
|
||||
- arborx
|
||||
- argobots
|
||||
- bolt
|
||||
- butterflypack
|
||||
- boost +python +filesystem +iostreams +system
|
||||
- cabana
|
||||
- chai ~benchmarks ~tests
|
||||
- conduit
|
||||
- datatransferkit
|
||||
- flecsi
|
||||
- fortrilinos
|
||||
- ginkgo
|
||||
- globalarrays
|
||||
- gmp
|
||||
- gotcha
|
||||
- h5bench
|
||||
- hdf5-vol-async
|
||||
- hdf5-vol-cache
|
||||
- hdf5-vol-log
|
||||
- heffte +fftw
|
||||
- hypre
|
||||
- kokkos
|
||||
- kokkos-kernels
|
||||
- kokkos +openmp
|
||||
- kokkos-kernels +openmp
|
||||
- lammps
|
||||
- legion
|
||||
- libnrm
|
||||
- libquo
|
||||
- libunwind
|
||||
- mercury
|
||||
- metall
|
||||
- mfem
|
||||
- mgard +serial +openmp +timing +unstructured ~cuda
|
||||
- mpark-variant
|
||||
- mpifileutils ~xattr
|
||||
- nccmp
|
||||
- nco
|
||||
- netlib-scalapack
|
||||
- omega-h
|
||||
- openmpi
|
||||
- openpmd-api
|
||||
- papi
|
||||
- papyrus
|
||||
- pdt
|
||||
- pumi
|
||||
- qthreads scheduler=distrib
|
||||
- raja
|
||||
- slate ~cuda
|
||||
- stc
|
||||
- sundials
|
||||
- superlu
|
||||
- superlu-dist
|
||||
# - flux-core # python cray sles issue
|
||||
- swig
|
||||
- swig@4.0.2-fortran
|
||||
- sz3
|
||||
- tasmanian
|
||||
- trilinos +belos +ifpack2 +stokhos
|
||||
- turbine
|
||||
- umap
|
||||
- umpire
|
||||
- veloc
|
||||
- wannier90
|
||||
|
||||
# ERRORS
|
||||
# - caliper # caliper: ModuleNotFoundError: No module named 'math'; src/mpi/services/mpiwrap/CMakeFiles/caliper-mpiwrap.dir/build.make:77: src/mpi/services/mpiwrap/Wrapper.cpp] Error 1
|
||||
# - charliecloud # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - flit # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - flux-core # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - hpx max_cpu_count=512 networking=mpi # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +mgard # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - petsc # petsc: SyntaxError: (unicode error) \N escapes not supported (can't load unicodedata module)
|
||||
# - plumed # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - precice # petsc: SyntaxError: (unicode error) \N escapes not supported (can't load unicodedata module)
|
||||
# - py-h5py +mpi # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - py-h5py ~mpi # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - py-libensemble +mpi +nlopt # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - py-petsc4py # python: Could not find platform dependent libraries <exec_prefix>
|
||||
# - slepc # petsc: SyntaxError: (unicode error) \N escapes not supported (can't load unicodedata module)
|
||||
# - tau +mpi +python # tau: ERROR: Cannot find python library (libpython*.[so|dylib]
|
||||
|
||||
# HOLDING THESE BACK UNTIL CRAY SLES CAPACITY IS EXPANDED AT UO
|
||||
# - alquimia
|
||||
# - amrex
|
||||
# - archer
|
||||
# - axom
|
||||
# - bricks
|
||||
# - dealii
|
||||
# - dyninst
|
||||
# - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp ^hdf5@1.14 # llvm@14.0.6: ?;
|
||||
# - exaworks
|
||||
# - gasnet
|
||||
# - gptune
|
||||
# - hpctoolkit
|
||||
# - nrm
|
||||
# - nvhpc
|
||||
# - parsec ~cuda
|
||||
# - phist
|
||||
# - plasma
|
||||
# - py-jupyterhub
|
||||
# - py-warpx
|
||||
# - quantum-espresso
|
||||
# - scr
|
||||
# - strumpack ~slate
|
||||
# - upcxx
|
||||
# - variorum
|
||||
# - xyce +mpi +shared +pymi +pymi_static_tpls ^trilinos~shylu
|
||||
|
||||
mirrors: { "mirror": "s3://spack-binaries/develop/e4s-cray-sles" }
|
||||
|
||||
|
@@ -0,0 +1,351 @@
|
||||
spack:
|
||||
view: false
|
||||
|
||||
concretizer:
|
||||
reuse: false
|
||||
unify: false
|
||||
|
||||
packages:
|
||||
all:
|
||||
require: '%gcc@11.4.0 target=neoverse_v1'
|
||||
providers:
|
||||
blas: [openblas]
|
||||
mpi: [mpich]
|
||||
variants: +mpi
|
||||
binutils:
|
||||
variants: +ld +gold +headers +libiberty ~nls
|
||||
elfutils:
|
||||
variants: +bzip2 ~nls +xz
|
||||
hdf5:
|
||||
variants: +fortran +hl +shared
|
||||
libfabric:
|
||||
variants: fabrics=sockets,tcp,udp,rxm
|
||||
libunwind:
|
||||
variants: +pic +xz
|
||||
openblas:
|
||||
variants: threads=openmp
|
||||
trilinos:
|
||||
variants: +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext
|
||||
+ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu
|
||||
+nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos
|
||||
+teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
xz:
|
||||
variants: +pic
|
||||
mesa:
|
||||
version: [21.3.8]
|
||||
mpi:
|
||||
require: mpich
|
||||
mpich:
|
||||
require: '~wrapperrpath ~hwloc'
|
||||
ncurses:
|
||||
require: '@6.3 +termlib'
|
||||
tbb:
|
||||
require: intel-tbb
|
||||
boost:
|
||||
version: [1.79.0]
|
||||
variants: +atomic +chrono +container +date_time +exception +filesystem +graph
|
||||
+iostreams +locale +log +math +mpi +multithreaded +program_options +random
|
||||
+regex +serialization +shared +signals +stacktrace +system +test +thread +timer
|
||||
cxxstd=17 visibility=global
|
||||
libffi:
|
||||
require: "@3.4.4"
|
||||
vtk-m:
|
||||
require: "+examples"
|
||||
cuda:
|
||||
version: [11.8.0]
|
||||
|
||||
compilers:
|
||||
- compiler:
|
||||
spec: gcc@11.4.0
|
||||
paths:
|
||||
cc: /usr/bin/gcc
|
||||
cxx: /usr/bin/g++
|
||||
f77: /usr/bin/gfortran
|
||||
fc: /usr/bin/gfortran
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: aarch64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
|
||||
specs:
|
||||
# CPU
|
||||
- adios
|
||||
- alquimia
|
||||
- aml
|
||||
- amrex
|
||||
- arborx
|
||||
- argobots
|
||||
- ascent # ecp dav
|
||||
- axom
|
||||
- bolt
|
||||
- boost
|
||||
- butterflypack
|
||||
- cabana
|
||||
- caliper
|
||||
- chai ~benchmarks ~tests
|
||||
- charliecloud
|
||||
- conduit
|
||||
- datatransferkit
|
||||
- dyninst
|
||||
- ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +visit: ?
|
||||
- exaworks
|
||||
- flecsi
|
||||
- flit
|
||||
- flux-core
|
||||
- fortrilinos
|
||||
- gasnet
|
||||
- ginkgo
|
||||
- globalarrays
|
||||
- gmp
|
||||
- gotcha
|
||||
- gptune ~mpispawn
|
||||
- h5bench
|
||||
- hdf5-vol-async
|
||||
- hdf5-vol-cache
|
||||
- hdf5-vol-log
|
||||
- heffte +fftw
|
||||
- hpctoolkit
|
||||
- hpx networking=mpi
|
||||
- hypre
|
||||
- kokkos +openmp
|
||||
- kokkos-kernels +openmp
|
||||
- lammps
|
||||
- lbann
|
||||
- legion
|
||||
- libnrm
|
||||
- libquo
|
||||
- libunwind
|
||||
- loki
|
||||
- mercury
|
||||
- metall
|
||||
- mfem
|
||||
- mgard +serial +openmp +timing +unstructured ~cuda
|
||||
- mpark-variant
|
||||
- mpifileutils ~xattr
|
||||
- nccmp
|
||||
- nco
|
||||
- netlib-scalapack
|
||||
- nrm
|
||||
- nvhpc
|
||||
- omega-h
|
||||
- openfoam
|
||||
- openmpi
|
||||
- openpmd-api
|
||||
- papi
|
||||
- papyrus
|
||||
- parsec ~cuda
|
||||
- pdt
|
||||
- petsc
|
||||
- phist
|
||||
- plasma
|
||||
- plumed
|
||||
- precice
|
||||
- pruners-ninja
|
||||
- pumi
|
||||
- py-h5py
|
||||
- py-jupyterhub
|
||||
- py-libensemble
|
||||
- py-petsc4py
|
||||
- py-warpx
|
||||
- qthreads scheduler=distrib
|
||||
- quantum-espresso
|
||||
- raja
|
||||
- rempi
|
||||
- scr
|
||||
- slate ~cuda
|
||||
- slepc
|
||||
- stc
|
||||
- strumpack ~slate
|
||||
- sundials
|
||||
- superlu
|
||||
- superlu-dist
|
||||
- swig@4.0.2-fortran
|
||||
- sz3
|
||||
- tasmanian
|
||||
- tau +mpi +python
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
- turbine
|
||||
- umap
|
||||
- umpire
|
||||
- upcxx
|
||||
- wannier90
|
||||
- xyce +mpi +shared +pymi +pymi_static_tpls
|
||||
# INCLUDED IN ECP DAV CPU
|
||||
- adios2
|
||||
- darshan-runtime
|
||||
- darshan-util
|
||||
- faodel
|
||||
- hdf5
|
||||
- libcatalyst
|
||||
- parallel-netcdf
|
||||
- paraview
|
||||
- py-cinemasci
|
||||
- sz
|
||||
- unifyfs
|
||||
- veloc
|
||||
# - visit # silo: https://github.com/spack/spack/issues/39538
|
||||
- vtk-m
|
||||
- zfp
|
||||
# --
|
||||
# - archer # part of llvm +omp_tsan
|
||||
# - bricks ~cuda # not respecting target=aarch64?
|
||||
# - dealii # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
|
||||
# - geopm # geopm: https://github.com/spack/spack/issues/38795
|
||||
# - libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp # py-numcodecs@0.7.3: gcc: error: unrecognized command-line option '-mno-sse2'
|
||||
# - variorum # variorum: https://github.com/spack/spack/issues/38786
|
||||
|
||||
# CUDA NOARCH
|
||||
- flux-core +cuda
|
||||
- hpctoolkit +cuda
|
||||
- papi +cuda
|
||||
- tau +mpi +cuda
|
||||
# --
|
||||
# - bricks +cuda # not respecting target=aarch64?
|
||||
# - legion +cuda # legion: needs NVIDIA driver
|
||||
|
||||
# CUDA 75
|
||||
- amrex +cuda cuda_arch=75
|
||||
- arborx +cuda cuda_arch=75 ^kokkos +wrapper
|
||||
- cabana +cuda cuda_arch=75 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=75
|
||||
- caliper +cuda cuda_arch=75
|
||||
- chai ~benchmarks ~tests +cuda cuda_arch=75 ^umpire ~shared
|
||||
- flecsi +cuda cuda_arch=75
|
||||
- ginkgo +cuda cuda_arch=75
|
||||
- heffte +cuda cuda_arch=75
|
||||
- hpx +cuda cuda_arch=75
|
||||
- hypre +cuda cuda_arch=75
|
||||
- kokkos +wrapper +cuda cuda_arch=75
|
||||
- kokkos-kernels +cuda cuda_arch=75 ^kokkos +wrapper +cuda cuda_arch=75
|
||||
- magma +cuda cuda_arch=75
|
||||
- mfem +cuda cuda_arch=75
|
||||
- mgard +serial +openmp +timing +unstructured +cuda cuda_arch=75
|
||||
- omega-h +cuda cuda_arch=75
|
||||
- parsec +cuda cuda_arch=75
|
||||
- petsc +cuda cuda_arch=75
|
||||
- raja +cuda cuda_arch=75
|
||||
- slate +cuda cuda_arch=75
|
||||
- strumpack ~slate +cuda cuda_arch=75
|
||||
- sundials +cuda cuda_arch=75
|
||||
- superlu-dist +cuda cuda_arch=75
|
||||
- tasmanian +cuda cuda_arch=75
|
||||
- trilinos +cuda cuda_arch=75
|
||||
- umpire ~shared +cuda cuda_arch=75
|
||||
# INCLUDED IN ECP DAV CUDA
|
||||
- adios2 +cuda cuda_arch=75
|
||||
- paraview +cuda cuda_arch=75
|
||||
- vtk-m +cuda cuda_arch=75
|
||||
- zfp +cuda cuda_arch=75
|
||||
# --
|
||||
# - ascent +cuda cuda_arch=75 # ascent: https://github.com/spack/spack/issues/38045
|
||||
# - axom +cuda cuda_arch=75 # axom: https://github.com/spack/spack/issues/29520
|
||||
# - cusz +cuda cuda_arch=75 # cusz: https://github.com/spack/spack/issues/38787
|
||||
# - dealii +cuda cuda_arch=75 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
|
||||
# - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=75 # embree: https://github.com/spack/spack/issues/39534
|
||||
# - lammps +cuda cuda_arch=75 # lammps: needs NVIDIA driver
|
||||
# - lbann +cuda cuda_arch=75 # lbann: https://github.com/spack/spack/issues/38788
|
||||
# - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf ~cusz +mgard +cuda cuda_arch=75 # libpressio: CMake Error at CMakeLists.txt:498 (find_library): Could not find CUFile_LIBRARY using the following names: cufile ; +cusz: https://github.com/spack/spack/issues/38787
|
||||
# - py-torch +cuda cuda_arch=75 # skipped, installed by other means
|
||||
# - slepc +cuda cuda_arch=75 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
|
||||
# - upcxx +cuda cuda_arch=75 # upcxx: needs NVIDIA driver
|
||||
|
||||
# CUDA 80
|
||||
- amrex +cuda cuda_arch=80
|
||||
- arborx +cuda cuda_arch=80 ^kokkos +wrapper
|
||||
- cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80
|
||||
- caliper +cuda cuda_arch=80
|
||||
- chai ~benchmarks ~tests +cuda cuda_arch=80 ^umpire ~shared
|
||||
- flecsi +cuda cuda_arch=80
|
||||
- ginkgo +cuda cuda_arch=80
|
||||
- heffte +cuda cuda_arch=80
|
||||
- hpx +cuda cuda_arch=80
|
||||
- hypre +cuda cuda_arch=80
|
||||
- kokkos +wrapper +cuda cuda_arch=80
|
||||
- kokkos-kernels +cuda cuda_arch=80 ^kokkos +wrapper +cuda cuda_arch=80
|
||||
- magma +cuda cuda_arch=80
|
||||
- mfem +cuda cuda_arch=80
|
||||
- mgard +serial +openmp +timing +unstructured +cuda cuda_arch=80
|
||||
- omega-h +cuda cuda_arch=80
|
||||
- parsec +cuda cuda_arch=80
|
||||
- petsc +cuda cuda_arch=80
|
||||
- raja +cuda cuda_arch=80
|
||||
- slate +cuda cuda_arch=80
|
||||
- strumpack ~slate +cuda cuda_arch=80
|
||||
- sundials +cuda cuda_arch=80
|
||||
- superlu-dist +cuda cuda_arch=80
|
||||
- tasmanian +cuda cuda_arch=80
|
||||
- trilinos +cuda cuda_arch=80
|
||||
- umpire ~shared +cuda cuda_arch=80
|
||||
# INCLUDED IN ECP DAV CUDA
|
||||
- adios2 +cuda cuda_arch=80
|
||||
- paraview +cuda cuda_arch=80
|
||||
- vtk-m +cuda cuda_arch=80
|
||||
- zfp +cuda cuda_arch=80
|
||||
# --
|
||||
# - ascent +cuda cuda_arch=80 # ascent: https://github.com/spack/spack/issues/38045
|
||||
# - axom +cuda cuda_arch=80 # axom: https://github.com/spack/spack/issues/29520
|
||||
# - cusz +cuda cuda_arch=80 # cusz: https://github.com/spack/spack/issues/38787
|
||||
# - dealii +cuda cuda_arch=80 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
|
||||
# - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # embree: https://github.com/spack/spack/issues/39534
|
||||
# - lammps +cuda cuda_arch=80 # lammps: needs NVIDIA driver
|
||||
# - lbann +cuda cuda_arch=80 # lbann: https://github.com/spack/spack/issues/38788
|
||||
# - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf ~cusz +mgard +cuda cuda_arch=80 # libpressio: CMake Error at CMakeLists.txt:498 (find_library): Could not find CUFile_LIBRARY using the following names: cufile ; +cusz: https://github.com/spack/spack/issues/38787
|
||||
# - py-torch +cuda cuda_arch=80 # skipped, installed by other means
|
||||
# - slepc +cuda cuda_arch=80 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
|
||||
# - upcxx +cuda cuda_arch=80 # upcxx: needs NVIDIA driver
|
||||
|
||||
# CUDA 90
|
||||
- amrex +cuda cuda_arch=90
|
||||
- arborx +cuda cuda_arch=90 ^kokkos +wrapper
|
||||
- cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90
|
||||
- caliper +cuda cuda_arch=90
|
||||
- chai ~benchmarks ~tests +cuda cuda_arch=90 ^umpire ~shared
|
||||
- flecsi +cuda cuda_arch=90
|
||||
- ginkgo +cuda cuda_arch=90
|
||||
- heffte +cuda cuda_arch=90
|
||||
- hpx +cuda cuda_arch=90
|
||||
- kokkos +wrapper +cuda cuda_arch=90
|
||||
- kokkos-kernels +cuda cuda_arch=90 ^kokkos +wrapper +cuda cuda_arch=90
|
||||
- magma +cuda cuda_arch=90
|
||||
- mfem +cuda cuda_arch=90
|
||||
- mgard +serial +openmp +timing +unstructured +cuda cuda_arch=90
|
||||
- parsec +cuda cuda_arch=90
|
||||
- petsc +cuda cuda_arch=90
|
||||
- raja +cuda cuda_arch=90
|
||||
- slate +cuda cuda_arch=90
|
||||
- strumpack ~slate +cuda cuda_arch=90
|
||||
- sundials +cuda cuda_arch=90
|
||||
- superlu-dist +cuda cuda_arch=90
|
||||
- trilinos +cuda cuda_arch=90
|
||||
- umpire ~shared +cuda cuda_arch=90
|
||||
# INCLUDED IN ECP DAV CUDA
|
||||
- adios2 +cuda cuda_arch=90
|
||||
# - paraview +cuda cuda_arch=90 # paraview: InstallError: Incompatible cuda_arch=90
|
||||
- vtk-m +cuda cuda_arch=90
|
||||
- zfp +cuda cuda_arch=90
|
||||
# --
|
||||
# - ascent +cuda cuda_arch=90 # ascent: https://github.com/spack/spack/issues/38045
|
||||
# - axom +cuda cuda_arch=90 # axom: https://github.com/spack/spack/issues/29520
|
||||
# - cusz +cuda cuda_arch=90 # cusz: https://github.com/spack/spack/issues/38787
|
||||
# - dealii +cuda cuda_arch=90 # dealii: https://github.com/spack/spack/issues/39532
|
||||
# - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=90 # embree: https://github.com/spack/spack/issues/39534
|
||||
# - hypre +cuda cuda_arch=90 # concretizer: hypre +cuda requires cuda@:11, but cuda_arch=90 requires cuda@12:
|
||||
# - lammps +cuda cuda_arch=90 # lammps: needs NVIDIA driver
|
||||
# - lbann +cuda cuda_arch=90 # concretizer: Cannot select a single "version" for package "lbann"
|
||||
# - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf ~cusz +mgard +cuda cuda_arch=90 # libpressio: CMake Error at CMakeLists.txt:498 (find_library): Could not find CUFile_LIBRARY using the following names: cufile ; +cusz: https://github.com/spack/spack/issues/38787
|
||||
# - omega-h +cuda cuda_arch=90 # omega-h: https://github.com/spack/spack/issues/39535
|
||||
# - py-torch +cuda cuda_arch=90 # skipped, installed by other means
|
||||
# - slepc +cuda cuda_arch=90 # slepc: make[1]: *** internal error: invalid --jobserver-auth string 'fifo:/tmp/GMfifo1313'.
|
||||
# - tasmanian +cuda cuda_arch=90 # tasmanian: conflicts with cuda@12
|
||||
# - upcxx +cuda cuda_arch=90 # upcxx: needs NVIDIA driver
|
||||
|
||||
mirrors: { "mirror": "s3://spack-binaries/develop/e4s-arm-neoverse_v1" }
|
||||
|
||||
ci:
|
||||
pipeline-gen:
|
||||
- build-job:
|
||||
image: "ghcr.io/spack/ubuntu20.04-runner-arm64-gcc-11.4:2023.08.01"
|
||||
|
||||
cdash:
|
||||
build-group: E4S ARM Neoverse V1
|
@@ -1,22 +1,51 @@
|
||||
spack:
|
||||
|
||||
view: false
|
||||
|
||||
concretizer:
|
||||
reuse: false
|
||||
unify: false
|
||||
|
||||
compilers:
|
||||
- compiler:
|
||||
spec: oneapi@2023.2.1
|
||||
paths:
|
||||
cc: /opt/intel/oneapi/compiler/2023.2.1/linux/bin/icx
|
||||
cxx: /opt/intel/oneapi/compiler/2023.2.1/linux/bin/icpx
|
||||
f77: /opt/intel/oneapi/compiler/2023.2.1/linux/bin/ifx
|
||||
fc: /opt/intel/oneapi/compiler/2023.2.1/linux/bin/ifx
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: x86_64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
- compiler:
|
||||
spec: gcc@=11.4.0
|
||||
paths:
|
||||
cc: /usr/bin/gcc
|
||||
cxx: /usr/bin/g++
|
||||
f77: /usr/bin/gfortran
|
||||
fc: /usr/bin/gfortran
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: x86_64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
|
||||
packages:
|
||||
all:
|
||||
require: '%oneapi'
|
||||
require: '%oneapi target=x86_64_v3'
|
||||
providers:
|
||||
blas: [openblas]
|
||||
mpi: [mpich]
|
||||
tbb: [intel-tbb]
|
||||
target: [x86_64]
|
||||
variants: +mpi
|
||||
elfutils:
|
||||
variants: +bzip2 ~nls +xz
|
||||
hdf5:
|
||||
require: "%gcc"
|
||||
variants: +fortran +hl +shared
|
||||
libfabric:
|
||||
variants: fabrics=sockets,tcp,udp,rxm
|
||||
libunwind:
|
||||
@@ -34,15 +63,12 @@ spack:
|
||||
variants: +pic
|
||||
mesa:
|
||||
version: [21.3.8]
|
||||
hdf5:
|
||||
require: "%gcc"
|
||||
variants: +fortran +hl +shared
|
||||
mpi:
|
||||
require: "mpich"
|
||||
require: 'mpich@4:'
|
||||
mpich:
|
||||
require: '@4.1.1 ~wrapperrpath ~hwloc'
|
||||
require: '~wrapperrpath ~hwloc'
|
||||
py-cryptography:
|
||||
require: '@38.0'
|
||||
require: '@38.0.1'
|
||||
unzip:
|
||||
require: '%gcc'
|
||||
binutils:
|
||||
@@ -60,40 +86,12 @@ spack:
|
||||
require: '%gcc'
|
||||
openssh:
|
||||
require: '%gcc'
|
||||
bison:
|
||||
require: '%gcc'
|
||||
libffi:
|
||||
require: "@3.4.4"
|
||||
dyninst:
|
||||
require: "%gcc"
|
||||
|
||||
compilers:
|
||||
- compiler:
|
||||
spec: oneapi@2023.2.0
|
||||
paths:
|
||||
cc: /opt/intel/oneapi/compiler/2023.2.0/linux/bin/icx
|
||||
cxx: /opt/intel/oneapi/compiler/2023.2.0/linux/bin/icpx
|
||||
f77: /opt/intel/oneapi/compiler/2023.2.0/linux/bin/ifx
|
||||
fc: /opt/intel/oneapi/compiler/2023.2.0/linux/bin/ifx
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: x86_64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
- compiler:
|
||||
spec: gcc@11.4.0
|
||||
paths:
|
||||
cc: /usr/bin/gcc
|
||||
cxx: /usr/bin/g++
|
||||
f77: /usr/bin/gfortran
|
||||
fc: /usr/bin/gfortran
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: x86_64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
bison:
|
||||
require: '%gcc'
|
||||
|
||||
specs:
|
||||
# CPU
|
||||
@@ -101,7 +99,6 @@ spack:
|
||||
- aml
|
||||
- amrex
|
||||
- arborx
|
||||
- archer
|
||||
- argobots
|
||||
- axom
|
||||
- bolt
|
||||
@@ -121,11 +118,14 @@ spack:
|
||||
- flux-core
|
||||
- fortrilinos
|
||||
- gasnet
|
||||
- ginkgo
|
||||
- globalarrays
|
||||
- gmp
|
||||
- gotcha
|
||||
- gptune ~mpispawn
|
||||
- h5bench
|
||||
- hdf5-vol-async
|
||||
- hdf5-vol-cache
|
||||
- hdf5-vol-log
|
||||
- heffte +fftw
|
||||
- hpx networking=mpi
|
||||
@@ -135,22 +135,22 @@ spack:
|
||||
- lammps
|
||||
- lbann
|
||||
- legion
|
||||
- libnrm
|
||||
- libnrm
|
||||
- libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp
|
||||
- libquo
|
||||
- libunwind
|
||||
- loki
|
||||
- mercury
|
||||
- metall
|
||||
- mfem
|
||||
- mgard +serial +openmp +timing +unstructured ~cuda
|
||||
- mpark-variant
|
||||
- mpifileutils ~xattr
|
||||
- nccmp
|
||||
- nco
|
||||
- netlib-scalapack
|
||||
- nrm
|
||||
- omega-h
|
||||
- openmpi
|
||||
- openpmd-api
|
||||
- papi
|
||||
- papyrus
|
||||
- parsec ~cuda
|
||||
@@ -160,14 +160,18 @@ spack:
|
||||
- plasma
|
||||
- plumed
|
||||
- precice
|
||||
- pruners-ninja
|
||||
- pumi
|
||||
- py-h5py
|
||||
- py-jupyterhub
|
||||
- py-libensemble
|
||||
- py-petsc4py
|
||||
- py-warpx
|
||||
- qthreads scheduler=distrib
|
||||
- quantum-espresso
|
||||
- raja
|
||||
- rempi
|
||||
- scr
|
||||
- slate ~cuda
|
||||
- slepc
|
||||
- stc
|
||||
@@ -175,54 +179,46 @@ spack:
|
||||
- sundials
|
||||
- superlu
|
||||
- superlu-dist
|
||||
- swig@4.0.2-fortran
|
||||
- sz3
|
||||
- tasmanian
|
||||
- trilinos@13.0.1 +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
- tau +mpi +python
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
- turbine
|
||||
- umap
|
||||
- umpire
|
||||
- variorum
|
||||
- wannier90
|
||||
- xyce +mpi +shared +pymi +pymi_static_tpls
|
||||
# INCLUDED IN ECP DAV CPU
|
||||
# - adios2
|
||||
# - ascent
|
||||
# - darshan-runtime
|
||||
# - darshan-util
|
||||
# - faodel
|
||||
# - hdf5
|
||||
# - libcatalyst
|
||||
# - parallel-netcdf
|
||||
# - paraview
|
||||
# - py-cinemasci
|
||||
# - sz
|
||||
# - unifyfs
|
||||
# - veloc
|
||||
# - visit
|
||||
# - vtk-m ~openmp # https://github.com/spack/spack/issues/31830
|
||||
# - zfp
|
||||
- adios2 # mgard: mgard.tpp:63:48: error: non-constant-expression cannot be narrowed from type 'int' to 'unsigned long' in initializer list [-Wc++11-narrowing]
|
||||
- ascent
|
||||
- darshan-runtime
|
||||
- darshan-util
|
||||
- faodel
|
||||
- hdf5
|
||||
- libcatalyst
|
||||
- parallel-netcdf
|
||||
# - paraview # paraview: VTK/ThirdParty/cgns/vtkcgns/src/adfh/ADFH.c:2002:23: error: incompatible function pointer types passing 'herr_t (hid_t, const char *, const H5L_info1_t *, void *)' (aka 'int (long, const char *, const H5L_info1_t *, void *)') to parameter of type 'H5L_iterate2_t' (aka 'int (*)(long, const char *,const H5L_info2_t *, void *)') [-Wincompatible-function-pointer-types]
|
||||
- py-cinemasci
|
||||
- sz
|
||||
- unifyfs
|
||||
- veloc
|
||||
# - visit # silo: https://github.com/spack/spack/issues/39538
|
||||
- vtk-m ~openmp # https://github.com/spack/spack/issues/31830
|
||||
- zfp
|
||||
# --
|
||||
# - alquimia # pflotran: pflotran/hdf5_aux.F90(5): error #7013: This module file was not generated by any release of this compiler. [HDF5]
|
||||
# - dealii # intel-tbb: icpx: error: unknown argument: '-flifetime-dse=1'
|
||||
# - dxt-explorer # r: https://github.com/spack/spack/issues/40257
|
||||
# - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc +visit +vtkm +zfp # sz: hdf5-filter/H5Z-SZ/src/H5Z_SZ.c:24:9: error: call to undeclared function 'gettimeofday'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
|
||||
# - geopm # geopm: In file included from src/ProfileTable.cpp:34: ./src/ProfileTable.hpp:79:45: error: no type named 'string' in namespace 'std'
|
||||
# - ginkgo # ginkgo: icpx: error: clang frontend command failed with exit code 139 (use -v to see invocation)
|
||||
# - gptune ~mpispawn # py-scipy: for_main.c:(.text+0x19): undefined reference to `MAIN__'
|
||||
# - hdf5-vol-cache # /H5VLcache_ext.c:580:9: error: incompatible function pointer types initializing 'herr_t (*)(const void *, uint64_t *)' (aka 'int (*)(const void *, unsigned long *)') with an expression of type 'herr_t (const void *, unsigned int *)' (aka 'int (const void *, unsigned int *)') [-Wincompatible-function-pointer-types]
|
||||
# - hpctoolkit # intel-tbb: icpx: error: unknown argument: '-flifetime-dse=1'
|
||||
# - libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp # py-numcodecs: c-blosc/internal-complibs/zlib-1.2.8/gzread.c:30:15: error: call to undeclared function 'read'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
|
||||
# - nrm # py-scipy: for_main.c:(.text+0x19): undefined reference to `MAIN__'
|
||||
# - openfoam # adios2: patch failed
|
||||
# - pruners-ninja # pruners-ninja: ninja_test_pingpong.c:79:5: error: call to undeclared library function 'memset' with type 'void *(void *, int, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
|
||||
# - py-jupyterhub # py-ruamel-yaml-clib: setuptools/dist.py:287: SetuptoolsDeprecationWarning: The namespace_packages parameter is deprecated, consider using implicit namespaces instead (PEP 420). See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
|
||||
# - py-warpx ^warpx dims=2 # py-scipy: for_main.c:(.text+0x19): undefined reference to `MAIN__'
|
||||
# - py-warpx ^warpx dims=3 # py-scipy: for_main.c:(.text+0x19): undefined reference to `MAIN__'
|
||||
# - py-warpx ^warpx dims=rz # py-scipy: for_main.c:(.text+0x19): undefined reference to `MAIN__'
|
||||
# - scr # libyogrt: configure: error: slurm is not in specified location!
|
||||
# - tau +mpi +python # tau: x86_64/lib/Makefile.tau-icpx-papi-mpi-pthread-python-pdt: No such file or directory
|
||||
# - upcxx # upcxx: /opt/intel/oneapi/mpi/2021.9.0//libfabric/bin/fi_info: error while loading shared libraries: libfabric.so.1: cannot open shared object file: No such file or directory
|
||||
# - xyce +mpi +shared +pymi +pymi_static_tpls ^trilinos~shylu # cmake/tps.cmake:220 (message): Unable to compile against Trilinos. It is possible Trilinos was not properly configured, or the environment has changed since Trilinos was installed. See the CMake log files for more information.
|
||||
# - alquimia # pflotran: https://github.com/spack/spack/issues/39474
|
||||
# - archer # subsumed under llvm +libomp_tsan
|
||||
# - dealii # dealii: https://github.com/spack/spack/issues/39482
|
||||
# - dxt-explorer # r: https://github.com/spack/spack/issues/40257
|
||||
# - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc +visit +vtkm +zfp # embree: CMake Error at CMakeLists.txt:215 (MESSAGE): Unsupported compiler: IntelLLVM; qt: qtbase/src/corelib/global/qendian.h:333:54: error: incomplete type 'std::numeric_limits' used in nested name specifier
|
||||
# - geopm # geopm issue: https://github.com/spack/spack/issues/38795
|
||||
# - hpctoolkit # dyninst@12.3.0%gcc: /usr/bin/ld: libiberty/./d-demangle.c:142: undefined reference to `_intel_fast_memcpy'; can't mix intel-tbb@%oneapi with dyninst%gcc
|
||||
# - mgard +serial +openmp +timing +unstructured ~cuda # mgard: mgard.tpp:63:48: error: non-constant-expression cannot be narrowed from type 'int' to 'unsigned long' in initializer list [-Wc++11-narrowing]
|
||||
# - openfoam # cgal: https://github.com/spack/spack/issues/39481
|
||||
# - openpmd-api # mgard: mgard.tpp:63:48: error: non-constant-expression cannot be narrowed from type 'int' to 'unsigned long' in initializer list [-Wc++11-narrowing]
|
||||
# - swig@4.0.2-fortran # ?
|
||||
# - upcxx # upcxx: /opt/intel/oneapi/mpi/2021.10.0//libfabric/bin/fi_info: error while loading shared libraries: libfabric.so.1: cannot open shared object file: No such file or directory
|
||||
|
||||
# GPU
|
||||
- aml +ze
|
||||
@@ -231,23 +227,21 @@ spack:
|
||||
- cabana +sycl ^kokkos +sycl +openmp cxxstd=17 +tests +examples
|
||||
- kokkos +sycl +openmp cxxstd=17 +tests +examples
|
||||
- kokkos-kernels build_type=Release %oneapi ^kokkos +sycl +openmp cxxstd=17 +tests +examples
|
||||
- tau +mpi +opencl +level_zero ~pdt # tau: requires libdrm.so to be installed
|
||||
- slate +sycl
|
||||
# --
|
||||
# - ginkgo +oneapi # InstallError: Ginkgo's oneAPI backend requires theDPC++ compiler as main CXX compiler.
|
||||
# - hpctoolkit +level_zero # intel-tbb: icpx: error: unknown argument: '-flifetime-dse=1'
|
||||
# - hpctoolkit +level_zero # dyninst@12.3.0%gcc: /usr/bin/ld: libiberty/./d-demangle.c:142: undefined reference to `_intel_fast_memcpy'; can't mix intel-tbb@%oneapi with dyninst%gcc
|
||||
# - sundials +sycl cxxstd=17 # sundials: include/sunmemory/sunmemory_sycl.h:20:10: fatal error: 'CL/sycl.hpp' file not found
|
||||
# - tau +mpi +opencl +level_zero ~pdt # builds ok in container, but needs libdrm, will update container
|
||||
|
||||
# SKIPPED
|
||||
# - nvhpc
|
||||
# - dyninst # only %gcc
|
||||
|
||||
- py-scipy
|
||||
|
||||
mirrors: { "mirror": "s3://spack-binaries/develop/e4s-oneapi" }
|
||||
|
||||
ci:
|
||||
pipeline-gen:
|
||||
- build-job:
|
||||
image: ecpe4s/ubuntu20.04-runner-x86_64-oneapi:2023.07.21
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-amd64-oneapi-2023.2.1:2023.08.01
|
||||
|
||||
cdash:
|
||||
build-group: E4S OneAPI
|
||||
|
@@ -1,19 +1,35 @@
|
||||
spack:
|
||||
view: false
|
||||
|
||||
concretizer:
|
||||
reuse: false
|
||||
unify: false
|
||||
|
||||
compilers:
|
||||
- compiler:
|
||||
spec: gcc@9.4.0
|
||||
paths:
|
||||
cc: /usr/bin/gcc
|
||||
cxx: /usr/bin/g++
|
||||
f77: /usr/bin/gfortran
|
||||
fc: /usr/bin/gfortran
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: ppc64le
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
|
||||
packages:
|
||||
all:
|
||||
compiler: [gcc@11.1.0]
|
||||
require: "%gcc@9.4.0 target=ppc64le"
|
||||
compiler: [gcc@9.4.0]
|
||||
providers:
|
||||
blas: [openblas]
|
||||
mpi: [mpich]
|
||||
target: [ppc64le]
|
||||
variants: +mpi cuda_arch=70
|
||||
tbb:
|
||||
require: intel-tbb
|
||||
binutils:
|
||||
variants: +ld +gold +headers +libiberty ~nls
|
||||
cuda:
|
||||
version: [11.7.0]
|
||||
elfutils:
|
||||
variants: +bzip2 ~nls +xz
|
||||
hdf5:
|
||||
@@ -22,30 +38,34 @@ spack:
|
||||
variants: fabrics=sockets,tcp,udp,rxm
|
||||
libunwind:
|
||||
variants: +pic +xz
|
||||
mpich:
|
||||
variants: ~wrapperrpath
|
||||
ncurses:
|
||||
variants: +termlib
|
||||
openblas:
|
||||
variants: threads=openmp
|
||||
paraview:
|
||||
require: '@5.11 ~qt+osmesa'
|
||||
trilinos:
|
||||
require:
|
||||
- one_of: [+amesos +amesos2 +anasazi +aztec +boost +epetra +epetraext +ifpack
|
||||
+intrepid +intrepid2 +isorropia +kokkos +minitensor +nox +piro +phalanx
|
||||
+rol +rythmos +sacado +stk +shards +stratimikos +tempus +tpetra
|
||||
+trilinoscouplings +zoltan]
|
||||
- one_of: [gotype=long_long, gotype=all]
|
||||
- one_of: [~ml ~muelu ~zoltan2 ~teko, +ml +muelu +zoltan2 +teko]
|
||||
- one_of: [+superlu-dist, ~superlu-dist]
|
||||
- one_of: [+shylu, ~shylu]
|
||||
variants: +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext
|
||||
+ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu
|
||||
+nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos
|
||||
+teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
xz:
|
||||
variants: +pic
|
||||
mesa:
|
||||
version: [21.3.8]
|
||||
mpi:
|
||||
require: mpich
|
||||
mpich:
|
||||
require: '~wrapperrpath ~hwloc'
|
||||
ncurses:
|
||||
require: '@6.3 +termlib'
|
||||
faodel:
|
||||
require: ~tcmalloc # needed for ppc64le
|
||||
require: "~tcmalloc"
|
||||
tbb:
|
||||
require: intel-tbb
|
||||
libffi:
|
||||
require: "@3.4.4"
|
||||
vtk-m:
|
||||
require: "+examples"
|
||||
cuda:
|
||||
require: "@11.4.4"
|
||||
|
||||
|
||||
specs:
|
||||
# CPU
|
||||
@@ -57,6 +77,8 @@ spack:
|
||||
- argobots
|
||||
- axom
|
||||
- bolt
|
||||
- boost
|
||||
- bricks
|
||||
- butterflypack
|
||||
- cabana
|
||||
- caliper
|
||||
@@ -67,7 +89,7 @@ spack:
|
||||
- drishti
|
||||
- dxt-explorer
|
||||
- dyninst
|
||||
- ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 ~paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +paraview fails: FAILED: VTK/Filters/Statistics/CMakeFiles/FiltersStatistics-objects.dir/vtkPCAStatistics.cxx.o: /tmp/ccgvkIk5.s: Assembler messages: /tmp/ccgvkIk5.s:260012: Error: invalid machine `power10'
|
||||
# - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 ~paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +visit: libext, libxkbfile, libxrender, libxt, silo (https://github.com/spack/spack/issues/39538), cairo
|
||||
- exaworks
|
||||
- flecsi
|
||||
- flit
|
||||
@@ -85,15 +107,17 @@ spack:
|
||||
- hdf5-vol-log
|
||||
- heffte +fftw
|
||||
- hpctoolkit
|
||||
- hpx max_cpu_count=512 networking=mpi
|
||||
- hpx networking=mpi
|
||||
- hypre
|
||||
- kokkos +openmp
|
||||
- kokkos-kernels +openmp
|
||||
- lammps
|
||||
- lbann
|
||||
- legion
|
||||
- libnrm
|
||||
- libquo
|
||||
- libunwind
|
||||
- loki
|
||||
- mercury
|
||||
- metall
|
||||
- mfem
|
||||
@@ -106,20 +130,23 @@ spack:
|
||||
- nrm
|
||||
- nvhpc
|
||||
- omega-h
|
||||
- openfoam
|
||||
- openmpi
|
||||
- openpmd-api
|
||||
- papi
|
||||
- papyrus
|
||||
- paraview ~cuda ~rocm
|
||||
- parsec ~cuda
|
||||
- pdt
|
||||
- petsc
|
||||
- phist
|
||||
- plasma
|
||||
- plumed
|
||||
- precice
|
||||
- pruners-ninja
|
||||
- pumi
|
||||
- py-h5py
|
||||
- py-jupyterhub
|
||||
- py-libensemble +mpi +nlopt
|
||||
- py-libensemble
|
||||
- py-petsc4py
|
||||
- py-warpx
|
||||
- qthreads scheduler=distrib
|
||||
@@ -134,84 +161,102 @@ spack:
|
||||
- sundials
|
||||
- superlu
|
||||
- superlu-dist
|
||||
- swig
|
||||
- swig@4.0.2-fortran
|
||||
- sz3
|
||||
- tasmanian
|
||||
- tau +mpi +python
|
||||
- trilinos +belos +ifpack2 +stokhos
|
||||
- tau +mpi +python # tau: has issue with `spack env depfile` build
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
- turbine
|
||||
- umap
|
||||
- umpire
|
||||
- upcxx
|
||||
- wannier90
|
||||
- xyce +mpi +shared +pymi +pymi_static_tpls ^trilinos~shylu
|
||||
- xyce +mpi +shared +pymi +pymi_static_tpls
|
||||
# INCLUDED IN ECP DAV CPU
|
||||
- adios2
|
||||
- ascent
|
||||
- darshan-runtime
|
||||
- darshan-util
|
||||
- faodel
|
||||
- hdf5
|
||||
- libcatalyst
|
||||
- parallel-netcdf
|
||||
- paraview
|
||||
- py-cinemasci
|
||||
- sz
|
||||
- unifyfs
|
||||
- veloc
|
||||
# - visit # libext, libxkbfile, libxrender, libxt, silo (https://github.com/spack/spack/issues/39538), cairo
|
||||
- vtk-m
|
||||
- zfp
|
||||
# --
|
||||
# - archer # part of llvm +omp_tsan
|
||||
# - dealii # fltk: https://github.com/spack/spack/issues/38791
|
||||
# - geopm # geopm: https://github.com/spack/spack/issues/38798
|
||||
# - libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp # py-numcodecs: gcc: error: unrecognized command line option '-mno-sse2'; did you mean '-mno-isel'? gcc: error: unrecognized command line option '-mno-avx2'
|
||||
# - phist +mpi # ghost@develop: gcc-9: error: unrecognized command line option '-march=native'; did you mean '-mcpu=native'?
|
||||
# - variorum # variorum: https://github.com/spack/spack/issues/38786
|
||||
|
||||
# CUDA
|
||||
- amrex +cuda
|
||||
- arborx +cuda ^kokkos +wrapper
|
||||
- cabana +cuda ^kokkos +wrapper +cuda_lambda +cuda
|
||||
- caliper +cuda
|
||||
- chai ~benchmarks ~tests +cuda ^umpire ~shared
|
||||
- ecp-data-vis-sdk +cuda cuda_arch=70 +adios2 +hdf5 ~paraview +vtkm +zfp # +paraview fails: FAILED: VTK/Filters/Statistics/CMakeFiles/FiltersStatistics-objects.dir/vtkPCAStatistics.cxx.o; /tmp/ccjmJhb6.s: Assembler messages: /tmp/ccjmJhb6.s:260012: Error: invalid machine `power10'
|
||||
- flecsi +cuda
|
||||
# CUDA NOARCH
|
||||
- bricks +cuda
|
||||
- cabana +cuda ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=70
|
||||
- flux-core +cuda
|
||||
- ginkgo +cuda
|
||||
- heffte +cuda
|
||||
- hpctoolkit +cuda
|
||||
- hpx max_cpu_count=512 +cuda
|
||||
- hypre +cuda
|
||||
- kokkos +wrapper +cuda
|
||||
- kokkos-kernels +cuda ^kokkos +wrapper +cuda +cuda_lambda
|
||||
- magma +cuda
|
||||
- mfem +cuda
|
||||
- mgard +serial +openmp +timing +unstructured +cuda
|
||||
- omega-h +cuda
|
||||
- papi +cuda
|
||||
- petsc +cuda
|
||||
- py-torch +cuda
|
||||
- raja +cuda
|
||||
- slate +cuda
|
||||
- slepc +cuda
|
||||
- strumpack ~slate +cuda
|
||||
- sundials +cuda
|
||||
- superlu-dist +cuda
|
||||
- tasmanian +cuda
|
||||
- tau +mpi +cuda
|
||||
- "trilinos@13.4.0: +belos +ifpack2 +stokhos +cuda"
|
||||
- umpire ~shared +cuda
|
||||
- parsec +cuda
|
||||
|
||||
# CPU FAILURES
|
||||
# - archer # llvm@8
|
||||
# - bricks # bricks
|
||||
# - geopm # geopm
|
||||
# - hdf5-vol-daos # hdf5-vol-daos: vhost/vhost_user.c:65:32: error: array size missing in 'vhost_message_handlers'
|
||||
# - loki # loki
|
||||
# - precice # precice
|
||||
# - pruners-ninja # pruners-ninja
|
||||
# - variorum # Intel/variorum_cpuid.c:11:5: error: impossible constraint in 'asm'
|
||||
- tau +mpi +cuda # tau: has issue with `spack env depfile` build
|
||||
# --
|
||||
# bricks: VSBrick-7pt.py-Scalar-8x8x8-1:30:3: error: 'vfloat512' was not declared in this scope
|
||||
# fltk: /usr/bin/ld: ../lib/libfltk_png.a(pngrutil.o): in function `png_read_filter_row': pngrutil.c:(.text.png_read_filter_row+0x90): undefined reference to `png_init_filter_functions_vsx'
|
||||
# geopm: libtool.m4: error: problem compiling CXX test program
|
||||
# llvm@8: clang/lib/Lex/Lexer.cpp:2547:34: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
|
||||
# loki: include/loki/SmallObj.h:462:57: error: ISO C++17 does not allow dynamic exception specifications
|
||||
# precice: /tmp/ccYNMwgE.s: Assembler messages: /tmp/ccYNMwgE.s:278115: Error: invalid machine `power10'
|
||||
# pruners-ninja: test/ninja_test_util.c:34: multiple definition of `a';
|
||||
# - legion +cuda # legion: needs NVIDIA driver
|
||||
|
||||
# CUDA FAILURES
|
||||
# - bricks +cuda # bricks
|
||||
# - dealii +cuda # fltk
|
||||
# CUDA 70
|
||||
- amrex +cuda cuda_arch=70
|
||||
- arborx +cuda cuda_arch=70 ^kokkos +wrapper
|
||||
- caliper +cuda cuda_arch=70
|
||||
- chai ~benchmarks ~tests +cuda cuda_arch=70 ^umpire ~shared
|
||||
- ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=70
|
||||
- flecsi +cuda cuda_arch=70
|
||||
- ginkgo +cuda cuda_arch=70
|
||||
- heffte +cuda cuda_arch=70
|
||||
- hpx +cuda cuda_arch=70
|
||||
- hypre +cuda cuda_arch=70
|
||||
- kokkos +wrapper +cuda cuda_arch=70
|
||||
- kokkos-kernels +cuda cuda_arch=70 ^kokkos +wrapper +cuda cuda_arch=70
|
||||
- magma +cuda cuda_arch=70
|
||||
- mfem +cuda cuda_arch=70
|
||||
- mgard +serial +openmp +timing +unstructured +cuda cuda_arch=70
|
||||
- omega-h +cuda cuda_arch=70
|
||||
- parsec +cuda cuda_arch=70
|
||||
- petsc +cuda cuda_arch=70
|
||||
- raja +cuda cuda_arch=70
|
||||
- slate +cuda cuda_arch=70
|
||||
- slepc +cuda cuda_arch=70
|
||||
- strumpack ~slate +cuda cuda_arch=70
|
||||
- sundials +cuda cuda_arch=70
|
||||
- superlu-dist +cuda cuda_arch=70
|
||||
- tasmanian +cuda cuda_arch=70
|
||||
- umpire ~shared +cuda cuda_arch=70
|
||||
# INCLUDED IN ECP DAV CUDA
|
||||
- adios2 +cuda cuda_arch=70
|
||||
# - ascent +cuda cuda_arch=70 # ascent: https://github.com/spack/spack/issues/38045
|
||||
- paraview +cuda cuda_arch=70
|
||||
- vtk-m +cuda cuda_arch=70
|
||||
- zfp +cuda cuda_arch=70
|
||||
# --
|
||||
# bricks: VSBrick-7pt.py-Scalar-8x8x8-1:30:3: error: 'vfloat512' was not declared in this scope
|
||||
|
||||
# - axom +cuda cuda_arch=70 # axom: https://github.com/spack/spack/issues/29520
|
||||
# - cusz +cuda cuda_arch=70 # cusz: https://github.com/spack/spack/issues/38787
|
||||
# - dealii +cuda cuda_arch=70 # fltk: https://github.com/spack/spack/issues/38791
|
||||
# - lammps +cuda cuda_arch=70 # lammps: needs NVIDIA driver
|
||||
# - lbann +cuda cuda_arch=70 # lbann: https://github.com/spack/spack/issues/38788
|
||||
# - libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +cusz +mgard +cuda cuda_arch=70 ^cusz +cuda cuda_arch=70 # depends_on("cuda@11.7.1:", when="+cuda")
|
||||
# - py-torch +cuda cuda_arch=70 # skipped
|
||||
# - trilinos +cuda cuda_arch=70 # trilinos: https://github.com/trilinos/Trilinos/issues/11630
|
||||
# - upcxx +cuda cuda_arch=70 # upcxx: needs NVIDIA driver
|
||||
|
||||
mirrors: { "mirror": "s3://spack-binaries/develop/e4s-power" }
|
||||
|
||||
ci:
|
||||
pipeline-gen:
|
||||
- build-job:
|
||||
image: ecpe4s/ubuntu20.04-runner-ppc64le:2023-01-01
|
||||
image: ghcr.io/spack/ubuntu20.04-runner-ppc64-gcc-11.4:2023.08.01
|
||||
|
||||
cdash:
|
||||
build-group: E4S Power
|
||||
|
@@ -0,0 +1,346 @@
|
||||
spack:
|
||||
view: false
|
||||
|
||||
concretizer:
|
||||
reuse: false
|
||||
unify: false
|
||||
|
||||
compilers:
|
||||
- compiler:
|
||||
spec: gcc@=11.4.0
|
||||
paths:
|
||||
cc: /usr/bin/gcc
|
||||
cxx: /usr/bin/g++
|
||||
f77: /usr/bin/gfortran
|
||||
fc: /usr/bin/gfortran
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: x86_64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
|
||||
packages:
|
||||
all:
|
||||
require: '%gcc target=x86_64_v3'
|
||||
providers:
|
||||
blas: [openblas]
|
||||
mpi: [mpich]
|
||||
variants: +mpi
|
||||
binutils:
|
||||
variants: +ld +gold +headers +libiberty ~nls
|
||||
elfutils:
|
||||
variants: +bzip2 ~nls +xz
|
||||
hdf5:
|
||||
variants: +fortran +hl +shared
|
||||
libfabric:
|
||||
variants: fabrics=sockets,tcp,udp,rxm
|
||||
libunwind:
|
||||
variants: +pic +xz
|
||||
openblas:
|
||||
variants: threads=openmp
|
||||
trilinos:
|
||||
variants: +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext
|
||||
+ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu
|
||||
+nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos
|
||||
+teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
xz:
|
||||
variants: +pic
|
||||
mesa:
|
||||
version: [21.3.8]
|
||||
mpi:
|
||||
require: mpich
|
||||
mpich:
|
||||
require: '~wrapperrpath ~hwloc'
|
||||
ncurses:
|
||||
require: '@6.3 +termlib'
|
||||
tbb:
|
||||
require: intel-tbb
|
||||
boost:
|
||||
version: [1.79.0]
|
||||
variants: +atomic +chrono +container +date_time +exception +filesystem +graph
|
||||
+iostreams +locale +log +math +mpi +multithreaded +program_options +random
|
||||
+regex +serialization +shared +signals +stacktrace +system +test +thread +timer
|
||||
cxxstd=17 visibility=global
|
||||
libffi:
|
||||
require: "@3.4.4"
|
||||
vtk-m:
|
||||
require: "+examples"
|
||||
cuda:
|
||||
version: [11.8.0]
|
||||
paraview:
|
||||
# Don't build GUI support or GLX rendering for HPC/container deployments
|
||||
require: "@5.11 ~qt+osmesa"
|
||||
|
||||
# ROCm 5.4.3
|
||||
comgr:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: comgr@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
hip-rocclr:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hip-rocclr@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/hip
|
||||
hipblas:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hipblas@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
hipcub:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hipcub@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
hipfft:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hipfft@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
hipsparse:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hipsparse@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
miopen-hip:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hip-rocclr@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
miopengemm:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: miopengemm@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rccl:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rccl@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocblas:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocblas@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocfft:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocfft@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-clang-ocl:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-clang-ocl@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-cmake:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-cmake@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-dbgapi:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-dbgapi@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-debug-agent:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-debug-agent@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-device-libs:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-device-libs@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-gdb:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-gdb@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
rocm-opencl:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-opencl@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/opencl
|
||||
rocm-smi-lib:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocm-smi-lib@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
hip:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hip@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
extra_attributes:
|
||||
compilers:
|
||||
c: /opt/rocm-5.4.3/llvm/bin/clang++
|
||||
c++: /opt/rocm-5.4.3/llvm/bin/clang++
|
||||
hip: /opt/rocm-5.4.3/hip/bin/hipcc
|
||||
hipify-clang:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hipify-clang@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
llvm-amdgpu:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: llvm-amdgpu@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/llvm
|
||||
extra_attributes:
|
||||
compilers:
|
||||
c: /opt/rocm-5.4.3/llvm/bin/clang++
|
||||
cxx: /opt/rocm-5.4.3/llvm/bin/clang++
|
||||
hsakmt-roct:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hsakmt-roct@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
hsa-rocr-dev:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hsa-rocr-dev@5.4.3
|
||||
prefix: /opt/rocm-5.4.3/
|
||||
extra_atributes:
|
||||
compilers:
|
||||
c: /opt/rocm-5.4.3/llvm/bin/clang++
|
||||
cxx: /opt/rocm-5.4.3/llvm/bin/clang++
|
||||
roctracer-dev-api:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: roctracer-dev-api@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
roctracer-dev:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: roctracer-dev@4.5.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
rocprim:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocprim@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
rocrand:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocrand@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
hipsolver:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: hipsolver@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
rocsolver:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocsolver@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
rocsparse:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocsparse@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
rocthrust:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocthrust@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
rocprofiler-dev:
|
||||
buildable: false
|
||||
externals:
|
||||
- spec: rocprofiler-dev@5.4.3
|
||||
prefix: /opt/rocm-5.4.3
|
||||
|
||||
specs:
|
||||
# ROCM NOARCH
|
||||
- hpctoolkit +rocm
|
||||
- tau +mpi +rocm # tau: has issue with `spack env depfile` build
|
||||
|
||||
# ROCM 908
|
||||
- amrex +rocm amdgpu_target=gfx908
|
||||
- arborx +rocm amdgpu_target=gfx908
|
||||
- cabana +rocm amdgpu_target=gfx908
|
||||
- caliper +rocm amdgpu_target=gfx908
|
||||
- chai ~benchmarks +rocm amdgpu_target=gfx908
|
||||
- ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908
|
||||
- gasnet +rocm amdgpu_target=gfx908
|
||||
- ginkgo +rocm amdgpu_target=gfx908
|
||||
- heffte +rocm amdgpu_target=gfx908
|
||||
- hpx +rocm amdgpu_target=gfx908
|
||||
- hypre +rocm amdgpu_target=gfx908
|
||||
- kokkos +rocm amdgpu_target=gfx908
|
||||
- legion +rocm amdgpu_target=gfx908
|
||||
- magma ~cuda +rocm amdgpu_target=gfx908
|
||||
- mfem +rocm amdgpu_target=gfx908
|
||||
- petsc +rocm amdgpu_target=gfx908
|
||||
- raja ~openmp +rocm amdgpu_target=gfx908
|
||||
- slate +rocm amdgpu_target=gfx908
|
||||
- slepc +rocm amdgpu_target=gfx908 ^petsc +rocm amdgpu_target=gfx908
|
||||
- strumpack ~slate +rocm amdgpu_target=gfx908
|
||||
- sundials +rocm amdgpu_target=gfx908
|
||||
- superlu-dist +rocm amdgpu_target=gfx908
|
||||
- tasmanian ~openmp +rocm amdgpu_target=gfx908
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack ~ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu ~stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long +rocm amdgpu_target=gfx908
|
||||
- umpire +rocm amdgpu_target=gfx908
|
||||
- upcxx +rocm amdgpu_target=gfx908
|
||||
# INCLUDED IN ECP DAV ROCM
|
||||
# - hdf5
|
||||
# - hdf5-vol-async
|
||||
# - hdf5-vol-cache
|
||||
# - hdf5-vol-log
|
||||
# - libcatalyst
|
||||
- paraview +rocm amdgpu_target=gfx908
|
||||
# - vtk-m ~openmp +rocm amdgpu_target=gfx908 # vtk-m: https://github.com/spack/spack/issues/40268
|
||||
# --
|
||||
# - lbann ~cuda +rocm amdgpu_target=gfx908 # aluminum: https://github.com/spack/spack/issues/38807
|
||||
# - papi +rocm amdgpu_target=gfx908 # papi: https://github.com/spack/spack/issues/27898
|
||||
|
||||
# ROCM 90a
|
||||
- amrex +rocm amdgpu_target=gfx90a
|
||||
- arborx +rocm amdgpu_target=gfx90a
|
||||
- cabana +rocm amdgpu_target=gfx90a
|
||||
- caliper +rocm amdgpu_target=gfx90a
|
||||
- chai ~benchmarks +rocm amdgpu_target=gfx90a
|
||||
- ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a
|
||||
- gasnet +rocm amdgpu_target=gfx90a
|
||||
- ginkgo +rocm amdgpu_target=gfx90a
|
||||
- heffte +rocm amdgpu_target=gfx90a
|
||||
- hpx +rocm amdgpu_target=gfx90a
|
||||
- hypre +rocm amdgpu_target=gfx90a
|
||||
- kokkos +rocm amdgpu_target=gfx90a
|
||||
- legion +rocm amdgpu_target=gfx90a
|
||||
- magma ~cuda +rocm amdgpu_target=gfx90a
|
||||
- mfem +rocm amdgpu_target=gfx90a
|
||||
- petsc +rocm amdgpu_target=gfx90a
|
||||
- raja ~openmp +rocm amdgpu_target=gfx90a
|
||||
- slate +rocm amdgpu_target=gfx90a
|
||||
- slepc +rocm amdgpu_target=gfx90a ^petsc +rocm amdgpu_target=gfx90a
|
||||
- strumpack ~slate +rocm amdgpu_target=gfx90a
|
||||
- sundials +rocm amdgpu_target=gfx90a
|
||||
- superlu-dist +rocm amdgpu_target=gfx90a
|
||||
- tasmanian ~openmp +rocm amdgpu_target=gfx90a
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack ~ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu ~stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long +rocm amdgpu_target=gfx90a
|
||||
- umpire +rocm amdgpu_target=gfx90a
|
||||
- upcxx +rocm amdgpu_target=gfx90a
|
||||
# INCLUDED IN ECP DAV ROCM
|
||||
# - hdf5
|
||||
# - hdf5-vol-async
|
||||
# - hdf5-vol-cache
|
||||
# - hdf5-vol-log
|
||||
# - libcatalyst
|
||||
- paraview +rocm amdgpu_target=gfx90a
|
||||
# - vtk-m ~openmp +rocm amdgpu_target=gfx90a # vtk-m: https://github.com/spack/spack/issues/40268
|
||||
# --
|
||||
# - lbann ~cuda +rocm amdgpu_target=gfx90a # aluminum: https://github.com/spack/spack/issues/38807
|
||||
# - papi +rocm amdgpu_target=gfx90a # papi: https://github.com/spack/spack/issues/27898
|
||||
|
||||
mirrors: { "mirror": "s3://spack-binaries/develop/e4s-rocm-external" }
|
||||
|
||||
ci:
|
||||
pipeline-gen:
|
||||
- build-job:
|
||||
image: "ghcr.io/spack/ubuntu20.04-runner-amd64-gcc-11.4-rocm5.4.3:2023.08.01"
|
||||
|
||||
cdash:
|
||||
build-group: E4S ROCm External
|
@@ -1,21 +1,34 @@
|
||||
spack:
|
||||
view: false
|
||||
|
||||
concretizer:
|
||||
reuse: false
|
||||
unify: false
|
||||
|
||||
compilers:
|
||||
- compiler:
|
||||
spec: gcc@=11.4.0
|
||||
paths:
|
||||
cc: /usr/bin/gcc
|
||||
cxx: /usr/bin/g++
|
||||
f77: /usr/bin/gfortran
|
||||
fc: /usr/bin/gfortran
|
||||
flags: {}
|
||||
operating_system: ubuntu20.04
|
||||
target: x86_64
|
||||
modules: []
|
||||
environment: {}
|
||||
extra_rpaths: []
|
||||
|
||||
packages:
|
||||
all:
|
||||
compiler: [gcc@11.1.0]
|
||||
require: '%gcc target=x86_64_v3'
|
||||
providers:
|
||||
blas: [openblas]
|
||||
mpi: [mpich]
|
||||
require: target=x86_64_v3
|
||||
variants: +mpi amdgpu_target=gfx90a cuda_arch=80
|
||||
tbb:
|
||||
require: "intel-tbb"
|
||||
variants: +mpi
|
||||
binutils:
|
||||
variants: +ld +gold +headers +libiberty ~nls
|
||||
boost:
|
||||
variants: +python +filesystem +iostreams +system
|
||||
cuda:
|
||||
version: [11.7.0]
|
||||
elfutils:
|
||||
variants: +bzip2 ~nls +xz
|
||||
hdf5:
|
||||
@@ -24,29 +37,40 @@ spack:
|
||||
variants: fabrics=sockets,tcp,udp,rxm
|
||||
libunwind:
|
||||
variants: +pic +xz
|
||||
mpich:
|
||||
variants: ~wrapperrpath
|
||||
ncurses:
|
||||
variants: +termlib
|
||||
openblas:
|
||||
variants: threads=openmp
|
||||
paraview:
|
||||
# Don't build GUI support or GLX rendering for HPC/container deployments
|
||||
require: "@5.11 ~qt+osmesa"
|
||||
trilinos:
|
||||
require:
|
||||
- one_of: [+amesos +amesos2 +anasazi +aztec +boost +epetra +epetraext +ifpack
|
||||
+intrepid +intrepid2 +isorropia +kokkos +minitensor +nox +piro +phalanx
|
||||
+rol +rythmos +sacado +stk +shards +stratimikos +tempus +tpetra
|
||||
+trilinoscouplings +zoltan]
|
||||
- one_of: [gotype=long_long, gotype=all]
|
||||
- one_of: [~ml ~muelu ~zoltan2 ~teko, +ml +muelu +zoltan2 +teko]
|
||||
- one_of: [+superlu-dist, ~superlu-dist]
|
||||
- one_of: [+shylu, ~shylu]
|
||||
variants: +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext
|
||||
+ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu
|
||||
+nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos
|
||||
+teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
xz:
|
||||
variants: +pic
|
||||
mesa:
|
||||
version: [21.3.8]
|
||||
mpi:
|
||||
require: mpich
|
||||
mpich:
|
||||
require: '~wrapperrpath ~hwloc'
|
||||
ncurses:
|
||||
require: '@6.3 +termlib'
|
||||
tbb:
|
||||
require: intel-tbb
|
||||
boost:
|
||||
version: [1.79.0]
|
||||
variants: +atomic +chrono +container +date_time +exception +filesystem +graph
|
||||
+iostreams +locale +log +math +mpi +multithreaded +program_options +random
|
||||
+regex +serialization +shared +signals +stacktrace +system +test +thread +timer
|
||||
cxxstd=17 visibility=global
|
||||
libffi:
|
||||
require: "@3.4.4"
|
||||
vtk-m:
|
||||
require: "+examples"
|
||||
cuda:
|
||||
version: [11.8.0]
|
||||
paraview:
|
||||
# Don't build GUI support or GLX rendering for HPC/container deployments
|
||||
require: "@5.11 ~qt+osmesa"
|
||||
|
||||
specs:
|
||||
# CPU
|
||||
@@ -55,13 +79,12 @@ spack:
|
||||
- aml
|
||||
- amrex
|
||||
- arborx
|
||||
- archer
|
||||
- argobots
|
||||
- axom
|
||||
- bolt
|
||||
- bricks
|
||||
- boost
|
||||
- bricks ~cuda
|
||||
- butterflypack
|
||||
- boost +python +filesystem +iostreams +system
|
||||
- cabana
|
||||
- caliper
|
||||
- chai ~benchmarks ~tests
|
||||
@@ -72,7 +95,7 @@ spack:
|
||||
- drishti
|
||||
- dxt-explorer
|
||||
- dyninst
|
||||
- ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp ^hdf5@1.14
|
||||
- ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc +visit +vtkm +zfp # adios2~cuda, ascent~cuda, darshan-runtime, darshan-util, faodel, hdf5, libcatalyst, parallel-netcdf, paraview~cuda, py-cinemasci, sz, unifyfs, veloc, visit, vtk-m, zfp
|
||||
- exaworks
|
||||
- flecsi
|
||||
- flit
|
||||
@@ -83,24 +106,25 @@ spack:
|
||||
- globalarrays
|
||||
- gmp
|
||||
- gotcha
|
||||
- gptune
|
||||
- gptune ~mpispawn
|
||||
- h5bench
|
||||
- hdf5-vol-async
|
||||
- hdf5-vol-cache
|
||||
- hdf5-vol-log
|
||||
- heffte +fftw
|
||||
- hpctoolkit
|
||||
- hpx max_cpu_count=512 networking=mpi
|
||||
- hpx networking=mpi
|
||||
- hypre
|
||||
- kokkos +openmp
|
||||
- kokkos-kernels +openmp
|
||||
- lammps
|
||||
- lbann
|
||||
- legion
|
||||
- libnrm
|
||||
- libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed
|
||||
+lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +mgard
|
||||
- libpressio +bitgrooming +bzip2 ~cuda ~cusz +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp
|
||||
- libquo
|
||||
- libunwind
|
||||
- loki
|
||||
- mercury
|
||||
- metall
|
||||
- mfem
|
||||
@@ -113,6 +137,7 @@ spack:
|
||||
- nrm
|
||||
- nvhpc
|
||||
- omega-h
|
||||
- openfoam
|
||||
- openmpi
|
||||
- openpmd-api
|
||||
- papi
|
||||
@@ -124,16 +149,17 @@ spack:
|
||||
- plasma
|
||||
- plumed
|
||||
- precice
|
||||
- pruners-ninja
|
||||
- pumi
|
||||
- py-h5py +mpi
|
||||
- py-h5py ~mpi
|
||||
- py-h5py
|
||||
- py-jupyterhub
|
||||
- py-libensemble +mpi +nlopt
|
||||
- py-libensemble
|
||||
- py-petsc4py
|
||||
- py-warpx
|
||||
- qthreads scheduler=distrib
|
||||
- quantum-espresso
|
||||
- raja
|
||||
- rempi
|
||||
- scr
|
||||
- slate ~cuda
|
||||
- slepc
|
||||
@@ -142,107 +168,226 @@ spack:
|
||||
- sundials
|
||||
- superlu
|
||||
- superlu-dist
|
||||
- swig
|
||||
- swig@4.0.2-fortran
|
||||
- sz3
|
||||
- tasmanian
|
||||
- tau +mpi +python
|
||||
- trilinos@13.0.1 +belos +ifpack2 +stokhos
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long
|
||||
- turbine
|
||||
- umap
|
||||
- umpire
|
||||
- upcxx
|
||||
- variorum
|
||||
- veloc
|
||||
- wannier90
|
||||
- xyce +mpi +shared +pymi +pymi_static_tpls ^trilinos +shylu
|
||||
- xyce +mpi +shared +pymi +pymi_static_tpls
|
||||
# INCLUDED IN ECP DAV CPU
|
||||
- adios2
|
||||
- ascent
|
||||
- darshan-runtime
|
||||
- darshan-util
|
||||
- faodel
|
||||
- hdf5
|
||||
- libcatalyst
|
||||
- parallel-netcdf
|
||||
- paraview
|
||||
- py-cinemasci
|
||||
- sz
|
||||
- unifyfs
|
||||
- veloc
|
||||
# - visit # silo: https://github.com/spack/spack/issues/39538
|
||||
- vtk-m
|
||||
- zfp
|
||||
# --
|
||||
# - archer # submerged into llvm +libomp_tsan
|
||||
# - geopm # geopm: https://github.com/spack/spack/issues/38795
|
||||
|
||||
# CUDA
|
||||
- amrex +cuda
|
||||
- arborx +cuda ^kokkos +wrapper
|
||||
# CUDA NOARCH
|
||||
- bricks +cuda
|
||||
- cabana +cuda ^kokkos +wrapper +cuda_lambda +cuda
|
||||
- caliper +cuda
|
||||
- chai ~benchmarks ~tests +cuda ^umpire ~shared
|
||||
- cusz +cuda
|
||||
- dealii +cuda
|
||||
- ecp-data-vis-sdk +cuda ~ascent +adios2 +hdf5 +paraview +sz +vtkm +zfp ^hdf5@1.14 # Removing ascent because RAJA build failure
|
||||
- flecsi +cuda
|
||||
- flux-core +cuda
|
||||
- ginkgo +cuda
|
||||
- heffte +cuda
|
||||
- hpctoolkit +cuda
|
||||
- hpx max_cpu_count=512 +cuda
|
||||
- hypre +cuda
|
||||
- kokkos +wrapper +cuda
|
||||
- kokkos-kernels +cuda ^kokkos +wrapper +cuda +cuda_lambda
|
||||
- libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua
|
||||
+openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +cusz
|
||||
+mgard +cuda ^cusz +cuda
|
||||
- magma +cuda
|
||||
- mfem +cuda
|
||||
- mgard +serial +openmp +timing +unstructured +cuda
|
||||
- omega-h +cuda
|
||||
- papi +cuda
|
||||
- petsc +cuda
|
||||
- py-torch +cuda
|
||||
- raja +cuda
|
||||
- slate +cuda
|
||||
- slepc +cuda
|
||||
- strumpack ~slate +cuda
|
||||
- sundials +cuda
|
||||
- superlu-dist +cuda
|
||||
- tasmanian +cuda
|
||||
- tau +mpi +cuda
|
||||
- "trilinos@13.4.0: +belos +ifpack2 +stokhos +cuda"
|
||||
- umpire ~shared +cuda
|
||||
# --
|
||||
# - legion +cuda # legion: needs NVIDIA driver
|
||||
|
||||
# ROCm
|
||||
- amrex +rocm
|
||||
- arborx +rocm
|
||||
- cabana +rocm
|
||||
- caliper +rocm
|
||||
- chai ~benchmarks +rocm
|
||||
- ecp-data-vis-sdk +adios2 +hdf5 +paraview +pnetcdf +sz +vtkm +zfp +rocm ^hdf5@1.14 # Excludes ascent for now due to C++ standard issues
|
||||
- gasnet +rocm
|
||||
- ginkgo +rocm
|
||||
- heffte +rocm
|
||||
# CUDA 80
|
||||
- amrex +cuda cuda_arch=80
|
||||
- arborx +cuda cuda_arch=80 ^kokkos +wrapper
|
||||
- cabana +cuda cuda_arch=80 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=80
|
||||
- caliper +cuda cuda_arch=80
|
||||
- chai ~benchmarks ~tests +cuda cuda_arch=80 ^umpire ~shared
|
||||
- cusz +cuda cuda_arch=80
|
||||
- dealii +cuda cuda_arch=80
|
||||
- ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # +ascent fails because fides fetch error
|
||||
- flecsi +cuda cuda_arch=80
|
||||
- ginkgo +cuda cuda_arch=80
|
||||
- heffte +cuda cuda_arch=80
|
||||
- hpx +cuda cuda_arch=80
|
||||
- hypre +cuda cuda_arch=80
|
||||
- kokkos +wrapper +cuda cuda_arch=80
|
||||
- kokkos-kernels +cuda cuda_arch=80 ^kokkos +wrapper +cuda cuda_arch=80
|
||||
- libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +cusz +mgard +cuda cuda_arch=80 ^cusz +cuda cuda_arch=80
|
||||
- magma +cuda cuda_arch=80
|
||||
- mfem +cuda cuda_arch=80
|
||||
- mgard +serial +openmp +timing +unstructured +cuda cuda_arch=80
|
||||
- omega-h +cuda cuda_arch=80
|
||||
- parsec +cuda cuda_arch=80
|
||||
- petsc +cuda cuda_arch=80
|
||||
- py-torch +cuda cuda_arch=80
|
||||
- raja +cuda cuda_arch=80
|
||||
- slate +cuda cuda_arch=80
|
||||
- slepc +cuda cuda_arch=80
|
||||
- strumpack ~slate +cuda cuda_arch=80
|
||||
- sundials +cuda cuda_arch=80
|
||||
- superlu-dist +cuda cuda_arch=80
|
||||
- tasmanian +cuda cuda_arch=80
|
||||
- trilinos +cuda cuda_arch=80
|
||||
- umpire ~shared +cuda cuda_arch=80
|
||||
# INCLUDED IN ECP DAV CUDA
|
||||
# - adios2 +cuda cuda_arch=80
|
||||
# - ascent +cuda cuda_arch=80 # ascent: https://github.com/spack/spack/issues/38045
|
||||
# - paraview +cuda cuda_arch=80
|
||||
# - vtk-m +cuda cuda_arch=80
|
||||
# - zfp +cuda cuda_arch=80
|
||||
# --
|
||||
# - lammps +cuda cuda_arch=80 # lammps: needs NVIDIA driver
|
||||
# - upcxx +cuda cuda_arch=80 # upcxx: needs NVIDIA driver
|
||||
# - axom +cuda cuda_arch=80 # axom: https://github.com/spack/spack/issues/29520
|
||||
# - lbann +cuda cuda_arch=80 # lbann: https://github.com/spack/spack/issues/38788
|
||||
|
||||
# CUDA 90
|
||||
- amrex +cuda cuda_arch=90
|
||||
- arborx +cuda cuda_arch=90 ^kokkos +wrapper
|
||||
- cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90
|
||||
- caliper +cuda cuda_arch=90
|
||||
- chai ~benchmarks ~tests +cuda cuda_arch=90 ^umpire ~shared
|
||||
- cusz +cuda cuda_arch=90
|
||||
- flecsi +cuda cuda_arch=90
|
||||
- ginkgo +cuda cuda_arch=90
|
||||
- heffte +cuda cuda_arch=90
|
||||
- hpx +cuda cuda_arch=90
|
||||
- kokkos +wrapper +cuda cuda_arch=90
|
||||
- kokkos-kernels +cuda cuda_arch=90 ^kokkos +wrapper +cuda cuda_arch=90
|
||||
- libpressio +bitgrooming +bzip2 +fpzip +hdf5 +libdistributed +lua +openmp +python +sz +sz3 +unix +zfp +json +remote +netcdf +cusz +mgard +cuda cuda_arch=90 ^cusz +cuda cuda_arch=90
|
||||
- magma +cuda cuda_arch=90
|
||||
- mfem +cuda cuda_arch=90
|
||||
- mgard +serial +openmp +timing +unstructured +cuda cuda_arch=90
|
||||
- parsec +cuda cuda_arch=90
|
||||
- petsc +cuda cuda_arch=90
|
||||
- py-torch +cuda cuda_arch=90
|
||||
- raja +cuda cuda_arch=90
|
||||
- slate +cuda cuda_arch=90
|
||||
- slepc +cuda cuda_arch=90
|
||||
- strumpack ~slate +cuda cuda_arch=90
|
||||
- sundials +cuda cuda_arch=90
|
||||
- superlu-dist +cuda cuda_arch=90
|
||||
- trilinos +cuda cuda_arch=90
|
||||
- umpire ~shared +cuda cuda_arch=90
|
||||
# INCLUDED IN ECP DAV CUDA
|
||||
- adios2 +cuda cuda_arch=90
|
||||
# - ascent +cuda cuda_arch=90 # ascent: https://github.com/spack/spack/issues/38045
|
||||
# - paraview +cuda cuda_arch=90 # paraview: InstallError: Incompatible cuda_arch=90
|
||||
- vtk-m +cuda cuda_arch=90
|
||||
- zfp +cuda cuda_arch=90
|
||||
# --
|
||||
# - axom +cuda cuda_arch=90 # axom: https://github.com/spack/spack/issues/29520
|
||||
# - dealii +cuda cuda_arch=90 # dealii: https://github.com/spack/spack/issues/39532
|
||||
# - ecp-data-vis-sdk ~rocm +adios2 +ascent +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=90 # paraview: incompatible cuda_arch; vtk-m: CMake Error at CMake/VTKmWrappers.cmake:413 (message): vtkm_cont needs to be built STATIC as CUDA doesn't support virtual methods across dynamic library boundaries. You need to set the CMake opt ion BUILD_SHARED_LIBS to `OFF` or (better) turn VTKm_NO_DEPRECATED_VIRTUAL to `ON`.
|
||||
# - hypre +cuda cuda_arch=90 # concretizer: hypre +cuda requires cuda@:11, but cuda_arch=90 requires cuda@12:
|
||||
# - lammps +cuda cuda_arch=90 # lammps: needs NVIDIA driver
|
||||
# - lbann +cuda cuda_arch=90 # concretizer: Cannot select a single "version" for package "lbann"
|
||||
# - omega-h +cuda cuda_arch=90 # omega-h: https://github.com/spack/spack/issues/39535
|
||||
# - tasmanian +cuda cuda_arch=90 # tasmanian: conflicts with cuda@12
|
||||
# - upcxx +cuda cuda_arch=90 # upcxx: needs NVIDIA driver
|
||||
|
||||
# ROCM NOARCH
|
||||
- hpctoolkit +rocm
|
||||
- hpx max_cpu_count=512 +rocm
|
||||
- hypre +rocm
|
||||
- kokkos +rocm
|
||||
- magma ~cuda +rocm
|
||||
- mfem +rocm
|
||||
- papi +rocm
|
||||
- petsc +rocm
|
||||
- raja ~openmp +rocm
|
||||
- slate +rocm
|
||||
- slepc +rocm ^petsc +rocm
|
||||
- strumpack ~slate +rocm
|
||||
- sundials +rocm
|
||||
- superlu-dist +rocm
|
||||
- tasmanian ~openmp +rocm
|
||||
- tau +mpi +rocm
|
||||
- "trilinos@13.4.0: +belos ~ifpack2 ~stokhos +rocm"
|
||||
- umpire +rocm
|
||||
- upcxx +rocm
|
||||
- tau +mpi +rocm # tau: has issue with `spack env depfile` build
|
||||
|
||||
# CPU failures
|
||||
# - geopm # /usr/include/x86_64-linux-gnu/bits/string_fortified.h:95:10: error:'__builtin_strncpy' specified bound 512 equals destination size [-Werror=stringop-truncation]
|
||||
# - hdf5-vol-daos # hdf5-vol-daos: vhost/vhost_user.c:65:32: error: array size missing in 'vhost_message_handlers'
|
||||
# - loki # ../include/loki/Singleton.h:158:14: warning: 'template<class> class std::auto_ptr' is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
|
||||
# - pruners-ninja # test/ninja_test_util.c:34: multiple definition of `a';
|
||||
# - rempi # rempi_message_manager.h:53:3: error: 'string' does not name a type
|
||||
# ROCM 908
|
||||
- amrex +rocm amdgpu_target=gfx908
|
||||
- arborx +rocm amdgpu_target=gfx908
|
||||
- cabana +rocm amdgpu_target=gfx908
|
||||
- caliper +rocm amdgpu_target=gfx908
|
||||
- chai ~benchmarks +rocm amdgpu_target=gfx908
|
||||
- ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908
|
||||
- gasnet +rocm amdgpu_target=gfx908
|
||||
- ginkgo +rocm amdgpu_target=gfx908
|
||||
- heffte +rocm amdgpu_target=gfx908
|
||||
- hpx +rocm amdgpu_target=gfx908
|
||||
- hypre +rocm amdgpu_target=gfx908
|
||||
- kokkos +rocm amdgpu_target=gfx908
|
||||
- legion +rocm amdgpu_target=gfx908
|
||||
- magma ~cuda +rocm amdgpu_target=gfx908
|
||||
- mfem +rocm amdgpu_target=gfx908
|
||||
- petsc +rocm amdgpu_target=gfx908
|
||||
- raja ~openmp +rocm amdgpu_target=gfx908
|
||||
- slate +rocm amdgpu_target=gfx908
|
||||
- slepc +rocm amdgpu_target=gfx908 ^petsc +rocm amdgpu_target=gfx908
|
||||
- strumpack ~slate +rocm amdgpu_target=gfx908
|
||||
- sundials +rocm amdgpu_target=gfx908
|
||||
- superlu-dist +rocm amdgpu_target=gfx908
|
||||
- tasmanian ~openmp +rocm amdgpu_target=gfx908
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack ~ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu ~stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long +rocm amdgpu_target=gfx908
|
||||
- umpire +rocm amdgpu_target=gfx908
|
||||
- upcxx +rocm amdgpu_target=gfx908
|
||||
# INCLUDED IN ECP DAV ROCM
|
||||
# - hdf5
|
||||
# - hdf5-vol-async
|
||||
# - hdf5-vol-cache
|
||||
# - hdf5-vol-log
|
||||
# - libcatalyst
|
||||
- paraview +rocm amdgpu_target=gfx908
|
||||
# - vtk-m ~openmp +rocm amdgpu_target=gfx908 # vtk-m: https://github.com/spack/spack/issues/40268
|
||||
# --
|
||||
# - lbann ~cuda +rocm amdgpu_target=gfx908 # aluminum: https://github.com/spack/spack/issues/38807
|
||||
# - papi +rocm amdgpu_target=gfx908 # papi: https://github.com/spack/spack/issues/27898
|
||||
|
||||
# CUDA failures
|
||||
# - parsec +cuda # parsec/mca/device/cuda/transfer.c:168: multiple definition of `parsec_CUDA_d2h_max_flows';
|
||||
# ROCM 90a
|
||||
- amrex +rocm amdgpu_target=gfx90a
|
||||
- arborx +rocm amdgpu_target=gfx90a
|
||||
- cabana +rocm amdgpu_target=gfx90a
|
||||
- caliper +rocm amdgpu_target=gfx90a
|
||||
- chai ~benchmarks +rocm amdgpu_target=gfx90a
|
||||
- ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a
|
||||
- gasnet +rocm amdgpu_target=gfx90a
|
||||
- ginkgo +rocm amdgpu_target=gfx90a
|
||||
- heffte +rocm amdgpu_target=gfx90a
|
||||
- hpx +rocm amdgpu_target=gfx90a
|
||||
- hypre +rocm amdgpu_target=gfx90a
|
||||
- kokkos +rocm amdgpu_target=gfx90a
|
||||
- legion +rocm amdgpu_target=gfx90a
|
||||
- magma ~cuda +rocm amdgpu_target=gfx90a
|
||||
- mfem +rocm amdgpu_target=gfx90a
|
||||
- petsc +rocm amdgpu_target=gfx90a
|
||||
- raja ~openmp +rocm amdgpu_target=gfx90a
|
||||
- slate +rocm amdgpu_target=gfx90a
|
||||
- slepc +rocm amdgpu_target=gfx90a ^petsc +rocm amdgpu_target=gfx90a
|
||||
- strumpack ~slate +rocm amdgpu_target=gfx90a
|
||||
- sundials +rocm amdgpu_target=gfx90a
|
||||
- superlu-dist +rocm amdgpu_target=gfx90a
|
||||
- tasmanian ~openmp +rocm amdgpu_target=gfx90a
|
||||
- trilinos +amesos +amesos2 +anasazi +aztec +belos +boost +epetra +epetraext +ifpack ~ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu ~stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long +rocm amdgpu_target=gfx90a
|
||||
- umpire +rocm amdgpu_target=gfx90a
|
||||
- upcxx +rocm amdgpu_target=gfx90a
|
||||
# INCLUDED IN ECP DAV ROCM
|
||||
# - hdf5
|
||||
# - hdf5-vol-async
|
||||
# - hdf5-vol-cache
|
||||
# - hdf5-vol-log
|
||||
# - libcatalyst
|
||||
- paraview +rocm amdgpu_target=gfx90a
|
||||
# - vtk-m ~openmp +rocm amdgpu_target=gfx90a # vtk-m: https://github.com/spack/spack/issues/40268
|
||||
# --
|
||||
# - lbann ~cuda +rocm amdgpu_target=gfx90a # aluminum: https://github.com/spack/spack/issues/38807
|
||||
# - papi +rocm amdgpu_target=gfx90a # papi: https://github.com/spack/spack/issues/27898
|
||||
|
||||
mirrors: { "mirror": "s3://spack-binaries/develop/e4s" }
|
||||
|
||||
ci:
|
||||
pipeline-gen:
|
||||
- build-job:
|
||||
image: "ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01"
|
||||
image: "ghcr.io/spack/ubuntu20.04-runner-amd64-gcc-11.4:2023.08.01"
|
||||
|
||||
cdash:
|
||||
build-group: E4S
|
||||
|
@@ -41,7 +41,7 @@
|
||||
|
||||
# prevent infinite recursion when spack shells out (e.g., on cray for modules)
|
||||
if [ -n "${_sp_initializing:-}" ]; then
|
||||
exit 0
|
||||
return 0
|
||||
fi
|
||||
export _sp_initializing=true
|
||||
|
||||
|
@@ -320,8 +320,12 @@ class Acts(CMakePackage, CudaPackage):
|
||||
for _cxxstd in _cxxstd_values:
|
||||
if isinstance(_cxxstd, _ConditionalVariantValues):
|
||||
for _v in _cxxstd:
|
||||
depends_on(
|
||||
f"geant4 cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} ^geant4"
|
||||
)
|
||||
depends_on(f"root cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} ^root")
|
||||
else:
|
||||
depends_on(f"geant4 cxxstd={_v.value}", when=f"cxxstd={_v.value} {_v.when} ^geant4")
|
||||
depends_on(f"root cxxstd={_cxxstd}", when=f"cxxstd={_cxxstd} ^root")
|
||||
|
||||
# ACTS has been using C++17 for a while, which precludes use of old GCC
|
||||
|
4
var/spack/repos/builtin/packages/additivefoam/assets/Allwmake
Executable file
4
var/spack/repos/builtin/packages/additivefoam/assets/Allwmake
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
|
||||
applications/Allwmake $targetType $*
|
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
|
||||
wmake libso solvers/additiveFoam/movingHeatSource
|
||||
wmake solvers/additiveFoam
|
59
var/spack/repos/builtin/packages/additivefoam/package.py
Normal file
59
var/spack/repos/builtin/packages/additivefoam/package.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
|
||||
from spack.package import *
|
||||
from spack.pkg.builtin.openfoam import add_extra_files
|
||||
|
||||
|
||||
class Additivefoam(Package):
|
||||
"""AdditiveFOAM is a heat and mass transfer software for Additive Manufacturing (AM)"""
|
||||
|
||||
homepage = "https://github.com/ORNL/AdditiveFOAM"
|
||||
git = "https://github.com/ORNL/AdditiveFOAM.git"
|
||||
url = "https://github.com/ORNL/AdditiveFOAM/archive/1.0.0.tar.gz"
|
||||
|
||||
maintainers("streeve", "colemanjs", "gknapp1")
|
||||
|
||||
tags = ["ecp"]
|
||||
|
||||
version("main", branch="main")
|
||||
version("1.0.0", sha256="abbdf1b0230cd2f26f526be76e973f508978611f404fe8ec4ecdd7d5df88724c")
|
||||
|
||||
depends_on("openfoam-org@10")
|
||||
|
||||
common = ["spack-derived-Allwmake"]
|
||||
assets = ["applications/Allwmake", "Allwmake"]
|
||||
|
||||
build_script = "./spack-derived-Allwmake"
|
||||
|
||||
phases = ["configure", "build", "install"]
|
||||
|
||||
def patch(self):
|
||||
add_extra_files(self, self.common, self.assets)
|
||||
|
||||
def configure(self, spec, prefix):
|
||||
pass
|
||||
|
||||
def build(self, spec, prefix):
|
||||
"""Build with Allwmake script, wrapped to source environment first."""
|
||||
args = []
|
||||
if self.parallel: # Parallel build? - pass via environment
|
||||
os.environ["WM_NCOMPPROCS"] = str(make_jobs)
|
||||
builder = Executable(self.build_script)
|
||||
builder(*args)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
"""Install under the prefix directory"""
|
||||
|
||||
for f in ["README.md", "LICENSE"]:
|
||||
if os.path.isfile(f):
|
||||
install(f, join_path(self.prefix, f))
|
||||
|
||||
dirs = ["tutorials", "applications"]
|
||||
for d in dirs:
|
||||
if os.path.isdir(d):
|
||||
install_tree(d, join_path(self.prefix, d), symlinks=True)
|
@@ -130,6 +130,7 @@ class Adios2(CMakePackage, CudaPackage):
|
||||
depends_on("libzmq", when="+dataman")
|
||||
depends_on("dataspaces@1.8.0:", when="+dataspaces")
|
||||
|
||||
depends_on("hdf5@:1.12", when="@:2.8 +hdf5")
|
||||
depends_on("hdf5~mpi", when="+hdf5~mpi")
|
||||
depends_on("hdf5+mpi", when="+hdf5+mpi")
|
||||
|
||||
|
@@ -24,6 +24,7 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage):
|
||||
maintainers("WeiqunZhang", "asalmgren", "etpalmer63")
|
||||
|
||||
version("develop", branch="development")
|
||||
version("23.10", sha256="3c85aa0ad5f96303e797960a6e0aa37c427f6483f39cdd61dbc2f7ca16357714")
|
||||
version("23.09", sha256="1a539c2628041b17ad910afd9270332060251c8e346b1482764fdb87a4f25053")
|
||||
version("23.08", sha256="a83b7249d65ad8b6ac1881377e5f814b6db8ed8410ea5562b8ae9d4ed1f37c29")
|
||||
version("23.07", sha256="4edb991da51bcaad040f852e42c82834d8605301aa7eeb01cd1512d389a58d90")
|
||||
|
@@ -17,6 +17,7 @@ class Assimp(CMakePackage):
|
||||
maintainers("wdconinc")
|
||||
|
||||
version("master", branch="master")
|
||||
version("5.3.1", sha256="a07666be71afe1ad4bc008c2336b7c688aca391271188eb9108d0c6db1be53f1")
|
||||
version("5.2.5", sha256="b5219e63ae31d895d60d98001ee5bb809fb2c7b2de1e7f78ceeb600063641e1a")
|
||||
version("5.2.4", sha256="6a4ff75dc727821f75ef529cea1c4fc0a7b5fc2e0a0b2ff2f6b7993fe6cb54ba")
|
||||
version("5.2.3", sha256="b20fc41af171f6d8f1f45d4621f18e6934ab7264e71c37cd72fd9832509af2a8")
|
||||
|
31
var/spack/repos/builtin/packages/awscli-v2/package.py
Normal file
31
var/spack/repos/builtin/packages/awscli-v2/package.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class AwscliV2(PythonPackage):
|
||||
"""This package provides a unified command line interface to Amazon Web Services."""
|
||||
|
||||
homepage = "https://docs.aws.amazon.com/cli"
|
||||
url = "https://github.com/aws/aws-cli/archive/refs/tags/2.13.22.tar.gz"
|
||||
|
||||
maintainers("climbfuji")
|
||||
|
||||
version("2.13.22", sha256="dd731a2ba5973f3219f24c8b332a223a29d959493c8a8e93746d65877d02afc1")
|
||||
|
||||
depends_on("python@3.8:", type=("build", "run"))
|
||||
depends_on("py-flit-core@3.7.1:3.8.0", type=("build"))
|
||||
depends_on("py-colorama@0.2.5:0.4.6", type=("build", "run"))
|
||||
depends_on("py-docutils@0.10:0.19", type=("build", "run"))
|
||||
depends_on("py-cryptography@3.3.2:40.0.1", type=("build", "run"))
|
||||
depends_on("py-ruamel-yaml@0.15:0.17.21", type=("build", "run"))
|
||||
depends_on("py-ruamel-yaml-clib@0.2:0.2.7", type=("build", "run"))
|
||||
depends_on("py-prompt-toolkit@3.0.24:3.0.38", type=("build", "run"))
|
||||
depends_on("py-distro@1.5:1.8", type=("build", "run"))
|
||||
depends_on("py-awscrt@0.16.4:0.16.16", type=("build", "run"))
|
||||
depends_on("py-python-dateutil@2.1:2", type=("build", "run"))
|
||||
depends_on("py-jmespath@0.7.1:1.0", type=("build", "run"))
|
||||
depends_on("py-urllib3@1.25.4:1.26", type=("build", "run"))
|
@@ -96,13 +96,7 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage):
|
||||
when="@2.37:",
|
||||
)
|
||||
variant("ld", default=False, description="Enable ld.")
|
||||
# When you build binutils with ~ld and +gas and load it in your PATH, you
|
||||
# may end up with incompatibilities between a potentially older system ld
|
||||
# and a recent assembler. For instance the linker on ubuntu 16.04 from
|
||||
# binutils 2.26 and the assembler from binutils 2.36.1 will result in:
|
||||
# "unable to initialize decompress status for section .debug_info"
|
||||
# when compiling with debug symbols on gcc.
|
||||
variant("gas", default=False, when="+ld", description="Enable as assembler.")
|
||||
variant("gas", default=False, description="Enable as assembler.")
|
||||
variant("interwork", default=False, description="Enable interwork.")
|
||||
variant("gprofng", default=False, description="Enable gprofng.", when="@2.39:")
|
||||
variant(
|
||||
@@ -162,6 +156,14 @@ class Binutils(AutotoolsPackage, GNUMirrorPackage):
|
||||
"~lto", when="+pgo", msg="Profile-guided optimization enables link-time optimization"
|
||||
)
|
||||
|
||||
# When you build binutils with ~ld and +gas and load it in your PATH, you
|
||||
# may end up with incompatibilities between a potentially older system ld
|
||||
# and a recent assembler. For instance the linker on ubuntu 16.04 from
|
||||
# binutils 2.26 and the assembler from binutils 2.36.1 will result in:
|
||||
# "unable to initialize decompress status for section .debug_info"
|
||||
# when compiling with debug symbols on gcc.
|
||||
conflicts("+gas", "~ld", msg="Assembler not always compatible with system ld")
|
||||
|
||||
@classmethod
|
||||
def determine_version(cls, exe):
|
||||
output = Executable(exe)("--version", output=str, error=str)
|
||||
|
@@ -46,11 +46,14 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
variant("openmp", default=True, description="Use OpenMP internally.")
|
||||
variant("shared", default=True, description="Build shared libraries")
|
||||
variant("sycl", default=False, description="Build support for the SYCL backend")
|
||||
|
||||
depends_on("cmake@3.15.0:", type="build")
|
||||
depends_on("blas")
|
||||
depends_on("llvm-openmp", when="%apple-clang +openmp")
|
||||
depends_on("rocblas", when="+rocm")
|
||||
depends_on("intel-oneapi-mkl", when="+sycl")
|
||||
depends_on("intel-oneapi-mkl threads=openmp", when="+sycl")
|
||||
|
||||
# only supported with clingo solver: virtual dependency preferences
|
||||
# depends_on('openblas threads=openmp', when='+openmp ^openblas')
|
||||
@@ -63,7 +66,21 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
|
||||
conflicts(
|
||||
"+rocm", when="@:2020.10.02", msg="ROCm support requires BLAS++ 2021.04.00 or greater"
|
||||
)
|
||||
conflicts("+rocm", when="+cuda", msg="BLAS++ can only support one GPU backend at a time")
|
||||
backend_msg = "BLAS++ supports only one GPU backend at a time"
|
||||
conflicts("+rocm", when="+cuda", msg=backend_msg)
|
||||
conflicts("+rocm", when="+sycl", msg=backend_msg)
|
||||
conflicts("+cuda", when="+sycl", msg=backend_msg)
|
||||
conflicts("+sycl", when="@:2023.06.00", msg="SYCL support requires BLAS++ version 2023.08.25")
|
||||
|
||||
# TODO: +sycl requires use of the intel-oneapi compiler, but we cannot express that directly.
|
||||
# For now, add conflicts for other compilers instead.
|
||||
for __compiler in spack.compilers.supported_compilers():
|
||||
if __compiler != "oneapi":
|
||||
conflicts(
|
||||
"%{0}".format(__compiler),
|
||||
when="+sycl",
|
||||
msg="blaspp+sycl must be compiled with %oneapi",
|
||||
)
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
@@ -74,6 +91,8 @@ def cmake_args(self):
|
||||
backend = "cuda"
|
||||
if "+rocm" in spec:
|
||||
backend = "hip"
|
||||
if "+sycl" in spec:
|
||||
backend = "sycl"
|
||||
backend_config = "-Dgpu_backend=%s" % backend
|
||||
|
||||
args = [
|
||||
|
@@ -14,6 +14,7 @@ class Botan(MakefilePackage):
|
||||
|
||||
maintainers("aumuell")
|
||||
|
||||
version("3.2.0", sha256="049c847835fcf6ef3a9e206b33de05dd38999c325e247482772a5598d9e5ece3")
|
||||
version("3.1.1", sha256="30c84fe919936a98fef5331f246c62aa2c0e4d2085b2d4511207f6a20afa3a6b")
|
||||
version("3.1.0", sha256="4e18e755a8bbc6bf96fac916fbf072ecd06740c72a72017c27162e4c0b4725fe")
|
||||
version("3.0.0", sha256="5da552e00fa1c047a90c22eb5f0247ec27e7432b68b78e10a7ce0955269ccad7")
|
||||
|
11
var/spack/repos/builtin/packages/bufr/c-tests-libm.patch
Normal file
11
var/spack/repos/builtin/packages/bufr/c-tests-libm.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- a/test/CMakeLists.txt 2022-07-28 11:25:13.000000000 -0400
|
||||
+++ b/test/CMakeLists.txt 2022-07-28 11:26:40.000000000 -0400
|
||||
@@ -205,7 +205,7 @@
|
||||
set(test_exe ${test}.x)
|
||||
add_executable(${test_exe} ${test_src})
|
||||
add_dependencies(${test_exe} bufr_${kind})
|
||||
- target_link_libraries(${test_exe} PRIVATE bufr::bufr_${kind})
|
||||
+ target_link_libraries(${test_exe} PRIVATE bufr::bufr_${kind} m)
|
||||
add_test(NAME ${test} COMMAND ${CMAKE_BINARY_DIR}/test/${test_exe})
|
||||
endforeach()
|
||||
endforeach()
|
@@ -0,0 +1,15 @@
|
||||
--- a/CMakeLists.txt 2022-02-08 10:03:55.000000000 -0700
|
||||
+++ b/CMakeLists.txt 2022-02-08 10:03:51.000000000 -0700
|
||||
@@ -39,9 +39,9 @@
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
endif()
|
||||
|
||||
-if(APPLE)
|
||||
- # The linker on macOS does not include `common symbols` by default
|
||||
- # Passing the -c flag includes them and fixes an error with undefined symbols
|
||||
+if(APPLE AND NOT "${CMAKE_RANLIB}" MATCHES "^.*(llvm-ranlib)$")
|
||||
+ # The linker on macOS does not include `common symbols` by default, Intel requires
|
||||
+ # passing the -c flag to include them and fix an error with undefined symbols
|
||||
set(CMAKE_Fortran_ARCHIVE_FINISH "<CMAKE_RANLIB> -c <TARGET>")
|
||||
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -c <TARGET>")
|
||||
endif()
|
@@ -3,6 +3,8 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
@@ -11,37 +13,109 @@ class Bufr(CMakePackage):
|
||||
utilities that can be used to read (decode) and write (encode)
|
||||
data in BUFR, which is a WMO standard format for the exchange of
|
||||
meteorological data. This is part of the NCEPLIBS project.
|
||||
|
||||
The library also includes a Python interface.
|
||||
"""
|
||||
|
||||
homepage = "https://noaa-emc.github.io/NCEPLIBS-bufr"
|
||||
url = "https://github.com/NOAA-EMC/NCEPLIBS-bufr/archive/refs/tags/bufr_v11.5.0.tar.gz"
|
||||
git = "https://github.com/NOAA-EMC/NCEPLIBS-bufr"
|
||||
|
||||
maintainers("t-brown", "AlexanderRichert-NOAA", "edwardhartnett", "Hang-Lei-NOAA", "jbathegit")
|
||||
maintainers("AlexanderRichert-NOAA", "edwardhartnett", "Hang-Lei-NOAA", "jbathegit")
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("12.0.1", sha256="525f26238dba6511a453fc71cecc05f59e4800a603de2abbbbfb8cbb5adf5708")
|
||||
version("12.0.0", sha256="d01c02ea8e100e51fd150ff1c4a1192ca54538474acb1b7f7a36e8aeab76ee75")
|
||||
version("11.7.1", sha256="6533ce6eaa6b02c0cb5424cfbc086ab120ccebac3894980a4daafd4dfadd71f8")
|
||||
version("11.7.0", sha256="6a76ae8e7682bbc790321bf80c2f9417775c5b01a5c4f10763df92e01b20b9ca")
|
||||
version("11.6.0", sha256="af4c04e0b394aa9b5f411ec5c8055888619c724768b3094727e8bb7d3ea34a54")
|
||||
version("11.5.0", sha256="d154839e29ef1fe82e58cf20232e9f8a4f0610f0e8b6a394b7ca052e58f97f43")
|
||||
version("11.4.0", sha256="946482405e675b99e8e0c221d137768f246076f5e9ba92eed6cae47fb68b7a26")
|
||||
|
||||
# Patch to not add "-c" to ranlib flags when using llvm-ranlib on Apple systems
|
||||
patch("cmakelists-apple-llvm-ranlib.patch", when="@11.5.0:11.6.0")
|
||||
# C test does not explicity link to -lm causing DSO error when building shared libs
|
||||
patch("c-tests-libm.patch", when="@11.5.0:11.7.0")
|
||||
# Patch to identify Python version correctly
|
||||
patch("python-version.patch", when="@11.5:12.0.0 +python")
|
||||
|
||||
variant("python", default=False, description="Enable Python interface?")
|
||||
variant("shared", default=True, description="Build shared libraries", when="@11.5:")
|
||||
|
||||
extends("python", when="+python")
|
||||
|
||||
depends_on("python@3:", type=("build", "run"), when="+python")
|
||||
depends_on("py-setuptools", type="build", when="+python")
|
||||
depends_on("py-numpy", type=("build", "run"), when="+python")
|
||||
depends_on("py-pip", type="build", when="+python")
|
||||
depends_on("py-wheel", type="build", when="+python")
|
||||
|
||||
def url_for_version(self, version):
|
||||
pre = "bufr_" if version < Version("12.0.1") else ""
|
||||
return (
|
||||
f"https://github.com/NOAA-EMC/NCEPLIBS-bufr/archive/refs/tags/{pre}v{version}.tar.gz"
|
||||
)
|
||||
|
||||
# Need to make the lines shorter at least on some systems
|
||||
def patch(self):
|
||||
with when("@:11.7.1"):
|
||||
filter_file("_lenslmax 120", "_lenslmax 60", "CMakeLists.txt")
|
||||
|
||||
def cmake_args(self):
|
||||
args = [
|
||||
self.define_from_variant("ENABLE_PYTHON", "python"),
|
||||
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||
self.define("BUILD_TESTS", self.run_tests),
|
||||
]
|
||||
|
||||
return args
|
||||
|
||||
def flag_handler(self, name, flags):
|
||||
"""
|
||||
On macOS if a library built with the ar utility contains objects
|
||||
with Fortran module data but no executable functions,
|
||||
the symbols corresponding to the module data may not be resolved
|
||||
when an object referencing them is linked against the library.
|
||||
You can work around this by compiling with option -fno-common.
|
||||
"""
|
||||
fc = self.compiler.fc
|
||||
if self.spec.satisfies("platform=darwin"):
|
||||
if name == "fflags":
|
||||
if "ifort" in fc or "gfortran" in fc:
|
||||
flags.append("-fno-common")
|
||||
|
||||
# Bufr inserts a path into source code which may be longer than 132
|
||||
if name == "fflags" and "gfortran" in fc:
|
||||
flags.append("-ffree-line-length-none")
|
||||
|
||||
# Inject flags into CMake build
|
||||
return (None, None, flags)
|
||||
|
||||
def _setup_bufr_environment(self, env, suffix):
|
||||
libname = "libbufr_{0}".format(suffix)
|
||||
lib = find_libraries(libname, root=self.prefix, shared=False, recursive=True)
|
||||
lib_envname = "BUFR_LIB{0}".format(suffix)
|
||||
inc_envname = "BUFR_INC{0}".format(suffix)
|
||||
include_dir = "include_{0}".format(suffix)
|
||||
shared = True if "+shared" in self.spec else False
|
||||
# Bufr has _DA (dynamic allocation) libs in versions <= 11.5.0
|
||||
append = "" if self.spec.satisfies("@11.5.0:") else "_DA"
|
||||
lib = find_libraries(libname + append, root=self.prefix, shared=shared, recursive=True)
|
||||
lib_envname = "BUFR_LIB{0}".format(suffix) + append
|
||||
inc_envname = "BUFR_INC{0}".format(suffix) + append
|
||||
include_dir = "{0}_{1}".format(self.prefix.include.bufr, suffix)
|
||||
|
||||
env.set(lib_envname, lib[0])
|
||||
env.set(inc_envname, include_dir)
|
||||
|
||||
# Bufr has _DA (dynamic allocation) libs in versions <= 11.5.0
|
||||
if self.spec.satisfies("@:11.5.0"):
|
||||
da_lib = find_libraries(
|
||||
libname + "_DA", root=self.prefix, shared=False, recursive=True
|
||||
)
|
||||
env.set(lib_envname + "_DA", da_lib[0])
|
||||
env.set(inc_envname + "_DA", include_dir)
|
||||
if self.spec.satisfies("+python"):
|
||||
pyver = self.spec["python"].version.up_to(2)
|
||||
pydir = join_path(os.path.dirname(lib[0]), f"python{pyver}", "site-packages")
|
||||
env.prepend_path("PYTHONPATH", pydir)
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
for suffix in ("4", "8", "d"):
|
||||
suffixes = ["4"]
|
||||
if not self.spec.satisfies("@12:"):
|
||||
suffixes += ["8", "d"]
|
||||
for suffix in suffixes:
|
||||
self._setup_bufr_environment(env, suffix)
|
||||
|
||||
def check(self):
|
||||
if self.spec.satisfies("~python"):
|
||||
with working_dir(self.builder.build_directory):
|
||||
make("test")
|
||||
|
12
var/spack/repos/builtin/packages/bufr/python-version.patch
Normal file
12
var/spack/repos/builtin/packages/bufr/python-version.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
--- a/python/CMakeLists.txt 2023-06-08 12:39:26.000000000 -0600
|
||||
+++ b/python/CMakeLists.txt 2023-07-19 13:45:11.000000000 -0600
|
||||
@@ -8,8 +8,7 @@
|
||||
file( COPY ncepbufr utils DESTINATION . )
|
||||
|
||||
# Library installation directory
|
||||
-execute_process(COMMAND ${Python3_EXECUTABLE} -c "from __future__ import print_function; import sys; print(sys.version[:3], end='')"
|
||||
- OUTPUT_VARIABLE _PYVER)
|
||||
+set(_PYVER "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}")
|
||||
set(_install_dir "${CMAKE_INSTALL_FULL_LIBDIR}/python${_PYVER}/site-packages")
|
||||
|
||||
# Build the extension module for use in install tree
|
@@ -19,6 +19,7 @@ class Cabana(CMakePackage, CudaPackage, ROCmPackage):
|
||||
tags = ["e4s", "ecp"]
|
||||
|
||||
version("master", branch="master")
|
||||
version("0.6.0", sha256="a88a3f80215998169cdbd37661c0c0af57e344af74306dcd2b61983d7c69e6e5")
|
||||
version("0.5.0", sha256="b7579d44e106d764d82b0539285385d28f7bbb911a572efd05c711b28b85d8b1")
|
||||
version("0.4.0", sha256="c347d23dc4a5204f9cc5906ccf3454f0b0b1612351bbe0d1c58b14cddde81e85")
|
||||
version("0.3.0", sha256="fb67ab9aaf254b103ae0eb5cc913ddae3bf3cd0cf6010e9686e577a2981ca84f")
|
||||
@@ -37,7 +38,9 @@ class Cabana(CMakePackage, CudaPackage, ROCmPackage):
|
||||
variant("heffte", default=False, description="Build with heFFTe support")
|
||||
variant("hypre", default=False, description="Build with HYPRE support")
|
||||
variant("silo", default=False, description="Build with SILO support")
|
||||
variant("cajita", default=False, description="Build Cajita subpackage")
|
||||
variant("hdf5", default=False, description="Build with HDF5 support")
|
||||
variant("cajita", default=False, description="Build Cajita subpackage (Grid in 0.6:)")
|
||||
variant("grid", default=False, description="Build Grid subpackage")
|
||||
variant("testing", default=False, description="Build unit tests")
|
||||
variant("examples", default=False, description="Build tutorial examples")
|
||||
variant("performance_testing", default=False, description="Build performance tests")
|
||||
@@ -45,7 +48,7 @@ class Cabana(CMakePackage, CudaPackage, ROCmPackage):
|
||||
depends_on("cmake@3.9:", type="build", when="@:0.4.0")
|
||||
depends_on("cmake@3.16:", type="build", when="@0.5.0:")
|
||||
depends_on("googletest", type="test", when="+testing")
|
||||
_versions = {":0.2": "-legacy", "0.3:": "@3.1:", "0.4:": "@3.2:", "master": "@3.4:"}
|
||||
_versions = {":0.2": "-legacy", "0.3:": "@3.1:", "0.4:": "@3.2:", "0.6:": "@3.7:"}
|
||||
for _version in _versions:
|
||||
_kk_version = _versions[_version]
|
||||
for _backend in _kokkos_backends:
|
||||
@@ -74,14 +77,17 @@ class Cabana(CMakePackage, CudaPackage, ROCmPackage):
|
||||
depends_on("arborx", when="@0.3.0:+arborx")
|
||||
depends_on("hypre-cmake@2.22.0:", when="@0.4.0:+hypre")
|
||||
depends_on("hypre-cmake@2.22.1:", when="@0.5.0:+hypre")
|
||||
# Heffte pinned at 2.x.0 because its cmakefiles can't roll forward
|
||||
# Previous heFFTe pinned at 2.x.0 because its cmakefiles can't roll forward
|
||||
# compatibilty to later minor versions.
|
||||
depends_on("heffte@2.0.0", when="@0.4.0+heffte")
|
||||
depends_on("heffte@2.1.0", when="@0.5.0:+heffte")
|
||||
depends_on("heffte@2.3.0:", when="@0.6.0:+heffte")
|
||||
depends_on("silo", when="@0.5.0:+silo")
|
||||
depends_on("hdf5", when="@0.6.0:+hdf5")
|
||||
depends_on("mpi", when="+mpi")
|
||||
|
||||
conflicts("+cajita ~mpi")
|
||||
conflicts("+grid ~mpi")
|
||||
|
||||
conflicts("+rocm", when="@:0.2.0")
|
||||
conflicts("+sycl", when="@:0.3.0")
|
||||
@@ -90,7 +96,7 @@ def cmake_args(self):
|
||||
options = [self.define_from_variant("BUILD_SHARED_LIBS", "shared")]
|
||||
|
||||
enable = ["CAJITA", "TESTING", "EXAMPLES", "PERFORMANCE_TESTING"]
|
||||
require = ["ARBORX", "HEFFTE", "HYPRE", "SILO"]
|
||||
require = ["ARBORX", "HEFFTE", "HYPRE", "SILO", "HDF5"]
|
||||
|
||||
# These variables were removed in 0.3.0 (where backends are
|
||||
# automatically used from Kokkos)
|
||||
@@ -102,9 +108,24 @@ def cmake_args(self):
|
||||
else:
|
||||
require += ["MPI"]
|
||||
|
||||
# Cajita was renamed Grid in 0.6
|
||||
if self.spec.satisfies("@0.6.0:"):
|
||||
enable += ["GRID"]
|
||||
|
||||
for category, cname in zip([enable, require], ["ENABLE", "REQUIRE"]):
|
||||
for var in category:
|
||||
cbn_option = "Cabana_{0}_{1}".format(cname, var)
|
||||
options.append(self.define_from_variant(cbn_option, var.lower()))
|
||||
|
||||
# Only enable user-requested options.
|
||||
for var in require:
|
||||
enabled_var = "+{0}".format(var.lower())
|
||||
if enabled_var not in self.spec:
|
||||
cbn_disable = "CMAKE_DISABLE_FIND_PACKAGE_{0}".format(var)
|
||||
options.append(self.define(cbn_disable, "ON"))
|
||||
|
||||
# Use hipcc for HIP.
|
||||
if "+rocm" in self.spec:
|
||||
options.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc))
|
||||
|
||||
return options
|
||||
|
@@ -27,6 +27,7 @@ class Caliper(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
version("master", branch="master")
|
||||
version("2.10.0", sha256="14c4fb5edd5e67808d581523b4f8f05ace8549698c0e90d84b53171a77f58565")
|
||||
version("2.9.1", sha256="4771d630de505eff9227e0ec498d0da33ae6f9c34df23cb201b56181b8759e9e")
|
||||
version("2.9.0", sha256="507ea74be64a2dfd111b292c24c4f55f459257528ba51a5242313fa50978371f")
|
||||
version("2.8.0", sha256="17807b364b5ac4b05997ead41bd173e773f9a26ff573ff2fe61e0e70eab496e4")
|
||||
version(
|
||||
@@ -117,7 +118,10 @@ class Caliper(CMakePackage, CudaPackage, ROCmPackage):
|
||||
conflicts("+rocm+cuda")
|
||||
|
||||
patch("for_aarch64.patch", when="target=aarch64:")
|
||||
patch("sampler-service-missing-libunwind-include-dir.patch", when="@2.9.0 +libunwind +sampler")
|
||||
patch(
|
||||
"sampler-service-missing-libunwind-include-dir.patch",
|
||||
when="@2.9.0:2.9.1 +libunwind +sampler",
|
||||
)
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
@@ -53,7 +53,7 @@ class Camp(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
depends_on("cub", when="+cuda")
|
||||
|
||||
depends_on("blt")
|
||||
depends_on("blt", type="build")
|
||||
|
||||
conflicts("^blt@:0.3.6", when="+rocm")
|
||||
|
||||
|
@@ -87,6 +87,7 @@ def cmake_args(self):
|
||||
self.define_from_variant("CGNS_ENABLE_LEGACY", "legacy"),
|
||||
self.define_from_variant("CGNS_ENABLE_MEM_DEBUG", "mem_debug"),
|
||||
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
|
||||
self.define_from_variant("CGNS_ENABLE_64BIT", "int64"),
|
||||
]
|
||||
)
|
||||
|
||||
@@ -95,11 +96,10 @@ def cmake_args(self):
|
||||
[
|
||||
"-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc,
|
||||
"-DCMAKE_CXX_COMPILER=%s" % spec["mpi"].mpicxx,
|
||||
"-DCMAKE_Fortran_COMPILER=%s" % spec["mpi"].mpifc,
|
||||
]
|
||||
)
|
||||
|
||||
options.append(self.define_from_variant("CGNS_ENABLE_64BIT", "int64"))
|
||||
if "+fortran" in spec:
|
||||
options.append(self.define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc))
|
||||
|
||||
if "+hdf5" in spec:
|
||||
options.extend(
|
||||
|
@@ -239,7 +239,7 @@ class Cmake(Package):
|
||||
depends_on("libuv@1.10.0:1.10", when="@3.11.0:3.11")
|
||||
depends_on("libuv@1.10.0:", when="@3.12.0:")
|
||||
depends_on("rhash", when="@3.8.0:")
|
||||
depends_on("jsoncpp", when="@3.2:")
|
||||
depends_on("jsoncpp build_system=meson", when="@3.2:")
|
||||
|
||||
depends_on("ncurses", when="+ncurses")
|
||||
|
||||
|
@@ -21,6 +21,8 @@ class Comgr(CMakePackage):
|
||||
libraries = ["libamd_comgr"]
|
||||
|
||||
version("master", branch="amd-stg-open")
|
||||
version("5.6.1", sha256="0a85d84619f98be26ca7a32c71f94ed3c4e9866133789eabb451be64ce739300")
|
||||
version("5.6.0", sha256="9396a7238b547ee68146c669b10b9d5de8f1d76527c649133c75d8076a185a72")
|
||||
version("5.5.1", sha256="0fbb15fe5a95c2e141ccd360bc413e1feda283334781540a6e5095ab27fd8019")
|
||||
version("5.5.0", sha256="97dfff03226ce0902b9d5d1c8c7bebb7a15978a81b6e9c750bf2d2473890bd42")
|
||||
version("5.4.3", sha256="8af18035550977fe0aa9cca8dfacbe65fe292e971de5a0e160710bafda05a81f")
|
||||
@@ -142,6 +144,8 @@ class Comgr(CMakePackage):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
"master",
|
||||
]:
|
||||
# llvm libs are linked statically, so this *could* be a build dep
|
||||
@@ -153,7 +157,7 @@ class Comgr(CMakePackage):
|
||||
"rocm-device-libs@" + ver, when="@{0} ^llvm-amdgpu ~rocm-device-libs".format(ver)
|
||||
)
|
||||
|
||||
for ver in ["5.5.0", "5.5.1"]:
|
||||
for ver in ["5.5.0", "5.5.1", "5.6.0", "5.6.1"]:
|
||||
depends_on("rocm-core@" + ver, when="@" + ver)
|
||||
|
||||
root_cmakelists_dir = join_path("lib", "comgr")
|
||||
|
@@ -17,6 +17,8 @@ class ComposableKernel(CMakePackage):
|
||||
maintainers("srekolam", "afzpatel")
|
||||
|
||||
version("master", branch="develop")
|
||||
version("5.6.1", commit="f5ec04f091fa5c48c67d7bacec36a414d0be06a5")
|
||||
version("5.6.0", commit="f0fd02634c2f8f8c70f5a0ab2a8c84db5e36eeca")
|
||||
version("5.5.1", commit="ac9e01e2cc3721be24619807adc444e1f59a9d25")
|
||||
version("5.5.0", commit="8b76b832420a3d69708401de6607a033163edcce")
|
||||
version("5.4.3", commit="bb3d9546f186e39cefedc3e7f01d88924ba20168")
|
||||
@@ -40,7 +42,7 @@ class ComposableKernel(CMakePackage):
|
||||
depends_on("pkgconfig", type="build")
|
||||
depends_on("cmake@3.16:", type="build")
|
||||
|
||||
for ver in ["master", "5.5.1", "5.5.0", "5.4.3", "5.4.0"]:
|
||||
for ver in ["master", "5.6.1", "5.6.0", "5.5.1", "5.5.0", "5.4.3", "5.4.0"]:
|
||||
depends_on("hip@" + ver, when="@" + ver)
|
||||
depends_on("llvm-amdgpu@" + ver, when="@" + ver)
|
||||
depends_on("rocm-cmake@" + ver, when="@" + ver, type="build")
|
||||
|
@@ -16,6 +16,8 @@ class Damaris(CMakePackage):
|
||||
maintainers("jcbowden")
|
||||
|
||||
version("master", branch="master")
|
||||
version("1.9.2", tag="v1.9.2")
|
||||
version("1.9.1", tag="v1.9.1")
|
||||
version("1.9.0", tag="v1.9.0")
|
||||
version("1.8.2", tag="v1.8.2")
|
||||
version("1.8.1", tag="v1.8.1")
|
||||
@@ -44,13 +46,14 @@ class Damaris(CMakePackage):
|
||||
default=False,
|
||||
description="Enables building of Python enabled Damaris library using Boost::python",
|
||||
)
|
||||
extends("python", when="+python")
|
||||
|
||||
depends_on("xsd")
|
||||
depends_on("xerces-c")
|
||||
depends_on("mpi")
|
||||
depends_on("cmake@3.18.0:", type=("build"))
|
||||
depends_on("boost+thread+log+filesystem+date_time" "@1.67:")
|
||||
depends_on("boost+thread+log+filesystem+date_time+python+numpy" "@1.67:", when="+python")
|
||||
depends_on("boost@1.67:+thread+log+filesystem+date_time+system")
|
||||
depends_on("boost+python", when="+python")
|
||||
depends_on("py-mpi4py", when="+python", type=("build", "run"))
|
||||
depends_on("hdf5@1.8.20:", when="+hdf5")
|
||||
depends_on("paraview+python+mpi+development_files", when="+catalyst")
|
||||
@@ -87,6 +90,8 @@ def cmake_args(self):
|
||||
|
||||
if self.spec.variants["python"].value:
|
||||
args.extend(["-DENABLE_PYTHON:BOOL=ON"])
|
||||
args.extend(["-DENABLE_PYTHONMOD:BOOL=ON"])
|
||||
args.append(self.define("PYTHON_MODULE_INSTALL_PATH", python_platlib))
|
||||
|
||||
if self.spec.variants["visit"].value:
|
||||
args.extend(["-DENABLE_VISIT:BOOL=ON"])
|
||||
|
@@ -32,6 +32,7 @@ class Discotec(CMakePackage):
|
||||
depends_on("glpk")
|
||||
depends_on("highfive+mpi+boost+ipo", when="+hdf5")
|
||||
depends_on("mpi")
|
||||
depends_on("selalib", when="+selalib")
|
||||
depends_on("vtk", when="+vtk")
|
||||
|
||||
def cmake_args(self):
|
||||
@@ -46,5 +47,7 @@ def cmake_args(self):
|
||||
self.define_from_variant("DISCOTEC_USE_VTK", "vtk"),
|
||||
self.define_from_variant("DISCOTEC_WITH_SELALIB", "selalib"),
|
||||
]
|
||||
if "+selalib" in self.spec:
|
||||
args.append(self.define("SELALIB_DIR", self.spec["selalib"].prefix.cmake))
|
||||
|
||||
return args
|
||||
|
@@ -3,6 +3,8 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
|
||||
from spack.package import *
|
||||
from spack.pkg.builtin.boost import Boost
|
||||
|
||||
@@ -19,7 +21,7 @@ class Ecflow(CMakePackage):
|
||||
homepage = "https://confluence.ecmwf.int/display/ECFLOW/"
|
||||
url = "https://confluence.ecmwf.int/download/attachments/8650755/ecFlow-4.11.1-Source.tar.gz"
|
||||
|
||||
maintainers("climbfuji")
|
||||
maintainers("climbfuji", "AlexanderRichert-NOAA")
|
||||
|
||||
# https://confluence.ecmwf.int/download/attachments/8650755/ecFlow-5.8.3-Source.tar.gz?api=v2
|
||||
version("5.8.3", sha256="1d890008414017da578dbd5a95cb1b4d599f01d5a3bb3e0297fe94a87fbd81a6")
|
||||
@@ -32,6 +34,7 @@ class Ecflow(CMakePackage):
|
||||
"static_boost", default=False, description="Use also static boost libraries when compiling"
|
||||
)
|
||||
variant("ui", default=False, description="Enable ecflow_ui")
|
||||
variant("pic", default=False, description="Enable position-independent code (PIC)")
|
||||
|
||||
extends("python")
|
||||
|
||||
@@ -59,6 +62,7 @@ class Ecflow(CMakePackage):
|
||||
)
|
||||
|
||||
depends_on("openssl@1:", when="@5:")
|
||||
depends_on("pkgconfig", type="build", when="+ssl ^openssl ~shared")
|
||||
depends_on("qt@5:", when="+ui")
|
||||
# Requirement to use the Python3_EXECUTABLE variable
|
||||
depends_on("cmake@3.16:", type="build")
|
||||
@@ -72,15 +76,47 @@ def patch(self):
|
||||
"Pyext/CMakeLists.txt",
|
||||
)
|
||||
|
||||
@when("+ssl ^openssl~shared")
|
||||
def setup_build_environment(self, env):
|
||||
env.set("LIBS", self.spec["zlib"].libs.search_flags)
|
||||
|
||||
def cmake_args(self):
|
||||
boost_lib = self.spec["boost"].prefix.lib
|
||||
return [
|
||||
spec = self.spec
|
||||
boost_lib = spec["boost"].prefix.lib
|
||||
args = [
|
||||
self.define("Boost_PYTHON_LIBRARY_RELEASE", boost_lib),
|
||||
self.define_from_variant("ENABLE_UI", "ui"),
|
||||
self.define_from_variant("ENABLE_GUI", "ui"),
|
||||
self.define_from_variant("ENABLE_SSL", "ssl"),
|
||||
# https://jira.ecmwf.int/browse/SUP-2641#comment-208943
|
||||
self.define_from_variant("ENABLE_STATIC_BOOST_LIBS", "static_boost"),
|
||||
self.define("Python3_EXECUTABLE", self.spec["python"].package.command),
|
||||
self.define("BOOST_ROOT", self.spec["boost"].prefix),
|
||||
self.define("Python3_EXECUTABLE", spec["python"].package.command),
|
||||
self.define("BOOST_ROOT", spec["boost"].prefix),
|
||||
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
|
||||
]
|
||||
|
||||
if spec.satisfies("+ssl ^openssl ~shared"):
|
||||
ssllibs = ";".join(spec["openssl"].libs + spec["zlib"].libs)
|
||||
args.append(self.define("OPENSSL_CRYPTO_LIBRARY", ssllibs))
|
||||
|
||||
return args
|
||||
|
||||
# A recursive link in the ecflow source code causes the binary cache
|
||||
# creation to fail. This file is only in the install tree if the
|
||||
# --source option is set when installing the package, but force_remove
|
||||
# acts like "rm -f" and won't abort if the file doesn't exist.
|
||||
@run_after("install")
|
||||
def remove_recursive_symlink_in_source_code(self):
|
||||
force_remove(join_path(self.prefix, "share/ecflow/src/cereal/cereal"))
|
||||
|
||||
@when("+ssl ^openssl~shared")
|
||||
def patch(self):
|
||||
pkgconf = which("pkg-config")
|
||||
liblist_l = pkgconf("--libs-only-l", "--static", "openssl", output=str).split()
|
||||
liblist = " ".join([ll.replace("-l", "") for ll in liblist_l])
|
||||
for sdir in ["Client", "Server"]:
|
||||
filter_file(
|
||||
"(target_link_libraries.*pthread)",
|
||||
f"\\1 {liblist}",
|
||||
os.path.join(sdir, "CMakeLists.txt"),
|
||||
)
|
||||
|
@@ -85,10 +85,10 @@ class Elfutils(AutotoolsPackage, SourcewarePackage):
|
||||
|
||||
provides("elf@1")
|
||||
|
||||
# libarchive with iconv doesn't configure.
|
||||
# libarchive with iconv doesn't configure (still broken as of libarchive@3.7.1)
|
||||
# see https://github.com/spack/spack/issues/36710
|
||||
# and https://github.com/libarchive/libarchive/issues/1819
|
||||
conflicts("^libarchive@3.6.2 +iconv", when="+debuginfod")
|
||||
conflicts("^libarchive +iconv", when="+debuginfod")
|
||||
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=24964
|
||||
conflicts("%apple-clang")
|
||||
|
@@ -13,6 +13,7 @@ class Embree(CMakePackage):
|
||||
url = "https://github.com/embree/embree/archive/v3.7.0.tar.gz"
|
||||
maintainers("aumuell")
|
||||
|
||||
version("4.3.0", sha256="baf0a57a45837fc055ba828a139467bce0bc0c6a9a5f2dccb05163d012c12308")
|
||||
version("4.2.0", sha256="b0479ce688045d17aa63ce6223c84b1cdb5edbf00d7eda71c06b7e64e21f53a0")
|
||||
version("4.1.0", sha256="117efd87d6dddbf7b164edd94b0bc057da69d6422a25366283cded57ed94738b")
|
||||
version("4.0.1", sha256="1fa3982fa3531f1b6e81f19e6028ae8a62b466597f150b853440fe35ef7c6c06")
|
||||
@@ -37,6 +38,17 @@ class Embree(CMakePackage):
|
||||
|
||||
depends_on("tbb")
|
||||
|
||||
# official aarch64 support on macOS starting with 3.13.0, on Linux since 4.0.0
|
||||
# upstream patch for Linux/aarch64 applies cleanly to 3.13.5, and 3.13.3 works by chance
|
||||
conflicts("@:3.12", when="target=aarch64:")
|
||||
conflicts("@:3.13.2", when="target=aarch64: platform=linux")
|
||||
conflicts("@3.13.4", when="target=aarch64: platform=linux")
|
||||
patch(
|
||||
"https://github.com/embree/embree/commit/82ca6b5ccb7abe0403a658a0e079926478f04cb1.patch?full_index=1",
|
||||
sha256="3af5a65e8875549b4c930d4b0f2840660beba4a7f295d8c89068250a1df376f2",
|
||||
when="@3.13.5",
|
||||
)
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
|
||||
|
@@ -3,6 +3,8 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
@@ -13,7 +15,7 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
homepage = "https://github.com/pnnl/ExaGO"
|
||||
git = "https://github.com/pnnl/ExaGO.git"
|
||||
maintainers("ryandanehy", "CameronRutherford", "pelesh")
|
||||
maintainers("ryandanehy", "cameronrutherford", "pelesh")
|
||||
|
||||
version("1.5.1", commit="7abe482c8da0e247f9de4896f5982c4cacbecd78", submodules=True)
|
||||
version("1.5.0", commit="227f49573a28bdd234be5500b3733be78a958f15", submodules=True)
|
||||
@@ -45,6 +47,7 @@ class Exago(CMakePackage, CudaPackage, ROCmPackage):
|
||||
conflicts(
|
||||
"+python", when="+ipopt+rocm", msg="Python bindings require -fPIC with Ipopt for rocm."
|
||||
)
|
||||
variant("logging", default=False, description="Enable/Disable spdlog based logging")
|
||||
|
||||
# Solver options
|
||||
variant("hiop", default=False, description="Enable/Disable HiOp")
|
||||
@@ -175,17 +178,18 @@ def cmake_args(self):
|
||||
args.extend(
|
||||
[
|
||||
self.define("EXAGO_ENABLE_GPU", "+cuda" in spec or "+rocm" in spec),
|
||||
self.define("PETSC_DIR", spec["petsc"].prefix),
|
||||
self.define("EXAGO_RUN_TESTS", self.run_tests),
|
||||
self.define("LAPACK_LIBRARIES", spec["lapack"].libs + spec["blas"].libs),
|
||||
self.define_from_variant("EXAGO_ENABLE_CUDA", "cuda"),
|
||||
self.define_from_variant("EXAGO_ENABLE_HIP", "rocm"),
|
||||
self.define("PETSC_DIR", spec["petsc"].prefix),
|
||||
self.define("EXAGO_RUN_TESTS", True),
|
||||
self.define_from_variant("EXAGO_ENABLE_LOGGING", "logging"),
|
||||
self.define_from_variant("EXAGO_ENABLE_MPI", "mpi"),
|
||||
self.define_from_variant("EXAGO_ENABLE_RAJA", "raja"),
|
||||
self.define_from_variant("EXAGO_ENABLE_HIOP", "hiop"),
|
||||
self.define_from_variant("EXAGO_ENABLE_IPOPT", "ipopt"),
|
||||
self.define_from_variant("EXAGO_ENABLE_PYTHON", "python"),
|
||||
self.define_from_variant("EXAGO_ENABLE_LOGGING", "logging"),
|
||||
self.define("LAPACK_LIBRARIES", spec["lapack"].libs + spec["blas"].libs),
|
||||
]
|
||||
)
|
||||
|
||||
|
26
var/spack/repos/builtin/packages/falco/package.py
Normal file
26
var/spack/repos/builtin/packages/falco/package.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
|
||||
|
||||
class Falco(AutotoolsPackage):
|
||||
"""A C++ drop-in replacement of FastQC to assess the quality of sequence read data"""
|
||||
|
||||
homepage = "https://github.com/smithlabcode/falco"
|
||||
url = "https://github.com/smithlabcode/falco/releases/download/v1.2.1/falco-1.2.1.tar.gz"
|
||||
|
||||
version("1.2.1", sha256="33de8aafac45c7aea055ed7ab837d0a39d12dcf782816cea8a6c648acb911057")
|
||||
|
||||
variant("htslib", default=False, description="Add support for BAM files")
|
||||
|
||||
depends_on("gmake", type="build")
|
||||
depends_on("zlib-ng")
|
||||
depends_on("htslib", when="+htslib")
|
||||
|
||||
def configure_args(self):
|
||||
if self.spec.satisfies("+htslib"):
|
||||
return ["--enable-htslib"]
|
||||
return []
|
@@ -16,8 +16,11 @@ class FeqParse(CMakePackage):
|
||||
|
||||
maintainers("fluidnumerics-joe")
|
||||
|
||||
version("2.0.3", sha256="a1c42507801adc55a63a9a904807058079d54e002e10f2b29a916b06fc815f80")
|
||||
version("2.0.1", sha256="08dd08bd100a0a2eb672a5b2792ad56a337df575c634aac0d7a300d7e484b21c")
|
||||
version("1.1.0", sha256="d33a4fd6904939bb70780e8f25f37c1291c4f24fd207feb4ffc0f8d89637d1e3")
|
||||
version("1.0.2", sha256="1cd1db7562908ea16fc65dc5268b654405d0b3d9dcfe11f409949c431b48a3e8")
|
||||
|
||||
depends_on("cmake@3.0.2:", type="build")
|
||||
|
||||
parallel = False
|
||||
|
@@ -14,13 +14,14 @@ class Fftx(CMakePackage, CudaPackage, ROCmPackage):
|
||||
operations composed of linear operations combined with DFT transforms."""
|
||||
|
||||
homepage = "https://spiralgen.com"
|
||||
url = "https://github.com/spiral-software/fftx/archive/refs/tags/1.1.2.tar.gz"
|
||||
url = "https://github.com/spiral-software/fftx/archive/refs/tags/1.1.3.tar.gz"
|
||||
git = "https://github.com/spiral-software/fftx.git"
|
||||
|
||||
maintainers("spiralgen")
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("main", branch="main")
|
||||
version("1.1.3", sha256="17ed0baf9c2dcf30c789fdae530e006ae3ff2d2c9006989b1e6348e4ae50cef9")
|
||||
version("1.1.2", sha256="b2c4a7791305481af9e1bd358c1215efa4506c91c943cddca3780a1ccbc27810")
|
||||
version("1.1.1", sha256="5cbca66ef09eca02ee8f336f58eb45cfac69cfb29cd6eb945852ad74085d8a60")
|
||||
version("1.1.0", sha256="a6f95605abc11460bbf51839727a456a31488e27e12a970fc29a1b8c42f4e3b5")
|
||||
|
@@ -141,6 +141,8 @@ class FluxCore(AutotoolsPackage):
|
||||
# `link` dependency on python due to Flux's `pymod` module
|
||||
depends_on("python@3.6:", when="@0.17:", type=("build", "link", "run"))
|
||||
depends_on("python@2.7:", type=("build", "link", "run"))
|
||||
# Use of distutils in configure script dropped in v0.55
|
||||
depends_on("python@:3.11", when="@:0.54", type=("build", "link", "run"))
|
||||
depends_on("py-cffi@1.1:", type=("build", "run"))
|
||||
depends_on("py-six@1.9:", when="@:0.24", type=("build", "run"))
|
||||
depends_on("py-pyyaml@3.10:", type=("build", "run"))
|
||||
|
@@ -18,10 +18,11 @@ class FluxPmix(AutotoolsPackage):
|
||||
maintainers("grondo")
|
||||
|
||||
version("main", branch="main")
|
||||
version("0.4.0", sha256="f7f58891fc9d9a97a0399b3ab186f2cae30a75806ba0b4d4c1307f07b3f6d1bc")
|
||||
version("0.3.0", sha256="88edb2afaeb6058b56ff915105a36972acc0d83204cff7f4a4d2f65a5dee9d34")
|
||||
version("0.2.0", sha256="d09f1fe6ffe54f83be4677e1e727640521d8110090515d94013eba0f58216934")
|
||||
|
||||
depends_on("flux-core@0.49.0:", when="@0.3.0:")
|
||||
depends_on("flux-core@0.49:", when="@0.3:")
|
||||
depends_on("flux-core@0.30.0:")
|
||||
depends_on("pmix@v4.1.0:")
|
||||
depends_on("openmpi")
|
||||
|
@@ -20,6 +20,7 @@ class G2(CMakePackage):
|
||||
maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett")
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("3.4.8", sha256="071a6f799c4c4fdfd5d0478152a0cbb9d668d12d71c78d5bda71845fc5580a7f")
|
||||
version("3.4.7", sha256="d6530611e3a515122f11ed4aeede7641f6f8932ef9ee0d4828786572767304dc")
|
||||
version("3.4.6", sha256="c4b03946365ce0bacf1e10e8412a5debd72d8671d1696aa4fb3f3adb119175fe")
|
||||
version("3.4.5", sha256="c18e991c56964953d778632e2d74da13c4e78da35e8d04cb742a2ca4f52737b6")
|
||||
@@ -36,7 +37,8 @@ class G2(CMakePackage):
|
||||
)
|
||||
variant("w3emc", default=True, description="Enable GRIB1 through w3emc", when="@3.4.6:")
|
||||
|
||||
depends_on("jasper@:2.0.32")
|
||||
depends_on("jasper@:2.0.32", when="@:3.4.7")
|
||||
depends_on("jasper")
|
||||
depends_on("libpng")
|
||||
depends_on("bacio", when="@3.4.6:")
|
||||
with when("+w3emc"):
|
||||
@@ -62,3 +64,7 @@ def setup_run_environment(self, env):
|
||||
lib = find_libraries("libg2_" + suffix, root=self.prefix, shared=False, recursive=True)
|
||||
env.set("G2_LIB" + suffix, lib[0])
|
||||
env.set("G2_INC" + suffix, join_path(self.prefix, "include_" + suffix))
|
||||
|
||||
def check(self):
|
||||
with working_dir(self.builder.build_directory):
|
||||
make("test")
|
||||
|
@@ -783,6 +783,11 @@ def configure_args(self):
|
||||
"--with-as=" + binutils.join("as"),
|
||||
]
|
||||
)
|
||||
elif spec.satisfies("%apple-clang@15:"):
|
||||
# https://github.com/iains/gcc-darwin-arm64/issues/117
|
||||
# https://github.com/iains/gcc-12-branch/issues/22
|
||||
# https://github.com/iains/gcc-13-branch/issues/8
|
||||
options.append("--with-ld=/Library/Developer/CommandLineTools/usr/bin/ld-classic")
|
||||
|
||||
# enable_bootstrap
|
||||
if spec.satisfies("+bootstrap"):
|
||||
|
@@ -4,6 +4,7 @@
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
from spack.package import *
|
||||
from spack.variant import _ConditionalVariantValues
|
||||
|
||||
|
||||
class Geant4(CMakePackage):
|
||||
@@ -43,16 +44,18 @@ class Geant4(CMakePackage):
|
||||
version("10.4.0", sha256="e919b9b0a88476e00c0b18ab65d40e6a714b55ee4778f66bac32a5396c22aa74")
|
||||
version("10.3.3", sha256="bcd36a453da44de9368d1d61b0144031a58e4b43a6d2d875e19085f2700a89d8")
|
||||
|
||||
_cxxstd_values = ("11", "14", "17")
|
||||
_cxxstd_values = (
|
||||
conditional("11", "14", when="@:10"),
|
||||
conditional("17", when="@10.4.1:"),
|
||||
conditional("20", when="@10.7.0:"),
|
||||
)
|
||||
variant(
|
||||
"cxxstd",
|
||||
default=_cxxstd_values[0],
|
||||
default="11",
|
||||
values=_cxxstd_values,
|
||||
multi=False,
|
||||
description="Use the specified C++ standard when building.",
|
||||
)
|
||||
conflicts("cxxstd=11", when="@11:", msg="geant4@11: only supports cxxstd=17")
|
||||
conflicts("cxxstd=14", when="@11:", msg="geant4@11: only supports cxxstd=17")
|
||||
|
||||
variant("threads", default=True, description="Build with multithreading")
|
||||
variant("vecgeom", default=False, description="Enable vecgeom support")
|
||||
@@ -97,30 +100,39 @@ class Geant4(CMakePackage):
|
||||
depends_on("python@3:", when="+python")
|
||||
extends("python", when="+python")
|
||||
|
||||
for std in _cxxstd_values:
|
||||
# CLHEP version requirements to be reviewed
|
||||
depends_on("clhep@2.4.6.0: cxxstd=" + std, when="@11.1: cxxstd=" + std)
|
||||
# CLHEP version requirements to be reviewed
|
||||
depends_on("clhep@2.4.6.0:", when="@11.1:")
|
||||
depends_on("clhep@2.4.5.1:", when="@11.0.0:")
|
||||
depends_on("clhep@2.4.4.0:", when="@10.7.0:")
|
||||
depends_on("clhep@2.3.3.0:", when="@10.3.3:10.6")
|
||||
|
||||
depends_on("clhep@2.4.5.1: cxxstd=" + std, when="@11.0.0: cxxstd=" + std)
|
||||
# Vecgeom specific versions for each Geant4 version
|
||||
with when("+vecgeom"):
|
||||
depends_on("vecgeom@1.2.0:", when="@11.1:")
|
||||
depends_on("vecgeom@1.1.18:1.1", when="@11.0.0:11.0")
|
||||
depends_on("vecgeom@1.1.8:1.1", when="@10.7.0:10.7")
|
||||
depends_on("vecgeom@1.1.5", when="@10.6.0:10.6")
|
||||
depends_on("vecgeom@1.1.0", when="@10.5.0:10.5")
|
||||
depends_on("vecgeom@0.5.2", when="@10.4.0:10.4")
|
||||
depends_on("vecgeom@0.3rc", when="@10.3.0:10.3")
|
||||
|
||||
depends_on("clhep@2.4.4.0: cxxstd=" + std, when="@10.7.0: cxxstd=" + std)
|
||||
def std_when(values):
|
||||
for v in values:
|
||||
if isinstance(v, _ConditionalVariantValues):
|
||||
for c in v:
|
||||
yield (c.value, c.when)
|
||||
else:
|
||||
yield (v, "")
|
||||
|
||||
depends_on("clhep@2.3.3.0: cxxstd=" + std, when="@10.3.3:10.6 cxxstd=" + std)
|
||||
for _std, _when in std_when(_cxxstd_values):
|
||||
depends_on(f"clhep cxxstd={_std}", when=f"{_when} cxxstd={_std}")
|
||||
depends_on(f"vecgeom cxxstd={_std}", when=f"{_when} +vecgeom cxxstd={_std}")
|
||||
|
||||
# Spack only supports Xerces-c 3 and above, so no version req
|
||||
depends_on("xerces-c netaccessor=curl cxxstd=" + std, when="cxxstd=" + std)
|
||||
|
||||
# Vecgeom specific versions for each Geant4 version
|
||||
depends_on("vecgeom@1.2.0: cxxstd=" + std, when="@11.1: +vecgeom cxxstd=" + std)
|
||||
depends_on("vecgeom@1.1.18:1.1 cxxstd=" + std, when="@11.0.0:11.0 +vecgeom cxxstd=" + std)
|
||||
depends_on("vecgeom@1.1.8:1.1 cxxstd=" + std, when="@10.7.0:10.7 +vecgeom cxxstd=" + std)
|
||||
depends_on("vecgeom@1.1.5 cxxstd=" + std, when="@10.6.0:10.6 +vecgeom cxxstd=" + std)
|
||||
depends_on("vecgeom@1.1.0 cxxstd=" + std, when="@10.5.0:10.5 +vecgeom cxxstd=" + std)
|
||||
depends_on("vecgeom@0.5.2 cxxstd=" + std, when="@10.4.0:10.4 +vecgeom cxxstd=" + std)
|
||||
depends_on("vecgeom@0.3rc cxxstd=" + std, when="@10.3.0:10.3 +vecgeom cxxstd=" + std)
|
||||
depends_on(f"xerces-c netaccessor=curl cxxstd={_std}", when=f"{_when} cxxstd={_std}")
|
||||
|
||||
# Boost.python, conflict handled earlier
|
||||
depends_on("boost@1.70: +python cxxstd=" + std, when="+python cxxstd=" + std)
|
||||
depends_on(f"boost@1.70: +python cxxstd={_std}", when=f"{_when} +python cxxstd={_std}")
|
||||
|
||||
# Visualization driver dependencies
|
||||
depends_on("gl", when="+opengl")
|
||||
|
@@ -33,6 +33,8 @@ class Gettext(AutotoolsPackage, GNUMirrorPackage):
|
||||
variant("tar", default=True, description="Enable tar support")
|
||||
variant("bzip2", default=True, description="Enable bzip2 support")
|
||||
variant("xz", default=True, description="Enable xz support")
|
||||
variant("shared", default=True, description="Build shared libraries")
|
||||
variant("pic", default=True, description="Enable position-independent code (PIC)")
|
||||
|
||||
# Optional variants
|
||||
variant("libunistring", default=False, description="Use libunistring")
|
||||
@@ -54,6 +56,8 @@ class Gettext(AutotoolsPackage, GNUMirrorPackage):
|
||||
depends_on("libunistring", when="+libunistring")
|
||||
# depends_on('cvs')
|
||||
|
||||
conflicts("+shared~pic")
|
||||
|
||||
patch("test-verify-parallel-make-check.patch", when="@:0.19.8.1")
|
||||
patch("nvhpc-builtin.patch", when="@:0.21.0 %nvhpc")
|
||||
patch("nvhpc-export-symbols.patch", when="%nvhpc")
|
||||
@@ -87,6 +91,8 @@ def configure_args(self):
|
||||
"--without-cvs",
|
||||
]
|
||||
|
||||
config_args.extend(self.enable_or_disable("shared"))
|
||||
|
||||
if self.spec["iconv"].name == "libc":
|
||||
config_args.append("--without-libiconv-prefix")
|
||||
elif not is_system_path(self.spec["iconv"].prefix):
|
||||
@@ -115,12 +121,16 @@ def configure_args(self):
|
||||
else:
|
||||
config_args.append("--with-included-libunistring")
|
||||
|
||||
config_args.extend(self.with_or_without("pic"))
|
||||
|
||||
return config_args
|
||||
|
||||
@property
|
||||
def libs(self):
|
||||
return find_libraries(
|
||||
libs = find_libraries(
|
||||
["libasprintf", "libgettextlib", "libgettextpo", "libgettextsrc", "libintl"],
|
||||
root=self.prefix,
|
||||
recursive=True,
|
||||
shared=self.spec.variants["shared"].value,
|
||||
)
|
||||
return libs
|
||||
|
@@ -253,8 +253,6 @@ def setup_build_environment(self, env):
|
||||
extlib_bits.append(spec["gettext"].libs.search_flags)
|
||||
extlib_bits.append("-lintl")
|
||||
env.append_flags("EXTLIBS", " ".join(extlib_bits))
|
||||
if not is_system_path(spec["gettext"].prefix):
|
||||
env.append_flags("CFLAGS", spec["gettext"].headers.include_flags)
|
||||
|
||||
if not self.spec["curl"].satisfies("libs=shared"):
|
||||
curlconfig = which(os.path.join(self.spec["curl"].prefix.bin, "curl-config"))
|
||||
|
@@ -139,7 +139,8 @@ class Glib(MesonPackage, AutotoolsPackage):
|
||||
depends_on("zlib-api")
|
||||
depends_on("gettext")
|
||||
depends_on("perl", type=("build", "run"))
|
||||
depends_on("python", type=("build", "run"), when="@2.53.4:")
|
||||
# Uses distutils in gio/gdbus-2.0/codegen/utils.py
|
||||
depends_on("python@:3.11", type=("build", "run"), when="@2.53.4:")
|
||||
depends_on("pcre2", when="@2.73.2:")
|
||||
depends_on("pcre2@10.34:", when="@2.74:")
|
||||
depends_on("pcre+utf", when="@2.48:2.73.1")
|
||||
|
@@ -19,7 +19,7 @@ class Hiop(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
homepage = "https://github.com/LLNL/hiop"
|
||||
git = "https://github.com/LLNL/hiop.git"
|
||||
maintainers("ryandanehy", "CameronRutherford", "pelesh")
|
||||
maintainers("ryandanehy", "cameronrutherford", "pelesh")
|
||||
|
||||
# Most recent tagged snapshot is the preferred version when profiling.
|
||||
version("1.0.0", commit="10b7d3ee0a15cb4949ccee8c905d447b9528794f", submodules=True)
|
||||
|
@@ -27,6 +27,8 @@ def url_for_version(self, version):
|
||||
return url.format(version)
|
||||
|
||||
version("master", branch="main")
|
||||
version("5.6.1", sha256="cc9a99c7e4de3d9360c0a471b27d626e84a39c9e60e0aff1e8e1500d82391819")
|
||||
version("5.6.0", sha256="864f87323e793e60b16905284fba381a7182b960dd4a37fb67420c174442c03c")
|
||||
version("5.5.1", sha256="1375fc7723cfaa0ae22a78682186d4804188b0a54990bfd9c0b8eb421b85e37e")
|
||||
version("5.5.0", sha256="efbae9a1ef2ab3de5ca44091e9bb78522e76759c43524c1349114f9596cc61d1")
|
||||
version("5.4.3", sha256="71d9668619ab57ec8a4564d11860438c5aad5bd161a3e58fbc49555fbd59182d")
|
||||
@@ -140,6 +142,8 @@ def url_for_version(self, version):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
"master",
|
||||
]:
|
||||
depends_on("hsakmt-roct@" + ver, when="@" + ver)
|
||||
@@ -162,6 +166,8 @@ def url_for_version(self, version):
|
||||
|
||||
# Add opencl sources thru the below
|
||||
for d_version, d_shasum in [
|
||||
("5.6.1", "ec26049f7d93c95050c27ba65472736665ec7a40f25920a868616b2970f6b845"),
|
||||
("5.6.0", "52ab260d00d279c2a86c353901ffd88ee61b934ad89e9eb480f210656705f04e"),
|
||||
("5.5.1", "a8a62a7c6fc5398406d2203b8cb75621a24944688e545d917033d87de2724498"),
|
||||
("5.5.0", "0df9fa0b8aa0c8e6711d34eec0fdf1ed356adcd9625bc8f1ce9b3e72090f3e4f"),
|
||||
("5.4.3", "b0f8339c844a2e62773bd85cd1e7c5ecddfe71d7c8e8d604e1a1d60900c30873"),
|
||||
|
@@ -0,0 +1,75 @@
|
||||
From cd4283eab943a3018237035afea61f1b5e0042cd Mon Sep 17 00:00:00 2001
|
||||
From: Renjith Ravindran <Renjith.RavindranKannath@amd.com>
|
||||
Date: Wed, 27 Sep 2023 06:38:18 +0000
|
||||
Subject: [PATCH] Remove-compiler-rt-linkage-for-host
|
||||
|
||||
---
|
||||
clr/hipamd/CMakeLists.txt | 6 ++++--
|
||||
clr/hipamd/hip-config.cmake.in | 1 -
|
||||
hipcc/bin/hipcc.pl | 11 ++++++++---
|
||||
3 files changed, 12 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/clr/hipamd/CMakeLists.txt b/clr/hipamd/CMakeLists.txt
|
||||
index c14a9ad..ca49f7f 100755
|
||||
--- a/clr/hipamd/CMakeLists.txt
|
||||
+++ b/clr/hipamd/CMakeLists.txt
|
||||
@@ -400,8 +400,10 @@ if (NOT ${HIPCC_BIN_DIR} STREQUAL "")
|
||||
install(PROGRAMS ${HIPCC_BIN_DIR}/hipcc.pl DESTINATION bin)
|
||||
install(PROGRAMS ${HIPCC_BIN_DIR}/hipconfig.pl DESTINATION bin)
|
||||
install(PROGRAMS ${HIPCC_BIN_DIR}/hipvars.pm DESTINATION bin)
|
||||
- install(PROGRAMS ${HIPCC_BIN_DIR}/hipcc.bat DESTINATION bin)
|
||||
- install(PROGRAMS ${HIPCC_BIN_DIR}/hipconfig.bat DESTINATION bin)
|
||||
+ if(WIN32)
|
||||
+ install(PROGRAMS ${HIPCC_BIN_DIR}/hipcc.bat DESTINATION bin)
|
||||
+ install(PROGRAMS ${HIPCC_BIN_DIR}/hipconfig.bat DESTINATION bin)
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
#############################
|
||||
diff --git a/clr/hipamd/hip-config.cmake.in b/clr/hipamd/hip-config.cmake.in
|
||||
index 537a599..7d10273 100755
|
||||
--- a/clr/hipamd/hip-config.cmake.in
|
||||
+++ b/clr/hipamd/hip-config.cmake.in
|
||||
@@ -245,7 +245,6 @@ if(HIP_COMPILER STREQUAL "clang")
|
||||
# Add support for __fp16 and _Float16, explicitly link with compiler-rt
|
||||
if( "${CLANGRT_BUILTINS_FETCH_EXIT_CODE}" STREQUAL "0" )
|
||||
# CLANG_RT Builtins found Successfully Set interface link libraries property
|
||||
- set_property(TARGET hip::host APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}")
|
||||
set_property(TARGET hip::device APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}")
|
||||
else()
|
||||
message(STATUS "clangrt builtins lib not found: ${CLANGRT_BUILTINS_FETCH_EXIT_CODE}")
|
||||
diff --git a/hipcc/bin/hipcc.pl b/hipcc/bin/hipcc.pl
|
||||
index 56dcda2..c7ae60b 100755
|
||||
--- a/hipcc/bin/hipcc.pl
|
||||
+++ b/hipcc/bin/hipcc.pl
|
||||
@@ -155,11 +155,15 @@ if ($HIP_PLATFORM eq "amd") {
|
||||
if($isWindows) {
|
||||
$execExtension = ".exe";
|
||||
}
|
||||
- $HIPCC="$HIP_CLANG_PATH/clang++" . $execExtension;
|
||||
+ # llvm_path is set inside the hip recipe
|
||||
+ $LLVM_PATH= $ENV{'LLVM_PATH'};
|
||||
+ $HIPCC="${LLVM_PATH}/bin/clang++" . $execExtension;
|
||||
+
|
||||
|
||||
# If $HIPCC clang++ is not compiled, use clang instead
|
||||
if ( ! -e $HIPCC ) {
|
||||
- $HIPCC="$HIP_CLANG_PATH/clang" . $execExtension;
|
||||
+ $LLVM_PATH= $ENV{'LLVM_PATH'};
|
||||
+ $HIPCC="${LLVM_PATH}/bin/clang" . $execExtension;
|
||||
$HIPLDFLAGS = "--driver-mode=g++";
|
||||
}
|
||||
# to avoid using dk linker or MSVC linker
|
||||
@@ -483,7 +487,8 @@ if($HIP_PLATFORM eq "amd"){
|
||||
$targetsStr = $ENV{HCC_AMDGPU_TARGET};
|
||||
} elsif (not $isWindows) {
|
||||
# Else try using rocm_agent_enumerator
|
||||
- $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator";
|
||||
+ $ROCMINFO_PATH = $ENV{'ROCMINFO_PATH'} // $ROCMINFO_PATH;
|
||||
+ $ROCM_AGENT_ENUM = "${ROCMINFO_PATH}/bin/rocm_agent_enumerator";
|
||||
$targetsStr = `${ROCM_AGENT_ENUM} -t GPU`;
|
||||
$targetsStr =~ s/\n/,/g;
|
||||
}
|
||||
--
|
||||
2.31.1
|
||||
|
@@ -0,0 +1,107 @@
|
||||
From 1d7f7eb9a52af2b83d3cb06bb4fe0f31eb47ce7f Mon Sep 17 00:00:00 2001
|
||||
From: Renjith Ravindran <Renjith.RavindranKannath@amd.com>
|
||||
Date: Wed, 27 Sep 2023 07:07:01 +0000
|
||||
Subject: [PATCH] Reverting operator mixup fix for slate
|
||||
|
||||
---
|
||||
.../include/hip/amd_detail/amd_hip_complex.h | 17 ++++------
|
||||
.../hip/amd_detail/amd_hip_vector_types.h | 31 +++++++++++--------
|
||||
2 files changed, 24 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h b/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h
|
||||
index 9d9dfd5..eba6eb5 100644
|
||||
--- a/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h
|
||||
+++ b/clr/hipamd/include/hip/amd_detail/amd_hip_complex.h
|
||||
@@ -106,20 +106,15 @@ THE SOFTWARE.
|
||||
return lhs; \
|
||||
}
|
||||
|
||||
-#define COMPLEX_MUL_PREOP_OVERLOAD(type) \
|
||||
- __HOST_DEVICE__ static inline type& operator*=(type& lhs, const type& rhs) { \
|
||||
- type temp{lhs}; \
|
||||
- lhs.x = rhs.x * temp.x - rhs.y * temp.y; \
|
||||
- lhs.y = rhs.y * temp.x + rhs.x * temp.y; \
|
||||
- return lhs; \
|
||||
+#define COMPLEX_MUL_PREOP_OVERLOAD(type) \
|
||||
+ __HOST_DEVICE__ static inline type& operator*=(type& lhs, const type& rhs) { \
|
||||
+ lhs = lhs * rhs; \
|
||||
+ return lhs; \
|
||||
}
|
||||
|
||||
#define COMPLEX_DIV_PREOP_OVERLOAD(type) \
|
||||
- __HOST_DEVICE__ static inline type& operator/=(type& lhs, const type& rhs) { \
|
||||
- type temp; \
|
||||
- temp.x = (lhs.x*rhs.x + lhs.y * rhs.y) / (rhs.x*rhs.x + rhs.y*rhs.y); \
|
||||
- temp.y = (lhs.y * rhs.x - lhs.x * rhs.y) / (rhs.x*rhs.x + rhs.y*rhs.y); \
|
||||
- lhs = temp; \
|
||||
+ __HOST_DEVICE__ static inline type& operator/=(type& lhs, const type& rhs) { \
|
||||
+ lhs = lhs / rhs; \
|
||||
return lhs; \
|
||||
}
|
||||
|
||||
diff --git a/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h b/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h
|
||||
index 8215fb0..dfd3b39 100644
|
||||
--- a/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h
|
||||
+++ b/clr/hipamd/include/hip/amd_detail/amd_hip_vector_types.h
|
||||
@@ -544,13 +544,6 @@ template <typename __T> struct is_scalar : public integral_constant<bool, __is_s
|
||||
data *= x.data;
|
||||
return *this;
|
||||
}
|
||||
-
|
||||
- friend __HOST_DEVICE__ inline constexpr HIP_vector_type operator*(
|
||||
- HIP_vector_type x, const HIP_vector_type& y) noexcept
|
||||
- {
|
||||
- return HIP_vector_type{ x } *= y;
|
||||
- }
|
||||
-
|
||||
template<
|
||||
typename U,
|
||||
typename std::enable_if<
|
||||
@@ -561,12 +554,6 @@ template <typename __T> struct is_scalar : public integral_constant<bool, __is_s
|
||||
return *this *= HIP_vector_type{x};
|
||||
}
|
||||
|
||||
- friend __HOST_DEVICE__ inline constexpr HIP_vector_type operator/(
|
||||
- HIP_vector_type x, const HIP_vector_type& y) noexcept
|
||||
- {
|
||||
- return HIP_vector_type{ x } /= y;
|
||||
- }
|
||||
-
|
||||
__HOST_DEVICE__
|
||||
HIP_vector_type& operator/=(const HIP_vector_type& x) noexcept
|
||||
{
|
||||
@@ -722,6 +709,15 @@ template <typename __T> struct is_scalar : public integral_constant<bool, __is_s
|
||||
return HIP_vector_type<T, n>{x} -= y;
|
||||
}
|
||||
|
||||
+ template<typename T, unsigned int n>
|
||||
+ __HOST_DEVICE__
|
||||
+ inline
|
||||
+ constexpr
|
||||
+ HIP_vector_type<T, n> operator*(
|
||||
+ const HIP_vector_type<T, n>& x, const HIP_vector_type<T, n>& y) noexcept
|
||||
+ {
|
||||
+ return HIP_vector_type<T, n>{x} *= y;
|
||||
+ }
|
||||
template<typename T, unsigned int n, typename U>
|
||||
__HOST_DEVICE__
|
||||
inline
|
||||
@@ -741,6 +737,15 @@ template <typename __T> struct is_scalar : public integral_constant<bool, __is_s
|
||||
return HIP_vector_type<T, n>{x} *= y;
|
||||
}
|
||||
|
||||
+ template<typename T, unsigned int n>
|
||||
+ __HOST_DEVICE__
|
||||
+ inline
|
||||
+ constexpr
|
||||
+ HIP_vector_type<T, n> operator/(
|
||||
+ const HIP_vector_type<T, n>& x, const HIP_vector_type<T, n>& y) noexcept
|
||||
+ {
|
||||
+ return HIP_vector_type<T, n>{x} /= y;
|
||||
+ }
|
||||
template<typename T, unsigned int n, typename U>
|
||||
__HOST_DEVICE__
|
||||
inline
|
||||
--
|
||||
2.31.1
|
||||
|
@@ -25,6 +25,8 @@ class Hip(CMakePackage):
|
||||
libraries = ["libamdhip64"]
|
||||
|
||||
version("master", branch="master")
|
||||
version("5.6.1", sha256="4b3c4dfcf8595da0e1b8c3e8067b1ccebeaac337762ff098db14375fa8dd4487")
|
||||
version("5.6.0", sha256="a8237768c1ae70029d972376f8d279f4de18a1e6106fff6215d1e16847bc375e")
|
||||
version("5.5.1", sha256="1f5f6bb72d8d64335ccc8242ef2e2ea8efeb380cce2997f475b1ee77528d9fb4")
|
||||
version("5.5.0", sha256="5b0d0253e62f85cc21d043513f7c11c64e4a4ec416159668f0b160d732d09a3c")
|
||||
version("5.4.3", sha256="23e51d3af517cd63019f8d199e46b84d5a18251d148e727f3985e8d99ccb0e58")
|
||||
@@ -162,6 +164,8 @@ class Hip(CMakePackage):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
]:
|
||||
depends_on("hsakmt-roct@" + ver, when="@" + ver)
|
||||
depends_on("hsa-rocr-dev@" + ver, when="@" + ver)
|
||||
@@ -170,10 +174,10 @@ class Hip(CMakePackage):
|
||||
depends_on("rocminfo@" + ver, when="@" + ver)
|
||||
depends_on("roctracer-dev-api@" + ver, when="@" + ver)
|
||||
|
||||
for ver in ["5.4.0", "5.4.3", "5.5.0", "5.5.1"]:
|
||||
for ver in ["5.4.0", "5.4.3", "5.5.0", "5.5.1", "5.6.0", "5.6.1"]:
|
||||
depends_on("hipify-clang", when="@" + ver)
|
||||
|
||||
for ver in ["5.5.0", "5.5.1"]:
|
||||
for ver in ["5.5.0", "5.5.1", "5.6.0", "5.6.1"]:
|
||||
depends_on("rocm-core@" + ver, when="@" + ver)
|
||||
# hipcc likes to add `-lnuma` by default :(
|
||||
# ref https://github.com/ROCm-Developer-Tools/HIP/pull/2202
|
||||
@@ -269,6 +273,55 @@ class Hip(CMakePackage):
|
||||
placement="rocclr",
|
||||
when="@{0}".format(d_version),
|
||||
)
|
||||
# Add hip-clr sources thru the below
|
||||
for d_version, d_shasum in [
|
||||
("5.6.1", "0b88af1e99643899d11b1c8cf8a3c46601051b328a5e0ffbd44ee88b7eb0db33"),
|
||||
("5.6.0", "8dcd99110737a294f67a805639cf372890c8ca16c7603caaa793e71e84478fe4"),
|
||||
]:
|
||||
resource(
|
||||
name="clr",
|
||||
url="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-{0}.tar.gz".format(
|
||||
d_version
|
||||
),
|
||||
sha256=d_shasum,
|
||||
expand=True,
|
||||
destination="",
|
||||
placement="clr",
|
||||
when="@{0}".format(d_version),
|
||||
)
|
||||
|
||||
# Add hipcc sources thru the below
|
||||
for d_version, d_shasum in [
|
||||
("5.6.1", "5800fac92b841ef6f52acda78d9bf86f83970bec0fb848a6265d239bdb7eb51a"),
|
||||
("5.6.0", "fdb7fdc9e4648376120330f034ee8353038d34c8a015f9eb0c208c56eeddd097"),
|
||||
]:
|
||||
resource(
|
||||
name="hipcc",
|
||||
url="https://github.com/ROCm-Developer-Tools/HIPCC/archive/refs/tags/rocm-{0}.tar.gz".format(
|
||||
d_version
|
||||
),
|
||||
sha256=d_shasum,
|
||||
expand=True,
|
||||
destination="",
|
||||
placement="hipcc",
|
||||
when="@{0}".format(d_version),
|
||||
)
|
||||
# Add hiptests sources thru the below
|
||||
for d_version, d_shasum in [
|
||||
("5.6.1", "5b3002ddfafda162329e4d9e6ac1200eeb48ff08e666b342aa8aeca30750f48b"),
|
||||
("5.6.0", "8cf4509bf9c0747dab8ed8fec1365a9156792034b517207a0b2d63270429fd2e"),
|
||||
]:
|
||||
resource(
|
||||
name="hip-tests",
|
||||
url="https://github.com/ROCm-Developer-Tools/hip-tests/archive/refs/tags/rocm-{0}.tar.gz".format(
|
||||
d_version
|
||||
),
|
||||
sha256=d_shasum,
|
||||
expand=True,
|
||||
destination="",
|
||||
placement="hip-tests",
|
||||
when="@{0}".format(d_version),
|
||||
)
|
||||
# Note: the ROCm ecosystem expects `lib/` and `bin/` folders with symlinks
|
||||
# in the parent directory of the package, which is incompatible with spack.
|
||||
# In hipcc the ROCM_PATH variable is used to point to the parent directory
|
||||
@@ -331,10 +384,11 @@ class Hip(CMakePackage):
|
||||
patch("0005-Disable-tests-4.1.0.patch", when="@4.1.0:4.3.2")
|
||||
|
||||
patch("Add_missing_open_cl_header_file_for_4.3.0.patch", when="@4.3.0:4.3.2")
|
||||
patch("0014-hip-test-file-reorg-5.4.0.patch", when="@5.4.0:")
|
||||
patch("0016-hip-sample-fix-hipMalloc-call.patch", when="@5.4.3:")
|
||||
patch("0014-hip-test-file-reorg-5.4.0.patch", when="@5.4.0:5.5")
|
||||
patch("0016-hip-sample-fix-hipMalloc-call.patch", when="@5.4.3:5.5")
|
||||
patch("0014-remove-compiler-rt-linkage-for-host.5.5.0.patch", when="@5.5")
|
||||
|
||||
patch("0014-remove-compiler-rt-linkage-for-host.5.6.0.patch", when="@5.6:")
|
||||
patch("0015-reverting-operator-mixup-fix-for-slate.patch", when="@5.6:")
|
||||
# See https://github.com/ROCm-Developer-Tools/HIP/pull/3206
|
||||
patch(
|
||||
"https://github.com/ROCm-Developer-Tools/HIP/commit/50ee82f6bc4aad10908ce09198c9f7ebfb2a3561.patch?full_index=1",
|
||||
@@ -346,8 +400,10 @@ class Hip(CMakePackage):
|
||||
def root_cmakelists_dir(self):
|
||||
if self.spec.satisfies("@:4.3.2"):
|
||||
return self.stage.source_path
|
||||
else:
|
||||
elif self.spec.satisfies("@4.5:5.5"):
|
||||
return "hipamd"
|
||||
else:
|
||||
return "clr"
|
||||
|
||||
def get_paths(self):
|
||||
if self.spec.external:
|
||||
@@ -393,6 +449,7 @@ def get_paths(self):
|
||||
"llvm-amdgpu": rocm_prefix.llvm,
|
||||
"hsa-rocr-dev": rocm_prefix.hsa,
|
||||
"rocminfo": rocm_prefix,
|
||||
"comgr": rocm_prefix,
|
||||
"rocm-device-libs": rocm_prefix,
|
||||
}
|
||||
|
||||
@@ -405,6 +462,7 @@ def get_paths(self):
|
||||
"llvm-amdgpu": self.spec["llvm-amdgpu"].prefix,
|
||||
"hsa-rocr-dev": self.spec["hsa-rocr-dev"].prefix,
|
||||
"rocminfo": self.spec["rocminfo"].prefix,
|
||||
"comgr": self.spec["comgr"].prefix,
|
||||
"rocm-device-libs": self.spec["llvm-amdgpu"].prefix,
|
||||
}
|
||||
|
||||
@@ -476,6 +534,7 @@ def set_variables(self, env):
|
||||
# hiprtcCreateProgram:
|
||||
# https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/blob/rocm-4.0.0/lib/comgr/src/comgr-env.cpp
|
||||
env.set("LLVM_PATH", paths["llvm-amdgpu"])
|
||||
env.set("COMGR_PATH", paths["comgr"])
|
||||
|
||||
# Finally we have to set --rocm-path=<prefix> ourselves, which is not
|
||||
# the same as --hip-device-lib-path (set by hipcc). It's used to set
|
||||
@@ -525,13 +584,20 @@ def patch(self):
|
||||
"hip-config.cmake.in",
|
||||
string=True,
|
||||
)
|
||||
if self.spec.satisfies("@5.2: +rocm"):
|
||||
if self.spec.satisfies("@5.2:5.4 +rocm"):
|
||||
filter_file(
|
||||
'"${ROCM_PATH}/llvm"',
|
||||
self.spec["llvm-amdgpu"].prefix,
|
||||
"hipamd/hip-config.cmake.in",
|
||||
string=True,
|
||||
)
|
||||
if self.spec.satisfies("@5.6: +rocm"):
|
||||
filter_file(
|
||||
'"${ROCM_PATH}/llvm"',
|
||||
self.spec["llvm-amdgpu"].prefix,
|
||||
"clr/hipamd/hip-config.cmake.in",
|
||||
string=True,
|
||||
)
|
||||
|
||||
perl = self.spec["perl"].command
|
||||
kwargs = {"ignore_absent": False, "backup": False, "string": False}
|
||||
@@ -552,13 +618,13 @@ def patch(self):
|
||||
"roc-obj-ls",
|
||||
"hipvars.pm",
|
||||
]
|
||||
elif self.spec.satisfies("@4.5.0:"):
|
||||
elif self.spec.satisfies("@4.5.0:5.5"):
|
||||
files = []
|
||||
filter_file(match, substitute, *files, **kwargs)
|
||||
# This guy is used during the cmake phase, so we have to fix the
|
||||
# shebang already here in case it is too long.
|
||||
filter_shebang("hipconfig")
|
||||
if self.spec.satisfies("@4.5.0:"):
|
||||
filter_file(match, substitute, *files, **kwargs)
|
||||
# This guy is used during the cmake phase, so we have to fix the
|
||||
# shebang already here in case it is too long.
|
||||
filter_shebang("hipconfig")
|
||||
if self.spec.satisfies("@4.5.0:5.5"):
|
||||
perl = self.spec["perl"].command
|
||||
kwargs = {"ignore_absent": False, "backup": False, "string": False}
|
||||
with working_dir("hipamd/bin"):
|
||||
@@ -566,6 +632,18 @@ def patch(self):
|
||||
substitute = "#!{perl}".format(perl=perl)
|
||||
files = ["roc-obj-extract", "roc-obj-ls"]
|
||||
filter_file(match, substitute, *files, **kwargs)
|
||||
if self.spec.satisfies("@5.6.0:"):
|
||||
perl = self.spec["perl"].command
|
||||
kwargs = {"ignore_absent": False, "backup": False, "string": False}
|
||||
match = "^#!/usr/bin/perl"
|
||||
substitute = "#!{perl}".format(perl=perl)
|
||||
with working_dir("clr/hipamd/bin"):
|
||||
files = ["roc-obj-extract", "roc-obj-ls"]
|
||||
filter_file(match, substitute, *files, **kwargs)
|
||||
with working_dir("hipcc/bin"):
|
||||
files = []
|
||||
filter_file(match, substitute, *files, **kwargs)
|
||||
filter_shebang("hipconfig")
|
||||
if "@3.7.0: +rocm" in self.spec:
|
||||
numactl = self.spec["numactl"].prefix.lib
|
||||
kwargs = {"ignore_absent": False, "backup": False, "string": False}
|
||||
@@ -573,7 +651,16 @@ def patch(self):
|
||||
with working_dir("bin"):
|
||||
match = " -lnuma"
|
||||
substitute = " -L{numactl} -lnuma".format(numactl=numactl)
|
||||
filter_file(match, substitute, "hipcc", **kwargs)
|
||||
if self.spec.satisfies("@4.5.0:5.5"):
|
||||
filter_file(match, substitute, "hipcc", **kwargs)
|
||||
if "@5.6.0: +rocm" in self.spec:
|
||||
numactl = self.spec["numactl"].prefix.lib
|
||||
kwargs = {"ignore_absent": False, "backup": False, "string": False}
|
||||
|
||||
with working_dir("hipcc/src"):
|
||||
match = " -lnuma"
|
||||
substitute = " -L{numactl} -lnuma".format(numactl=numactl)
|
||||
filter_file(match, substitute, "hipBin_amd.h", **kwargs)
|
||||
|
||||
def flag_handler(self, name, flags):
|
||||
if name == "cxxflags" and self.spec.satisfies("@3.7.0:4.3.2"):
|
||||
@@ -609,21 +696,30 @@ def cmake_args(self):
|
||||
if "@4.5.0:" in self.spec:
|
||||
args.append(self.define("HIP_COMMON_DIR", self.stage.source_path))
|
||||
args.append(self.define("HIP_CATCH_TEST", "OFF"))
|
||||
args.append(self.define("ROCCLR_PATH", self.stage.source_path + "/rocclr"))
|
||||
args.append(self.define("AMD_OPENCL_PATH", self.stage.source_path + "/opencl"))
|
||||
if "@4.5.0:5.5" in self.spec:
|
||||
args.append(self.define("ROCCLR_PATH", self.stage.source_path + "rocclr"))
|
||||
args.append(self.define("AMD_OPENCL_PATH", self.stage.source_path + "opencl"))
|
||||
if "@5.3.0:" in self.spec:
|
||||
args.append("-DCMAKE_INSTALL_LIBDIR=lib")
|
||||
|
||||
if "@5.6.0:" in self.spec:
|
||||
args.append(self.define("ROCCLR_PATH", self.stage.source_path + "/clr/rocclr"))
|
||||
args.append(self.define("AMD_OPENCL_PATH", self.stage.source_path + "/clr/opencl"))
|
||||
args.append(self.define("HIPCC_BIN_DIR", self.stage.source_path + "/hipcc/bin")),
|
||||
args.append(self.define("CLR_BUILD_HIP", True)),
|
||||
args.append(self.define("CLR_BUILD_OCL", False)),
|
||||
return args
|
||||
|
||||
test_src_dir = "samples"
|
||||
|
||||
@run_after("install")
|
||||
def cache_test_sources(self):
|
||||
"""Copy the tests source files after the package is installed to an
|
||||
install test subdirectory for use during `spack test run`."""
|
||||
if self.spec.satisfies("@:5.1.0"):
|
||||
return
|
||||
else:
|
||||
if "@:5.5" in self.spec:
|
||||
self.test_src_dir = "samples"
|
||||
else:
|
||||
self.test_src_dir = "hip-tests/samples"
|
||||
self.cache_extra_test_sources([self.test_src_dir])
|
||||
|
||||
def test_samples(self):
|
||||
|
@@ -22,6 +22,8 @@ class Hipblas(CMakePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("master", branch="master")
|
||||
version("5.6.1", sha256="f9da82fbefc68b84081ea0ed0139b91d2a540357fcf505c7f1d57eab01eb327c")
|
||||
version("5.6.0", sha256="9453a31324e10ba528f8f4755d2c270d0ed9baa33e980d8f8383204d8e28a563")
|
||||
version("5.5.1", sha256="5920c9a9c83cf7e2b42d1f99f5d5091cac7f6c0a040a737e869e57b92d7045a9")
|
||||
version("5.5.0", sha256="b080c25cb61531228d26badcdca856c46c640035c058bfc1c9f63de65f418cd5")
|
||||
version("5.4.3", sha256="5acac147aafc15c249c2f24c19459135ed68b506403aa92e602b67cfc10c38b7")
|
||||
@@ -167,6 +169,8 @@ def check(self):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
"master",
|
||||
"develop",
|
||||
]:
|
||||
|
@@ -15,7 +15,8 @@ class Hipcub(CMakePackage, CudaPackage, ROCmPackage):
|
||||
tags = ["rocm"]
|
||||
|
||||
maintainers("srekolam", "renjithravindrankannath")
|
||||
|
||||
version("5.6.1", sha256="4b9479daa40424c9ddbc14ce967aa170680f8ca1ed01a514e6e30ccfa22552ce")
|
||||
version("5.6.0", sha256="5e74ddbf833f39836bf9ec6c6750348c7386a85ca67aaf9bb54d16c9e1959031")
|
||||
version("5.5.1", sha256="ad83f3f1ed85ead9e3012906957c125a896168be913f6fb6af298228fc571480")
|
||||
version("5.5.0", sha256="3eec838119326a67eb4cc006c706e328f3a51a01e98bbfb518df8fe4a4707e13")
|
||||
version("5.4.3", sha256="cf528d9acb4f9b9c3aad439ae76bfc3d02be6e7a74d96099544e5d54e1a23675")
|
||||
@@ -148,6 +149,8 @@ class Hipcub(CMakePackage, CudaPackage, ROCmPackage):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
]:
|
||||
depends_on("rocprim@" + ver, when="+rocm @" + ver)
|
||||
depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver)
|
||||
|
@@ -22,7 +22,8 @@ class Hipfft(CMakePackage, CudaPackage, ROCmPackage):
|
||||
maintainers("renjithravindrankannath", "srekolam")
|
||||
|
||||
version("master", branch="master")
|
||||
|
||||
version("5.6.1", sha256="d2ae36b8eacd39b865e8a7972b8eb86bcea2de4ac90711bba7e29b39b01eaa74")
|
||||
version("5.6.0", sha256="c7f425b693caf9371b42226d86392335d993a117d23219b6ba1fd13523cb8261")
|
||||
version("5.5.1", sha256="3addd15a459752ad657e84c2a7b6b6289600d1d0a5f90d6e0946ba11e8148fc0")
|
||||
version("5.5.0", sha256="47ec6f7da7346c312b80daaa8f763e86c7bdc33ac8617cfa3344068e5b20dd9e")
|
||||
version("5.4.3", sha256="ae37f40b6019a11f10646ef193716836f366d269eab3c5cc2ed09af85355b945")
|
||||
@@ -116,6 +117,8 @@ class Hipfft(CMakePackage, CudaPackage, ROCmPackage):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
]:
|
||||
depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver)
|
||||
depends_on("rocfft@" + ver, when="+rocm @" + ver)
|
||||
|
@@ -15,7 +15,8 @@ class Hipfort(CMakePackage):
|
||||
tags = ["rocm"]
|
||||
|
||||
maintainers("cgmb", "srekolam", "renjithravindrankannath")
|
||||
|
||||
version("5.6.1", sha256="a55345cc9ccaf0cd69d306b8eb9ec2a02c220a57e9c396443cc7273aa3377adc")
|
||||
version("5.6.0", sha256="03176a099bc81e212ad1bf9d86f35561f8f2d21a2f126732d7620e1ea59888d5")
|
||||
version("5.5.1", sha256="abc59f7b81cbefbe3555cbf1bf0d80e8aa65901c70799748c40870fe6f3fea60")
|
||||
version("5.5.0", sha256="cae75ffeac129639cabebfe2f95f254c83d6c0a6cffd98142ea3537a132e42bb")
|
||||
version("5.4.3", sha256="1954a1cba351d566872ced5549b2ced7ab6332221e2b98dba3c07180dce8f173")
|
||||
@@ -118,6 +119,8 @@ class Hipfort(CMakePackage):
|
||||
"5.4.3",
|
||||
"5.5.0",
|
||||
"5.5.1",
|
||||
"5.6.0",
|
||||
"5.6.1",
|
||||
]:
|
||||
depends_on("hip@" + ver, type="build", when="@" + ver)
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user