summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2019-07-29Typo fixes in Environments Tutorial (#12107)Adam J. Stewart1-11/+11
2019-07-29intel: Add mpicc wrapper bindir to dependent env (#12132)Greg Becker1-0/+5
2019-07-25use Excecutable instead of exec for editing licenses (#11968)Gregory Lee1-2/+21
* fix defunct editor exit in #11691
2019-07-24new command: `spack maintainers` queries package maintainersTodd Gamblin2-0/+251
- We don't currently make enough use of the maintainers field on packages, though we could use it to assign reviews. - add a command that allows maintainers to be queried - can ask who is maintaining a package or packages - can ask what packages users are maintaining - can list all maintained or unmaintained packages - add tests for the command
2019-07-24tests: Test install of unconcretized spec (#12099)Tamara Dahlgren1-0/+17
2019-07-24Fixed a name clash in the 'from_environment_diff' function (#12116)Massimiliano Culpo2-12/+18
* Added a unit test reproducing the failure in 12085 * Fixed name clash in the 'from_environment_diff' function The bug reported in #12085 stemmed from a name clash among variables, introduced during the refactor in #10753 and not caught by unit tests and reviews.
2019-07-23Typo fixes in Spack Environments docs (#12100)Adam J. Stewart1-17/+17
2019-07-23 error messages: include whole spec for "no externals found" message (#12070)Greg Becker1-2/+2
* Provide better error message when matching externals are found for package marked not buildable
2019-07-23hashing: fix caching of dependency hashes in to_node_dictGregory Becker2-11/+17
2019-07-22commands: add tests for all subcommands of `spack pkg`Todd Gamblin3-24/+271
2019-07-22commands: add `spack pkg changed` subcommand, better test supportTodd Gamblin1-10/+55
- Add `spack pkg changed` to show changed and added packages for a commit. - Make `spack pkg` support tests better.
2019-07-22gcc: support without command line tools (#11040)Denis Davydov1-0/+8
2019-07-22Fix version scraping for CRAN packages (#12021)Adam J. Stewart2-20/+20
* Fix version scraping for CRAN packages * Remove set literals
2019-07-22bugfix: env.write() should stringify Spec lists.Todd Gamblin2-2/+8
- Setting specs from lockfiles was not correctly stringifying concretized user specs. - Fix `_set_user_specs_from_lockfile` - Add some validation code to `SpecList` constructor
2019-07-22hashes: consolidate and make hashing logic more consistentPeter Josef Scheibel8-84/+254
Spack has evolved to have three types of hash functions, and it's becoming hard to tell when each one is called. Whlie we aren't yet ready to get rid of them, we can refactor them so that the code is clearer and easier to track. - Add a `hash_types` module with concise descriptors for hashes. - Consolidate hashing logic in a private `Spec._spec_hash()` function. - `dag_hash()`, `build_hash()`, and `full_hash()` all call `_spec_hash()` - `to_node_dict()`, `to_dict()`, `to_yaml()` and `to_json()` now take a `hash` parameter consistent with the one that `_spec_hash()` requires. Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2019-07-22env: environments index specs by full DAG w/build depsPeter Josef Scheibel3-30/+257
- ensure that Spec._build_hash attr is defined - add logic to compute _build_hash when it is not already computed (e.g. for specs prior to this PR) - add test to ensure that different instance of a build dep are preserved - test conversion of old env lockfile format to new format - tests: avoid view creation, DAG display in tests using MockPackage - add regression test for more-general bug also fixed by this PR - update lockfile version since the way we are maintaining hashes has changed - write out backup for version-1 lockfiles and test that
2019-07-20Add OpenMP flag for Apple Clang (#12049)Adam J. Stewart2-5/+3
2019-07-20tests: speed up tests that rely on the database fixture (#12031)Massimiliano Culpo6-61/+95
The database and mutable_database fixtures were installing and uninstalling the same specs multiple times to ensure the database for tests has the correct state. This commit optimizes the procedure by caching the state in an external directory, and copying it in instead of going through the installation or uninstallation again. The database fixture is meant not to be modified by tests. This commit enforces this invariant by making the database read-only before starting the test. * Added missing db markers to tests * Added test for uninstall_by_spec * `database` fixture now returns a read-only database * Tests that modify the DB now use `mutable_database` fixture
2019-07-20environment views: refactor stripping build deps (#12069)Greg Becker1-3/+1
2019-07-20compilers: don't raise errors for duplicate compiler definitions (#11910)Greg Becker2-1/+29
Summary: - Allow multiple definitions of compiler in compilers.yaml (use first instance) - Still print debug messages when there are duplicates, to assist users in finding this issue. Merging configs from different scopes can result in multiple compiler being present in the same configuration list. Instead of raising when there are duplicates, take the one with highest precedence. Print a debug message instead of raising, so that we can still diagnose this. We don't have a good way of warning the user about inconsistent configuration *in the same file* -- we'd need to dig into YAML file/line info for that.
2019-07-20environments: add activate/deactivate tests, work wtih `set -u`Todd Gamblin2-6/+54
- [x] Add shell tests to ensure that `spack env activate`, `spack env deactivate`, and `despacktivate` continue to work. - [x] Also ensure that activate and deactivate both work with `set -u`
2019-07-19Package inheritance: Find patch files defined in parent classes using MRO ↵Greg Becker3-1/+40
(#12051) Fixes #8908, 11844 Use Python MRO to find patch files from parent classes.
2019-07-19Fix #11240 (#11995)albestro2-1/+37
* extends mkdirs with permissions for intermediate folders Does not use os.makedirs mode parameter because its behavior is changed with Python 3.7 (it ignores it for intermediate dirs), and moreover it was not possible to set different modes for newly-created folders and leaf folder. reference: - https://bugs.python.org/issue19930 - https://docs.python.org/3.7/library/os.html#os.makedirs * comment mkdirp step easing code understanding * revert mkdir to default for package metapath since metapath is nested in package folder, there is no need to specify permissions for intermediate folders because the prefix already exists. * comment create_install_directory package modes
2019-07-18concretization: fix transient hang in python 3.5Gregory Becker1-1/+2
Bug relates to the interplay between: 1. random dict orders in python 3.5 2. bugfix in initial implementation of stacks for `_concretize_dependencies` when `self._dependencies` is empty 3. bug in coconcretization algorithm computation of split specs Result was transient hang in coconcretization. Fixed #3 (bug in coconcretization) to resolve.
2019-07-18stacks: add option to link only roots or all specs, default to allGregory Becker3-37/+134
2019-07-18stacks: refactor view descriptors into a separate objectGregory Becker2-105/+123
2019-07-18refactor: clean up Environment classGregory Becker2-74/+65
- remove redundant code in Environment.__init__ - use socket.gethostname() instead of which('hostname') - refactor updating SpecList references - refactor 'specs' literals to a single variable for default list name - use six.string_types for python 2/3 compatibility
2019-07-18bugfix: spec lists can now include multiple referencesGregory Becker2-3/+3
2019-07-18stacks: use new format string syntax in environments codeGregory Becker4-11/+12
- Change old spec expressions to use Spack's new spec formatting sytnax.
2019-07-18docs: Add documentation for views in environmentsGregory Becker2-3/+145
2019-07-18stacks: update view management for multiple/combinatorial viewsGregory Becker7-81/+404
This adds notion of a default view, other views in environments
2019-07-18stacks: environment add/remove respect multiply-defined listsGregory Becker2-7/+53
2019-07-18stacks: allow force-removing from a speclist used in a matrixGregory Becker2-12/+21
2019-07-18stacks: update environment add/remove algorithmsGregory Becker3-59/+74
2019-07-18concretization: regression test for constrain() with depsGregory Becker1-0/+1
- ensure that `Spec('foo').constrain('foo ^bar')` works - prior to stacks implementation, this constraint would have done nothing.
2019-07-18docs: initial documentation for environmentsGregory Becker2-0/+636
2019-07-18stacks: initial implementation of stacks on environmentsGregory Becker9-61/+875
- stack syntax in env schema - switch environment specs over to SpecList object - add stack functionality to environments - handle definition extensions through stack.yaml and SpecList - implement conditional definitions - tests
2019-07-17Add support for .txz and .tbz2 file extensions (#12048)Adam J. Stewart3-1/+46
2019-07-17tests: uninstall_by_spec error and rpath_args tests (#11971)Tamara Dahlgren2-0/+26
* tests: Add uninstall_by_spec error tests. These tests were originally included in PR #11797.
2019-07-17feature: Allow developers to use Spack for partial builds (#12006)Greg Becker1-1/+5
Added new diy option.
2019-07-16Ignore Modules v4 environment variables in `from_sourcing_file` (#10753)Massimiliano Culpo3-117/+311
* from_sourcing_file: fixed a bug + added a few ignored variables closes #7536 Credits for this change goes to mgsternberg (original author of #7536) The new variables being ignored are specific to Modules v4. * Use Spack Executable in 'EnvironmentModifications.from_sourcing_file' Using this class avoids duplicating lower level logic to decode stdout and handle non-zero return codes * Extracted a function that returns the environment after sourcing files The logic in `EnvironmentModifications.from_sourcing_file` has been simplified by extracting a function that returns a dictionary with the environment one would have after sourcing the files passed as argument. * Further refactoring of EnvironmentModifications.from_sourcing_file Extracted a function that sanitizes a dictionary removing keys that are blacklisted, but keeping those that are whitelisted. Blacklisting and whitelisting can be done on literals or regex. Extracted a new factory that creates an instance of EnvironmentModifications from a diff of two environments. * Added unit tests * PS1 is blacklisted + more readable names for some variables
2019-07-15Fix build_jobs exceeding number of coresMichael Kuhn1-0/+1
All documentation mentions that `build_jobs` is limited by the number of cores available in the system. This is also enforced when setting it via `--jobs`. However, when setting it via `config.yaml`, it can exceed the number of cores available, making builds run out of memory.
2019-07-15Add auto-dispatch specification to Intel packages (#11697)Glenn Johnson1-1/+33
This PR adds the ability to specify the auto-dispatch targets that can be used by the Intel compilers. The `-ax` flag will be written to the respective compiler configuration files. This ability is very handy when wanting to build optimized builds for various architectures. This PR does not set any optimization flags, however.
2019-07-15spack uninstall can uninstall specs with multiple roots (#11977)Massimiliano Culpo2-14/+52
Fixes #3690 Fixes #5637 Uninstalling dependents of a spec was relying on a traversal of the parents done by inspecting spec._dependents. This is in turn a DependencyMap that maps a package name to a single DependencySpec object (an edge in the DAG) and cannot thus model the case where a spec has multiple configurations of the same parent package installed (for example if different versions of the same Python library depend on the same Python installation). This commit works around this issue by constructing the list of specs to be uninstalled in an alternative way, and adds tests to verify the behavior. The core issue with DependencyMap is not resolved here.
2019-07-12find_libraries searches lib and lib64 before prefix (#11958)Tim Fuller2-15/+23
The default library search for a package checks the lib/ and lib64/ directories for libraries before the root prefix, in order to save time when searching for libraries provided by externals (which e.g. may have '/usr/' as their root). This moves that logic into the "find_libraries" utility method so packages implementing their own custom library search logic can benefit from it. This also updates packages which appear to be replicating this logic exactly, replacing it with a single call to "find_libraries".
2019-07-12Copy --{use,no}-cache from install to bootstrap (#11786)Oliver Breitwieser1-1/+10
2019-07-12'spack compiler add' resolves relative path to absolute path (#11792)Carson Woods1-0/+1
Fixes #11782 Spack was not properly resolving relative paths to absolute paths when a relative path was passed to "spack compiler add [PATH]". Now, if provided a relative path, the absolute path is written to compilers.yaml rather than the relative path.
2019-07-12Add template creation test, --skip-editor option (#11970)Tamara Dahlgren2-2/+63
* Add template creation test * Added --skip-editor option to "spack create": normally "spack create" opens an editor for the user after generating a package file; when the --skip-editor option is used, "spack create" only generates the package file and does not open an editor * Added --skip-editor option to bash completion
2019-07-12Fix pic_flag and test contents about Fujitsu compiler. (#11996)t-karatsu2-6/+6
2019-07-12bugfix: show dot after namespaces in `spack find -N` (#11945)Todd Gamblin2-1/+14
- Namepsaces were shown without dots after the new format strings were added. - Add a test for `spack find` to ensure that find -N shows the right output.