Commit graph

5615 commits

Author SHA1 Message Date
Harmen Stoppels
2daea9e4b4
docs: add a note about an issue being solved on develop (#32261) 2022-08-19 12:40:41 +00:00
psakievich
abf847ce82
Add messages to assertions in asp.py (#32237)
Assertions without messages if/when hit create a blank error message for users.  

This PR adds error messages to all assertions in asp.py even
if it seems unlikely they will ever be needed.
2022-08-19 14:15:25 +02:00
Massimiliano Culpo
605d72133b
spack.util.package_hash: parametrize unit-tests (#32240)
* spack.util.package_hash: parametrize unit-tests

* Fix comment
2022-08-18 18:17:43 -07:00
Massimiliano Culpo
3c6b5b8afc
Remove unused argument in test fixture (#32236)
The argument is very likely a typo, and was meant to
be given to the fixture decorator. Since the value
being passed is the default, let's just remove it.
2022-08-18 10:22:50 -07:00
Massimiliano Culpo
9d55a0436b
spec: fix typo in Spec._finalize_concretization (#32210) 2022-08-18 15:04:08 +02:00
Tom Scogland
b9e57006c9
bugfix: use cmake version from dependency (#31739)
Ensure that build tools with module-level commands in spack use
the version built as part of their build graph if one exists.
This is now also required for mesa, scons, cmake and ctest, out
of graph versions of these tools in path will not be found unless
added as an external.

This bug appeared because a new version of rocprim needs cmake
3.16, while I have 3.14 in my path I had added an external for
cmake 3.20 to the dag, but 3.14 was still used to configure
rocprim causing it to fail. As far as I can tell, all the build
tools added in build_environment.py had this problem, despite the
fact that they should have been resolving these tools by name
with a path search and find the one in the dag that way. I'm
still investigating why the path searching and Executable logic
didn't do it, but this makes three of the build systems much more
explicit, and leaves only gmake and ninja as dependencies from
out in the system while ensuring the version in the dag is used
if there is one.

The additional sqlite version is to perturb the hash of python to
work around a relocation bug which will be fixed in a subsequent
PR.
2022-08-17 17:54:17 -07:00
Peter Scheibel
546c8a3092 Add c++14 support flag for xl compiler (#31826) 2022-08-17 13:57:13 +02:00
Wouter Deconinck
8f34a3ac5c
filesystem: in recursive mtime, check only files that exist (#32175)
* filesystem: use lstat in recursive mtime

When a `develop` path contains a dead symlink, the `os.stat` in the recursive `mtime` determination trips up over it.

Closes #32165.
2022-08-16 21:06:31 +00:00
Todd Gamblin
7e1890772c bugfix: silence clingo warning about requirement_policy/3
`requirement_policy/3` is generated and may not be in Spack's inputs to Clingo.
Currently this is causing warnings like:

```
$ spack spec zlib
/global/u2/t/tgamblin/src/spack/lib/spack/spack/solver/concretize.lp:510:3-43: info: atom does not occur in any rule head:
  requirement_policy(Package,X,"one_of")

/global/u2/t/tgamblin/src/spack/lib/spack/spack/solver/concretize.lp:517:3-43: info: atom does not occur in any rule head:
  requirement_policy(Package,X,"one_of")

/global/u2/t/tgamblin/src/spack/lib/spack/spack/solver/concretize.lp:523:3-43: info: atom does not occur in any rule head:
  requirement_policy(Package,X,"any_of")

/global/u2/t/tgamblin/src/spack/lib/spack/spack/solver/concretize.lp:534:3-43: info: atom does not occur in any rule head:
  requirement_policy(Package,X,"any_of")

Input spec
--------------------------------
zlib

Concretized
--------------------------------
zlib@1.2.11%gcc@7.5.0+optimize+pic+shared arch=cray-sles15-haswell
```

- [x] Silence warning with `#defined requirement_policy/3`
2022-08-16 12:56:37 -07:00
Peter Scheibel
8281a0c5fe
Configuration: allow users to enforce hard spec constraints (#27987)
Spack doesn't have an easy way to say something like "If I build
package X, then I *need* version Y":

* If you specify something on the command line, then you ensure
  that the constraints are applied, but the package is always built
* Likewise if you `spack add X...`` to your environment, the
  constraints are guaranteed to hold, but the environment always
  builds the package
* You can add preferences to packages.yaml, but these are not
  guaranteed to hold (Spack can choose other settings)

This commit adds a 'require' subsection to packages.yaml: the
specs added there are guaranteed to hold. The commit includes
documentation for the feature.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2022-08-16 11:44:30 -07:00
Peter Scheibel
4c2f357f0e
CI/documentation: constrain pygments to avoid latest version (2.13.0) (#32163)
All PRs are failing the docs build on account of an error with
pygments. These errors coincide with a new release of pygments
(2.13.0) and restricting to < 2.13 allows the doc tests to pass,
so this commit enforces that constraint for the docs build.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2022-08-15 18:00:33 -07:00
Massimiliano Culpo
2131bd7e8c
Check that no reserved names are overridden by package recipes (#32092)
A few attribute in packages are meant to be reserved for
Spack internal use. This audit checks packages to ensure none
of these attributes are overridden.

- [x] add additional audit check
2022-08-15 16:31:10 -07:00
renjithravindrankannath
08e75f7a3e
rocm: add v5.2 for the entire stack (#31591) 2022-08-12 09:20:47 +02:00
Massimiliano Culpo
1913dc2da3
Fix performance regression with spack mirror create --all (#32005)
This PR fixes the performance regression reported in #31985 and a few
other issues found while refactoring the spack mirror create command.

Modifications:

* (Primary) Do not require concretization for
  `spack mirror create --all`
* Forbid using --versions-per-spec together with --all
* Fixed a few issues when reading specs from input file (specs were
  not concretized, command would fail when trying to mirror
  dependencies)
* Fix issue with default directory for spack mirror create not being
  canonicalized
* Add more unit tests to poke spack mirror create
* Skip externals also when mirroring environments
* Changed slightly the wording for reporting (it was mentioning
  "Successfully created" even in presence of errors)
* Fix issue with colify (was not called properly during error
  reporting)
2022-08-11 16:51:01 -07:00
Chris White
8c23545a3a
CachedCMakePackage: Port over logic from CMake build system for ldlibs and ldflags (#31750)
* port over logic from cmake build system for ldlibs and ldflags

* follow new style standards

* escape quotes

* escape quotes

* nevermind going back
2022-08-11 14:55:43 -07:00
Harmen Stoppels
ceda5fb46c
Don't set LD_LIBRARY_PATH by default on Linux (#28354)
`LD_LIBRARY_PATH` can break system executables (e.g., when an enviornment is loaded) and isn't necessary thanks to `RPATH`s.  Packages that require `LD_LIBRARY_PATH` can set this in `setup_run_environment`.

- [x] Prefix inspections no longer set `LD_LIBRARY_PATH` by default
- [x] Document changes and workarounds for people who want `LD_LIBRARY_PATH`
2022-08-11 09:33:08 -05:00
Chris Green
46c8962e91
Add missing info to diagnostic for circular provides (#32027) 2022-08-11 14:20:17 +02:00
Tamara Dahlgren
f96b54b0a6
info: properly report default when for overridden variants (#32040) 2022-08-11 14:09:53 +02:00
Richarda Butler
ef818339db
Update tests so /tmp/store can be accessed (#32003) 2022-08-10 20:53:48 +00:00
Mikael Simberg
f237e669f2
Patch /usr/bin/file to file when on nixos (#30718)
These changes make many packages build on nixos where nearly nothing
comes from /bin or /usr/bin (the only things in "system locations" are
/bin/sh and /usr/bin/env, all the rest is found through PATH).

Many configuration scripts hardcode /usr/bin/file instead of using the
one from PATH. This patches them to use file from PATH.
2022-08-10 17:54:09 +02:00
Seth R. Johnson
5d6ab9a76c
core: add a helpful long message for UnknownPackageError (#31996)
```
Error: Package 'armpl' not found.
```
is pretty useless after an upgrade unless you're a spack pro. I've
recently hit this on multiple machines. See
https://github.com/spack/spack/issues/31453 ,
https://github.com/spack/spack/issues/31489  .
2022-08-10 11:01:07 +02:00
Harmen Stoppels
857a798aed
modules: add missing Python imports (#32012) 2022-08-10 10:00:33 +02:00
Tamara Dahlgren
3320c983a7
Reduce installation noise: filter path padding and make some details debug level 2 (#31998) 2022-08-09 19:22:09 +02:00
Adam J. Stewart
d29d5462c6
PythonPackage: add --config-settings support (#31823) 2022-08-09 10:09:51 -07:00
Harmen Stoppels
f53b522572
Add base class for directory visitor (#32008) 2022-08-09 15:43:30 +02:00
Massimiliano Culpo
b61187455a
Update release procedure, keep CHANGELOG up-to-date (#31969)
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2022-08-09 12:10:49 +00:00
Massimiliano Culpo
65a4125dd0
spack mirror: skip non-concretizable specs (#31897)
fixes #31736

Catch errors when concretizing specs and report them as
debug messages. The corresponding spec is skipped.

Co-authored-by: Greg Becker <becker33@llnl.gov>
2022-08-05 19:19:51 +02:00
Massimiliano Culpo
5bf6b7e6a5
Refactor cmd/install.py for better readability (#31936)
* Extracted two functions in cmd/install.py

* Extracted a function to perform installation from the active environment

* Rename a few functions, remove args from their arguments

* Rework conditional in install_from_active_environment to reduce nesting in the function

* Extract functions to parsespecs from cli and files

* Extract functions to getuser confirmation for overwrite

* Extract functions to install specs inside and outside environments

* Rename a couple of functions

* Fix outdated comment

* Add missing imports

* Split conditional to dedent one level

* Invert check and exit early to dedent one level when requiring user confirmation
2022-08-05 12:36:33 +02:00
psakievich
ddc373b4e1
Fix doc format for code blocks: GitRef versions (#31937)
Rendering was not pretty using `console` from #31914
2022-08-05 02:01:03 +00:00
Chris Green
20de47a1e2
Move type hint to satisfy Python 3.6, 3.7 interpreters (#31932) 2022-08-04 20:48:05 +00:00
psakievich
d67ead5978
Add documentation for git refs as versions (#31914)
* document git commit versions

Include documentation for manually specifying associated known version

* document spack develop command

Co-authorerd-by: psakievich <psakiev@sandia.gov>
Co-authored-by: Gregory Becker <becker33@llnl.gov>
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2022-08-04 13:20:33 -07:00
psakievich
3b1401f292
Git Ref versions can be paired to defined versions in the spec (#30998)
The current use of git ref's as a version requires a search algorithm to pick the right matching version based on the tags in the git history of the package.

This is less than ideal for the use case where users already know the specific version they want the git ref to be associated with. This PR makes a new version syntax [package]@[ref]=[version] to allow the users to specify the exact hash they wish to use.
2022-08-04 13:17:34 -07:00
Massimiliano Culpo
0e40804cd0
Deprecate support for Python 3.5 (by removing it from CI) (#31908)
* Deprecate support for Python 3.5 (by removing it from CI)

* Restore Python 3.9
2022-08-04 15:26:56 +02:00
Massimiliano Culpo
9a48035e49 asp: refactor low level API to permit the injection of configuration
This allows writing extension commands that can benchmark
different configurations in clingo, or try different
configurations for a single test.
2022-08-03 18:01:08 -07:00
dunatotatos
ab87cac63f
Match documentation of spack create with actual behavior. (#31892) 2022-08-03 10:38:56 +00:00
Jonathon Anderson
8c50ea9dc0
spack ci rebuild: Don't install in a login shell (#31771)
On some systems the shell in login mode wipes important parts of the
environment, such as PATH. This causes the build to fail since it can't
find `spack`.

For better robustness, don't use a login shell.

In a full CI job the final spack install is run in an environment formed by scripts running in this order:

export AWS_SECRET=...                  # 1. Load environment from GitLab project variables
source spack/share/spack/setup-env.sh  # 2. Load Spack into the environment (PATH)
spack env activate -V concrete_env     # 3. Activate the concrete environment
source /etc/profile                    # 4. Bash login shell (from -l)
spack install ...
Whereas when a user launches their own container with (docker|podman) run -it, they end up running spack install in an environment formed in this order:

source /etc/bash.bashrc                # (not 4). Bash interactive shell (default with TTY)
export AWS_SECRET=...                  #~1. Manually load environment from GitLab project variables
source spack/share/spack/setup-env.sh  # 2. Load Spack into the environment (PATH)
spack env activate -V concrete_env     # 3. Activate the concrete environment
spack install ...
The big problem being that (4) has a completely different position and content (on Leap 15 and possibly other containers).

So in context, this PR removes (4) from the CI job case, leaving us with the simpler:

export AWS_SECRET=...                  # 1. Load environment from GitLab project variables
source spack/share/spack/setup-env.sh  # 2. Load Spack into the environment (PATH)
spack env activate -V concrete_env     # 3. Activate the concrete environment
spack install ...
2022-08-02 11:45:50 -07:00
Massimiliano Culpo
6e0b7959a4
Optimize reuse from buildcaches (#30806)
* database: don't sort on return from query_local

* ASP-based solver: don't build the hash-lookup dictionary twice

Building this dictionary twice and traversing all the specs
might be time-consuming for large buildcaches.
2022-08-02 11:43:14 -07:00
Massimiliano Culpo
aeac72e1e3 Style fixes 2022-08-02 10:52:52 -07:00
Massimiliano Culpo
0b832b2929 Remove line that sets non-existing attribute? 2022-08-02 10:52:52 -07:00
Massimiliano Culpo
2b3f350071 Use __slots__ for fast attribute access 2022-08-02 10:52:52 -07:00
Massimiliano Culpo
b6c8779772 Use __slots__ for fast attribute access during parsing 2022-08-02 10:52:52 -07:00
Harmen Stoppels
57e6452831
Document that reuse is higher priority than preferences in packages.yaml (#31864)
Resurrect Known issues, since users ask frequently about that.
2022-08-02 18:54:41 +02:00
Todd Gamblin
415ac29665
docs: Fix outdated pre-0.18 text on build dependencies (#31860) 2022-08-02 11:34:58 +00:00
Adam J. Stewart
22d4612d94
Add meson Python build backend (#31809) 2022-08-02 07:55:41 +02:00
Adam J. Stewart
1a61252c64
spack checksum: black compliance (#31851) 2022-08-02 07:29:30 +02:00
Peter Scheibel
c0ede0e0fa
Add c++14 support flag for xl compiler (#31826) 2022-08-01 22:51:02 +00:00
Adam J. Stewart
f018b869e6
Add support for macOS Ventura (#31812) 2022-08-01 16:45:56 +00:00
Adam J. Stewart
c98d367a91
CUDA: add new GCC conflict (#31820) 2022-08-01 14:31:07 +00:00
Todd Gamblin
ab04d697c7 tests: remove old changed_files() test
This test relied on an old version of the `flake8_package` fixture that modified
the spack repository, but it doesn't do that anymore. There are other tests for
`changed_files()` that do a better job of mocking up a git repository with
changes, so we can just delete this one.
2022-07-31 21:01:02 -07:00
Todd Gamblin
143f3f830c style: simplify arguments with --tool TOOL and --skip TOOL
`spack style` tests were annoyingly brittle because we could not easily be
specific about which tools to run (we had to use `--no-black`, `--no-isort`,
`--no-flake8`, and `--no-mypy`). We should be able to specify what to run OR
what to skip.

Now you can run, e.g.:

    spack style --tool black,flake8

or:

    spack style --skip black,isort

- [x] Remove  `--no-black`, `--no-isort`, `--no-flake8`, and `--no-mypy` args.
- [x] Add `--tool TOOL` argument.
- [x] Add `--skip TOOL` argument.
- [x] Allow either `--tool black --tool flake8` or `--tool black,flake8` syntax.
2022-07-31 13:29:20 -07:00