summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2020-08-10Removed references to BlueGene/Q in core SpackMassimiliano Culpo7-71/+3
2020-08-10Simplify the detection protocol for packagesMassimiliano Culpo7-80/+453
Packages can implement “detect_version” to support detection of external instances of a package. This is generally easier than implementing “determine_spec_details”. The API for determine_version is similar: for example you can return “None” to indicate that an executable is not an instance of a package. Users may implement a “determine_variants” method for a package. When doing external detection, executables are grouped by version and each group results in a single invocation of “determine_variants” for the associated spec. The method returns a string specifying the variants for the package. The method may additionally return a dictionary representing extra attributes for the package. These will be stored in the spec yaml and can be retrieved from self.spec.extra_attributes The Spack GCC package has been updated with an implementation of “determine_variants” which adds the following extra attributes to the package: c, cxx, fortran
2020-08-10Update packages.yaml format and support configuration updatesMassimiliano Culpo29-215/+1063
The YAML config for paths and modules of external packages has changed: the new format allows a single spec to load multiple modules. Spack will automatically convert from the old format when reading the configs (the updates do not add new essential properties, so this change in Spack is backwards-compatible). With this update, Spack cannot modify existing configs/environments without updating them (e.g. “spack config add” will fail if the configuration is in a format that predates this PR). The user is prompted to do this explicitly and commands are provided. All config scopes can be updated at once. Each environment must be updated one at a time.
2020-08-10Hotfix for config singleton initialization (#17263)Michael Kuhn1-0/+4
Fixes #17262
2020-08-09deptypes: move deptype formatting code from Spec.format to dependency.py ↵Todd Gamblin2-10/+31
(#17843) - This simplifies Spec.format somewhat - Makes code to generate deptype strings (e.g., '[blrt]') reusable
2020-08-07Fujitsu compiler: Accept alphabet as version. (#17890)Tomoki, Karatsu2-7/+7
* Fujitsu compiler: Accept alphabet as version. * Fujitsu copiler: Updated test pattern.
2020-08-05bugfix: fix spack -V with releases/latest and shallow clones (#17884)Todd Gamblin1-2/+2
`spack -V` stopped working when we added the `releases/latest` tag to track the most recent release. It started just reporting the version, even on a `develop` checkout. We need to tell it to *only* search for tags that start with `v`, so that it will ignore `releases/latest`. `spack -V` also would print out unwanted git eror output on a shallow clone. - [x] add `--match 'v*'` to `git describe` arguments - [x] route error output to `os.devnull`
2020-08-03Fix typo: yaml -> json (#17854)Harmen Stoppels1-1/+1
2020-08-03Fix docs about containers on cray (#17431)Harmen Stoppels2-7/+7
* For detecting Cray: CRAYPE_VERSION is not used, but MODULEPATH * Fix typo and write Cray with a capital
2020-08-02Buildcache create: change NoOverwriteException back to a warning as in v0.14 ↵Patrick Gartung1-3/+6
(#17832) * Change buildcache create `NoOverwriteException` back to a warning.
2020-08-02Add bindist tests for macOS.Patrick Gartung1-13/+13
2020-08-01bugfix: fix spack buildcache list --allarchTodd Gamblin3-17/+53
`spack buildcache list` was trying to construct an `Arch` object and compare it to `arch_for_spec(<spec>)`. for each spec in the buildcache. `Arch` objects are only intended to be constructed for the machine they describe. The `ArchSpec` object (part of the `Spec`) is the descriptor that lets us talk about architectures anywhere. - [x] Modify `spack buildcache list` and `spack buildcache install` to filter with `Spec` matching instead of using `Arch`.
2020-08-01architecture: make it easier to get a Spec for the default archTodd Gamblin1-2/+15
- [x] Make it easier to get a `Spec` with a proper `ArchSpec` from an `Arch` object via new `Arch.to_spec()` method. - [x] Pull `spack.architecture.default_arch()` out of `spack.architecture.sys_type()` so we can get an `Arch` instead of a string.
2020-07-31Move Python 2.6 unit tests to Github Actions (#17279)Massimiliano Culpo3-18/+38
* Run Python2.6 unit tests on Github Actions * Skip url tests on Python 2.6 to reduce waiting times * Skip foreground background tests on Python 2.6 to reduce waiting times * Removed references to Travis in the documentation * Deleted install_patchelf.sh (can be installed from repo on CentOS 6)
2020-07-28Merge tag 'v0.15.3' into developTodd Gamblin3-5/+10
2020-07-28bump version number for 0.15.3Todd Gamblin3-5/+10
2020-07-27bugfix: allow relative view paths (#17721)Greg Becker1-14/+28
Relative paths in views have been broken since #17608 or earlier. - [x] Fix by passing base path of the environment into the `ViewDescriptor`. Relative paths are calculated from this path.
2020-07-27bugfix: allow relative view paths (#17721)Greg Becker1-14/+28
Relative paths in views have been broken since #17608 or earlier. - [x] Fix by passing base path of the environment into the `ViewDescriptor`. Relative paths are calculated from this path.
2020-07-27Relocation of sbang needs to be done when the spack prefix changes even if ↵Patrick Gartung2-4/+17
the install tree has not changed. (#17455)
2020-07-27Relocate rpaths for all binaries, then do text bin replacement if the rpaths ↵Patrick Gartung1-7/+10
still exist after running patchelf/otool (#17418)
2020-07-26bugfix: don't redundantly print ChildErrors (#17709)Todd Gamblin2-5/+12
A bug was introduced in #13100 where ChildErrors would be redundantly printed when raised during a build. We should eventually revisit error handling in builds and figure out what the right separation of responsibilities is for distributed builds, but for now just skip printing. - [x] SpackErrors were designed to be printed by the forked process, not by the parent, so check if they've already been printed. - [x] update tests
2020-07-26bugfix: don't redundantly print ChildErrors (#17709)Todd Gamblin2-5/+12
A bug was introduced in #13100 where ChildErrors would be redundantly printed when raised during a build. We should eventually revisit error handling in builds and figure out what the right separation of responsibilities is for distributed builds, but for now just skip printing. - [x] SpackErrors were designed to be printed by the forked process, not by the parent, so check if they've already been printed. - [x] update tests
2020-07-24Relax architecture compatibility check (#15972)Dennis Klein2-8/+77
* Relax architecture compatibility check * Add test coverage for the spack.abi module
2020-07-24spack help --spec: add compiler flags (#17584)Adam J. Stewart1-0/+4
2020-07-24Initialize new_specs in Environment.remove() (#17592)Dmitriy1-0/+1
2020-07-23Merge tag 'v0.15.2' into developGregory Becker3-6/+10
2020-07-23bump version number for 0.15.2Gregory Becker3-6/+10
2020-07-23Revert "Add libglvnd packages/Add EGL support (#14572)" (#17682)Chuck Atkins1-94/+0
This reverts commit 573489db710c6fd315170a45d6c609db2e30e5e4.
2020-07-23cray: detect shasta os properly (#17467)Greg Becker2-1/+4
Fixes #17299 Cray Shasta systems appear to use an unmodified Sles or other Linux operating system on the backend (like Cray "Cluster" systems and unlike Cray "XC40" systems that use CNL). This updates the CNL version detection to properly note that this is the underlying OS instead of CNL and delegate to LinuxDistro.
2020-07-23environment-views: fix bug where missing recipe/repo breaks env commands ↵robo-wylder5-19/+104
(#17608) * environment-views: fix bug where missing recipe/repo breaks env commands When a recipe or a repo has been removed from Spack and an environment is active, it causes the view activation to crash Spack before any commands can be executed. Further, the error message it not at all clear in explaining the issue. This forces view regeneration to always start from scratch to avoid the missing package recipes, and defaults add_view=False in main for views activated by the `spack -e` option. * add messages to env status and deactivate Warn users that a view may be corrupt when deactivating an environment or checking its status while active. Updated message for activate. * tests for view checking Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-07-23Update fetch order to match iteration order of MirrorReference (#17572)Peter Scheibel1-3/+5
2020-07-23Reduce output verbosity with debug levels (#17546)Tamara Dahlgren15-165/+342
* switch from bool to int debug levels * Added debug options and changed lock logging to use more detailed values * Limit installer and timestamp PIDs to standard debug output * Reduced verbosity of fetch/stage/install output, changing most to debug level 1 * Combine lock log methods; change build process install to debug * Changed binary cache install messages to extraction messages
2020-07-23bugfix: use getattr for variation.prefix/suffix (#17669)eugeneswalker1-2/+2
2020-07-23bugfix: make compiler preferences slightly saner (#17590)Todd Gamblin5-19/+191
* bugfix: make compiler preferences slightly saner This fixes two issues with the way we currently select compilers. If multiple compilers have the same "id" (os/arch/compiler/version), we currently prefer them by picking this one with the most supported languages. This can have some surprising effects: * If you have no `gfortran` but you have `gfortran-8`, you can detect `clang` that has no configured C compiler -- just `f77` and `f90`. This happens frequently on macOS with homebrew. The bug is due to some kludginess about the way we detect mixed `clang`/`gfortran`. * We can prefer suffixed versions of compilers to non-suffixed versions, which means we may select `clang-gpu` over `clang` at LLNL. But, `clang-gpu` is not actually clang, and it can break builds. We should prefer `clang` if it's available. - [x] prefer compilers that have C compilers and prefer no name variation to variation. * tests: add test for which()
2020-07-23ci pipelines: activate environment without view (#17440)Harmen Stoppels1-1/+1
2020-07-23bugfix: ignore Apple's "gcc" by default (#17589)Todd Gamblin3-29/+51
Apple's gcc is really clang. We previously ignored it by default but there was a regression in #17110. Originally we checked for all clang versions with this, but I know of none other than `gcc` on macos that actually do this, so limiting to `apple-clang` should be ok. - [x] Fix check for `apple-clang` in `gcc.py` to use version detection from `spack.compilers.apple_clang`
2020-07-23buildcache: list all mirrors even if one failsScott Wittenburg1-2/+2
2020-07-23Bugfix/install missing compiler from buildcache (#17536)Scott Wittenburg2-0/+40
Ensure compilers installed from buildcache are registered.
2020-07-23Fix security issue in CI (#17545)Harmen Stoppels2-9/+1
The `spack-build-env.txt` file may contains many secrets, but the obvious one is the private signing key in `SPACK_SIGNING_KEY`. This file is nonetheless uploaded as a build artifact to gitlab. For anyone running CI on a public version of Gitlab this is a major security problem. Even for private Gitlab instances it can be very problematic. Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
2020-07-23clear mpicc and friends before each build (#17450)Sajid Ali1-0/+8
* clear mpi env vars
2020-07-23cray: detect shasta os properly (#17467)Greg Becker2-1/+4
Fixes #17299 Cray Shasta systems appear to use an unmodified Sles or other Linux operating system on the backend (like Cray "Cluster" systems and unlike Cray "XC40" systems that use CNL). This updates the CNL version detection to properly note that this is the underlying OS instead of CNL and delegate to LinuxDistro.
2020-07-23environment-views: fix bug where missing recipe/repo breaks env commands ↵robo-wylder5-19/+104
(#17608) * environment-views: fix bug where missing recipe/repo breaks env commands When a recipe or a repo has been removed from Spack and an environment is active, it causes the view activation to crash Spack before any commands can be executed. Further, the error message it not at all clear in explaining the issue. This forces view regeneration to always start from scratch to avoid the missing package recipes, and defaults add_view=False in main for views activated by the `spack -e` option. * add messages to env status and deactivate Warn users that a view may be corrupt when deactivating an environment or checking its status while active. Updated message for activate. * tests for view checking Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-07-23Update fetch order to match iteration order of MirrorReference (#17572)Peter Scheibel1-3/+5
2020-07-23util.executable.which: handle path separators like /bin/which (#17668)Greg Becker2-2/+37
* util.executable.which: handle path separators like /bin/which Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-07-23Reduce output verbosity with debug levels (#17546)Tamara Dahlgren15-165/+342
* switch from bool to int debug levels * Added debug options and changed lock logging to use more detailed values * Limit installer and timestamp PIDs to standard debug output * Reduced verbosity of fetch/stage/install output, changing most to debug level 1 * Combine lock log methods; change build process install to debug * Changed binary cache install messages to extraction messages
2020-07-22bugfix: use getattr for variation.prefix/suffix (#17669)eugeneswalker1-2/+2
2020-07-21bugfix: make compiler preferences slightly saner (#17590)Todd Gamblin5-19/+191
* bugfix: make compiler preferences slightly saner This fixes two issues with the way we currently select compilers. If multiple compilers have the same "id" (os/arch/compiler/version), we currently prefer them by picking this one with the most supported languages. This can have some surprising effects: * If you have no `gfortran` but you have `gfortran-8`, you can detect `clang` that has no configured C compiler -- just `f77` and `f90`. This happens frequently on macOS with homebrew. The bug is due to some kludginess about the way we detect mixed `clang`/`gfortran`. * We can prefer suffixed versions of compilers to non-suffixed versions, which means we may select `clang-gpu` over `clang` at LLNL. But, `clang-gpu` is not actually clang, and it can break builds. We should prefer `clang` if it's available. - [x] prefer compilers that have C compilers and prefer no name variation to variation. * tests: add test for which()
2020-07-21ci pipelines: activate environment without view (#17440)Harmen Stoppels1-1/+1
2020-07-20bugfix: ignore Apple's "gcc" by default (#17589)Todd Gamblin3-29/+51
Apple's gcc is really clang. We previously ignored it by default but there was a regression in #17110. Originally we checked for all clang versions with this, but I know of none other than `gcc` on macos that actually do this, so limiting to `apple-clang` should be ok. - [x] Fix check for `apple-clang` in `gcc.py` to use version detection from `spack.compilers.apple_clang`
2020-07-20Configuration: allow usage of command-line scopes with environments (#14608)Dr. Christian Tacke1-4/+4
Spack did not support usage of the `--config-scope` option in combination with an environment: In `lib/spack/spack/main.py`, `spack.config.command_line_scopes` is set equal to any config scopes passed by the `--config-scope` option. However, this is done after activating an environment. In the process of activating an environment, the `spack.config.config` singleton is instantiated, so later setting of `spack.config.command_line_scopes` is ignored. This commit sets command line scopes before activating an environment to ensure that they are included in the configuration. Co-authored-by: Tim Fuller <tjfulle@sandia.gov>