summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-09-19Modulefiles generated with a template engine (#3183)Massimiliano Culpo104-1777/+16145
* 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-19adios: fixed conditional dependencies on libevpath and dataspaces (#5392)Massimiliano Culpo1-5/+3
fixes #5379
2017-09-18added python version 2.7.14 and 3.6.2 packages (#5389)Gregory Lee1-1/+3
2017-09-18HDF5: Fortran MPI needs Numactl (#5372)Axel Huebl1-0/+1
2017-09-18add variant gmock to googletest (#5278)healther1-1/+8
2017-09-18latte: fix url and add shared variant (#5358)Christoph Junghans1-4/+20
2017-09-18qmd-progress: add shared variant (#5381)Christoph Junghans1-0/+5
2017-09-18bml: add shared variant (#5380)Christoph Junghans1-0/+8
2017-09-18lammps: fix checksum (#5342)Christoph Junghans1-3/+7
2017-09-18Improve scorep package with different compilers and mpi providers (#5386)Pramod S Kumbhar1-3/+17
* 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-18mesa: merge multiple branches into one (#5170)Milton Woods1-34/+102
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-17Add --show-log-on-error option to `spack install`Todd Gamblin4-14/+59
- 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-17Remove redundant dest arguments in install.pyTodd Gamblin1-8/+8
2017-09-17Fix log error parsing bug introduced in c830eda0e (#5387)Todd Gamblin3-3/+52
- '\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-17tbb: add 2018 (#5359)Denis Davydov1-1/+2
2017-09-17Filter system paths from CMAKE_PREFIX_PATH (#5385)Pramod S Kumbhar1-0/+2
2017-09-16Improve external package location detection algorithm. (#5145)Kelly (KT) Thompson2-1/+8
Also inspect `PATH` to help locate an external package and provide a test for getting path from module's PATH. Fixes #5141
2017-09-16Open MPI: add Open MPI 3.0.0 (#5360)Howard Pritchard1-1/+2
Open MPI 3.0.0 is released! Add to spack. Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-09-16set CMAKE_PREFIX_PATH for cmake packages (#5364)Denis Davydov1-0/+5
* cmake: set CMAKE_PREFIX_PATH * cmake: use build/link immediate dependencies to construct CMAKE_PREFIX_PATH
2017-09-16trilinos: update md5 for 12.10.1 (#5362)Denis Davydov1-1/+1
2017-09-16New Pcakage: numactl (#5371)Axel Huebl1-0/+39
Adds the numactl tools and libnuma.
2017-09-16Feature/methycode (#5374)ynanyam3-0/+123
* 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-16Cntk: fixed dependency on protobuf fixes #5266 (#5267)Pramod S Kumbhar1-1/+1
As protobuf has been converted to CMakePackage, it doesn't have a 'shared' variant anymore.
2017-09-16augustus: url fix (#5311)Audrey Thoma1-2/+3
2017-09-16add Intel 2018 libraries (#5354)Denis Davydov4-0/+8
2017-09-16Bioawk: added new package (#5375)zenln1-0/+51
2017-09-16gromacs: added 2016.4 (#5376)Christoph Junghans1-0/+1
2017-09-15Update hpctoolkit and externals to latest releasePramod S Kumbhar2-8/+8
2017-09-15add new version to package py-pybind11healther1-0/+1
2017-09-15ncl: Fix buffer overflow in ymake-filter (#5357)Michael Kuhn2-0/+35
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-14Fix checksum of Intel TBB package (#5349)Pramod S Kumbhar1-1/+1
2017-09-14Remove echo statements from setup-env.shMatthew Scott Krafczyk1-11/+0
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-14Added Support for NOX Package to Trilinos Spackage (#5366)Robert Pavel1-0/+4
Added support for building NOX package to Trilinis Spackage
2017-09-14ADIOS: Fix Build (Autotools) (#5363)Axel Huebl1-11/+23
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-14libsodium: update URLs (#5355)Axel Huebl1-1/+5
* libsodium: update URLs updates the URLs for libsodium releases. Fixes broken builds (404). * libsodium: add new version
2017-09-13Added missing dependencies to nauty package (#5348)Louis Vernon1-0/+2
* Added missing help2man dependency to nauty * Add type=build * Added gmp dependency to nauty package
2017-09-13Boost: 1.65.1 (#5330)Axel Huebl1-0/+2
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-12Shell detection: filter preceding "-"Christoph Junghans1-1/+1
On OSX, the shell detection code may get a preceding dash, like "-bash". This adds a filter to remove it.
2017-09-12Force reference consistency between Spec & PackageMassimiliano Culpo2-13/+23
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-12openblas: add ilp64 option (#5289)Denis Davydov1-0/+5
2017-09-11Update libbson and libmongoc to 1.7.0 (#5294)Michael Kuhn2-2/+29
This also introduces the ssl, snappy and zlib variants for libmongoc.
2017-09-11parsplice: initial commit (#5314)Christoph Junghans1-0/+48
2017-09-11dealii: explicitly specify bzip2 libs (#5337)Denis Davydov2-1/+12
* dealii: explicitly specify bzip2 libs * bzip2: add libs() property
2017-09-11clean up concreteness detectionTodd Gamblin3-99/+27
- 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-11bugfix: concrete dependencies are now copied properly.Todd Gamblin1-25/+44
- 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-11Simplify logic in Spec.normalize()Todd Gamblin1-4/+4
2017-09-11Preserve original stack trace for UnsatisfiableSpecErrorTodd Gamblin1-3/+4
2017-09-11'with_or_without' accepts bool variantsMassimiliano Culpo5-109/+202
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-11added votca-1.4.1 modules (#5276)Christoph Junghans3-0/+5
2017-09-11elemental: fix broken Config.cmake (#5331)Denis Davydov2-0/+23