Commit graph

10574 commits

Author SHA1 Message Date
Todd Gamblin
4ecb465a36 README: LLNL release number and SPDX id don't need to be monospaced. 2019-01-01 00:44:28 -08:00
Todd Gamblin
5425a3dad4 flake8: fix flake8 issues with invalid escapes
- 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-01 00:44:28 -08:00
Todd Gamblin
6f50cd52ed copyright: update license headers for 2013-2019 copyright. 2019-01-01 00:44:28 -08:00
Todd Gamblin
e82992ae32 license: license command prints sorted, non-redundant results
- spack license command now ignores symlinks

- spack license list-files now prints sorted output, and checks for files
  we've already seen.
2019-01-01 00:44:28 -08:00
Massimiliano Culpo
3b8b13809e Improve validation of modules.yaml (#9878)
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.
2019-01-01 00:11:49 -08:00
George Hartzell
e6b2f0c179 express: new version, use tags and fix gcc@6.0.0: (#10230)
* 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-31 20:28:15 -06:00
George Hartzell
fb52eb2a18 aspell builds with newer gcc's (#10227)
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-31 16:13:03 -06:00
George Hartzell
51fbd315e9 fastx-toolkit builds with newer gcc's (#10228)
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-31 16:12:51 -06:00
George Hartzell
7aeff18b6f bamutil builds with newer gcc's (#10229)
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-31 16:12:14 -06:00
Justin Stanley
7f528a5ed2 ds: new package at 9.8.0 (#9852)
* 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-31 16:11:20 -06:00
Gary Klimowicz
a1d651e80f flang, llvm, pgmath: Add release for 2018-09-21 (#10224) 2018-12-31 11:50:04 -06:00
Geoffrey Oxberry
88417492f7 py-sphinxautomodapi: new python package (#10226) 2018-12-31 11:47:48 -06:00
Nichols A. Romero
54f76f7c51 Over specifying Quantum Espresso compiler variables causes problems in some corner cases. (#10216) 2018-12-30 11:29:28 -06:00
Sinan
70c5088a4c xgboost: make sure "libxgboost.so" is provided under prefix/lib (#10208) 2018-12-30 08:15:08 -08:00
Denis Davydov
309f70758b dealii: workaround concretization issue with PETSc (#10217) 2018-12-30 08:43:25 -06:00
Todd Gamblin
365387e929 stopgap: allow travis to fail for Python 2.6 again
- Travis still fails on `spack spec` in Python 2.6.
- Allow the failure until we get to the bottom of it.
2018-12-30 00:19:08 -08:00
Todd Gamblin
2e3303abd0 bugfix: nested directives were broken in python 3
- 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-30 00:19:08 -08:00
Todd Gamblin
d763e92141 commands: add spack resource command to inspect downloadable files
- 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-30 00:19:08 -08:00
Todd Gamblin
d2db978c7f tests: add a test to make sure that patched specs can be round-tripped
- 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-30 00:19:08 -08:00
Todd Gamblin
d3ee6c977b patches: add a per-repository patch index
- 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-30 00:19:08 -08:00
Todd Gamblin
a9b69fa902 ProviderIndex uses json instead of YAML
- 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-30 00:19:08 -08:00
Todd Gamblin
c1d7adaaac repo: refactor indexes to be more extensible
- 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-30 00:19:08 -08:00
Todd Gamblin
527ff860f0 patches: clean up patch.py, directives, and package class properties
- 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-30 00:19:08 -08:00
Todd Gamblin
19b7b15929 coverage: use kcov to get coverage for our cc script 2018-12-29 23:47:29 -08:00
George Hartzell
51cbc278aa Always build glib with iconv (#10219)
* 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-29 16:01:08 -06:00
Todd Gamblin
c92ac70c72
bugfix: add codecov upload back to travis.yml (#10220)
Codecov upload was accidentally removed in #9805
2018-12-29 12:09:42 -08:00
Todd Gamblin
d65c6ba9b2 Use homebrew addon instead of manually invoking brew (#10213) 2018-12-29 06:12:02 +01:00
Adam J. Stewart
5f957920c4
Add GDAL 2.4.0 (#10215) 2018-12-28 21:20:13 -06:00
Eric
2c76e8feef salmon: Add version 0.12.0 (#10211) 2018-12-28 13:02:36 -06:00
Eric
ada8d5ce5c velvet: Add missing zlib dependency to fix installation errors (#10212) 2018-12-28 13:02:16 -06:00
Eric
722e7058f8 py-testinfra: Add version 1.18.0 (#10210) 2018-12-28 18:24:58 +01:00
Andrew Gaspar
69f1199c55 Add new versions of optional-lite and string-view-lite (#10179) 2018-12-27 17:03:21 +01:00
Justin Stanley
c451733f9a xgboost: new package at 0.81 (#9854) 2018-12-27 07:42:44 +01:00
Lukasz
25129d4a3b fix moab installation for version 5.0.2 removed from ftp (#10201)
* moab install from git repository, fix version 5.0.2 removed from ftp server

* add moab dependencies above verson 5.0.1
2018-12-26 16:18:32 -06:00
StackKorora
39589065b1 Add Stata package (#10189)
* First draft for installing Stata 15

I've tested this works on my systems and gives a successful install of STATA 15.

* Flake8 cleanup

* Another Flake8

* Update license header

* Various improvements

A lot of improvements as suggested by @adamjstewart

* flake8 check
2018-12-26 16:17:42 -06:00
Christoph Junghans
18b128e6c1
pgmath: depend on awk (#10200) 2018-12-26 13:46:52 -07:00
Adam J. Stewart
42de399b18 Fix pkgconf downloads (#10202) 2018-12-26 13:46:30 -07:00
Adam J. Stewart
fc48f65a0f
Fix libxml2+python and libxslt+python import tests (#10196)
* Fix libxml2+python import tests

* Same for libxslt package
2018-12-26 10:36:59 -06:00
Christoph Junghans
58079b13eb mawk: added 1.3.4_p20171017 (#10197) 2018-12-26 08:41:26 -06:00
Satish Balay
0f2f0deee7 slepc: fix homepage URL (#10199) 2018-12-26 08:41:09 -06:00
Massimiliano Culpo
28fd1baa86 tests: run 'test_compiler_add' serially in Python 2 (#10127)
* Don't spawn processes during python 2.6/2.7 'test_compiler_add' unit tests
* Travis seems to choke on the excessive parallelism in `compiler find`
2018-12-25 23:47:46 -08:00
Denis Davydov
39b23d277b environment: ignore invalid files names in var/spack/environments (#10198) 2018-12-25 22:22:21 -08:00
Denis Davydov
d9da7c98a2 dealii: fix build with some Intel compilers (#10188) 2018-12-24 18:53:53 -06:00
Adam J. Stewart
376ef5f87a
Add latest version of NCCL (#10194) 2018-12-24 17:27:15 -06:00
Adam J. Stewart
9c58dacaec
Add PyTorch 1.0 (#10193) 2018-12-24 17:27:01 -06:00
Eric
791aab8564 manta: Add version 1.5.0 and add missing zlib dependency (#10178) 2018-12-24 21:04:18 +01:00
Todd Gamblin
35dd929651
bugfix: handle unicode properly in spack.util.executable (#10186)
- When returning string output, use text_type and decode utf-8 in Python
  2 instead of using `str`

- This properly handles unicode, whereas before we would pass bad strings
  to colify in `spack blame` when reading git output

- add a test that round-trips some unicode through an Executable object
2018-12-23 23:59:58 -08:00
Omar Padron
fcce8b8dc2 travis: fix pip install for docker stage (#10177) 2018-12-23 17:42:09 -08:00
Satish Balay
908ecf3e74 xsdk-0.4.0: add/update package versions: (#10038)
* xsdk-0.4.0: add/update package versions:
  hypre@2.15.1
  mfem@3.4.0
  superlu-dist@6.1.0
  trilinos@12.14.0-rc1
  petsc@3.10.3
  dealii@9.0.1
  pflotran@xsdk-0.4.0
  alquimia@xsdk-0.4.0
  sundials@3.2.1
  plasma@18.11.1
  magma@2.4.0
  amrex@18.10.1
  slepc@3.10.1
  omega-h@9.19.1
  strumpack@3.1.1
  pumi@2.2.0
  tasmanian@6.0
  phist@1.7.5
  dtk-3.0 [via trilinos features '+dtk+intrepid2+shards']

add option to disable omega-h build [wrt gcc-8 conflict]
  spack install xsdk~omega-h
add option to disable dealii build [wrt cori build error]
  spack install xsdk~dealii

* trilinos: default version should be the prior release
2018-12-23 17:35:03 -08:00
Neil Flood
75b83ef2a7 py-cftime: new package (#10066)
* py-cftime: new package

* Added dependency on py-setuptools, and version range for py-cython, thanks to the ever-vigilant @adamjstewart
2018-12-23 14:56:08 -06:00