summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-11-08`spack.compiler`/`spack.util.libc`: add caching (#47213)Harmen Stoppels7-37/+227
* spack.compiler: cache output * compute libc from the dynamic linker at most once per spack process * wrap compiler cache entry in class, add type hints * test compiler caching * ensure tests do not populate user cache, and fix 2 tests * avoid recursion: cache lookup -> compute key -> cflags -> real_version -> cache lookup * allow compiler execution in test that depends on get_real_version
2024-11-08upcxx %oneapi@2025: cxxflags add ↵eugeneswalker1-1/+5
-Wno-error=missing-template-arg-list-after-template-kw (#47503)
2024-11-08llnl.util.filesystem: multiple entrypoints and max_depth (#47495)Harmen Stoppels7-113/+457
If a package `foo` doesn't implement `libs`, the default was to search recursively for `libfoo` whenever asking for `spec[foo].libs` (this also happens automatically if a package includes `foo` as a link dependency). This can lead to some strange behavior: 1. A package that is normally used as a build dependency (e.g. `cmake` at one point) is referenced like `depends_on(cmake)` which leads to a fully-recursive search for `libcmake` (this can take "forever" when CMake is registered as an external with a prefix like `/usr`, particularly on NFS mounts). 2. A similar hang can occur if a package is registered as an external with an incorrect prefix - [x] Update the default library search to stop after a maximum depth (by default, search the root prefix and each directory in it, but no lower). - [x] The following is a list of known changes to `find` compared to `develop`: 1. Matching directories are no longer returned -- `find` consistently only finds non-dirs, even at `max_depth` 2. Symlinked directories are followed (needed to support max_depth) 3. `find(..., "dir/*.txt")` is allowed, for finding files inside certain dirs. These "complex" patterns are delegated to `glob`, like they are on `develop`. 4. `root` and `files` arguments both support generic sequences, and `root` allows both `str` and `path` types. This allows us to specify multiple entry points to `find`. --------- Co-authored-by: Peter Scheibel <scheibel1@llnl.gov>
2024-11-08Add missing imports (#47496)Harmen Stoppels3-0/+5
2024-11-08pika: add 0.30.0 (#47498)Mikael Simberg1-0/+1
2024-11-08 `spack env track` command (#41897)Alec Scott5-52/+331
This PR adds a sub-command to `spack env` (`track`) which allows users to add/link anonymous environments into their installation as named environments. This allows users to more easily track their installed packages and the environments they're dependencies of. For example, with the addition of #41731 it's now easier to remove all packages not required by any environments with, ``` spack gc -bE ``` #### Usage ``` spack env track /path/to/env ==> Linked environment in /path/to/env ==> You can activate this environment with: ==> spack env activate env ``` By default `track /path/to/env` will use the last directory in the path as the name of the environment. However users may customize the name of the linked environment with `-n | --name`. Shown below. ``` spack env track /path/to/env --name foo ==> Tracking environment in /path/to/env ==> You can activate this environment with: ==> spack env activate foo ``` When removing a linked environment, Spack will remove the link to the environment but will keep the structure of the environment within the directory. This will allow users to remove a linked environment from their installation without deleting it from a shared repository. There is a `spack env untrack` command that can be used to *only* untrack a tracked environment -- it will fail if it is used on a managed environment. Users can also use `spack env remove` to untrack an environment. This allows users to continue to share environments in git repositories while also having the dependencies of those environments be remembered by Spack. --------- Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2024-11-07Revert "filesystem.py: add `max_depth` argument to `find` (#41945)"Harmen Stoppels4-292/+77
This reverts commit 38c8069ab42f44aa9f4779968937fc6842dc2109.
2024-11-07Revert "llnl.util.filesystem.find: restore old error handling (#47463)"Harmen Stoppels1-11/+20
This reverts commit a31c525778773b8c6a6fc35617454d954a05d74d.
2024-11-07Revert "`llnl.util.filesystem.find`: multiple entrypoints (#47436)"Harmen Stoppels4-178/+130
This reverts commit 73219e4b02e6561bbeef379081f63efb0dc78817.
2024-11-07silo package: update patch (#47457)Chris White1-21/+9
Update patch based on LLNL/Silo#319 to fix build of 4.10.2
2024-11-07Add fast farm variant to openfast (#47486)Marc T. Henry de Frahan1-0/+2
2024-11-07spec.py: fix comparison with multivalued variants (#47485)Harmen Stoppels2-1/+5
2024-11-06loki%oneapi@2025: -Wno-error=missing-template-arg-list-after-template-kw ↵eugeneswalker1-0/+2
(#47475)
2024-11-06Add amr-wind versions (#47479)Marc T. Henry de Frahan1-0/+2
2024-11-06legion%oneapi@2025: cxxflags add ↵eugeneswalker1-0/+6
-Wno-error=missing-template-arg-list-after-template-kw (#47478)
2024-11-06slate %oneapi@2025: cxxflags: add ↵eugeneswalker1-0/+6
-Wno-error=missing-template-arg-list-after-template-kw (#47476)
2024-11-06`llnl.util.filesystem.find`: multiple entrypoints (#47436)Harmen Stoppels4-130/+178
You can now provide multiple roots to a single `find()` call and all of them will be searched. The roots can overlap (e.g. can be parents of one another). This also adds a library function for taking a set of regular expression patterns and creating a single OR expression (and that library function is used in `find` to improve its performance).
2024-11-06nalu-wind: fix hypre constraints (#47474)Jon Rood1-3/+3
2024-11-06omega-h: new version and cuda conflicts for prior versions (#47473)Cameron Smith4-4/+12
* omegah: add version 10.8.6 * omegah: cuda without kokkos conflict * omegah: test with latest version in ci
2024-11-06gsoap: add v2.8.135 (#47415)Wouter Deconinck1-7/+24
* gsoap: add v2.8.135
2024-11-06tau: add v2.34 (#47471)eugeneswalker1-0/+1
2024-11-06Fix `spack -c <override>` when env active (#47403)Massimiliano Culpo6-46/+94
Set command line scopes last in _main, so they are higher scopes Restore the global configuration in a spawned process by inspecting the result of ctx.get_start_method() Add the ability to pass a mp.context to PackageInstallContext. Add shell-tests to check overriding the configuration: - Using both -c and -C from command line - With and without an environment active
2024-11-06rivet: add through v4.0.2 (incl yoda: add through v2.0.2) (#47383)Wouter Deconinck3-7/+32
* yoda: add v2.0.1, v2.0.2 * rivet: add v3.1.9, v3.1.10, v4.0.0, v4.0.1, v4.0.2 * rivet: yoda@:1 when @:3; conflicts hepmc3@3.3.0 when @:4.0.0 * rivet: fix style * rivet: hepmc=2 only when @:3; use libs.directories[0] * hepmc3: def libs * [@spackbot] updating style on behalf of wdconinc --------- Co-authored-by: wdconinc <wdconinc@users.noreply.github.com>
2024-11-06Fix various bootstrap/concretizer import issues (#47467)Harmen Stoppels4-9/+10
2024-11-06llnl.util.filesystem.find: restore old error handling (#47463)Harmen Stoppels1-20/+11
2024-11-06edm4hep: Add json variant for newer versions (#47180)Thomas Madlener1-1/+11
* edm4hep: Add json variant for newer versions Explicit option has been added to EDM4hep so we now expose it via a variant as well. We keep the old behavior where we unconditionally depended on nlohmann-json and implicitly built JSON support if we could detect it cmake stage * Fix condition statement in when clause * Use open version range to avoid fixing to single version --------- Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch>
2024-11-06Feature: Allow variants to propagate if not available in source pkg (#42931)Richarda Butler15-35/+413
Variants can now be propagated from a dependent package to (transitive) dependencies, even if the source or transitive dependencies have the propagated variants. For example, here `zlib` doesn't have a `guile` variant, but `gmake` does: ``` $ spack spec zlib++guile - zlib@1.3%gcc@12.2.0+optimize+pic+shared build_system=makefile arch=linux-rhel8-broadwell - ^gcc-runtime@12.2.0%gcc@12.2.0 build_system=generic arch=linux-rhel8-broadwell - ^gmake@4.4.1%gcc@12.2.0+guile build_system=generic arch=linux-rhel8-broadwell ``` Adding this property has some strange ramifications for `satisfies()`. In particular: * The abstract specs `pkg++variant` and `pkg+variant` do not intersect, because `+variant` implies that `pkg` *has* the variant, but `++variant` does not. * This means that `spec.satisfies("++foo")` is `True` if: * for concrete specs: `spec` and its dependencies all have `foo` set if it exists * for abstract specs: no dependency of `spec` has `~foo` (i.e. no dependency contradicts `++foo`). * This also means that `Spec("++foo").satisfies("+foo")` is `False` -- we only know after concretization. The `satisfies()` semantics may be surprising, but this is the cost of introducing non-subset semantics (which are more useful than proper subsets here). - [x] Change checks for variants - [x] Resolve conflicts - [x] Add tests - [x] Add documentation --------- Co-authored-by: Gregory Becker <becker33@llnl.gov> Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-11-05masa: add versions and update dependencies (#47447)Jon Rood1-8/+15
* masa: add versions * masa: update dependencies
2024-11-05Fix filter_compiler_wrappers with mpi (#47448)wspear1-2/+8
2024-11-05omega-h: fix versioning and cuda compat (#47433)Harmen Stoppels6-33/+22
2024-11-05cgal: add v6.0.1 (#47285)Martin Lang2-2/+4
2024-11-05paraview: add forward compat bound with cuda (#47430)Harmen Stoppels1-0/+3
2024-11-05libc.py: detect glibc also in chinese locale (#47434)Harmen Stoppels1-6/+18
2024-11-05Revert "Ci generate on change (#47318)" (#47431)Harmen Stoppels2-109/+27
This reverts commit 1462c357619fedf7354bc60f9178b2199258ebd2.
2024-11-05Add Adiak v0.4.1 (#47429)David Boehme1-1/+2
2024-11-05extrae: fix build with gcc@14 (#47407)Mosè Giordano1-0/+12
2024-11-05py-torchaudio, py-torchtext: rpath fixup (#47404)Harmen Stoppels2-0/+40
* py-torchaudio, py-torchtext: rpath fixup also add missing dependency on Spack ffmpeg to torchaudio. * py-torchaudio: add torio rpath
2024-11-05py-tensorflow: add v2.18.0 (#47211)Adam J. Stewart2-42/+57
2024-11-05py-python-ptrace: missing forward compat bound (#47401)Harmen Stoppels1-1/+5
2024-11-05spack.concretize: add type-hints, remove kwargs (#47382)Massimiliano Culpo5-124/+52
Also remove find_spec, which was used by the old concretizer. Currently, it seems to be used only in tests.
2024-11-04openmpi: add 4.1.7 (#47427)Howard Pritchard1-0/+3
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2024-11-04sst-dumpi: fix homepage (#47420)Wouter Deconinck1-1/+1
2024-11-04quicksilver: fix homepage (#47419)Wouter Deconinck1-1/+1
2024-11-04py-eventlet: fix url (#47418)Wouter Deconinck1-2/+2
* py-eventlet: fix url * py-eventlet: fix checksum
2024-11-04py-configspace: fix homepage (#47417)Wouter Deconinck1-1/+1
2024-11-04extrae: add more versions (#47408)Mosè Giordano1-0/+9
2024-11-04extrae: fix typo (#47406)Mosè Giordano1-1/+1
2024-11-04pythia8: Include patch for C++20 / Clang (#47400)Paul Gessinger2-7/+47
* pythia8: Include patch for C++20 / Clang Pythia8 vendors some FJCore sources that are as of Pythia8 312 incompatible with C++20 on clang. This adds a patch that makes it compatible in these scenarios * Add issue link * rename setup_cxxstd function * Remove an accidental printout * Apply patch to all compilers, add lower bound
2024-11-04prometheus-cpp: added package prometheus-cpp (#47384)Matthieu Dorier1-0/+30
* prometheus-cpp: added package prometheus-cpp * prometheus-cpp: edited PR for style
2024-11-04flux: new package (#47392)Pranav Sivaraman1-0/+39