summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-09-20do_install: post #46423 cleanup (#46496)Tamara Dahlgren3-4/+5
2024-09-19amr-wind: use CMAKE_CUDA_ARCHITECTURES (#46442)Jon Rood1-3/+1
2024-09-19py-pyogrio: add missing GDAL dependency (#46458)Adam J. Stewart1-0/+1
2024-09-19package_base: break dependency on installer (#46423)Harmen Stoppels29-196/+249
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-19quantum-espresso: ensure no space in HDF5 lib variable (#46089)etiennemlb1-0/+5
* Ensure no space in HDF5 lib variable. * QE patch fix
2024-09-19require spec in develop entry (#46485)Harmen Stoppels1-0/+1
2024-09-19bdw-gc: add v8.2.8 (#46286)Ivan Maidanski1-1/+2
2024-09-19url join: fix oci scheme (#46483)Harmen Stoppels3-4/+7
* url.py: also special case oci scheme in join * avoid fetching keys from oci mirror
2024-09-19Revert "For "when:" and install_environment.json: Support fully qualified ↵Harmen Stoppels2-4/+2
hos…" (#46478) This reverts commit 6b0011c8f1293510a784a0eaa0a2a10e03339f16. It caused a major performance penalty in unit test time on macOS (about 30 minutes).
2024-09-19run-unit-tests: no xdist if coverage (#46480)Harmen Stoppels1-3/+3
xdist only slows down unit tests under coverage
2024-09-19docs: refer to upstreams.yaml in chain.rst title (#46475)Harmen Stoppels1-3/+3
2024-09-19spack.util.url: fix join breakage in python 3.12.6 (#46453)Harmen Stoppels2-318/+84
2024-09-19avoid multiprocessing in tests (#46439)Harmen Stoppels5-15/+23
- silences a few pytest warnings related to forking in xdist - speeds up a few tests / avoids possible oversubscription in xdist
2024-09-18Add GHA for circular imports regressions (#46436)Harmen Stoppels1-0/+59
2024-09-18Bump archspec to latest commit (#46445)Massimiliano Culpo2-7/+3
This should fix an issue with Neoverse XX detection Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-09-17Replace `if ... in spec` with `spec.satisfies` in h* and i* packages (#46387)Auriane R.50-215/+231
* Replace if ... in spec with spec.satisfies in h* packages * Replace if ... in spec with spec.satisfies in i* packages
2024-09-17variants: Unify metadata dictionaries to index by `when` (#44425)Todd Gamblin21-633/+1157
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-17cloud_pipelines/.gitlab-ci.yml: run spack arch (#46437)Harmen Stoppels1-0/+1
2024-09-17drop main dep from build_environment/subprocess_context (#46426)Harmen Stoppels4-18/+18
2024-09-17untangle spack.config / spack.util.cpus & spack.spec (#46427)Harmen Stoppels10-73/+65
2024-09-17package_base.py: do not depend on spack.environment (#46424)Harmen Stoppels1-3/+1
2024-09-17imports: automate missing imports (#46410)Harmen Stoppels136-170/+383
2024-09-16coverage: only upload to codecov once (#46385)Todd Gamblin4-31/+65
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-16kokkos, kokkos-kernels, kokkos-nvcc-wrapper: add v4.4.01 (#46377)Satish Balay4-1/+5
* 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-16lammps-example-plugin: add new versions, fix bug (#46331)Richard Berger1-5/+11
2024-09-16nghttp2: add v1.62.1, v1.63.0 (#46358)Wouter Deconinck1-0/+3
2024-09-16libxslt: add through v1.1.42 (now at gnome.org) (#46364)Wouter Deconinck1-6/+24
* libxslt: add through v1.1.42 (now at gnome.org) * libxslt: add v1.1.35 (apparently forgotten)
2024-09-16libedit: add v3.1-20240517, v3.1-20240808 (#46366)Wouter Deconinck1-2/+8
2024-09-16[py-httpx] Dependency fixes and simplifications (#46367)Jen Herting1-9/+9
2024-09-16hipfft: update @master dependency wrt rocfft (#46376)Satish Balay2-0/+3
* 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-16Use the correct variable in configure() in bash package.py (#46384)David Collins1-1/+1
2024-09-16duckdb: add v1.1.0, deprecate v0.10.0 (#46391)Teague Sterling1-1/+6
* 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-16arborx: add 1.7 (#46392)Andrey Prokopenko1-6/+9
2024-09-16qt: add v5.15.15 (#46405)Wouter Deconinck1-0/+1
2024-09-16Revert "allow failure for cray-sles (#46411)" (#46413)kwryankrattiger1-1/+0
This reverts commit 576251f0dad79d0e69f73eb393ce40a0921df0b4.
2024-09-16openblas and others: change flag_handler idiom to respect incoming flags ↵Greg Becker8-27/+19
(#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-16Add repositories for "requirements" and "flag mixing" unit tests (#46412)Massimiliano Culpo15-181/+190
2024-09-16allow failure for cray-sles (#46411)Harmen Stoppels1-0/+1
2024-09-16Add missing & remove redundant imports (#46407)Harmen Stoppels111-189/+14
2024-09-16freexl: add missing deps (#46330)Harmen Stoppels1-1/+11
2024-09-16Fix a few circular deps (#46373)Harmen Stoppels26-226/+196
2024-09-15petsc, mfem: update rocm dependency (#46324)Satish Balay2-1/+5
* 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-15fetch_strategy: show the effective URL on checksum validation failure (#46349)Harmen Stoppels1-20/+26
2024-09-15Updated HyPar package (#46394)Debojyoti Ghosh1-4/+5
* updated HyPar repo links * updated configure args with and without MPI * updated checksum for zipped source
2024-09-14py-awkward: add v2.6.6 and py-awkward-cpp v35 (#46372)Juan Miguel Carceller2-1/+11
* 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-14glab: add v1.46.1 (#46353)Alec Scott1-2/+9
2024-09-14goma: add v7.7.0 (#46362)Weston Ortiz1-0/+1
2024-09-14py-torchmetrics: add v1.4.2 (#46389)Adam J. Stewart1-3/+3
2024-09-14py-future: add version 1.0.0 (#46375)Richard Berger1-0/+1
2024-09-14enchant: new versions, update homepage and url (#46386)Richard Berger1-3/+15