summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2023-11-27CargoPackage: add new build system for Cargo packages (#41192)Alec Scott3-14/+114
Co-authored-by: Tom Scogland <scogland1@llnl.gov>
2023-11-27handle use of an unconfigured compiler (#41213)Robert Cohn2-1/+19
2023-11-27intel-oneapi 2024.0.0: added new version to packages (#41135)Andrey Perestoronin3-30/+60
* oneapi 2024.0.0 release * oneapi v2 directory support and some cleanups * sycl abi change requires 2024 compilers for packages that use sycl --------- Co-authored-by: Robert Cohn <robert.s.cohn@intel.com>
2023-11-27docs: refer to oci build cache from containers.rst (#41269)Harmen Stoppels2-0/+11
2023-11-27tests: fix more cases of env variables (#41226)Harmen Stoppels3-115/+105
2023-11-27Improve semantic for packages:all:require (#41239)Massimiliano Culpo5-47/+227
An `all` requirement is emitted for a package if all variants referenced are defined by it. Otherwise, the constraint is rejected.
2023-11-24Fix multi-word aliases (#41126)Michael Kuhn1-3/+5
PR #40929 reverted the argument parsing to make `spack --verbose install` work again. It looks like `--verbose` is the only instance where this kind of argument inheritance is used since all other commands override arguments with the same name instead. For instance, `spack --bootstrap clean` does not invoke `spack clean --bootstrap`. Therefore, fix multi-line aliases again by parsing the resolved arguments and instead explicitly pass down `args.verbose` to commands.
2023-11-24spack graph: fix coloring with environments (#41240)Massimiliano Culpo1-1/+1
If we use all specs, we won't color correctly build-only dependencies
2023-11-23ASP-based solver: don't error for type mismatch on preferences (#41138)Massimiliano Culpo3-1/+65
This commit discards type mismatches or failures to validate a package preference during concretization. The values discarded are logged as debug level messages. It also adds a config audit to help users spot misconfigurations in packages.yaml preferences.
2023-11-22test_which: do not mutate os.environHarmen Stoppels1-2/+2
2023-11-22setup_platform_environment before package env mods (#41205)Harmen Stoppels1-5/+6
This roughly restores the order of operation from Spack 0.20, where where `AutotoolsPackage.setup_build_environment` would override the env variable set in `setup_platform_environment` on macOS.
2023-11-22ASP-based solver: don't emit spurious debug output (#41218)Massimiliano Culpo1-8/+2
When improving the error message, we started #showing in the answer set a lot more symbols - but we forgot to suppress the debug messages warning about UNKNOWN SYMBOLs
2023-11-21Add cxx17_flag to intel.py (#41207)Alex Richert1-0/+8
* Add cxx17_flag to intel.py
2023-11-21build(deps): bump pygments from 2.16.1 to 2.17.1 in /lib/spack/docs (#41191)dependabot[bot]1-1/+1
Bumps [pygments](https://github.com/pygments/pygments) from 2.16.1 to 2.17.1. - [Release notes](https://github.com/pygments/pygments/releases) - [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES) - [Commits](https://github.com/pygments/pygments/compare/2.16.1...2.17.1) --- updated-dependencies: - dependency-name: pygments dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21spack style: fix isort on sl:7 (#41133)Massimiliano Culpo1-1/+1
Bump the minimum version required for isort. This should fix an issue reported on Scientific Linux 7, and due to: https://github.com/PyCQA/isort/issues/1363
2023-11-20MSVC preview version breaks clingo build (#41185)John W. Parent1-1/+2
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2023-11-20docs: document how spack picks a version / variant (#41070)Harmen Stoppels4-1/+93
2023-11-17Permit packages that depend on Intel oneAPI packages to access sdk (#41117)Mark Abraham2-0/+30
* Permit packages that depend on Intel oneAPI packages to access sdk * Implement and use IntelOneapiLibraryPackageWithSdk * Restore libs property to IntelOneapiLibraryPackage * Conform to style * Provide new class to infrastructure * Treat sdk/include as the main include
2023-11-16Use preferred capitalization of "Slurm" (#41109)Tim Wickberg2-2/+2
https://slurm.schedmd.com/faq.html#acronym
2023-11-16Improve the error message for deprecated preferences (#41075)Massimiliano Culpo3-7/+53
Improves the warning for deprecated preferences, and adds a configuration audit to get files:lines details of the issues. Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2023-11-16Add audit check to spot `when=` arguments using wrong named specs (#41107)Massimiliano Culpo1-1/+48
* Add audit check to spot when= arguments using named specs * Fix package issues caught by the new audit
2023-11-15docs: packages config on separate page, demote bootstrapping (#41085)Harmen Stoppels5-547/+553
2023-11-14Fix infinite recursion when computing concretization errors (#41061)Massimiliano Culpo1-2/+9
2023-11-14modules: unit-tests without polluted user scope (#41041)Massimiliano Culpo8-58/+62
2023-11-14build(deps): bump urllib3 from 2.0.7 to 2.1.0 in /lib/spack/docs (#41055)dependabot[bot]1-1/+1
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.7 to 2.1.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.0.7...2.1.0) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13info: improve coverage (#41001)Todd Gamblin2-22/+23
Tests didn't cover the new `--variants-by-name` parameter in #40998. Add some parameterization to hit that. This changeset makes me think that the main section-printing loop in `spack info` isn't factored so well. It makes it difficult to pass different arguments to different helper functions. I could break it out into if statements if folks think that would be cleaner.
2023-11-13spack diff: allow hashes from mirrors (#41043)Greg Becker1-0/+2
2023-11-13build(deps): bump black from 23.10.1 to 23.11.0 in /lib/spack/docs (#40967)dependabot[bot]1-1/+1
Bumps [black](https://github.com/psf/black) from 23.10.1 to 23.11.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/23.10.1...23.11.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13Compiler.debug_flags: drop -gz (#40900)Harmen Stoppels3-4/+0
That enables compression of the debug symbols, it doesn't toggle them on or off.
2023-11-13build(deps): bump mypy from 1.6.1 to 1.7.0 in /lib/spack/docs (#41020)dependabot[bot]1-1/+1
Bumps [mypy](https://github.com/python/mypy) from 1.6.1 to 1.7.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.6.1...v1.7.0) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-10`spack deconcretize` command (#38803)Greg Becker6-25/+242
We have two ways to concretize now: * `spack concretize` concretizes only the root specs that are not concrete in the environment. * `spack concretize -f` eliminates all cached concretization data and reconcretizes the *entire* environment. This PR adds `spack deconcretize`, which eliminates cached concretization data for a spec. This allows users greater control over what is preserved from their `spack.lock` file and what is reused when not using `spack concretize -f`. If you want to update a spec installed in your environment, you can call `spack deconcretize` on it, and that spec and any relevant dependents will be removed from the lock file. `spack concretize` has two options: * `--root`: limits deconcretized specs to *specific* roots in the environment. You can use this to deconcretize exactly one root in a `unify: false` environment. i.e., if `foo` root is a dependent of `bar`, both roots, `spack deconcretize bar` will *not* deconcretize `foo`. * `--all`: deconcretize *all* specs that match the input spec. By default `spack deconcretize` will complain about multiple matches, like `spack uninstall`.
2023-11-10gromacs et al: fix ^mkl pattern (#41002)Massimiliano Culpo2-2/+6
The ^mkl pattern was used to refer to three packages even though none of software using it was depending on "mkl". This pattern, which follows Hyrum's law, is now being removed in favor of a more explicit one. In this PR gromacs, abinit, lammps, and quantum-espresso are modified. Intel packages are also modified to provide "lapack" and "blas" together.
2023-11-10env: compute env mods only for installed roots (#40997)Harmen Stoppels3-5/+9
And improve the error message (load vs unload). Of course you could have some uninstalled dependency too, but as long as it doesn't implement `setup_run_environment` etc, I don't think it hurts to attempt to load the root anyways, given that failure to do so is a warning, not a fatal error.
2023-11-10info: rework spack info command to display variants better (#40998)Todd Gamblin2-39/+180
This changes variant display to use a much more legible format, and to use screen space much better (particularly on narrow terminals). It also adds color the variant display to match other parts of `spack info`. Descriptions and variant value lists that were frequently squished into a tiny column before now have closer to the full terminal width. This change also preserves any whitespace formatting present in `package.py`, so package maintainers can make easer-to-read descriptions of variant values if they want. For example, `gasnet` has had a nice description of the `conduits` variant for a while, but it was wrapped and made illegible by `spack info`. That is now fixed and the original newlines are kept. Conditional variants are grouped by their when clauses by default, but if you do not like the grouping, you can display all the variants in order with `--variants-by-name`. I'm not sure when people will prefer this, but it makes it easier to tell that a particular variant is/isn't there. I do think grouping by `when` is the better default.
2023-11-09docs: tweak formatting of `+:` and `-:` operators (#40988)Todd Gamblin1-3/+5
Just trying to make these stand out a bit more in the docs.
2023-11-09DiHydrogen, Hydrogen, and Aluminum CachedCMakePackage (#39714)Brian Van Essen2-1/+16
2023-11-09buildcache: skip unrecognized metadata files (#40941)Scott Wittenburg2-31/+163
This commit improves forward compatibility of Spack with newer build cache metadata formats. Before this commit, invalid or unrecognized metadata would be fatal errors, now they just cause a mirror to be skipped. Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
2023-11-09Set version to 0.22.0.dev0 (#40975)Harmen Stoppels1-1/+1
2023-11-09modules: remove deprecated code and test data (#40966)Massimiliano Culpo7-106/+3
This removes a few deprecated attributes from the schema of the "modules" section. Test data for deprecated options is removed as well.
2023-11-08modules: restore exclude_implicits (#40958)Harmen Stoppels4-99/+19
2023-11-07Propagate variant across nodes that don't have that variant (#38512)Richarda Butler3-18/+71
Before this PR, variant were not propagated to leaf nodes that could accept the propagated value, if some intermediate node couldn't accept it. This PR fixes that issue by marking nodes as "candidate" for propagation and by setting the variant only if it can be accepted by the node. Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2023-11-07Ensure global command line arguments end up in args like before (#40929)Harmen Stoppels1-1/+1
2023-11-07ci: do not retry timed out build jobs (#40936)Scott Wittenburg1-1/+16
2023-11-07Update the branch for the tutorial command (#40934)Massimiliano Culpo1-1/+1
2023-11-07catch exceptions in which_string (#40935)Harmen Stoppels1-2/+5
2023-11-07ASP: targets, compilers and providers soft-preferences are only global (#31261)Massimiliano Culpo11-207/+209
Modify the packages.yaml schema so that soft-preferences on targets, compilers and providers can only be specified under the "all" attribute. This makes them effectively global preferences. Version preferences instead can only be specified under a package specific section. If a preference attribute is found in a section where it should not be, it will be ignored and a warning is printed to screen.
2023-11-07archspec: update to v0.2.2 (#40917)Massimiliano Culpo3-4/+202
Adds support for Neoverse V2
2023-11-07database: optimize query() by skipping unnecessary virtual checks (#40898)Todd Gamblin2-9/+42
Most queries will end up calling `spec.satisfies(query)` on everything in the DB, which will cause Spack to ask whether the query spec is virtual if its name doesn't match the target spec's. This can be expensive, because it can cause Spack to check if any new virtuals showed up in *all* the packages it knows about. That can currently trigger thousands of `stat()` calls. We can avoid the virtual check for most successful queries if we consider that if there *is* a match by name, the query spec *can't* be virtual. This PR adds an optimization to the query loop to save any comparisons that would trigger a virtual check for last. - [x] Add a `deferred` list to the `query()` loop. - [x] First run through the `query()` loop *only* checks for name matches. - [x] Query loop now returns early if there's a name match, skipping most `satisfies()` calls. - [x] Second run through the `deferred()` list only runs if query spec is virtual. - [x] Fix up handling of concrete specs. - [x] Add test for querying virtuals in DB. - [x] Avoid allocating deferred if not necessary. --------- Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
2023-11-06spack compiler find --[no]-mixed-toolchain (#40902)Harmen Stoppels6-72/+139
Currently there's some hacky logic in the AppleClang compiler that makes it also accept `gfortran` as a fortran compiler if `flang` is not found. This is guarded by `if sys.platform` checks s.t. it only applies to Darwin. But on Linux the feature of detecting mixed toolchains is highly requested too, cause it's rather annoying to run into a failed build of `openblas` after dozens of minutes of compiling its dependencies, just because clang doesn't have a fortran compiler. In particular in CI where the system compilers may change during system updates, it's typically impossible to fix compilers in a hand-written compilers.yaml config file: the config will almost certainly be outdated sooner or later, and maintaining one config file per target machine and writing logic to select the correct config is rather undesirable too. --- This PR introduces a flag `spack compiler find --mixed-toolchain` that fills out missing `fc` and `f77` entries in `clang` / `apple-clang` by picking the best matching `gcc`. It is enabled by default on macOS, but not on Linux, matching current behavior of `spack compiler find`. The "best matching gcc" logic and compiler path updates are identical to how compiler path dictionaries are currently flattened "horizontally" (per compiler id). This just adds logic to do the same "vertically" (across different compiler ids). So, with this change on Ubuntu 22.04: ``` $ spack compiler find --mixed-toolchain ==> Added 6 new compilers to /home/harmen/.spack/linux/compilers.yaml gcc@13.1.0 gcc@12.3.0 gcc@11.4.0 gcc@10.5.0 clang@16.0.0 clang@15.0.7 ==> Compilers are defined in the following files: /home/harmen/.spack/linux/compilers.yaml ``` you finally get: ``` compilers: - compiler: spec: clang@=15.0.7 paths: cc: /usr/bin/clang cxx: /usr/bin/clang++ f77: /usr/bin/gfortran fc: /usr/bin/gfortran flags: {} operating_system: ubuntu23.04 target: x86_64 modules: [] environment: {} extra_rpaths: [] - compiler: spec: clang@=16.0.0 paths: cc: /usr/bin/clang-16 cxx: /usr/bin/clang++-16 f77: /usr/bin/gfortran fc: /usr/bin/gfortran flags: {} operating_system: ubuntu23.04 target: x86_64 modules: [] environment: {} extra_rpaths: [] ``` The "best gcc" is automatically default system gcc, since it has no suffixes / prefixes.
2023-11-06docs: expand section about relocation, suggest padding (#40909)Harmen Stoppels1-10/+27