Commit graph

7041 commits

Author SHA1 Message Date
Massimiliano Culpo
b1d129e681 Modulefiles generated with a template engine (#3183)
* Module files now are generated using a template engine refers #2902 #3173

jinja2 has been hooked into Spack.

The python module `modules.py` has been splitted into several modules
under the python package `spack/modules`. Unit tests stressing module
file generation have been refactored accordingly.

The module file generator for Lmod has been extended to multi-providers
and deeper hierarchies.

* Improved the support for templates in module files.

Added an entry in `config.yaml` (`template_dirs`) to list all the
directories where Spack could find templates for `jinja2`.

Module file generators have a simple override mechanism to override
template selection ('modules.yaml' beats 'package.py' beats 'default').

* Added jinja2 and MarkupSafe to vendored packages.

* Spec.concretize() sets mutual spec-package references

The correct place to set the mutual references between spec and package
objects at the end of concretization. After a call to concretize we
should now be ensured that spec is the same object as spec.package.spec.

Code in `build_environment.py` that was performing the same operation
has been turned into an assertion to be defensive on the new behavior.

* Improved code and data layout for modules and related tests.

Common fixtures related to module file generation have been extracted
in `conftest.py`. All the mock configurations for module files have been
extracted from python code and have been put into their own yaml file.

Added a `context_property` decorator for the template engine, to make
it easy to define dictionaries out of properties.

The default for `verbose` in `modules.yaml` is now False instead of True.

* Extendable module file contexts + short description from docstring

The contexts that are used in conjunction with `jinja2` templates to
generate module files can now be extended from package.py and
modules.yaml.

Module files generators now infer the short description from package.py
docstring (and as you may expect it's the first paragraph)

* 'module refresh' regenerates all modules by default

`module refresh` without `--module-type` specified tries to
regenerate all known module types. The same holds true for `module rm`

Configure options used at build time are extracted and written into the
module files where possible.

* Fixed python3 compatibility, tests for Lmod and Tcl.

Added test for exceptional paths of execution when generating Lmod
module files.

Fixed a few compatibility issues with python3.

Fixed a bug in Tcl with naming_scheme and autoload + unit tests

* Updated module file tutorial docs. Fixed a few typos in docstrings.

The reference section for module files has been reorganized. The idea is
to have only three topics at the highest level:

  - shell support + spack load/unload use/unuse
  - module file generation (a.k.a. APIs + modules.yaml)
  - module file maintenance (spack module refresh/rm)

Module file generation will cover the entries in modules.yaml

Also:

  - Licenses have been updated to include NOTICE and extended to 2017
  - docstrings have been reformatted according to Google style

* Removed redundant arguments to RPackage and WafPackage.

All the callbacks in `RPackage` and `WafPackage` that are not build
phases have been modified not to accept a `spec` and a `prefix`
argument. This permits to leverage the common `configure_args` signature
to insert by default the configuration arguments into the generated
module files. I think it's preferable to handling those packages
differently than `AutotoolsPackage`. Besides only one package seems
to override one of these methods.

* Fixed broken indentation + improved resiliency of refresh

Fixed broken indentation in `spack module refresh` (probably a rebase
gone silently wrong?). Filter the writers for blacklisted specs before
searching for name clashes. An error with a single writer will not
stop regeneration, but instead will print a warning and continue
the command.
2017-09-19 12:34:20 -07:00
Massimiliano Culpo
081403f280 adios: fixed conditional dependencies on libevpath and dataspaces (#5392)
fixes #5379
2017-09-19 14:13:26 +02:00
Gregory Lee
34d2762b1f added python version 2.7.14 and 3.6.2 packages (#5389) 2017-09-18 22:05:26 -05:00
Axel Huebl
15f844f291 HDF5: Fortran MPI needs Numactl (#5372) 2017-09-18 19:32:52 -07:00
healther
df8e7d7590 add variant gmock to googletest (#5278) 2017-09-18 19:28:33 -07:00
Christoph Junghans
bb042f7bd7 latte: fix url and add shared variant (#5358) 2017-09-18 19:24:17 -07:00
Christoph Junghans
1098d78d2a qmd-progress: add shared variant (#5381) 2017-09-18 15:36:42 -07:00
Christoph Junghans
6d8614f671 bml: add shared variant (#5380) 2017-09-18 15:32:20 -07:00
Christoph Junghans
efcd8e6f7f lammps: fix checksum (#5342) 2017-09-18 15:18:27 -07:00
Pramod S Kumbhar
832791a2bb Improve scorep package with different compilers and mpi providers (#5386)
* Add --with-mpi=spec['mpi'].name at configure step to avoid error when finding 2 MPI implementations

* Improve scorep package with different compilers and mpi providers
2017-09-18 13:35:42 -07:00
Milton Woods
2f269c3919 mesa: merge multiple branches into one (#5170)
Merge work from multiple contributors on the mesa package. This
includes the following changes and decisions:

* Added in mesa +hwrender support

* make +swrender the default selection since this represents a very
  common usage case (ie, cluster usage)

* leave ~llvm as the default, since inadvertently building this package
  could take a very long time.  May need to revisit this assumption in
  the future since the performance difference can be quite substantial.

* build libGLESv1+2 and libGL for all variants

* avoid dependence on dri/libdrm when ~hwrender

* disable gallium drivers if none are requested
2017-09-18 11:10:54 -07:00
Todd Gamblin
c7a789e2d6 Add --show-log-on-error option to spack install
- converted `log_path` and `env_path` to properties of PackageBase.

- InstallErrors in build_environment are now annotated with the package
  that caused them, in the 'pkg' attribute.

- Add `--show-log-on-error` option to `spack install` that catches
  InstallErrors and prints the log to stderr if it exists.

Note that adding a reference to the Pakcage allows a lot of stuff
currently handled by do_install() and build_environment to be handled
externally.
2017-09-17 18:52:25 -07:00
Todd Gamblin
742cd7f127 Remove redundant dest arguments in install.py 2017-09-17 18:52:25 -07:00
Todd Gamblin
eb0ea7697a Fix log error parsing bug introduced in c830eda0e (#5387)
- '\b' in regular expression needs to be in a raw string (r'\b')
- Regression test that would've caught this was unintentionally disabled

- This fixes the string and the test
2017-09-17 15:31:32 -07:00
Denis Davydov
2d22a88a96 tbb: add 2018 (#5359) 2017-09-17 11:32:19 -07:00
Pramod S Kumbhar
9aafe21b63 Filter system paths from CMAKE_PREFIX_PATH (#5385) 2017-09-17 14:47:16 +02:00
Kelly (KT) Thompson
0558fd640e Improve external package location detection algorithm. (#5145)
Also inspect `PATH` to help locate an external package and provide a test for
getting path from module's PATH.

Fixes #5141
2017-09-16 13:26:29 -07:00
Howard Pritchard
707b773aa2 Open MPI: add Open MPI 3.0.0 (#5360)
Open MPI 3.0.0 is released!  Add to spack.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-09-16 13:14:24 -07:00
Denis Davydov
f710a520e5 set CMAKE_PREFIX_PATH for cmake packages (#5364)
* cmake: set CMAKE_PREFIX_PATH

* cmake: use build/link immediate dependencies to construct CMAKE_PREFIX_PATH
2017-09-16 13:14:03 -07:00
Denis Davydov
7cec47aacd trilinos: update md5 for 12.10.1 (#5362) 2017-09-16 13:05:17 -07:00
Axel Huebl
847b24c94c New Pcakage: numactl (#5371)
Adds the numactl tools and libnuma.
2017-09-16 13:00:32 -07:00
ynanyam
5bb3538541 Feature/methycode (#5374)
* methylcode: added package

* pyfasta: added package

* py-bsddb3: added package

* py-bsddb3: added package

* Update package.py

* Update package.py

* Update package.py

* removed fixme comments

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py
2017-09-16 12:58:04 -07:00
Pramod S Kumbhar
d25b159dc3 Cntk: fixed dependency on protobuf fixes #5266 (#5267)
As protobuf has been converted to CMakePackage, it doesn't have a 'shared' variant anymore.
2017-09-16 10:24:40 +02:00
Audrey Thoma
9326925d45 augustus: url fix (#5311) 2017-09-16 10:20:42 +02:00
Denis Davydov
05b309a487 add Intel 2018 libraries (#5354) 2017-09-16 10:10:08 +02:00
zenln
1ce6097651 Bioawk: added new package (#5375) 2017-09-16 09:14:57 +02:00
Christoph Junghans
fc237792b2 gromacs: added 2016.4 (#5376) 2017-09-16 09:12:02 +02:00
Pramod S Kumbhar
54d0cef5c4 Update hpctoolkit and externals to latest release 2017-09-15 12:58:33 -07:00
healther
393e355c39 add new version to package py-pybind11 2017-09-15 10:13:47 -07:00
Michael Kuhn
cba1ddff4a ncl: Fix buffer overflow in ymake-filter (#5357)
Fixes a problem in ymake-filter: The line buffer is currently hardcoded to be
2048 bytes large but some Makefiles contain lines longer than that. This
caused the Makefiles to sometimes not be generated, consequently failing parts
of the build.
2017-09-15 08:43:42 -05:00
Pramod S Kumbhar
abc0c65d03 Fix checksum of Intel TBB package (#5349) 2017-09-14 22:46:01 -07:00
Matthew Scott Krafczyk
0bd838bd11 Remove echo statements from setup-env.sh
setup-env.sh adds the 'module' command to the user's environment
if it is not defined and if there is a Spack installation of
environment-modules available. This commit updates that logic to
perform these checks and updates quietly.
2017-09-14 18:49:25 -07:00
Robert Pavel
ead1982ede Added Support for NOX Package to Trilinos Spackage (#5366)
Added support for building NOX package to Trilinis Spackage
2017-09-14 17:28:55 -06:00
Axel Huebl
78894645eb ADIOS: Fix Build (Autotools) (#5363)
This fixes the build of the ADIOS package.
The `with_or_without` interface of the Autotools builds
seems to have changed, this fixes it.
2017-09-14 19:08:03 +02:00
Axel Huebl
3548e134f7 libsodium: update URLs (#5355)
* libsodium: update URLs

updates the URLs for libsodium releases.
Fixes broken builds (404).

* libsodium: add new version
2017-09-14 08:16:54 -05:00
Louis Vernon
ea081f06f0 Added missing dependencies to nauty package (#5348)
* Added missing help2man dependency to nauty

* Add type=build

* Added gmp dependency to nauty package
2017-09-13 20:16:16 -06:00
Axel Huebl
c1975c7601 Boost: 1.65.1 (#5330)
Add sha of the latest boost bugfix release.
http://www.boost.org/users/history/version_1_65_1.html

Besides other fixed issues, it adds compatebility for the upcoming
CUDA 9 release.
2017-09-13 22:45:28 +02:00
Christoph Junghans
80ac613391 Shell detection: filter preceding "-"
On OSX, the shell detection code may get a preceding dash, like
"-bash". This adds a filter to remove it.
2017-09-12 12:17:20 -07:00
Massimiliano Culpo
90d50a0cee Force reference consistency between Spec & Package
The correct place to set the mutual references between spec and
package objects is at the end of concretization. After a call to
concretize we should now be ensured that spec is the same object
as spec.package.spec.

Code in `build_environment.py` that was performing the same
operation has been turned into an assertion to be defensive on
the new behavior.
2017-09-12 12:10:31 -07:00
Denis Davydov
5c24370512 openblas: add ilp64 option (#5289) 2017-09-12 08:40:28 +02:00
Michael Kuhn
b413f37b3e Update libbson and libmongoc to 1.7.0 (#5294)
This also introduces the ssl, snappy and zlib variants for libmongoc.
2017-09-11 22:02:48 -07:00
Christoph Junghans
3ffb6d09d9 parsplice: initial commit (#5314) 2017-09-11 21:59:15 -07:00
Denis Davydov
c9e46a2913 dealii: explicitly specify bzip2 libs (#5337)
* dealii: explicitly specify bzip2 libs
* bzip2: add libs() property
2017-09-11 20:47:05 -07:00
Todd Gamblin
f8f1c308c9 clean up concreteness detection
- Fixes bugs where concretization would fail due to an erroneously cached
  _concrete attribute.

- Ripped out a bunch of code in spec.py that isn't needed/valid anymore:
  - The various concrete() methods on different types of Specs would
    attempt to statically compute whether the Spec was concrete.
  - This dates back to when DAGs were simpler and there were no optional
    dependencies.  It's actually NOT possible to compute statically
    whether a Spec is concrete now.  The ONLY way you know is if it goes
    through concretization and is marked concrete once that completes.
  - This commit removes all simple concreteness checks and relies only on
    the _concrete attribute.  This should make thinking about
    concreteness simpler.

- Fixed a couple places where Specs need to be marked concrete explicitly.
  - Specs read from files and Specs that are destructively copied from
    concrete Specs now need to be marked concrete explicitly.
  - These spots may previously have "worked", but they were brittle and
    should be explcitly marked anyway.
2017-09-11 17:13:21 -07:00
Todd Gamblin
8c42aed9d5 bugfix: concrete dependencies are now copied properly.
- Dependencies in concrete specs did not previously have their cache
  fields (_concrete, _normal, etc.) preserved.

- _dup and _dup_deps weren't passing each other enough information to
  preserve concreteness properly, so only the root was properly
  preserved.

- cached concreteness is now preserved properly for the entire DAG, not
  just the root.

- added method docs.
2017-09-11 17:13:21 -07:00
Todd Gamblin
14cd73ed3c Simplify logic in Spec.normalize() 2017-09-11 17:13:21 -07:00
Todd Gamblin
de7e99f866 Preserve original stack trace for UnsatisfiableSpecError 2017-09-11 17:13:21 -07:00
Massimiliano Culpo
32117c22de 'with_or_without' accepts bool variants
Fixes #4112

This commit extends the support of the AutotoolsPackage methods
`with_or_without` and `enable_or_disable` to bool-valued variants. It
also defines for those functions a convenience short-cut if the
activation parameter is the prefix of a spec (like in
`--with-{pkg}={prefix}`).

This commit also includes:

* Updates to viennarna and adios accordingly: they have been modified to
  use `enable_or_disable` and `with_or_without`
* Improved docstrings in `autotools.py`. Raise `KeyError` if name is
  not a variant.
2017-09-11 16:20:49 -07:00
Christoph Junghans
f502de4725 added votca-1.4.1 modules (#5276) 2017-09-11 13:28:53 -07:00
Denis Davydov
8dd7fa03ea elemental: fix broken Config.cmake (#5331) 2017-09-11 13:27:20 -07:00