summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2024-04-22Fix a bug preventing to set platform= on externals (#43758)Massimiliano Culpo3-7/+20
closes #43406
2024-04-20ci.py: visit all edges (#43761)Massimiliano Culpo1-1/+1
2024-04-20compiler wrapper: prioritize spack store paths in -L, -I, -rpath (#43593)Harmen Stoppels5-102/+286
* compiler wrapper: prioritize spack managed paths in search order This commit partitions search paths of -L, -I (and -rpath) into three groups, from highest priority to lowest: 1. Spack managed directories: these include absolute paths such as stores and the stage dir, as well as all relative paths since they are relative to a Spack owned dir 2. Non-system dirs: these are for externals that live in non-system locations 3. System dirs: your typical `/usr/lib` etc. It's very easy for Spack to known the prefixes it owns, it's much more difficult to tell system dirs from non-system dirs. Before this commit Spack tried to distinguish only system and non-system dirs, and failed for very trivial cases like `/usr/lib/x/..` which comes up often, since build systems sometimes copy search paths from `gcc -print-search-dirs`. Potentially this implementation is even faster than the current state of things, since a loop over paths is replaced with an eval'ed `case ...`. * Trigger a pipeline * Revert "Trigger a pipeline" This reverts commit 5d7fa863de91c5557ef4432c0ea105ed0924a6e8. * remove redudant return statement
2024-04-20ci.py: simplify, and dont warn excessively about externals (#43759)Harmen Stoppels2-140/+40
2024-04-19environment.py: fix excessive re-reads (#43746)Harmen Stoppels3-28/+33
2024-04-19ruamel yaml: fix quadratic complexity bug (#43745)Harmen Stoppels2-1/+14
2024-04-18Windows: Update MSVC + oneAPI detection and integration (#43646)John W. Parent2-44/+58
* Later versions of oneAPI have moved, so update detection to find it in both old and new location * Remove reliance on ONEAPI_ROOT env variable when determining Fortran compiler version for %msvc * When finding a Fortran compiler for MSVC, there was logic enforcing a maximum MSVC version for a given oneAPI Fortran version. This mapping was out of date and excluding valid combinations, so has been removed (the logic now just picks the latest available oneAPI Fortran compiler for any given MSVC version).
2024-04-18Windows: add win-sdk/wgl externals during bootstrapping (#43459)John W. Parent2-0/+40
On Windows, bootstrapping logic now searches for and adds the win-sdk and wgl packages to the user's top scope as externals if they are not present. These packages are generally required to install most packages with Spack on Windows, and are only available as externals, so it is assumed that doing this automatically would be useful and avoid a mandatory manual step for each new Spack instance. Note this is the first case of bootstrapping logic modifying configuration other than the bootstrap configuration.
2024-04-18Twitter->X: Reflect the name (only) change (#43690)Tamara Dahlgren1-2/+2
2024-04-18Make sure variable is None if exception is raised. (#43707)Kyle Knoepfel1-0/+1
2024-04-18Associate condition sets from cli to root node (#43710)Massimiliano Culpo2-3/+42
This PR prevents a condition_set from having nodes that are not associated with the corresponding root node through some (transitive) dependencies.
2024-04-18asp.py: do not copyHarmen Stoppels1-21/+38
2024-04-18spec.py: early return in __str__Harmen Stoppels1-0/+5
2024-04-17Improve `spack find` output in environments (#42334)Todd Gamblin2-38/+64
This adds some improvements to `spack find` output when in environments based around some thoughts about what users want to know when they're in an env. If you're working in an enviroment, you mostly care about: * What are the roots * Which ones are installed / not installed * What's been added that still needs to be concretized So, this PR adds a couple tweaks to display that information more clearly: - [x] We now display install status next to every root. You can easily see which are installed and which aren't. - [x] When you run `spack find -l` in an env, the roots now show their concrete hash (if they've been concretized). They previously would show `-------` (b/c the root spec itself is abstract), but showing the concretized root's hash is a lot more useful. - [x] Newly added/unconcretized specs still show `-------`, which now makes more sense, b/c they are not concretized. - [x] There is a new option, `-r` / `--only-roots` to *only* show env roots if you don't want to look at all the installed specs. - [x] Roots in the installed spec list are now highlighted as bold. This is actually an old feature from the first env implementation , but various refactors had disabled it inadvertently.
2024-04-16Windows filesystem utilities (bugfix): improve SFN usage (#43645)John W. Parent2-3/+41
Reduce incidence of spurious errors by: * Ensuring we're passing the buffer by reference * Get the correct short string size from Windows API instead of computing ourselves * Ensure sufficient space for null terminator character Add test for `windows_sfn`
2024-04-16concretize.lp: fix issue with reuse of conditional variants (#43676)Harmen Stoppels2-6/+18
Currently if you request pkg +example where example is a conditional variant, and you have a pkg in the database for which the condition did not hold (so no +example nor ~example), the solver would reuse it regardless, not imposing +example. The change rules out exactly one thing: variant_set without variant_value, which in practice could only happen when not node_has_variant (i.e. when under the current package.py rules the variant's when condition did not trigger).
2024-04-15tests: Spec tests shouldn't fetch remote git repositories. (#43656)Todd Gamblin3-24/+46
Currently, some of the tests in `spec_format` and `spec_semantics` fetch the actual zlib repository when run, because they call `str()` on specs like `zlib@foo/bar`, which at least currently requires a remote git clone to resolve. This doesn't change the behavior of git versions, but it uses our mock git repo infrastructure and clones the `git-test` package instead of the *real* URL from the mock `zlib` package. This should speed up tests. We could probably refactor more so that the git tests *all* use such a fixture, but the `checks` field that unfortunately tightly couples the mock git repository and the `git_fetch` tests complicates this. We could also consider *not* making `str()` resolve git versions, but I did not dig into that here. - [x] add a mock_git_test_package fixture that sets up a mock git repo *and* monkeypatches the `git-test` package (like our git test packages do) - [x] use fixture in `test_spec_format_path` - [x] use fixture in `test_spec_format_path_posix` - [x] use fixture in `test_spec_format_path_windows` - [x] use fixture in `test_parse_single_spec`
2024-04-15build(deps): bump python-levenshtein in /lib/spack/docs (#43543)dependabot[bot]1-1/+1
Bumps [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) from 0.25.0 to 0.25.1. - [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.25.0...v0.25.1) --- updated-dependencies: - dependency-name: python-levenshtein 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-04-15Build systems: fix docstrings (#43618)Adam J. Stewart2-2/+2
2024-04-15build(deps): bump black from 24.3.0 to 24.4.0 in /lib/spack/docs (#43642)dependabot[bot]1-1/+1
Bumps [black](https://github.com/psf/black) from 24.3.0 to 24.4.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.3.0...24.4.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-04-12remove hardcoded hipcc (#43644)Chris White1-5/+0
2024-04-12solver: add an integrity constraint for virtual nodes (#43582)Massimiliano Culpo1-0/+6
Upon close inspection of clingo answer sets, in some cases we have "equivalent" (i.e. same hash for the concrete spec) duplicates that differ only because of virtual nodes that are added to the answer set, without any edge using them.
2024-04-11Allow packages to be pushed to build cache after install from source (#42423)Radim JanalĂ­k7-16/+159
This commit adds a property `autopush` to mirrors. When true, every source build is immediately followed by a push to the build cache. This is useful in ephemeral environments such as CI / containers. To enable autopush on existing build caches, use `spack mirror set --autopush <name>`. The same flag can be used in `spack mirror add`.
2024-04-11invalid compiler: warn instead of error (#43491)Greg Becker1-4/+14
2024-04-11Reuse specs built with compilers not in config (#43539)Massimiliano Culpo13-146/+311
Allow reuse of specs that were built with compilers not in the current configuration. This means that specs from build caches don't need to have a matching compiler locally to be reused. Similarly when updating a distro. If a node needs to be built, only available compilers will be considered as candidates.
2024-04-08Windows bugfix: safe rename if renaming file onto itself (#43456)John W. Parent2-5/+113
* Generally use os.replace on Windows and Linux * Windows behavior for os.replace differs when the destination exists and is a symlink to a directory: on Linux the dst is replaced and on Windows this fails - this PR makes Windows behave like Linux (by deleting the dst before doing the rename unless src and dst are the same)
2024-04-06oneapi licenses (#43451)Robert Cohn1-1/+2
2024-04-05Use correct method "append" instead of extend (#43514)John W. Parent1-2/+2
2024-04-05Improve hit-rate on buildcaches (#43272)Massimiliano Culpo15-51/+134
* Relax compiler and target mismatches The mismatch occurs on an edge. Previously it was assigned the parent priority, now it is assigned the child priority. This should make reuse from buildcaches or store more likely, since most mismatches will be counted with "reused" priority. * Optimize version badness for runtimes at very low priority We don't want to e.g. switch other attributes because we cannot reuse an old installed runtime. * Optimize runtime attributes at very low priority This is such that the version of the runtime would not influence whether we should reuse a spec. Compiler mismatches are considered for runtimes, to avoid situations where compiling foo%gcc@9 brings in gcc-runtime%gcc@13 if gcc@13 is among the available compilers * Exclude specs without runtimes from reuse This should ensure that we do not reuse specs that could be broken, as they expect the compiler to be installed in a specific place.
2024-04-05Do not acquire a write lock on the env post install if no views (#43505)Harmen Stoppels1-4/+3
2024-04-04installer.py: compute package_id from spec (#43485)Harmen Stoppels2-39/+37
The installer runs `get_dependent_ids`, which follows edges outside the subdag that's being installed, so it returns a superset of the actual dependents. That's generally fine, except that it calls `s.package` on every dependent, which triggers a package class to be instantiated, which is a lot of work. Instead, compute the package id from the spec, since that's all that's used anyways and does not trigger *lots* of slow and redundant instantiations of package objects.
2024-04-04Msvc: Determine OneAPI_ROOT from fc compiler path (#43131)John W. Parent1-1/+1
If ONEAPI_ROOT is not set as an environment variable, the current approach will raise an error. Instead we can compute the OneAPI_ROOT from the compiler paths like we do with vcvarsall.
2024-04-03remove dpcpp compiler and package (#43418)Greg Becker3-42/+2
`dpcpp` is deprecated by intel and has been superseded by `oneapi` compilers for a very long time. --------- Co-authored-by: becker33 <becker33@users.noreply.github.com>
2024-04-03Convert curl env mod method to a side effect (#43474)psakievich1-3/+4
2024-04-02RADIUSS packages update (Starting over #39613) (#41375)Adrien Bernede1-15/+27
2024-04-01Add handling of custom ssl certs in urllib ops (#42953)psakievich6-4/+163
This PR allows the user to specify a path to a custom cert file (or directory) in Spack's config: ```yaml # This is where custom certs for proxy/firewall are stored. # It can be a path or environment variable. To match ssl env configuration # the default is the environment variable SSL_CERT_FILE ssl_certs: $SSL_CERT_FILE ``` `config:ssl_certs` can be a path to a file or a directory, or it can be and environment variable that resolves to one of those. When it posts to something valid, Spack will update the ssl context to include custom certs, and fetching via `urllib` and `curl` will trust the provided certs. This should resolve many issues with fetching behind corporate firewalls. --------- Co-authored-by: psakievich <psakievich@users.noreply.github.com> Co-authored-by: Alec Scott <alec@bcs.sh>
2024-03-31Concretize `when_possible`: add failure detection and explicit message (#43202)Peter Scheibel5-7/+27
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-03-29CI Reproducer on Metal (#43411)kwryankrattiger1-2/+8
* MacOS image remove requires override syntax * Metal reproducer auto start and cross-platform
2024-03-29Don't delete "spack develop" build artifacts after install (#43424)Peter Scheibel6-10/+60
After #41373, where we stopped considering the source directory to be the stage for develop builds, we resumed *deleting* the stage even after a successful build. We don't want this for develop builds because developers need to iterate; we should keep the artifacts unless they explicitly run `spack clean`. Now: - [x] Build artifacts for develop packages are not removed after a successful install - [x] They are also not removed before an install starts, i.e. develop packages always reuse prior artifacts, if available. - [x] They can be deleted in any other context, e.g. by running `spack clean --stage`
2024-03-29spack load: remove --only argument (#42120)Massimiliano Culpo1-17/+0
The argument was deprecated in v0.21 and slated for removal in v0.22.
2024-03-28Add ability to rename environments (#43296)Kyle Knoepfel2-2/+196
2024-03-28CI: fail the rebuild command if buildcache push failed (#40045)kwryankrattiger8-273/+279
2024-03-28spack find: add options for local/upstream only (#42999)Greg Becker4-7/+58
Users requested an option to filter between local/upstream results in `spack find` output. ``` # default behavior, same as without --install-tree argument $ spack find --install-tree all # show only local results $ spack find --install-tree local # show results from all upstreams $ spack find --install-tree upstream # show results from a particular upstream or the local install_tree $ spack find --install-tree /path/to/install/tree/root ``` --------- Co-authored-by: becker33 <becker33@users.noreply.github.com>
2024-03-27Enable ASAN in ROCm packages (#42704)afzpatel1-0/+28
* Initial commit to enable ASAN * fix styling * fix styling * add asan option for hip-tensor and roctracer-dev
2024-03-27Add config option and compiler support to reuse across OS's (#42693)psakievich4-1/+32
* Allow compilers to function across compatible OS's * Add documentation in the default yaml Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com> Co-authored-by: Gregory Becker <becker33@llnl.gov>
2024-03-27Improve fixup macos rpath unit test (#43392)Massimiliano Culpo1-6/+17
Starting from XCode version 15 the linker ignores duplicate rpaths, so the libraries don't need fixing in those cases
2024-03-26Add macos-14 as a runner (Apple M1) (#42728)Massimiliano Culpo1-0/+3
* Add macos-14 as a runner (Apple M1) * Mark a test xfail We need to check later if this test needs modifications on Apple Silicon chips. --------- Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl> Co-authored-by: alalazo <alalazo@users.noreply.github.com>
2024-03-26buildcache sync: manifest-glob with arbitrary destination (#41284)kwryankrattiger2-9/+102
* buildcache sync: manifest-glob with arbitrary destination The current implementation of the --manifest-glob is a bit restrictive requiring the destination to be known by the generation stage of CI. This allows specifying an arbitrary destination mirror URL. * Add unit test for buildcache sync with manifest * Fix test and arguments for manifest-glob with override destination * Add testing path for unused mirror argument
2024-03-26Allow unit test to work on Apple M1/M2 (#43363)Massimiliano Culpo18-448/+278
* Remove a few compilers from static test data These compilers were used only in a bunch of tests, so they are added only there. * Remove clang@3.3 from unit test configuration * Parametrize compilers.yaml * Remove specially named gcc from static data The compilers are used in two tests * Remove apple-clang and macOS compilers from static data The compiler was used only in multimethod tests * Remove clang@3.5 (compiler seems to be unused) * Remove gcc@4.4.0 (compiler seems to be unused) * Exclude x86_64 tests on other architectures * Mark two tests as for clingo only * Update version syntax in compilers.yaml * Parametrize tcl tests on architectures * Parametrize lmod tests on architectures * Substitute gcc@4.5.0 with gcc@4.8.0 so it can be used on aarch64 * Fix a few issues with aarch64 and unit-tests
2024-03-25add command_line scope to help metavar (#42890)Danny McClanahan1-1/+1
It's now possible to add config on the command line with `spack -c <CONFIG_VARS> ...`, but the new `command_line` scope isn't reflected in the help output for `--scope`: ```bash > spack help config ... --scope {defaults,system,site,user}[/PLATFORM] or env:ENVIRONMENT configuration scope to read/modify ... ```