summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-01-04Multi-valued variants: better support for combinations (#9481)Massimiliano Culpo24-89/+585
This enforces conventions that allow for correct handling of multi-valued variants where specifying no value is an option, and adds convenience functionality for specifying multi-valued variants with conflicting sets of values. This also adds a notion of "feature values" for variants, which are those that are understood by the build system (e.g. those that would appear as configure options). In more detail: * Add documentation on variants to the packaging guide * Forbid usage of '' or None as a possible variant value, in particular as a default. To indicate choosing no value, the user must explicitly define an option like 'none'. Without this, multi-valued variants with default set to None were not parsable from the command line (Fixes #6314) * Add "disjoint_sets" function to support the declaration of multi-valued variants with conflicting sets of options. For example a variant "foo" with possible values "a", "b", and "c" where "c" is exclusive of the other values ("foo=a,b" and "foo=c" are valid but "foo=a,c" is not). * Add "any_combination_of" function to support the declaration of multi-valued variants where it is valid to choose none of the values. This automatically defines "none" as an option (exclusive with all other choices); this value does not appear when iterating over the variant's values, for example in "with_or_without" (which constructs autotools option strings from variant values). * The "disjoint_sets" and "any_combination_of" methods return an object which tracks the possible values. It is also possible to indicate that some of these values do not correspond to options understood by the package's build system, such that methods like "with_or_without" will not define options for those values (this occurs automatically for "none") * Add documentation for usage of new functions for specifying multi-valued variants
2019-01-04mvapich2: add missing zlib dependency (#10254)Michael Kuhn1-0/+1
2019-01-04Added package osmctools (#10249)Elizabeth Fischer1-0/+23
* Added package osmctools * Simplified Removed functions that did the same as existing defaults * flake8
2019-01-04Add tests for expanding/non-expanding resourcesPeter Josef Scheibel1-3/+92
2019-01-04stage: fix resources being deleted from local cache (#10152)Michael Kuhn1-4/+9
Non-expanded resources were being deleted from the cache on account of two behaviors: * ResourceStage was moving files rather than copying them, and uses "os.path.realpath" to resolve symlinks * CacheFetchStrategy creates a symlink to a cached resource rather than copying it This alters the first behavior: ResourceStage now copies the file rather than moving it.
2019-01-04Fix download path, the existing one has been removed from nvidia's site (#10253)Jimmy Tang1-1/+1
2019-01-03openssl: add location of system certificates for SUSE Linux (#10242)Neil Flood1-1/+3
2019-01-03Add missing code block (#10243)Ben Zwick1-0/+2
Otherwise the `--` in `--dot` is rendered as a single en-dash.
2019-01-02patch: split up fetch and clean into separate methods (#10150)Michael Kuhn5-50/+71
"mirror create" was invoking a package's do_patch method in order to retrieve and archive URL patches. If a package implements a "patch" method, this is also called as part of do_patch; this failed when the package-specific implementation referred to environment variables that are only available at the time the package is built (e.g. "spack_cc"). This change introduces fetch and clean methods for patches. They are no-ops for FilePatch but perform the appropriate actions for UrlPatch. This allows "mirror create" to invoke do_fetch, which does not call the package's patch method.
2019-01-02Catch2: v2.5.0 (#10237)Axel Huebl1-0/+1
Add the 2.5.0 release of catch2.
2019-01-02petsc4py: new versions (up to 3.10.0) and update website (#10238)Ben Zwick1-5/+15
2019-01-02slepc4py: new versions (up to 3.10.1) and update website (#10239)Ben Zwick1-3/+20
2019-01-01PARALLEL-NETCDF: Update new version and location (#10172)Greg Sjaardema1-6/+19
* PARALLEL-NETCDF: Update new version and location PnetCDF-1.11.0 is released. Also, the canonical download area has been changed and they are now using git, so can also provide a develop and master checkout. One issue is that they changed the name of the tar files, so 1.11.0 needs special handling (and future versions will also). All checksums at new location match the checksums from the old location. * Address concerns in review Added a `url_for_version` function to handle the name change in the tar files at version 1.11.0 and later. Updated description to match current shown on website. Updated `homepage` setting since it has recently moved. * Address issues in second review
2019-01-02Removed an extra comma after a dict literal (#10236)Massimiliano Culpo1-1/+1
The extra comma was turning a dict into a tuple, and caused errors during validation of the schema.
2019-01-01FEniCS: workaround concretization issue with PETSc (#10235)Ben Zwick1-1/+3
2019-01-01Add list_url for r-readr, finding old versions (#10231)George Hartzell1-0/+1
r-tidyverse needs r-readr@1.1.1, r-reardr needs a list_url so that it can find it.
2019-01-01README: LLNL release number and SPDX id don't need to be monospaced.Todd Gamblin1-2/+2
2019-01-01flake8: fix flake8 issues with invalid escapesTodd Gamblin22-148/+161
- in many files, regular strings were used in places where raw strings should've been used. - convert these to raw strings and get rid of new flake8 errors
2019-01-01copyright: update license headers for 2013-2019 copyright.Todd Gamblin3526-3535/+3531
2019-01-01license: license command prints sorted, non-redundant resultsTodd Gamblin1-3/+7
- spack license command now ignores symlinks - spack license list-files now prints sorted output, and checks for files we've already seen.
2019-01-01Improve validation of modules.yaml (#9878)Massimiliano Culpo8-169/+269
This PR improves the validation of `modules.yaml` by introducing a custom validator that checks if an attribute listed in `properties` or `patternProperties` is a valid spec. This new check applied to the test case in #9857 gives: ```console $ spack install szip ==> Error: /home/mculpo/.spack/linux/modules.yaml:5: "^python@2.7@" is an invalid spec [Invalid version specifier] ``` Details: * Moved the set-up of a custom validator class to spack.schema * In Spack we use `jsonschema` to validate configuration files against a schema. We also need custom validators to enforce writing default values within "properties" or "patternProperties" attributes. * Currently, validators were customized at the place of use and with the recent introduction of environments that meant we were setting-up and using 2 different validator classes in two different modules. * This commit moves the set-up of a custom validator class in the `spack.schema` module and refactors the code in `spack.config` and `spack.environments` to use it. * Added a custom validator to check if an attribute is a valid spec * Added a custom validator that can be used on objects, which yields an error if the attribute is not a valid spec. * Updated the schema for modules.yaml * Updated modules.yaml to fix a few inconsistencies: - a few attributes were not tested properly using 'anyOf' - suffixes has been updated to also check that the attribute is a spec - hierarchical_scheme has been updated to hierarchy * Removed $ref from every schema * $ref is not composable or particularly legible * Use python dicts and regular old variables instead.
2018-12-31express: new version, use tags and fix gcc@6.0.0: (#10230)George Hartzell2-4/+30
* express: new version, use tags and fix gcc@6.0.0: Express fails to build with gcc@6.0.0:. The debian project [has a fix](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811859) but they don't seem to have pushed it upstream. I've opened an issue and a PR in eXpress repo, but eXpress isn't actively developed, so I'm fixing it here too. Since the Spack package was created, the eXpress team tagged their releases. I've updated the package to use the tags. Version 1.5.1 used to be known as 2015-11-29 (same commit). 1.5.2 is new(er). * Make flake8 happ{y,ier}
2018-12-31aspell builds with newer gcc's (#10227)George Hartzell2-0/+38
Apply fix from aspell issue (519) for a pointer dereference bug that newer versions of gcc won't let slip past. There hasn't been a release that includes the fix, this applies the change to the latest release.
2018-12-31fastx-toolkit builds with newer gcc's (#10228)George Hartzell2-1/+13
There's a missing break in a switch statement that newer gcc's dislike. Our #4696 simply disallowed newer gcc's. This fixes the problem instead. It's been [PR'ed upstream](https://github.com/agordon/fastx_toolkit/pull/22). Tested with gcc@5.5.0 and gcc@8.2.0 on CentOS.
2018-12-31bamutil builds with newer gcc's (#10229)George Hartzell5-0/+100
The most recent release of bamutil that we support uses an embedded copy of libStatGen that has several issues that keep it from building with newer releases of gcc. They've all been fixed upstream and the latest release of bamutil would pick them up if/when we support it. The build process has changed though, plus my team needs *this* version. This commit backports those fixes.
2018-12-31ds: new package at 9.8.0 (#9852)Justin Stanley1-0/+58
* ds: new package at 9.8.0rc6 * ds: move patches to patch func * ds: use built-in configure phase, remove autoreconf skip * ds: revert to stable 9.8.0 * ds: remove unnecessary dep types * ds: make url consistent with versions
2018-12-31flang, llvm, pgmath: Add release for 2018-09-21 (#10224)Gary Klimowicz3-0/+21
2018-12-31py-sphinxautomodapi: new python package (#10226)Geoffrey Oxberry1-0/+18
2018-12-30Over specifying Quantum Espresso compiler variables causes problems in some ↵Nichols A. Romero1-6/+13
corner cases. (#10216)
2018-12-30xgboost: make sure "libxgboost.so" is provided under prefix/lib (#10208)Sinan1-0/+7
2018-12-30dealii: workaround concretization issue with PETSc (#10217)Denis Davydov1-1/+3
2018-12-30stopgap: allow travis to fail for Python 2.6 againTodd Gamblin1-0/+2
- Travis still fails on `spack spec` in Python 2.6. - Allow the failure until we get to the bottom of it.
2018-12-30bugfix: nested directives were broken in python 3Todd Gamblin2-1/+25
- The nested directive implementation was broken for python 3 - directive results were not properly removed from the directive list when it was processed in the DirectiveMeta metaclass. - the issue was that remove_directives only descended into a list or tuple, but in Python3, the initial value passed to the function is a view of dictionary values. - make it a list to fix things, and add a regression test.
2018-12-30commands: add `spack resource` command to inspect downloadable filesTodd Gamblin4-0/+237
- currently just looks at patches - allows you to find out which package applied a patch to a spec - intended to work with tarballs and resources in the future. - add tab completion for `spack resource` and subcommands
2018-12-30tests: add a test to make sure that patched specs can be round-trippedTodd Gamblin1-30/+101
- previously, if a concrete sub-DAG with patched specs was written out and read back in, its patches would not be found because the dependent that patched it was no longer in the DAG. - Add a test to ensure that the PatchCache handles this case. - Also add tests to ensure that patch objects are properly created from Specs -- previously we only checked that the patches were on the Spec.
2018-12-30patches: add a per-repository patch indexTodd Gamblin8-116/+339
- this fixes a bug where if we save a concretized sug-DAG where a package had been patched by a dependent, and the dependent was not in the DAG, we would not read in all patches correctly. - Rather than looking up patches in the DAG, we look them up globally from an index created from the entire repository. - The patch cache is a bit tricky for several reasons: - we have to cache information from packages, specifically, the patch level and working directory. - FilePatches need to know which package owns them, so that they can figure out where the patch lives. The repo can change locations from run to run, so we have to store relative paths and restore them when the cache is reloaded. - Patch files can change underneath the cache, because repo indexes only update on package changes. We currently punt on this -- there are stub methods for needs_update() that will need to check patch files when packages are loaded. There isn't an easy way to do this at global indexing time without making the FastPackageChecker a lot slower. This is TBD for a future commit. - Currently, the same patch can only be used one way in a package. That is, if it appears twice with different level/working_dir settings, bad things will happen. There's no package that current uses the same patch two different ways, so we've punted on this as well, but we may need to fix this in the future by moving a lot of the metdata (level, working dir) to the spec, and *only* caching sha256sums in the PatchCache. That would require some much more complicated tweaks to the Spec, so we're holding off on that til later. - This required patches to be refactored somewhat -- the difference between a UrlPatch and a FilePatch is still not particularly clean.
2018-12-30ProviderIndex uses json instead of YAMLTodd Gamblin4-21/+18
- indexes should use json, not YAML, to optimize for speed - only use YAML in human-editable files - this makes ProviderIndex consistent with other indexes
2018-12-30repo: refactor indexes to be more extensibleTodd Gamblin1-95/+132
- virtual provider cache and tags were previously generated by nearly identical but separate methods. - factor out an Indexer interface for updating repository caches, and provide implementations for each type of index (TagIndex, ProviderIndex) so that more can be added if needed. - Among other things, this allows all indexes to be updated at once. This is an advantage because loading package files is the real overhead, and building the indexes once the packages are loaded is trivial. We avoid extra bulk read-ins by generating all package indexes at once. - This can be extended for dependents (reverse dependencies) and patches later.
2018-12-30patches: clean up patch.py, directives, and package class propertiesTodd Gamblin7-103/+121
- cleanup patch.py: - make patch.py constructors more understandable - loosen coupling of patch.py with package - in Package: make package_dir, module, and namespace class properties - These were previously instance properties and couldn't be called from directives, e.g. in patch.create() - make them class properties so that they can be used in class definition - also add some instance properties to delegate to class properties so that prior usage on Package objects still works
2018-12-29coverage: use kcov to get coverage for our cc scriptTodd Gamblin5-7/+32
2018-12-29Always build glib with iconv (#10219)George Hartzell1-6/+2
* Always build glib with iconv My early PR, #10165, which added a variant to configure glib to use libiconv and defaulted to false, seems to be causing more trouble than the knob is worth. This changes the glib package to always depend on and use libiconv. * libiconv depends_on is no longer conditional
2018-12-29bugfix: add codecov upload back to travis.yml (#10220)Todd Gamblin1-0/+5
Codecov upload was accidentally removed in #9805
2018-12-29Use homebrew addon instead of manually invoking brew (#10213)Todd Gamblin1-7/+8
2018-12-28Add GDAL 2.4.0 (#10215)Adam J. Stewart1-2/+8
2018-12-28salmon: Add version 0.12.0 (#10211)Eric1-0/+1
2018-12-28velvet: Add missing zlib dependency to fix installation errors (#10212)Eric1-0/+2
2018-12-28py-testinfra: Add version 1.18.0 (#10210)Eric1-0/+1
2018-12-27Add new versions of optional-lite and string-view-lite (#10179)Andrew Gaspar2-0/+3
2018-12-27xgboost: new package at 0.81 (#9854)Justin Stanley1-0/+22
2018-12-26fix moab installation for version 5.0.2 removed from ftp (#10201)Lukasz1-1/+11
* moab install from git repository, fix version 5.0.2 removed from ftp server * add moab dependencies above verson 5.0.1