Commit Graph

37758 Commits

Author SHA1 Message Date
Wouter Deconinck
3e0331b250
goblin-hmc-sim: fix url (#46515) 2024-09-22 13:58:07 +02:00
Wouter Deconinck
c302013c5b
yajl: fix url (#46518) 2024-09-22 13:54:57 +02:00
Wouter Deconinck
87d389fe78
shc: fix url (#46517) 2024-09-22 13:54:10 +02:00
Wouter Deconinck
27c590d2dc
testdfsio: fix url and switch to be deprecated (#46520) 2024-09-22 13:42:21 +02:00
Wouter Deconinck
960f206a68
evemu: fix url (#46521) 2024-09-22 13:35:31 +02:00
Wouter Deconinck
1ccfb1444a
py-falcon: fix url (#46522) 2024-09-22 13:34:38 +02:00
Wouter Deconinck
17199e7fed
py-cftime: fix url (#46523) 2024-09-22 13:32:14 +02:00
Wouter Deconinck
b88971e125
tinker: add v8.7.2 (#46527) 2024-09-22 13:28:52 +02:00
Juan Miguel Carceller
f4ddb54293
opendatadetector: Add an env variable pointing to the share directory (#46511)
* opendatadetector: Add an env variable pointing to the share directory

* Rename the new variable to OPENDATADETECTOR_DATA and use join_path

---------

Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
2024-09-22 05:51:25 -05:00
Juan Miguel Carceller
478d1fd8ff
geant4: Add a patch for twisted tubes (#45368)
Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
2024-09-22 12:10:37 +02:00
afzpatel
3c7357225a
py-onnxruntime: add v1.18.0 -> v1.18.3 and add ROCm support (#46448)
* add ROCm support for py-onnxruntime

* add new versions of py-onnxruntime

* add review changes
2024-09-21 17:23:59 -05:00
Adam J. Stewart
8a3128eb70
Bazel: add GCC 13 support for v6 (#46430)
* Bazel: add GCC 13 support for v6
* Fix offline builds
2024-09-21 11:24:38 -06:00
Adam J. Stewart
096ab11961
py-onnx: link to external protobuf (#46434) 2024-09-21 10:59:20 -06:00
Adam J. Stewart
9577fd8b8a
py-ruff: add v0.6.5 (#46459) 2024-09-21 10:39:32 -06:00
Adam J. Stewart
8088fb8ccc
py-cmocean: add v4.0.3 (#46454) 2024-09-21 10:18:27 -06:00
Massimiliano Culpo
b93c57cab9
Remove spack.target from code (#46503)
The `spack.target.Target` class is a weird entity, that is just needed to:

1. Sort microarchitectures in lists deterministically
2. Being able to use microarchitectures in hashed containers

This PR removes it, and uses `archspec.cpu.Microarchitecture` directly. To sort lists, we use a proper `key=` when needed. Being able to use `Microarchitecture` objects in sets is achieved by updating the external `archspec`.

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-09-21 14:05:41 +02:00
Wouter Deconinck
35ae2743d9
cans: update homepage and url (#46488) 2024-09-21 08:45:29 +02:00
Wouter Deconinck
cd3bd453d3
chatterbug: update homepage and git (#46489) 2024-09-21 08:44:49 +02:00
Stephen Herbener
fc6cd7c51f
Introduce the bufr_query library from NOAA-EMC (#45920)
* Introduce the bufr_query library from NOAA-EMC (#461)

This PR adds in a new package.py script for the new bufr_query library from NOAA-EMC. This is being used by JEDI and other applications.

* Add explicit build dependency spec to the pybind11 depends_on spec

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>

* Convert patch file to the URL form which pulls the changes from github.

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>

* Added new version (0.0.3) and removed obsolete site-packages.patch file

---------

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2024-09-20 15:46:42 -06:00
John W. Parent
cfee88a5bb
Docs/Windows: Clarify supported shells and caveats (#46381)
While the existing getting started guide does in fact reference the
powershell support, it's a footnote and easily missed. This PR adds
explicit, upfront mentions of the powershell support. Additionally
this PR adds notes about some of the issues with certain components
of the spec syntax when using CMD.
2024-09-20 11:55:17 -07:00
Harmen Stoppels
7711730f2c
spack.modules: move get_module up (#46428) 2024-09-20 19:30:09 +02:00
Massimiliano Culpo
14e8902854
gcc: simplify setup_run_environment (#46505)
If the spec is external, it has extra attributes. If not, we know
which names are used. In both cases we don't need to search again
for executables.

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-09-20 18:30:43 +02:00
eugeneswalker
97961555dc
petsc@3.21 +rocm: add patches for rocm 6+ (#46486) 2024-09-20 18:12:56 +02:00
Wouter Deconinck
51df7e088a
gptune: don't make git attribute an Executable (#46492)
* gptune: don't make `git` attribute an Executable

* gptune: fine, I'll fix style myself then
2024-09-20 11:02:22 -05:00
Massimiliano Culpo
b28583bc58
Remove code from Compiler that is not used anymore (#45982)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-09-20 10:00:34 +02:00
Tamara Dahlgren
f9f6f094c3
do_install: post #46423 cleanup (#46496) 2024-09-20 09:45:31 +02:00
Jon Rood
e780a83ac6
amr-wind: use CMAKE_CUDA_ARCHITECTURES (#46442) 2024-09-19 17:58:57 -06:00
Adam J. Stewart
7f57a85514
py-pyogrio: add missing GDAL dependency (#46458) 2024-09-19 18:25:33 -05:00
Harmen Stoppels
e4927b35d1
package_base: break dependency on installer (#46423)
Removes `spack.package_base.PackageBase.do_{install,deprecate}` in favor of
`spack.installer.PackageInstaller.install` and `spack.installer.deprecate` resp.

That drops a dependency of `spack.package_base` on `spack.installer`, which is
necessary to get rid of circular dependencies in Spack.

Also change the signature of `PackageInstaller.__init__` from taking a dict as
positional argument, to an explicit list of keyword arguments.
2024-09-19 23:25:36 +02:00
etiennemlb
098ad7ffc0
quantum-espresso: ensure no space in HDF5 lib variable (#46089)
* Ensure no space in HDF5 lib variable.
* QE patch fix
2024-09-19 14:00:34 -07:00
Harmen Stoppels
db7aece186
require spec in develop entry (#46485) 2024-09-19 20:11:22 +02:00
Ivan Maidanski
0e9f131b44
bdw-gc: add v8.2.8 (#46286) 2024-09-19 18:48:34 +02:00
Harmen Stoppels
1d18f571ae
url join: fix oci scheme (#46483)
* url.py: also special case oci scheme in join

* avoid fetching keys from oci mirror
2024-09-19 16:06:44 +02:00
Harmen Stoppels
586360a8fe
Revert "For "when:" and install_environment.json: Support fully qualified hos…" (#46478)
This reverts commit 6b0011c8f1.

It caused a major performance penalty in unit test time on macOS (about 30 minutes).
2024-09-19 15:34:12 +02:00
Harmen Stoppels
b1db22d406
run-unit-tests: no xdist if coverage (#46480)
xdist only slows down unit tests under coverage
2024-09-19 14:01:33 +02:00
Harmen Stoppels
7395656663
docs: refer to upstreams.yaml in chain.rst title (#46475) 2024-09-19 13:08:05 +02:00
Harmen Stoppels
d0b736607b
spack.util.url: fix join breakage in python 3.12.6 (#46453) 2024-09-19 12:29:56 +02:00
Harmen Stoppels
fe5d7881f5
avoid multiprocessing in tests (#46439)
- silences a few pytest warnings related to forking in xdist
- speeds up a few tests / avoids possible oversubscription in xdist
2024-09-19 10:34:23 +02:00
Harmen Stoppels
28e3295fb0
Add GHA for circular imports regressions (#46436) 2024-09-18 09:07:23 +02:00
Massimiliano Culpo
314a3fbe77
Bump archspec to latest commit (#46445)
This should fix an issue with Neoverse XX detection

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-09-18 00:54:39 +00:00
Auriane R.
6df831ef00
Replace if ... in spec with spec.satisfies in h* and i* packages (#46387)
* Replace if ... in spec with spec.satisfies in h* packages

* Replace if ... in spec with spec.satisfies in i* packages
2024-09-17 12:39:22 -05:00
Todd Gamblin
9818002219
variants: Unify metadata dictionaries to index by when (#44425)
Continuing the work started in #40326, his changes the structure
of Variant metadata on Packages from a single variant definition
per name with a list of `when` specs:

```
name: (Variant, [when_spec, ...])
```

to a Variant definition per `when_spec` per name:

```
when_spec: { name: Variant }
```

With this change, everything on a package *except* versions is
 keyed by `when` spec. This:

1. makes things consistent, in that conditional things are (nearly)
   all modeled in the same way; and

2. fixes an issue where we would lose information about multiple
   variant definitions in a package (see #38302). We can now have,
   e.g., different defaults for the same variant in different
   versions of a package.

Some notes:

1. This required some pretty deep changes to the solver. Previously,
   the solver's job was to select value(s) for a single variant definition
   per name per package. Now, the solver needs to:

   a. Determine which variant definition should be used for a given node,
      which can depend on the node's version, compiler, target, other variants, etc.
   b. Select valid value(s) for variants for each node based on the selected
      variant definition.

   When multiple variant definitions are enabled via their `when=` clause, we will
   always prefer the *last* matching definition, by declaration order in packages. This
   is implemented by adding a `precedence` to each variant at definition time, and we
   ensure they are added to the solver in order of precedence.

   This has the effect that variant definitions from derived classes are preferred over
   definitions from superclasses, and the last definition within the same class sticks.
   This matches python semantics. Some examples:

    ```python
    class ROCmPackage(PackageBase):
        variant("amdgpu_target", ..., when="+rocm")

    class Hipblas(ROCmPackage):
        variant("amdgpu_target", ...)
    ```

   The global variant in `hipblas` will always supersede the `when="+rocm"` variant in
   `ROCmPackage`. If `hipblas`'s variant was also conditional on `+rocm` (as it probably
   should be), we would again filter out the definition from `ROCmPackage` because it
   could never be activated. If you instead have:

    ```python
    class ROCmPackage(PackageBase):
        variant("amdgpu_target", ..., when="+rocm")

    class Hipblas(ROCmPackage):
        variant("amdgpu_target", ..., when="+rocm+foo")
    ```

   The variant on `hipblas` will win for `+rocm+foo` but the one on `ROCmPackage` will
   win with `rocm~foo`.

   So, *if* we can statically determine if a variant is overridden, we filter it out.
   This isn't strictly necessary, as the solver can handle many definitions fine, but
   this reduces the complexity of the problem instance presented to `clingo`, and
   simplifies output in `spack info` for derived packages. e.g., `spack info hipblas`
   now shows only one definition of `amdgpu_target` where before it showed two, one of
   which would never be used.

2. Nearly all access to the `variants` dictionary on packages has been refactored to
   use the following class methods on `PackageBase`:
    * `variant_names(cls) -> List[str]`: get all variant names for a package
    * `has_variant(cls, name) -> bool`: whether a package has a variant with a given name
    * `variant_definitions(cls, name: str) -> List[Tuple[Spec, Variant]]`: all definitions
      of variant `name` that are possible, along with their `when` specs.
    * `variant_items() -> `: iterate over `pkg.variants.items()`, with impossible variants
      filtered out.

   Consolidating to these methods seems to simplify the code a lot.

3. The solver does a lot more validation on variant values at setup time now. In
   particular, it checks whether a variant value on a spec is valid given the other
   constraints on that spec. This allowed us to remove the crufty logic in
   `update_variant_validate`, which was needed because we previously didn't *know* after
   a solve which variant definition had been used. Now, variant values from solves are
   constructed strictly based on which variant definition was selected -- no more
   heuristics.

4. The same prevalidation can now be done in package audits, and you can run:

   ```
   spack audit packages --strict-variants
   ```

   This turns up around 18 different places where a variant specification isn't valid
   given the conditions on variant definitions in packages. I haven't fixed those here
   but will open a separate PR to iterate on them. I plan to make strict checking the
   defaults once all existing package issues are resolved. It's not clear to me that
   strict checking should be the default for the prevalidation done at solve time.

There are a few other changes here that might be of interest:

  1. The `generator` variant in `CMakePackage` is now only defined when `build_system=cmake`.
  2. `spack info` has been updated to support the new metadata layout.
  3.  split out variant propagation into its own `.lp` file in the `solver` code.
  4. Add better typing and clean up code for variant types in `variant.py`.
  5. Add tests for new variant behavior.
2024-09-17 09:59:05 -07:00
Harmen Stoppels
1768b923f1
cloud_pipelines/.gitlab-ci.yml: run spack arch (#46437) 2024-09-17 17:07:26 +02:00
Harmen Stoppels
aa6651fe27
drop main dep from build_environment/subprocess_context (#46426) 2024-09-17 17:06:16 +02:00
Harmen Stoppels
3ded2fc9c5
untangle spack.config / spack.util.cpus & spack.spec (#46427) 2024-09-17 17:06:00 +02:00
Harmen Stoppels
623c5a4d24
package_base.py: do not depend on spack.environment (#46424) 2024-09-17 14:43:03 +02:00
Harmen Stoppels
673565aefe
imports: automate missing imports (#46410) 2024-09-17 07:45:59 +02:00
Todd Gamblin
930e711771
coverage: only upload to codecov once (#46385)
Historically, every PR, push, etc. to Spack generates a bunch of jobs, each of which
uploads its coverage report to codecov independently. This means that we get annoying
partial coverage numbers when only a few of the jobs have finished, and frequently
codecov is bad at understanding when to merge reports for a given PR. The numbers of the
site can be weird as a result.

This restructures our coverage handling so that we do all the merging ourselves and
upload exactly one report per GitHub actions workflow. In practice, that means that
every push to every PR will get exactly one coverage report and exactly one coverage
number reported. I think this will at least partially restore peoples' faith in what
codecov is telling them, and it might even make codecov handle Spack a bit better, since
this reduces the report burden by ~7x.

- [x] test and audit jobs now upload artifacts for coverage
- [x] add a new job that downloads artifacts and merges coverage reports together
- [x] set `paths` section of `pyproject.toml` so that cross-platform clone locations are merged
- [x] upload to codecov once, at the end of the workflow

Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
2024-09-16 19:18:21 -07:00
Satish Balay
b1905186a6
kokkos, kokkos-kernels, kokkos-nvcc-wrapper: add v4.4.01 (#46377)
* kokkos, kokkos-kernels, kokkos-nvcc-wrapper: add v4.4.01

* trilinos: update @[master,develop] dependency on kokkos

==> Error: InstallError: For Trilinos@[master,develop], ^kokkos version in spec must match version in Trilinos source code. Specify ^kokkos@4.4.01 for trilinos@[master,develop] instead of ^kokkos@4.4.00.
2024-09-16 13:53:00 -06:00
Richard Berger
176b7f8854
lammps-example-plugin: add new versions, fix bug (#46331) 2024-09-16 12:15:02 -07:00