Commit graph

18798 commits

Author SHA1 Message Date
Tom Scogland
c1e4f3e131
Refactor flake8 handling and tool compatibility (#20376)
This PR does three related things to try to improve developer tooling quality of life:

1. Adds new options to `.flake8` so it applies the rules of both `.flake8` and `.flake_package` based on paths in the repository.
2. Adds a re-factoring of the `spack flake8` logic into a flake8 plugin so using flake8 directly, or through editor or language server integration, only reports errors that `spack flake8` would.
3. Allows star import of `spack.pkgkit` in packages, since this is now the thing that needs to be imported for completion to work correctly in package files, it's nice to be able to do that.

I'm sorely tempted to sed over the whole repository and put `from spack.pkgkit import *` in every package, but at least being allowed to do it on a per-package basis helps.

As an example of what the result of this is:

```
~/Workspace/Projects/spack/spack develop* ⇣
❯ flake8 --format=pylint ./var/spack/repos/builtin/packages/kripke/package.py
./var/spack/repos/builtin/packages/kripke/package.py:6: [F403] 'from spack.pkgkit import *' used; unable to detect undefined names
./var/spack/repos/builtin/packages/kripke/package.py:25: [E501] line too long (88 > 79 characters)

~/Workspace/Projects/spack/spack refactor-flake8*
1 ❯ flake8 --format=spack ./var/spack/repos/builtin/packages/kripke/package.py

~/Workspace/Projects/spack/spack refactor-flake8*
❯ flake8 ./var/spack/repos/builtin/packages/kripke/package.py
```

* qa/flake8: update .flake8, spack formatter plugin

Adds:
* Modern flake8 settings for per-path/glob error ignores, allows
  packages to use the same `.flake8` as the rest of spack
* A spack formatter plugin to flake8 that implements the behavior of
  `spack flake8` for direct invocations.  Makes integration with
  developer tooling nicer, linting with flake8 reports only errors that
  `spack flake8` would report.  Using pyls and pyls-flake8, or any other
  non-format-dependent flake8 integration, now works with spack's rules.

* qa/flake8: allow star import of spack.pkgkit

To get working completion of directives and spack components it's
necessary to import the contents of spack.pkgkit.  At the moment doing
this makes flake8 displeased.  For now, allow spack.pkgkit and spack
both, next step is to ban spack * and require spack.pkgkit *.

* first cut at refactoring spack flake8

This version still copies all of the files to be checked as befire, and
some other things that probably aren't necessary, but it relies on the
spack formatter plugin to implement the ignore logic.

* keep flake8 from rejecting itself

* remove separate packages flake8 config

* fix failures from too many files

I ran into this in the PR converting pkgkit to std.  The solution in
that branch does not work in all cases as it turns out, and all the
workarounds I tried to use generated configs to get a single invocation
of flake8 with a filename optoion to work failed.  It's an astonishingly
frustrating config option.

Regardless, this removes all temporary file creation from the command
and relies on the plugin instead.  To work around the huge number of
files in spack and still allow the command to control what gets checked,
it scans files in batches of 100.  This is a completely arbitrary number
but was chosen to be safely under common line-length limits.  One
side-effect of this is that every 100 files the command will produce
output, rather than only at the end, which doesn't seem like a terrible
thing.
2020-12-22 09:28:46 -08:00
Massimiliano Culpo
cde6ffe369 concretizer: optimize loop on compiler version
Similar to the optimization on platform
2020-12-22 00:02:54 -08:00
Massimiliano Culpo
635c6c29fa concretizer: optimized loop on node platforms
We can speed-up the computation by avoiding a
double loop in a cardinality constraint and
enforcing the rule instead as an integrity
constraint.
2020-12-22 00:02:54 -08:00
Paul
32f0bf9057
Corrected Go dependent build environment. (#18493)
* Dependencies of Go will now correctly set the GOPATH for the
  appropriate spec to avoid using the user's default path.
* Bumped version to latest releases(1.15.6 & 1.14.13).
2020-12-21 19:47:53 -06:00
Vicente Bolea
a9925036df
ParaView: add new ParaView-5.9.0-RC3 release (#20500)
Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-12-21 19:46:01 -06:00
Todd Gamblin
1d8aa34f52 clingo: prefer master branch
Most people installing `clingo` with Spack are going to be doing it to
use the new concretizer, and that requires the `master` branch.

- [x] make `master` the default so we don't have to keep telling people
  to install `clingo@master`. We'll update the preferred version when
  there's a new release.
2020-12-21 16:02:09 -08:00
downloadico
4654a8a557
New package: PMERGE (#20390) 2020-12-21 12:55:22 -08:00
Karen C. Tsai
4a6269319e
upstream dependencies changes (#20493)
* update dependencies and cmake options

* add blank line
2020-12-21 12:20:49 -07:00
amd-toolchain-support
e73a65db9a Added support for AOCC compiler 2020-12-21 00:27:37 -08:00
Dr. Christian Tacke
5df6418b64
geant4-vmc: Add version 5-3, switch to https (#20379) 2020-12-20 10:47:53 -06:00
Massimiliano Culpo
19fba3ae06 concretizer: fix failing unit tests 2020-12-20 07:00:46 -08:00
Massimiliano Culpo
72569a0198 concretizer: emit facts for integrity constraints 2020-12-20 07:00:46 -08:00
Massimiliano Culpo
e644255770 concretizer: emit facts for constraints on imposed dependencies 2020-12-20 07:00:46 -08:00
Massimiliano Culpo
d8dc4b141e concretizer: avoid redundant grounding on dependency types 2020-12-20 07:00:46 -08:00
Todd Gamblin
bb78a73ed3 concretizer: move conditional dependency logic into concretize.lp
Continuing to convert everything in `asp.py` into facts, make the
generation of ground rules for conditional dependencies use facts, and
move the semantics into `concretize.lp`.

This is probably the most complex logic in Spack, as dependencies can be
conditional on anything, and we need conditional ASP rules to accumulate
and map all the dependency conditions to spec attributes.

The logic looks complicated, but essentially it accumulates any
constraints associated with particular conditions into a fact associated
with the condition by id. Then, if *any* condition id's fact is True, we
trigger the dependency.

This simplifies the way `declared_dependency()` works -- the dependency
is now declared regardless of whether it is conditional, and the
conditions are handled by `dependency_condition()` facts.
2020-12-20 07:00:46 -08:00
Todd Gamblin
d7fe2d5678 concretizer: spec_clauses should traverse dependencies
There are currently no places where we do not want to traverse
dependencies in `spec_clauses()`, so simplify the logic by consolidating
`spec_traverse_clauses()` with `spec_clauses()`.
2020-12-20 07:00:46 -08:00
Todd Gamblin
87a9e1c951 concretizer: pull _develop_specs_from_env out of main setup loop 2020-12-20 07:00:46 -08:00
Todd Gamblin
950fb0948b concretizer: add #defined statements to avoid warnings.
`version_satisfies/2` and `node_compiler_version_satisfies/3` are
generated but need `#defined` directives to avoid " info: atom does not
occur in any rule head:" warnings.
2020-12-20 07:00:46 -08:00
Massimiliano Culpo
4901728c5b
asp: memoize the list of all target_specs to speed-up setup phase (#20473)
* asp: memoize the list of all target_specs to speed-up setup phase

* asp: memoize using a cache per solver object
2020-12-19 07:07:22 -08:00
Tom Scogland
71c77fa8fa
minimal zsh completion (#20253)
Since zsh can load bash completion files natively, seems reasonable to just turn this on.
The only changes are to switch from `type -t` which zsh doesn't support to using `type`
with a regex and adding a new arm to the sourcing of the completions to allow it to work
for zsh as well as bash.

Could use more bash/dash/etc testing probably, but everything I've thought to try has
worked so far.

Notes:
* unit-test zsh support, fix issues
Specifically fixed word splitting in completion-test, use a different
method to apply sh emulation to zsh loaded bash completion, and fixed
an incompatibility in regex operator quoting requirements.

* compinit now ignores insecure directories
Completion isn't meant to be enabled in non-interactive environments, so
by default compinit will ask the user if they want to ignore insecure
directories or load them anyway.  To pass the spack unit tests in GH
actions, this prompt must be disabled, so ignore explicitly until a
better solution can be found.

* debug functions test also requires bash emulation
COMP_WORDS is a bash-ism that zsh doesn't natively support, turn on
emulation for just that section of tests to allow the comparison to
work.  Does not change the behavior of the functions themselves since
they are already pinned to sh emulation elsewhere.

* propagate change to .in file

* fix comment and update script based on .in
2020-12-18 17:26:15 -08:00
Jan Ciesko
517413c125
Add spack test support for Qthreads (#20437) 2020-12-18 13:38:40 -08:00
eugeneswalker
2314a20fbd
slepc: set --with-arpack-dir correctly (#20463) 2020-12-18 11:03:26 -08:00
Chuck Atkins
8755d577c9
mesa: drop use of shared variant (#20453)
Mesa no longer supports building static libraries so it doesn't
even make sense to add the variant.
2020-12-18 09:58:51 -06:00
Scott Wittenburg
594512bdb3
ci: fixes for compiler bootstrapping (#17563)
This PR addresses a number of issues related to compiler bootstrapping.

Specifically:
1. Collect compilers to be bootstrapped while queueing in installer
Compiler tasks currently have an incomplete list in their task.dependents,
making those packages fail to install as they think they have not all their
dependencies installed. This PR collects the dependents and sets them on
compiler tasks.

2. allow boostrapped compilers to back off target
Bootstrapped compilers may be built with a compiler that doesn't support
the target used by the rest of the spec.  Allow them to build with less
aggressive target optimization settings.

3. Support for target ranges
Backing off the target necessitates computing target ranges, so make Spack
handle those properly.  Notably, this adds an intersection method for target
ranges and fixes the way ranges are satisfied and constrained on Spec objects.

This PR also:
- adds testing
- improves concretizer handling of target ranges

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Gregory Becker <becker33@llnl.gov>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-12-18 02:05:06 -08:00
eugeneswalker
13e4d9ee3a
py-greenlet: add version 0.4.17 (#20457)
* py-greenlet: add version 0.4.17

* py-greenlet depends on python for build, link, and run
2020-12-17 19:38:43 -08:00
Chuck Atkins
c5b4a667d3
meson: Add cmake runtime dependency (#20449) 2020-12-17 16:56:39 -05:00
Harmen Stoppels
a879c875dd
New package: cray-mpich (#20076)
Cray's version of MPICH uses a different versioning system than
MPICH, so it has been split into its own package. It is an
external-only package (always provided by the system, never
installed by Spack).
2020-12-17 13:13:21 -08:00
eugeneswalker
105ee757bc
superlu depends on tcsh for build (#20381) 2020-12-17 12:26:18 -08:00
Dr. Christian Tacke
e858bb2961
cmake: Add Version 3.19.2 (#20448) 2020-12-17 20:25:51 +01:00
psakievich
093a247b25
View location resolve environment variables (#20420) 2020-12-17 10:25:08 -08:00
manifest
888c456ece
add py-gemini (#16950)
* py-gemini +

* dep py-setuptools +

* deps grabix+

* py-gemini dep version fix

* grabix compiler fix

* Update package.py

Typo correction
2020-12-17 12:17:01 -06:00
takanori-ihara
a0843e9634
biobambam2: new package at v2.0.177 (#20392) 2020-12-17 17:47:01 +01:00
Adam J. Stewart
120e5cdcc4
pangolin: add new package (#20388) 2020-12-17 17:45:26 +01:00
Ryan S. Elliott
12378db0d8
kim-api: added v2.2.1 (#20382) 2020-12-17 17:44:33 +01:00
ketsubouchi
4677674667
suite-sparse: add flags for Fujitsu compilers (#20393) 2020-12-17 17:40:01 +01:00
Tamara Dahlgren
b7d9e269ef
docs: add single node concurrent build example (#20416) 2020-12-17 17:23:55 +01:00
Adam J. Stewart
860a945de6
OpenCV: add versions up to v4.5.0, variants (#20378) 2020-12-17 17:06:28 +01:00
Michael Kuhn
c79647d66b
flexi: new package (#20313) 2020-12-17 17:02:49 +01:00
Michael Kuhn
8f8c9b34a9
openblas: added v0.3.13 (#20357) 2020-12-17 17:01:49 +01:00
Ryan Mast
3d7fe28966
mbedtls: added v2.16.9 (#20422) 2020-12-17 16:55:20 +01:00
Adam J. Stewart
b86743c879
DBoW2: add new package (#20387) 2020-12-17 16:54:34 +01:00
Hadrien G
e61fb96e96
acts: added v3.00.0 (#20402) 2020-12-17 14:27:06 +01:00
Massimiliano Culpo
076ea2fe4c
arm: added new package (#18019)
The package is at the moment not installable, just detectable.
2020-12-17 10:02:36 +01:00
Massimiliano Culpo
045afc8788
xlc, xlf: added new packages (#18154) 2020-12-17 10:00:06 +01:00
Massimiliano Culpo
76f1548fe2
unit-tests: ensure that installed packages can be reused (#20307)
refers #20292

Added a unit test that ensures we can reuse installed
packages even if in the repository variants have been
removed or added.
2020-12-17 00:31:59 -08:00
Ryan Mast
9692017d59
help2man: update to 1.47.16 (#20397) 2020-12-17 09:07:56 +01:00
Ryan Mast
e0e6a0199e
sundials: add versions up to 5.6.1 (#20436) 2020-12-16 18:26:47 -08:00
Ben Cowan
ed740fb654
Added PyAMG package. (#20414) 2020-12-16 17:58:41 -08:00
Ryan Mast
2bc5516a95
cli11: add new package (#20398) 2020-12-16 15:26:37 -08:00
Adam J. Stewart
826cd07cf7
PythonPackage: add import module smoke tests (#20023) 2020-12-16 15:15:03 -08:00