Commit Graph

37785 Commits

Author SHA1 Message Date
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
Wouter Deconinck
0cb4db950f
nghttp2: add v1.62.1, v1.63.0 (#46358) 2024-09-16 12:13:24 -07:00
Wouter Deconinck
bba66f9dae
libxslt: add through v1.1.42 (now at gnome.org) (#46364)
* libxslt: add through v1.1.42 (now at gnome.org)
* libxslt: add v1.1.35 (apparently forgotten)
2024-09-16 12:09:47 -07:00
Wouter Deconinck
9c222aee67
libedit: add v3.1-20240517, v3.1-20240808 (#46366) 2024-09-16 12:03:39 -07:00
Jen Herting
fcc28d72e8
[py-httpx] Dependency fixes and simplifications (#46367) 2024-09-16 12:02:22 -07:00
Satish Balay
8bc897cee1
hipfft: update @master dependency wrt rocfft (#46376)
* add master branch to rocfft and ensure its dependency on that branch for hip and rocm-cmake
* ensure hipfft@master uses rocm-cmake@master
2024-09-16 12:00:26 -07:00
David Collins
2b70f8367c
Use the correct variable in configure() in bash package.py (#46384) 2024-09-16 11:44:27 -07:00
Teague Sterling
a9a23f4565
duckdb: add v1.1.0, deprecate v0.10.0 (#46391)
* duckdb: add v1.0.0, v0.10.3
* Adding issue reference
* duckdb: add v1.1.0

---------

Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
2024-09-16 11:42:27 -07:00
Andrey Prokopenko
0d86ecf122
arborx: add 1.7 (#46392) 2024-09-16 11:40:39 -07:00
Wouter Deconinck
654d6f1397
qt: add v5.15.15 (#46405) 2024-09-16 12:38:13 -06:00
kwryankrattiger
ade9c8da0e
Revert "allow failure for cray-sles (#46411)" (#46413)
This reverts commit 576251f0da.
2024-09-16 19:42:24 +02:00
Greg Becker
f4f59b7f18
openblas and others: change flag_handler idiom to respect incoming flags (#46211)
* openblas: fix flag_handler to respect flags

* arpack-ng: fix flag_handler to respect flags

* czmq: fix flag_handler to respect flags

* flex: fix flag_handler to respect flags

* json-c: fix flag_handler to respect flags

* mpifileutils: fix flag_handler to respect flags

* netlib-scalapack: fix flag_handler to respect flags

* sed: fix flag_handler to respect flags

---------

Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
2024-09-16 09:14:24 -07:00
Massimiliano Culpo
61d6c5486c
Add repositories for "requirements" and "flag mixing" unit tests (#46412) 2024-09-16 17:59:35 +02:00
Harmen Stoppels
576251f0da
allow failure for cray-sles (#46411) 2024-09-16 17:17:36 +02:00
Harmen Stoppels
55e0ef1e64
Add missing & remove redundant imports (#46407) 2024-09-16 12:54:16 +02:00
Harmen Stoppels
ef0e54726d
freexl: add missing deps (#46330) 2024-09-16 12:12:38 +02:00
Harmen Stoppels
8225b18985
Fix a few circular deps (#46373) 2024-09-16 09:15:51 +02:00
Satish Balay
02320b18f3
petsc, mfem: update rocm dependency (#46324)
* petsc: configure requires rocm-core/rocm_version.h to detect ROCM_VERSION_MAJOR.ROCM_VERSION_MINOR.ROCM_VERSION_PATCH

* mfem: add dependency on rocprim (as needed via petsc dependency)

In file included from linalg/petsc.cpp:19:
In file included from linalg/linalg.hpp:65:
In file included from linalg/petsc.hpp:48:
In file included from /scratch/svcpetsc/spack.x/opt/spack/linux-ubuntu22.04-x86_64/gcc-11.4.0/petsc-3.22.0-7dsxwizo24ycnqvwnsscupuh4i7yusrh/include/petscsystypes.h:530:
In file included from /scratch/svcpetsc/spack.x/opt/spack/linux-ubuntu22.04-x86_64/gcc-11.4.0/rocthrust-6.1.2-ux5nmi4utw27oaqmz3sfjmhb6hyt5zed/include/thrust/complex.h:30:
/scratch/svcpetsc/spack.x/opt/spack/linux-ubuntu22.04-x86_64/gcc-11.4.0/rocthrust-6.1.2-ux5nmi4utw27oaqmz3sfjmhb6hyt5zed/include/thrust/detail/type_traits.h:29:10: fatal error: 'rocprim/detail/match_result_type.hpp' file not found
   29 | #include <rocprim/detail/match_result_type.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2024-09-15 13:30:55 -05:00
Harmen Stoppels
b4e32706db
fetch_strategy: show the effective URL on checksum validation failure (#46349) 2024-09-15 20:26:02 +02:00
Debojyoti Ghosh
bcde9a3afb
Updated HyPar package (#46394)
* updated HyPar repo links

* updated configure args with and without MPI

* updated checksum for zipped source
2024-09-15 10:45:57 -05:00
Juan Miguel Carceller
363215717d
py-awkward: add v2.6.6 and py-awkward-cpp v35 (#46372)
* py-awkward: add v2.6.6 and py-awkward-cpp v35

* Add dependencies on python and numpy

* Add a conflict with GCC 14

* Move conflict to py-awkward-cpp

* py-awkward: 2.1.1 depends on py-awkward-cpp@12

---------

Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2024-09-14 15:04:46 -06:00
Alec Scott
ca46fec985
glab: add v1.46.1 (#46353) 2024-09-14 15:47:53 -05:00
Weston Ortiz
7df4ac70da
goma: add v7.7.0 (#46362) 2024-09-14 15:45:21 -05:00
Adam J. Stewart
88aa96b53b
py-torchmetrics: add v1.4.2 (#46389) 2024-09-14 15:15:29 -05:00