summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2024-02-16build(deps): bump pytest from 8.0.0 to 8.0.1 in /lib/spack/docs (#42733)dependabot[bot]1-1/+1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.0.0 to 8.0.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.0.0...8.0.1) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-16build(deps): bump black from 24.1.1 to 24.2.0 in /lib/spack/docs (#42629)dependabot[bot]1-1/+1
Bumps [black](https://github.com/psf/black) from 24.1.1 to 24.2.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/24.1.1...24.2.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>
2024-02-16build(deps): bump python-levenshtein in /lib/spack/docs (#42630)dependabot[bot]1-1/+1
Bumps [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) from 0.24.0 to 0.25.0. - [Release notes](https://github.com/rapidfuzz/python-Levenshtein/releases) - [Changelog](https://github.com/rapidfuzz/python-Levenshtein/blob/main/HISTORY.md) - [Commits](https://github.com/rapidfuzz/python-Levenshtein/compare/v0.24.0...v0.25.0) --- updated-dependencies: - dependency-name: python-levenshtein 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>
2024-02-16Add support for clang with OpenMP and other minor changes to oneapi build ↵Mikael Simberg1-10/+18
system (#42717) * Add support for clang in oneapi packages with OpenMP * Add fallback search for libomp in OneApi package with OpenMP threading * Add requires for the compiler when using threads=openmp in intel-oneapi-mkl * Cosmetic changes to messages in oneapi.py * Update error message in oneapi.py Co-authored-by: Robert Cohn <rscohn2@gmail.com> * Update another error message in oneapi.py Co-authored-by: Robert Cohn <rscohn2@gmail.com> * Inline helper error function in oneapi.py * Update one more error message in oneapi.py * Wrap long line in oneapi.py --------- Co-authored-by: Robert Cohn <rscohn2@gmail.com>
2024-02-16[intel-oneapi-mkl] provide omp lib for threads=openmp (#42653)Robert Cohn1-1/+44
2024-02-15allow packages to request no submodules be updated (#40409)Tim Fuller3-5/+39
* allow packages to request no submodules be updated when self.submodules is a callable function * Extend the test added in Allow more fine-grained control over what submodules are updated: part 2 #27293 to include this case * Update the type signature for the submodules arg of version() in directives.py --------- Co-authored-by: tjfulle <tjfulle@users.noreply.github.com>
2024-02-16develop: Add -b/--build-directory option to set build_directory package ↵Victor Brunini4-1/+42
attribute (#39606) * develop: Add -b/--build-directory option to set build_directory package attribute. * Update docs --------- Co-authored-by: psakievich <psakiev@sandia.gov> Co-authored-by: vbrunini <vbrunini@users.noreply.github.com>
2024-02-15Fix spack --profile|--pdb <cmd> (#42662)Scott Wittenburg1-2/+2
2024-02-15docs: fix typo (#42688)Jemma Stachelek1-1/+1
2024-02-15compilers: fixup order of arguments to satisfies (#42682)Harmen Stoppels2-16/+62
2024-02-13cmake: Enable compilation database generation (#42353)John Pennycook1-1/+22
* cmake: Enable CMAKE_EXPORT_COMPILE_COMMANDS Enabling this option causes CMake to generate a compile_commands.json file containing a compilation database that can be used to drive third-party tools. CMAKE_EXPORT_COMPILE_COMMANDS only exists for CMake >= 3.5 Exporting compilation databases is only supported for Makefile and Ninja generators, so check these conditions as well. CMAKE_EXPORT_COMPILE_COMMANDS is only enabled in supported configurations
2024-02-13PythonExtension.add_files_to_view: link non-executable/non-shebang regular ↵Harmen Stoppels1-0/+2
files (#42641)
2024-02-12audit: detect self-referential depends_on (#42456)Massimiliano Culpo1-2/+22
2024-02-12Fix multiple issues with Python in views (#42601)Harmen Stoppels2-31/+57
This fixes bugs, performance issues, and removes no longer necessary code. Short version: 1. Creating views from Python extensions would error if the Spack `opt` dir itself was in some symlinked directory. Use of `realpath` would expand those, and keying into `merge_map` would fail. 2. Creating views from Python extensions (and Python itself, potentially) could fail if the `bin/` dir contains symlinks pointing outside the package prefix -- Spack keyed into `merge_map[target_of_symlink]` incorrectly. 3. In the `python` package the `remove_files_from_view` function was broken after a breaking API change two years ago (#24355). However, the entire function body was redundant anyways, so solved it by removing it. 4. Notions of "global view" (i.e. python extensions being linked into Python's own prefix instead of into a view) are completely outdated, and removed. It used to be supported but was removed years ago. 5. Views for Python extension would _always_ copy non-symlinks in `./bin/*`, which is a big mistake, since all we care about is rewriting shebangs of scripts; we don't want to copy binaries. Now we first check if the file is executable, and then read two bytes to check if it has a shebang, and only if so, copy the entire file and patch up shebangs. The bug fixes for (1) and (2) basically consist of getting rid of `realpath` entirely, and instead simply keep track of file identifiers of files that are copied/modified in the view. Only after patching up regular files do we iterate over symlinks and check if they target one of those. If so, retarget it to the modified file in the view.
2024-02-11[oneapi]: make headers match oneapi vars.sh (#42614)Robert Cohn1-3/+11
* [oneapi]: make headers match oneapi vars.sh * update * update
2024-02-09hooks: remove 7 unused hooks (#42575)Harmen Stoppels4-120/+12
These 7 hooks were not used. - Six of them related to install phases were unused after `spack` `monitor` was removed, and the code seems to have bit rotten as there were reports they were not (always?) triggered when they should. - The post environment one was made redundant after spack install for environment started following the common code path for generating module files in #42147. It should not be a breaking change to remove, since users cannot define hooks in extensions, they would have to fork Spack. If we ever _were_ to make those hooks extendable outside of core Spack, it would also be better to start with fewer rather than more, cause everything you expose gets relied upon... Removing those also allows us to rethink what hooks we really need, and in particular it seems like we need a hook that runs post install also when the spec is inserted into the database.
2024-02-09ASP-based solver: fix issue with conditional requirements and trigger ↵Massimiliano Culpo2-0/+51
conditions (#42566) The lack of a rule to avoid enforcing requirements on multi-valued variants, when the condition activating the environment was not met, resulted in multiple optimal solutions. The fix is to prevent imposing a requirement if the when= rule activating it is not met.
2024-02-09Allow `+` in module file names (#41999)simonLeary421-1/+1
2024-02-09docs: overhaul module_file_support.rst (#42585)Harmen Stoppels1-184/+222
The section was highly outdated as it referred to old defaults, and failed to mention `hide_implicits: true`. This commit restructures it, moves some deeply nested sections a level up, and promotes `hide_implicits: true` + `autoload: direct` before talking about `exclude`.
2024-02-08spack help --spec: add @= notation (#42584)Adam J. Stewart1-0/+1
2024-02-07Windows registry: improve search efficiency & error reporting (#41720)John W. Parent2-70/+161
* Registry queries can fail due to simultaneous access from other processes. Wrap some of these accesses and retry when this may be the cause (the generated exceptions don't allow pinpointing this as the reason, but we add logic to identify cases which are definitely unrecoverable, and retry if it is not one of these). * Add make recursion optioal for most registry search functions; disable recursive search in case where it was originally always recursive.
2024-02-03Environment views: dependents before dependencies, resolve identical file ↵Harmen Stoppels6-28/+146
conflicts (#42350) Fix two separate problems: 1. We want to always visit parents before children while creating views (when it comes to ignoring conflicts, the first instance generated in the view is chosen, and we want the parent instance to have precedence). Our preorder traversal does not guarantee that, but our topological- order traversal does. 2. For copy style views with packages x depending on y, where <x-prefix>/foo is a symlink to <y-prefix>/foo, we want to guarantee that: * A conflict is not registered * <y-prefix>/foo is chosen (otherwise, the "foo" symlink would become self-referential if relocated relative to the view root) Note that * This is an exception to [1] (in this case the dependency instance overrides the dependent) * Prior to this change, if "foo" was ignored as a conflict, it was possible to create this self-referential symlink Add tests for each of these cases
2024-02-02build(deps): bump python-levenshtein in /lib/spack/docs (#42440)dependabot[bot]1-1/+1
Bumps [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) from 0.23.0 to 0.24.0. - [Release notes](https://github.com/rapidfuzz/python-Levenshtein/releases) - [Changelog](https://github.com/rapidfuzz/python-Levenshtein/blob/main/HISTORY.md) - [Commits](https://github.com/rapidfuzz/python-Levenshtein/compare/v0.23.0...v0.24.0) --- updated-dependencies: - dependency-name: python-levenshtein 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>
2024-02-02Extract low-level clingo wrappers from spack.solver.asp (#42429)Massimiliano Culpo2-218/+294
2024-02-02Update packages_yaml.rst (#42438)Matthew Whitlock1-4/+5
Fix an incorrect example.
2024-02-01docs: git version section title + highlight issues (#42398)Harmen Stoppels5-10/+14
* basic_usage: section title for git versions * improve highlighting by using a comment instead of invalid syntax
2024-02-01Lua: better specify providers in LuaPackage base class (#42392)Alberto Invernizzi1-9/+6
2024-02-01Environments: Add support for including views (#42250)Tamara Dahlgren28-281/+587
* Environments: Add support for including views (take 2) * schema type hint fixes
2024-01-31environment/view: small cleanup (#42395)Harmen Stoppels2-9/+6
2024-01-31spack reproduce-build: accept URLs from web interface (#42261)Harmen Stoppels2-7/+83
Sometimes the logs are too long and the copy & paste command is not shown. In that case I'd like to just copy the failing GitLab job URL in my browser to `spack reproduce-build <url>`.
2024-01-31ASP-based solver: decouple setup phase from `clingo.backend` (#41952)Massimiliano Culpo1-135/+133
Currently, the `SpackSolverSetup` and the `PyclingoDriver` are more coupled than necessary: 1. The driver object needs a setup object to be injected during a solve, 2. And the setup object will get a reference back to the driver This design is necessary because we use the low-level `clingo.backend` interface to setup our problem. This interface though is meant to bypass the grounder and add symbols directly in the grounded table, which is a feature we don't currently use. The PR simplifies the encoding by having the setup object returning the problem-specific facts / rules as a list of strings, and the driver ingesting them using the [clingo.Control.add](https://potassco.org/clingo/python-api/5.6/clingo/control.html#clingo.control.Control.add) method. This removes any use of the low level interface. Using this encoding makes it easy to hash the output of the setup phase, since it is returned as a string.
2024-01-31environments: `develop` paths were not getting expanded (#34986)Alberto Invernizzi2-2/+40
2024-01-31CI: Add OIDC capability for deprecated CI (#42371)kwryankrattiger1-1/+1
This "breaks" the deprecated schema by allowing unknown attributes to the attributes section of the job types. The breaking change here is that deprecated stacks will no longer ignore attributes that are unknown but rather assume the new CI schema behavior of injecting them into the generated CI configuration. This change is required to secure authentication in Spack CI.
2024-01-31build(deps): bump urllib3 from 2.1.0 to 2.2.0 in /lib/spack/docs (#42384)dependabot[bot]1-1/+1
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.1.0 to 2.2.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.1.0...2.2.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>
2024-01-31compression.py: refactor + bug fix (#42367)Harmen Stoppels4-385/+289
Improve naming, so it's clear file "extensions" are not taken in the `PurePath(path).suffix` sense as the original function name suggests, but rather that the files are opened and their magic bytes are classified. Add type hints. Fix a bug where `stream.read(num_bytes)` was run on the compressed stream instead of the uncompressed stream, which can potentially break detection of tar.bz2 files. Ensure that when peeking into streams for magic bytes, they are reset to their original position upon return. Use new API in `spack logs`.
2024-01-30elf: relocate PT_INTERP (#42318)Harmen Stoppels7-208/+306
Relocation of `PT_INTERP` in ELF files already happens to work from long to short path, thanks to generic binary relocation (i.e. find and replace). This PR improves it: 1. Adds logic to grow `PT_INTERP` strings through patchelf (which is only useful if the interpreter and rpath paths are the _only_ paths in the binary that need to be relocated) 2. Makes shrinking `PT_INTERP` cleaner. Before this PR when you would use Spack-built glibc as link dep, and relocate executables using its dynamic linker, you'd end up with ``` $ file exe exe: ELF 64-bit LSD pie executable, ..., interpreter /////////////////////////////////////////////////path/to/glibc/lib/ld-linux.so ``` With this PR you get something sensible: ``` $ file exe exe: ELF 64-bit LSD pie executable, ..., interpreter /path/to/glibc/lib/ld-linux.so ``` When Spack cannot modify the interpreter or rpath strings in-place, it errors out without modifying the file, and leaves both tasks to patchelf instead. Also add type hints to `elf.py`.
2024-01-30MSVC: Broken ifx needs new $TMP (#42155)John W. Parent1-1/+11
Certain versions of ifx (the majority of those available) have an issue where they are not compatible with TMP directories with dot chars This precludes their use with CMake. Remap TMP to point to the stage directory rather than whatever the TMP default is
2024-01-30build(deps): bump pytest from 7.4.4 to 8.0.0 in /lib/spack/docs (#42361)dependabot[bot]1-1/+1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.4 to 8.0.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/7.4.4...8.0.0) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-30build(deps): bump black from 24.1.0 to 24.1.1 in /lib/spack/docs (#42360)dependabot[bot]1-1/+1
Bumps [black](https://github.com/psf/black) from 24.1.0 to 24.1.1. - [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/24.1.0...24.1.1) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-30"spack logs": print log files for packages (either partially built or ↵Peter Scheibel2-0/+197
installed) (#42202)
2024-01-29traverse: w/o deptype (#42345)Harmen Stoppels3-14/+25
Add the empty deptype `spack.deptypes.NONE`. Test the case `traverse_nodes(deptype=spack.deptypes.NONE)` to not traverse dependencies, only de-duplicate. Use the construct in environment views that otherwise would branch on whether deps are enabled or not.
2024-01-29filesystem: cleanup (#42342)Harmen Stoppels4-253/+116
Type hints and removal of unused code
2024-01-29containers: switch to quay.io/almalinuxorg images (#42193)Wouter Deconinck1-4/+4
2024-01-29build(deps): bump black from 23.12.1 to 24.1.0 in /lib/spack/docs (#42328)dependabot[bot]1-1/+1
Bumps [black](https://github.com/psf/black) from 23.12.1 to 24.1.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.12.1...24.1.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-27Apply black 2024 style to Spack (#42317)Adam J. Stewart15-77/+49
2024-01-26Run config audits in CI, add a new audit to detect wrongly named external ↵Massimiliano Culpo1-9/+33
specs (#42289)
2024-01-26Merge `virtuals=` from duplicate dependencies (#42281)Massimiliano Culpo2-8/+25
Previously, for abstract specs like: ``` foo ^[virtuals=a] bar ^[virtuals=b] bar ``` the second requirement was silently discarded on concretization. Now they're merged, and the abstract spec is equivalent to: ``` foo ^[virtuals=a,b] bar ```
2024-01-25CMake: disable Package Registry (#42149)Alberto Invernizzi2-11/+45
CMake may write and read from `~/.cmake` through `export(...)` and read `find_package(...)` respectively. We don't want this as it may influence the build in a non-deterministic way, so disable it for all versions of `cmake`.
2024-01-25Fix using sticky variants in externals (#42253)Greg Becker2-8/+29
2024-01-25spack find mpiexec for impi (#42284)Robert Cohn1-0/+2