Compare commits

..

2983 Commits

Author SHA1 Message Date
becker33
8913c3465c Change location of public key in basic tutorial (#7192)
* Change location of public key in basic tutorial

* Change tuturial version number to 11.2
2018-02-07 08:45:29 -08:00
Hans Pabst
8f5ece9ace LIBXSMM 1.8.3 (#7183) 2018-02-06 14:31:18 +01:00
Eric
26ff36f05f samblaster: Create new package (#7188) 2018-02-06 13:54:05 +01:00
Eric
167b5dc5d3 py-localcider: Create new package (#7189) 2018-02-06 13:52:37 +01:00
Geoffrey Oxberry
49e58992db oclint: new package (#7076) 2018-02-06 06:35:17 +01:00
Levi Baber
e25406c26b angsd: new version, and conflict for newer htslib with old version (#7122) 2018-02-05 18:33:12 +01:00
Mark Meredith
6c21d0bf31 Update fish url for fish 2.7.1 (#7089) 2018-02-04 09:05:44 +01:00
Thilina Rathnayake
970a4b2815 Update Nek5000 package to Version 17 (#7178)
and minor polishing
2018-02-03 17:05:14 -06:00
Erik Schnetter
927af929f4 highfive: Update to version 1.5 (#7041) 2018-02-03 10:22:03 +01:00
健美猫
caba978aa6 A new package: libcroco. (#7154) 2018-02-03 10:07:02 +01:00
Elizabeth Fischer
be5fa8f6c2 macOS Fix for GDAL (#7155) 2018-02-03 10:06:35 +01:00
Geoffrey Oxberry
4c9521b52b clingo@5.2.2: new package (#7091) 2018-02-03 10:05:06 +01:00
Eric
b6f1e0611c stringtie: add version 1.3.4a (#7164) 2018-02-03 09:52:51 +01:00
healther
e3951c2a21 Fix ignore-conflicts for extensions in views (#7167)
Fixes #7159

When activating extensions in external views, the --ignore-conflicts
option was being ignored. In this particular issue the conflict was
for the duplicate __init__ file for multiple python packages in the
same namespace, but in general any conflict for extensions would
cause an error whether or not --ignore-conflicts was set.

This also renames the 'force' option of do_activate to
'with_dependencies' and updates views to call do_activate with this
set to False (since it traverses the dependency dag anyway). This
isn't strictly required, it just avoids redundant calls.
2018-02-02 14:45:21 -08:00
Eric
0b6d7f7397 new package: perl-exporter-tiny (#7030) 2018-02-02 10:28:45 -08:00
scheibelp
71483d9390 Update tutorial on advanced packaging (#7144)
This reorganizes most sections and rewords a significant portion of
the content (including all introductions) but keeps all the examples.

* Remove section 'What happens at subscript time' from tutorial:
  it is too detailed for a tutorial
* Move the 'Extra query parameters' and 'Attach attributes to other
  packages' sections into a separate grouping 'Other packaging topics'
* move the 'Set variables at build time yourself' section after
  'Set environment variables in dependents' section since the latter
  is more motivating
* start the 'set environment variables at build-time for yourself'
  section with qt as an example
* renamed section 'specs build interface' to 'retrieving library
  information' and updated section introduction
* renamed section 'a motivating example' to 'accessing library
  dependencies'; split out the material which deals with implementing
  .libs for netlib-lapack into a separate section called 'providing
  libraries to dependents'. consolidated in material from the section
  'single package providing multiple virtual specs' since
  netlib-lapack is an example of this (this removes the material
  about intel-parallel studio)
2018-02-01 12:10:25 -08:00
Feiyi Wang
27b033587b Efficient array of booleans, C extension (#7135) 2018-02-01 18:48:32 +00:00
Todd Gamblin
df758e1cfc Improve log parsing performance (#7093)
* Allow dashes in command names and fix command name handling

- Command should allow dashes in their names like the reest of spack,
  e.g. `spack log-parse`
  - It might be too late for `spack build-cache` (since it is already
    called `spack buildcache`), but we should try a bit to avoid
    inconsistencies in naming conventions

- The code was inconsistent about where commands should be called by
  their python module name (e.g. `log_parse`) and where the actual
  command name should be used (e.g. `log-parse`).

- This made it hard to make a command with a dash in the name, and it
  made `SpackCommand` fail to recognize commands with dashes.

- The code now uses the user-facing name with dashes for function
  parameters, then converts that the module name when needed.

* Improve performance of log parsing

- A number of regular expressions from ctest_log_parser have really poor
  performance, most due to untethered expressions with * or + (i.e., they
  don't start with ^, so the repetition has to be checked for every
  position in the string with Python's backtracking regex implementation)

- I can't verify that CTest's regexes work with an added ^, so I don't
  really want to touch them.  I tried adding this and found that it
  caused some tests to break.

- Instead of using only "efficient" regular expressions, Added a
  prefilter() class that allows the parser to quickly check a
  precondition before evaluating any of the expensive regexes.

- Preconditions do things like check whether the string contains "error"
  or "warning" (linear time things) before evaluating regexes that would
  require them.  It's sad that Python doesn't use Thompson string
  matching (see https://swtch.com/~rsc/regexp/regexp1.html)

- Even with Python's slow implementation, this makes the parser ~200x
  faster on the input we tried it on.

* Add `spack log-parse` command and improve the display of parsed logs

- Add better coloring and line wrapping to the log parse output.  This
  makes nasty build output look better with the line numbers.

- `spack log-parse` allows the log parsing logic used at the end of
  builds to be executed on arbitrary files, which is handy even outside
  of spack.

- Also provides a profile option -- we can profile arbitrary files and
  show which regular expressions in the magic CTest parser take the most
  time.

* Parallelize log parsing

- Log parsing now uses multiple threads for long logs
- Lines from logs are divided into chnks and farmed out to <ncpus>
- Add -j option to `spack log-parse`
2018-01-31 21:57:56 -08:00
Geoffrey Oxberry
514f0bf5c5 lz4 platform=darwin: fix dylib name (#7112) 2018-01-31 16:12:44 -08:00
Geoffrey Oxberry
7959c5ffd2 libdwarf: fix linking, fix build on Darwin (#7124)
* libdwarf: fix linker flags

* libdwarf: fix header install names

* libdwarf: add zlib dependency

Prior to this commit, libdwarf was linked to the system zlib. This
commit links it to spack-installed zlib.

* libdwarf: fix dynamic library suffix for Darwin
2018-01-31 16:12:25 -08:00
healther
bddc1556e1 symlink python3 to python (#7103)
* symlink python3 to python

* otherwise not all autotools are smart enough

* Update package.py
2018-01-31 16:11:25 -08:00
sknigh
ec7d069ba5 Added osu-micro-benchmarks@5.4 (#7149) 2018-01-31 16:10:14 -08:00
Brian Van Essen
c3034b53e3 Adding support for the Accelerate library on OS X (#7068)
* Adding support for the Accelerate library on OS X

* Fixed guard on variable and added another depends_on statement to make sure that openblas gets selected even when openmp_blas variant is not turned on.
2018-01-31 11:10:42 -08:00
Eric
fa65725263 fr-hit: Create new package (#7132) 2018-01-31 19:28:48 +01:00
Brian Van Essen
bc0f683e64 Protobuf fix (#7110)
* Fixed a bug where when using shared libraries OS X does not set the RPATH correctly
2018-01-31 09:39:53 -08:00
Brian Van Essen
06758fe5cb LBANN OS X (#7105)
* Added a package for the MDAnalysis toolkit.

* Added some flags to fix the build RPATHs and OpenMP for LBANN on OS X.

* Fixed Hydrogen branch of Elemental to find OpenMP on OS X.
2018-01-31 09:38:53 -08:00
Eric
60cc0b0b90 py-setuptools-git: Create new package (#7131) 2018-01-31 16:52:34 +01:00
Axel Huebl
cb5919b981 PNGwriter: 0.7.0 (#7026)
Adds the latest release of PNGwriter, including
Windows and CMake config package support.
2018-01-31 14:34:52 +01:00
sknigh
770100765f Added v1.4.2 to libfabric package (#7053) 2018-01-31 14:02:21 +01:00
Levi Baber
b59c3bcf02 abyss: added missing libtool dependency (#7054) 2018-01-31 14:01:49 +01:00
Axel Huebl
0d5ad7d843 openPMD-validator (#7064)
Adds the new package for openPMD validator tools.
2018-01-31 13:59:38 +01:00
Geoffrey Oxberry
ebaa106d7a ocaml@4.06.0: new version (#7078) 2018-01-31 13:49:17 +01:00
Geoffrey Oxberry
e8b4de7b4c re2c@1.0.3: new package (#7092) 2018-01-31 13:46:17 +01:00
Geoffrey Oxberry
b8b2c67b9c opam: new package (#7079) 2018-01-31 13:44:09 +01:00
Geoffrey Oxberry
148a2f0238 bmake@20171207: new package (#7099) 2018-01-31 13:42:41 +01:00
Geoffrey Oxberry
ae589c22f2 gcc: add version 7.3.0 (#7097) 2018-01-31 13:41:12 +01:00
Geoffrey Oxberry
804a6c5e1a lz4@1.8.1.2: new version (#7111) 2018-01-31 13:40:32 +01:00
Geoffrey Oxberry
a5758d97b3 libarchive@3.3.2: new version (#7113) 2018-01-31 13:39:58 +01:00
Denis Davydov
35746fdde1 rtags: add 2.17 and for now comment-out 2.12 (#7126) 2018-01-31 13:36:22 +01:00
lingnanyuan
cef4c2fa1c maq: Create new package. (#7133) 2018-01-31 13:12:43 +01:00
Eric
cd084d02ce rna-seqc package: JAVA_{ARGS,OPTS} for helper script (#6972) 2018-01-29 20:23:59 -08:00
Massimiliano Culpo
7368586f0d Mark slow unit tests (#6994)
* Marking database tests as slow

* Marking url command tests as slow

* Marking every test that uses database as slow

* Marking tests that import files as slow

* Marking gpg tests as slow

* Marking all versions and one list tests as slow

* Added more markers to unit tests + cli option to skip slow tests

Following a discussion with Axel, the generic 'slowtest' marker has been
split into 'db', 'network' and 'maybeslow'. A brief description of the
meaning of each marker has been added to pytest.ini.

A command line option to run only fast tests has been added to
'spack test'

* Don't use classes to group tests together

Reverted grouping tests under a class, as required in the review

* Minor style changes
2018-01-29 06:19:50 -08:00
scheibelp
f27c5e74ed Remove Package instance caching in Repo (#6367)
This attempts to address one of the complaints at #5996 (comment):

> Repo currently caches package instances by Spec, and those Package instances have a Spec. 
> This is unnecessary and causes confusion. I think I thought that we'd need to cache instances 
> after loading package classes, but really just caching the classes is fine.

With this update, Repo's package cache is removed and Specs cache the package reference themselves. One consequence is that Specs which compare as equal will store separate instances of a Package class (not doing this creates issues for #4595 (comment)).

There were several references to Spec.package that could be replaced with Spec.package_class without any additional modifications. There are still a couple remaining references to Spec.package in Spec that would require adding functionality before replacing (e.g. calling Package.provides and Package.installed).

Note this makes it difficult to mock fetchers for tests which invokes code that reconstructs specs. test_packaging was one example of this where the updates caused a failure (in that case the error was avoided by not making an unnecessary call).

Details:
* Replace instances of spec.package with spec.package_class where a class method is being called
* Remove instances of Repo.get where Spec.package_class can be used in its place
* remove Repo.get caching instances of Package class for specs
* remove redundant check (which is also incorrect now that each spec stores its own copy of its package)
* avoid creating mirror with specs because it copies specs and those copies dont refer to the mocked fetcher (and it is also not required for the test)
* remove checks that are no longer necessary since repo doesn't cache specs
2018-01-28 16:58:08 -08:00
Adam J. Stewart
f7f4bae154 Fix gfortran 7 detection (#7017) 2018-01-28 16:29:48 -08:00
Massimiliano Culpo
5af9256d4f Cleaned up JUnit report generation on install (#6977)
* Cleaned up JUnit report generation on install

The generation of a JUnit report was previously part of the install
command. This commit factors the logic into its own module, and uses
a template for the generation of the report.

It also improves report generation, that now can deal with multiple
specs installed at once. Finally, extending the list of supported
formats is much easier than before, as it entails just writing a
new template.

* Polished report generation + added tests for failures and errors

The generation of a JUnit report has been polished, so that the
stacktrace is correctly displayed with Jenkins JUnit plugin. Standard
error is still not used.

Added unit tests to cover for installation failures and installation
errors.
2018-01-28 12:07:59 -08:00
Geoffrey Oxberry
784234ae8e libtool, binutils: fix darwin linking (#7073)
* libtool: fix linking of libtool on darwin

* binutils, libtool: fix conflicts w/ BSD tools, v2

Fix namespace conflicts with BSD tools in a more elegant fashion,
using a program prefix, similar to Homebrew.
2018-01-28 15:36:24 +01:00
George Hartzell
970c7e8f45 Tell R's configure about tcltk config (#7085)
* Tell R's configure about tcltk config

Add configure arguments that specify the location of
the tcl and tk config scripts.

Fixes #7072

* Flake8 cleanup
2018-01-26 20:51:38 -06:00
Brian Van Essen
1cd03e0f36 new package: essl (#6335)
Added support for the IBM ESSL math library.Updated Elemental to be
able to build with ESSL.
2018-01-26 10:38:37 -08:00
Massimiliano Culpo
7cb43e3d05 Bzip2 now uses 'spack_cc' as a compiler, instead of plain 'cc' (#7074)
Looking at build logs, it seems that prior to this commit bzip2 was
using 'cc', and relying on the PATH to be set correctly to find Spack
wrappers. This commit improves the robustness of the recipe, by using
the absolute path of the wrapper.
2018-01-26 09:52:04 +01:00
Federico Ficarelli
1f39afe475 Enable install of multiple specs from yaml files (#6984) 2018-01-26 08:33:53 +01:00
Brian Van Essen
8bc5916b68 Protobuf package: allow building shared library (#7067)
This adds a +shared variant for building shared libraries in the
protobuf package and enables it by default.
2018-01-25 12:14:48 -08:00
Brian Van Essen
82d4d58ca7 Lbann package: bug fix (#7066)
Fixed a bug in the guard on cub functionality.  Reduced the
requirements on hwloc to make it simpler to build on Power systems.
2018-01-25 12:10:37 -08:00
Axel Huebl
85c887a939 Python Installs: No User Site Dir (#7065)
Avoid adding an "outside" (local home's) python user site directory
during python package installs.

Implements #6611

Fixes packages with auto-find side effects such as `py-setuptools`
that cause `py-matplotlib` to fail to build #6558
2018-01-25 17:50:50 +01:00
Geoffrey Oxberry
e0082e0564 libtool: symlink libtool{ize} to glibtool{ize} (#7060)
On Darwin and other BSD systems, the system 'libtool' and 'libtoolize'
are BSD libtool and libtoolize, respectively. Some build systems
require the GNU versions of these commands, so BSD package systems
tend to name the GNU versions 'glibtool' and 'glibtoolize',
respectively, to avoid namespace collisions.

A problem with the current libtool package is that it installs the GNU
libtool commands as 'libtool' and 'libtoolize', respectively, but
build systems on BSD platforms will attempt to run 'glibtool' and
'glibtoolize'. The expedient solution to this problem is to symlink
'libtool' to 'glibtool' and 'libtoolize' to 'glibtoolize', because
attempting to patch the detection logic one build system at a time
seems impractical.
2018-01-24 18:48:28 -08:00
Geoffrey Oxberry
b5daa51c06 netlib-xblas 1.0.248: new package (#7024)
* netlib-xblas@1.0.248: new package

* netlib-lapack: add xblas option
2018-01-24 08:28:05 +01:00
Brian Van Essen
a62e1a0451 Lbann update (#6987)
* Added new link line flag

* Refactored some of the common components out of the different
version's build commands.  Also corrected the when commands to
properly capture non-numeric names such as local.

* Added support to the Elemental package for the Hydrogen branch.
2018-01-23 17:05:54 -08:00
Federico Ficarelli
8bdf7e6baa Fix gtkplus build by hardcoding X11 support (#6971)
* Fix gtkplus build by hardcoding X11 support

* Remove +X variant from gtkplus dependents
2018-01-23 15:24:20 -08:00
Federico Ficarelli
dceb66741c Fix +readline handling (#7048) 2018-01-23 23:01:58 +01:00
Geoffrey Oxberry
d6a43f180b argp-standalone@1.3: new package (#7014)
Adds a package for the standalone version of the argp argument parsing
interface from glibc for unix-style command options.
2018-01-23 22:49:17 +01:00
Alastair Harrison
eb0f5c6efe Fix error message typo in 'spack create' cmd (#7042)
- Previously would print the spec's namespace twice, rather
  than printing the spec's namespace, followed by the repo's namespace.
2018-01-23 14:00:18 -06:00
Thilina Rathnayake
3223186729 new package: gslib (#6328) 2018-01-23 10:42:06 -08:00
Benedikt Riedel
d8c105a7b1 Fix GEANT4 and make more portable and flexible (#6956)
* Turning off default Qt support. Restricting Qt version to <= 4.9 else geant4 won't build

* Making vecgeom optional

* Differentiating between cxx11 and cxx14 support

* Making vecgeom optional. Part 2. forgot to move usolids option

* Adding explicit CXX11 and CXX14 support

* Adding more clhep version to support newer GEANT4 versions

* Adding GEANT4 versions 10.03.p03 and 10.04

* Checkpoint. Adding opengl and x11 variant. Lead up to more changes to enable X11 support

* Adding dependency on fixesproto for newer versions

* Making the X11 dependent pieces work without requiring X11 on the system

* Adding motif
2018-01-23 10:13:08 +01:00
Geoffrey Oxberry
2e09501fc5 netlib-lapack: add versions 3.7.0, 3.7.1, 3.8.0 (#7025) 2018-01-23 09:59:33 +01:00
健美猫
e6afb9db77 A new package: log4cplus. (#7015) 2018-01-23 09:47:34 +01:00
Marty McFadden
02b74519e3 Version update for cfitsio (#7032) 2018-01-23 09:44:40 +01:00
Yifan Zhu
92b20bfdba r-snprelate: new package (#7036) 2018-01-23 09:43:22 +01:00
Yifan Zhu
30aaa37472 r-gdsfmt: new package (#7035) 2018-01-23 09:42:10 +01:00
Scott Wittenburg
d2c3441527 Update gl/qt options for vtk package (#6551)
This provides options for hardware and software rendering with the
gl API and updates the vtk package to make use of those options:

* Create new "gl" virtual package, provided by mesa
* Add external-only "opengl" package, which represents a system
  install that provides gl
* For vtk: prefer system gl implementation by default to get speed
  up from hardware rendering. When software rendering is specifically
  requested (+osmesa), try to use the llvmpipe approach, as it is
  much faster.
* Make qt dependency optional for vtk
* Add basic support for VTK on osx
* qt: Depend on virtual gl package, rather than mesa impl
2018-01-22 10:46:44 -08:00
Kelly (KT) Thompson
55c3451b87 Version update for 2.22 (#7023) 2018-01-22 07:12:00 +01:00
Eric
cfd68e48a4 perl-graph: Create new package (#7022) 2018-01-22 07:10:58 +01:00
Eric
1733dff977 perl-array-utils: Create new package (#7020) 2018-01-22 07:10:17 +01:00
Eric
02b9cf5085 perl-app-cmd: Create new package (#7019) 2018-01-22 07:09:34 +01:00
Eric
cd82a9e050 perl-perlio-gzip: Create new package (#7018) 2018-01-22 07:08:41 +01:00
Geoffrey Oxberry
227b58bb67 Visit 2.13.0 (#6947)
* visit: add version 2.12.3

* visit: add version 2.13.0

* visit: enable building with hdf5+mpi

* visit: add qwt dependency

Building VisIt requires Qwt, which is not part of Qt. Prior to this
commit, this dependency was not included in the VisIt spack package,
resulting in a configure-time bug with an error message indicating a
missing Qwt dependency.

This commit fixes this bug by adding Qwt dependency information.
2018-01-21 09:16:23 -06:00
Hans Pabst
202c413ae0 LIBXSMM 1.8.2 (#6896)
* Included LIBXSMM 1.8 into the list of available versions.

* LIBXSMM 1.8.1

* LIBXSMM 1.8.2 (release notes: https://github.com/hfp/libxsmm/releases/tag/1.8.2).

* LIBXSMM: Use join_path instead of hard-coding the separator. Install "version.txt" into the documentation directory. Removed installing "README.md" from LIBXSMM's root directory as it overrides README.md provided there. The latter uses correct relative references to the other documentation parts.

Note: Apparently, "FC=/path/to/gfortran spack install libxsmm" is currently needed for Spack since does not pick-up the Fortran compiler (but incorrectly uses the C compiler instead).

* LIBXSMM: converted Package into MakefilePackage (to address https://github.com/spack/spack/pull/6896#discussion_r160993923).

* LIBXSMM: account for changed file set in 1.8.2 onward (addresses https://github.com/spack/spack/pull/6896#pullrequestreview-88670974).

* Fixed incorrect behavior of "+header-only", which did not install the "src" folder. Addressed https://github.com/spack/spack/pull/6896#discussion_r162783180 and https://github.com/spack/spack/pull/6896#discussion_r162783221.

* Use conflicts msg argument to present a friendly error message.
2018-01-21 09:14:26 -06:00
Denis Davydov
6170ca863d dealii: update CMake dependency (#7010) 2018-01-20 21:59:24 +01:00
sknigh
27bb18bae2 Added libgit2@0.26.0 (#6952) 2018-01-20 21:57:41 +01:00
sknigh
e98a85c807 Added added libssh2@1.8.0 (#6951) 2018-01-20 21:56:55 +01:00
Michael Kuhn
9f0e17a538 flex: restrict GCC conflict to newer Ubuntu releases (#6963)
flex 2.6.4 compiles fine with GCC 7 on (at least) Ubuntu 16.04 and Fedora 27.
2018-01-20 21:36:45 +01:00
Geoffrey Oxberry
9d84e7eb5c llvm: add version 5.0.1 (#6957) 2018-01-20 21:09:31 +01:00
Michael Kuhn
2fc3e23e47 gtkplus: Update to 2.24.32 (#6964) 2018-01-20 19:42:21 +01:00
Yifan Zhu
7fc654b6a3 r-getopt: new package (#6973) 2018-01-20 19:18:07 +01:00
Geoffrey Oxberry
b83936a1f9 ipopt: add version 3.12.9 (#6982) 2018-01-20 19:11:18 +01:00
Eric
2192644071 perl-list-moreutils: Create new package (#6997) 2018-01-20 19:09:23 +01:00
peetsv
e3b8d6ef08 sniffles: add version 1.0.7 (#7004) 2018-01-20 18:39:29 +01:00
健美猫
0dee143c72 A new package: lumpy-sv. (#7009) 2018-01-20 18:38:31 +01:00
Ondřej Čertík
40ab8fe31f Add Abinit 8.6.3 (#6959) 2018-01-20 10:20:00 -06:00
Bruno Turcksin
62d53b2a5b Add boost 1.66.0 (#7000) 2018-01-20 17:10:25 +01:00
Massimiliano Culpo
621388e5ae Restore multiprocessing in unit tests (#6949)
* Revert "Travis: use --concurrency=multiprocessing only on build tests (#6872)"

This reverts commit 596d463714.

* Removing 'coverage combine' in test script

According to what was discovered in #6887, one of the problems is
calling 'coverage combine' twice without the '-a' flag. This removes
the first call within our test scripts.
2018-01-20 16:10:25 +01:00
Geoffrey Oxberry
cf736ae911 qt@4 : update corewlan patch for OS X 10.1[23] (#6943)
Update the qt4 CoreWLAN patch to apply to macOS/OS X 10.12 and 10.13,
which both still use the CoreWLAN framework in their SDKs (although
it's apparently deprecated?!). Without this patch update, `spack
install qt@4.8.6` fails on macOS/OS X 10.12 because the linker
cannot find headers from the CoreWLAN framework.
2018-01-20 07:53:50 -06:00
Geoffrey Malcolm Oxberry
7c4c6e72ad vtk@:6.1.0 : disable Obj-C gc for XCode >= 5.1
Apple removed support for Objective-C garbage collection in binaries
in XCode 5.1, but VTK 6.1.0 and earlier set flags for garbage
collection, resulting in a compile-time bug when compiling VTK using
any recent version of XCode (i.e., Apple Clang).

This commit fixes this bug by removing the garbage collection flags
via setting the variable `VTK_REQUIRED_OBJCXX_FLAGS` to the empty
string. This variable has the same value (i.e., the empty string) in
the root-level CMakeLists.txt file for VTK 6.2.0 and later.
2018-01-19 13:44:36 -08:00
Geoffrey Malcolm Oxberry
48ae4c22b2 vtk@:6.1.0 : fix NetCDF C++ bindings detection
VTK 6.1.0 and earlier do not use paths stored in `NETCDF_CXX_ROOT` to
detect the presence of NetCDF C++ headers and libraries. Consequently,
VTK 6.1.0 does not build.

This commit fixes this bug by setting the advanced variables
`NETCDF_CXX_INCLUDE_DIR` and `NETCDF_CXX_LIBRARY` at the command line
to specify the directory containing headers and the full library path
for the NetCDF C++ bindings.
2018-01-19 13:44:36 -08:00
Levi Baber
8d2e340e16 Add --full-path option to module find (#6838) 2018-01-19 20:08:36 +01:00
Christoph Junghans
a102177db7 miniqmc: initial commit (#6991) 2018-01-19 09:38:21 -07:00
Massimiliano Culpo
a389bff949 Added a setter to the Spec.prefix property (#6814)
This commit removes logic from Spec that was there only to be used in
tests, and allows to set a new prefix cleanly in user's code.
2018-01-19 09:31:19 +01:00
becker33
3686c250ed Fix type issues with setting flag handlers (#6960)
The flag_handlers method was being set as a bound method, but when
reset in the package.py file it was being set as an unbound method
(all python2 issues). This gets the underlying function information,
which is the same in either case.

The bug was uncovered for parmetis in #6858. This is a partial fix.
Included are changes to the parmetis package.py file to make use of
flag_handlers.
2018-01-18 17:55:44 -08:00
Howard Pritchard
568db965cf ucx: update for release 1.2.2 (#6990)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2018-01-18 13:41:16 -07:00
Massimiliano Culpo
de679abd67 Added flags to unit tests + OSX build done once per day (#6988)
* Adding flags to codecov reports

* OSX builds are triggered once a day
2018-01-18 20:06:26 +01:00
junkudo
9704369f17 ipopt package: set compiler flags in configure (#6714)
This makes use of the new flag_handler logic from 28d8784a to set
compiler flags for ipopt by passing them as arguments to the build
system rather than injecting them into the compiler wrappers. This
avoids conflicts between flags that are chosen by the build system
and flags that are set by the user.
2018-01-18 10:39:08 -08:00
Todd Gamblin
4dd6ee25d6 Fix logo link in README.md to point to the develop branch. (#6969) 2018-01-17 09:06:14 -08:00
Todd Gamblin
84b2cc0823 Final changes for v0.11.0 (#6318) 2018-01-16 22:25:08 -08:00
Massimiliano Culpo
4d7e7f25c4 Fix installing specs from yaml file (#6906)
The feature added in #4611 is currently broken. This commit fixes the
behavior of the command and adds unit tests to ensure the basic semantic
is maintained.

It also changes slightly the behavior of Spec.concretized to avoid
copying caches before the concretization (as this may result in a
wrong hash computation for the DAG).
2018-01-16 08:03:10 -06:00
Todd Gamblin
50ca4979e1 Speed up doc builds with spack list --format=html (#6945)
- Generating the HTML from for >2300 packages from RST in Sphinx seems to
  take forever.

- Add an option to `spack list` to generate straight HTML instead.

- This reduces the doc build time to about a minute (from 5 minutes on a mac laptop).
2018-01-16 00:12:11 -08:00
Massimiliano Culpo
1fb38c9e04 Vendor ordereddict for python2.6 only (#6931)
* Vendor ordereddict for python2.6 only

This commit substitutes the custom module 'ordereddict_backport' with
the more known 'ordereddict' and vendors it only for python 2.6. Other
supported versions of python will use 'collections.OrderedDict'.

* Use absolute imports also for python 2.6

See PEP-328 for more information on the subject

* Added provenance of vendored ordereddict
2018-01-16 07:00:39 +01:00
Adam J. Stewart
498c522a31 Add url_for_version to pango package (#6939) 2018-01-15 14:05:27 -06:00
Geoffrey Oxberry
48b127a225 ipopt: add version 3.12.8, relax metis version requirements (#6936)
* ipopt: add version 3.12.8

* ipopt: allow linking with metis 5
2018-01-15 09:31:50 -06:00
Geoffrey Oxberry
67219a1340 ruby: fix +openssl & +readline variants (#6935)
* ruby: fix +openssl & +readline variants

Fix "unqualified variable spec['openssl']" error in the ruby package
that arises when trying to install the `+openssl` variant by
referencing the `spec` field in the `Ruby` class. A similar error
arises when trying to install the `+readline` variant; this error is
also fixed by this patch.

* ruby: make +openssl variant default to on

Ruby's gem command will fetch gems from HTTPS resources by default
(e.g., gem install bundler). Without openssl, request to fetch gems
bounce back with the error

```
ERROR:  While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
```

Without the ability to install gems -- required for some spack
packages -- the ruby installation has limited utility for many users.

* ruby: update rubygems ssl cert to fix ssl errors

The SSL certificate bundled with Ruby 2.2.0 is outdated, so e.g., `gem
install erubis` will fail with an SSL certificate error. This commit
installs the updated SSL certificate to the proper directory so that
gems can be downloaded and installed from RubyGems.
2018-01-15 09:00:07 -06:00
Federico Ficarelli
6093d6df7d Reworked the graphviz package (#6865)
The url in graphviz has been fixed and its version has been 
updated to the latest available (2.40.1). Added variants for 
expat, qt, gtk+ and ghostscript.
2018-01-15 15:26:14 +01:00
Milton Woods
43190a6bf6 Py-fparser: python parser for Fortran code (#6794)
* py-fparser: parser for Fortran 77..2003 code

* py-fparser: guard against external pytest.ini

* py-fparser: define 'develop' version as latest master branch

* py-fparser: fetch tagged versions from git repo

* py-fparser: add latest release 0.0.6

* py-fparser: whitespace adjustments for flake8

* py-fparser: inherit python dependency from PythonPackage

* py-fparser: rely on spack to resolve sub-dependencies

* py-fparser: try type='test' for py-pytest

* py-fparser: fetch release tarballs instead of git commits

* py-fparser: test deptype is available, remove comment

* py-fparser: limit versions that use py-six

* py-fparser: version ranges do not need a lower bound
2018-01-14 15:42:17 -06:00
lingnanyuan
f7db5d9cac r-rappdirs: Create new package. (#6891)
* r-rappdirs: Create new package.

* r-rappdirs: Add version constraints.
2018-01-14 15:41:32 -06:00
Milton Woods
a11765dbdf Qt fixes for RHEL6/7 (#6895)
* qt: move licence acceptance from qt3krell.patch to qt3accept.patch

* qt: ensure that ptrdiff_t is defined for qt@3.3.8b

* qt: disable webglplugin for qt@5.10~opengl

* qt: depend on libxext (for qt@3 and @4)

* qt: avoid X dependencies on darwin platforms

* Revert "qt: avoid X dependencies on darwin platforms"

This reverts commit 05ce08de94.

* qt: limit range of versions depending on libxext
2018-01-14 15:41:17 -06:00
healther
8f6fe9e030 Fix installation of bash-completion (#6911)
* Fix installation of bash-completion

* use run_before decorator instead of overriding install method
2018-01-14 15:40:22 -06:00
healther
e583d789d6 Update py-backports-functools-lru-cache to 1.4 (#6915)
* Update py-backports-functools-lru-cache to 1.4

* fix old url
2018-01-14 15:39:53 -06:00
healther
a03674ebbd make vim python3 compatible (#6925) 2018-01-14 15:39:33 -06:00
David Pérez-Suárez
0adcb610fe Updated catch to newer version (up to 2.1.0) (#6933)
Also updated all the sums from previous versions
2018-01-14 15:39:10 -06:00
healther
d30dc2bf15 Add version 1.81 of cppcheck (#6912) 2018-01-14 08:14:55 -06:00
Simone Bnà
e2908af9b4 Catalyst package (#6834)
* catalyst: added catalyst package

* catalyst: missing libx11 and libxt dependencies

* catalyst: added std cmake args

* catalyst: override paraview git describe cmake variable

* catalyst: fixed flake8 errors
2018-01-13 22:20:39 -06:00
Michael Kuhn
df7876ab54 Do not construct path to perl command manually (#6927)
Instead, use spec['perl'].command.path.
2018-01-13 22:10:42 -06:00
healther
589ea856a5 Add PyNN 0.9.1 (#6926) 2018-01-13 22:10:10 -06:00
healther
b3c96e2e40 Update checksum for version 0.5.3 of yaml-cpp (#6924) 2018-01-13 22:09:36 -06:00
healther
47b554a959 Add py-pyflakes versions up to 1.6.0 (#6923) 2018-01-13 22:09:17 -06:00
healther
b87f9ae5d4 Add py-pycodestyle versions up to 2.3.1 (#6922) 2018-01-13 22:08:51 -06:00
healther
7c4a193b3f Update py-neo to 0.5.2 (#6921) 2018-01-13 22:08:38 -06:00
healther
a2d7939e27 Add py-mccabe versions up to 0.6.1 (#6920) 2018-01-13 22:08:18 -06:00
healther
176814373c add version 1.26 to py-git-review and fix run_env (#6919)
* Update py-git-review to version 1.26.0

* Fix py-git-review package

TypeError: object of type 'Version' has no len()
2018-01-13 22:08:05 -06:00
healther
c6a7979cfd Update py-flake8 to 3.5.0 (#6918) 2018-01-13 22:07:46 -06:00
healther
8c648a73bc py-doxypy conflicts python3 (#6916)
* py-doxypy conflicts python3

* change conflicts to depends_on
2018-01-13 22:07:14 -06:00
healther
25bcabec98 Update py-autopep8 to 1.3.3 (#6914)
* Update py-autopep8 to 1.3.3

* Update package.py
2018-01-13 22:05:44 -06:00
Michael Kuhn
d8b03d1e37 glib: Fix python handling (#6910)
Newer versions of glib require python. Fix up the python sbangs the same
way we already fix up the perl ones.

Fixes #6899
2018-01-13 08:50:06 -06:00
healther
e8df0ddce4 add patch for gccxml with gcc@5: (#6913) 2018-01-13 08:46:00 -06:00
healther
715a173688 Update py-elephant to 0.4.1 (#6917) 2018-01-13 08:44:43 -06:00
scheibelp
278901c02c Handle test dependencies that are python extensions (#6904)
See #6794

This fixes cases where test-only dependencies were omitted from
consideration when modifying the environment at build time. This
includes an update to the python package definition to add
testing-related python extensions to its specialized environment
setup.
2018-01-12 19:02:54 -08:00
Geoffrey Oxberry
761b8f76d2 coinhsl: add version 2014.01.10 (#6909)
* coinhsl: add version 2014.01.10 (stable)

* coinhsl: make 2014.01.10 preferred version

Make Harwell Subroutines Library for IPOPT version 2014.01.10 the
preferred version because it is the latest stable version released.

* coinhsl: add option to link w/ BLAS libraries
2018-01-12 17:27:52 -06:00
scheibelp
f4101550d1 Relax conflict checks for externals (#6907)
This updates the conflict-checking logic to require that the conflict
spec matches exactly and that all fields mentioned in the conflict
spec are present in the concretized spec in order to report a
conflict. This will automatically skip all conflict checks for
dependencies of externals (since externals strip dependencies). This
will not affect non-external packages since all fields and
dependencies are fully specified for such packages.
2018-01-12 10:53:11 -08:00
健美猫
9e3f8c0d79 A new package: ethminer. (#6908) 2018-01-12 07:50:07 -06:00
Adam J. Stewart
03ff2a32ae Reduce verbosity of build tests (#6901) 2018-01-11 16:14:26 -06:00
Michael Kuhn
070bcab7f2 libbson, libmongoc: Update to 1.9.1 (#6900) 2018-01-11 10:19:44 -06:00
stefanosoffia
5dd7baa61d Updated misc devel tools. (#6897) 2018-01-11 10:06:53 -06:00
Gregory Lee
5d49fe4b4c fix ips 2018 vtune directory name (#6893) 2018-01-11 09:51:14 -06:00
lingnanyuan
637165eef8 r-biocstyle: Create new package. (#6503)
* r-biocstyle: Create new package.

* r-biocstyle: add version constraints.
2018-01-10 23:13:31 -06:00
lingnanyuan
88d9e6bd21 r-bookdown: Create new package. (#6504)
* r-bookdown: Create new package.

* r-bookdown: add version constraints.
2018-01-10 23:13:12 -06:00
lingnanyuan
d2eecf5774 r-rprojroot: Create new package. (#6505)
* r-rprojroot: Create new package.

* r-rprojroot: add version constraints.

* r-rprojroot: Add list_url.
2018-01-10 23:12:54 -06:00
lingnanyuan
384b8f43a2 r-rmarkdown: Update version to 1.7 (#6506)
* r-rmarkdown: Update version to 1.7

* r-rmarkdown: add version constraints.
2018-01-10 23:12:35 -06:00
Massimiliano Culpo
a4c4739626 Travis: upload the coverage data as part of the script (#6877)
According to Travis docs the exit code of after_success doesn't affect
the build result. Instead, uploading the coverage data as the last step
of the script will cause the job to fail if the command exits with
non-zero.

https://docs.travis-ci.com/user/customizing-the-build/#Breaking-the-Build
2018-01-10 20:41:19 -06:00
snehring
d07b83237d discovardenovo: adding new package (#6888) 2018-01-10 20:40:41 -06:00
Adam J. Stewart
d7920ab4f3 Keep track of source and versions for external libraries (#6803)
* Keep track of source and versions for external libraries

* Note source of more obscure libraries

* We aren't upgrading jsonschema after all

* Add note on modifications made to pytest
2018-01-10 19:14:19 -06:00
Adam J. Stewart
57c71aea89 Update to pytest 3.2.5 (#6801)
* Update to pytest 3.2.5

* Get pytest to pass Python 2.6 compatibility checks
2018-01-10 17:41:50 -06:00
Adam J. Stewart
10ee7d6d81 Add suggestion to Contribution Guide to activate flake8 (#6886) 2018-01-10 13:02:33 -06:00
jkelling
da01c8a541 package libharu: Add build deps (#6883)
... libtool,autoconf,automake
2018-01-10 12:28:32 -06:00
stefanosoffia
8a7525064d Updated i3 dependencies. (#6885) 2018-01-10 11:02:07 -06:00
Massimiliano Culpo
596d463714 Travis: use --concurrency=multiprocessing only on build tests (#6872)
On a local workstation, it seems that tracking multiple processes during
coverage may result in malformed coverage reports for unit tests and not
for build tests.

Given that multiple processes make a difference in coverage mainly for
build tests, try to disable the tracking for unit tests to see if we get
more stable coverage results.
2018-01-10 10:14:17 -06:00
Adam J. Stewart
d17a10c6ac Update to the latest version of jinja2 (#6790) 2018-01-10 10:06:04 -06:00
Adam J. Stewart
4fdf08e51c Update to py 1.4.34 (#6789)
* Update to the latest version of py

* Revert back to py 1.4.34
2018-01-10 10:05:39 -06:00
Adam J. Stewart
e4c0ed8540 Add unit tests for spack versions command (#6774)
* Add unit tests for spack versions command

* Fix bug in web spidering for Python 2.6
2018-01-10 10:04:47 -06:00
Adam J. Stewart
2f0dd02c10 Update to the latest version of six (#6787) 2018-01-10 10:04:07 -06:00
Adam J. Stewart
cab34d7d3b Fix bug in placeholder spack cd command and add unit tests (#6776) 2018-01-10 10:03:45 -06:00
Adam J. Stewart
db42d080f7 Geant4: fix qt dependency (#6828) 2018-01-10 09:48:15 -06:00
Adam J. Stewart
ab4e20a49c Older versions of libiconv don't work with newer versions of GCC (#6829) 2018-01-10 09:47:33 -06:00
Levi Baber
c1117f0593 opa-psm2: new package (#6874)
* opa-psm2: new package

* opa-psm2: installs now. think the module file needs work

* opa-psm2: module file seems good now

* opa-psm2: remove fixme

* opa-psm2: flake8 fixes

* opa-psm2: removing unnecessary make in install phase
2018-01-10 09:45:34 -06:00
健美猫
b733ce1e5f bcftools is a AutotoolsPackage. (#6881) 2018-01-10 09:45:05 -06:00
Geoffrey Oxberry
77a29f09f9 emacs: on darwin, do not build Cocoa app (#6882)
Building emacs on darwin throws an error when trying to build an Emacs
app in the nextstep/Emacs.app path of the build tree. For now, disable
building this app.

It's possible to enable building the app also; Homebrew offers options
to this effect, and also adds Mac-specific options for starting the
emacs daemon. However, for the sake of simplicity and getting a
workable up-to-date emacs installation on my machine as quickly as
possible, this commit focuses on a minimal viable modification.
2018-01-10 09:44:35 -06:00
健美猫
ac5b5724c6 Add a new package: unblur. (#6867)
* Add a new package: unblur.

* Add a new package: unblur.

* Add a new package: unblur.

* Add a new package: unblur.

Conflicts:
	var/spack/repos/builtin/packages/unblur/package.py

* Add a new package: unblur.
2018-01-10 09:35:00 -06:00
Adam J. Stewart
ba84630caf Add unit tests for spack arch command (#6775) 2018-01-10 13:53:55 +01:00
Adam J. Stewart
f7bf73a458 Add unit tests for spack graph command (#6778) 2018-01-10 13:52:34 +01:00
Adam J. Stewart
5f6df40f3b Fix bash tab completion for spack install (#6868) 2018-01-10 13:51:04 +01:00
Adam J. Stewart
824e078140 Fix a typo in fetch_strategy error message formatting (#6878) 2018-01-10 13:49:16 +01:00
Adam J. Stewart
8555947e05 Explicitly cast Version to str in openfoam-org (#6880) 2018-01-10 13:48:22 +01:00
Adam J. Stewart
4d4fc8760d Fix tests for git package (#6869) 2018-01-10 13:47:38 +01:00
Yifan Zhu
f498f52a2d casper: new package (#6873)
* casper: create package

* jellyfish: added version 2.2.7

* casper: new package

* casper: depends on jellyfish 2.2.3 or higher

* casper: moved depends_on above install

* casper: updated package.py

* fixing download url for 1.11.1

* casper: set up environment

* casper: add conflicts gcc@7.1.0, cannot install with 7.1.0

* capser: flake8 error corrcted

* casper: create package

* jellyfish: added version 2.2.7

* casper: new package

* casper: depends on jellyfish 2.2.3 or higher

* casper: moved depends_on above install

* casper: updated package.py

* fixing download url for 1.11.1

* casper: set up environment

* casper: add conflicts gcc@7.1.0, cannot install with 7.1.0

* capser: flake8 error corrcted
2018-01-09 22:07:05 -06:00
Eric
15111177a2 prodigal: Create new package (#6870) 2018-01-09 12:57:58 -06:00
健美猫
2dd0749b5f A new package: jbigkit. (#6847)
* A new package: jbigkit.

* A new package: jbigkit.

* Add a new package: jbigkit.
2018-01-09 10:03:31 -06:00
BenBrands
9ef39163d8 changed url for astyle (#6863)
* changed url for astyle

* use SourceForge
2018-01-09 09:40:27 -06:00
George Hartzell
ffa20d2171 [WIP] Fix git gettext/libintl handling (builds on ubuntu) (#6859)
* Fix git on ubuntu, first cut

Spack needs to pass information about where the linker
can find `libintl`.  We're currently using `LDFLAGS` to do so.
The `LDFLAGS` info is pasted into the command line upstream
of the a file (`libgit.a`) that includes unresolved symbols that
need that library.  This fails on Ubuntu, although it seems to
work on CentOS (see #6841).

This change allows git to build on a Ubuntu 16.04.3 droplet.

TODO: test on other platforms...

* Add a bit of useful commentary
2018-01-09 09:40:09 -06:00
Federico Ficarelli
43f98dc0d5 Fix missing dependency in ghostscript (#6866) 2018-01-09 08:43:53 -06:00
Adam J. Stewart
eb42013727 Remove std_cmake_args from VTK definition (#6856) 2018-01-09 08:56:00 +01:00
Eric
697f1061c5 perl-xml-simple: Create new package (#6849)
* perl-xml-simple: Create new package

* perl-xml-simple: fix homepage url
2018-01-08 19:36:04 -06:00
Eric
785389be58 perl-digest-md5: Create new package (#6852) 2018-01-08 19:35:48 -06:00
Eric
c99ad2b4a5 barrnap: Create new package (#6855) 2018-01-08 19:35:31 -06:00
Eric
e72c5ee8a3 perl-swissknife: Create new package (#6851) 2018-01-08 18:46:51 -06:00
Eric
6cf530f28d perl-time-piece: Create new package (#6853) 2018-01-08 18:46:16 -06:00
Eric
8935a0b90b perl-text-unidecode: Create new package (#6854) 2018-01-08 18:45:58 -06:00
Axel Huebl
257d23581c Cleanup: Remove Dbl Brackets (#6848)
Remove unnecessary double brackets in ADIOS2 and gearshifft packages.
2018-01-08 19:42:51 +01:00
Bryce Allen
747dbcb82b fix swift-t packages dependencies (#6530) 2018-01-08 17:25:15 +01:00
Kelly (KT) Thompson
eb66aca9ae Upgrade recipe for parmetis to be a CMakePackage (#6807)
* Upgrade recipe for parmetis to be a CMakePackage

+ Eliminate `install` method (use the one from CMakePackage).
+ Move configure options to new method `cmake_args`
+ Move special install instructions for DarwinOS to a `run_after` method.

* Fix run_after section; Remove variant +debug.
2018-01-08 09:18:42 -06:00
Axel Huebl
298f5562c9 Rmlab: Control PNG (#6846)
Control the find_package of the PNG variant explicitly.
This avoids picking up an "external" PNGwriter install in
case `~png` is picked by changing the default "AUTO" search
to explicit "ON" (required) of "OFF" (ignore if exists).
2018-01-08 09:14:38 -06:00
Adam J. Stewart
ffd435bad7 Add documentation on Codecov (#6842) 2018-01-07 08:28:56 -08:00
Michael Kuron
38fabce2aa Siesta: only apply patch to <4.1 and fix Intel compiler (#6466)
* Siesta: add 3.2 and don't apply patch to 4.1

* siesta: fix bad optimization with Intel compiler

* siesta: Fix download URL

* siesta: build utilities too

* siesta: fix binary name collision

* siesta: Cleanup
2018-01-06 12:03:54 -06:00
Milton Woods
ce0c77c991 Blitz 1.0.1 (#6765)
* blitz: update to version 1.0.1

* blitz: change URL for release tarballs

* blitz: update checksum of @1.0.0 after changing URL
2018-01-06 12:02:41 -06:00
Milton Woods
3c43a2d79c py-psyclone: Parallelisation System for climate models (#6797)
* py-psyclone: Code generation for the PSyKAl framework from the GungHo project

* py-psyclone: add installation tests based on py.test

* py-psyclone: define 'develop' version as latest master branch

* py-psyclone: extract tagged version 1.5.1 from git repo

* py-psyclone: whitespace adjustments for flake8

* py-psyclone: use compatible versions of py-fparser

* py-psyclone: use type='test' for selected dependencies
2018-01-06 12:02:13 -06:00
Jon Rood
8813b3fbd3 Updating OpenFAST to use explicit lapack and blas libraries from Spack. (#6824)
* Updating OpenFAST to use explicit lapack and blas libraries from Spack.

* Simplifying openfast blas lib logic and fixes flake8 errors.

* Changing order of blas and lapack libs in openfast package.
2018-01-06 12:01:06 -06:00
Eric
4cd9bdedd7 sailfish: Create new package (#6827)
* sailfish: Create new package

* sailfish: fix tbb dependency

* sailfish: fix dependency type
2018-01-05 15:08:45 -06:00
Eric
ea6ebedd0e py-pybedtools: Create new package (#6487)
* py-pybedtools: Create new package

* py-pybedtools: add py-six requirement

* py-pybedtools: remove py-cython dependency for release version

* py-pybedtools: include minimum version of py-pysam
2018-01-05 15:08:22 -06:00
Massimiliano Culpo
d978cfbb1a Fixes the bug in spack configure spotted in #6833 (#6837) 2018-01-05 15:07:51 -06:00
Adam J. Stewart
d1aee2c2f2 Fix spack configure output (#6835) 2018-01-05 14:26:43 -06:00
健美猫
fc1c7c2db7 Add a package: ctffind. (#6836)
* Add a package: ctffind.

* Add a package: ctffind.
2018-01-05 13:46:48 -06:00
Kelly (KT) Thompson
322b016230 Provide build_type variant for Metis. (#6808)
* Provide build_type variant for Metis.

+ Ideally, we would make Metis a CMakePackage, but `metis@:5` doesn't use CMake.
+ For now, provide a `build_type=` variant similar what is found in
  CMakePackage.
+ There is a potential for duplicate specification of `CMAKE_BUILD_TYPE` if both
  variants `+debug` and `build_type=` are specified. I am looking for advice on
  how this can be resolved.

* Update metis recipe in response to flake8 and user comments.

+ Wrap comment lines that used more than 80 columns.
+ Change `+debug` variant to avoid potential for multiple `-DCMAKE_BUID_TYPE=`
  arguments provided to cmake.  Specifying this variant no longer appends this
  configure option.  However, if `+debug` is specified, require
  `build_type=Debug` to maintain expected behavior.

* For metis, remove +debug variant; use build_type= instead.

+ Update recipe for metis@4 to extract `build_type=` values and set `OPTFLAGS`
  accordingly.
+ For metis@5:, the behavior from the previously supported variant `+debug` can
  be obtained with the options `+gdb build_type=Debug`

* Conflicts added for metis@4 when build_type != Release|Debug.

* Use spack function conflicts instead of 'raise InstallError'.
2018-01-05 13:45:21 -06:00
David Hows
d4e4755ec9 Fix pymongo package (#6832)
And update to 3.6
2018-01-05 08:47:36 -06:00
健美猫
d438e9da4b Create a symbolic link to the MotionCor2_x.x.x executable. (#6826)
* Create a symbolic link for MotionCor2.

* Create a symbolic link for MotionCor2.

* Create a symbolic link for MotionCor2.

* Create a symbolic link for MotionCor2.
2018-01-04 21:27:59 -06:00
Adam J. Stewart
a7f0da53f7 Revert "openssl: Add perl dependency" (#6831)
* Revert "Added i3 and its dependencies. (#6805)"

This reverts commit a00a09a234.

* Revert "Adding NEURON simulator package (#5097)"

This reverts commit d24782c86d.

* Revert "openssl: Add perl dependency (#5188)"

This reverts commit 395ee97f3b.
2018-01-04 16:46:24 -06:00
stefanosoffia
a00a09a234 Added i3 and its dependencies. (#6805) 2018-01-04 14:45:25 -06:00
Pramod S Kumbhar
d24782c86d Adding NEURON simulator package (#5097)
* Adding NEURON package widely used in computational neuroscience community

* flake8 fixes

* Add rx3d variant

* Addressed review comments from Adam

* Addressed 2nd review comments

* Added check for +mpi on bg-q

* Filter spack compiler wrappers in NEURON scripts
Add gcc march=native flag to make front-end build robust

* Make develop as preferred version due to bug in long filename handlings in <= v7.4

* Avoid use of gcc in cross compiling environment
Use arch specific options on cray and bg-q arch

* Simplify cross compiling build:
    - v7.5 added and no longer need develop as preferred version
    - legacy cray related options removed
    - cross compiling args reduced
    - python arguments reduced as neuron finds proper libraries

* Simplify bg-q configurations

* Cleanup and unify arch options

* Make sure to add commonly available packages as dependency

* Arch path added to dependent_environment as nrniv needed at runtime

* Support for Power 8 architecture

* Fix python3 on OS X

* flake8 fix

* remove unnecessary conflcist directives
2018-01-04 09:55:30 -06:00
Michael Kuhn
395ee97f3b openssl: Add perl dependency (#5188)
perl is required for the configure script.
2018-01-04 09:51:55 -06:00
Brian Van Essen
45188d6d96 Protobuf intel patch (#5233)
* Added a package for the MDAnalysis toolkit.

* Added a patch file to get rid of compiler warnings with intel compiler
and inlining.  Added checksum values for other versions of protobuf.

* Added dependency on Intel compiler for intel patch
2018-01-04 09:48:22 -06:00
Simone Bnà
3f9ed72f68 Fix build of paraview (#5802)
* added variant examples to paraview package.py

* qt: added libxt dependency

* add variant to use external hdf5, this is needed when compiling with gcc@4.8.5

* paraview: added python dependecies to PYTHONPATH
2018-01-04 09:47:17 -06:00
Todd Gamblin
dab2dc24a5 make nghttp2 optional for curl, as it does not build for older compilers. (#5977) 2018-01-04 09:45:45 -06:00
Thilina Rathnayake
9a595ca312 Adding Nek5000 to Spack (#6153)
* Start adding Nek5000 package

* Add tools to install: genmap, prenek, postnek

* Address comments by @davydden

* Use install_tree (thanks @junghans) and polish

* Update url

* Fix flake formatting errors

* Change F77 and CC compilers

Apparently spack compilers can't be called outside spack and we
have an underscore test in our Nek5000/core/makenek.inc file which
calls F77 compiler.

* Add support for visit and profiling options

* Fix a typo

* Fix a typo

* Remove the C check

* Add visit variant

* Update the install of int_tp tool

* Let MAXNEL to be set during installation
2018-01-04 09:41:53 -06:00
lingnanyuan
d62555875a r-rgraphviz: Create new package. (#6316) 2018-01-04 09:37:00 -06:00
serbanmaerean
8f6935d53f Set SMPI library path in dependent packages (#6548)
* Added magma package

* Incorporated Serban's change

* Remove deleted files

* argparse.py

* Sync forked Spack repo in github

* Add spectrum-mpi lib path to LD_LIBRAY_PATH in spack_env.
As a result of supporting alternate installation directories, spectrum-mpi does
not use rpath anymore, so we need to set LD_LIBRARY_PATH in spack_env to allow
MPI programs to run during dependent package configuration.

* Fix flake8 error (blank line at EOF)
2018-01-04 09:10:37 -06:00
Eric
521e9da053 RNA-SeQC: Create new package (#6555)
* RNA-SeQC: Create new package

* RNA-SeQC: Fix flake8 error

* RNA-SeQC: Fix Travis error
2018-01-04 09:07:29 -06:00
lingnanyuan
414287a52e r-rgeos: Create new package. (#6592) 2018-01-04 09:01:17 -06:00
Denis Davydov
cef711458e qt: add 5.10.0, fix macOS build, clean-up comments/TODOs (#6766)
* qt: add 5.10.0, fix macOS build, clean-up comments/TODOs

* qt: fix pkgconfig files

* qt: restore-pc-files.patch

* add version constraint to the patch

* qt: adjust url_for_version for 5.10.0
2018-01-04 09:00:01 -06:00
Milton Woods
70d589a14e xios: I/O management for climate models (#6796)
* xios: XML-IO-SERVER library for IO management of climate models

* xios: install to prefix directory

* xios: add a test case

* xios: define versions to use cache and mirror directories

* xios: use proper svn URL for version 910

* xios: package url must be defined, otherwise uninstall fails

* xios: add trunk version to allow building latest revision

* xios: enable parallel build

* xios: allow installation with mpif90 compiler wrappers

* xios: use mpi variants of dependencies

* xios: allow user to specify MPI launcher via MPIRUN environment variable

* xios: prefer spack versions of blitz and boost (needed for gcc@7)

* xios: enable builds with clang+gfortran on OSX

* xios: use numeric versions for releases, @develop for trunk

* xios: different patches required for @1.0 and @develop

* xios: patch function for clang works across revisions

* xios: link blitz library

* xios: workaround bug 17782 in llvm

* xios: whitespace adjustments for flake8

* xios: avoid bare except clause

* xios: netcdf-fortran inherits ^netcdf+mpi from xios dependencies
2018-01-04 08:58:24 -06:00
Eric
75f1a91821 py-umi-tools: Create new package (#6823)
* py-umi-tools: Create new package

* py-umi-tools: fix dependencies
2018-01-04 08:55:37 -06:00
Loikki
229db0f1c7 Update grackle (#6822) 2018-01-03 21:35:17 +01:00
Mark Olesen
f07ce6094e package openfoam-com: add version 1712 and update patches (#6820)
* combine all patches for 1612 into a single file, with additional
  comments to explain the rational.

* Add kahip decomposition variant.

* Add support for ARM64 architecture.

* filter instead of patching etc/config.*/settings. This eliminates
  patch files for 1706, perhaps for the future as well.

* URLs at or before version 1612 have a different structure, so
  provide a url_for_version implementation to handle this
2018-01-03 11:30:10 -08:00
Sinan
2f551908b8 package/r-rjags: create new package (#6804)
* package/r-rjags: create new package

* fix typo

fix typo

* package/r-rjags small fix to pass flake8 tests

* package/r-rjags: more fixes to satisfy flake8 tests
2018-01-03 10:17:15 -06:00
健美猫
34c9f08c2c fltk depends on libx11. (#6816) 2018-01-03 10:14:51 -06:00
健美猫
ce317674bf Add a new version and runtime dependency for MotionCor2. (#6817)
* Update motioncor2 to 1.0.4 and add libtiff dependency.

* Add comments for libtiff dependency in MotionCor2.
2018-01-03 10:03:35 -06:00
健美猫
ec2c0b3e65 Add libtiff@3. (#6818) 2018-01-03 10:02:45 -06:00
Denis Davydov
e623bbb679 suite-sparse: support 64bit BLAS (#6767)
* suite-sparse: support 64bit BLAS

* use double quotes instead of escaped quotes
2018-01-03 09:58:19 -06:00
stefanosoffia
2ed914aa1b Flex v2.6.4 conflicts with gcc@7.2.0 (#6819) 2018-01-03 09:46:57 -06:00
Douglas Duckworth
d466d8f3d3 singularity - added master branch (#6631)
* singularity - added master branch as this has latest fixes - 2.4 does not compile on centos 6 without use of this branch

* renamed to develop

* added master branch properly
2018-01-02 21:47:21 -06:00
Axel Huebl
5d2f752c1b New Package: py-adios (#5686)
The ADIOS1 numpy bindings depend on an installed, fully loaded
ADIOS C library + its config tools to build properly.
2018-01-02 21:37:59 -06:00
Brian Van Essen
3c63710532 Intel mkl dnn (#6268)
* Added a package for the MDAnalysis toolkit.

* Added a package for the Intel MKL-DNN project.

* Fixed flake8 errors.

* Fixed Flake8
2018-01-02 21:27:34 -06:00
Michael Kuhn
01bec7976b Fix HTML detection (#6394)
Some servers report a content-type header instead of Content-Type.
2018-01-02 21:21:36 -06:00
Eric
d2c3b3884b rsem: update version 1.3.0 md5sum (#6650) 2018-01-02 21:15:40 -06:00
Michael Kuron
2c5c7a37cb atom-dft: new package plus dependencies (#6653)
* atom-dft: new package plus dependencies

* Indentation fix

* Use the compiler wrappers

* Pass variables instead of using FileFilter
2018-01-02 20:32:37 -06:00
Jimmy Tang
ea6b6ef1ff Install all the cli tools from all the sub-directories (#6705)
* Install all the cli tools from all the sub-directories

* Satisfy pep8
2018-01-02 20:14:39 -06:00
Feiyi Wang
8ed1c84539 py-lrudict: a LRU-based cache dictionary (#6734)
* add py-lrudict

* style fix

* style fix: add blank lines
2018-01-02 20:10:49 -06:00
Feiyi Wang
8221265c3c py-scandir: a better directory iterator, backport to 2.7 (#6739) 2018-01-02 20:08:58 -06:00
Levi Baber
59cd2db8f3 gatk: boilerplate cleanup (#6744) 2018-01-02 20:05:04 -06:00
Denis Davydov
4b5fe75bc3 add OctavePackage (#6746)
* add OctavePackage

1. remove import CudaPackage which is not needed anymore
2. mention CudaPackage and OctavePackage in packaging guide
3. adjust OctavePackageTemplate
4. add clue file for Octave build
5. sanity check on self.prefix

* use setup_environment
2018-01-02 20:03:27 -06:00
Feiyi Wang
fd6b9ac3af py-xattr: a python interface to access extended file attribute (#6747)
* py-xattr: a python interface to access extended file attribute

* py-xattr: style fix
2018-01-02 20:02:03 -06:00
Brian Van Essen
a92268d62a Lbann update (#6751)
* Added a package for the MDAnalysis toolkit.

* Updated the LBANN recipe to use the revised cmake environment being
rolled out.

* Flake8 errors
2018-01-02 20:01:23 -06:00
Denis Davydov
3d257e8280 likwid: add stable 4.3.0 (#6761) 2018-01-02 19:59:14 -06:00
Denis Davydov
cc74da5aab mesa: disable binutils on macOS (#6763) 2018-01-02 19:58:38 -06:00
Levi Baber
353870fe50 jags: lapack fix (#6764)
* jags: fixing openblas thows a lapack error when compiling. atlas works. other lapack providers may work. also adding tags

* changing blas/lapack reference

* removing openblas conflict

* jags: whitespace cleanup for flake8
2018-01-02 19:57:54 -06:00
Milton Woods
6922ea5889 Esmf fixes for Cray, OSX and mpich (#6768)
* esmf: put .mod files in the spack compiler search path

* esmf: allow building with Cray mpi

* esmf: create run-path dependent libraries on osx

* esmf: link fortran interface libraries when building with mpich
2018-01-02 19:43:55 -06:00
Jon Rood
e1e24ff80e Adding option to build Nalu with Hypre support. (#6782) 2018-01-02 19:42:47 -06:00
peetsv
fef93d2221 perl-xml-libxml: adding perl module (#6783)
* perl-xml-libxml: adding perl module

* line length change
2018-01-02 19:42:09 -06:00
Sinan
7f319b9f84 create perl-file-which package (#6800)
* create perl-file-which package

* trivial edits for package.py so

trivial edits for package.py so that flake8 will not complain
2018-01-02 19:36:59 -06:00
stefanosoffia
2aaba189ed Updated 'nginx' from v1.12.0 to v1.13.8. (#6810)
This fixes build issues with most recent gcc versions.
See issue #6252.
2018-01-02 19:29:47 -06:00
Eric
958abe5b29 py-pyani: Create new package (#6811) 2018-01-02 19:27:42 -06:00
Eric
7db7b5b596 MinCED: Create new package (#6815) 2018-01-02 19:25:08 -06:00
Levi Baber
08ea9808c6 adding specific version url for augustus 3.3 due to old folder structure (#6813) 2018-01-02 19:24:28 -06:00
Jon Rood
285538a78d Tioga package: Explicitly list MPI compilers for Cmake (#6741) 2018-01-02 13:14:22 -08:00
Jon Rood
2812644ed7 paraview package: Explicitly specify MPI compilers in Cmake (#6738) 2018-01-02 13:06:25 -08:00
Milton Woods
5dd5dc01c2 new package: Pfunit: unit testing framework for Fortran (#6795) 2018-01-02 12:18:08 -08:00
Eric
e483f9297a new package: DIAMOND (#6793) 2018-01-02 12:03:45 -08:00
Eric
8271f0e271 new package: tantan (#6792) 2018-01-02 12:00:13 -08:00
Adam J. Stewart
b10098dc53 Cython only needed for develop version of mpi4py (#6780) 2018-01-02 11:34:24 -08:00
Adam J. Stewart
464ca87879 Add more unit tests for spack clean command (#6777) 2018-01-02 11:31:38 -08:00
Eric
9ac9017589 new package: py-rseqc (#6773) 2018-01-02 11:10:55 -08:00
Eric
e8b1e79fbf package py-biopython: remove py-mx dependency (#6772) 2018-01-02 10:59:21 -08:00
Eric
caa39d08d4 package r-rcurl: boilerplate cleanup (#6771) 2018-01-02 10:58:03 -08:00
Eric
c3b003e698 bamtools: Add version 2.5.1 (#6770) 2018-01-02 10:55:07 -08:00
Adam J. Stewart
05ce8407af Add unit tests for spack help command (#6779)
* Add unit tests for spack help command
* Work around issue with using `spack help` twice in tests
2017-12-30 22:55:49 -08:00
Adam J. Stewart
088c193a78 Update to the latest version of argparse (#6786)
* Update to the latest version of argparse

* Re-add colified logic
2017-12-30 16:08:35 -08:00
Adam J. Stewart
010334bf22 Update to distro 1.0.4 (#6788)
* Update to the latest version of distro

* Update distro to 1.0.4
2017-12-30 15:44:19 -08:00
Axel Huebl
da93c9b870 Add: lines-are-beautiful (#6784)
Adds the C++ File API library "lines-are-beautiful" for the
reMarkable e-ink tablet.
2017-12-30 12:29:27 -08:00
Nichols A. Romero
24743b7e5a QMCPACK package: update blas/lapack detection (#6753)
* Fix detection of blas and lapack: provide libraries/includes as
  arguments to CMake rather than using CMake's auto-detection.
  This includes a patch to QMCPACK's CMake files to refer to
  Spack-built blas/lapack implementations. This also includes
  special-case logic for the intel-mkl implementation of blas/lapack

* Break up unit tests and short tests. Only hard failure if the unit
  tests fail, if short tests fail issue a warning only.

* Add QMCPACK 3.3.0, get rid of 3.0.0
2017-12-22 16:47:49 -08:00
Adam J. Stewart
0c1f4a7997 Add more unit tests for spack list command (#6750) 2017-12-22 10:29:20 -08:00
Massimiliano Culpo
d3913709bb spack mirror remove: fix no-update error (#6559)
Fixes #4573 

"spack mirror remove" was not actually removing mirrors from the
configuration.
2017-12-22 10:28:23 -08:00
Denis Davydov
f764ac4573 dealii: support 64bit BLAS (#6758) 2017-12-22 15:55:04 +01:00
Andrey Prokopenko
937f68c359 clang,flang: update CC, CXX environment in installation module (#6737) 2017-12-22 07:32:10 +01:00
peetsv
d1786779c4 gmap-gsnap: adding version 2014_12_28 (#6720) 2017-12-22 06:56:58 +01:00
Adam J. Stewart
1ce0c1b556 Fix python3 compatibility bug in spack edit command (#6748)
In Python 2, filter() returns a list, but in Python 3, filter()
returns an iterator, and iterators have no length.
2017-12-21 17:45:15 -08:00
becker33
feb4f1b387 separate stdout and stderr for module loading (#6713) 2017-12-21 16:27:52 -08:00
Levi Baber
f2e061debf Feature/fasttree (#6227)
* fasttree: new package

* fasttree: better version handling

* fixing line length for flake8
2017-12-20 19:10:24 -08:00
Patrick Gartung
e5d6f28b4e binary caching: handle files misidentified as needing relocation (#6679)
* Only specify a file as needing relocation if it contains the spack
  root as a text string (this constraint also applies to binaries)
* Don't fail if there is an error retrieving RPATH information from a
  binary (even if it is specified as requiring relocation)
2017-12-20 18:21:41 -08:00
becker33
28d8784ab9 Compiler flag handlers (#6415)
This adds the ability for packages to apply compiler flags in one of
three ways: by injecting them into the compiler wrapper calls (the
default in this PR and previously the only automated choice);
exporting environment variable definitions for variables with
corresponding names (e.g. CPPFLAGS=...); providing them as arguments
to the build system (e.g. configure).

When applying compiler flags using build system arguments, a package
must implement the 'flags_to_build_system_args" function. This is
provided for CMake and autotools packages, so for packages which
subclass those build systems, they need only update their flag
handler method specify which compiler flags should be specified as
arguments to the build system.

Convenience methods are provided to specify that all flags be applied
in one of the 3 available ways, so a custom implementation is only
required if more than one method of applying compiler flags is
needed.

This also removes redundant build system definitions from tutorial
examples
2017-12-20 15:40:38 -08:00
Mark Olesen
ef2e51571d ENH: better handling of mpich for openfoam packages
- define MPICH_SKIP_MPICXX, link libmpich instead of libmpi
  (as per disussion in PR #4990)

ENH: more flexible editing/patching of openfoam env files

CONFIG: comment out requirement for openmpi+thread_multiple

- was originally slated for the 1712 release and beyond, but there are
  reportedly unstable version/network combinations.
  Leave as comment for future reference, since it may be arise again.

STYLE: renamed openfoam-site.patch as 1706-site.patch (and reformatted)

- to preserve against impending changes in the layout of
  config.{csh,sh}/settings
2017-12-20 11:32:33 -08:00
Mark Olesen
235c3c1025 ENH: improved openfoam module creation (issue #4942)
- post-install module settings for openfoam-com and foam-extend.
2017-12-20 11:32:33 -08:00
Eric
6ea4614dbd picard: Add version 2.17.0 (#6729) 2017-12-20 13:28:37 +01:00
Denis Davydov
ea5f8c7382 octave: add optim and struct packages (#6733) 2017-12-20 13:27:50 +01:00
Gregory Lee
241ea77229 sqlite package: apply B0 patch to additional versions (#6728) 2017-12-19 11:06:39 -08:00
Denis Davydov
0ef741d291 slepc: add 3.8.2 (#6724) 2017-12-19 15:40:30 +01:00
Denis Davydov
e462d39afe intel-tbb: add 2018.2 (#6725) 2017-12-19 15:39:42 +01:00
Denis Davydov
98f220b304 hypre: add 2.13.0 (#6726) 2017-12-19 15:39:27 +01:00
Denis Davydov
599094abbd suite-sparse: add 5.1.0 (#6727) 2017-12-19 15:39:12 +01:00
Jack Morrison
720ad57bcd Added GDB verison 8.0 (#6704) 2017-12-19 09:54:18 +01:00
peetsv
d0a10edb67 nextflow: adding version 0.21.0 (#6722) 2017-12-19 09:07:33 +01:00
Peter Doak
d4c84be91b Emacs: added gnutls variant (tested on Centos 7) (#6711) 2017-12-19 08:36:54 +01:00
Denis Davydov
69f959ec0b gmsh: add 3.0.6 (#6718) 2017-12-19 08:31:23 +01:00
junkudo
d69d692203 CoinHSL : Prevent CoinHSL from building in parallel (#6715)
CoinHSL does not seem to be able to be built in parallel. This commit forces serial compilation.
2017-12-19 08:30:39 +01:00
Denis Davydov
548c225d45 dealii: add GMSH, add CMAKE_FIND_APPBUNDLE to CMakePackage (#6723)
* dealii: add GMSH dependency

* CMakePackage: add CMAKE_FIND_APPBUNDLE to prevent picking up binaries from /Applications
2017-12-19 08:28:55 +01:00
peetsv
e8de22ce46 lftp: adding version 4.6.4 (#6721) 2017-12-19 08:19:33 +01:00
Mark Olesen
b3e9192d18 openfoam-org: new version (#6686)
Add new version with a patch.
2017-12-18 19:47:49 -08:00
peetsv
f7a5a27138 IGV: new package (#6710) 2017-12-18 19:37:09 -08:00
Massimiliano Culpo
0192455885 spack install: make restaging the default (#6465)
Fixes #5940

This PR changes the option '--restage' of 'spack install' to
'--dont-restage', inverting its meaning and the default behavior
of the command.
2017-12-18 18:50:02 -08:00
Benedikt Riedel
36fa574779 globus-toolkit: add version and openssl dependency (#6617) 2017-12-18 15:23:56 -08:00
Douglas Duckworth
d3519af7de relion - added new stable version 2.1 (#6706) 2017-12-18 10:38:20 -08:00
healther
0cff0fba73 fix post install method for py3 in mercurial (#6497)
* fix post install method for py3 in mercurial

* Update package.py

* Update package.py

* use print_str instead of manual print detection

* Update package.py

* use only depends_on

* Update package.py

* Update package.py

State py3 compatibility for @4.3: according to setup.py from the 4.3.tar.gz from pypi
2017-12-17 12:00:58 -06:00
Sergey Kosukhin
576ef5e2b3 Package 'cdo': get rid of unnecessary dependency on MPI C++ library. (#6632) 2017-12-16 19:48:56 -07:00
nshtg
2a639097b0 Add new package signify (#6645)
OpenBSD tool to sign and verify signatures on files.

See https://github.com/aperezdc/signify
2017-12-16 19:47:59 -07:00
Eric
7d800a0fc2 breseq: Create new package (#6648) 2017-12-16 19:47:11 -07:00
fpruvost
6c81cf1a78 build lapacke with tmg (#6654) 2017-12-16 19:43:46 -07:00
David Orman
7b8d889d31 bwa: added version 0.7.16a and checksum (#6658) 2017-12-16 19:43:02 -07:00
Jack Morrison
d4cc1ac86b Hadoop: Replace broken url (#6671) 2017-12-16 19:42:03 -07:00
David Böhme
3467c207c8 Caliper update, add version 1.6.0 (#6680) 2017-12-16 19:39:52 -07:00
Eric
dac09dd5fb py-bx-python: Create new package (#6672) 2017-12-16 19:38:59 -07:00
Eric
d08dc0c019 py-tetoolkit: Create new package (#6673) 2017-12-16 19:38:36 -07:00
Eric
d3545ed1b3 py-pandas: add versions 0.19.2 and 0.21.1 (#6687) 2017-12-16 19:38:02 -07:00
Paschalis Korosoglou
a69cfd5f78 Add petsc version 3.8.3 (#6688) 2017-12-16 19:37:35 -07:00
Paschalis Korosoglou
61dbd3182d Add clanguage variant for petsc (#6689) 2017-12-16 19:37:20 -07:00
Eric
87420dccee bedtools2: Add version 2.27.1 (#6693) 2017-12-16 19:36:35 -07:00
peetsv
5d0e7abcc5 MetaSV: adding new package (#6691) 2017-12-16 19:36:11 -07:00
Eric
5539c94e67 PANDAseq: Create new package (#6694) 2017-12-16 19:35:48 -07:00
Eric
554d4045fa DeNovoGear: Create new package (#6699) 2017-12-16 19:34:53 -07:00
lingnanyuan
34cf796b54 mefit: Create new package. (#6700) 2017-12-16 19:34:30 -07:00
Denis Davydov
f78418d8bb moltemplate: add new package (#6702) 2017-12-16 19:33:28 -07:00
David Orman
176b518d4b new package: gatk (#6674) 2017-12-15 11:00:55 -08:00
Jon Rood
7369ba21bf new package: Percept (#6636)
This also adds the 'exception' boost library to the set of default
libraries built by boost.
2017-12-14 18:11:47 -08:00
scheibelp
020ce7735d Skip collection of compilers which report an empty version (#6684)
Fixes #6200

For compilers that successfully run a version detection script but
don't actually return a version, Spack was keeping track of the
empty version and then failing when attempting to construct a
compiler spec. This skips any attempt to add a compiler entry when
no version is reported (but logs when a compiler fails to report
a version).
2017-12-14 17:54:57 -08:00
Douglas Duckworth
1aed3f7c01 added breakdancer (#6319) 2017-12-14 14:43:32 -07:00
Massimiliano Culpo
6c1fa37e3d fftw: added version 3.3.7 (#6678) 2017-12-14 21:38:33 +01:00
Mark Olesen
5727054c4a misc fixes, changed to EnvironmentModifications (issue #6501) (#6541)
* Support pruning of vars with Env from_sourcing_file (issue #6501)

- Blacklist string literals or regular expressions of environment
  variables that are to be removed from consideration as being affect
  by the sourcing of the file. Conversely, whitelist modifications
  that should not ignored.  Whitelisted variables have priority over
  blacklisting.
  Eg,

      EnvironmentModifications.from_sourcing_file
      (
          bashrc
          blacklist=['JUNK_ENV', 'OPTIONAL_.*'],
          whitelist=['OPTIONAL_REQUIRED.*']
      )

This modification can be used to eliminate environment variables that
are not generalized for modules (eg, user-specific variables).

* BUG: module prepend-path in wrong order (fixes #6501)

* STYLE: module variables in sorted order (issue #6501)

- looks nicer and also helps when comparing the contents of different
  module files.

* ENH: remove duplicates from env paths when creating modules (issue #6501)

- this makes for a cleaner module environment and helps avoid some
  unnecessary changes to the environment that are only provoked by
  redundancies in the PATH.

  eg,
      before PATH=/usr/bin
      after  PATH=/usr/bin:/usr/bin:/my/application/bin

  should only result in /my/application/bin being added to the PATH
  and not /usr/bin:/my/application/bin

Activate via the 'clean' flag (default: False):

    EnvironmentModifications.from_sourcing_file(bashrc, clean=True,..
2017-12-14 21:24:06 +01:00
Jon Rood
b447c2ba51 Add TIOGA package and optional dependency of Nalu on TIOGA (#6638) 2017-12-14 11:46:25 -08:00
Scott Wittenburg
ce832fca59 libharu: Make dependencies on zlib and libpng explicit (#6682) 2017-12-14 08:58:42 +01:00
Douglas Duckworth
5a66065dfa relion: add version and cuda arch variant (#6317)
Add preferred version 2.0.3. Added beta version. Added conflict with
gcc versions >= 5 when building with cuda@8 (which is currently the
only supported cuda version). Added cuda architecture variant. Added
comment about current lack of cuda@9 support.
2017-12-13 10:30:38 -08:00
Denis Davydov
c0aa12111b tasmanian: add new package (#6659) 2017-12-13 16:01:51 +01:00
Axel Huebl
836bf65250 CUDA: 9.1 (#6663)
Add the latest CUDA release, 9.1
2017-12-13 14:43:40 +01:00
peetsv
2e4c9e47a8 py-pysam: adding old version 0.7.7 (#6675) 2017-12-13 09:01:45 +01:00
Eric
5fa9e61321 SPAdes: add version 3.11.1 (#6668) 2017-12-13 08:57:29 +01:00
David Orman
c5cb8ae159 picard: added version 2.13.2 (#6669) 2017-12-13 08:57:06 +01:00
Scott Wittenburg
6628b6ca01 Ignore log files that appear in root dir with "spack -d install ..." (#6670) 2017-12-13 08:35:39 +01:00
Audrey Thoma
45784af7f2 new packages: biopieces and dependencies (#6478)
This also adds the tcl, tk, and libx11 dependencies to ruby. All other
changes are new packages.
2017-12-12 18:35:13 -08:00
Christoph Junghans
27be66420a laghos: inject CXX (#6664) 2017-12-12 17:26:02 -07:00
Christoph Junghans
e80a27d713 swfft: inject CC/CXX (#6666) 2017-12-12 17:25:48 -07:00
Satish Balay
80284617a5 xsdk: update xsdk@develop to use sundials, plasma, magma (#6649)
Also update xsdk@0.3.0 to use a fixed version of magma
2017-12-12 09:31:08 -08:00
nshtg
e831ecbf3a Add new package minisign (#6644)
A dead simple tool to sign files and verify signatures.

See https://jedisct1.github.io/minisign
2017-12-11 17:27:40 -07:00
nshtg
45e8e4b4fb libsodium: Update to 1.0.15 (#6643) 2017-12-11 17:27:09 -07:00
nshtg
25aa21a7a7 git: Update to 2.15.1 (#6642) 2017-12-11 17:26:53 -07:00
nshtg
74938f58d2 openssl: Update to 1.0.2n (#6641)
From 07.12.2017, fixes CVE-2017-3737
2017-12-11 17:26:37 -07:00
Brian Van Essen
6fec473e9e Py h5py update (#6635) 2017-12-11 17:26:13 -07:00
becker33
9d8ea00966 add -d option for edit command (#6416)
* add -d option for edit command and improve suffix extrapolation from '.py' to use glob
2017-12-11 16:17:53 -08:00
健美猫
e19aa80734 intel-parallel-studio: restrict patch to versions > 2016 (#6523)
Fixes #6522

Patch psxevars.sh and psxevars.csh only when year > 2016.
pxevars.csh does not exist for versions before 2017. psxevars.sh
does not appear to require this patch for versions before 2017.
2017-12-11 13:14:24 -08:00
Massimiliano Culpo
bd5d6b2bfa Simplified "Environment-Modules" section in getting started guide. (#6410)
Fixes #2440

The "Getting started" guide should be short and sweet. This commit
simplifies the "Environment-Modules" section pruning:

 - outdated / wrong suggestions as noted in #2440
 - uncommon setups that are better treated in a reference guide
2017-12-11 11:34:39 -08:00
Johann Klähn
e83c3d1b6a bazel: include SPACK_DEBUG_LOG_ID in environment (#6562)
Fixes #6521.

Bazel's build system filters environment variables, including those
set by Spack for use by its compiler wrapper. This updates the patch
to include the SPACK_DEBUG_LOG_ID variable added in #5837.
2017-12-11 10:34:06 -08:00
Satish Balay
53b2ec356b disable plasma in xsdk 0.3.0 (#6621) 2017-12-10 17:51:54 -08:00
Adam J. Stewart
f41a263a28 Fix reference to self.versions in neovim package (#6639) 2017-12-10 21:43:49 +01:00
Cyrus Harrison
95a384f051 updates to conduit and ascent packages (new PR) (#6584)
* optional path to use spacks py-site-pkgs, install host-cfg for provenance

* add more comments and address review requests

* only use st-pkgs-dir when +python

* ascent does not need doxygen

* capture mpiexec if it exists

* added missing import

* flake8 fix

* default adios variant to False

* ascent develop now reqs conduit master

* optional path to use spacks py-site-pkgs, install host-cfg for provenance

* add more comments and address review requests

* only use st-pkgs-dir when +python

* ascent does not need doxygen

* capture mpiexec if it exists

* added missing import

* flake8 fix

* default adios variant to False

* ascent develop now reqs conduit master

* conduit: use hdf5 1.8 for wider output compat
2017-12-08 13:43:12 -08:00
Chris Green
e279299b9b Relax restriction on lua version. (#5886) 2017-12-08 20:52:00 +01:00
Thilina Rathnayake
c1bc1be2a7 Add NekCEM package to spack (#6509) 2017-12-08 10:30:42 -07:00
Thilina Rathnayake
d6db532095 Update the Nekbone package (#6508) 2017-12-08 10:29:58 -07:00
healther
4c02e7e9f4 add restriction to py-setuptools dependency on py-flake8 (#6589) 2017-12-08 10:22:52 -07:00
Eric
bb8e7ee023 Perl-statistics-descriptive: Create new package (#6588) 2017-12-08 10:22:16 -07:00
Axel Huebl
5bf19a9d84 Fix AstroPy: Missing Markupsafe (#6630)
`py-markupsafe` was missing during `spack install` as a build error.
2017-12-08 10:21:46 -07:00
Axel Huebl
353ea07040 Add: Py-Plotly (#6628)
* Add: Py-Plotly

The requirements of py-plotlit are rather strict fixed to specific
versions, so I did not add an "upper versions" `:` to the constrains.
See
  https://github.com/plotly/plotly.py/blob/master/requirements.txt

* Py-Requests, Py-Six, Py-Pytz: Older Versions

Add two older versions of requests, pytz and six for plotly.
2017-12-08 10:21:28 -07:00
Paschalis Korosoglou
5e8139cbd1 Fix in download url for package libaio (#6616) 2017-12-08 10:20:14 -07:00
nshtg
e283a79da6 Update zsh to 5.4.2 (#6609) 2017-12-08 10:19:40 -07:00
lingnanyuan
3474dd5d40 r-tidycensus: Create new package. (#6595) 2017-12-08 10:18:45 -07:00
lingnanyuan
cc20ad0eec r-rgdal: Create new package. (#6593) 2017-12-08 10:18:29 -07:00
lingnanyuan
85c4224474 r-tigris: Create new package. (#6591) 2017-12-08 10:18:11 -07:00
nshtg
173236dacf Update openSSL to 1.0.2m/1.1.0g (#6596) 2017-12-08 10:13:58 -07:00
nshtg
fd764b9946 Update openSSH to 7.6p1 (#6598) 2017-12-08 10:13:41 -07:00
nshtg
1954075091 Update tmux to 2.6 (#6597) 2017-12-08 10:13:22 -07:00
Tzanio Kolev
2343e5185d Updated hash for v1.0 tag of Laghos (#6626) 2017-12-08 10:12:33 -07:00
Sergey Kosukhin
bd92cc0a1a Package 'openjpeg': set INSTALL_NAME_DIR on MacOS for old versions. (#6603) 2017-12-08 13:36:20 +01:00
Paschalis Korosoglou
1bdea98978 r-rhtslib: added build dependency on autoconf (#6627) 2017-12-08 11:18:25 +01:00
Eric
1c72a5da3a py-cogent: Create new package (#6624) 2017-12-08 10:38:37 +01:00
Denis Davydov
23d56a75ab dealii: update boost dependency (#6586)
(i) blacklst 1.65.0 due to issues on Ubuntu with gcc 5.4.0
(ii) add a patch for 1.65.1 to fix serialization
(iii) simplify boost's depends_on()
2017-12-08 10:37:54 +01:00
lingnanyuan
96476a32e5 py-htseq: Create new package. (#6623) 2017-12-08 10:36:57 +01:00
Brian Van Essen
20fc7d56d7 Candle benchmarks update (#6619)
Added a dependency on HDF5 support for the CANDLE benchmarks.
2017-12-08 10:34:49 +01:00
Benedikt Riedel
df184c707a Adding openssl dependency to xrootd. Closes #6601 (#6618) 2017-12-08 10:33:08 +01:00
nshtg
17692d6c05 Update vim to 8.0.1376 (#6599) 2017-12-08 10:29:50 +01:00
Eric
6f34c68aff subread: Add version 1.6.0 (#6615) 2017-12-08 10:26:18 +01:00
Denis Davydov
26e109027b qrupdate: fix blas/lapack and compilation of macOS (#6614) 2017-12-08 10:24:44 +01:00
Eric
62d5bb41a8 py-reportlab: Create new package (#6612) 2017-12-08 10:22:46 +01:00
nshtg
636ed371d8 Update fish to 2.7.0 (#6608) 2017-12-08 10:15:40 +01:00
Eric
91eca9143e bedtools2: Add version 2.27.0 (#6606) 2017-12-08 10:13:13 +01:00
Kelly (KT) Thompson
147a12dd06 Provide a patch to allow hdf5@1.10.1 to build with intel/18.0.1. (#6583)
This is known issue.  See:

https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/747951.
2017-12-08 09:55:06 +01:00
Sergey Kosukhin
a593553d48 Update for 'eccodes'. (#6604) 2017-12-08 09:34:37 +01:00
Sergey Kosukhin
a110a86ad6 Update for 'grib-api'. (#6605) 2017-12-08 09:33:30 +01:00
Jon Rood
69e76a0a89 Update openfast package to explicity pass MPI implementation during cmake configure. (#6590) 2017-12-08 09:09:35 +01:00
Axel Huebl
f49c186f4f wxWidgets: Fix builds (#6560)
- depends on GTK+ with X enabled
  (btw, non-X backends are deprecated/removed in GTK+)
- patch for 3.0.1-3.0.2: missing include caused multiple
  `error: call of overloaded ‘abs(XYPOSITION)’ is ambiguous`
  (seen in GCC 6.3.0); fixed in 3.0.3+
2017-12-07 08:33:08 +01:00
Massimiliano Culpo
05b10ce967 config.py: fixed comments that refer to variables following them (#6585)
According to the documentation here:

  http://www.sphinx-doc.org/en/stable/ext/autodoc.html

"For module data members and class attributes, documentation can either
be put into a comment with special formatting (using a #: to start the
comment instead of just #), or in a docstring after the definition."
2017-12-07 08:09:53 +01:00
lingnanyuan
3a4329c77d r-pathview: Create new package. (#6582) 2017-12-06 18:29:45 -07:00
lingnanyuan
c2ea795b08 r-kegggraph: Create new package. (#6580) 2017-12-06 18:29:22 -07:00
lingnanyuan
96c95db793 r-org-hs-eg-db: Create new package. (#6581) 2017-12-06 18:29:04 -07:00
Sergey Kosukhin
9a4dd413bb Package 'libszip': update checksum and list_depth. (#6587) 2017-12-06 18:28:11 -07:00
Sergey Kosukhin
bcb1630e39 CMAKE_INSTALL_RPATH is semicolon-separated. (#6577) 2017-12-06 08:07:11 +01:00
Eric
24d60a95c0 picard: Add version 2.16.0 (#6579) 2017-12-06 08:04:06 +01:00
Audrey Thoma
a97824df98 mrbayes: url now points to github + removed the deprecated sourceforge url (#6578) 2017-12-06 07:58:08 +01:00
Jon Rood
5c43090ceb Update CGNS and add CGNS capability to Trilinos (#6568)
* Update CGNS to be able to be used in Trilinos.

* Updating Trilinos to be able to use CGNS.

* Fixing wrong cmake defines in trilinos for enabling cgns and cleaning up cgns package.

* Changing cgns parallel variant to mpi. Removing explicit dependence on parallel-netcdf in trilinos.
2017-12-05 14:33:36 -07:00
nshtg
01ba69c635 Update gnupg to 2.2.3 (#6573)
Updated dependencies:

* libassuan 2.4.5
* libgcrypt 1.8.1
* npth 1.5
2017-12-05 14:29:20 -07:00
Axel Huebl
9e64fa53ed Add Maintainer (#6575)
Add myself as maintainer to the packages we contributed
and/or maintain the mainline from.
2017-12-05 14:27:56 -07:00
Jon Rood
67d7f3fc03 Add opennurbs package (#6570)
* Adding OpenNurbs package.

* Fixing flake8 error.

* Removing unused os import from opennurbs.
2017-12-05 10:33:55 -07:00
Axel Huebl
5a908a1c8a ADIOS 1.13.0: LZ4 & blosc support (#6572)
Add additional transform libraries to ADIOS.
Also modifies existing transforms to the versions they were
introduced (otherwise this was resulting in unknown configure flags).
2017-12-05 15:28:44 +01:00
Axel Huebl
e47d89a2ab ADIOS 1.13.0: Newer SZ Versions (#6561)
The latest release of ADIOS needs a newer version of SZ due to an upstream library naming change.
2017-12-05 12:50:22 +01:00
Axel Huebl
09e68c5c8a c-blosc: 1.12.1 (#6571)
Adds a newer release of c-blosc, adds the new flags for external library builds, adds missing dependencies.
2017-12-05 12:49:22 +01:00
Sergey Kosukhin
90c7bc7a24 OpenJPEG: all version tuples have the same length. (#6526) 2017-12-04 17:44:53 -07:00
Paschalis Korosoglou
b2c6306b94 Added package r version 3.4.3 (#6565) 2017-12-04 17:39:34 -07:00
Axel Huebl
9ad3b1a747 libpng: CPPFLAGS for -I (#6563)
Recent versions of `libpng` (e.g. 1.6.34) warn/abort that includes
for `zlib` need to be passed properly via `CPPFLAGS`. This fixes it.
2017-12-04 15:29:35 -07:00
Eric
6968777af7 bamtools: Add version 2.5.0 (#6553) 2017-12-04 10:38:30 -07:00
Denis Davydov
e9c66a76f0 dealii: add scalapack and various cleanups (#6552) 2017-12-04 08:02:05 +01:00
Chien-Chang Feng
f564e02301 py-h5py: fixed a typo in the name of a dependency (#6540) 2017-12-04 07:50:35 +01:00
Benedikt Riedel
6887107775 Adding zlib dependence to xrootd to resolve #6545 (#6550) 2017-12-03 16:22:44 -07:00
Eric
10ad2bc1bf py-multiqc: Add version 1.3 (#6554) 2017-12-03 16:21:27 -07:00
Yifan Zhu
1e702bfab0 r-fftwtools: new package (#6532) 2017-12-03 16:20:32 -07:00
Paschalis Korosoglou
79751729c9 Rename variant static to shared (#6543) 2017-12-03 16:19:32 -07:00
Denis Davydov
13dade60dd gcc: remove all variant (#5283) 2017-12-03 10:19:55 +01:00
Nils Deppe
07fcd0d115 Add Kvasir MPL (#6529) 2017-12-02 16:02:43 -07:00
Eric
6918ee3767 salmon: Add version 0.9.1 (#6516) 2017-12-02 12:45:10 -07:00
sknigh
80048ae4a9 Paraview expects qt to have opengl (#6520) 2017-12-01 13:46:39 -07:00
Patrick Gartung
f6c99d7beb Buildcache: relocate fixes (#6512)
* Updated function which checks if a binary file needs relocation.
  Previously this was incorrectly identifying ELF binaries as symbolic
  links (so they were being excluded from relocation). Added test to
  check that ELF binaries are not considered symlinks.

* relocate_text was not replacing paths in text files. Added test to
  check that text files are relocated properly (i.e. paths in the file
  are converted to the new prefix).

* Exclude backup files created by filter_file when installing from
  binary cache.

* Update write_buildinfo_file method signature to distinguish between
  the spec prefix and the working directory for the binary cache
  package.
2017-12-01 11:15:16 -08:00
Axel Huebl
d6863a2940 ADIOS: 1.13.0 (#6539)
New release of ADIOS: 1.13.0.
2017-12-01 11:09:37 -07:00
Stephen Hudson
d5c96dbd94 Add new package py-libensemble (#6525) 2017-12-01 11:01:08 -07:00
Eric
fa32f8f914 py-dendropy: Create new package (#6528) 2017-12-01 11:00:45 -07:00
Adam J. Stewart
0ffd7f8918 Remove reference to deprecated spack md5 command (#6537) 2017-12-01 14:31:40 +01:00
Paschalis Korosoglou
bd94be818a Added variant static for hwloc (#6538) 2017-12-01 06:25:23 -07:00
Yifan Zhu
e0264404b6 r-udunits2: new package r-udunits2 (#6533) 2017-12-01 11:16:35 +01:00
Yifan Zhu
4a55f81051 r-units: new package (#6531) 2017-12-01 05:26:05 +01:00
Massimiliano Culpo
23b1108451 gpg creation: added suggestion on how to set-up rngd (#6483) 2017-11-30 10:51:55 -08:00
Massimiliano Culpo
f7c0e24f0a 'spack install': make conflict messages as verbose as 'spack spec' (#6436)
"spack spec" was providing helpful error information about conflicts
that was missing from "spack install", this updates "spack install"
to provide the same information.
2017-11-30 10:41:24 -08:00
Adam J. Stewart
3dafbe901a Fix CGAL checksum and switch to more stable URL (#6511) 2017-11-30 09:18:54 +01:00
healther
130c56dbaa add package py-lazy-object-proxy (#6489) 2017-11-30 09:17:28 +01:00
lingnanyuan
5382279fa6 r-biomformat: Create new package. (#6517) 2017-11-30 09:14:12 +01:00
lingnanyuan
f9c820c39f r-phyloseq: Create new package. (#6518) 2017-11-30 09:13:31 +01:00
Yifan Zhu
86fbcc7140 r-nanotime: new package (#6519) 2017-11-30 09:12:58 +01:00
Michael Bentley
a097524281 Flit package (#6260)
Add initial build support for version 2.0-alpha.1
2017-11-30 09:05:40 +01:00
David Lukes
27b929bfe2 Improve docstring of spack.directives.extend (#6485)
The original docstring had confusing wording re: what is going to
symlinked and where when using the `extend` directive, and how exactly
the symlinking is performed (not automatically on install, but using
`spack activate`). See #5559.
2017-11-29 14:30:42 -08:00
Massimiliano Culpo
aa24858648 travis: removed /usr/local/include/c++ before installing gcc on OSX (#6515)
"brew install gcc" fails for travis build because of an existing
/usr/local/include/c++. This commit removes the offending file
as suggested by brew.
2017-11-29 11:33:00 -08:00
Stephen Hudson
02371d2ace Add new package nlopt (#6499) 2017-11-29 10:27:08 +01:00
healther
cc5d5295bd add missing build dependency to py-pytest-runner (#6490) 2017-11-28 16:52:18 -07:00
Yan Grange
b5f3ecf3fa Update globus package version and hash (#6482) 2017-11-28 16:51:35 -07:00
Michael Kuhn
9adcb0b4b1 libmongoc: Fix pkg-config file not containing snappy and zlib paths (#6467) 2017-11-28 16:47:12 -07:00
healther
f7fda19f5d remove breaking version and cleanup of dependencies (#6494) 2017-11-28 16:46:23 -07:00
healther
8013996661 add conflicts to py-enum34 (#6496) 2017-11-28 16:45:08 -07:00
healther
2190ae43a5 Fix astroid dependency and mark broken version (#6493) 2017-11-28 16:43:43 -07:00
healther
cab07d2562 add package py-editdistance (#6492) 2017-11-28 16:43:00 -07:00
healther
82adc403ad add package py-isort (#6491) 2017-11-28 16:42:47 -07:00
healther
64b121fa87 add package: py-backports-functools-lru-cache (#6488) 2017-11-28 13:54:40 -08:00
Adam J. Stewart
e01a16b992 Remove spack md5 and sha256 commands (#6428) 2017-11-28 13:41:46 -08:00
healther
dc8f587b61 add path to package.py in case of a syntax error (#6458) 2017-11-28 13:32:21 -08:00
becker33
acd80b16a8 update scr package for cray (#6407)
* update scr package for cray

* added info on scr version 1.2.0
2017-11-28 10:33:45 -08:00
Massimiliano Culpo
f6ead27b5b spack spec: don't show normalize + no hash for non concrete specs (#6417)
Showing "Normalize" on output doesn't give users additional information,
as this step is essentially an implementation detail of concretization.
This PR skips it and shows just the input spec and the concretized one.

Printing partial hashes for input spec has been disabled.
2017-11-28 09:03:32 -08:00
Denis Davydov
ddb55c2b26 py-numpy: add 1.13.3 (#6484) 2017-11-28 13:42:59 +01:00
Denis Davydov
fdb2386ba7 pi-scipy: add 1.0.0 (#6486) 2017-11-28 13:42:27 +01:00
Yifan Zhu
bec8ddcf81 r-classint: created new package (#6481) 2017-11-28 09:29:29 +01:00
Yifan Zhu
5cdf94233b r-rcppcctz: created new package (#6480) 2017-11-28 09:28:42 +01:00
lingnanyuan
8d64e192dc r-topgo: Create new package. (#6479) 2017-11-28 09:27:36 +01:00
Eric
6edd782d39 r-seurat: Create new package (#6477) 2017-11-28 09:27:14 +01:00
Eric
7f43411e59 Adding list_url to several R module packages (#6474) 2017-11-28 09:26:06 +01:00
Yifan Zhu
63a23b93c5 r-cli: new package (#6476) 2017-11-28 09:21:12 +01:00
Satish Balay
cd8da5a441 Xsdk 0.3.0 (#6277)
* xsdk:  Added MFEM rc package.

* xsdk: add version entry for xsdk-0.3.0-rc1 - and set it as preferred version

* xsdk: remove 'xsdk' from version - recommended by Todd.

Now the usage is:
 'spack install xsdk@0.3.0-rc1'

instead of the previous usage:
 'spack install xsdk@xsdk-0.2.0'

* xsdk: add petsc@3.8.0 as a dependency for xsdk-0.3.0-rc1

* mfem: fix dependency to use the corrected xsdk version

* Updated the mfem version tags.

* mfem: fix merge

* fix flake8 warning

* Modified xSDK scripts

* fixing the default package.yaml

* fix bad revert

* revert changes to superlu-dist so that the 5.2.1 update can be merged

* update xsdk to use superlu-dist-5.2.1

* update alquimia for xsdk

* fix whitespace

* update hypre for xsdk

* update sundials for xsdk

* update sundials for xsdk

* Fix checking for MKL and extend range of GCC versions

* pflotran: update to release branch

* plasma: fix spec -> self.spec

* Changes to enable mfem hooks into hypre, superlu-dist, and petsc.  Sundials hooks may come in the future.

* adding plasma with comment

* Bumped the version of mfem up to handle integration with sundials3.0.0.  Also enabled hypre in sundials.

* Turn on the plasma package definition for testing

* Fix conflict declaration to obey ordering rules

* xsdk: udate superlu-dist dependency to v5.2.2

* plasma: change gcc dependency to workarround potential spack bug #5778

* trilinos: update hdf5 dependency to use 'hdf5+hl'

Without this change - I get the following error [triggered by 161dca6d5 c9810f808 changes]

$ ./bin/spack install trilinos+hdf5
==> Error: An unsatisfiable variant constraint has been detected for spec:

    hdf5@1.10.1%gcc@7~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-fedora27-x86_64

while trying to concretize the partial spec:

    netcdf+mpi
        ^m4
        ^mpich@3.3a2%gcc@7 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-fedora27-x86_64
        ^zlib@1.2.11%gcc@7+optimize+pic+shared arch=linux-fedora27-x86_64

netcdf requires hdf5 variant +hl, but spec asked for ~hl

* plasma: add in -lm dependency per #6046

* update sundials version to 3.0.0

* Add fixes to support Netlib LAPACK

* mfem does not use cmake for builds [anymore] - so remove code corresponding to this dependency.

This enables mfem build on OSX [with xcode/clang compilers]

* mfem: update to v3.3.2-rc4

* add patch for building sundials on mac

* xsdk: enable plasma for gcc-4.9+ - same as what plasma/package.py does.

* magma: Fix for cuda-9.0  as it does not support sm20

nvcc fatal   : Unsupported gpu architecture 'compute_20'

* add in code for 'spack install xsdk+cuda' - which installs magma

* fix flake8 warning

* fix flake8 warnings

* Updated to the latest MFEM RC.

* alquimia: fix to use petsc-3.8.0+ versions

* petsc: update to version 3.8.1

* petsc: add in conflict between petsc-3.8.0 & mkl

* xsdk: update petsc to 3.8.1 to get MKL build fix

* petsc: fix superlu_dist dependency

* petsc: when hdf5 depends on zlib - petsc+hdf5 should also be configured with zlib

* petsc: fix dependency [of zlib to be on hdf5 - and not on petsc]

* petsc: fix pkgconfig error - with incorrect library link order that can break mfem examples with static build

* petsc: use the fact that hdf5/package.py has a hard dependency on zlib [so no need to check for this dependency in code]

recommended-by: @davydden

* petsc: change hdf5 dependency to 'hdf5+hl' as petsc configure is looing for -lhdf5_hl

https://github.com/spack/spack/issues/5846

* plasma: also detect -lgfortran

* update sundials version to 3.1.0

* alquimia: xsdk-0.3.0-rc -> xsdk-0.3.0

* petsc: update to version 3.8.2

Includes pkgconfig fix [for mfem static build failure]

* Revert "petsc: fix pkgconfig error - with incorrect library link order that can break mfem examples with static build"

This reverts commit d1afa8c20d.

* xsdk: update to use petsc-3.8.2

* Fixed a problem with MFEM trying to use mpicxx instead of the spack defined compiler.

* Minor changes to the mfem build and pointing at mfem's release branch that is currently undergoing internal testing.

* Enabling shared build for Plasma

* plasma: do not look for libgfortran on cray - spack finds the wrong one from the frontend

'-L/usr/lib64/gcc/x86_64-suse-linux/4.3 -L/usr/lib64 -lgfortran'

* Some changes to the mfem package that are in the process of being pulled into spack/develop.

* xsdk: switch from 0.3.0-rc1 to 0.3.0

* fix flake8 warnings

* plasma: extract plasma changes from xsdk-0.3.0

* plasma: cleanup per review
- netlib-lapack: add support for spec['lapack:c'].libs, spec['blas:c'].libs
- add getblaslapacklibs() to eliminate duplicate code in edit() and build_targets()
- eliminate string manipulation of ld_flags

- remove gfortran check (will check later)
- remove build() (will check later)

* netlib-lapack: fix tuple per review

* netlib-lapack: use  spec[lapack:c,fortran]
2017-11-27 22:08:08 -08:00
peetsv
52f46d2bee ViennaRNA: adding version 2.4.3 + disable swig (#6408)
* Adding version 2.4.3 to ViennaRNA

* Replaced tab indent with spaces

Flake8 error correction

* no swig for viennarna v2.4.3 only

* correcting version/argument conditional syntax error
2017-11-27 16:45:43 -07:00
Mark Berrill
e2abebe8a5 Adding new package amp (#6471) 2017-11-27 14:43:03 -07:00
Quinn
1268bc8f45 Adding list_url to r-hms package (#6473) 2017-11-27 14:40:02 -07:00
Michael F. Herbst
3d4e51fad2 Add two test examples to bohrium (#6459) 2017-11-27 13:55:29 -07:00
Eric
dbb329637b r-rtsne: Create new package (#6470)
* r-rtsne: Create new package

* r-rtsne: add rcpp dependency
2017-11-27 13:54:53 -07:00
Eric
ebd796110d r-pcapp: Create new package (#6468) 2017-11-27 13:54:36 -07:00
Satish Balay
23bedc276c plasma: extract plasma changes from xsdk-0.3.0 (#6280)
* plasma: extract plasma changes from xsdk-0.3.0

* plasma: cleanup per review
- netlib-lapack: add support for spec['lapack:c'].libs, spec['blas:c'].libs
- add getblaslapacklibs() to eliminate duplicate code in edit() and build_targets()
- eliminate string manipulation of ld_flags

- remove gfortran check (will check later)
- remove build() (will check later)

* netlib-lapack: fix tuple per review

* netlib-lapack: use  spec[lapack:c,fortran]
2017-11-27 11:38:10 -08:00
Adam Fidel
557309618f New Package: GAP Benchmark Suite (#6452) 2017-11-27 06:50:49 -07:00
Choong Jun Jin
45e1562162 fixed glog compilation for < 0.3.5 (#6463) 2017-11-27 06:50:26 -07:00
Massimiliano Culpo
eacaa1551e r-rcpp: adds new versions, fixes failing download in Travis CI (#6464) 2017-11-27 10:15:47 +01:00
Eric
fcf331f176 r-tsne: Create new package (#6461) 2017-11-27 09:30:52 +01:00
Eric
0bb789eb23 r-rcpp: fix list_url to install archived versions (#6462) 2017-11-27 09:20:49 +01:00
peetsv
09eeb991a2 dialign-tx adding patch for gcc@5.4.0 (#6413) 2017-11-26 16:14:18 -07:00
Adam J. Stewart
257d968259 Use long flag in spack help message (#6429) 2017-11-26 06:14:47 -07:00
Michael F. Herbst
41eb496021 New Package: Add libcint to spack (#6456)
* Add libcint to spack

* Clearifying comment
2017-11-25 21:01:30 -07:00
Michael F. Herbst
178381edf9 Implement opencv libs property (#6457) 2017-11-25 21:00:18 -07:00
Eric
9b5e3434ad r-sn: Create new package (#6433)
* r-sn: Create new package

* r-sn: fix whitespace and depends_on
2017-11-25 12:50:13 -07:00
Axel Huebl
a465bf3bec pocl: fix link to libtool (#6440)
libtool is also needed for linking, otherwise downstream
dependencies such as clfft will fail linking against pocl's
libOpenCL.so with errors such as:

```
  >> 182   /usr/bin/ld: warning: libltdl.so.7, needed by /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so, not found (try using -rpath or -rpath-link)
  >> 183   /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlinit'
  >> 184   /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlerror'
  >> 185   /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlopen'
  >> 186   /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlsym'
  >> 187   collect2: error: ld returned 1 exit status
```
2017-11-25 11:55:08 -07:00
Gregory Lee
1f2867415a added intel 18.0.1 compilers (#6381) 2017-11-25 11:49:02 -07:00
Michael F. Herbst
25d7ef495c Expand bohrium package (#6438)
* GCC greater 4.7 required

* Add variant with opencv extmethods

* Fix and export the config path
2017-11-25 11:46:32 -07:00
healther
d7344d2987 add package py-linecache2 (#6448) 2017-11-25 11:42:16 -07:00
healther
8c5c46a7a2 add missing dependencies to py-pylint (#6445) 2017-11-25 11:41:45 -07:00
healther
835b1ff03d add missing build dependency to py-execnet (#6443) 2017-11-25 11:40:53 -07:00
Axel Huebl
ed685b0262 gearshifft: enable OpenCL (#6441)
With pocl builds fixed, we can now also use the OpenCL
implementations in gearshifft :)
2017-11-25 11:40:12 -07:00
healther
86e771bdb3 add missing dependency to py-scikit-image (#6446) 2017-11-25 11:39:16 -07:00
healther
ca90372f74 add missing dependency to py-unittest2 (#6447) 2017-11-25 11:38:42 -07:00
healther
65fd350eb4 add package py-setuptools-scm (#6449) 2017-11-25 11:38:10 -07:00
healther
0c7cf0c7a4 add package py-traceback2 (#6450) 2017-11-25 11:37:38 -07:00
健美猫
0d91f51a27 Python: add 3.6.3 . (#6454) 2017-11-25 11:34:24 -07:00
健美猫
086a1cfe7e r: add version 3.4.2. (#6455) 2017-11-25 11:34:05 -07:00
healther
7c174f11ec add new version to node-js (#6444) 2017-11-25 09:30:06 +01:00
Eric
be095fdb21 r-lars: Create new package (#6453) 2017-11-25 09:24:53 +01:00
Robert Cimrman
77bfda4da6 sfepy: Create new package (#6439) 2017-11-24 12:21:09 +01:00
健美猫
70adbaeeba Octave depends on qt+opengl. (#6437) 2017-11-24 09:40:48 +01:00
Massimiliano Culpo
cde5fdde20 Openblas needs FC, not F77 (#6435)
fixes #5591
2017-11-24 07:15:01 +01:00
Michael Kuron
ff4a4fcd9e siesta: add netcdf support (#6431) 2017-11-23 13:39:32 -07:00
George Hartzell
2a2670175d boost@1.54 alse needs the call_once patch (#6434) 2017-11-23 20:17:17 +01:00
Michael Kuhn
5bbbfe9446 Introduce virtual dependency pkgconfig (#5198)
There are two providers, pkgconf and pkg-config, with the former being
the default provider.
2017-11-23 08:05:38 -07:00
Sergey Kosukhin
7f0659f032 New version and patch for 'sqlite'. (#6303) 2017-11-23 08:04:41 -07:00
Audrey Thoma
cd7d812be9 express: new package (#6281) 2017-11-23 08:04:02 -07:00
Ondřej Čertík
7a2b3b2588 Add a patch for Intel 18.0.1 (#6392) 2017-11-23 07:28:35 -07:00
Michael F. Herbst
a955f63530 Add bohrium to spack (#6395)
* Add bohrium package.py

* Changes suggested by @davydden

* Add +cuda guard

* Specify required environment setup
2017-11-23 07:24:55 -07:00
Eric
1dba6435bd r-plotly: Create new package (#6423) 2017-11-23 07:17:17 -07:00
Denis Davydov
ddf10fa322 dealii: limit CMake to 3.9 as 3.10.0 is not supported yet (#6427) 2017-11-23 07:16:44 -07:00
sknigh
e2cf933ec1 gcc environment module will set CC, CXX, FC, F77, and F90 flags (#3954) 2017-11-23 12:44:55 +01:00
Cameron Smith
951679376e zoltan: add optional dependency on parmetis (#6387) 2017-11-23 09:03:02 +01:00
Eric
6fd1009081 r-mixtools: Create new package (#6421) 2017-11-23 09:01:10 +01:00
Eric
bdd8bb1fd9 r-ranger: Create new package (#6422) 2017-11-23 09:00:32 +01:00
Chien-Chang Feng
630d7e19db py-yt: Yt-project is moved. Add new version. (#6409) 2017-11-23 07:25:35 +01:00
Jon Rood
8b63cc6ad6 Using MPI environment compiler variables for pnetcdf. (#6424) 2017-11-22 21:34:21 -08:00
Massimiliano Culpo
0fc6611dc2 Changed every docs variant into doc as decided in #2663 (#6412)
fixes #2663
2017-11-22 15:06:59 +01:00
Adam J. Stewart
1b3b262776 Remove spack extensions from list of known issues (#6405) 2017-11-22 02:31:56 +01:00
Sergey Kosukhin
d4ab511f73 Script for 'eccodes' is compatible with Python 3. (#6402) 2017-11-21 15:59:04 -07:00
Audrey Thoma
a0df5ae3e0 phantompeakqualtools: new package (#6403) 2017-11-21 15:58:20 -07:00
Eric
9e013ee036 r-pbapply: Create new package (#6377) 2017-11-21 13:45:12 -07:00
Eric
5a72d30816 r-ggjoy: Create new package (#6399) 2017-11-21 13:44:25 -07:00
Eric
60b50a7bd2 r-ica: Create new package (#6400) 2017-11-21 13:43:02 -07:00
Eric
d6a5310df5 r-cppprogress: Create new package (#6398) 2017-11-21 13:42:44 -07:00
Eric
d725904803 r-sdmtools: Create new package (#6397) 2017-11-21 13:42:28 -07:00
BenBrands
27b9d2614c CMake: add 3.10.0 (#6393) 2017-11-21 08:04:53 -07:00
David Poliakoff
003f83db50 gotcha: new package (#6391)
* Initial stab at a package for Gotcha

* Commit with no boilerplate

* Flake8
2017-11-21 08:04:43 -07:00
Audrey Thoma
c4613b8e1f mira: new package (#6385) 2017-11-21 08:04:08 -07:00
Michael F. Herbst
f0c0243cd4 Fix to allow installing pocl 0.14 again (#6372)
* Resolve issue 4669

* Use prefix path magic attribute
2017-11-21 08:03:36 -07:00
Yifan Zhu
5250c8eb0a r-broom: new package (#6282) 2017-11-21 10:49:09 +01:00
Yifan Zhu
e3abc7bfa4 r-haven: created new package (#6293) 2017-11-21 09:54:43 +01:00
Yifan Zhu
b7189ecf9e r-psych: created new package (#6286) 2017-11-21 09:40:10 +01:00
Yifan Zhu
ef8429c99c r-modelr: created new package (#6289) 2017-11-21 09:26:44 +01:00
Eric
0743c5bde6 r-crosstalk: Create new package (#6383) 2017-11-20 21:52:58 -07:00
Eric
cd5e6a14bb r-fnn: Create new package (#6384) 2017-11-20 21:52:39 -07:00
Audrey Thoma
8b2abfb28b masurca: new package (#6386) 2017-11-20 21:51:35 -07:00
Eric
70ce7e2099 meme: add version 4.12.0 (#6388) 2017-11-20 21:50:46 -07:00
Eric
035cce2b81 py-biopython: add version 1.70 (#6389) 2017-11-20 21:50:25 -07:00
Eric
17e0b81463 r-ggridges: Create new package (#6376) 2017-11-20 14:18:16 -07:00
Eric
30b794254f py-pysam: add version 0.13 (#6382) 2017-11-20 14:08:25 -07:00
BenBrands
93d5a91a56 dealii: fix HDF5 dependency (#6374) 2017-11-20 11:57:53 -07:00
BenBrands
83db25967e Atlas: add 3.11.39 (#6375) 2017-11-20 11:57:34 -07:00
Eric
9040f34aba r-tclust: Create new package (#6380) 2017-11-20 11:57:04 -07:00
Eric
1d69dbe7ae r-diffusionmap: Create new package (#6378) 2017-11-20 11:56:47 -07:00
Eric
012acdc7a2 r-chemometrics: Create new package (#6379) 2017-11-20 11:56:33 -07:00
Denis Davydov
4e878c21cd elpa: add 2017.05.002 and 2017.05.003 (#5306)
* elpa: add 2017.05.002 and 2017.05.03
* add a variant for optimization flags
2017-11-20 11:17:22 -07:00
Denis Davydov
34da07db9b dealii: add cuda_arch variant via CudaPackage (#6070) 2017-11-19 12:39:13 -07:00
Adam J. Stewart
acbdf516f7 Add a new package for rlwrap (#6371) 2017-11-19 06:45:25 -07:00
lingnanyuan
cf3df2a321 r-dose: Create new package. (#6355) 2017-11-18 12:54:14 -07:00
Eric
20092adb94 r-vgam: Create new package (#6363) 2017-11-18 06:39:55 -07:00
Eric
618f4dff6d r-bindrcpp: Create new package (#6366) 2017-11-18 06:36:39 -07:00
Eric
1c55a401b1 r-dtw: Create new package (#6365) 2017-11-18 06:35:47 -07:00
Eric
ebfc7bd7aa r-som: Create new package (#6364) 2017-11-18 06:35:21 -07:00
Michael Kuron
e2fea1e1e6 siesta: new package (#6346)
* siesta: new package

* siesta: use libs instead of ld_flags everywhere
2017-11-17 19:01:15 -07:00
Stephen Hudson
b2f0306c6f Mpi4py update (#6342) 2017-11-17 19:00:36 -07:00
Javier Cervantes
21da747a5d hepmc: fix hash and urls, add new version 3.0.0 (#6348) 2017-11-17 18:59:52 -07:00
健美猫
8bc024d2d9 Add cluster.2017.5 and cluster.2018.1. (#6349) 2017-11-17 18:59:18 -07:00
lingnanyuan
9647038f27 r-rvcheck: Create new package. (#6351) 2017-11-17 18:59:00 -07:00
lingnanyuan
eda91bebd7 r-gosemsim: Create new package. (#6352) 2017-11-17 18:58:43 -07:00
lingnanyuan
d836d7e7ea r-do-db: Create new package. (#6353) 2017-11-17 18:58:23 -07:00
lingnanyuan
c604638681 r-fgsea: Create new package. (#6354) 2017-11-17 18:58:01 -07:00
lingnanyuan
5c06255b24 r-clusterprofiler: Create new package. (#6356) 2017-11-17 18:57:40 -07:00
sknigh
1f8f593dd6 Added libhio 1.4.0.0 (#6357) 2017-11-17 18:57:17 -07:00
Brian Homerding
17debcb9b2 NuT: Add Installation of lib and demo app (#6341) 2017-11-16 16:30:42 -07:00
Matthias Vogelgesang
a62f8698c3 Add UFO and dependencies (#6337)
* Add json-glib

* Add ufo-core

* Add ufo-filters
2017-11-16 09:37:17 -08:00
healther
ef3c909701 add package py-numba (#6323)
* add package py-numba

* Update package.py

* Update package.py

* Update package.py
2017-11-16 10:13:20 -07:00
Audrey Thoma
e941f33eaf meraculous: new package (#6292)
* meraculous: new package

* adding gcc version conflict

* Update package.py

* Update package.py
2017-11-16 09:40:46 -07:00
lingnanyuan
bb3d5fd313 r-rhdf5: Create new package. (#6330) 2017-11-16 09:40:15 -07:00
lingnanyuan
e732a554ff r-shortread: Create new package. (#6332) 2017-11-16 09:30:18 -07:00
lingnanyuan
cca06422fa r-sva: Create new package. (#6333) 2017-11-16 09:28:59 -07:00
David Hows
d89b09493c Minor package fixes (#6334)
* Add no-implicit-fallthrough to MsgpackC

* Add 0.2.1 of Neovim

* Lint
2017-11-16 09:28:40 -07:00
Massimiliano Culpo
9bffa96754 Reduce the calls to the python interpreter during initialization (#6312)
* Reduce the calls to the python interpreter during initialization

This should reduce the delay the users experience when sourcing the
setup file to activate shell support. It works by generating at once
all the commands that needs to evaluated (they are stored in
a string and later `eval`ed by the shell).

* setup_env.sh: changed `read` with an equivalent magic

For some reason `read` breaks when sourced from a running script.
Change the incantation we use to construct the unique python command
that will be evaluated.

* setup_env.sh: python command now constructed with `printf` for portability

This recovers the support for `zsh` that was broken in previous commits.
2017-11-15 17:38:40 -07:00
Stephen Hudson
9d1224e5d8 py-petsc4py: Update version to 3.8.0 and add dependencies (#5792)
* py-petsc4py: Update version to 3.8.0 and add dependencies

- Added explicit dependency on python and numpy

* Kept old version - and corrected minimal python version

* Update to 3.8.1
2017-11-15 16:49:36 -07:00
baip
697f3ea71d cp2k: add dependency on smm and libxc & new version 5.1 (#6194)
* cp2k: add libxsmm dependency

* cp2k: add libxc dependency

* cp2k: add smm variant to select from libxsmm or libsmm

* cp2k: add version 5.1
2017-11-15 16:49:08 -07:00
Christoph Junghans
7da8a02cbf git grep --files-with-matches github.com/llnl/spack | xargs sed -i '/github.com/s@llnl/spack@spack/spack@' (#6329) 2017-11-15 16:46:39 -07:00
Denis Davydov
cb5fd6035a intel: add 2018.1 (#6322) 2017-11-15 13:13:15 -07:00
Axel Huebl
d1a733bc86 xtensor, xtl, xsimd (#6315)
Adds the QuantStack libs (C++, header-only) needed for
xtensor.
2017-11-15 13:12:31 -07:00
Yifan Zhu
cde0570c56 r-janitor: created new package (#6313) 2017-11-15 13:09:24 -07:00
Yifan Zhu
0d9ab84ebb r-dbplyr: created new package (#6311) 2017-11-15 13:09:11 -07:00
Howard Pritchard
af1b93b3db Open MPI: add 2.0.4 release to package file (#6310)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-11-15 13:03:07 -07:00
健美猫
71f12597a7 Update pgi to 17.10 . (#6306) 2017-11-15 13:02:54 -07:00
Sergey Kosukhin
e77b11674f Update for 'magics' and 'libemos'. (#6275) 2017-11-15 13:01:23 -07:00
scheibelp
b9be9519e8 Fix truncated error messages in directives (#6320)
Fixes #6299

Error messages in 'directives' were split across multiple lines and not
properly concatenated, which led to truncated messages.
2017-11-15 10:33:59 -08:00
Benedikt Riedel
2eb7fabe62 Allow openblas to build on a VM (#6258)
This adds a "virtual_machine" boolean variant which adds build
options that enable building openblas on a VM.
2017-11-15 10:32:02 -08:00
Eric
9acf207023 picard: add versions and fix url format (#6309) 2017-11-14 16:41:27 -07:00
Michael Kuhn
ec5d366bcd likwid: Fix hash for 4.3.0 (#6307)
Prefer 4.2.1 for now because 4.3.0's hash changes regularly.
2017-11-14 16:41:05 -07:00
健美猫
d9a4e7a038 Update miniconda to 4.3.30. (#6233) 2017-11-14 12:11:53 -08:00
Adam J. Stewart
138e9d08c6 Add the latest version of Lmod (#6297) 2017-11-14 10:32:41 -08:00
koebbe
50957bd44f py-h5py: make sure to depend on the hl variant of hdf5 (#6304) 2017-11-14 09:26:58 -07:00
vishalkenchan
0692029273 update trilinos checksums (#6301) 2017-11-14 09:22:34 -07:00
Michael Kuhn
aa27432a1d ncl: Check for ncl binary after installation (#6298)
ncl's build system will happily continue in case of errors, which might
result in the ncl binary not being built.
2017-11-14 09:22:04 -07:00
Michael Kuhn
e31b997162 icu4c: Update to 60.1 (#6295)
Previous versions try to include xlocale.h, which fails on glibc >= 2.26.
2017-11-14 09:21:35 -07:00
Yifan Zhu
a8f9182ef3 r-forcats: created new package (#6291) 2017-11-14 09:21:21 -07:00
Michael Kuhn
93bca2f3a2 libbson, libmongoc: Update to 1.8.1 (#6290) 2017-11-14 09:21:05 -07:00
Eric
137a9e64ac trimgalore: add version 0.4.5 (#6288) 2017-11-14 09:20:20 -07:00
Yifan Zhu
392e25b7e6 r-mnormt: created new package (#6287) 2017-11-14 09:20:06 -07:00
Yifan Zhu
05eb287ed9 r-bindr: created new package (#6285) 2017-11-14 09:19:49 -07:00
Yifan Zhu
c042644b53 r-glue: created new package (#6283) 2017-11-13 16:25:52 -07:00
Douglas Duckworth
c7d2b4dbd6 relion 2.1 - update variant defaults (#6201)
Default precision should be double for CPU. Generally users also want
to use GPUs so the +cuda variant is now also enabled by default.
2017-11-13 12:29:43 -08:00
Massimiliano Culpo
2d6cccdc53 Added an issue template for Github (#6205)
The MD file has been added in the root folder, as CONTRIBUTING.md
2017-11-13 10:51:53 -07:00
Christoph Junghans
bde727e187 mpibash: move to autotools (#6253) 2017-11-13 10:48:31 -07:00
Christoph Junghans
02335fa849 ucx: initial commit (#6265) 2017-11-13 10:47:58 -07:00
Eric
306aca812d ont-albacore: add version 2.1.2 (#6278) 2017-11-13 10:47:40 -07:00
Todd Gamblin
9c93c4a42b Update tutorial slide links. (#6276) 2017-11-13 07:52:43 -07:00
Todd Gamblin
fffcd77662 Allow types and 'any' in variant definitions. (#4524)
- Previously variant values had to be a tuple or a callable predicate.

- This allows 'any' as shorthand for `lambda x: True` and type objects
  as shorthand for "any value of this type".

- Makes variant definitions more readable, keeps lambdas out of
  packages for common cases.
2017-11-13 00:22:59 -07:00
becker33
9b80f2fd38 basics tutorial: output updated (#6267)
* basics tutorial: output updated through gcc

* finished update for basics tutorial

* missed two lines

* doc error fix
2017-11-13 00:12:23 -07:00
Todd Gamblin
24d636eb30 Updates to build systems tutorial (#6273)
* Get rid of period in command

* formatting

* fix header

* Change GNU Make to Make

* Add variants
2017-11-13 00:11:55 -07:00
Mario Melara
2f1cbb5caa Add build systems tutorial for SC17 (#6125)
* First draft for SC17 build systems portion

Added tutorial_buildsystems.rst file as well as example files under
the tutorial/ directory.

* Remove floating `

* Add requested changes, and examples of subclasses

Added in the requested changes to the documentation. Also added in
information about the subclasses and the defaults that they provide.
Also fixed some phrasing issues, formatting and punctuation.

* Flake8 fixes and new files for classes

Made flake8 fixes to pass tests and also added files to demonstrate code
in the classes.

* Minor edits

Edits in formatting and made some sentence changes

* Flake8 fixes

More flake8 fixes

* Flake8 fix

* Change section order on tutorial and minor edits

Placed the section at the appropriate section for the tutorial and then
added some minor edits that were requested.

* Add requested changes and more details

Added more details to Cmake, Makefile and Python Packages.

* Fixed formatting and minor edits

* Fix doc build error
2017-11-12 23:24:18 -07:00
Adam J. Stewart
9db7eaade8 Last minute edits to the Configuration Tutorial (#6271) 2017-11-12 23:14:44 -07:00
becker33
b77acd0896 Add configuration tutorial for SC17 (#6141) 2017-11-12 20:12:57 -07:00
Matthew LeGendre
265c30b943 Update packaging tutorial (#6270)
* Allow types and 'any' in variant definitions.

- Previously variant values had to be a tuple or a callable predicate.

- This allows 'any' as shorthand for `lambda x: True` and type objects
  as shorthand for "any value of this type".

- Makes variant definitions more readable, keeps lambdas out of
  packages for common cases.

* Update packaging tutorial

* Fix bad file reference in packaging tutorial
2017-11-12 20:09:12 -07:00
becker33
b09341d861 binary packages: do post install hooks (#6269) 2017-11-12 17:57:10 -07:00
Massimiliano Culpo
1ab703448d SC17: advanced packaging tutorial (#6148)
* First draft of the advanced packaging tutorial

* advanced packaging tutorial: improved phrasing

Thanks Denis and Hartzell!

* Fixed typos + reworded a couple of sentences
2017-11-12 00:27:57 -08:00
Massimiliano Culpo
fe889124eb SC17: reworked module file tutorial section (#5657)
* Reworked module file tutorial section

First draft for the SC17 update. This includes:

 - adding an introduction on module files + Spack's module
   generation blueprints
 - adding a set-up section and provide a docker image for easy set-up
 - updating all the relevant snippets
 - extending a bit some of the concepts that were already touched

* Added reference to #5582 + committed Dockerfiles

Also fixed a couple of typos spotted by Denis.

* module file tutorial: added section on template customization

* module file tutorial: fixed minor typos + rephrased a sentence

* module file tutorial: made explicit that Docker image comes with software

* module file tutorial: improved phrasing and layout.

Thanks Hartzell!

* module file tutorial: added vim and nano to editors

* module file tutorial: fixed typo

* Fixed typos

Thanks Adam!

* module file tutorial: updated Dockerfile + minor changes in introduction
2017-11-12 00:27:20 -08:00
becker33
1008975bc0 Don't include build-only dependencies in build cache hash (#6262) 2017-11-11 20:54:17 -08:00
Satish Balay
6fd92e4257 petsc: update to version 3.8.2 (#6244)
Includes pkgconfig fix [for mfem static build failure]
2017-11-11 07:16:03 -07:00
Brian Homerding
19f8940c01 Nekbone: Installing data files for example runs (#6243)
* Nekbone: Installing data files for example runs

* Typo Fix
2017-11-10 19:59:33 -07:00
Sergey Kosukhin
263126bc5d Create symlink for 'swig' binary after installation. (#6240) 2017-11-10 19:50:11 -07:00
Aaron Fisher
af06ea0e74 Fixed mfem mpi build issue. (#6254)
* Fixed mfem mpi build issue.

* Fixed a non-mpi build issue and switched to the latest official MFEM release.
2017-11-10 19:49:17 -07:00
Yifan Zhu
e38f31e773 feature/r-reprex: new package (#6257) 2017-11-10 19:47:21 -07:00
Cyrus Harrison
b079e1dbd5 add alpine ascent (#6224)
* add ascent package and and deps

* proper use of site_packages_dir prop

* flake8

* add maitain, small updates

* flake8

* flake8

* fixs for docstrings for sphinx
2017-11-10 17:00:47 -08:00
scheibelp
8c458a856f Group flags and values separated by space (#6169)
Fixes #6154

For compiler options which set values using the syntax "-flag value"
(with a space between the flag and the flag's value) the flag and
value were treated as separate and reordered. This updates Spack's
logic to treat the flag and value as a single unit, even if there is
a space between them. It assumes that all flags are prefixed with
"-" and that all flag values are not.
2017-11-10 16:33:50 -08:00
becker33
917d021997 Add version 1.04 (#6259) 2017-11-10 15:52:48 -08:00
becker33
a7b817b494 elfutils: add --no-as-needed flag for library ordering issue (#6256)
* add --no-as-needed flag for library ordering issue libelf

* fix syntax error.
2017-11-10 11:42:37 -08:00
Yifan Zhu
f6ed8d856a xclip: created new package (#6248) 2017-11-10 11:13:00 -07:00
Yifan Zhu
a872dc5927 r-clipr: created new package (#6249) 2017-11-10 11:11:45 -07:00
Todd Gamblin
7dea7aad51 Add a code of conduct to Spack (#6251)
We're adopting the contributor covenant for now.  This isn't something we've needed to use yet, but it is good to have in case we actually do have a problem.
2017-11-09 21:18:58 -08:00
Patrick Gartung
124b5fc296 deal with case where symbolic links are copied (#6178)
* deal with case where symbolic links are copied

* Suggested changes
2017-11-09 14:38:12 -08:00
lingnanyuan
acc3817ffc r-purrr: Create new package. (#6241) 2017-11-09 14:51:30 -07:00
lingnanyuan
65a278c927 r-covr: Create new package. (#6239) 2017-11-09 13:19:53 -07:00
lingnanyuan
e43e29209d r-readxl: Create new package. (#6238) 2017-11-09 13:19:43 -07:00
lingnanyuan
0902f58f3d r-cellranger: Create new package. (#6237) 2017-11-09 13:19:25 -07:00
lingnanyuan
5e0e3092f6 r-rematch: Create new package. (#6236) 2017-11-09 13:19:12 -07:00
Satish Balay
2b07379831 petsc: when hdf5 depends on zlib - petsc+hdf5 should also be configur… (#6189)
* petsc: when hdf5 depends on zlib - petsc+hdf5 should also be configured with zlib

* petsc: fix dependency [of zlib to be on hdf5 - and not on petsc]

* petsc: use the fact that hdf5/package.py has a hard dependency on zlib [so no need to check for this dependency in code]

recommended-by: @davydden

* petsc: change hdf5 dependency to 'hdf5+hl' as petsc configure is looing for -lhdf5_hl

https://github.com/spack/spack/issues/5846
2017-11-09 11:34:59 -08:00
Satish Balay
8d512ce9ae magma: cuda updates [from xsdk-0.3.0 branch] (#6160)
- add gcc dependency per cuda versions
- Fix for cuda-9.0  as it does not support sm20

    nvcc fatal   : Unsupported gpu architecture 'compute_20'
2017-11-09 11:34:40 -08:00
Patrick Gartung
1484a94b1e spack buildcache: symlink and relative RPATH fixes (#6140)
* Skip rewriting files that are links (this also avoids issues with parsing
  the output of the 'file' command for symlinks)
* Fail rather than warn for several gpg signing issues (e.g. if there is no
  key available to sign with)
* Installation with 'buildcache install' only retrieves link and run
  dependencies (this matches 'buildcache create' which only creates tarballs
  of link/run dependencies)
* Don't rewrite RPATHs for a binary if the binary cached package was created
  with relative RPATHs
* Refactor relocate_binary to operate on multiple binaries (given as a
  collection of paths). This was likewise done for relocate_text and
  make_binary_relative
2017-11-09 10:53:34 -08:00
lingnanyuan
ee867db5de r-log4r: Create new package. (#6133) 2017-11-09 10:23:48 -07:00
Simone Bnà
c79a0fbbf2 mesa: fixed url for version (#5818) 2017-11-09 10:16:52 -07:00
Benedikt Riedel
266de67c24 ROOT needs to have a consistent version of binutils, as it is very sensitive to the version of libopcodes. You can't move the code from one system (with the same OS) as another. (#6226) 2017-11-09 06:49:27 -08:00
lingnanyuan
935a6b00d7 r-analysispageserver: Create new package. (#6135) 2017-11-09 07:23:10 -07:00
Levi Baber
74d38b3150 py-dlcpar (#6229)
* py-dlcpar: new package

* py-dlcpar: whitespace
2017-11-09 07:21:56 -07:00
baip
acf6653933 pexsi: add version 0.10.2 (#6232) 2017-11-09 07:21:39 -07:00
David Gardner
d9fc26b2a5 add sundials 3.1.0 (#6230) 2017-11-09 14:04:03 +01:00
Luigi Calori
24bb3c61de fix perl dependent modules, #5900 (#5937)
*  FIX perl dependent environmwent setup to avoid void lines in generated modules as #5900

* remove debug prints

* fix flake8
2017-11-08 22:10:50 -07:00
Alfredo Adolfo Gimenez
a754bd7eee Package/sosflow (#6122)
* Added missing deps to libffs

* SOSflow spack package pointing to sos_flow feature/spack branch

* Using tag for spack build

* Change url to spack/spack
2017-11-08 22:07:37 -07:00
David Gardner
a656bc300a add patch for building sundials (#6161)
* add patch for building sundials on mac

* add upper limit on the patch
2017-11-08 22:06:34 -07:00
Yifan Zhu
3159841e33 r-callr: created new package (#6223) 2017-11-08 21:59:21 -07:00
lingnanyuan
72bec9a7a0 r-rex: Create new package. (#6221) 2017-11-08 21:57:09 -07:00
Yifan Zhu
ca2ffd9299 r-rvest: created new package (#6220) 2017-11-08 21:56:50 -07:00
Levi Baber
ef126523f1 fastme: new package (#6219) 2017-11-08 21:56:32 -07:00
Yifan Zhu
edc1e6a0d8 r-selectr: created new package (#6218) 2017-11-08 21:56:02 -07:00
lingnanyuan
e57564e899 r-tseries: Create new package. (#6216) 2017-11-08 21:55:45 -07:00
sknigh
699748a2be Added missing build dependency to json-c (#6211) 2017-11-08 21:55:28 -07:00
lingnanyuan
e2004076b1 r-allelicimbalance: Create new package. (#6044) 2017-11-08 21:52:46 -07:00
Yifan Zhu
ac7f5a1af1 r-mzr: created new package (#6206) 2017-11-08 19:53:00 -07:00
Yifan Zhu
cd4b19ffa8 r-msnbase: new package (#6207) 2017-11-08 19:52:38 -07:00
lingnanyuan
912d39908d r-sqldf: Create new package. (#6208) 2017-11-08 19:52:08 -07:00
lingnanyuan
4585d6426a r-gsubfn: Create new package. (#6209) 2017-11-08 19:51:51 -07:00
Yifan Zhu
b110cd0b12 r-vsn: new package (#6210)
* r-hexbin: updated md5

* r-vsn: created new package
2017-11-08 19:51:35 -07:00
lingnanyuan
7848e0d4b6 r-quantmod: Update version to 0.4-11 (#6212) 2017-11-08 19:51:13 -07:00
Yifan Zhu
ecdaea1c8e r-xml2: created new package (#6217) 2017-11-08 19:50:53 -07:00
lingnanyuan
1c2292dcd4 r-timedate: Create new package. (#6215) 2017-11-08 19:50:37 -07:00
lingnanyuan
5558cce438 r-fracdiff: Create new package. (#6214) 2017-11-08 19:50:18 -07:00
lingnanyuan
2cd57876c7 r-forecast: Create new package. (#6213) 2017-11-08 19:49:58 -07:00
Christoph Junghans
b3f678c1c0 gasnet: add 1.30.0 (#6167)
* gasnet: add 1.30.0

* gasnet: expose more options as variants

* gasnet: change defaults
2017-11-08 19:43:13 -07:00
Audrey Thoma
877bee3cb5 guidance: new package (#6079)
* guidance: new package

* not really fixed yet

* adding loop

* fixing url

* dang typos
2017-11-08 14:07:13 -07:00
lingnanyuan
dd3a6d7f18 r-ampliqueso: Create new package. (#6132) 2017-11-08 14:05:53 -07:00
Yifan Zhu
96f70606e8 r-tiff: created new package (#6134) 2017-11-08 14:05:33 -07:00
lingnanyuan
f73b409968 r-anaquin: Create new package. (#6138) 2017-11-08 14:05:17 -07:00
lingnanyuan
2cba0d4d5f r-qvalue: Create new package. (#6137) 2017-11-08 14:05:00 -07:00
baip
4273ebac3c libxsmm: add libs property (#6193) 2017-11-08 14:04:26 -07:00
lingnanyuan
17b9a479b6 r-aneufinderdata: Create new package. (#6192) 2017-11-08 14:03:35 -07:00
lingnanyuan
bb619aa091 r-aneufinder: Create new package. (#6191) 2017-11-08 14:03:22 -07:00
Christoph Junghans
d8db861fec flecsi: fix build (#6168) 2017-11-08 14:03:05 -07:00
lingnanyuan
04f32377b2 r-rhtslib: Create new package. (#6164) 2017-11-08 14:02:12 -07:00
Audrey Thoma
3fcc911737 kraken: new package (#6163) 2017-11-08 14:01:55 -07:00
Audrey Thoma
743a87abb3 fpc: new package (#6162) 2017-11-08 14:01:31 -07:00
lingnanyuan
6556a5c914 r-cowplot: Create new package. (#6190) 2017-11-08 13:58:57 -07:00
Yifan Zhu
5f70d578ec r-maldiquant: created new package (#6188) 2017-11-08 13:58:43 -07:00
lingnanyuan
860834e094 r-reordercluster: Create new package. (#6187) 2017-11-08 13:58:21 -07:00
Yifan Zhu
605c8e65b3 r-mzid: created new package (#6186) 2017-11-08 13:58:04 -07:00
Yifan Zhu
98baf49ba6 r-xde: created new package (#6185) 2017-11-08 13:57:46 -07:00
lingnanyuan
3943bc945b r-ggdendro: Create new package. (#6184) 2017-11-08 13:57:30 -07:00
lingnanyuan
241e1b56b5 r-dnacopy: Create new package. (#6183) 2017-11-08 13:57:15 -07:00
Yifan Zhu
92a582d5f8 r-mergemaid: created new package (#6182) 2017-11-08 13:56:59 -07:00
lingnanyuan
146db9adef r-bamsignals: Create new package. (#6181) 2017-11-08 13:56:34 -07:00
Yifan Zhu
87aafeb78a r-xmapbridge: created new package (#6180) 2017-11-08 13:56:15 -07:00
Sergey Kosukhin
c7a855ba57 Missing dependency for 'cdo'. (#6175) 2017-11-08 13:55:57 -07:00
baip
ed00757265 gcc: add 5.5.0 (#6171) 2017-11-08 20:27:08 +01:00
Todd Gamblin
9c774cccde Add basic CONTRIBUTING.md that points to contribution guide docs (#6203) 2017-11-08 11:09:11 -08:00
vishalkenchan
392929ba77 lammps: add more packages (#6174)
* lammps : adding new varients and dependencies therein

* Update package.py

* removing trailing whitespaces
2017-11-08 09:01:14 -07:00
Matthew Scott Krafczyk
00d48e60bf Fix for nghttp2 installation (#5904)
nghttp2 depends on python, and requires the install directory to exist,
and contain the python module directory which it will eventually
install the python modules into.
2017-11-07 15:59:15 -08:00
James Dickson
841d42b308 TyphonIO: new package + Updated MACSio package (#6177) 2017-11-07 13:13:06 -07:00
Todd Gamblin
3a0324fe1a add artisanal handcrafted SVG Spack logo. (#6165)
- This isn't one of those autogenerated SVGs from a drawing program!

- This is a completely re-traced, minimalist SVG file with clearly
  delineated pieces so that your favorite renderer can draw a Spack logo
  at whatever resolution you want.

- Included versions with text, as well.
2017-11-06 22:42:16 -08:00
Johann Klähn
ac3a807f58 Fix spack view hardlink (#6130)
Fix a typo in "spack view hardlink" introduced in #5415
("os.hardlink" does not exist).
2017-11-06 19:19:27 -08:00
Audrey Thoma
8bae192d5c repeatmasker: new package (#6108) 2017-11-06 17:27:42 -07:00
Michael Kuhn
ca73103dac Introduce static_to_shared_library function (#6092)
The static_to_shared_library function takes an existing static library
and produces a shared library based on it.
2017-11-06 17:21:46 -07:00
Axel Huebl
54bb28ccb0 Docs: MPI as Root (#6156)
New versions of OpenMPI need `--allow-run-as-root` for
running as root:
  http://www.open-mpi.de/doc/v2.0/man1/mpirun.1.php#toc22
2017-11-06 13:03:46 -08:00
Satish Balay
dc78e60c83 trilinos: update hdf5 dependency to use 'hdf5+hl' (#6025)
* trilinos: update hdf5 dependency to use 'hdf5+hl'

Without this change - I get the following error [triggered by 161dca6d5 c9810f808 changes]

$ ./bin/spack install trilinos+hdf5
==> Error: An unsatisfiable variant constraint has been detected for spec:

    hdf5@1.10.1%gcc@7~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-fedora27-x86_64

while trying to concretize the partial spec:

    netcdf+mpi
        ^m4
        ^mpich@3.3a2%gcc@7 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-fedora27-x86_64
        ^zlib@1.2.11%gcc@7+optimize+pic+shared arch=linux-fedora27-x86_64

netcdf requires hdf5 variant +hl, but spec asked for ~hl

* fix flake8 warning
2017-11-06 13:03:06 -08:00
Luigi Calori
f0d33df3a9 some missing X11 "*proto" dependencies (#6158)
* fix xinput deps

* adding other x11 proto missing deps, see #6157
2017-11-06 13:02:05 -08:00
Satish Balay
436ebc4490 petsc: update petsc dependency on superlu-dist (#6159) 2017-11-06 12:52:10 -08:00
scheibelp
31c5467f56 Add back help placeholder for "spack load" (#6127)
Fixes #6126

#3183 removed the print_help function from the "modules" module.
This adds it back so that if a user invokes 'spack load foo' without
having sourced an environment setup script, they will be prompted
to do so. This also improves the placeholder message to tell the 
user to invoke 'spack' as shell function rather than as an executable.
2017-11-06 11:03:36 -08:00
Yifan Zhu
cd4d26705e Bioconductor package url change (#5797) 2017-11-06 11:17:59 -07:00
Michael Kuhn
450f2fa034 likwid: Use external lua if possible (#6009) 2017-11-06 11:14:34 -07:00
Douglas Duckworth
47b15feec3 added new package - MotionCor2 (#6151) 2017-11-06 11:09:46 -07:00
Denis Davydov
f538b7ac3e dealii: make sure bundled libs are not used (#6106) 2017-11-06 12:38:59 +01:00
Besnard Jean-Baptiste
84c6fea32e Graphviz : Add a GTS variant (#6149)
Enable support for the GNU Triangulated Surface Library

	- New variant +gts for graphviz
	- Optionnal dependency for GTS (already packaged)
2017-11-05 16:55:44 -08:00
Douglas Duckworth
ccc51cea7d added relion v 2.1 (#6023)
* added relion v 2.1

* relion 2.1 - misssed comma

* relion now pulling from master branch - removed 2.03 - added cuda 8 as dependency given 9 does not yet work with relion per https://github.com/3dem/relion/issues/296
2017-11-05 15:01:21 -08:00
Ben Boeckel
22df09315f Re-add list_url for all R packages (#6110)
* r-igraph: find old packages in the archive

Fixes #6104.

* r-irlba: find old packages in the archive

Fixes #6101.

* r-lazyeval: find old packages in the archive

Fixes #6102.

* packages: set list_url for all packages hosted on CRAN

* packages: consistently use the CRAN archive URLs
2017-11-05 13:42:24 -08:00
Adam Moody
2a8c97d440 dtcmp: add v1.1.0 (#6146) 2017-11-05 09:25:03 -08:00
Satish Balay
d34d0d6cbc petsc: update to version 3.8.1 (#6150)
* petsc: update to version 3.8.1

* petsc: add in conflict between petsc-3.8.0 & mkl
2017-11-05 09:24:42 -08:00
Axel Huebl
5d9dd24daa ISAAC 1.3.3 (#6152)
Add a new release of ISAAC.
2017-11-05 09:24:18 -08:00
Todd Gamblin
05fa302655 Replace github.com/llnl/spack with github.com/spack/spack (#6142)
We moved to a new GitHub org! Now make the code and docs reflect that.
2017-11-04 17:08:04 -07:00
vishalkenchan
386e0af089 add rol variant (#6105) 2017-11-04 12:14:46 -07:00
Yifan Zhu
9d234c4f8e r-yapsa: created new package (#6121) 2017-11-03 14:21:00 -06:00
Yifan Zhu
fb1160d052 r-keggrest: created new package (#6120) 2017-11-03 14:20:36 -06:00
lingnanyuan
3921948b03 r-statmod: Create new package. (#6119) 2017-11-03 14:20:14 -06:00
lingnanyuan
b204c7e793 r-deseq: Create new package. (#6118) 2017-11-03 14:19:38 -06:00
lingnanyuan
f91c25ddee r-samr: Create new package. (#6117) 2017-11-03 14:19:16 -06:00
lingnanyuan
d54627659a r-impute: Create new package. (#6116) 2017-11-03 14:18:46 -06:00
lingnanyuan
95e290eaf3 r-altcdfenvs: Create new package. (#6115) 2017-11-03 14:18:17 -06:00
lingnanyuan
64689bdb01 r-makecdfenv: Create new package. (#6114) 2017-11-03 14:17:58 -06:00
lingnanyuan
b614c7970b r-hypergraph: Create new package. (#6113) 2017-11-03 14:17:36 -06:00
Johann Klähn
3fc8a71afb Fix restaging of resources (#5681)
Part of the resource staging process is to place downloaded/expanded
files in the root stage. This was not happening when a resource stage
was restaged.
2017-11-03 11:29:43 -07:00
Todd Gamblin
12f0725e9f spack fetch: don't fetch externals. (#6124)
Fixes #6123

spack fetch shouldn't attempt to fetch external deps when invoked
with --dependencies.
2017-11-03 10:15:15 -07:00
Axel Huebl
5a4544ab05 ISAAC 1.3.2 (#6129)
Add a new release of ISAAC.
2017-11-03 14:58:38 +01:00
Michael Kuhn
bd7d61325f Configure user for mock Git repository (#6128)
If user.useConfigOnly is set globally and no name or e-mail is
configured, the git_fetch tests fail.
2017-11-02 21:43:28 -07:00
Ben Boeckel
0f896e921f test_activations: also test perl activations 2017-11-02 18:45:40 -07:00
Peter Scheibel
3a2a0c9ad4 test_activations: test Python's extension logic 2017-11-02 18:45:40 -07:00
Peter Scheibel
dde93c01cf spec: support a test prefix
This is used in tests to test real packages without actually building
and installing them.
2017-11-02 18:45:40 -07:00
Ben Boeckel
be01b2d5f0 aspell: refuse to work with non-global extensions
Aspell compiles in the paths it looks for rather than looking relative
to its binary location. There are also no environment variables to
redirect it other than changing the path to the configuration file it
looks at.
2017-11-02 18:45:40 -07:00
Ben Boeckel
a81485cb3f perl: support extensions in views 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
643a28aac5 python: extensions support for easy-install.pth 2017-11-02 18:45:40 -07:00
Ben Boeckel
d5a3d9d20e view: test conflicting packages in views 2017-11-02 18:45:40 -07:00
Ben Boeckel
13b669de8e view: test that extension paths exist 2017-11-02 18:45:40 -07:00
Ben Boeckel
a06c6b0366 filesystem_view: reject packages with activations
If there are extensions that are globally activated, reject adding them
to a view. Those extensions should not be implicitly activated.
2017-11-02 18:45:40 -07:00
Ben Boeckel
26724688b1 view: test viewing external packages 2017-11-02 18:45:40 -07:00
Ben Boeckel
ea62347c46 view: add a test for extension activation 2017-11-02 18:45:40 -07:00
Ben Boeckel
41dfba0ba1 extension1: add a second version 2017-11-02 18:45:40 -07:00
Ben Boeckel
4511d9d924 extensions: support only showing a subset of information 2017-11-02 18:45:40 -07:00
Ben Boeckel
b7ec870c3b extensions: support acting on a view
This allows extensions to be (de)activated and queried within a view
rather than only acting on the global installation.
2017-11-02 18:45:40 -07:00
Oliver Breitwieser
db529f5b61 view: use the FilesystemView abstraction for creating views 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
af42c24ef5 view: fix some docstrings for arguments 2017-11-02 18:45:40 -07:00
Ben Boeckel
9a39efd966 filesystem_view: do not link external packages 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
538d855e1b filesystem_view: add a class to handle a view via a Yaml description 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
21dc31a4a1 package: support removing dependencies when deactivating 2017-11-02 18:45:40 -07:00
Ben Boeckel
f50ddeed9f conftest: mock out spack.store.extensions as well 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
078f85a125 views: support querying view layouts as well
This abstracts out the layout in use between the global installations
and a specific view.
2017-11-02 18:45:40 -07:00
Oliver Breitwieser
00a893aa79 link_tree: support choosing the link function
This can be used to make hardlinks rather than symlinks.
2017-11-02 18:45:40 -07:00
Oliver Breitwieser
9024ddcf05 link_tree: support ignoring conflicts 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
20cd82dc56 directory_layout: add a YamlExtensionsLayout class
This uses a view to query extensions.
2017-11-02 18:45:40 -07:00
Oliver Breitwieser
94c0740a88 link_tree: only remove matching files when unmerging 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
b9e8402104 directory_layout: factor out an ExtensionsLayout class 2017-11-02 18:45:40 -07:00
Ben Boeckel
650ca7db9e extensions: add an installed_extensions_for method 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
56bafdc282 database: rename installed_extensions_for
Views support activating packages, so rename the method because it will
soon query what is activated versus what is installed.
2017-11-02 18:45:40 -07:00
Oliver Breitwieser
70d3558596 package: support verbosity when activating 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
af0cf2d3c6 package: rename activated to is_activated
This allows the activation code to be later given parameters.
2017-11-02 18:45:40 -07:00
Ben Boeckel
f31b47c353 cmd/test: fix a typo in a comment 2017-11-02 18:45:40 -07:00
Ben Boeckel
6f9bf197a5 spec_yaml: fix a typo 2017-11-02 18:45:40 -07:00
Oliver Breitwieser
28cc077ef6 view: fix a typo 2017-11-02 18:45:40 -07:00
Ben Boeckel
76305038ef determine full compiler version for gcc-7
Fixes #5778.

Spack uses 'gcc -dumpversion' to determine the full version of gcc.
'gcc -dumpversion' no longer gives the full version on gcc 7.2.0.
'gcc -dumpfullversion' is required instead. This PR detects when
'gcc -dumpversion' gives a truncated version of '7' and in that
case retrieves the full version with 'gcc -dumpfullversion'
2017-11-02 18:44:10 -07:00
Ben Boeckel
a7925bb927 bdftopcf: require xproto and fontsproto at build time (#6112)
These are technically "link" depends of libxfont, but they have no
actual libraries.

Fixes #5936.
2017-11-02 15:47:18 -06:00
lingnanyuan
13f1781bea Add package r-reportingtools and update url for its dependencies. (#6071)
* r-reportingtools: Create new package.

* r-go-db: Update url.

* r-gseabase: Update url.

* r-pfam-db: Update url.
2017-11-02 14:21:32 -06:00
Michael Kuhn
d1db161aeb adios: Fix hdf5 and sz dependencies (#6016)
- hdf5's +hl variant is required because the build uses libhdf5_hl.
- sz is only compatible up to version 1.4.10 because the library has
  been renamed to libSZ in 1.4.11.
2017-11-02 13:41:25 -06:00
Brice Goglin
3a1b013291 hwloc: add version 1.11.8 (#6099)
Signed-off-by: Brice Goglin <Brice.Goglin@inria.fr>
2017-11-02 13:40:46 -06:00
Audrey Thoma
f9341857c7 arlecore: new package (#6109) 2017-11-02 13:40:03 -06:00
Todd Gamblin
c96f2e50a6 Only use XCode clang wrappers for packages that set use_xcode=True (#6077) 2017-11-02 09:19:23 -07:00
Christoph Junghans
c4db3d384e gromacs: add develop version (#6098) 2017-11-02 15:16:21 +01:00
Adam J. Stewart
e47ceefc43 sundials+hypre depends on hypre (#6075) 2017-11-02 08:16:43 +01:00
Denis Davydov
11ba60413b the-silver-searcher: add missing dependency (#6095) 2017-11-02 08:10:40 +01:00
Michael Kuhn
61ed583266 xqilla: Use append instead of extend (#6094) 2017-11-02 08:09:24 +01:00
Brian Van Essen
932068d725 Update candle (#6097) 2017-11-01 23:58:55 -06:00
scheibelp
3eb59f6932 update filename used for cc wrapper invocation debug log (#5837)
The name of the debug log written by the cc compiler wrapper was given
by Spec.short_spec, which includes the architecture. Somewhere along
the line Spec.format started adding spaces around the architecture
property so the filename started including spaces; the cc wrapper
script appears to ignore this, so files like spack-cc-bzip2-....in.log
(which record the wrapped compiler invocations) were not being
generated. This uses a different format string from the spec to
generate the wrapper log file names (which does not include spaces).
2017-11-01 20:11:00 -07:00
scheibelp
60a485591c Fix user specs which include already-installed packages (#5939)
* when a user-provided spec refers to an already-installed package, packages with patches applied were causing validation errors based on the recorded variants in the package's class

* avoid checks on all reserved variants (not just 'patches')
2017-11-01 18:44:31 -07:00
Yifan Zhu
7d0c6361ee r-getoptlong: created new package (#6069) 2017-11-01 19:09:54 -06:00
Yifan Zhu
f15969d624 r-gtrellis: created new package (#6088) 2017-11-01 19:09:20 -06:00
Brian Van Essen
86b7b84ddf LBANN flags and OpenCV variant (#5951)
* Fixed the datatype flag in the LBANN package.
Fixed where the datatype flag should be set.

* Added variant to OpenCV to disable building DNN support

* Fixed a bug in how the elemental package tries to find its Fortran
library.  The current method does not work with Intel compilers.

* Added necessary paths for cuDNN and CUB.

* Addressed flake8 issues in Elemental package.

* Fixed several flake8 errors.  Added variant to build with or without
support for arbitrary-precision floating point arithmetic.

* Added the proper CMake flag when MPFR support is disabled.

* Fixed a bug in how the cudnn path was being set when there was no
cudnn requested.  Also requested that OpenCV is built without eigen
support.

* Fixed another bug where a dependency may not be there and thus should
not be always checked.
2017-11-01 17:25:28 -07:00
Michael Kuhn
0d624eac55 lua: Build a shared library (#6008)
Patch is inspired by Arch Linux and Homebrew.
2017-11-01 17:10:14 -06:00
Yifan Zhu
f3af8272f5 r-circlize: new package (#6087) 2017-11-01 17:08:46 -06:00
lingnanyuan
ef240f59b8 r-alsace: Create new package. (#6064) 2017-11-01 17:04:56 -06:00
Yifan Zhu
26ade0c9ae r-globaloptions: new package (#6068) 2017-11-01 17:04:38 -06:00
lingnanyuan
a05cca49d8 r-affycoretools: Create new package and its dependency r-ff. (#6082)
* r-ff: Create new package

* r-affycoretools: Create new package.

* r-ff: update url.
2017-11-01 17:04:17 -06:00
lingnanyuan
541818ed06 r-agimicrorna: Create new package. (#6083) 2017-11-01 17:03:48 -06:00
Yifan Zhu
616a43b76d r-complexheatmap: created new package (#6084) 2017-11-01 17:03:30 -06:00
Yifan Zhu
ebff5086d7 r-shape: created new package (#6086) 2017-11-01 17:03:15 -06:00
Yifan Zhu
7fb6fbea54 r-pmcmr: new package (#6085) 2017-11-01 17:02:58 -06:00
Brian Van Essen
0c075b4923 Opencv eigen (#6014)
* Added a package for the MDAnalysis toolkit.

* Changed dependency for the eigen library to not include support for
multiple-precision (arbitrary-precision) floating point arithmetic,
since OpenCV does not support these data types.

* Fixed incorrect implementation
2017-11-01 13:50:06 -07:00
Mark Grondona
165e6bfe5f flux: update flux-core to v0.8.0 (#5914)
* dockbook: remove update to dependent environment

Remove override of setup_dependent_environment in both docbook-xml
and docbook-xsl, which seems to generate a warning from spack about
"Suspicious requests to set or unset 'XML_CATLOG_FILES' found."

* flux: update version/dependencies to 0.8.0

Update flux-core to v0.8.0. Clean up dependencies and remove unneeded
extra invocation of ./autogen.sh when building from @master.

* flux: modify environment for Lua tests

Modify Spack environment to add `./?.lua` to LUA_PATH so that
fluxometer.lua can be found by tests during `make check` run
from `spack install --tests all flux`

* flux: fix broken flux version when on master

When building @master with spack, the flux version test from
`make check` fails because spack is using a shallow clone. Add
a setup section for @master that calls git pull --depth=50 --tags
to pull down tags and (hopefully) enough information for git-describe
to work properly.
2017-11-01 08:53:37 -07:00
Satish Balay
445ffc46a1 mfem does not use cmake for builds [anymore] - so remove code corresponding to this dependency. (#6073)
This enables mfem build on OSX [with xcode/clang compilers]
2017-11-01 08:52:03 -07:00
Elsa Gonsiorowski
b53adc90f7 MACSio and JSON-CWX packages (#6018) 2017-10-31 19:07:00 -06:00
Patrick Gartung
8a812294e0 Preinstall some llvm shared libraries so tblgen will work. (#5988) 2017-10-31 18:34:33 -06:00
Yifan Zhu
0ecef7d7f8 r-somaticsignatures: created new package (#6065) 2017-10-31 18:31:06 -06:00
lingnanyuan
1ec8f6ea3f r-nloptr: Create new package. (#6063) 2017-10-31 18:30:49 -06:00
lingnanyuan
cfb685aa32 r-ptw: Create new package. (#6062) 2017-10-31 18:29:45 -06:00
lingnanyuan
aa1808c9a1 r-iso: Create new package. (#6061) 2017-10-31 16:17:53 -06:00
lingnanyuan
6af19477ef r-nnls: Create new package. (#6060) 2017-10-31 16:17:36 -06:00
lingnanyuan
77b29288e6 r-als: Create new package. (#6059) 2017-10-31 16:17:21 -06:00
Yifan Zhu
10fcd9382a r-ggbio: new package (#6058) 2017-10-31 16:17:07 -06:00
Bill Williams
f5e68879db Fix spack build for RAJA: master requires submodules (#6052)
* Fix spack build for RAJA: master requires submodules

* Rename version: git to develop
2017-10-31 15:08:32 -06:00
Scott Wittenburg
3cb2d5341d Fix incorrect checksum value for adios2 tarball (#6054) 2017-10-31 15:08:08 -06:00
lingnanyuan
6427406fc6 r-gviz: Create new package. (#6043) 2017-10-31 15:06:30 -06:00
Brian Homerding
8a86016bef Added fftw dependency (#6057) 2017-10-31 14:33:01 -06:00
Brian Homerding
180dcfc652 sw4lite: Added -lgfortran and set to serial build (#6055)
* Added -lgfortran and set to serial build

* Update package.py
2017-10-31 14:29:06 -06:00
Christoph Junghans
d98e337706 ecp-proxy-suite: add nekbone and candle-benchmarks (#6053) 2017-10-31 13:11:08 -06:00
Christoph Junghans
182c11dd92 nekbone: add v17 (#5978) 2017-10-31 10:47:24 -06:00
Christoph Junghans
178107699c candle-benchmarks: initial commit (#6020) 2017-10-31 09:11:04 -06:00
Christoph Junghans
ea35f49cdd flang: fixed a typo (#6048) 2017-10-31 14:21:29 +01:00
Nils Deppe
4997291bf4 Add v3.2 of Blaze library (#5992) 2017-10-31 08:33:55 +01:00
George Hartzell
e69542c019 Fix tarball URL's for htslib (#5993)
A recent update (#5907) to htslib added a different URL for an old
version of htslib.

Now the package is using that URL as the pattern for the newer
versions too.

I have a vague memory of running into this before, that it's a known
issue.

This fixes it by adding an explicit `url_for_version` routine.
2017-10-30 22:49:52 -06:00
David Gardner
10b27ec788 sundials: update to v3.0.0 (#6004) 2017-10-30 22:49:13 -06:00
Jon Rood
50d932d9f1 Merging netcdf dependency lines in trilinos into one line for better coverage. (#5990) 2017-10-30 22:48:21 -06:00
Satish Balay
f5863d6708 superlu_dist: update to v5.2.2 (#6024) 2017-10-30 22:46:41 -06:00
Yifan Zhu
a31a1fef28 r-progress: new package (#6034)
* r-progress: created new package

* added version
2017-10-30 22:43:57 -06:00
Yifan Zhu
a97068a861 r-prettyunits: created new package (#6033) 2017-10-30 22:43:20 -06:00
lingnanyuan
6ddba08434 r-seqinr: Update version to 3.4-5 (#6032) 2017-10-30 22:42:51 -06:00
Yifan Zhu
8cc3bcb649 r-ggplot2: dependecy r-scales version should be 0.4.1: (#6031) 2017-10-30 22:42:31 -06:00
Yifan Zhu
fb072d1472 r-scales: added dependencies and version 0.5.0. (#6030)
* r-scales: Update url.

* r-scales: added version 0.5.0 and dependencies
2017-10-30 22:42:05 -06:00
lingnanyuan
7e4ac9a559 r-segmented: Update version to 0.5-2.2 (#6029) 2017-10-30 22:41:32 -06:00
Yifan Zhu
34c6ff10e9 r-ggally: new package (#6036)
* r-ggally: created new package

* r-ggally: version modified
2017-10-30 22:41:12 -06:00
lingnanyuan
65785cc3f5 r-speedglm: Create new package. (#6035) 2017-10-30 22:40:48 -06:00
lingnanyuan
a4138b6041 r-alpine: Create new package. (#6037) 2017-10-30 22:40:25 -06:00
Yifan Zhu
22f9125164 r-ensembldb: created new package (#6038) 2017-10-30 22:39:54 -06:00
Yifan Zhu
2a7027e2cc r-pcamethods: created new package (#6041) 2017-10-30 22:39:29 -06:00
Yifan Zhu
cbb433655c r-proxy: created new package (#6039) 2017-10-30 22:39:05 -06:00
lingnanyuan
8271434632 r-backports: Create new package. (#6040) 2017-10-30 22:38:35 -06:00
lingnanyuan
81d3c9fdc6 r-biovizbase: Create new package. (#6042) 2017-10-30 22:38:10 -06:00
Abhinav Bhatele
b37c8fef74 ecp-proxy-apps: release number changed to 1.0 (#6049) 2017-10-30 22:37:09 -06:00
scheibelp
e5b8312de3 Auto install available pre-built packages from binary cache (#5242)
* basic functionality to install spec from a binary cache when it's available; this spiders each cache for each package and could likely be more efficient by caching the results of the first check

* add spec to db after installing from binary cache

* cache (in memory) spec listings retrieved from binary caches

* print a warning vs. failing when no mirrors are configured to retrieve pre-built Spack packages

* make automatic retrieval of pre-built spack packages from mirrors optional

* no code was using the links stored in the dictionary returned by get_specs, so this simplifies the logic to return only a set of specs

* print package prefix after installing from binary cache

* provide more information to user on install progress
2017-10-30 14:16:46 -07:00
Abhinav Bhatele
347c76b7a0 comd: update the git repo (#6027)
git repo has moved from exmatex to ECP-copa
2017-10-30 14:47:16 -06:00
George Hartzell
e6bc45a04a Add bowtie2@2.3.0, fix dependencies and sbangs (#5834)
* Add bowtie2@2.3.0, fix dependencies and sbangs

Add support for bowtie2@2.3.0

- digest
- a patch for 2.3.0 that parallels the existing package.  Truth be
  told it builds (for me) without this, but I'm assuming that they're
  there for a reason...).
- tune up dependencies
  - need tbb
  - don't need readline or zlib

Several things were installed with sbang's that use `/usr/bin/env` to
fine perl or python.  Fix the dependency and clean up the sbang lines.

* Fix python exe name, avoid path banging

I'd cut and pasted the python bit from the perl bit and missed one
reference to perl.

While I'm there, use the cleaner `spec['perl'].command` instead of
banging together the path from its bits.

* Fix up the "when" constraints on the dependencies

Get the edge cases right.

- 2.2.5 doesn't need tbb, 2.3.[01] do.
- 2.3.1 needs readline and zlib.
2017-10-29 15:40:00 -06:00
Denis Davydov
957ded209a add updated 2017 versions of Intel packages (#5957) 2017-10-29 15:38:10 -06:00
mmwolf
73fb02229a Changed from setting C compiler to setting C++ compiler (#6011) 2017-10-29 07:42:27 -06:00
Denis Davydov
f6a8ae230e dealii: remove bzip2 dependency for newer versions (#6022) 2017-10-29 07:39:51 -06:00
Yifan Zhu
56c7832789 r-iranges: changed url to git and added versioned dependency on r (#5971) 2017-10-28 12:14:33 -06:00
Audrey Thoma
f340333e6e r-geomorph and other r fixes (#5961) 2017-10-28 12:13:38 -06:00
lingnanyuan
57611397c9 r-e1071: Add list_url. (#5986) 2017-10-28 12:12:52 -06:00
Michael Kuhn
b43e2d2546 likwid: Update checksum (#6007) 2017-10-28 12:12:21 -06:00
Yifan Zhu
43c1bb5f30 r-organismdbi: new package (#5997) 2017-10-28 12:11:44 -06:00
lingnanyuan
3eab6ed4b2 r-aldex2: Create new package. (#6015) 2017-10-28 12:10:22 -06:00
Christoph Junghans
167f7d0cdd legion: add v17.10.0 (#6019) 2017-10-28 12:09:39 -06:00
Audrey Thoma
edae3ceae7 fixing abyss (#5973) 2017-10-28 17:05:52 +02:00
Sergey Kosukhin
5ebddcd5e3 Bugfix: from_list_url(). (#5780)
This fixes a bug in from_list_url where it was referring to a method
which no longer exists. This also adds a test for the from_list_url
function.
2017-10-27 17:41:41 -07:00
Christoph Junghans
95c8ecb6f5 libaec: add v1.0.2 and generic url (#6017) 2017-10-27 18:22:27 -06:00
Matthias Diener
45bfcfa30a Byobu: new package (#5974) 2017-10-27 10:43:45 -07:00
Christoph Junghans
f9599c1772 ecp-proxy-apps: add more package (#6003) 2017-10-27 08:34:52 -06:00
Christoph Junghans
c97bf0486c SWFFT: initial commit (#5953)
* SWFFT: initial commit

* swfft: fix build target

* swfft: add v1.0

* Update package.py
2017-10-27 07:20:29 -06:00
Christoph Junghans
13b41cd53c comd: add v1.1 (#5994)
* comd: add v1.1

* Update package.py

* remove serial variant, now ~mpi

* Update package.py
2017-10-27 07:20:18 -06:00
lingnanyuan
222fee1cb3 r-graph: Create new package. (#5958) 2017-10-27 08:34:33 +02:00
lingnanyuan
f244653496 r-category: Create new package. (#5959) 2017-10-27 08:34:16 +02:00
lingnanyuan
715a679245 r-methodss3: Create new package. (#5960) 2017-10-27 08:32:20 +02:00
lingnanyuan
737f9eee5c r-oo: Create new package. (#5962) 2017-10-27 08:31:46 +02:00
lingnanyuan
f676d8f3d7 r-utils: Create new package. (#5964) 2017-10-27 08:31:26 +02:00
lingnanyuan
3bb4572e81 r-pfam-db: Create new package. (#5965) 2017-10-27 08:27:19 +02:00
lingnanyuan
95ece343c4 r-oligoclasses: Create new package. (#5966) 2017-10-27 08:26:25 +02:00
Yifan Zhu
3ea6a11043 r-interactivedisplaybase: created new package (#5967) 2017-10-27 08:26:02 +02:00
lingnanyuan
c672b2b191 r-annotationforge: Create new package. (#5968) 2017-10-27 08:25:12 +02:00
lingnanyuan
57528fddbb r-gostats: Create new package. (#5969) 2017-10-27 08:24:49 +02:00
Audrey Thoma
835e6107fe r-mcmcglmm: new package (#5970) 2017-10-27 08:24:28 +02:00
Yifan Zhu
7b0fd6510c r-annotationhub: created new package (#5972) 2017-10-27 08:23:25 +02:00
Denis Davydov
c2094a11e3 gnuplot: add 5.2.0 and 5.0.7 (#5979) 2017-10-27 08:20:34 +02:00
lingnanyuan
dc8a0e8410 r-deseq2: Create new package. (#5981) 2017-10-27 08:16:40 +02:00
lingnanyuan
1de2109a5a r-agdex: Create new package. (#5983) 2017-10-27 08:16:04 +02:00
lingnanyuan
82b1731ded r-agilp: Create new package. (#5984) 2017-10-27 08:15:39 +02:00
lingnanyuan
7c56318cb5 r-aims: Create new package. (#5987) 2017-10-27 08:14:55 +02:00
George Hartzell
55b79dca8c Add info for go@1.9.2 (#5989)
The go team released 1.9.2 which includes fixes for some things
that 1.9.1 broke:

> ... include fixes to the compiler, linker, runtime, documentation, go command, and the crypto/x509, database/sql, log, and net/smtp packages. They include a fix to a bug introduced in Go 1.9.1 and Go 1.8.4 that broke "go get" of non-Git repositories under certain conditions.
2017-10-27 08:13:33 +02:00
Yifan Zhu
3849401d85 r-annotationfilter: created new package (#5995) 2017-10-27 08:09:31 +02:00
Yifan Zhu
0c2a691b1b r-protgenerics: created new package (#5998) 2017-10-27 08:08:16 +02:00
Abhinav Bhatele
ad51e818a7 ecp-proxy-apps: add dependencies (#5999) 2017-10-26 19:54:40 -06:00
Christoph Junghans
0b3247c23d miniamr: bump to v1.4.0 (#5975) 2017-10-26 19:51:50 -06:00
Ben Boeckel
bd6378a6d2 Package.extends: update semantics when package isn't concrete (#5600)
This updates the logic for Package.extends so that if the spec
associated with the package is not concrete, it will report true if
the package *could extend* the given spec; generally speaking a
package could extend a spec as long as none of the details associated
with its extendee spec conflict with the given spec. When the spec
associated with the package is concrete, this function will only
report whether the package *does extend* the given spec. When both
the specs are concrete, the semantics are the same as before.
2017-10-26 13:12:32 -07:00
Ondřej Čertík
0e464f86bb Exodus: skip the -G "Unix Makefiles" part (#5906)
* Exodus: skip the -G "Unix Makefiles" part

The problem is that spack passes -G "Unix Makefiles" into cmake, which normally
works. But in the Exodus package, it is being passed into a bash wrapper
script. In there, the $@ then loses the information about "Unix Makefiles"
being just one argument, and in effect passes -G Unix Makefiles into the cmake
(without quotes), and so cmake only sees -G Unix, and then fails. This is a
known problem with bash with no simple solutions. As a workaround, this patch
skips the first two arguments, i.e., -G and "Unix Makefiles". This makes it
work.

Fixes #5895.

* Port exodusii to cmake

The cmake options were taken from the cmake-exodus bash script and ported to
spack directly.

* Use variant forwarding to forward the 'mpi'

Now instead of

    spack install exodusii~mpi^netcdf~mpi^hdf5~mpi

one can just use

    spack install exodusii~mpi
2017-10-26 13:50:18 -06:00
Patrick Gartung
8e47b17a4d Buildcache: symlinks, externals, & install-checking (#5894)
* When creating a tar of a package for a build cache, symlinks are
  preserved (the corresponding path in the newly-created tarfile will
  be a symlink rather than a copy of the file)
* Dont add external packages to a build cache
* When installing from binary cache, don't create install prefix until
  verification is complete
2017-10-26 11:06:59 -07:00
Christoph Junghans
5c09176014 minife: version bump to v2.1.0 (#5985) 2017-10-26 11:45:40 -06:00
Abhinav Bhatele
0ff1fe90fa Laghos: new package (#5956) 2017-10-26 09:18:57 -06:00
Abhinav Bhatele
02744141e9 sw4lite: fix build errors and add variants (#5944)
* sw4lite: fix build errors and add variants

* sw4lite: change linking against blas and lapack

* change order of blas and lapack

* satisfy flake8 requirements

* Update package.py
2017-10-26 09:18:05 -06:00
Jon Rood
18d2fe7647 Customization of the Paraview module file to its nonstandard directory structure (#5799)
* Add the custom paraview lib directory structure to the library paths in the paraview module file.

* Fixing flake8 issues.

* Checking if lib64 exists for paraview module file generation, else use lib.

* Fixing more flake8 problems I introduced.
2017-10-26 11:12:04 +02:00
Christoph Junghans
a05bbd7104 flang: fixed llvm dep (#5948)
* flang: fixed llvm dep

* add support for llvm-5

* Update package.py

* Update package.py
2017-10-26 09:34:33 +02:00
Johann Klähn
306f536138 Add option to install clang python bindings to llvm (#5774) 2017-10-26 01:46:03 +02:00
Ondřej Čertík
89b0a09de0 Make clang use libc++ by default (#5943)
Since LLVM 3.9 Clang can use the libc++ library by default using the
CLANG_DEFAULT_CXX_STDLIB cmake configuration variable, without having to
specify the -stdlib=libc++ option on the clang++ command line.

This commit makes clang++ use libc++ by default for LLVM 3.9 and later if the
libcxx variant is on.

Fixes #5942.
2017-10-25 16:19:32 -06:00
Ondřej Čertík
aa750f12de Colorize "Installing pkg_name" (#5950)
Now one can quickly visually see in the terminal which packages are installed
and where each package begins and ends in the log.
2017-10-26 00:06:56 +02:00
mmwolf
ffb4251666 adding miniTri miniapp (#5935) 2017-10-25 15:49:22 -06:00
scheibelp
dcdd16b35e Check for namespace-qualified packages in repo_for_pkg (#5787)
* Fixes #5754

Previously when RepoPath.repo_for_pkg was invoked with a string,
it did not check if the string included a namespace. Any
namespace-qualified package provided as a string would not be found
(at which point the behavior was to return the highest-precedence
repository).

* handle nested namespaces for packages specified as strings in repo_for_pkg
* add preliminary repository tests
* add test which replicates #5754
* refactor repo tests with fixtures
* define repo_path equivalent at test-level scope for repo tests
* add tests for unknown namespace/package
* rename fixture function (no longer prefixed with 'test_')
2017-10-25 21:08:03 +02:00
Omar Padron
dd39862a80 boost: remove duplicate patch (#5934) 2017-10-25 12:00:50 -07:00
Jimmy Tang
1f4089a78f tweak opencv version (#5623) 2017-10-25 14:37:40 +02:00
Sergey Kosukhin
c9810f8088 Update for 'netcdf'. (#5819) 2017-10-25 14:30:58 +02:00
George Hartzell
b43064190c Specify base branch for flake8 comparison (#5796)
Internally we work against a branch named 'llnl/develop', which
mirrors the public repository's `develop` branch.

It's useful to be able to run flake8 on our changes, using
`llnl/develop` as the base branch instead of `develop`.

Internally the flake8 subcommand generates the list of changes files
using a hardcoded range of `develop...`.

This makes the base of that range a command line option, with a
default of `develop`.

That lets us do this:

```
spack flake8 --base llnl/develop
```

which uses a range of `llnl/develop...`.
2017-10-25 14:30:22 +02:00
Audrey Thoma
d839012e00 delly2: new package (#5820) 2017-10-25 13:55:13 +02:00
David Hows
05b3178ca4 Zlib gets a 50-60% performance win when compiled with -O2 (#5838)
Chasing a performance regression has lead me to this change, going from default optimization gives a significant performance win. The sweet spot for zlib is apparently `-O2`, both `-Ofast` and `-O3` are slightly worse (regression is about 3% compared with `-O2) in my testing. 

Happy to share my methodology with people so we can benchmark on a wider variety of systems.
2017-10-25 13:53:35 +02:00
Sergey Kosukhin
ce8a698b48 Update for 'eccodes'. (#5899) 2017-10-25 13:48:55 +02:00
George Hartzell
5d3a774587 Add package for scalpel@0.5.3 (#5901)
* Add package for scalpel@0.5.3

Scalpel's a bit of a mess, it expects it's users to just unpack the
tarball, build it in the resulting directory and install that
directory onto their PATH.  My install step recapitulates this into
prefix.bin.  The alternative was rewiring their scripts (perl), which
use `FindBin` and expect things to be located in the same dir that the
script itself is.

Sigh.

Lightly tested on CentOS 7.

* Flake8 cleanup

* Additional flake8 cleanup
2017-10-25 13:48:11 +02:00
Audrey Thoma
729c88f068 adding perl-bio-perl and dependencies (#5845)
* perl-bio-perl and dependencies

* minor fixes

* condensing code

* fixing doc error
2017-10-25 13:35:17 +02:00
Sergey Kosukhin
b92ddd72dd Update for 'cdo'. (#5947) 2017-10-25 13:24:19 +02:00
Eric
e2ef033855 bwa: add 0.7.17 (#5902)
* bwa: add 0.7.17

* bwa: add 0.7.13
2017-10-25 12:21:18 +02:00
George Hartzell
ff031de800 Add old version to bcftools (#5907)
* bcftools v1.2 and htslib v1.2

* dependency change - only require dependencies for v1.2
2017-10-25 12:20:42 +02:00
Audrey Thoma
9947306c3e py-xlsxwriter: new package (#5918) 2017-10-25 12:19:59 +02:00
George Hartzell
4fb46501af adding bedtools2 v2.23.0 (#5911) 2017-10-25 12:16:10 +02:00
George Hartzell
98c06eae92 Parallel fix sbangs (#5910)
* Added procedure to edit sbangs of the parallel perl scripts.

* Specify the types of perl dependency

Adding ", type=('build', 'run')" to the dependency declaration to clarify when and how perl is required

* flake8 cleanup
2017-10-25 12:15:10 +02:00
Audrey Thoma
3265008ad2 adding perl-moose and dependencies (#5912)
* adding perl-moose and dependencies

* added missing dependency

* fixed flake8 errors
2017-10-25 12:07:20 +02:00
Robert Pavel
9e1341a162 Added Hypre Dependency to mfem+hypre (#5929)
Added missing hypre defendency from mfem's hypre-enabled version
2017-10-25 12:03:50 +02:00
lingnanyuan
acbd6c9f62 r-geneplotter: Create new package. (#5924) 2017-10-25 12:01:19 +02:00
lingnanyuan
79b49d44af r-gridextra: Update version to 2.3 (#5915) 2017-10-25 11:50:16 +02:00
Audrey Thoma
f8b90d50de r-geiger and dependencies (#5933) 2017-10-25 11:17:37 +02:00
lingnanyuan
cc51cc0b06 r-rbgl: Create new package. (#5931) 2017-10-25 11:17:29 +02:00
Yifan Zhu
f87c426a6c r-variantannotation: created new package (#5932) 2017-10-25 11:17:15 +02:00
lingnanyuan
f1c06dec7c r-gseabase: Create new package. (#5930) 2017-10-25 11:17:00 +02:00
Yifan Zhu
054cc5d361 r-bsgenome: created new package (#5928) 2017-10-25 11:16:53 +02:00
Yifan Zhu
6b6d5d20e2 r-lsei: new package (#5926) 2017-10-25 11:16:46 +02:00
Yifan Zhu
fc3d484784 r-yarn: created new package (#5925) 2017-10-25 11:16:41 +02:00
lingnanyuan
d0a5f73a94 r-formula: Update version to 1.2-2 (#5923) 2017-10-25 11:16:34 +02:00
Yifan Zhu
c5447d7818 r-quantro: created new package (#5922) 2017-10-25 11:16:20 +02:00
lingnanyuan
05997460f6 r-scales: Update url. (#5921) 2017-10-25 11:16:00 +02:00
Yifan Zhu
3216daa905 r-doparallel: added list_url and version 1.0.11 (#5920) 2017-10-25 11:15:49 +02:00
lingnanyuan
21799cbe81 r-hmisc: Create new package. (#5919)
* r-hmisc: Create new package.

* Correct format.
2017-10-25 11:15:40 +02:00
Yifan Zhu
5742ec4fea r-openssl: changed homepage url to the CRAN package homepage, added list_url and added version 0.9.7 (#5848) 2017-10-25 11:12:31 +02:00
Praveen C
5b9de2eaba Glibc 2.26 does not provide xlocale.h (#5862) 2017-10-25 10:39:32 +02:00
Ondřej Čertík
882480fad6 gdbm: pass in proper CPPFLAGS (#5893)
The problem was that the configure script was not using spack's compiler
wrappers. We now pass the proper compiler wrapper using the CC argument
explicitly.

Fixes #5892.
2017-10-25 07:09:41 +02:00
Abhinav Bhatele
b47ff33f11 Add a new package for AMG and fix build issues in the amg2013 package (#5909)
* amg2013: fix build issues

* amg: add new package

* Update package.py

* amg2013: standardize option name

* amg: standardize option names
2017-10-24 21:06:33 -06:00
Ondřej Čertík
39616a2fe1 hypre: make mpi dependency optional (#5905) 2017-10-24 18:53:12 -07:00
Robert Pavel
68f7b7863a Added Spackage for SW4Lite proxy (#5917)
Added Spackage for C version of SW4Lite proxy. Fortran will follow once
race conditions involving .mod files are resolved
2017-10-24 15:31:05 -06:00
Massimiliano Culpo
8b7d2d0f24 'spack install' can overwrite an existing installation (#5384)
'spack install' can now reinstall a spec even if it has dependents, via
the --overwrite option. This option moves the current installation in a
temporary directory. If the reinstallation is successful the temporary
is removed, otherwise a rollback is performed.
2017-10-24 12:32:30 -07:00
Denis Davydov
31813ef2c7 slepc and petsc version updates (#5863)
slepc: add 3.8.0
petsc: no longer prefer 3.7.7
2017-10-24 10:57:14 -07:00
Yifan Zhu
8c306b7b83 r-minfi: created new package (#5887) 2017-10-24 14:07:45 +02:00
健美猫
37ce53c48f Add a package: thrust. (#3729) 2017-10-24 11:39:38 +02:00
Yifan Zhu
1ee60e7c63 r-nlme: added list_url and version 3.1-131 (#5890) 2017-10-24 11:30:49 +02:00
Yifan Zhu
2a2203895a r-genomicalignments: created new package (#5785)
* r-genomicalignments: created new package

* r-genomicalignments: using git repo source instead
2017-10-24 11:30:33 +02:00
Yifan Zhu
a68f9dcc26 r-reshape: created new package (#5889) 2017-10-24 11:29:56 +02:00
Yifan Zhu
43d39a6b00 r-data-table: added list_url and version 1.10.4-2 (#5888) 2017-10-24 11:29:42 +02:00
Todd Gamblin
3f68cc2ba7 Fix bug in spack flake8 when no files differ from develop (#5898) 2017-10-24 11:29:18 +02:00
lingnanyuan
896d4c8d0c r-mass: Update version to 7.3-47 (#5885) 2017-10-24 11:27:04 +02:00
lingnanyuan
cc06112959 r-acepack: Create new package. (#5884) 2017-10-24 11:26:37 +02:00
lingnanyuan
b09f0cdbe1 r-latticeextra: Create new package. (#5883)
* r-latticeextra: Create new package.

* r-latticeextra: Update list_url.
2017-10-24 11:26:20 +02:00
lingnanyuan
01215d705f r-htmltable: Create new package. (#5882) 2017-10-24 11:25:58 +02:00
lingnanyuan
8c0b95c398 r-htmlwidgets: Update verion to 0.9 (#5881) 2017-10-24 11:25:42 +02:00
lingnanyuan
22e96a10ad r-checkmate: Create new package. (#5880) 2017-10-24 11:25:24 +02:00
Yifan Zhu
17d94a5b51 r-geoquery: created new package (#5879)
* r-geoquery: created new package

* r-geoquery: added versioned dependency on r
2017-10-24 11:25:02 +02:00
lingnanyuan
25d38fe077 r-knitr: Update version to 1.17. (#5878) 2017-10-24 11:24:45 +02:00
Yifan Zhu
bba655d6d7 r-httr: added list_url and version 1.3.1 (#5877) 2017-10-24 11:24:29 +02:00
lingnanyuan
d4d44f0c63 r-rcpparmadillo: Create new package. (#5875) 2017-10-24 11:24:16 +02:00
Yifan Zhu
eeb1edd8e5 r-curl: added list_url and version 3.0 (#5874) 2017-10-24 11:23:54 +02:00
lingnanyuan
859b9972d3 r-yaml: Update version to 2.1.14 (#5856) 2017-10-24 11:23:38 +02:00
lingnanyuan
ae578069bd r-formatr: Update version to 1.5 (#5855) 2017-10-24 11:23:17 +02:00
lingnanyuan
050b753bb7 r-crayon: Update version to 1.3.4 (#5854) 2017-10-24 11:23:00 +02:00
lingnanyuan
764b7a7ad1 r-sourcetools: Create new package. (#5853) 2017-10-24 11:22:42 +02:00
lingnanyuan
4b50598252 r-testit: Update version to 0.7 (#5852) 2017-10-24 11:22:23 +02:00
lingnanyuan
6b87875d81 r-markdown: Update version to 0.8. (#5851) 2017-10-24 11:22:05 +02:00
Yifan Zhu
ab96705f05 r-base64: created new package (#5850) 2017-10-24 11:21:48 +02:00
Yifan Zhu
f814e9bba1 r-illuminaio: created new package (#5849) 2017-10-24 11:21:31 +02:00
lingnanyuan
7a176ca89e r-evaluate: Update version to 0.10.1. (#5847)
* r-evaluate: Update version to 0.10.1.

* r-evaluate: update list_url.
2017-10-24 11:20:47 +02:00
lingnanyuan
420048350f bioconductor update (#5786)
* r-a4: Add r dependency and update url.

* r-a4base: Add r dependency and update url.

* r-a4classif: update url and add r dependency.

* r-a4core: Update url and add r dependency.

* r-a4preproc: Update url and add r dependency.

* r-a4reporting: Update url and add r dependency.

* r-abaenrichment: Update url and add r dependency.

* r-absseq: Update url and add r dependency.

* r-acgh: Update url and add r dependency.

* r-acme: Update url and add r dependency.

* r-adsplit: Update url and add r dependency.

* r-affxparser: Update url and add r dependency.

* r-affycomp: Update url and add r dependency.

* r-affycompatible: Update url and add r dependency.

* r-affycontam: Update url and add r dependency.

* r-annaffy: Update url and add r dependency.

* r-annotate: Update url and add r dependency.

* r-annotate: Update url and add r dependency.

* r-annotationdbi: Update url and add r dependency.

* r-genefilter: Update url and add r dependency.

* r-mlinterfaces: Update url and add r dependency.

* r-limma: Update url and add r dependency.

* r-multtest: Update url and add r dependency.

* r-a4classif: Correct format.

* r-affycomp: Correct error.
2017-10-24 11:19:19 +02:00
Yifan Zhu
f9f0c1472f r-siggenes: new package (#5831)
* r-siggenes: created new package

* deleted extra indent
2017-10-24 11:14:04 +02:00
lingnanyuan
cea33af464 r-affyrnadegradation: Create new package. (#5830) 2017-10-24 11:13:53 +02:00
lingnanyuan
2ede483149 r-affyqcreport: Create new package. (#5829) 2017-10-24 11:13:44 +02:00
Yifan Zhu
edac742f84 r-nor1mix: created new package (#5828) 2017-10-24 11:13:04 +02:00
lingnanyuan
46b385761d r-affyplm: Create new package. (#5827) 2017-10-24 11:12:56 +02:00
lingnanyuan
2c5b3a2268 r-affypdnn: Create new package. (#5826) 2017-10-24 11:12:47 +02:00
Yifan Zhu
6fd0030acb r-beanplot: created new package (#5825)
* r-beanplot: created new package

* correct according to flake8
2017-10-24 11:12:15 +02:00
Aaron Fisher
204217f7c1 Updated external package versions. (#5833) 2017-10-24 11:10:59 +02:00
Yifan Zhu
968144f1c5 r-bumphunter: new package (#5824)
* r-bumphunter: created new package

* r-bumphunter: added description
2017-10-24 11:09:38 +02:00
Sergey Kosukhin
161dca6d5d Update for 'hdf5'. (#5790)
* Refactoring for 'hdf5'.

* Remove 'unsupported' variant.
2017-10-24 11:09:08 +02:00
Michael Kuhn
c7ac4e3774 go: Update to 1.9.1 (#5868) 2017-10-24 11:02:33 +02:00
Todd Gamblin
6b5ca38723 do not use 'l' as a variable name, to appease new flake8 version
- new E741 flake8 checks disallow 'l', 'O', and 'I' as variable names

- rework parts of the code that use this, to be compliant

- we could add exceptions for this, but we're trying to mostly keep up
  with PEP8 and we already have more than a few exceptions.
2017-10-24 10:05:36 +02:00
Todd Gamblin
5449884b2e Fix bare 'except:' to placate errors in new flake8 version.
- fixes E722 errors from latest version of flake8
- requires us to not use 'bare except:' and catch BaseException instead
2017-10-24 10:05:36 +02:00
Todd Gamblin
b98fc48273 log tests use tmpdir properly 2017-10-24 10:05:36 +02:00
Todd Gamblin
0bb1eb32f2 fix bugs found with stricter flake8 rules
- When you don't use wildcards, flake8 will find places where you used an
  undefined name.

- This commit has all the bugfixes resulting from this static check.
2017-10-24 10:05:36 +02:00
Todd Gamblin
7dd79094b0 remove wildcards from make spack core and packages
- This removes all wildcard imports EXCEPT `from spack import *` in packages
2017-10-24 10:05:36 +02:00
Todd Gamblin
7757ebc0bc flake8: no wildcards in core; only import * from spack in packages
There are now separate flake8 configs for core vs. packages:
- core has a smaller set of flake8 exceptions
- packages allow `from spack import *` and module globals
- Allows core to take advantage of static checking for undefined names
- Allows packages to keep using Spack tricks like `from spack import *`
  and dependencies setting globals for dependents.
2017-10-24 10:05:36 +02:00
Todd Gamblin
beab0cb92e add newlines at end of some package files 2017-10-24 10:05:36 +02:00
Todd Gamblin
78e22940c2 add --all option to spack flake8
- `-a`/`--all` causes flake8 to run on all files rather than just
  different ones.
2017-10-24 10:05:36 +02:00
scheibelp
e660611a87 package: remove bare except statements (#5896) 2017-10-23 19:28:53 -07:00
Mark Grondona
328dc3d140 jansson: enable shared library (#5857)
Jansson builds only a static library by default, which is probably
not what most users want. Add Cmake args required to build a shared
library and enable those via a default 'shared' variant of the
package.
2017-10-23 13:32:51 +02:00
Massimiliano Culpo
3e7680e24a getting_started.rst: removed tip suggesting the use of 2 Spack instances (#4061) 2017-10-20 21:09:08 -07:00
Massimiliano Culpo
3afc6770f0 module-type argument defaults to 'tcl' instead of every known type (#5751)
fixes #5721

This is to solve the fact that lmod needs to be configured
by the user (to specify a core compiler).
2017-10-20 20:41:25 -07:00
Patrick Gartung
a8ee2a912b buildcache command updates (#5860)
* Add better spec matching to spack buildcache

* skip download of spec.yaml and keys if they exist

* autopep8
2017-10-20 20:33:01 -07:00
jiseung
969c8b177f new package: hpgmg (#4888)
* new package: hpgmg

* removed build and changed extend() to append()

* changes based on comments

* pep8 compliant

* addressed rest of comments

* trigger checks

* changed from fe_fv to two boolean variants

* fixed compilation issues

* cleared up ambiguities in solver variants

* removed +mpi condition

* changes based on review
2017-10-20 17:34:55 -07:00
Adam J. Stewart
2570dfb4d9 Update Getting Started docs to clarify that full Xcode suite is required for qt (#4958)
* Update Getting Started docs to clarify that full Xcode suite is required for qt

* Better error message when only the command-line tools are installed
2017-10-20 17:31:12 -07:00
George Hartzell
c9d9901e43 perl: add old version (#5844) 2017-10-20 16:18:24 -07:00
Christoph Junghans
2e1a96f262 xsbench: add v14 (#5835) 2017-10-20 08:52:17 +02:00
Todd Gamblin
4dac4736e7 spack blame can take a path to a file in the Spack repo (#5793)
- Previously `spack blame` only worked for package names; now it works
  for paths as well, so developers can use it on core spack files.
2017-10-19 14:27:15 -07:00
Milton Woods
d72bcc91f4 perl: ignore perllocal.pod files during package activation (#5271) 2017-10-19 14:24:49 -07:00
Adam J. Stewart
a1c19f8389 Allow documentation to build in Python 3 (#5736) 2017-10-19 00:26:04 -07:00
George Hartzell
b46f1e3605 bcl2fastq needs with working_dir: after changes in #5776 (#5803)
#5776  cleaned up the way the the current working directory is
managed (less magic state).

bcl2fastq is packaged like a russian doll, rather than an archive file
that contains the source, there's a zip file that contains a tar.gz
file that contains the source.  The package definition has a bit of
extra code that unpacks the inner tarball.

That extra bit of code now needs to explicitly arrange to be in the
correct directory before it does its work.
2017-10-19 08:59:25 +02:00
Christoph Junghans
4774c9887e libxml2: use spack's xz (#5816) 2017-10-19 08:32:37 +02:00
lingnanyuan
6642f62eb9 r-affyexpress: Create new package. (#5807) 2017-10-18 19:07:04 -06:00
Yifan Zhu
5e2c4dbb5c r-rtracklayer: new package (#5808) 2017-10-18 19:06:36 -06:00
lingnanyuan
76cce82d65 r-affyilm: Create new package. (#5810) 2017-10-18 19:06:16 -06:00
Yifan Zhu
d701c4afd6 r-genomicfeatures: new package (#5811)
* r-genomicfeatures: created new package

* modified version number and added versioned dependency on r

* fixed typo
2017-10-18 19:05:53 -06:00
Denis Davydov
3e67b98e29 dealii: blacklist boost 1.64 and 1.65 (#5805)
* dealii: blacklist boost 1.64 and 1.65

* flake8
2017-10-18 15:58:05 -06:00
Stephen Hudson
0b62625e9d py-mpi4py: Add develop version and dependencies (#5798)
* py-mpi4py: Add develop version and dependencies

- Add cython dependency for develop version

- Add explicit python dependency

* py-mpi4py: Specify 2.0.1 instead of develop for conditional dep
2017-10-18 15:56:48 -06:00
Akhil Reddy Patlolla
9b994c05f4 CoMD Proxy App with Serial, MPI, OpenMP Support (#4864) 2017-10-17 19:59:57 -06:00
George Hartzell
ad5fb40d75 perl: add write permissions to update config files (#5746)
Perl installs a couple of config files that need to be munged so that
they don't refer to the spack compiler.  These files are installed
read-only.  Behind the scenes 'filter_file' moves its file to a safe
place, and tries to create a working file that is both O_WRONLY and
has the perms of the original file.  On an NFSv4 filesystem, the
combination of 'r--r--r--' and O_WRONLY throws a permissions error.

This commit adds a simple context manager that temporarily makes the
files writable.
2017-10-17 18:38:23 -07:00
George Hartzell
464e558aea filter_file, don't remove absent backup file (#5733)
I'm tracking down a problem with the perl package that's been
generating this error:

```
OSError: OSError: [Errno 2] No such file or directory: '/blah/blah/blah/lib/5.24.1/x86_64-linux/Config.pm~'
```

The real problem is upstream, but it's being masked by an exception
raised in `filter_file`s finally block.

In my case, `backup` is `False`.

The backup is created around line 127, the `re.sub()` calls
fails (working on that), the `except` block fires and moves the backup
file back, then the finally block tries to remove the non-existent
backup file.

This change just avoids trying to remove the non-existent file.
2017-10-17 11:26:05 -07:00
David Hows
ffc4c31b82 Add a new +clanglibcpp option for Boost (#5708)
* Add a new +clanglibcpp option for Boost

Currently, the compile of boost with clang will use the stdlibc++. This patch adds an optional flag to use clangs included libc++ instead.

* Linting

Fix long lines and white space errors
2017-10-17 01:40:09 -07:00
Christoph Junghans
5f592fb911 votca-xtp: added url (#5772) 2017-10-17 01:39:02 -07:00
Christoph Junghans
244c7af864 flang: clean up (#5766) 2017-10-17 01:38:41 -07:00
Christoph Junghans
1a12e6022b liquo: added 1.3 and develop (#5781) 2017-10-17 01:36:54 -07:00
Michael F. Herbst
1952a92820 Minor typos and corections (#5789)
- The shell script uses arrays and hence only works on sophisticated shells and not the default `sh`. For clarity the shebang `#!/bin/bash` has been used instead.
2017-10-17 01:36:03 -07:00
Douglas Duckworth
f0da8251b3 singularity 2.4 added (#5782) 2017-10-17 01:28:19 -07:00
Todd Gamblin
100fb1e6ee Exercise more code paths in the git fetcher.
- This fakes out GitFetchStrategy to try code paths for different git
  versions.

- This allows us to test code paths for old versions using a newer git
  version.
2017-10-17 01:26:31 -07:00
Todd Gamblin
d14816cbaf Spack tests no longer clutter var/spack/stage
- Tests use a session-scoped mock stage directory so as not to interfere
  with the real install.

- Every test is forced to clean up after itself with an additional check.
  We now automatically assert that no new files have been added to
  `spack.stage_path` during each test.

  - This means that tests that fail installs now need to clean up their
    stages, but in all other cases the check is useful.
2017-10-17 01:26:31 -07:00
Todd Gamblin
44bebd7a8f `Package.stage` no longer implicitly makes stage directory
- Be explicit about stage creation during the install process.

- This avoids accidental creation of stages
  - e.g., during `spack install --fake`, stages were erroneously recreated
    after being destroyed
2017-10-17 01:26:31 -07:00
Todd Gamblin
894a1a73a4 Spack tests no longer use the var/spack/stage directory.
- This prevents the main spack install from being clusttered by
  invocations of `spack test`.

- This uses a session-scoped stage fixture to ensure tests don't
  interfere.
2017-10-17 01:26:31 -07:00
Todd Gamblin
c14f2dc7b4 Spack core and tests no longer use os.chdir()
- Spack's core package interface was previously overly stateful, in that
  calling methods like `do_stage()` could change your working directory.

- This removes Stage's `chdir` and `chdir_to_source` methods and replaces
  their usages with `with working_dir(stage.path)` and `with
  working_dir(stage.source_path)`, respectively.  These ensure the
  original working directory is preserved.

- This not only makes the API more usable, it makes the tests more
  deterministic, as previously a test could leave the current working
  directory in a bad state and cause subsequent tests to fail
  mysteriously.
2017-10-17 01:26:31 -07:00
Jon Rood
890c5ad329 Forcing Paraview to avoid using git describe to determine its own version number (#5783)
* Forcing Paraview to avoid using git describe to determine its own version number.

* Shortening references to spec in paraview.
2017-10-16 15:32:23 -06:00
Aaron Fisher
639d9c305a Updated the rc tag and version. (#5761) 2017-10-16 11:26:26 -07:00
Christoph Junghans
89344ebd44 portage: fixes + added v1.1.* (#5706) 2017-10-16 09:59:41 -07:00
Michael F. Herbst
d0cf3db46e armadillo: use libs to provide arpack and superlu libraries (#5777) 2017-10-16 12:57:01 +02:00
Denis Davydov
f6c16de6de petsc: a temporary workaround for concretizer bug in all packages which depend on SLEPc (#5755) 2017-10-16 00:53:55 -07:00
Johann Klähn
6c67de48e8 Update llvm to version 5.0.0 (#5773) 2017-10-15 13:04:40 -06:00
Michael F. Herbst
5656554922 Add krims and lazyten (#5771)
* Add krims to spack

* Add lazyten to spack

* Add description for lazyten

* Changes suggested by @davydden and @junghans
2017-10-15 11:45:11 -06:00
Denis Davydov
a16ec21fbe boost: remove preferred 1.63 (#5770)
1.64 had issues serialization (make_array and others) when built with
+mpi+python. It appears that those issues are fixed in 1.65.1
so we can remove preferred tag from 1.63.
2017-10-14 16:50:28 -06:00
Denis Davydov
cfd823c3f7 intel-tbb: add 2018.1 (#5769) 2017-10-14 16:40:23 -06:00
Denis Davydov
dcb888d477 gsl: add 2.4 (#5768) 2017-10-14 16:39:43 -06:00
Denis Davydov
8f52295dd8 oce: add 0.18.2 (#5767) 2017-10-14 16:39:21 -06:00
Christoph Junghans
31115af128 boost: call_once_variadic.patch is already part of 1.56.0 (#5341) 2017-10-14 12:53:25 -06:00
Christoph Junghans
a685372636 Revert "Use cflags instead of the args variable (#5756)" (#5765)
This reverts commit 6c3184820a.
2017-10-14 13:55:02 +02:00
Adam J. Stewart
6f9036c858 Ensure that FileList makes it into the documentation (#5739) 2017-10-14 06:20:39 +02:00
Satish Balay
0168025c1c superlu_dist: update to latest version 5.2.1 (#5762)
The interface to +int64 changed from  -D_LONGINT to XSDK_INDEX_SIZE=64. This change
uses the appropriate interface for for the given version
2017-10-13 21:22:44 -06:00
David Gardner
f885c89fdc Update Sundials package (#5696)
* initial update of sundials package

* fix bugs in initial sundials update

* add xsdk cmake setup, fix generic math option, add cuda/raja Makefiles to install fixes

* Fix lapack install bug, add new conflicts, clean up formatting

* Address pull requeset comments and make fomatting style consistent

Remove blas variant as blas is only needed when used by an external
linear solver. Set related CMake blas variables as needed depending
enabled external linear solvers.

Add minimum required CMake version.

Additional conflicts and dependencies for external libraries based
on mpi, indextype, and precision.

Fix SuperLU_MT logic to check which threading type SuperLU_MT was
configured with.

Add maintaiers.

Change Sundials solver options to use an array of values.

Consistently use % for formatting.

* change triple-single quotes to single quotes

* Change indextype option to a single int64 option
2017-10-13 21:13:10 -06:00
Todd Gamblin
1ba4c1af63 Clean up logic in Sepc.satisfies_dependencies()
- This puts in a fast path when there are no dependencies to satisfy.

- Reduces time spent to concretize r-rminer by 2x, down to 5s from 10s
2017-10-13 19:46:57 -07:00
Todd Gamblin
afc99ca516 Remove single-root assertion from Spec.root
- Assertion would search for root through all possible paths.
  - It's also really slow.

- This isn't needed anymore. We're pretty good at ensuring single-rooted
  DAGs, and this assertion has never been thrown.

- This shaves another 6 seconds off r-rminer concretization
2017-10-13 19:46:57 -07:00
Todd Gamblin
3f091fb6db Use list instead of OrderedDict to find virtual/external candidates
- This reduces concretization time for r-rminer from over 1 minute to
  only 16 seconds.
  - OrderedDict ends up taking a *lot* of time to compare larger specs.

- An OrderedDict isn't actually needed here.  It's actually not possible
  to find duplicates, and we end up sorting the contents of the
  OrderedDict anyway.
2017-10-13 19:46:57 -07:00
Todd Gamblin
f58c503091 avoid creating lots of dictionaries in traverse_edges()
- This is an optimization to the way traverse_edges iterates over
  successors.

- Previous version called dependencies_dict(), which involved a lot of
  redundant work (creating dicts and calling caonical_deptype)
2017-10-13 19:46:57 -07:00
Todd Gamblin
9ccaf6474d Don't redundantly check for providers of non-virtuals. 2017-10-13 19:46:57 -07:00
Todd Gamblin
55f85f2307 Cache compilers parsed from config files
- Spack ends up constructing compilers frequently from YAML data.

- This caches the result of parsing the compiler config

- The logic in compilers/__init__.py could use a bigger cleanup, but this
  makes concretization much faster for now.

- on macOS, this also ensures that xcrun is called only twice, as opposed
  to every time a new compiler object is constructed.
2017-10-13 19:46:57 -07:00
Patrick Gartung
2e1aa0a5e9 This fixes a bug in creating rpaths relative to $ORIGIN on linux. (#5726)
* This fixes a bug in creating rpaths relative to  on linux.

* fix for macOS as well

* found in testing

* flake8

* fix testing on macOS

* flake8
2017-10-13 19:13:07 -07:00
Yifan Zhu
4d3424a5d4 r-preprocesscore: added versioned dependency on r (#5671) 2017-10-13 18:50:26 -06:00
Yifan Zhu
e6109381fc r-rmpi: added list_url and updated md5 (#5698) 2017-10-13 18:35:06 -06:00
Yifan Zhu
ad8b9522d6 r-edger: added versioned dependency on r (#5669) 2017-10-13 18:32:43 -06:00
Yifan Zhu
8c2fe52f8e r-s4vectors: added versioned dependency on r (#5672) 2017-10-13 18:32:17 -06:00
Denis Davydov
c13e13a52b likwid: update versions (#5757) 2017-10-13 16:08:49 -06:00
Yifan Zhu
2c73c9fb50 r-xvector: added versioned dependency on r (#5731) 2017-10-13 16:01:18 -06:00
Satish Balay
6fcfc3bd5a flake8: fix warnings (#5759) 2017-10-13 15:16:58 -06:00
Ondřej Čertík
6c3184820a Use cflags instead of the args variable (#5756)
That way the user can still append things to CFLAGS.
2017-10-13 15:15:06 -06:00
Christoph Junghans
3c7dd367f8 py-espresso: initial commit (#5724) 2017-10-13 12:29:30 -07:00
Christoph Junghans
23e801923d espressopp -> py-espressopp (#5732)
* espressopp -> py-espressopp

* Update package.py
2017-10-13 12:28:36 -07:00
Axel Huebl
e17765db39 Docker Workflow (#5582)
This adds a workflow section on how to use spack on Docker.

It provides an example on the best-practices I collected over the
last months and circumvents the common pitfalls I tapped in.

Works with MPI, CUDA, Modules, execution as root, etc.

Background: Developed initially for PIConGPU.
2017-10-13 12:17:20 -07:00
Ondřej Čertík
e76cfbbfd8 Fix m4 to compile with Intel (#5728)
Fixes #5705.
2017-10-13 11:20:49 -06:00
Yifan Zhu
8ffe18f1dc r-biostrings: added versioned dependency on r (#5667) 2017-10-13 07:51:30 -06:00
Yifan Zhu
ce1e5e3098 r-zlibbioc: added versioned dependency on r (#5674) 2017-10-13 07:50:10 -06:00
Denis Davydov
b8c1ce43fa trilinos / oce : add missing if before calling macOS_version (#5743)
* trilinos: add missing if before calling macOS_version

* oce: add missing if before calling macOS_version
2017-10-13 07:49:18 -06:00
Yifan Zhu
9716a6f37f r-readr: created new package (#5741) 2017-10-13 07:47:43 -06:00
Yifan Zhu
350624a231 r-dorng: created new package (#5740) 2017-10-13 07:47:01 -06:00
Yifan Zhu
9f3e055e8b r-stringr: added list_url and version 1.2.0 (#5738) 2017-10-13 07:46:29 -06:00
Yifan Zhu
525b69bbad r-stringi: added list_url and version 1.1.5 and 1.1.3 (#5737) 2017-10-13 07:45:26 -06:00
Yifan Zhu
0b117a03c6 r-summarizedexperiment: created new package (#5734) 2017-10-13 07:45:05 -06:00
Yifan Zhu
501ebe6706 r-yaqcaffy: added list_url and versioned dependency on r (#5730) 2017-10-13 07:44:26 -06:00
Denis Davydov
65f12c8160 slepc: refine version constraints for petsc 3.8 (#5752) 2017-10-13 07:11:17 -06:00
Denis Davydov
22ef8efce9 openblas: remove extra develop version (#5750) 2017-10-13 12:10:05 +02:00
Denis Davydov
b182e2334d gettext: fix prefix (#5749) 2017-10-13 10:52:55 +02:00
Brian Van Essen
bd185b8146 Lbann flags (#5747)
* Fixed the datatype flag in the LBANN package.  Also added develop
version to OpenBLAS.

* Fixed where the datatype flag should be set.
2017-10-12 20:23:38 -06:00
Yifan Zhu
f2a6685d8c r-gcrma: added versioned dependency on r (#5670) 2017-10-12 16:18:30 -06:00
Yifan Zhu
d4906169e0 r-simpleaffy: added versioned dependency on r (#5673) 2017-10-12 16:18:15 -06:00
Satish Balay
59163f9750 petsc: add in maintainers (#5729) 2017-10-12 15:09:47 -06:00
David Hows
8ff8b7476c Add the option for a versioned layout to boost (#5709) 2017-10-12 12:51:39 -06:00
Audrey Thoma
36ed96e7dd kaks-calculator: new package (#5725)
* kaks-calculator: new package

* kaks-calculator: new package

* fixing homepage
2017-10-12 12:47:11 -06:00
Satish Balay
98c2184bd3 petsc: update to latest 3.8 version [and include 3.7.7] (#5723)
Also fix flake8 warning "import os should be before import sys"
2017-10-12 12:46:00 -06:00
Jon Rood
c0b2e7db73 Add OpenFAST package (wind turbine simulation tool). (#5662)
* Add OpenFAST package (wind turbine simulator).
* Adding maintainer to openfast package.
* Fixing copyright date.
2017-10-12 11:42:51 -07:00
Denis Davydov
1b53e82348 various fixes for macOS high sierra (#5647)
* various fixes for macOS high sierra

* add macOS_version() helper function

* flake8 fixes

* update oce and trilinos

* fix bison
2017-10-12 11:41:57 -07:00
David Hows
0dad5b3ee5 Make --trusted default when running spack gpg list (#5678)
* Make --trusted default when running spack gpg list

Currently running `spack gpg list` with no arguments returns nothing. You must supply either the `--trusted` or the `--signing` options. The idea here is to return some initial data to the user when the command is run. The alternative is to return an error, telling the user to select one of the two options.

* Add an extra test case for the empty list command

Fixes the issue with code coverage
2017-10-12 11:14:48 -07:00
Todd Gamblin
65b38764ae Speed up concretization (#5716)
This isn't a rework of the concretizer but it speeds things up a LOT.

The main culprits were:
  1. Variant code, `provider_index`, and `concretize.py` were calling
     `spec.package` when they could use `spec.package_class`
    - `spec.package` looks up a package instance by `Spec`, which requires a
      (fast-ish but not that fast) DAG compare.
    - `spec.package_class` just looks up the package's class by name, and you
        should use this when all you need is metadata (most of the time).
    - not really clear that the current way packages are looked up is
      necessary -- we can consider refactoring that in the future.

  2. `Repository.repo_for_pkg` parses a `str` argument into a `Spec` when
     called with one, via `@_autospec`, but this is not needed.
     - Add some faster code to handle strings directly and avoid parsing

This speeds up concretization 3-9x in my limited tests.  Still not super
fast but much more bearable:

Before:
  - `spack spec xsdk` took 33.6s
  - `spack spec dealii` took 1m39s

After:
  - `spack spec xsdk` takes 6.8s
  - `spack spec dealii` takes 10.8s
2017-10-12 09:52:38 -07:00
Carlos Bederián
db149876a4 samtools: add version 1.6 + some fixes (#5715)
* htslib: add version 1.6

* samtools: add version 1.6, remove zlib dependency

* bcftools: add version 1.6, switch to using standalone htslib
2017-10-12 10:08:31 -06:00
Audrey Thoma
87c65fafa9 minimap2: new package (#5722) 2017-10-12 10:07:42 -06:00
David Hows
90cd075277 Initial version of libpcap (#5710)
Add a package script for libpcap with the current version (1.8.1)
2017-10-12 07:00:21 -06:00
Todd Gamblin
b5e136b729 Better install output (#5714)
* Do not call setup_package for fake installs

- setup package could fail if ``setup_dependent_environment`` or other
  routines expected to use executables from dependencies

- xpetsc and boost try to get python config variables in
  `setup_dependent_package`; this would cause them not to be
  fake-installable

* Remove vestigial deptype_query argument to Spec.traverse()

- The `deptype_query` argument isn't used anymore -- it's only passed
  around and causes confusion when calling traverse.

- Get rid of it and just keep the `deptypes` argument

* Don't print redundant messages when installing dependencies

- `do_install()` was originally depth-first recursive, and printed "<pkg>
  already installed in ..." multiple times for packages as recursive
  calls encountered them.

- For much cleaner output, use spec.traverse(order='post') to install
  dependencies instead
2017-10-12 00:49:59 -07:00
Yifan Zhu
e807397074 r-affy: added versioned dependency on r (#5660) 2017-10-11 19:49:48 -06:00
Yifan Zhu
36eba3bf58 r-affyio: added versioned dependency on r (#5661) 2017-10-11 19:49:28 -06:00
Yifan Zhu
db0fec4d09 r-biocinstaller: added versioned dependency on r (#5663) 2017-10-11 19:49:08 -06:00
Yifan Zhu
4e8ac1d525 r-matrixstats: created new package (#5682) 2017-10-11 19:48:39 -06:00
Yifan Zhu
5e41ad6fed r-biocgenerics: added version 0.22.1 and added versioned dependency on r (#5683) 2017-10-11 19:48:19 -06:00
Yifan Zhu
8d48f07de1 r-genomeinfodbdata: added versioned dependency on r (#5685) 2017-10-11 19:48:00 -06:00
Yifan Zhu
a04e95a492 r-genomeinfodb: created new package (#5695) 2017-10-11 19:47:03 -06:00
Yifan Zhu
dc95dddd61 r-genomicranges: added new package (#5697) 2017-10-11 19:45:03 -06:00
Yifan Zhu
c93ecda872 r-futile-options: created new package (#5699) 2017-10-11 19:43:53 -06:00
Yifan Zhu
4af446d7f4 r-lambda-r: created new package (#5700) 2017-10-11 19:43:33 -06:00
Yifan Zhu
f8db73d567 r-futile-logger: created new package (#5701) 2017-10-11 19:43:15 -06:00
Yifan Zhu
01e104dfcb r-rsamtools: created new package (#5702) 2017-10-11 19:42:55 -06:00
Yifan Zhu
670463e95a r-biocparallel: created new package (#5703) 2017-10-11 19:42:25 -06:00
Yifan Zhu
e08e7af34e r-delayedarray: created new package (#5704) 2017-10-11 19:42:04 -06:00
Yifan Zhu
9a2ef4c4b3 r-biomart: added versioned dependency on r (#5666) 2017-10-11 19:41:08 -06:00
George Hartzell
124bdfb910 Strelka depends on boost 1.56.0 *or newer* (#5690)
Relax/correct the constraint on the version of boost used
by Strelka to match the docs.
2017-10-11 17:21:26 -06:00
Denis Davydov
35a62f715b dealii: minor fixes (#5687)
* dealii: fix minor bug in Assimp config

* dealii: request sundials without pthreads
2017-10-11 15:09:39 -06:00
Christoph Junghans
cfc13dec9f Add a bundle package for the ECP proxy applications suite (#5689)
* Add a bundle package for the ECP proxy applications suite

* Update package.py
2017-10-11 13:39:30 -06:00
健美猫
9e95e8394e Add a package: dmlc/mxnet. (#3579)
* Add dmlc/mxnet packags.

* Build mxnet+cuda+opencv with GCC-4.8.5 and GCC-5.4.0.

* Build mxnet version 0.10.0, 0.10.0.post1 and 0.10.0.post2.

* Add component version constrain for mxnet 0.10.0.x .

* Go through flake8.

* Replace commit hash with commit date as package version.

* Go throught Travis-CI.

* Update submodule version for 0.10.0.post2.

* Add openmp variant for dmlc-core and mxnet.

* Refine variant handling.

* Fix filter_file for dmlc-core.

* Cut long strings into multiple lies due to PEP8 requirements.

* Fix for PEP8.

* Add CUB_INCLUDE.

* Add py-mxnet: Python binding for MXNet.

* Remove distutils.dir_util.

* Add the profiler variant for mxnet.

* Add a shared variant for nnvm.

* Set USE_OPENMP to OFF by default.

* Fix flake8 errors.

* Fix flake8 issues.

* flake8 issues again.
2017-10-10 13:56:26 -07:00
Christoph Junghans
ef822453b9 Adding flang - a llvm based Fortran compiler (#5459)
* flang: initial commit

* flang: added symlink to clang's flang

* add flang wrapper

* flang wrapper: inject rpath as well

* flang wrapper: PATH -> -B
2017-10-10 13:52:31 -07:00
Christoph Junghans
cb7628c9a4 compilers/clang: add flang (#5503)
* compilers/clang: add flang

* Update clang.py
2017-10-10 13:52:10 -07:00
Christoph Junghans
88b515ede8 ninja: add v1.8.2 (#5625) 2017-10-10 12:50:56 -07:00
Massimiliano Culpo
a3bbe066b3 plumed: reworked patching applications, added new version (#5680)
closes #5506

The application of patches to upstream executables has been reworked
according to the suggestions of the main developer in #5506. In
particular we are not maintaining a dictionary that maps plumed
versions to the versions of patchable executables, and we are using a
non-interactive command to patch applications.

All the comments on substituting plumed at run-time do not apply here,
since we use RPATH and we want to maintain a 1:1 relationship between
the DAG hash and the plumed library used.
2017-10-10 12:35:53 -07:00
Audrey Thoma
e3053d7425 snap-korf: new package (#5589) 2017-10-10 11:09:31 -07:00
Jon Rood
f2b49d8f66 Adding openfast variant to nalu. (#5675) 2017-10-09 20:10:47 -06:00
lingnanyuan
35583f48f4 r-adsplit: Create new package and update version for its dependencies. (#5640)
* r-adsplit: Create new package.

* r-rlang: Update version.

* r-s4vectors: Update version.
2017-10-09 17:10:29 -06:00
Audrey Thoma
a8cd92a2e4 switching downloads to git (#5659) 2017-10-09 17:07:13 -06:00
lingnanyuan
196b82f2c7 r-affycompatible: Create new package. (#5664) 2017-10-09 17:05:53 -06:00
lingnanyuan
ef1f71447e r-affydata: Create new package. (#5665) 2017-10-09 17:05:21 -06:00
lingnanyuan
1f05e9ae58 r-affycontam: Create new package. (#5668) 2017-10-09 17:04:51 -06:00
George Hartzell
ab2c7573c1 strelka: new package (#5632)
* Add package for strelka@2.8.2

* Fix flake8 complaints
2017-10-09 17:02:44 -06:00
George Hartzell
0d1c36e559 Add package for aspell and ass't dictionaries (#3890)
* Add package for aspell and ass't dictionaries

Add a package definition for aspell.

Add a handful of dictionaries to convince myself that the support for
a bunch of dictionaries works.

* Flake8 cleanup

* Use six's version of urlparse

`urlparse` is not python3 friendly.  This works around it (stolen from
`.../cmd/md5.py`).

* Fix incorrect trimming regexp

* Clean up dictionary build

- more parsimonious use of `which` (`make()` has already been made)
- use `sh` instead of `bash`

* Use a helper method to generate info for variants

I figured out my issues with static methods.  I *think* that it this
is pythonic.

* Convert aspell to an extendable package

Convert aspell to be extendable and rework the dictionaries to be
extensions.

As it stands, there's a great deal of cut and paste in the
dictionaries, I'll abstract that out next.

The {de,}activate methods copy a great deal of code out of
package.py.  Perhaps there's a better way....

* Create AspellDictPackage and use it for the dictionaries

Reduce the repeated code, pull it into a base class.

I'm confused about why 'from spack import *' wasn't more useful in the
base class.

* Oops, -de & -es should be AspellDictPackages too

* Typo: pakcage -> package

* Address some commentary

* Update copyright dates, 2016->2017
2017-10-09 14:14:19 -07:00
Aaron Fisher
5ccc9c17dc Added mfem v3.3.1-rc1 to the mfem package. (#5644) 2017-10-09 21:48:25 +02:00
Axel Huebl
4ba7359d55 libpng: zlib flags more elegant (#5656) 2017-10-09 21:46:10 +02:00
becker33
5d13f236b4 Fix setup for changes to dirty flag (#5592)
* Pass dirty arg through setup to setup_package
2017-10-09 10:01:55 -07:00
Christoph Junghans
57643ae84e espressopp: added v1.9.5 (#5652) 2017-10-08 18:16:56 -07:00
Piotr Luszczek
1b5410b87b Add PLASMA package (#5540) 2017-10-08 17:59:41 -06:00
Pramod S Kumbhar
32d183af05 Fix node-js : requires openssl min 1.0.2 (#5650) 2017-10-08 17:04:09 -06:00
Denis Davydov
5ed457759c hypre: add 2.12.1 (#5653) 2017-10-08 07:27:25 -06:00
George Hartzell
ee6d21e311 adding http2 support (#5628)
Requires nghttp2 libraries
2017-10-07 09:58:56 -06:00
lingnanyuan
73bb34ad6e r-affycomp: Create new package. (#5642) 2017-10-06 20:13:57 -06:00
lingnanyuan
a755c47fb1 r-affxparser: Create new package. (#5641) 2017-10-06 20:13:38 -06:00
Yifan Zhu
cf94e4140b r-genomeinfodbdata: created new package (#5639) 2017-10-06 20:13:09 -06:00
Yifan Zhu
62538e3d37 r-hms: created new package (#5638) 2017-10-06 20:12:59 -06:00
scheibelp
b08d457dfd Don't check package.installed in _mark_concrete if value=True (#5634)
* spec and spec.package.spec can refer to different objects in the
database. When these two instances of spec differ in terms of
the value of the 'concrete' property, Spec._mark_concrete can
fail when checking Spec.package.installed (which requires
package.spec to be concrete). This skips the check for
spec.package.installed when _mark_concrete is called with
'True' (in other words, when the database is marking all specs
as being concrete).

* add test to confirm this fixes #5293
2017-10-06 14:23:28 -07:00
William Scullin
3d8d3e8882 qmcpack: new package (#4907)
This adds QMCPACK along with patches to Quantum Espresso for using Quantum Espresso in QMCPACK workflows.
2017-10-06 13:51:18 -07:00
George Hartzell
d05f98d405 Nghttp2 new package (#5627)
* nghttp2 library package

Added for dependencies

* Update package.py

* Removed useless code

* Flake8 fix
2017-10-06 13:59:56 -06:00
George Hartzell
a659f0f8f4 Add a package for VarDictJava@1.5.1 (#5626)
This is a simple package that drops their shell wrapper into
prefix.bin and their jar files into prefix.lib.

The approach comes from the picard package.
2017-10-06 13:58:34 -06:00
George Hartzell
202c66d90c The silver searcher: new version (#5630)
* Updating ag to the latest version

* Pretty by request

* Restore url to previous value

There *is* an https version available, but I've also been told
to not just update the url when adding new version.  I'm following
the latter advice and trusting security to the digest.
2017-10-06 13:56:58 -06:00
Massimiliano Culpo
2b2a5ca7bf git + luafilesystem: minor fixes (#5635)
* git: setup_dependent_environment won't fail for external packages

* luafilesystem: relax the request on git (it seemed overly restrictive)
2017-10-06 13:56:14 -06:00
George Hartzell
68011bde39 maven: new version (#5631)
* Adding maven v3.5.0

Updating package file to include later version of maven but still signifying a preference for the older

* removing specific preference flag
2017-10-06 13:53:56 -06:00
Michael Kuhn
4065ef2106 ncl: Fix temp directory and depend on esmf (#5636)
* ncl: Fix temp directory

Currently, ncl is configured using a transient temp directory. This
leads to warnings such as this when executing ncl later on:

warning:"/tmp/ncl_ncar_xxxxxx" tmp dir does not exist or is not writable:
NCL functionality may be limited -- check TMPDIR environment variable

As this also breaks some functionality, use the system temp directory
instead (typically /tmp).

* ncl: Depend on esmf

esmf is required for some ncl scripts (such as ESMF_regridding.ncl).
2017-10-06 13:53:05 -06:00
George Hartzell
b9d7903cdb Add link dependency on xproto to xau (recent dependency mechanics changes?) (#5624)
* Add link dependency on xproto to xau

The libxcb build was failing like so:

```
1 error found in build log:
     [ ... ]
     131   checking whether to build developer documentation... yes
     132   checking for doxygen... /usr/bin/doxygen
     133   checking for dot... /usr/bin/dot
     134   checking for CHECK... no
     135   checking for XCBPROTO... yes
     136   checking for NEEDED... no
  >> 137   configure: error: Package requirements (pthread-stubs xau >= 0.99.2) were not met:
     138
     139   Package 'xproto', required by 'xau', not found
     140
     141   Consider adjusting the PKG_CONFIG_PATH environment variable if you
     142   installed software in a non-standard prefix.
     143
```

This adds a link dependency on libxproto that allows the libxcb build to
succeed.

* Change more build deps to build, link

These were also necessary for emacs+X to build.

* Fix flake8 complaint
2017-10-05 16:53:12 -06:00
Audrey Thoma
17139b575d fsl: new package (#5605) 2017-10-05 11:57:57 -07:00
Jimmy Tang
c6e7fb25a4 Fix formatting typo (#5622) 2017-10-05 10:58:51 -07:00
scheibelp
6243a28da1 Don't change properties on already-installed packages (#5580)
* edits to address issues where spack concretization attempts to set properties on already-installed specs

* most added checks only need to check if the spec is concrete; they dont also need to check if the package is installed

* add test to ensure that patches are not applied to an installed spec

* add test to ensure that an error is detected when a dependent requests a dependency constraint which conflicts with a requested installed dependency
2017-10-05 10:33:04 -07:00
lingnanyuan
747b584e2e r-acme: Create new package. (#5620) 2017-10-05 10:22:24 -06:00
lingnanyuan
b41dfa8bd2 r-acgh: Create new package. (#5619) 2017-10-05 10:22:03 -06:00
lingnanyuan
a66eb716a7 r-cluster: Update version to 2.0.6. (#5618) 2017-10-05 10:21:44 -06:00
lingnanyuan
58609c5b67 r-absseq: Create new package. (#5617) 2017-10-05 10:21:33 -06:00
lingnanyuan
2c300653d5 r-acde: Create new package. (#5616) 2017-10-05 10:21:17 -06:00
lingnanyuan
4a1351c546 r-boot: Update version to 1.3-20 (#5615) 2017-10-05 10:20:45 -06:00
Michael Kuhn
fe551a4d9a esmf: Fix build (#5607)
- Use libs instead of lapack_libs (see #3364).
- Add a patch to fix building with recent versions of gcc.
- Add a patch to fix building with mvapich2.
2017-10-05 08:58:40 -06:00
lingnanyuan
21c79edb10 r-abadata: new package. (#5611) 2017-10-05 08:58:04 -06:00
lingnanyuan
f54e30b065 r-abaenrichment: Create new package. (#5612) 2017-10-05 08:57:42 -06:00
Axel Huebl
44653dc7aa CMake: 3.9.4 (#5614)
Adds the latest release of CMake.
2017-10-05 08:57:20 -06:00
Christoph Junghans
ffe90834b3 Add the Sandbox package (#5595) 2017-10-04 18:40:03 -07:00
becker33
04a4ac68d5 Identify the flag handlers feature as beta (#5609)
The flag-handling logic added in #4421 may change semantics, so this
commit adds a warning to the documentation for this feature.
2017-10-04 18:32:13 -07:00
becker33
328ab328be Fix module loads (#5599)
Fixes #5455

All methods within setup_package use an EnvironmentModifications object
to control the environment. Those modifications are applied at the end
of setup_package. Module loads for the build environment need to be
done after the rest of the environment modifications are applied, as
otherwise Spack may unset variables set by those modules (for example
LD_LIBRARY_PATH).
2017-10-04 18:25:55 -07:00
Massimiliano Culpo
3556eaae7e module files: restricted token expansion + case sensitivity (#5474)
closes #2884
closes #4684

In #1848 we decided to use `Spec.format` to expand certain tokens in
the module file naming scheme or in the environment variable name.
Not all the tokens that are allowed in `Spec.format` make sense in
module file generation. This PR restricts the set of tokens that can
be used, and adds tests to check that the intended behavior is respected.

Additionally, the names of environment variables set/modified by module
files were, up to now, always uppercase. There are packages though that
require case sensitive variable names to honor certain behaviors (e.g.
OpenMPI). This PR restricts the uppercase transformation in variable
names to `Spec.format` tokens.
2017-10-04 18:14:06 -07:00
scheibelp
395000c385 spec.patches: fix dictionary reference (#5608)
This fixes a loop that was iterating through the keys of a dictionary
when it was intending to use the values.
2017-10-04 17:14:58 -07:00
Ben Boeckel
44fbf95dd4 extensions: create install prefixes (#5601)
Tests fail locally because the install prefix doesn't exist. Make them
exist.
2017-10-04 14:08:05 -07:00
Massimiliano Culpo
5fa1191d17 Hotfix: maintain patch order while fixing hash
fixes #5587

In trying to preserve patch ordering, #5476 made equality inconsistent
for the added 'patches' variant. This commit maintains the original
weak ordering of patch applications while preserving consistency of
comparisons. The ordering DOES NOT enter the hashing mechanism. It's
supposed to be a hotfix, while we think of a cleaner and more-permanent
solution.
2017-10-04 11:39:25 -07:00
Yifan Zhu
2b7a37ed99 r-tibble: added dependency r-rlang (#5536)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-tibble: Update version to 1.3.4

* r-tibble: added dependency r-rlang

* r-tibble: changed r-lazyeval and r-rlang to be versioned dependencies

* Update package.py

* Update package.py
2017-10-04 09:59:40 -07:00
Audrey Thoma
727e542b80 tassel: new package (#5583) 2017-10-04 10:28:28 -06:00
Michael Kuhn
1d8b77b600 xerces-c: Fix url (#5597)
The main location only carries the latest release, while all previous
(and current) ones are available at the archive location.
2017-10-04 10:25:31 -06:00
Axel Huebl
a8bf49b4a1 OpenSSL: Fix Zlib (#5584)
Fix missing `-lz` on `make` of OpenSSL.
Spotted on a system without a system-wide zlib installation.
2017-10-04 10:25:11 -06:00
scheibelp
f53be46186 wrap generator with collection to avoid exhausting it with single iteration (#5586) 2017-10-03 16:47:07 -07:00
Yifan Zhu
ed656dccf5 r-edger: created new package (#5571) 2017-10-03 17:34:46 -06:00
George Hartzell
23454e3e28 Add package for multitail@6.4.2 (#5567)
* Add package for multitail@6.4.2

Lightly tested on CentOS 7.

* Responde to feedback/comments

Use `install_targets` to specify PREFIX= and DESTDIR= instead of
hacking away at the Makefile.  Expand commentary about "Why?".

Use `headers.include_flags` and `libs.ld_flags` to avoid explicitly
setting `-L` and `-I` when hacking away at the Makefile.
2017-10-03 16:05:19 -06:00
Robert Pavel
9871a2eb91 ExaSP2 Spackage (#5570)
* Added exasp2 spackage

Added spackage for exasp2 proxy app

* Fixed MPI in ExaSP2

Explicitly disabled MPI when not enabled.
Set MPI variant to default as per Spack standards

* Generalized BML Passing for ExaSP2

* Modified to follow spack rules on blas

Fortunately was able to modify exasp2 build system to support spack
model for blas and lapack requirements. No guarantee is made for support
of anything other than originally supported libraries

* Fixed flake8 error
2017-10-03 16:04:49 -06:00
lingnanyuan
a05964959d r-a4base: new package. (#5576) 2017-10-03 16:04:18 -06:00
lingnanyuan
e858e4de17 r-a4: new package. (#5577) 2017-10-03 16:03:57 -06:00
Audrey Thoma
0fa3d8f35e fastqvalidator: new package (#5573)
* fastqvalidator: new package

* adding version-specificity to compiler conflict

* quick changes to env vars and build phase

* Update package.py

* oops. forgot to install executable

* Update package.py

* updating package.py

* turn env into targets
2017-10-03 15:56:32 -06:00
Axel Huebl
ba06eb72d0 libpng: zlib path (#5581)
explicitly set the zlib path for libpng configure.

fixes:
```
     [ ... ]
     92    checking for memset... yes
     93    checking for pow... no
     94    checking for pow in -lm... yes
     95    checking for clock_gettime... yes
     96    checking for zlibVersion in -lz... no
     97    checking for z_zlibVersion in -lz... no
  >> 98    configure: error: zlib not installed
```
2017-10-03 14:58:28 -06:00
Audrey Thoma
3e79872ada sra-toolkit: new package (#5588)
* sra-toolkit: new package

* adding description and homepage
2017-10-03 14:41:41 -06:00
George Hartzell
5bc81c8db2 Tell configure about gmp (#5585)
This is a partial fix for #5564.

This package used to trust that `configure` would discover `gmp` from
its environment.

It's safer to tell it where to find `gmp` explicitly.

This does that by adding a configure_args() that provides a
`--with-gmp=...` argument for configure.
2017-10-03 14:40:14 -06:00
Christoph Junghans
d22ee8f993 patch: add workdir option (#5501)
* patch: add working_dir option
* added documentation
2017-10-02 22:56:43 -07:00
Audrey Thoma
35085fdae2 mrtrix3: new package (#5568)
* mrtrix3: new package

* specifying conflict dependency ve
2017-10-02 15:56:15 -06:00
lingnanyuan
140fbeda65 r-a4reporting: new package. (#5575) 2017-10-02 15:54:44 -06:00
Yifan Zhu
960dcec9e3 r-locfit: created new package (#5572) 2017-10-02 15:54:26 -06:00
Robert Pavel
d3e4e88bae Added support for BML+mpi variant (#5563)
* Added support for BML+mpi variant

Added support for BML+mpi variant. Currently restricted to master
(develop) branch pending release of next bml tag

* Update package.py

Removing redundant statement

* Update package.py

Added explicit disabling of MPI when not requested
2017-10-02 12:51:06 -06:00
Robert Pavel
0d0d2663d2 Added Spackage for YAJL (#5566)
Added spackage for YAJL
2017-10-02 12:50:55 -06:00
Audrey Thoma
538b702314 linkphase3: new package (#5493)
* linkphase3: new package

* adding ifort option

* Update package.py
2017-10-02 12:36:39 -06:00
Audrey Thoma
7cb2766790 hisat2: new package (#5488) 2017-10-02 10:27:06 -07:00
Axel Huebl
48e4efc2a4 CUDA 9.0.176 (#5562)
The first stable release of CUDA 9, v9.0.176, is out.

This adds its installer and checksum.
2017-10-02 10:47:32 -06:00
Todd Gamblin
29ca18e348 Port CTest's log scraping logic to Spack (#5561)
- This steals the magic regular expressions that CTest uses to parse log
  files and addds them to Spack.  See here:

  https://github.com/Kitware/CMake/blob/master/Source/CTest/cmCTestBuildHandler.cxx

  These are BSD licensed, so the port is in `externa/ctest_log_parser.py`

- We currently use these to do better filtering of errors from build
  output.  Plan is to use them to generate good CDash output.
2017-09-30 22:39:21 -07:00
Todd Gamblin
8648e2cda5 Add testing for spack blame; refactor llnl.util tests 2017-09-30 16:31:56 -07:00
Todd Gamblin
41a2652ef2 Add 'spack blame' command: shows contributors to packages
`spack blame` prints out the contributors to a package.

By modification time:

```
$ spack blame --time llvm
LAST_COMMIT    LINES  %      AUTHOR               EMAIL
3 days ago     2      0.6    Andrey Prokopenko    <andrey.prok@gmail.com>
3 weeks ago    125    34.7   Massimiliano Culpo   <massimiliano.culpo@epfl.ch>
3 weeks ago    3      0.8    Peter Scheibel       <scheibel1@llnl.gov>
2 months ago   21     5.8    Adam J. Stewart      <ajstewart426@gmail.com>
2 months ago   1      0.3    Gregory Becker       <becker33@llnl.gov>
3 months ago   116    32.2   Todd Gamblin         <tgamblin@llnl.gov>
5 months ago   2      0.6    Jimmy Tang           <jcftang@gmail.com>
5 months ago   6      1.7    Jean-Paul Pelteret   <jppelteret@gmail.com>
7 months ago   65     18.1   Tom Scogland         <tscogland@llnl.gov>
11 months ago  13     3.6    Kelly (KT) Thompson  <kgt@lanl.gov>
a year ago     1      0.3    Scott Pakin          <pakin@lanl.gov>
a year ago     3      0.8    Erik Schnetter       <schnetter@gmail.com>
3 years ago    2      0.6    David Beckingsale    <davidbeckingsale@gmail.com>

3 days ago     360    100.0
```

Or by percent contribution:

```
$ spack blame --percent llvm
LAST_COMMIT    LINES  %      AUTHOR               EMAIL
3 weeks ago    125    34.7   Massimiliano Culpo   <massimiliano.culpo@epfl.ch>
3 months ago   116    32.2   Todd Gamblin         <tgamblin@llnl.gov>
7 months ago   65     18.1   Tom Scogland         <tscogland@llnl.gov>
2 months ago   21     5.8    Adam J. Stewart      <ajstewart426@gmail.com>
11 months ago  13     3.6    Kelly (KT) Thompson  <kgt@lanl.gov>
5 months ago   6      1.7    Jean-Paul Pelteret   <jppelteret@gmail.com>
3 weeks ago    3      0.8    Peter Scheibel       <scheibel1@llnl.gov>
a year ago     3      0.8    Erik Schnetter       <schnetter@gmail.com>
3 years ago    2      0.6    David Beckingsale    <davidbeckingsale@gmail.com>
3 days ago     2      0.6    Andrey Prokopenko    <andrey.prok@gmail.com>
5 months ago   2      0.6    Jimmy Tang           <jcftang@gmail.com>
2 months ago   1      0.3    Gregory Becker       <becker33@llnl.gov>
a year ago     1      0.3    Scott Pakin          <pakin@lanl.gov>

3 days ago     360    100.0
```
2017-09-30 16:31:56 -07:00
George Hartzell
46d5901770 Typo: file -> directory (#5560)
Mirrors are directories (that use `file://` URLS, not files.
2017-09-30 14:32:07 -07:00
Todd Gamblin
96d2488e0c Documentation for dependency patching. 2017-09-30 02:06:59 -07:00
Todd Gamblin
4f8c7d57eb Patches are hashed with specs, and can be associated with dependencies.
- A package can depend on a special patched version of its dependencies.

  - The `Spec` YAML (and therefore the hash) now includes the sha256 of
    the patch in the `Spec` YAML, which changes its hash.

  - The special patched version will be built separately from a "vanilla"
    version of the same package.

  - This allows packages to maintain patches on their dependencies
    without affecting either the dependency package or its dependents.
    This could previously be accomplished with special variants, but
    having to add variants means the hash of the dependency changes
    frequently when it really doesn't need to.  This commit allows the
    hash to change *just* for dependencies that need patches.

  - Patching dependencies shouldn't be the common case, but some packages
    (qmcpack, hpctoolkit, openspeedshop) do this kind of thing and it
    makes the code structure mirror maintenance responsibilities.

- Note that this commit means that adding or changing a patch on a
  package will change its hash.  This is probably what *should* happen,
  but we haven't done it so far.

  - Only applies to `patch()` directives; `package.py` files (and their
    `patch()` functions) are not hashed, but we'd like to do that in the
    future.

- The interface looks like this: `depends_on()` can optionally take a
  patch directive or a list of them:

     depends_on(<spec>,
                patches=patch(..., when=<cond>),
                when=<cond>)
     # or
     depends_on(<spec>,
                patches=[patch(..., when=<cond>),
                         patch(..., when=<cond>)],
                when=<cond>)

- Previously, the `patch()` directive only took an `md5` parameter.  Now
  it only takes a `sha256` parameter.  We restrict this because we want
  to be consistent about which hash is used in the `Spec`.

- A side effect of hashing patches is that *compressed* patches fetched
  from URLs now need *two* checksums: one for the downloaded archive and
  one for the content of the patch itself.  Patches fetched uncompressed
  only need a checksum for the patch.  Rationale:

  - we include the content of the *patch* in the spec hash, as that is
    the checksum we can do consistently for patches included in Spack's
    source and patches fetched remotely, both compressed and
    uncompressed.

  - we *still* need the patch of the downloaded archive, because we want
    to verify the download *before* handing it off to tar, unzip, or
    another decompressor.  Not doing so is a security risk and leaves
    users exposed to any arbitrary code execution vulnerabilities in
    compression tools.
2017-09-30 02:06:59 -07:00
Todd Gamblin
14c141a410 add spack flake8 exception for long checksums 2017-09-30 02:06:59 -07:00
Todd Gamblin
bf610a379f Clean up exceptions and function names in directives.
- Functions returned by directives were all called `_execute`, which made
  reading stack traces hard because you couldn't tell what directive a
  frame came from.
  - renamed them all to `_execute_<directive>`

- Exceptions in directives were only really used in one or two places --
  get rid of the boilerplate init functions and let the callsite specify
  the message.
2017-09-30 02:06:59 -07:00
Todd Gamblin
94d85d842c Consolidate some web-spidering commands in spack.util.web
- move `spack.cmd.checksum.get_checksums` to `spack.util.web.spider_checksums`

- move `spack.error.NoNetworkError` to `spack.util.web.NoNetworkError` since
  it is only used there.
2017-09-30 02:06:59 -07:00
Todd Gamblin
2198a0e229 Disable duplicate cross-reference warnings in Sphinx. 2017-09-30 02:06:59 -07:00
Todd Gamblin
0e8bb9ec5e Refactor Package dependency metadata
- Previously, dependencies and dependency_types were stored as separate
  dicts on Package.
  - This means a package can only depend on another in one specific way,
    which is usually but not always true.
  - Prior code unioned dependency types statically across dependencies on
    the same package.

- New code stores dependency relationships as their own object, with a
  spec constraint and a set of dependency types per relationship.
  - Dependency types are now more precise
  - There is now room to add more information to dependency relationships.

- New Dependency class lives in dependency.py, along with deptype
  definitions that used to live in spack.spec.

Move deptype definitions to spack.dependency
2017-09-30 02:06:59 -07:00
Todd Gamblin
a3cb6b61ea Patch.apply() shouldn't affect working directory of caller. 2017-09-30 02:06:59 -07:00
Todd Gamblin
29ce69f3ed Only print "no patches needed" if there were no patches. 2017-09-30 02:06:59 -07:00
scheibelp
9e7faff6c9 Add test deptype (#5132)
* Add '--test=all' and '--test=root' options to test either the root or the root and all dependencies.
* add a test dependency type that is only used when --test is enabled.
* test dependencies are not added to the spec, but they are provided in the test environment.
2017-09-29 22:08:15 -07:00
Yifan Zhu
3c0e799a51 r-limma: added version 3.32.7 (#5558) 2017-09-29 16:29:41 -06:00
Jon Rood
ebbdde9625 Masa requires python if +python. (#5547) 2017-09-29 16:14:12 -06:00
lingnanyuan
756fb83f04 r-a4classif: new package. (#5557) 2017-09-29 16:06:27 -06:00
lingnanyuan
17b8f6b818 r-yaml: Correct url (#5550)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-yaml: Correct url.
2017-09-29 16:05:55 -06:00
Yifan Zhu
7c87cb1ad1 r-downloader: created new package (#5556) 2017-09-29 16:05:30 -06:00
lingnanyuan
f9e33e9b59 r-mlinterfaces: new package. (#5555)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-mlinterfaces: Create new package.
2017-09-29 15:34:44 -06:00
Yifan Zhu
06a6c6a399 r-biomart: created new package (#5554) 2017-09-29 15:33:40 -06:00
lingnanyuan
18029f5f47 r-threejs: Correct url. (#5553)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-threejs: Correct url.
2017-09-29 15:33:05 -06:00
Jon Rood
d19eb152c8 Adding new Trilinos version and updating Nalu to utilize it. (#5552) 2017-09-29 15:31:15 -06:00
lingnanyuan
e1f33bd903 r-hwriter: new package. (#5549)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-hwriter: Create new package.
2017-09-29 15:29:26 -06:00
lingnanyuan
211f731065 r-gbm: new package. (#5548)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-gbm: Create new package.
2017-09-29 15:29:11 -06:00
lingnanyuan
4cc1ff5ce8 r-htmlwidgets: Update version to 0.8. (#5551) 2017-09-29 14:28:48 -07:00
lingnanyuan
89b30bea7f r-a4preproc: Create new package. (#5499) 2017-09-29 15:27:20 -06:00
Massimiliano Culpo
554937780b modules: specialized configure_options for external packages (#5543)
closes #5473

Prior to this PR we were not exiting early for external packages, which
caused the `configure_options` property of the contexts to fail with
e.g. a key error because the DAG gets truncated for them. More
importantly Spack configure options don't make any sense for externals.

Now we exit early, and leave a message in the module file clarifying
that this package has been installed outside of Spack.
2017-09-29 09:23:13 -07:00
Yifan Zhu
a63fdc8f35 r-dbi: updated to version 0.7 (#5537)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-dbi: Create new package.

* r-dbi: modified according to flake8

* Update package.py

* Update package.py
2017-09-28 22:14:56 -06:00
lingnanyuan
aab68aaecf r-gdata: Update version to 2.18.0 (#5495) 2017-09-28 18:13:06 -07:00
Mark C. Miller
e851d15974 fixing tag name for development branch (#5496) 2017-09-28 18:12:02 -07:00
Yifan Zhu
aee44efada r-biostrings: created new package (#5498) 2017-09-28 18:11:28 -07:00
Yifan Zhu
b455fa2a7b r-gcrma: created new package (#5500) 2017-09-28 18:11:02 -07:00
Yifan Zhu
e42fd90df2 r-yaqcaffy: created new package (#5538) 2017-09-28 18:02:58 -07:00
Jon Rood
5e3024368e Add metaphysicl package (#5539)
* Adding package Metaphysicl.

* Removing list_url from metaphysical package.
2017-09-28 18:02:07 -07:00
Jon Rood
90e4b56362 Adding masa package. (#5541) 2017-09-28 18:01:38 -07:00
Yifan Zhu
6d63be9eb6 r-rlang: created new package (#5535) 2017-09-28 16:07:13 -06:00
Christoph Junghans
337256ee32 tycho2: initial commit (#5196) 2017-09-28 14:48:54 -07:00
Mark Olesen
aff6148116 Restrict openfoam to using openmpi+thread_multiple (partially resolves #5428) (#5479)
- latest version requires openmpi+thread_multiple for collated output.
2017-09-28 14:42:14 -06:00
Michael Kuhn
97bc86d617 snappy: Build shared library by default (#5534) 2017-09-28 14:18:50 -06:00
lingnanyuan
aa40509fa0 r-ggvis: Update version to 0.4.3 (#5532)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-ggvis: Update version to 0.4.3

* Update package.py

* Update package.py
2017-09-28 13:13:47 -06:00
lingnanyuan
0962088776 r-dplyr: Update version to 0.7.3 (#5531)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-dplyr: Update version to 0.7.3

* Update package.py

* Update package.py
2017-09-28 13:09:30 -06:00
Michael Kuhn
ac98e0978a ncl: Add tcsh dependency (#5195)
All ncl scripts hardcode /bin/csh, so fix them up.
2017-09-28 12:51:04 -06:00
Michael Kuhn
17be89c210 tcsh: New package (#5194)
The patches are taken from the Fedora package.
2017-09-28 12:50:52 -06:00
lingnanyuan
0bc3578dac r-annaffy: new package. (#5414)
* r-annaffy: Create New Package.

* r-annaffy: Create new package.

* r-go-db: Create new package.

* r-kegg-db: Create new package.

* r-annaffy: Correct indentation.

* r-go-db: Correct indentation.

* r-kegg-db: Correct format.

* r-kegg-db: Correct format.

* r-go-db: Correct format.

* r-annaffy: Correct format.
2017-09-28 12:49:31 -06:00
Audrey Thoma
3f44eb0179 fastq-screen: new package (#5431)
* fastq-screen: new package

* fixing descriptions and previously made packages' old copyright date

* added wrong perl package after change
2017-09-28 12:48:31 -06:00
Brian Homerding
0ce93d7333 Added hacckernels package (#5533) 2017-09-28 12:46:26 -06:00
lingnanyuan
d61e92b439 r-r6: Update version to 2.2.2 (#5529)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-r6: Update version to 2.2.2
2017-09-28 12:46:11 -06:00
lingnanyuan
c0e1b1f68e r-shiny: update version to 1.0.5 (#5530)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-shiny: Update version to 1.0.5
2017-09-28 11:31:27 -06:00
lingnanyuan
a613244602 r-htmltools: Update version to 0.3.6 (#5528)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-htmltools: Update version to 0.3.6
2017-09-28 11:31:16 -06:00
lingnanyuan
0c385e94e6 r-httpuv: Update version to 1.3.5 (#5527)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-httpuv: Update version to 1.3.5
2017-09-28 11:30:57 -06:00
lingnanyuan
38ea408126 r-rcpp: Update version to 0.12.13 (#5526)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-rcpp: Update version to 0.12.13

* r-rcpp: Correct url.
2017-09-28 11:30:25 -06:00
Kelly (KT) Thompson
4e4247dd18 Provide a new Perl package 'cloc'. (#5525)
+ Count, or compute differences of, physical lines of source code in the
  given files (may be archives such as compressed tarballs or zip files)
  and/or recursively below the given directories.
2017-09-28 11:30:08 -06:00
lingnanyuan
e101665e5e r-jsonlite: Update version to 1.5 (#5524)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-jsonlite: Update version to 1.5
2017-09-28 11:28:49 -06:00
lingnanyuan
4d445f8436 r-rda: new package. (#5523)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-rda: Create new package.
2017-09-28 11:28:29 -06:00
Mark Olesen
cd825baee9 - build paraview without qt when osmesa is specified. (#5480)
- new paraview version (5.4.1 from August)
2017-09-27 22:32:10 -06:00
lingnanyuan
ab21d268be r-sfsmisc: new package. (#5516)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-sfsmisc: Create new package.

* r-sfsmisc: Correct format.
2017-09-27 22:16:02 -06:00
Robert Pavel
b681146875 Added spackage for branson (#5520)
Added spackage for branson proxy for monte carlo
2017-09-27 21:50:07 -06:00
Gregory Lee
16bd1449be added qt creator version 4.4.0 (#5518) 2017-09-27 21:49:33 -06:00
lingnanyuan
d5fcbab8de r-varselrf: new package. (#5515)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-varselrf: Create new package.
2017-09-27 21:48:22 -06:00
lingnanyuan
97208d9888 r-pamr: new package (#5514)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-pamr: Create new package.
2017-09-27 21:48:04 -06:00
lingnanyuan
51e99c5fde r-rocr: new package. (#5513)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-rocr: Create new package.
2017-09-27 21:47:47 -06:00
lingnanyuan
e7c0e12256 r-a4core: new package. (#5512)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-a4core: Create new package.

* r-a4core: Correct format.
2017-09-27 21:47:12 -06:00
Yifan Zhu
98bb213fe2 r-simpleaffy: created new package (#5510) 2017-09-27 21:46:53 -06:00
Robert Pavel
48066a808e ExaMPM (#5509)
* Added ExaMPM Spackage

* Removed template text
2017-09-27 21:46:32 -06:00
Robert Pavel
2942ddc1e0 Added Support for BML 1.2.2 (#5502)
* Added Support for BML 1.2.2

* Added checksums

* Update package.py
2017-09-27 21:46:14 -06:00
Robert Pavel
e4f4f9a6e5 Added shards and intrepid(2) to trilinos (#5481)
Added support for shards, intrepid, and intrepid2 variants to trilinos
spackage
2017-09-27 21:41:53 -06:00
Robert Pavel
aa2a403536 Added CoEVP Spackage (#5485)
* Added CoEVP Spackage

Added spackage for baseline (mpi, no other dependencies) CoEVP

* coevp: add more variants

* tag as proxy-app
2017-09-27 21:41:34 -06:00
Sheng Di
3be81a0b10 SZ: add version 1.4.11 (#5517) 2017-09-27 16:30:43 -07:00
Christoph Junghans
f27aad68bf flann: fix build for 1.8.1 (#5508)
* Update url_for_version for versions 1.8.1 and earlier
* Add python dependency when +python is enabled
2017-09-27 14:39:33 -07:00
Christoph Junghans
83ab062583 lammps: add user-omp package (#5486)
* Simplify cmake arg generation
* Set -DFFT when kspace variant is enabled
2017-09-27 12:46:58 -07:00
Ken Raffenetti
c242165ebd Additional MPICH configs (#5259)
* Add support for building develop version from git
* Add device and netmod variants
2017-09-27 10:50:05 -07:00
lingnanyuan
90dd5e2932 r-gplots: Create New Package. (#5494)
* r-gplots: Create New Package.

* r-gplots: Correct format.
2017-09-27 10:20:17 -06:00
Michael Kuhn
ed6003b514 libbson, libmongoc: Update to 1.8.0 (#5478) 2017-09-27 10:19:10 -06:00
Yifan Zhu
df1606e84e r-rcurl: created new package (#5492) 2017-09-26 17:49:54 -06:00
lingnanyuan
618d3add4f r-annotate: new package. (#5490)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-annotate: Create new package.

* r-annotate: Create new package.
2017-09-26 15:39:34 -06:00
zenln
c7f8405636 Autodock vina: spec (#5333)
* Autodock vina: spec

* Adding comment to patch. The implemnetation of boost is version dependent on older boost replacing depecrated function of boost.

* Adding in boost version dependency
2017-09-26 14:44:21 -06:00
Jim Galarowicz
95ff37309a Add ability to build llvm-openmp-ompt alone, with gnu compilers and use the resulting ompt interface in cbtf-krell and openspeedshop to gather openmp specific performance information. (#5288)
* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Add ability to build llvm-openmp-ompt alone, with gnu compilers and use the resulting ompt interface in cbtf-krell and openspeedshop to gather openmp specific performance information.

* Fix flake8 errors.

* Fix flake8 errors - stage 2.

* Fixes based on reviewer suggestions and comments.

* Use build_type variant to set the build type and allow changing of the type.

* Fix missing comma in cmake_arg list, found on another test machine.
2017-09-26 14:15:37 -06:00
Michael Kuhn
f45916fad2 Set LANG= for _spack_fn_exists (#5475)
type's output can be localized, causing the grep to fail.
2017-09-26 12:28:50 -07:00
Christoph Junghans
e3e030cf76 astyle: homepage dead, use mirror (#5483) 2017-09-26 13:03:34 -06:00
Michael Kuhn
86d681be6e snappy: Update to 1.1.7 (#5477)
Convert to CMakePackage and add a pkg-config file (otherwise libmongoc's
pkg-config file does not contain all required flags).
2017-09-26 11:00:21 -06:00
Michael Kuhn
733965b3c6 autoconf, automake: Add missing perl dependency (#5187)
* autoconf, automake: Add missing perl dependency

* automake: Add 1.15.1
2017-09-26 08:10:22 -06:00
Michael Kuhn
60f8621704 Missing perl dependencies (#5204)
* glib: Add missing perl dependency

* shared-mime-info: Add missing perl dependency

* libx11: Add missing perl dependency

* likwid: Add missing perl dependency
2017-09-26 07:27:28 -06:00
lingnanyuan
f3152a5600 r-limma: new package. (#5468)
* r-limma: Create New Package.

* pr-quantities: add version & py-numpy conflict (#5307)

* r-limma: Create new package.

* r-limma: Correct format.

* Update package.py
2017-09-25 19:55:03 -06:00
Yifan Zhu
9b2c9bb699 r-affy: created new package (#5471) 2017-09-25 16:57:56 -06:00
lingnanyuan
34d4131284 r-genefilter: New package. (#5467)
* r-genefilter: Create New Package.

* r-genefilter: Create new package.

* r-genefilter: Correct format.

* Update package.py
2017-09-25 16:57:17 -06:00
Yifan Zhu
111c216fb7 r-xml: updated url and added version 3.98-1.9 (#5466)
* r-xml: updated url and added version 3.98-1.9

* Update package.py
2017-09-25 16:46:01 -06:00
lingnanyuan
8f0fbb4e11 r-multtest: new package. (#5469)
* r-multtest: Create New Package.

* pr-quantities: add version & py-numpy conflict (#5307)

* r-multtest: Create new package.

* r-multtest: Correct format.
2017-09-25 16:45:21 -06:00
lingnanyuan
fefb668dcb r-plogr: new package. (#5443)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-plogr:Create new package.

* r-plogr: Correct format.
2017-09-25 16:42:03 -06:00
lingnanyuan
fafd240c30 r-glmnet: update version. (#5470)
* r-glmnet: Create New Package.

* pr-quantities: add version & py-numpy conflict (#5307)

* r-glmnet: Update version to 2.0-13

* r-matrix: Update version to 1.2-11

* r-lattice: Update version to 0.20-35.
2017-09-25 16:39:41 -06:00
lingnanyuan
33adb08672 r-pkgconfig: new package. (#5441)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-pkgconfig: Create new package.

* r-pkgconfig: Correct format.

* r-pkgconfig: Correct format.
2017-09-25 16:38:45 -06:00
lingnanyuan
eb4ad328ee r-bit64: new package. (#5437)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-bit64: Create new package.

* r-bit64: Correct format.
2017-09-25 16:38:18 -06:00
lingnanyuan
23235cf3e3 r-annotationdbi: new package (#5408)
* r-annotationdbi: Create New Package.

* r-iranges: Create new package.

* r-s4vectors: Create new package.

* r-annotationdbi: Create new package.

* r-s4vectors: Delete file.

* r-annotationdbi: Correct format.

* r-iranges: Correct format.
2017-09-25 16:37:31 -06:00
lingnanyuan
f94b23a249 r-blob: new package. (#5438)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-blob: Create new package.

* r-blob: Correct format.
2017-09-25 14:41:18 -06:00
Todd Gamblin
13b61913da patch py-mccabe and py-flake8 to not require pytest-runner for install (#5427)
- Filter the pytest-runner dependency out of setup.py in py-mccabe and
  py-flake8
2017-09-25 12:46:47 -07:00
Cyrus Harrison
1348fd5648 update for conduit 0.3.0 release (#5421)
* update for conduit 0.3.0 release

* use mpicxx

* Update package.py
2017-09-25 12:25:40 -06:00
Axel Huebl
28dd6b378c Fix Protobuf URLs (#5373)
The default implementation of Package.fetch_remote_versions will take
a URL like https://github.com/google/protobuf/archive/ and automatically
search https://github.com/google/protobuf/releases/ for new package
versions. In the case of protobuf the release/ path contains release
artifacts for a version and the archive/ path contains the desired
source. Since both are associated with the version, and
Package.fetch_remote_versions only stores one URL for a given version,
the two paths are in conflict; previously the URL returned for a
given version was arbitrarily chosen between the two paths. This
updates the definition for the Protobuf package to always search for
URLs in https://github.com/google/protobuf/archive/
2017-09-25 10:47:55 -07:00
Massimiliano Culpo
8864d145e9 module files: system paths are excluded from path inspection (#5460)
closes #5201

Currently, if a user sets an external package to have a prefix that is
one of the system paths (like '/usr') the module files that are
generated will prepend '/usr/bin' to 'PATH', etc. This is particularly
nasty at the time when a module file is unloaded, and e.g. paths like
'/usr/bin' will be discarded from PATH.

This PR solves the issue skipping system paths when a prefix inspection
is made to generate module files.
2017-09-25 09:47:50 -07:00
Christoph Junghans
64311e8510 lammps: add support of latte package (#5446) 2017-09-25 09:39:29 -07:00
George Hartzell
e947a0b152 Add info for lmod@7.7 and lmod@7.6.14 (#5450)
Lightly tested on CentOS 7
2017-09-25 07:31:43 -06:00
Denis Davydov
330211468a add assimp package. link against it in dealii (#5463) 2017-09-25 06:58:13 -06:00
George Hartzell
99cefcc955 New version for mosh1.3.2 (#5448)
Required an update to the protobuf digest value, which seems to
be amongst the set creamed by GitHub's change.
2017-09-24 15:12:35 -06:00
Andrey Prokopenko
6168b7fda8 llvm: patch lldb for gcc-7 (#5239) 2017-09-24 10:24:36 +02:00
Denis Davydov
8db69de258 hdf5: fix macOS build by not using numactl (#5458) 2017-09-23 22:34:00 -06:00
Christoph Junghans
40777e44e2 parsplice: add version 1.1 (#5461) 2017-09-23 20:28:40 -07:00
Denis Davydov
7f84de52a0 blas_lapack: add multithreading variant consistent in all implementations. (#5340)
* blas_lapack: add multithreading variant

* elemental: update

* intel-mkl: extend to macOS

* rename multithreading to threads

* intel-mkl: avoid long lines

* intel-mkl: make one install error a conflict

* openblas: fix a minor bug in the test
2017-09-23 13:27:42 -07:00
lingnanyuan
bf2f96ce78 r-rsqlite: Update version to 2.0. (#5444)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-rsqlite: Update version to 2.0
2017-09-23 15:02:27 +00:00
lingnanyuan
c3a8f10bf9 r-bh: update version. (#5442)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-bh: Update version to 1.65.0-1
2017-09-23 15:01:35 +00:00
lingnanyuan
8e2351f96c r-memoise: update version. (#5440)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-memoise: Update version to 1.1.0
2017-09-23 15:00:50 +00:00
lingnanyuan
9fdcc147a7 r-tibble: update version. (#5439)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-tibble: Update version to 1.3.4
2017-09-23 15:00:02 +00:00
lingnanyuan
c6a3f4cf9b r-bit: new package. (#5436)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-bit: Create new package.
2017-09-23 14:59:09 +00:00
lingnanyuan
debc492032 r-assertthat: update version to 0.2.0 (#5435)
* pr-quantities: add version & py-numpy conflict (#5307)

* r-assertthat: Update version to 0.2.0
2017-09-23 14:58:53 +00:00
Yifan Zhu
72bb53c018 r-preprocesscore: created new package (#5434) 2017-09-23 14:58:24 +00:00
Yifan Zhu
6134e94ede r-affyio: created new package (#5433) 2017-09-23 14:58:06 +00:00
Yifan Zhu
d2c65247b0 r-xvector: created new package (#5432) 2017-09-23 14:57:31 +00:00
Denis Davydov
4c20d9917e superlu-dist: fix has after 09/17/2017 update (#5457) 2017-09-23 12:50:02 +00:00
George Hartzell
d12f52b37a tmux: add version 2.5 (#5449) 2017-09-22 19:30:47 -07:00
George Hartzell
6e20dd61c0 Ack: add version 2.18 (#5445) 2017-09-22 19:30:12 -07:00
George Hartzell
e43ea22e45 Add info for httpie@0.9.9 (#5451)
Lightly tested on CentOS 7.
2017-09-23 00:40:22 +00:00
George Hartzell
6ac28c1daa Add info for lftp@4.8.1 (#5452)
Lightly tested on CentOS 7.
2017-09-23 00:39:49 +00:00
George Hartzell
315d844ab7 Update git to @2.14.1, requires pcre+jit variant (#5430)
Update the git package to git@2.14.1.

This requires a pcre that has been built with `--enable-jit`, so this
adds a variant to pcre to support that and arranges so that git versions
before 2.14 depend on pcre and git 2.14 and after depend on pcre+jit.
2017-09-22 16:43:45 -07:00
George Hartzell
fd552ab2b9 git-lfs: add 2.2.1 and 2.3.0 (#5429) 2017-09-22 16:36:57 -07:00
George Hartzell
e176c3a3c5 emacs: add version 25.3 (security update) (#5447)
25.3 is a security update. Info here:
https://lists.gnu.org/archive/html/info-gnu/2017-09/msg00006.html

Build both +X and ~X on CentOS 7 and lightly tested.
2017-09-22 16:34:59 -07:00
Massimiliano Culpo
f1fbcfa971 plumed: fixed possible linking issue (#5425)
Due to the logic in configure.ac, we may be using both the system
linker (LD_RO='ld -r -o') and the linker tied to the compiler (LD=$CXX).
This may produce weird link-time errors when the two executables are
not the same.

The PR works around the issue disabling 'ld -r'
2017-09-22 21:14:53 +02:00
Howard Pritchard
a646ec1fff PMIx: add PMIx package to Spack (#5426)
Open MPI has been relying on versions of PMIx since the 2.0.0
release.  Although the embedded version can be used, it makes
more sense long term for Spack to know about the PMIx package,
and to build Open MPI against PMIx as an external package.

There are other software components that may eventually be
reliant on PMIx including MPICH, GASNet, the OpenSHMEM reference
implementation, etc.

This is also partly motivated by the desire to have ECP ST
projects to be released through Spack.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-09-22 11:27:28 -06:00
sknigh
7b4d8d6d1e Version fixes for py-csvkit (#5393) 2017-09-22 10:06:15 -07:00
healther
6ff57bde42 Add package py-memory-profiler (#5413)
* add package memory profiler

* fix FIXME
2017-09-21 20:00:09 -06:00
Yifan Zhu
77f2221177 r-s4vectors: created new package (#5419)
* r-s4vecors: created new package

* Update package.py

* edited according to flake8
2017-09-21 19:57:02 -06:00
Mike Pozulp
2ad3a1bff7 Update pic/shared variants for hdf5, python, silo (#5423) 2017-09-21 18:14:31 -07:00
scheibelp
45a8c03bdf Prefer later versions of compilers by default (#5234)
* Prefer later versions of compilers by default

* update test to make it less fragile
2017-09-21 17:16:19 -07:00
lingnanyuan
3817111454 r-mpm: new package. (#5416) 2017-09-21 13:36:51 -07:00
Howard Pritchard
699f34c33f OpenMPI: add 2.1.2 bug fix release (#5418) 2017-09-21 13:26:23 -07:00
healther
bce26745e3 Add cpu_target variant to openblas (#5090) 2017-09-21 12:28:24 -07:00
George Hartzell
f39fa2fee9 Use trusted/historic site for texlive installer (#5347)
* Make texlive untrusted

TeXLive updates their installer without changing its name.  We've been
playing keep-up with them, but I'm proposing it's not worth it.

I seem to end up installing it '--no-checksum' anyway.

This commit updates the package to make that approach official,
removing the checksum, adding a note to the description and a bigger
note/comment inthe package body.

* Pull installer from stable source (packages are still *live*)

This pulls the installer script from the "historic" repository.  It
appears to be stable, so that we can use a checksum with it (one
hopes, time will tell).

The installer still pulls the packages from the live repos so
installations aren't reproducible.
2017-09-21 07:22:09 -06:00
healther
837c325160 fix install method of cereal (#5094)
* removed unnecessary install method from cereal

* attempt to fix flake8 error

* adjusted install method

* add CMake options instead of manually patching stuff

* flake8
2017-09-21 07:10:51 -06:00
Yifan Zhu
a4309e1129 r-zlibbioc: new package (#5399) 2017-09-21 08:43:33 +02:00
Yifan Zhu
7373d20cbc r-biocinstaller: added version 1.26.1 (#5406) 2017-09-21 08:42:32 +02:00
BenBrands
b8a7b2e9a0 dealii: add cuda support (#5402) 2017-09-21 08:17:24 +02:00
Brian Van Essen
96927deb30 Opencv: fix dependencies and variants (#5232)
Fixes #5159

* Added dependency on google protobuf when using v3.3.0.
* Set default for variant core to be true.
2017-09-20 21:37:52 -07:00
Christoph Junghans
41a656a032 latte: add v1.0.1 (#5403) 2017-09-20 19:02:45 -07:00
Levi Baber
04489d6dfa r-biobase: new package (#5398)
Add r-biobase package. Remove explicit R dependency from r-biocgenerics
package (since it is an instance of RPackage). Update version for
r-biocgenerics and remove github versions.
2017-09-20 19:00:56 -07:00
George Hartzell
1d5f1576a5 Add info for mono@5.4.0.167 (#5405) 2017-09-20 18:44:53 -06:00
Yifan Zhu
bed69e708d r-survival: updated to version 2.41-3 (#5409) 2017-09-20 18:42:16 -06:00
George Hartzell
070ada3aef [WIP]: Sambamba new package (#5304)
* First draft package for sambamba

Depends on the ldc package (#5279) that alalazo's working on.

It requires a patch to the Makefile because one of ldc's library
functions mentions dlopen.  I *think* that ldc should be handling
this.  See the discusssion in #5279.

It also requires a "static" ldc.  Again, see #5279.

Finally, it needs "undeaD" as a resource, but I'm guessing at the
appropriate release.  See
https://github.com/lomereiter/sambamba/issues/312.

* alalazo renamed the shared_libs variant, keep up...
2017-09-20 18:23:49 -06:00
Kelly (KT) Thompson
d10aa385fb Update recipe for cgns to avoid build warnings/errors: (#5382)
+ The recipe for cgns seems to be wrong. CMake complains about variables set but
  not used (`HDF5_NEEDS_ZLIB`, `HDF5_NEEDS_MPI` and `HDF5_NEEDS_SZIP`) and fails
  to find HDF5.
+ This change set removes these variables from the cmake configure line,
  replacing them with `'-DHDF5_DIR=%s' % spec['hdf5'].prefix`
+ cgns also has trouble with parallel make, so I set `parallel = False`.
2017-09-20 18:21:14 -06:00
Mark C. Miller
02b7e38bb2 Rm arpack parpack (#5391)
* fixes #967

* Version bump to 0.9.1

- Bugfixes for spack find
- 0.9.1 can read specs from current develop.

* Don't assume spack is in the path when building docs.

* fixing build issues for gcc on osx

* reverting inadvertent change on develop

* fixing typesetting of bsws description

* very minor update to RTD docs footer to ref github contributors

* Revert "very minor update to RTD docs footer to ref github contributors"

This reverts commit c40d75da7f.

* switch fastmath to depend_on arpack_ng; remove arpack/parpack
2017-09-20 18:19:04 -06:00
Gregory Lee
3606b8a1f3 added Intel 2018 tools (#5404) 2017-09-20 18:15:20 -06:00
Audrey Thoma
48c26dd284 mirdeep: new package (#5302) 2017-09-20 15:48:20 -07:00
Denis Davydov
234e00e84c update Blas/Lapack section of packaging guide (#5383) 2017-09-20 15:40:20 -07:00
Audrey Thoma
393fc3261e orthomcl: new package (#5345)
Add orthocml package and fix mariadb url
2017-09-20 15:12:52 -07:00
Audrey Thoma
5267681abe tmhmm: new package (#5335) 2017-09-20 14:45:13 -07:00
Audrey Thoma
9f6c8ebc13 bbmap: new package (#5396) 2017-09-20 14:41:25 -07:00
Audrey Thoma
8933580789 targetp: new package (#5334) 2017-09-19 13:58:07 -07:00
sknigh
8dd3dca31c added p7zip package (#5394) 2017-09-19 22:51:32 +02:00
healther
21059c39ca pr-quantities: add version & py-numpy conflict (#5307) 2017-09-19 13:10:13 -07:00
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
Christoph Junghans
947cd8e3c0 berkeley-db: initial commit (#5303)
* berkeley-db: initial commit
* berkeley-db: added more versions
2017-09-11 13:25:36 -07:00
Massimiliano Culpo
50eea5cb13 Added 'ldc' compiler for D language based on LLVM (#5279) 2017-09-11 21:54:38 +02:00
Matthew Scott Krafczyk
f57559e4e2 Fix two bugs from the bootstrap update (#5312)
These were discovered with bash 4.1.2.

Add quotations around a variable to prevent the destruction of a
newline. Without this fix a conditional doesn't work properly.

Remove square brackets around a conditional meant to be evaluated based
on the return code of a command. This wasn't working properly with an
old bash.

Fix a typo.
2017-09-10 16:54:23 -10:00
Stephen McDowell
be2be8c70e fix armadillo macro expansions (#5268)
* fix armadillo macro expansions

- most compilers `#define linux 1`
    - armadillo does raw pasting of include directories in code
    - this means macro expansion of `linux-x86_64` -> `1-x86_64`
- new version, previous download url seems broken
- lib64 instead of lib?
    - needs verification, was required for intel, works for others

* flake8: two spaces is modules, one for classes

* add some explanation of how the patch works

* use p1 patch file with -U0 to prepend undef linux

* armadillo v8.100.1
2017-09-10 16:04:02 -10:00
Eloy Gil
7d5f12be70 Missing opencv dependencies (#5285)
There are some opencv dependencies missing such as "core" that are mandatory in order to complete the caffe build.
2017-09-10 14:38:11 -10:00
healther
1d3a8e034d add package py-line-profiler (#5291) 2017-09-10 14:35:17 -10:00
Pramod S Kumbhar
c077052664 Change glog from Autotools to CMakePackage (#5323) 2017-09-10 13:22:47 -10:00
Christoph Junghans
effba3c95e lammps: version bump, switch to cmake (#5313) 2017-09-10 13:21:38 -10:00
Christoph Junghans
b60e7e14b9 latte: initial commit (#5315) 2017-09-10 13:19:50 -10:00
Pramod S Kumbhar
d5f1144798 Fix Autotools build error due to missing m4 and MPICC/MPICXX (#5319) 2017-09-10 13:18:55 -10:00
Pramod S Kumbhar
ba5b17d28a Chnage IOR to AutotoolsPackage; remove hard-coded mpicc path (#5318) 2017-09-10 13:17:54 -10:00
Pramod S Kumbhar
3bb243e8e2 Improve PDToolkit support for different compilers (#5322)
* Improve PDToolkit support for different compilers

PDT dependency of TAU profiler doesn't use CC, CXX eb variables and needs command line arguments for compiler identification. If we don't pass compiler id then it uses gcc and result in link time errors while building TAU.  This patch fixes it; tested with PGI and Intel compilers.
2017-09-10 13:16:49 -10:00
Pramod S Kumbhar
f5f51118b8 Fix matplotlib build issue with intel compiler (#5321) 2017-09-10 13:15:12 -10:00
Pramod S Kumbhar
b14b02f875 Improve caffe dependency detection with extra CMake flags (#5328)
* Improve caffe dependency detection with extra CMake flags
* lmdb and leveldb fix
2017-09-10 13:14:22 -10:00
Pramod S Kumbhar
e0fa335df0 Paraview requires CMake version 3.3 or higher (#5317) 2017-09-10 10:09:05 +02:00
Pramod S Kumbhar
6ce009a72a Libgpuarray requires CMake 3.0 or higher (#5326) 2017-09-10 10:06:13 +02:00
Pramod S Kumbhar
156dedac6b Fix caffe build issue with python 3 (#5324) 2017-09-09 21:28:39 -10:00
Adam J. Stewart
2eb8db1dd2 Fix name detection in HeaderList and LibraryList (#5118)
* Fix name detection in HeaderList and LibraryList

* Add support for CUDA header files
2017-09-09 22:22:56 +02:00
Matthew Scott Krafczyk
51828dd982 Bootstrap environment-modules
Renames the existing bootstrap command to 'clone'. Repurposes
'spack bootstrap' to install packages that are useful to the
operation of Spack (for now this is just environment-modules).
For bash and ksh users running setup-env.sh, if a Spack-installed
instance of environment-modules is detected and environment modules
and dotkit are not externally available, Spack will define the 
'module' command in the user's shell to use the environment-modules
built by Spack.
2017-09-08 10:15:06 -07:00
Rob Latham
4f57c9651a dump environment in sourceable form (#5301)
First, quote the environment variable values.  Second, export the
variables. sorry, this is bourn-shell syntax.  Happy to consider a
shell-independent way to do this, but spack is already using sh-like
"env=value"
2017-09-07 17:07:03 -10:00
Audrey Thoma
2e0fc39173 mlhka: new package (#5231)
* mlhka: new package
2017-09-07 07:34:34 -10:00
Michael Kuhn
84ae7872d3 Update copyright notices for 2017 (#5295) 2017-09-06 17:44:16 -10:00
Denis Davydov
01a9a048ad elemental: fix hardcode libgfortran, use develop and explicitly specify MPI compilers (#5263) 2017-09-06 12:04:32 +02:00
Massimiliano Culpo
d1a5857a03 Added support for querying by tags (#4786)
* Added support to query packages by tags.
    - The querying commands `spack list`, `spack find` and `spack info` have
      been modified to support querying by tags. Tests have been added to
      check that the feature is working correctly under what should be the
      most frequent use cases.

* Refactored Repo class to make insertion of new file caches easier.
    - Added the class FastPackageChecker. This class is a Mapping from
      package names to stat info, that gets memoized for faster access.

    - Extracted the creation of a ProviderIndex to its own factory function.

* Added a cache file for tags.

    - Following what was done for providers, a TagIndex class has been added.
      This class can serialize and deserialize objects from json. Repo and
      RepoPath have a new method 'packages_with_tags', that uses the TagIndex
      to compute a list of package names that have all the tags passed as
      arguments.

      On Ubuntu 14.04 the effect if the cache reduces the time for spack list
      from ~3sec. to ~0.3sec. after the cache has been built.

* Fixed colorization of `spack info`
2017-09-05 15:44:42 -10:00
Christoph Junghans
feefdedadf nauty: shared libraries (#5207) 2017-09-05 09:15:08 -10:00
Massimiliano Culpo
41d8981ab5 Fixed bug in spack env due to missing argument. (#5280)
This command broke after #5109. It was using the default value for the
"dirty" argument in `setup_package`. Now it adopts the same logic as
in `spack install`. Changed help for '--clean' and '--dirty'. 
Improved coverage of spack env.
2017-09-05 17:15:25 +02:00
Tom Scogland
6c4918320d add neovim package with deps (#5260)
* add neovim package with deps
2017-09-04 23:34:21 -10:00
Denis Davydov
7f454bbd3d Add davydden as a maintainer to a couple of packages (#5284) 2017-09-05 00:23:56 +02:00
Massimiliano Culpo
dec6b609d8 Updated llvm to version 4.0.1 Fixed indentation of dict literal (#5272) 2017-09-02 07:51:27 -05:00
Andrey Prokopenko
c8df927607 Add maintainer for Trilinos
Add a maintainer for the Trilinos package.
2017-09-01 18:24:10 -07:00
Gilberto Martinez Jr
aedf6c3b87 PR for RAFT tomography package (#5247)
* Adding package RAFT

* Adding RAFT homepage
2017-09-01 12:30:16 -07:00
Pramod S Kumbhar
a140a89718 Fix allinea-forge and allinea-reports installation (#5243)
* Fix allinea-forge and allinea-reports installation

* Change which to Executable
2017-09-01 13:16:26 -05:00
Pramod S Kumbhar
2aed82c2c2 Fix osu-micro-benchmarks build (#5255)
* Fix osu-micro-benchmarks build

Changed hardcoded mpi wrapper names
Changed Package to AutotoolsPackage

* remove extra prefix
2017-09-01 13:14:54 -05:00
scheibelp
5342ecf364 Set default cmake build_type to Release for llvm
Override CMake "build_type" variant to default to "Release" for
llvm package.
2017-09-01 10:32:04 -07:00
zenln
48599837d8 Globalarrays: Adding ENABLE_I8 variant (#5249) 2017-08-31 15:14:50 -10:00
William Scullin
1d6fff1f2d New package: meson build system (#5250)
* Adding a spec for the meson build system
2017-08-31 15:13:52 -10:00
Audrey Thoma
1fff48641f kmergenie: new package (#5257) 2017-08-31 15:01:09 -10:00
Todd Gamblin
1136a7f069 jags: new package (#5256)
Just another Gibbs sampler
2017-08-31 14:58:55 -10:00
Massimiliano Culpo
01eba56e64 Patch directive allows non-archives (#5197)
- Don't expand downloaded patch file if it is not gzipped/tar'd/zipped/etc.
2017-08-31 14:06:03 -10:00
las_thoma15
cc3d8bacd7 adding config args and virtual dependencies 2017-08-31 09:37:24 -05:00
Denis Davydov
bb29ec1843 mpich: fix MPI_Barrier segfault (#5235)
* mpich: fix MPI_Barrier segfault

* one more link
2017-08-30 18:58:23 -05:00
Denis Davydov
b5a9f8ead1 add optional maintainers property to package (#5230)
* add optional package maintainers
2017-08-30 10:56:24 -07:00
Audrey Thoma
de5111cd50 hapcut2: new package (#5238) 2017-08-30 00:57:57 -07:00
Andrey Prokopenko
c830eda0e6 Slightly better error matching when parsing spack logs (#5236) 2017-08-30 00:56:17 -07:00
alalazo
462de9847c Added unit tests for Spec.__init__ exceptional paths 2017-08-29 00:44:43 -07:00
alalazo
bf7b861554 Fixed bug in Spec._dup, updated docstring
The private method `Spec._dup` was missing a line (when setting compiler
flags the parent spec was not set to `self`). This resulted in
an inconsistent state of the duplicated Spec. This problem has been
fixed here. The docstring of `Spec._dup` has been updated.
2017-08-29 00:44:43 -07:00
Todd Gamblin
ee93993b07 Make Spec construction simpler (#5227) 2017-08-29 00:02:25 -07:00
Christoph Junghans
6036a5a113 lammps: install headers (#5226)
* lammps: install headers
* use prefix.include.lammps
2017-08-28 16:33:30 -07:00
Audrey Thoma
56f4f74b72 redundans: new package (#5217)
* redundans: new package

* fixing url for fastaindex and adding dep for pyscaf
2017-08-28 15:25:19 -05:00
Matthew Scott Krafczyk
c94933343a Add --show-full-compiler option to 'spack find'
When 'spack find' is invoked with the '--show-full-compiler' option,
the compiler flags and version are shown for each spec that is found.
2017-08-28 10:35:46 -07:00
Massimiliano Culpo
005b22aa8b Removed default value for 'dirty' function argument. (#5109)
This change is done to avoid inconsistencies during refactoring. The rationale is that functions at different levels in the call stack all define a default for the 'dirty' argument. This PR removes the default value for all the functions except the top-level one (`PackageBase.do_install`).

In this way not defining 'dirty' will result in an error, instead of the default value being used. This will reduce the risk of having an inconsistent behavior after a refactoring.
2017-08-25 20:40:37 -07:00
Michael Kuhn
91143e9db4 Fix copyright years in spack create template (#5203) 2017-08-25 20:38:56 -07:00
Michael Kuhn
92df1492f6 go: Update to 1.9 (#5216) 2017-08-25 20:29:02 -05:00
Michael Kuhn
b94711a54f Improve Ubuntu arch detection (#2649)
Ubuntu uses a YY.{04,10} release scheme, where YY.04 is not necessarily
binary-compatible with YY.10.
2017-08-25 17:30:40 -07:00
Mark C. Miller
c769e99eda Zfp shared libs (#5212) 2017-08-25 15:08:49 -07:00
scheibelp
499617897b Link extra_rpaths from compilers.yaml at build time (#5211) 2017-08-25 11:02:36 -07:00
Gregory Lee
9a1fd166aa patch config.guess for any ppc64le arch (#5215) 2017-08-25 10:55:41 -07:00
Todd Gamblin
313771c734 Improve grammar in build log error message. (#5214)
- "1 error found" instead of "1 errors found"

- don't print any build log context if no errors were found; just refer
  the user to the build log.
2017-08-25 04:07:42 -07:00
Mark C. Miller
a0f39397c1 Add contributors link to Sphinx docs (#5213) 2017-08-25 02:57:44 -07:00
Sergey Kosukhin
fda3249c8b Respect --insecure (-k) flag when fetching list_url. (#5178)
* Respect --insecure when fetching list_url.
* Ensure support for Python 2.6, and that urlopen works for python versions prior 2.7.9 and between 3.0 and 3.4.3.
2017-08-25 02:15:46 -07:00
Denis Davydov
c0d3d33b58 dealii: add nanoflann, sundials and adol-c plus fixes on macOS (#5175)
* expat: fix build on macOS

* nanoflann: add new package

* sundials: fix compilation on macOS with clang+gfortran

* adol-c: add 2.6.3

* dealii: add adol-c, nanoflann, sundials and 8.5.1

* sundials: minor cleanup
2017-08-24 20:18:06 -05:00
Michael Kuhn
61cc55985b pkgconf: New package (#5202)
pkgconf is a new pkg-config implementation with additional features and
no external dependencies.

For a detailed comparison, see: http://pkgconf.org/features.html
2017-08-24 17:54:14 -07:00
Audrey Thoma
6ff82ff5a3 ray: new package (#5200) 2017-08-24 16:31:21 -07:00
Ben Boeckel
0e7071befe test/gpg: init from the testing key directory
The old testing pattern set an attribute on the parser directly. Now
that there is a parsed flag, use it instead.
2017-08-24 16:17:35 -07:00
Ben Boeckel
f564b2abf7 gpg: add an argument for the import directory
This is hidden because it is only meant for use by the tests.
2017-08-24 16:17:35 -07:00
Sergey Kosukhin
a48b5a627c Make jpeg a virtual dependency. (#5190)
* Make jpeg a virtual dependency.

* Make 'libjpeg-turbo' the default implementation of 'jpeg'.
2017-08-24 10:30:35 +02:00
sknigh
49a9d63be7 Added options to libfabrics (#5191) 2017-08-23 15:47:28 -07:00
Massimiliano Culpo
5d7901b312 Improve Spec literals, add Spec.from_dict() (#5151)
* Simplified Spec.__init__ signature by removing the *dep_like argument.

The `*dep_like` argument of `Spec.__init__` is used only for tests. This
PR removes it from the call signature and introduces an equivalent
fixture to be used in tests.

* Refactored ``spec_from_dict`` to be a static method of ``Spec``

The fixture ``spec_from_dict`` has been refactored to be a static method
of ``Spec``. Test code has been updated accordingly. Added tests for
exceptional paths.

* Renamed argument `unique` to `normal` + added LazySpecCache class

As requested in the review the argument `unique` of `Spec.from_literal`
has been renamed to `normal`. To avoid eager evaluations of
`Spec(spec_like)` expressions a subclass of `collections.defaultdict`
has been introduced.

* Spec object can be keys of the dictionary for a spec literal.

Added back the possibility use a spec directly as a key. This permits
to build DAGs that are partially normalized.
2017-08-23 14:20:40 -07:00
Christoph Junghans
fa1d0a8a4d Add --source option to spack install (#4102)
- -- source will copy source into prefix along with the package.
- added a test for --source, as well
2017-08-23 14:08:52 -07:00
Audrey Thoma
359b21c888 pgdspider: new package (#5186)
* pgdspider: new package

* couple of fixes
2017-08-23 08:34:12 -05:00
Axel Huebl
0daa639788 Boost: develop (#5184)
Adds a development version of boost, based on their github master
repo.
Git clones the submodules forever, but installs! :)

Useful for testing since boost tends to break complex software
dependencies quite often. This helps testing it before releases.
2017-08-23 07:31:34 -05:00
healther
15186d4ae8 add test for lua and node patching in sbang (#5169)
* add test for lua and node handling in sbang patching (cf #5086)
2017-08-23 01:05:36 -07:00
Todd Gamblin
40e9171390 Add testing for new build output.
- Update handling of ChildError so that its output is capturable from a
  SpackCommand

- Update cmd/install test to make sure Python and build log output is
  being displayed properly.
2017-08-22 16:14:38 -07:00
Todd Gamblin
f51b541ef8 Make install command reusable within single Spack run
- install and probably other commands were designed to run once, but now
  we can to test them from within Spack with SpackCommand

- cmd/install.py assumed that it could modify do_install in PackageBase
  and leave it that way; this makes the decorator temporary

- package.py didn't properly initialize its stage if the same package had
  been built successfully before (and the stage removed).
  - manage stage lifecycle better and remember when Package needs to
    re-create the stage
2017-08-22 16:14:38 -07:00
Todd Gamblin
fa1faa61c4 SpackCommand uses log_output to capture command output. 2017-08-22 16:14:38 -07:00
Todd Gamblin
4f444c5f58 log_ouptut can take either a filename or a file object 2017-08-22 16:14:38 -07:00
Todd Gamblin
139d5bfa6b Display build output on ProcessError, instead of Python context.
- If a failure comes from an external command and NOT the Python code,
  display errors highlighted with some context.

- Add some rudimentary support for parsing errors out of the build log
  (not very sophisticated yet).

- Build errors in Python code will still display with Python context.
2017-08-22 16:14:38 -07:00
Todd Gamblin
d54110d208 Limit package context to 3 lines and colorize in error output. 2017-08-22 16:14:38 -07:00
Massimiliano Culpo
4600d106e2 Config scopes are now returning OrderedDicts instead of dicts. (#5183)
It seems 8f21332fec introduced a bug
in that normal dictionaries are returned from ConfigScope objects
instead of OrderedDicts. This is fixed here.
2017-08-22 14:20:19 -07:00
Audrey Thoma
79df4db8e5 tcoffee: new package (#5185) 2017-08-22 13:48:23 -05:00
Axel Huebl
61c5b5faa7 Boost: 1.65.0 (#5182)
Adds the latest boost release.
Downloads seem to be pointing to bintray from the official homepage.
2017-08-22 13:46:54 -05:00
Sergey Kosukhin
f52bdeda2a Package 'libaec': no need to specify per version urls. (#5176) 2017-08-22 09:27:03 +02:00
Sergey Kosukhin
e55efdf8ed Updates for package 'cdo'. (#5179)
* Package 'cdo': removed obsolete version 1.6.9.

* Package 'cdo': updated urls.

* Package 'cdo': added version 1.9.0.

* Package 'cdo': no need to specify per version urls.

* Package 'cdo': switched from Package to AutotoolsPackage.

* Package 'cdo': added new variant 'openmp'.

* Package 'cdo': variants 'curl' and 'magics' by default.
2017-08-22 08:42:55 +02:00
Matthew Scott Krafczyk
48bf1e276b Add environment variables to path substitution
Update documentation on config file variable substitutions and
add expansion of environment variables in config files.
2017-08-21 18:35:00 -07:00
Audrey Thoma
e0ebf44239 py-pyrad: new package (#5181) 2017-08-21 17:58:05 -05:00
Massimiliano Culpo
581f70ff6f Added custom messages for conflicts directive. fixes #4965 (#5083)
Users can now add an optional custom message to the conflicts directive.
Layout on screen has been changed to improve readability and the long
spec is shown in tree format. Two conflicts in `espresso` have been
modified to showcase the feature.
2017-08-21 09:20:07 -07:00
Axel Huebl
bd8ac0a738 Protobuf: 3.4 (#5177) 2017-08-21 07:29:47 -05:00
Todd Gamblin
10bb681b57 Unbuffer so that output from packages appears when redirecting
- Python I/O would not properly interleave (or appear) with output from
  subcommands.

- Add a flusing wrapper around sys.stdout and sys.stderr when
  redirecting, so that Python output is synchronous with that of
  subcommands.
2017-08-20 16:51:10 -07:00
Todd Gamblin
79045afada Add tests for output redirection. 2017-08-20 16:51:10 -07:00
Todd Gamblin
11196e7b69 Preserve verbosity across installs when 'v' is pressed.
- 'v' toggle was previously only good for the current install.
- subsequent installs needed user to press 'v' again.
- 'v' state is now preserved across dependency installs.
2017-08-20 16:51:10 -07:00
Todd Gamblin
48440766df Fix exit call in SpackError.die()
- Previously we would use `os._exit()` in to avoid Spack error handling
  in the parent process when build processes failed.  This isn't
  necessary anymore since build processes propagate their exceptions to
  the parent process.

- Use `sys.exit` instead of `os._exit`. This has the advantage of
  automatically flushing output streams on quit, so output from child
  processes is not lost when Spack exits.
2017-08-20 16:51:10 -07:00
Todd Gamblin
05cc6c966f Rework output redirection in Spack.
- Simplify interface to log_output. New interface requires only one
  context handler instead of two.  Before:

      with log_output('logfile.txt') as log_redirection:
           with log_redirection:
               # do things ... output will be logged

  After:

      with log_output('logfile.txt'):
          # do things ... output will be logged

  If you also want the output to be echoed to ``stdout``, use the
  `echo` parameter::

      with log_output('logfile.txt', echo=True):
          # do things ... output will be logged and printed out

  And, if you just want to echo *some* stuff from the parent, use
  ``force_echo``:

      with log_output('logfile.txt', echo=False) as logger:
          # do things ... output will be logged

          with logger.force_echo():
              # things here will be echoed *and* logged

  A key difference between this and the previous implementation is that
  *everything* in the context handler is logged.  Previously, things like
  `Executing phase 'configure'` would not be logged, only output to the
  screen, so understanding phases in the build log was difficult.

- The implementation of `log_output()` is different in two major ways:

  1. This implementation avoids race cases by using only one pipe (before
     we had a multiprocessing pipe and a unix pipe).  The logger daemon
     stops naturally when the input stream is closed, which avoids a race
     in the previous implementation where we'd miss some lines of output
     because the parent would shut the daemon down before it was done
     with all output.

  2. Instead of turning output redirection on and off, which prevented
     some things from being logged, this version uses control characters
     in the output stream to enable/disable forced echoing.  We're using
     the time-honored xon and xoff codes, which tell the daemon to echo
     anything between them AND write it to the log.  This is how
     `logger.force_echo()` works.

- Fix places where output could get stuck in buffers by flushing more
  aggressively.  This makes the output printed to the terminal the same
  as that which would be printed through a pipe to `cat` or to a file.
  Previously these could be weirdly different, and some output would be
  missing when redirecting Spack to a file or pipe.

- Simplify input and color handling in both `build_environment.fork()`
  and `llnl.util.tty.log.log_output()`.  Neither requires an input_stream
  parameter anymore; we assume stdin will be forwarded if possible.

- remove `llnl.util.lang.duplicate_stream()` and remove associated
  monkey-patching in tests, as these aren't needed if you just check
  whether stdin is a tty and has a fileno attribute.
2017-08-20 16:51:10 -07:00
Todd Gamblin
e0dd55e090 Make SpackCommand a bit more testable
- add fail_on_error argument
- record exception and return code when the command fails
2017-08-20 16:51:10 -07:00
Todd Gamblin
e77c1a20c5 Fix issue with color formatting regular expression. (#5171)
- Fix issue with color formatting regular expression.
  - _separators regex in spec.py could be constructed such that '^' came
    first in the character matcher, e.g. '[^@#/]'.  This inverts the match
    and causes transient KeyErrors.

  - Fixed to escape all characters in the constructed regex.

  - This bug comes up in Python3 due to its more randomized hash iteration
    order, but it could probably also happen in a Python 2 implementation.

- also clean up variable docstrings in spec.py
2017-08-20 15:34:35 -07:00
Massimiliano Culpo
99fb394ac1 Group Travis CI jobs in stages (#5104)
- This should speed-up Travis CI tests and refers to #5049

- Travis uses build-stages to group tests together
    - The idea is to let fast tests fail first, then move to longer ones.
    - Added external perl to avoid download failure from CPAN and reduce build time
    - Disabling perl-dbi: continues to fail with (504 Gateway Time-out) on Travis

- We now cover all the build systems in tests:
    - Add back `openblas` to Travis as a separate package.
    - Switched `openblas` for `astyle` to build a simpler MakefilePackage.
    - Added 'tut' (WafPackage)
    - Added 'py-setuptools' (PythonPackage)
    - Added 'perl-dbi' (PerlPackage)
    - Added 'build_systems' directory to the ones for which we get a summary
    - Added 'openjpeg' (CMakePackage)
    - Added 'r-rcpp' (RPackage)
    - Added comments to build tests to show the covered build system
2017-08-19 14:52:27 -07:00
Todd Gamblin
bb10bc39ab Make test_inspect_path work on Mac OS X without XCode (#5168)
- Mac OS X Sierra has no /usr/include by default
- Instead of assuming there's an include directory in /usr, mock up a directory that looks like we expect.
2017-08-19 14:48:24 -07:00
健美猫
be0e051870 Add version 1.7.1 for cub. (#5164) 2017-08-19 09:22:19 -05:00
Adam Moody
d80c70538f lbann: add depends_on hwloc (#5165) 2017-08-19 01:00:52 -05:00
Audrey Thoma
fa39afb598 cufflinks: new package (#5158) 2017-08-18 16:02:15 -05:00
Audrey Thoma
3d1c5f679f muscle: fix (#5160) 2017-08-18 16:01:30 -05:00
Kelly (KT) Thompson
c41c5bc9b8 For Tk, also provide a symlink for wishX.X. (#5161)
+ gitk (and possibly other tools) expect to find the Tk executable `wish`, so
  add a symlink with this name that points to the the versioned filename.
+ Example: `wish --> wish8.6`
2017-08-18 16:01:02 -05:00
healther
d6d2dff324 sbang support: add node-js and fix lua
This adds sbang hook support for node-js and fixes the sbang filter
for lua (the character class exclusion was swallowing newlines and
reporting a false positive if lua was mentioned anywhere in the 
file).
2017-08-18 11:57:52 -07:00
healther
6d155833c5 build boost with graph library even when +mpi
Previously, when +graph and +mpi were enabled, the graph library
was replaced with the graph_parallel library. This alters the
logic for +graph+mpi to build both libraries.
2017-08-18 11:19:55 -07:00
Audrey Thoma
9ad8e79332 corset: new package (#5157) 2017-08-18 11:02:58 -05:00
Audrey Thoma
6abe8e7d91 parsimonator: new package (#5143)
* parsimonator: new package

* adding variant conflict
2017-08-18 09:36:35 -05:00
Audrey Thoma
5fb23b21e0 vegas2: new package (#5150)
* vegas2: new package

* small version things
2017-08-18 09:36:18 -05:00
George Hartzell
9af953a4cb Add info for nextflow@v0.25.6 (#5148) 2017-08-18 09:36:02 -05:00
Stephen McDowell
61238baf56 add man-db package and friends (#4844)
* add man-db package and friends

* fix groff, libpipeline, and man-db dependencies

* remove parallel groff altogether, build-only deps
2017-08-18 14:17:25 +02:00
zenln
6d2092e1eb Add a new package for gaussian (#5149)
* Gaussian: Gaussian install

* Adding Patch to spack installed files

* Adding extra environment variables for gaussian at run time

* Adding provides linda

* Adding linda as a provided package

* Shortning vars and fixing flake8 indentation and spacings
2017-08-17 18:33:44 -05:00
Audrey Thoma
cf796ed595 pagit: new package (#5140)
* pagit: new package

* removed unneeded env var
2017-08-17 15:32:30 -05:00
Audrey Thoma
94af7ccb77 new package libfabric (#5146)
* pbmpi: new package

* forgot about libfabric
2017-08-17 15:31:31 -05:00
Audrey Thoma
cb4ede001c pbmpi: new package (#5144) 2017-08-17 11:59:02 -05:00
Axel Huebl
6472c39c2e Docs: Travis-CI Workflow (#5133)
* Docs: Travis-CI Workflow

Add a workflow how to use spack on Travis-CI.

Future Work:

depending if and how we can simplify 5101:
add a multi-compiler, multi-C++-standard, multi-software
build matrix example

* Fix Typos
2017-08-17 11:25:40 -05:00
Audrey Thoma
46d8cb8913 paml: new package (#5142) 2017-08-17 11:21:56 -05:00
Massimiliano Culpo
0f5582cefc Colorize spack info. Adds prominence to preferred version. (#4994)
* Colorize spack info. Adds prominence to preferred version. fixes #2708

This uses 'llnl.util.tty.color' to colorize the output of 'spack info'.
It also displays versions in the order the concretizer would choose
them and shows the preferred in a line on its own and in bold.

* Modified output according to Adam and Denis reviews.

Section titles are not bold + black, but bold + blue. Added a new
section named "Preferred version", which prints the preferred version
in bold characters.

* Further modifications according to Adam and Denis reviews.

After "Homepage:" we now have a single space. Removed newline after each
variant. Preferred version is not in bold fonts anymore. Added a simple
test that just runs the command.
2017-08-17 09:15:57 -07:00
Audrey Thoma
aa21590099 microbiomeutil: new package (#5134)
* microbiomeutil: new package

* got rid of unnecessary self

* oops
2017-08-17 09:19:00 -05:00
Adam J. Stewart
187f4420e2 Add new package for rhash, a cmake dependency (#5120)
* Add new package for rhash, a cmake dependency

* Add missing libuv dependency to cmake
2017-08-17 08:17:45 -05:00
Audrey Thoma
3bb7767839 py-faststructure: new package (#5131) 2017-08-17 07:49:57 -05:00
healther
d65d1269b9 add libiconv dependency to libxslt (#5138)
this is a fix to an installation that failed due to
configure for some reason not finding the libiconv
shipped with glibc, but still trying to link against it
see http://xmlsoft.org/FAQ.html
2017-08-17 07:18:02 -05:00
Massimiliano Culpo
101693d823 Improved error message for unsatisfiable specs (#5113)
* Improved error message for unsatisfiable specs. fixes #5066

This PR improves the error message for unsatisfiable specs by showing in tree format both the spec that cannot satisfy the constraint and the spec that asked for that constraint. After that follows a readable error message.
2017-08-17 08:26:04 +02:00
Massimiliano Culpo
c16a68f517 Relaxed constraints on config.yaml structure (#5115)
This PR allows additional unused properties at the top-level of the config.yaml file. Having these properties permits to use two different versions of Spack, one of which adds a new property, without receiving error messages due to the presence of this new property in a configuration cache stored in the user's home.
2017-08-17 06:37:09 +02:00
Patrick Gartung
1c8bdd7e24 buildcache fixes: index.html & unsigned installs
This fixes a syntax error in the index.html file generated by the
"spack buildcache" command when creating build caches. This also
fixes support for installing unsigned binaries.
2017-08-16 19:03:14 -07:00
sknigh
dd790fdaae add missing dependencies to elfutils (#5135) 2017-08-16 20:46:12 -05:00
Audrey Thoma
4c32b0ad56 tppred: new package (#5091)
* tppred: new package

* fixed url_for_version

* fixed version spec on dependency

* removing unneeded dependency
2017-08-16 17:48:50 -07:00
Audrey Thoma
d423f85fed dialign-tx: new package (#5126)
* dialign-tx: new package

* utilizing build_directory variable

* forgot one
2017-08-16 17:36:29 -07:00
Audrey Thoma
3a55d45497 discovar: new package (#5129) 2017-08-16 17:35:04 -07:00
Audrey Thoma
6a2cfedc7a gapcloser: new package (#5130) 2017-08-16 17:34:43 -07:00
Adam J. Stewart
af02774b3e Add tab completion & update docs for buildcache
This adds tab completion and fixes some formatting issues in the
documentation for the "spack buildcache" command.
2017-08-16 13:58:09 -07:00
Audrey Thoma
dc3526c7f1 py-misopy: new package (#5119)
* py-misopy: new package

* waiting for link to be fixed

* got correct url and checksum

* specifying dependency version requirements
2017-08-16 14:53:43 -05:00
healther
b547e6a273 Add package rtags (#5111)
* Add package rtags

* fixed license

* transform to cmakepackage and add dependencies

* add dependencies and patch for rtags

* flake8 fix

* clean up dependencies
2017-08-16 13:14:54 -05:00
Cesare Cugnasco
ffaa0b7eee Adding Thrift versions 0.10.0 and 0.9.3 (#5117)
* Adding Thrift version 0.10.0 and 0.9.3

Hi, I've added the versions 0.10.0 and 0.9.3

* fixed  flake8 errors
2017-08-16 13:14:37 -05:00
Audrey Thoma
b12fd4e831 phylip: new package (#5121) 2017-08-16 13:13:38 -05:00
Audrey Thoma
7aa81afa68 preseq: new package (#5122) 2017-08-16 13:13:18 -05:00
Adam J. Stewart
11b3ce27b7 Add better generator support to CMakePackage (#4988)
* Add better generator support to CMakePackage

* List valid CMake generators on error
2017-08-16 12:25:37 -05:00
Adam J. Stewart
db657d938d Refactor IntelInstaller into IntelPackage base class (#4300)
* Refactor IntelInstaller into IntelPackage base class

* Move license attributes from __init__ to class-level

* Flake8 fixes: remove unused imports

* Fix logic that writes the silent.cfg file

* More specific version numbers for Intel MPI

* Rework logic that selects components to install

* Final changes necessary to get intel package working

* Various updates to intel-parallel-studio

* Add latest version of every Intel package

* Add environment variables for Intel packages

* Update env vars for intel package

* Finalize components for intel-parallel-studio package

Adds a +tbb variant to intel-parallel-studio.
The tbb package was renamed to intel-tbb.
Now both intel-tbb and intel-parallel-studio+tbb
provide tbb.

* Overhaul environment variables set by intel-parallel-studio

* Point dependent packages to the correct MPI wrappers

* Never default to intel-parallel-studio

* Gather env vars by sourcing setup scripts

* Use mpiicc instead of mpicc when using Intel compiler

* Undo change to ARCH

* Add changes from intel-mpi to intel-parallel-studio

* Add comment explaining mpicc vs mpiicc

* Prepend env vars containing 'PATH' or separators

* Flake8 fix

* Fix bugs in from_sourcing_file

* Indentation fix

* Prepend, not set if contains separator

* Fix license symlinking broken by changes to intel-parallel-studio

* Use comments instead of docstrings to document attributes

* Flake8 fixes

* Use a set instead of a list to prevent duplicate components

* Fix MKL and MPI library linking directories

* Remove +all variant from intel-parallel-studio

* It is not possible to build with MKL, GCC, and OpenMP at this time

* Found a workaround for locating GCC libraries

* Typos and variable names

* Fix initialization of empty LibraryList
2017-08-16 12:21:07 -05:00
Audrey Thoma
ad8c60239f mpiblast: new package (#5106) 2017-08-16 10:48:39 -05:00
Michael Kuhn
3a0e9f29e6 scorep: Fix build with GCC 7 (#5107) 2017-08-16 10:48:20 -05:00
Michael Kuhn
95915b81d0 otf2: Add 2.1 (#5108) 2017-08-16 10:48:02 -05:00
Adam J. Stewart
2f9b0f6dd6 Fix future import in hdf5-blosc (#5010) 2017-08-16 10:34:52 -05:00
healther
f6a452d3ad Add package rr (#5105)
* Add package rr

* Flake8 fixes

* fix flake8 no2

* add future dependency stub, add hw dependency and clean up

* add missing self
2017-08-16 10:29:02 -05:00
healther
dbdf38f617 Add package PyPytestXdist and dependencies (#5095)
* Add py-pytest-xdist

* fixed licenses

* attempt to fix flake8

* added missing build dependency
2017-08-16 10:26:39 -05:00
healther
480764de5c Add package py-pybind11 (#5096)
* py-pybind11 package was missing

* fixed license file

* attempt to fix flake8

* use python3 compatible python detection
2017-08-16 08:29:54 -05:00
Audrey Thoma
619e298b8d cdhit: new package (#5085) 2017-08-16 07:05:16 +02:00
Gregory Lee
450b19b6e0 fix reference to spec in apex package (#5076)
* fix reference to spec in apex package

* fixed md5 sums for ompt-openmp and apex packages
2017-08-15 17:17:02 -05:00
Brian Van Essen
7b51791625 Openblas clang fix (#5065)
* Added a package for the MDAnalysis toolkit.

* Openblas now builds with clang when using 0.2.20

* Fixed flake8 error

* Added a guard to fail for openblas+openmp when on OSX systems

* Changed the guard to look for Apple's build of clang and to improve
the error messages.

* Removed blank line.
2017-08-15 16:57:11 -05:00
healther
8df9f9e1f4 Fix ffmpeg (add missing yasm dependency) (#5087) 2017-08-15 16:54:39 -05:00
Michael Kuhn
256cd68b27 nco: Add patch to fix invalid conversion from char to char* (#5102)
This patch is needed to be able to build nco with GCC 7.
2017-08-15 16:53:22 -05:00
Michael Kuhn
8d4dec7430 ncview: Fix download URL (#5103) 2017-08-15 16:52:34 -05:00
healther
b52e549758 add version 0.2.10 to py-lazyarray (#5093) 2017-08-15 12:15:00 +02:00
Michael Kuhn
43a634ca80 gcc: Add 7.2.0 (#5098) 2017-08-15 12:14:07 +02:00
Mark C. Miller
5712fbfeb0 Use correct variant syntax to build zfp (#5099)
`h5z-zfp` now  builds zfp with correct bit stream word size; the syntax of the variant declaration did not work in previous versions of spack but does now
2017-08-15 12:10:09 +02:00
healther
b229b739de add older versions to package folly (#5088) 2017-08-15 12:01:33 +02:00
Patrick Gartung
ab56c742ca Create, install and relocate tarballs of installed packages
Adds the "buildcache" command to spack. The buildcache command is
used to create gpg signatures for archives of installed spack
packages; the signatures and archives are placed together in a
directory that can be added to a spack mirror. A user can retrieve
the archives from a mirror and verify their integrity using the
buildcache command. It is often the case that the user's Spack
instance is located in a different path compared to the Spack
instance used to generate the package archive and signature, so
this includes logic to relocate the RPATHs generated by Spack.
2017-08-14 14:32:27 -07:00
Massimiliano Culpo
5184edb15f Added a custom action for --clean and --dirty. (#5081)
The action `CleanOrDirtyAction` has been added. It sets the default
value for `dest` to `spack.dirty`, and changes it according to the flags
passed via command line. Added unit tests to check that the arguments
are parsed correctly. Removed lines in `PackageBase` that were setting
the default value of dirty according to what was in the configuration.
2017-08-14 11:29:18 -07:00
scheibelp
4d9ef49b49 Decode process stream only for python3
Popen.communicate outputs a str object for python2 and a bytes
object for python3. This updates the Executable.__call__ function
to call .decode on the output of Popen.communicate only for python3.
This ensures that Executable.__call__ returns a str for python2 and
python3.
2017-08-14 11:23:03 -07:00
Brian Van Essen
3cce3e3ce4 Opencv update (#5079)
* Added a package for the MDAnalysis toolkit.

* Added version 3.3.0
2017-08-11 23:46:39 -05:00
Massimiliano Culpo
41c87a71a8 patch: get correct package directory for a given package
fixes #4236
fixes #5002

When a package is defined in more than one repository,
RepoPath.dirname_for_package_name may return the path
to either definition. This sidesteps that ambiguity by 
accessing the module associated with the package definition.
2017-08-11 19:18:52 -07:00
snehring
64a32ea1f9 adding falcon (#5057)
* py-networkx: adding older version py-networkx

* py-pypeflow: new package

* falcon: adding new package
pacbio-daligner: adding new package
pacbio-damasker: adding new package
pacbio-dazz-db: adding new package
pacbio-dextractor: adding new package

* py-networkx: modifying version order to be in line with convention

* falcon: tweaking py-networkx dependency to satisfy setuptools
py-pypeflow: adding missing dependency

* pacbio-dextractor: changing hdf5 dependency

* pacbio-daligner: adding gmake build dep
pacbio-damasker: adding gmake build dep
pacbio-dazz-db: adding gmake build dep
pacbio-dextractor: adding gmake build dep
2017-08-11 17:26:20 -05:00
Audrey Thoma
9e7917f7d3 mpest: new package (#5064)
* mpest: new package

* adding architecture env var and making more version-flexible

* fixing environment

* fixed build directory

* getting rid of duplicated code
2017-08-11 17:25:26 -05:00
Gregory Lee
14076c52f1 packages need to reference self.spec instead of spec (#5075) 2017-08-11 17:24:40 -05:00
Audrey Thoma
056faad3a2 signalp: new package (#5054)
* signalp: new package

* fixed homepage

* fixed url and phases

* refixed phase

* improved readability

* making path in execuatble adaptable to new versions
2017-08-11 13:54:12 -05:00
Audrey Thoma
d16f823f9d sspace-standard: new pacakge (#5071)
* sspace-standard: new pacakge

* fixing install versioning

* fixing description
2017-08-11 13:51:27 -05:00
Audrey Thoma
a030c858dd sspace-longread: new package (#5072)
* sspace-longread: new package

* fixing description

* fixing order
2017-08-11 13:51:08 -05:00
Audrey Thoma
295cdc5674 gapfiller: new package (#5073) 2017-08-11 13:50:08 -05:00
Mark C. Miller
39cb589510 More variants for MFEM (#4533)
* fixes #967

* Version bump to 0.9.1

- Bugfixes for spack find
- 0.9.1 can read specs from current develop.

* Don't assume spack is in the path when building docs.

* adding mfem variants; do not assume build defaults

* adjusting format to clarify options

* fixing some build issues

* fixing mfem+sundials

* removing mesquite variant...turns out it is obsolete

* adding examples to mfem; fixing sundials darwin installs

* adding some additional variants and setting some configure flags by fiat

* switching most check_variants logic to conflicts() directives

* adding comment about cmake config

* fixing flake8 issues; thought I had already done that

* moving func def into install method

* switch yes_no to no_yes; fix miss-spelling of miniapps

* switching make target all to lib

* changing yes_no to function as requested; fix problem with same in sundials

* fix missing import sys directive

* adding master and develop versions to amrex
2017-08-11 08:39:48 -05:00
Brian Van Essen
71c5b19464 Elemental fix (#5067)
* Added a package for the MDAnalysis toolkit.

* Added additional packages that Elemental depends on.

* Changed LBANN to not ask for the scalapack variant in Elemental.

* Removed variant control on scalapack
2017-08-11 08:29:24 -05:00
EmreAtes
038efc623d New package: qbox (#4711)
* New package: qbox

* API changes

* Use install instead of shutil for comd

* Use any BLAS library

* Fix typo

* Python2 fix

* python2 + fix backslashes

* Modified to respond to ld_flags correctly

* Modified to use ld_flags

* Add ld_flags support
2017-08-10 20:12:08 -05:00
Akhil Reddy Patlolla
e3a4631037 Add AMG2013 package (#4836)
*  Updated Changes

*  Updated AMG with required MPI

*  Updated AMG with Version ' changes'

*  Fixed Issues with flag's and variant checks

*  Updated with MPI Alone and Changes - NO Serial Variant

*  Updated with MPI Alone and Changes - NO Serial Variant

* Fixed Flake 8 line length error

*  Updated Spack Issues
2017-08-10 20:09:59 -05:00
Akhil Reddy Patlolla
e4c22efc85 Variants Serial MPI openmp (#4897)
*  Variants Serial MPI openmp

*  Fixed Flake8 Issue  and remove Patch File

*  Fixed issues with openmp Flag

*  Edited Required Changes

* Fixed issues with flake8 and Added Conditional GCC Flags

* Fixed Flake 8 Issue

*  Fixed flag's issue with non GCC Compiler

*  Fixed condition and spacing issues
2017-08-10 20:08:56 -05:00
Audrey Thoma
2f29e9c18e braker & genemark-et: new packages (#5058)
* braker & genemark-et: new packages

* fixing install
2017-08-10 20:04:37 -05:00
Audrey Thoma
637f72a8fe fimpute: new package (#5060) 2017-08-10 20:04:10 -05:00
Audrey Thoma
967370aa0b impute2: new package (#5062) 2017-08-10 20:03:52 -05:00
Audrey Thoma
518993431d mothur: new package (#5055)
* mothur: new package

* fixing mpi things
2017-08-10 18:09:40 -05:00
Jim Galarowicz
df3bc3906d Update Krell products: Add new OpenSpeedShop gui package based on qt4/qt5 gui toolkit. (#5056)
* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Add new OpenSpeedShop gui package based on qt4/qt5 gui toolkit.

* Fix flake8 errors.

* Fix flake8 errors.
2017-08-10 18:08:32 -05:00
Audrey Thoma
81a1d7b72b gblocks: new package (#5061) 2017-08-10 17:56:20 -05:00
Audrey Thoma
ee66c3a7aa kallisto: new package (#5063) 2017-08-10 17:54:29 -05:00
Audrey Thoma
e99834df6a fastphase: new package (#5059) 2017-08-10 17:51:46 -05:00
Michael Kuhn
887e4724c2 go: Fix cgo (#5052) 2017-08-10 09:42:02 -07:00
George Hartzell
c6cd447a8a Add version 2.19.1.403 to bcl2fastq2 package (#5047)
* Update bcl2fastq2 with info for 2.19.1.403

Heads up, the download location changed (domain name AND protocol).

* Flake8 fix

What's one space between friends?
2017-08-09 22:17:34 -05:00
Audrey Thoma
5bb86ce964 soapindel: new package (#5048)
* soapindel: new package

* fixed versioning
2017-08-09 21:39:06 -05:00
Jon Rood
58cdd46ebd Adding lower bound to pnetcdf conflict in Trilinos (#5039)
* Adding lower bound to pnetcdf conflict in Trilinos to allow for use of develop and master branch.

* Using even lower bound for pnetcdf conflict in Trilinos.
2017-08-09 18:50:28 -05:00
Audrey Thoma
869d40648f soap2: new package (#5045) 2017-08-09 18:50:11 -05:00
Audrey Thoma
3edf36b0a4 haploview: new package (#5036) 2017-08-09 17:03:14 -05:00
Audrey Thoma
7ca5e4f734 soapsnp: new package (#5046) 2017-08-09 17:00:59 -05:00
Brian Van Essen
28b0421eb1 Opencv fix (#5040)
* Added a package for the MDAnalysis toolkit.

* Changed cmake_options to args to be consistent with the rest of the
file and fix a cmake error about undefined errors.  Additionally,
added guards for both png and zlib to not include their cmake options
when those variants are not specified.
2017-08-09 15:40:10 -05:00
Audrey Thoma
0137f17306 shapeit: new package (#5042)
* shapeit: new package

* fixing versioning
2017-08-09 15:39:37 -05:00
Audrey Thoma
1f578c5777 pipits: new package (#5041)
* pipits: new package and dependencies

* fixing rdp-classifier java dep

* adding resources to pipits and fixing deps for py-biom-format
2017-08-09 15:04:21 -05:00
becker33
79f9548a9a bugfix for module_cmd (#5038)
* bugfix for modulecmd when bash is symlinked to sh

* update test to make sure module_cmd can interpret sh
2017-08-09 12:14:35 -07:00
Massimiliano Culpo
faeb1b77b2 Merged 'purge' command with 'clean' and deleted 'purge' (#4970)
* Merged 'purge' command with 'clean'. Deleted 'purge'. fixes #2942

'spack purge' has been merged with 'spack clean'. Documentation has been
updated accordingly. The 'clean' and 'purge' behavior are not mutually
exclusive, and they log brief information to tty while they go.

* Fixed a wrong reference to spack clean in the docs

* Added tests for 'spack clean'. Updated bash completion.
2017-08-09 10:02:38 -07:00
pkondamudi
9e8cce41e3 OpenMC parallel build fix. (#5037) 2017-08-09 11:11:09 -05:00
Denis Davydov
db4776fcd5 alglib: add new package (#5035) 2017-08-09 09:10:25 -07:00
Sergey Kosukhin
e463461ed1 Bugfixes for compiler detection on the Cray platform. (#3075)
* Typo fixes in docstrings.

* Let OS classes know if the paths they get were explicitly specified by user.

* Fixed regexp for cray compiler version matching.

* Replaced LinuxDistro with CrayFrontend for the Cray platform's frontend.
2017-08-09 09:00:34 -07:00
Massimiliano Culpo
d6fc2363af slurm: added initial recipe (#4802)
* slurm: added initial recipe

* Modified variants following Adam comment.

The MV variant 'features' has been turned into a set of BV variants. The
dependency on 'readline' has been made optional.
2017-08-09 08:13:33 -05:00
Brian Homerding
a33f52cfb0 Fixed minor issues from Cmake conversion (#5024) 2017-08-08 23:47:34 -05:00
jiseung
a66fb012da Packages/cns nospec (#5023)
* new package: cns-nospec

* made changes as suggested and added proxy-app tag

* updated edit()

* adjusted logic for '+debug'

* install readme and license

* install readme and license

* install readme and license; fix mpi version build issues

* fix build issues for ~mpi

* pep8 compliant
2017-08-08 20:25:00 -05:00
Audrey Thoma
3506f2674c xplor-nih: new package (#5030) 2017-08-08 20:24:42 -05:00
Axel Huebl
dfb34da689 Adios2: ZeroMQ (#5031)
During my last rebase the zeromq core dependency got missing.
Currently it's needed for all dataman WAN transports.
2017-08-08 20:24:27 -05:00
Audrey Thoma
1a3021d22c rtax: new package (#5025)
* rtax: new package

* fixing usearch version flexibility
2017-08-08 16:29:20 -07:00
jiseung
f6a9c7d79c Packages/amr exp parabolic (#5027)
* new package: amr-exp-parabolic

* removed boilerplate and added tag

* install license and readme

* fix mpi build issues

* change access to include/lib directories and pep8 compliant now
2017-08-08 17:25:27 -05:00
Audrey Thoma
7f4d94667c vmatch: new package (#5028)
* vmatch: new package

* adding url_for_version
2017-08-08 17:24:56 -05:00
Audrey Thoma
6323234135 astral: new package (#5022)
* astral: new package

* simplifying join_path

* adding build phase and changing jdk to java

* forgot to change jdk to java....
2017-08-08 16:35:19 -05:00
Audrey Thoma
f82fb75aae varscan: new package (#5026)
* varscan: new package

* changing jdk to java
2017-08-08 15:54:29 -05:00
Alen Kansakar
c1f3ed6f67 Removing blanks. 2017-08-08 14:21:08 -05:00
Adam J. Stewart
97958d8347 Add latest version of Ninja (#4987)
* Add latest version of Ninja

* Re-add symlinks, add latest version of ninja-fortran
2017-08-08 11:33:24 -07:00
Jim Galarowicz
48f0e9592e Krell spack updates: Add Argo Navis/Krell new gui support library (#4964)
* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build.

* Fix issues with the cbtf-argonavis package.py files related to comments.

* Add changes for changing the krell packages from Package to CMakePackage.

* Add better changes for changing the krell packages from Package to CMakePackage.

* Add more modifications for changing the krell packages from Package to CMakePackage.

* Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros

* Fix new travis errors.

* Fix new travis errors.

* Add more changes for PR 4765.

* Add more refinements to the conversion from Package to CMakePackage.

* Fix new travis errors.

* Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop.

* Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue.

* Fix more flake issues caused by last changes.

* Fix a bug where openspeedshop will not build when no mpi variants are specified.  Also switch to a multiple level variant for building the gui(s).  Use none, qt3, and qt4 as the variants with qt3 being the default.

* Add fix for spack issue #4843, where LTDL include files were not found.

* Add the build_type variant back into the openspeedshop package file.

* Add new package for the Argo Navis/Krell new graphical user support library: QtGraph.

* Revert "Add new package for the Argo Navis/Krell new graphical user support library: QtGraph."

This reverts commit f8883de446.

* Add new package for the Argo Navis/Krell new graphical user support library: qtgraph.

* Fix flake8 errors.

* Fix flake8 errors.

* Fix flake8 errors.

* Fix flake8 errors.

* Fix flake8 errors.

* Add changes to support QMakePackage class instead of Package class for qtgraph.

* Update change for suggested reviewer improvements.

* Fix flake8 errors.

* Fix flake8 errors.
2017-08-08 10:23:04 -05:00
jiseung
6196b7f9dd New package: VPFFT (#4995)
* new package: VPFFT

* install readme and license

* misc

* changed version name to 'develop'

* removed the misplaced package file

* updated eigen path, fixed docstring, and updated 'docs' installation method

* pep8 compliant, changed installation of docs
2017-08-08 10:20:40 -05:00
Axel Huebl
6e721bab6a IceT: Ill-Place CMake Modules (#5014)
IceT places its CMake module in the wrong directory,
which is not included in the default CMake search paths.

This fixes it for *directly* depending packages without the
need to add
```yaml
    icet:
      environment:
        prepend_path:
          CMAKE_PREFIX_PATH: '${PREFIX}/lib'
```

to the `modules.yaml` as a workaround.
2017-08-08 09:14:40 -05:00
Pramod S Kumbhar
f74eaa874a Add new version of dyninst package (#5017) 2017-08-08 12:08:51 +02:00
Adam J. Stewart
2853a28b2a Add latest version of gmake (#5013) 2017-08-07 18:45:07 -05:00
zenln
33cb093870 Add a new package for molcas (#5008)
* Molcas 8.2: Adding molcas spec file

* Molcas 8.2: Putting in patch file for molcas driver not to be installed in spack stage directory

* Molcas making changes

* Making changes in ordering
2017-08-07 17:41:51 -05:00
Axel Huebl
323d2d9aed CMake: 3.9.0 (#5009)
Add new versions:

- 3.8.2
- 3.9.0
2017-08-07 17:41:34 -05:00
Pramod S Kumbhar
a0d3a35afc Fix typo : spec to self.spec (#5011) 2017-08-07 17:35:03 -05:00
Pramod S Kumbhar
a5b76d24cf Update openspeedshop and cbtf-krell to use latest binutils version (fix #4992) (#4997) 2017-08-07 17:03:51 -05:00
Pramod S Kumbhar
f4dd905447 Fix build error with mpiP: (#5006)
change dependency types to default (build/link)
    and provide mpi compiler as cc (fix #5005)
2017-08-07 16:38:53 -05:00
Audrey Thoma
825c3c68a3 transabyss: new package (#4892)
* transabyss: new package and dependencies

* fixed build deps in igraph and version conflict spec in abyss

* fixed versioning stuff and package structure

*  fixed dep type

* fixing dep type for real this time
2017-08-07 15:42:49 -05:00
Pramod S Kumbhar
82463f1fd6 Fix Scalasca build error: (#5004)
Build system "usually" autodetects mpi library but this is
    not the case on many platforms. Provide mpi library name/version
    as part for configure args.
2017-08-07 14:56:47 -05:00
Kshitij Mehta
f2871c7529 savanna depends on adios+sz (#4954)
* savanna: explicitly adding variant sz to adios since it is no longer enabled by default in adios

* savanna: removing +sz from adios as sz is now enabled in adios by default

* savanna: explicitly specifying adios variants required by savanna
2017-08-07 14:37:26 -05:00
Kshitij Mehta
13cd98ac4a Adios (#4857)
* adios: conform to pep8

* adios: added versions 1.11.0 and 1.12.0

* adios: added variant no_mpi to explicitly disable mpi support

* adios: add new variant mxml

adios v1.12.0 onwards contains an xml library built within.
To build with an external mxml, a new variant must be used

* adios: new variant for sz transform

* adios: flexpath and dataspaces staging variants

Two new variants for staging: flexpath and dataspaces.
New variant 'staging' that will enable both

* adios: dependency on libtool:2.4.2 since adios does not build with newer libtool 2.4.6

* adios: better description for variant no-mpi

* adios: new variant for netcdf

as requested by @mamelara from LBL

* adios: renamed variant 'no_mpi' to 'serial'

* adios: removed variant mxml

* adios: corrected implementation of the mpi dependency, along with its relation with the 'serial' variant

Added conflicts between 'serial' and other variants

* adios: added 'else' clause when variants are not added

* adios: replaced variant 'serial' with 'mpi'

* adios: Added configure option to explicitly disable variants that are not enabled.

* adios: setting default zfp to true

* adios: fixed flake8 errors

* adios: removed some old comments

* adios: setting default sz to False.

It is recommended to set default to False when dependency is on develop (sz@develop).

* adios: removing dependency on develop for sz and setting default sz to true

* adios: updated url to latest release.

Just keeping it clean
2017-08-07 14:36:16 -05:00
Kshitij Mehta
a5e44504b0 Sz (#5003)
* sz: update to v1.4.9.2

* sz: fixed incorrect url
2017-08-07 14:34:33 -05:00
jiseung
629b17b36f Packages/snap (#5000)
* new package:SNAP

* removed boilerplate

* Delete .nfs00000000003a8b1700001358

* install another executable in bin and install readme

* added quotes around README.md

* moved readme to prefix
2017-08-07 14:34:06 -05:00
Brian Van Essen
8ca7c77008 Elemental cublas (#4889)
* Added a package for the MDAnalysis toolkit.

* Added a patch that allows Elemental to use cuBLAS internally.

* Added support for LBANN to use the new cuBLAS extension in Elemental.

* Added a proper variant for when LBANN does not want to use cuBLAS in
elemental.

* Added a package for the cnpy project and used it in the lbann package.

* Removed unnecessary comment lines.

* Removed blank lines

* Removed debug variant

* Add support for libjpeg-turbo

* Added additional variants for OpenCV features. Fixed bug when linking
in TIFF support, where libtiff used the regular JPEG library and
OpenCV used libjpeg-turbo.  Now libtiff can use libjpeg-turbo.

* Removed the variant for getting Elemental to use the cublas variant.
Updated the requirements for OpenCV to add new options.

* Fixed a flake8 error in OpenCV and added a path to find cnpy in lbann.

* Fixed line too long flake8 error.

* Added a flag to specify the datatype size in lbann and fixed a flake8 error.

* Added a debug build variant using hte new build_type

* Fixed flake8

* Fixed how the debug build is pushed to Elemental

* Fixed a bug in the Elemental package where the blas search flags were
being overridden by the blas link flags.  Changed how the sequential
initialization variant is implemented in LBANN.

* Added support via a variant to explicitly use mkl or openblas.  This
helps work around variant forwarding problems.

* Updated package files to address pull request comments.
2017-08-07 13:41:13 -05:00
jiseung
755081968f Packages/cns nospec (#4998)
* new package: cns-nospec

* made changes as suggested and added proxy-app tag

* updated edit()

* adjusted logic for '+debug'

* install readme and license

* install readme and license
2017-08-07 13:38:17 -05:00
Pramod S Kumbhar
8cbc7eeae4 Build Cube pckage with parallel make (only install phase serial) (#5001) 2017-08-07 13:32:09 -05:00
jiseung
cf2a96a3f5 Packages/smc (#4999)
* new package: SMC

* removed template and added proxy-app tag

* added comp variant in edit()

* edited comp variant in edit()

* move executable and input file into bin and install readme and license
2017-08-07 12:59:12 -05:00
scheibelp
5a94cee216 Variant satisfaction for indirect dependencies
Fixes #4898

Constraints that were supposed to be conditionally activated for
specified values of a single-valued variant were being activated
unconditionally in the case that the variant was associated with
an implicit dependency. For example if X->Y->Z and Y places a
conditional constraint on Z for a given single-valued variant on
Y, then it would have been applied unconditionally when
concretizing X.
2017-08-07 10:48:48 -07:00
Adam J. Stewart
392603e90b Make GCC binutils variant default to False (#4973) 2017-08-07 10:13:31 -07:00
Audrey Thoma
c53b1b9ad1 rsem: new package (#4991) 2017-08-07 10:04:20 -07:00
Audrey Thoma
45c227c1a3 vsearch: new package (#4993) 2017-08-07 10:02:54 -07:00
Audrey Thoma
c0e2204908 velvet: new package (#4996) 2017-08-07 10:01:50 -07:00
George Hartzell
0bd55cb8ce Limit make_jobs for boost < 1.59 (#4984)
Earlier versions of boost had a fixed maximum number of jobs.  1.54
was 64, it bumped once or twice afterwards and in 1.59 [this
commit][commit] it became dynamic.

I need 1.54 for as a prereq for bcl2fastq but I can't build 1.54 on my
144 core build box.

This fixes that.

[commit]: 316e26ca71
2017-08-06 15:23:13 -05:00
Adam J. Stewart
afc4f9c3c2 Download from pypi.io, not pypi.python.org (#4981) 2017-08-06 11:45:00 -05:00
Adam J. Stewart
0acee2f4b1 Add a new package for fastjar (#4983) 2017-08-05 16:05:12 -05:00
snehring
db74f4c3a1 Add a new package for IcedTea (#4804)
* alsa-lib: new package

* cups: new package

* icedtea: new package

* icedtea: adding JAVA_HOME variable

* alsa: removing placeholder

* icedtea: typo fix

* alsa: fixing formattting

* icedtea: formatting fixes and cleanup

* icedtea: additional cleanup

* jdk: adding provides('java') to jdk, setting jdk to default java.

* icedtea: adding jdk as a dependency

* java: changing depends_on('jdk') and similar entries to depends_on('java')

* icedtea: removing unused imports, trying to placate flake8.

* fastqc: fixing flake8 error

* bazel: fixing typo in java dependency

* jdk: changing provides java to a range

* icedtea: cleaning up. Splitting up checksums.

* icedtea: jdk dependency is build only
2017-08-05 14:53:09 -05:00
George Hartzell
ab0ea3cec4 Fix libbsd's cdefs.h to be compatible with gcc 4.8.x (#4979)
* Fix cdefs macro to be compatible with gcc 4.8.x

See the discussion in #4945 (after the merge) for additional
background.

libbsd builds with gcc@5.4.0 on CentOS 7, but not with the system's
gcc@4.8.5.  Others have reported problems with gcc@4.8.3 on Fedora 19.

The problem boils down to the lack of support for the clang extension
`__has_include_next`.  The immediate symptom seems to be the
pre-processor using defining macro like this

```
```

then then tripping over an expansion of it like this:

```
blah.h:13:23: error: missing binary operator before token "("
```

This patch changes the macro definition to:

```
```

which swallows the arguments with which the macro is invoked.

The end result is that libbsd builds for me on CentOS 7 using the
system compiler.

* Apply this patch for any compiler version before 5

This includes subversions of 4, like 4.8.5.
2017-08-05 13:33:24 -05:00
Mark Olesen
9f6c9d8afa Version: dev -> develop (for openfoam-org) (#4974) 2017-08-05 13:33:07 -05:00
Abhinav Bhatele
0117e1b76b add proxy-app tag to the lulesh package (#4951) 2017-08-05 13:32:40 -05:00
Adam J. Stewart
2a03585de6 gitignore everything in /etc/spack except /etc/spack/defaults (#4459)
* gitignore everything in /etc/spack except /etc/spack/defaults

* Don't ignore subsubdirectories of /etc/spack/defaults
2017-08-05 13:18:19 -05:00
Jia Li
41361cffea Fixed OpenBLAS compilation error on POWER8 with GCC 7. (#4783)
* Fixed compilation error on POWER8 with GCC 7.

* Restrict patch to ppc64 with gcc.
2017-08-05 12:56:04 -05:00
Audrey Thoma
6485c3feb5 snap-berkeley: new package (#4855)
* snap: new package

* changing name and adding stable release
2017-08-05 12:42:33 -05:00
snehring
cf017baa8d chlorop: new package (#4865)
* chlorop: new package

* chlorop: moving main script to bin and moving runtime tmp location.

* chlorop: fixing flake8 error.

* chlorop: cleaning up, removing CHLOROTMP, advising user to set it.

* chlorop: removing unused import
2017-08-05 12:39:44 -05:00
Sam Bateman
ce6d357161 Correct boost +mpi for Cray compiler wrappers (#4909) 2017-08-05 12:06:46 -05:00
Axel Huebl
50bf261197 Add ADIOS2 (#4944)
Adds ADIOS2, the C++ Exascale HPC I/O rewrite of ORNL's ADIOS
library.

Currently, many variants (especially for data transforms such as
compression) are not yet added. It already provides Python bindings.
2017-08-05 12:05:38 -05:00
Kelly (KT) Thompson
c54108cf63 Moab depends on BLAS. (#4952) 2017-08-05 12:04:12 -05:00
Adam J. Stewart
a31ce17f0b Various fixes to package name URL parsing (#4978) 2017-08-05 10:15:47 -05:00
Adam J. Stewart
c7df12f698 Massive conversion from Package to CMakePackage (#4975) 2017-08-05 10:15:18 -05:00
Adam J. Stewart
17cdb73be7 Add latest version of numpy and scipy (#4982) 2017-08-05 15:37:53 +02:00
Adam J. Stewart
7eb263effe Add a SConsPackage base class (#4936)
* Add a SConsPackage base class

* Make Matlab extendable

* Most dependencies are actually required

* Cantera requires older version of fmt
2017-08-04 16:52:10 -05:00
Adam J. Stewart
b8ed61cfea Make CMake the default build system (#4862) 2017-08-04 14:53:05 -05:00
Massimiliano Culpo
9be294de31 Changed every 'fpic' variant to 'pic' (#4969)
* Changed every 'fpic' variant to 'pic'. fixes #2463

Every variant that activates compilation of position independent code
has been changed to 'pic'. Hardcoded compiler flags in packages have
been substituted with `self.compiler.pic_flag`.

* Changed literal uses of '-fpic' to 'self.compiler.pic_flag'
2017-08-04 18:21:43 +02:00
Adam J. Stewart
452f382293 Add a QMakePackage base class (#4925)
* Add a QMakePackage base class

* Fix sqlite linking bug in qt-creator

* Add latest version of qt-creator

* Add latest version of qwt

* Use raw strings for regular expressions

* Increase minimum required version of qt

* Add comment about specific version of sqlite required

* Fixes for latest version of qwt and qt-creator

* Older versions of Qwt only work with older versions of Qt
2017-08-04 08:46:07 -07:00
Sergey Kosukhin
f6c2adc0ad New package libaec: a BSD-licensed replacement for the szip library. (#4437)
* Added package for 'libaec'.

* New version for package 'libaec'.
2017-08-04 10:38:54 -05:00
Adam J. Stewart
408dfc8e86 Qt: disable OpenGL support by default (#4962)
* Qt: disable OpenGL support by default

* Fix qt+opengl build
2017-08-04 09:36:02 -05:00
Sergey Kosukhin
f8dfb6a486 OpenBLAS: one of the patches is not needed starting version 0.2.20. (#4971) 2017-08-04 09:34:58 -05:00
Adam J. Stewart
739bb9e5b7 Fix trilinos dependency on superlu-dist (#4968) 2017-08-04 08:17:28 -05:00
Elsa Gonsiorowski
bb4692fdb6 SCR CMake package (#3916)
* SCR CMake package

* Fix dtcmp variant description and set pdsh deptypes to build/run

* added variants for system config file location

* add variants for several scr cmake options

* Added more variants for compile time options

* Added libyogrt and made corrosponding changes to scr package.

* Cleanup yogrt package now that Ive verified it works

* Added description for libyogrt

* upper case async api names

* Make use of mv variants

* fix pdsh package for scr

* added IBM BBAPI as async option

* update pdsh and scr to use static pdsh modules
2017-08-03 16:52:52 -07:00
Axel Huebl
8a7678cae0 Version: Dev -> Develop (#4947)
Adjust the CRP packages with the properly defined version
label "develop" which is now standardized in spack.
2017-08-03 16:35:28 -05:00
George Hartzell
f24398cde6 Add package for libbsd, add variant to expat for libbsd (#4945)
* Add package for libbsd, add variant to expat for libbsd

The recent expat release requires a high quality source of randomness.

CentOS 7 does not seem to have one, but one is available in libbsd.

This commit adds a package for libbsd and adds a variant to expat to
use it (defaults to False).

* Make libbsd default for newer, conflict for older

Make the libbsd variant default to true.

Conflict if you're asking for libbsd and an older version of expat.

This means that in order to install an older version of expat you'll
need to specify `~libbsd`.

* Rework so that 2.2.0 and 2.2.2 work by default

Get rid of the conflicts and use better constraints/tests in the
`depends_on` and the `configure_args` bits.
2017-08-03 14:57:58 -05:00
Adam J. Stewart
4e269510c5 Fix trailing whitespace at the end of headers.cpp_flags (#4957) 2017-08-03 14:24:51 -05:00
George Hartzell
36496b9174 Fix crashes when running spack install under nohup (#4926)
* Fix crashes when running spack install under nohup

Fixes #4919

For reasons that I do not entire understand, duplicate_stream() throws
an '[Errno 22] Invalid argument' exception when it tries to
`os.fdopen()` the duplicated file descriptor generated by
`os.dup(original.fileno())`.  See spack/llnl/util/lang.py, line
394-ish.

This happens when run under `nohup`, which supposedly has hooked
`stdin` to `/dev/null`.

It seems like opening and using `devnull` on the `input_stream` in
this situation is a reasonable way to handle the problem.

* Be more specific about error being handled.

Only catch the specific error that happens when trying to dup
the stdin that nohup provides.

Catching e as a StandardErorr and then
`type(e).__name__` tells me that it's an OSError.

Printing e.errno tells me that it's 22

Double checking tells me that 22 is EINVAL.

Phew.
2017-08-03 10:33:16 -07:00
Adam J. Stewart
5ac10b90c5 Add database support to apr-util package (#4932) 2017-08-03 12:18:23 -05:00
homerdin
d087eeacbd CloverLeaf, miniGhost, miniMD, miniSMAC2D, miniXyce: Adding Tags (#4963) 2017-08-03 12:13:44 -05:00
George Hartzell
687904c714 New package for canu (#4937)
* Add package for canu

There's a top-level perl script, which is touched up to use a
spack-built perl instead of `#!/usr/bin/env perl`.  It's
self-contained, it uses `FindBin` to locate it's libaries.

* Add dependency on gnuplot

I noticed a hidden mention of the use of gnuplot in the docs.

This adds the dependency.

* Tighten dependencies, flake8 cleanup

gnuplot is a run dependency.
jdk is a run dependency.
perl is a run dependency.

Make flake8 happy.
2017-08-03 11:32:44 -05:00
Sergey Kosukhin
963eb99b7f Account for hyphens in package names when searching for libraries. (#4948) 2017-08-03 09:17:07 +02:00
Axel Huebl
269925f775 Protobuf: CMake (#4846)
* Protobuf: CMake

This rebuilds protobuf to be build with CMake,
so cmake config packages are created and installed, too.

Unfurtunately, this drops support for protobuf < 3.

* Protobuf CMake: Add .pc files

* libprotobuf.a: -fPIC

* Protobuf: Minor Updates

Updates from upstream review and planned patch inclusion.
2017-08-02 08:03:31 -05:00
Todd Gamblin
44ce0adbd5 Fix color bug in Spec.format() introduced by #3013 2017-08-01 17:40:54 -07:00
Todd Gamblin
b88f55e523 Add spack dependencies command and tests for it and dependents. 2017-08-01 17:40:54 -07:00
Todd Gamblin
af3c794ab5 document and make display_specs more versatile 2017-08-01 17:40:54 -07:00
Todd Gamblin
b575d008bd Fix issue with case check and spack -m 2017-08-01 17:40:54 -07:00
Todd Gamblin
c8b2100630 Refactor installed_dependents -> installed_relatives 2017-08-01 17:40:54 -07:00
Todd Gamblin
36b3dd8cfe Package.possible_dependencies() descends into virtuals. 2017-08-01 17:40:54 -07:00
Todd Gamblin
b9606e3157 Add --transitive option to spack dependents 2017-08-01 17:40:54 -07:00
Todd Gamblin
6928cf7a68 spack dependents lists possible dependencies by default. 2017-08-01 17:40:54 -07:00
Todd Gamblin
bd94a17066 Remove last vestiges of "special" deptypes.
- Remove `special_types` dict in spec.py, as only 'all' is still used
- Still allow 'all' to be used as a deptype
- Simplify `canonical_deptype` function
- Clean up args in spack graph
- Add tests
2017-08-01 17:40:54 -07:00
Todd Gamblin
43f576cf19 Remove unused code. 2017-08-01 17:40:54 -07:00
Todd Gamblin
f2ddcfac5f Add --all argument to spack dependents
--all causes spack dependents to list all possible dependents for a
package, rather than actual dependents for an installed spec.
2017-08-01 17:40:54 -07:00
Alicia Klinvex
44653fa488 Fix xsdk build broken by petsc and trilinos (#4893)
* Fix xsdk build broken by petsc and trilinos

See #4891 for details

* Fix version conflict in trilinos package

Trilinos version 11 may conflict with superlu-dist.
The version "xsdk-0.2.0" was conflicting with superlu-dist,
even though it shouldn't.  I added a lower bound to the
comparison to fix this problem.

Thanks for the help @davydden!
2017-08-01 12:05:15 -05:00
Adam J. Stewart
82735deafd Clarify docs on using a hash in a spec (#4908) 2017-07-31 13:13:39 -07:00
scheibelp
69a6c8ef78 Fix preference for X.Y version when mixed with X.Y.Z versions (#4922)
For packages which contain a mix of versions with formats X.Y and
X.Y.Z, if the user entered an X.Y version as a preference in
packages.yaml, Spack would get confused and favor any version A.B.Z
where X=A and Y=B. In the case where there is a mix of these version
types, this commit updates preferences so Spack will favor an exact
match.
2017-07-31 13:11:08 -07:00
paulhopkins
1c7e5724d9 Add --color=[always|never|auto] argument; fix color when piping (#3013)
* Disable spec colorization when redirecting stdout and add command line flag to re-enable
* Add command line `--color` flag to control output colorization
* Add options to `llnl.util.tty.color` to allow color to be auto/always/never
* Add `Spec.cformat()` function to be used when `format()` should have auto-coloring
2017-07-31 12:57:47 -07:00
Adam J. Stewart
f3c70c235c Add latest version of SCons (#4929) 2017-07-31 19:57:56 +02:00
Axel Huebl
751f1d4fca ZeroMQ: C++ Headers (cppzmq) (#4841)
Adds the cppzmq library, adding a C++ API to ZeroMQ (libzmq). In order to find the autotools-build libzmq, this requires the upcoming cppzmq release (or development branch).
2017-07-31 19:54:06 +02:00
Adam J. Stewart
1f5ca90929 Add missing dependencies to unixodbc (#4928) 2017-07-31 19:44:33 +02:00
Adam J. Stewart
0aaab9bc8c Add latest version of expat (#4930) 2017-07-31 19:36:18 +02:00
Adam J. Stewart
a9efae271b Add latest version of apr (#4931) 2017-07-31 19:35:48 +02:00
George Hartzell
c126c5553c zsh: add variant that skips tcsetpgrp test (#4923)
zsh's configure script fails if there's it tries to test for terminal
functionality if there's not a terminal (e.g. in a Jenkins build).

The configure script has a switch that asserts that tcsetpgrp works
and thereby avoids running that test.

This commit adds a variant that invokes that switch, defaulting to
True.
2017-07-31 11:17:04 -05:00
Axel Huebl
6d97397ab0 gBenchmark: v1.2.0 (#4935)
Adds a the latest version of gBenchmark, release 1.2.0.

This is the first gBenchmark version with proper
[CMake config package installs](https://github.com/google/benchmark/issues/363).
This is important for dependencies building against it, such as gRPC.
2017-07-31 10:06:17 -05:00
Robert Pavel
f7c24289e5 Initial Spackage for qmd-progress library (#4924)
* Initial Spackage for qmd-progress library

PROGRESS is a library is focused on the development of general solvers
that are commonly used in quantum chemistry packages.

* Removed LA-CC from description to fix formatting

* Added Additional Formatting Requests

Added requested formatting changes and also ensured that graphlib and
mpi are disabled if not enabled
2017-07-28 17:10:24 -05:00
sknigh
92ea7c4337 Fix for m4%clang (#4912)
* Fix for m4%clang

* Restricted condition to not subsitute rtlib on OSX
2017-07-28 11:32:53 -05:00
Jon Rood
c5d2206206 Adding QWT package. (#4911)
* Adding QWT package.

* Using builtin file filtering.

* Formatting.
2017-07-27 16:22:29 -05:00
Christoph Junghans
78d7587c93 bml: fix homepage (#4918) 2017-07-27 16:07:47 -05:00
Akhil Reddy Patlolla
6bdc373100 Added Proxy App tag (#4917)
* Added Proxy App tag

*  NO changes except proxy app tag
2017-07-27 15:56:59 -05:00
pkondamudi
ce601a9304 New Package: lcals (#4792)
* New Pacakge: lcals

* added logic for arch detection and compiler choice.

* fixes for comments.

* addressed comments.

* removed LCALS_ARCH and added flags though spack.

* addressed comments.

* flake 8 fix.

* reerted the changes along with comments.
2017-07-27 14:24:28 -05:00
Jim Galarowicz
99cac0bf94 Fix for Krell openspeedshop spack package bug. New multi-value variant for GUI build. (#4880)
* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build.

* Fix issues with the cbtf-argonavis package.py files related to comments.

* Add changes for changing the krell packages from Package to CMakePackage.

* Add better changes for changing the krell packages from Package to CMakePackage.

* Add more modifications for changing the krell packages from Package to CMakePackage.

* Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros

* Fix new travis errors.

* Fix new travis errors.

* Add more changes for PR 4765.

* Add more refinements to the conversion from Package to CMakePackage.

* Fix new travis errors.

* Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop.

* Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue.

* Fix more flake issues caused by last changes.

* Fix a bug where openspeedshop will not build when no mpi variants are specified.  Also switch to a multiple level variant for building the gui(s).  Use none, qt3, and qt4 as the variants with qt3 being the default.

* Add fix for spack issue #4843, where LTDL include files were not found.

* Add the build_type variant back into the openspeedshop package file.
2017-07-27 11:06:44 -05:00
pkondamudi
31a329d237 New Package: RSbench (#4752)
* New Package: RSbench

* minor change

* removed tags as per PR# 4749

* addressed comments and added gcc compiler.

* added proxy app tags to description.

* removed setting CC to pgicc through spec.

* removed compiler as depedency

* removed pgi variant.

* flake 8 fix.

* added mpi depedency with pgi compiler

* added  pgi compiler

* removed PGI compiler as depedency.

* added tags and addressed other code formattings.

* added tags and addressed other code formattings.

* addressed comments.
2017-07-27 10:59:30 -05:00
Denis Davydov
ddc1dcd084 openblas: add 0.2.20 (#4915) 2017-07-27 08:51:39 -05:00
Audrey Thoma
70a089287e snptest: new package (#4900)
* snptest: new package

* fixed version things

* fixed install phase
2017-07-26 17:44:15 -05:00
Adam J. Stewart
b33f92da34 Improve version detection for URLs with dynamic after version (#4902) 2017-07-26 17:43:54 -05:00
Robert Pavel
6e99e2c58e Updated Namespace of BML Repository (#4910) 2017-07-26 17:42:26 -05:00
pkondamudi
4ab12fb503 added MPI dependency to Nekbone package (#4903)
* removed the tags as per comment in PR# 4749

* addressed above comments

* changed fortran compiler.

* added proxy application tags.

* added tags by removing them from description.

* addressed comments

* used join_path instead of path concat.

* removed the tags as per comment in PR# 4749

* addressed above comments

* changed fortran compiler.

* added proxy application tags.

* added tags by removing them from description.

* addressed comments

* used join_path instead of path concat.

* added tags.

* changes to use MPI as depedency.

* removed MPI as variant.

* changed pointer to filtered makenek file.

* flake 8 fix.
2017-07-26 14:27:29 -05:00
Audrey Thoma
b62f0962b0 shortstack: new package (#4905) 2017-07-26 10:14:55 -05:00
Adam J. Stewart
07aec4366f Add universal build_type variant to CMakePackage (#4797)
* Add universal build_type variant to CMakePackage
* Override build_type in some packages with different possible values
* Remove reference to no longer existent debug variant
* Update CBTF packages with new build_type variant
* Keep note on build size of LLVM
2017-07-25 16:34:43 -07:00
Sam Bateman
4b996e9f49 tmux should not set PKG_CONFIG_PATH (#4901)
* fixes #967

* Version bump to 0.9.1

- Bugfixes for spack find
- 0.9.1 can read specs from current develop.

* Don't assume spack is in the path when building docs.

* Remove PKG_CONFIG_PATH from tmux configure

* Change tmux to AutotoolsPackage

* Correct link to libtinfo in tmux
2017-07-25 17:08:34 -05:00
becker33
30f6d2ab90 fix callpath bug (#4659)
* fix callpath bug I found while testing env/cc

* fix hanging indent for flake
2017-07-25 13:51:56 -07:00
Audrey Thoma
6693dc1092 transdecoder: new package (#4895)
* transdecoder: new package

* fixed package structure
2017-07-25 15:51:14 -05:00
Audrey Thoma
402233ecc8 transposome: new package (#4896) 2017-07-25 15:50:42 -05:00
Audrey Thoma
668233a819 trimgalore: new package (#4899) 2017-07-25 15:50:23 -05:00
Gregory Lee
42717bd8e8 fix config.guess patch for ppc64le (#4858)
* fix config.guess patch for ppc64le

* explicit patch for config.guess not required
2017-07-25 13:44:51 -07:00
Audrey Thoma
71991cd9c9 cleaveland4: new package (#4894)
* cleaveland4: new package

* fixing return line in viennarna url_for_version
2017-07-25 13:18:34 -05:00
Audrey Thoma
20ab66a2e9 tabix: new package (#4886)
* tabix: new package

* fixed docs location
2017-07-25 13:02:08 -05:00
Audrey Thoma
5184dda309 sumaclust: new package (#4884)
* sumaclust: new package

* tweaking url and make specs
2017-07-25 08:04:25 -05:00
Jimmy Tang
1d1a0e3d63 Update zstd version (#4873)
* Update zstd version

* Change order of versions

* Use MakefilePackage
2017-07-25 07:55:02 -05:00
Jimmy Tang
2b792f943f Rename the gpu variant to cuda, this is to be consistent with other (#4890)
packages.
2017-07-25 07:53:33 -05:00
Denis Davydov
b0b86e5ffe fix GobjectIntrospection on Darwin (#4872)
* fix GobjectIntrospection on Darwin

* minor
2017-07-24 19:51:17 -05:00
Audrey Thoma
4237e5fffd stacks: new package (#4875) 2017-07-24 19:50:40 -05:00
Stas Sergienko
07e60bc26b added new version of jdk 8u141-b15 (#4876) 2017-07-24 19:50:16 -05:00
Audrey Thoma
d2f08c95d9 swarm: new package (#4885) 2017-07-24 19:49:59 -05:00
Audrey Thoma
8038945145 structure: new package (#4879)
* structure: new pacakge

* fixing package structure (not a pun)
2017-07-24 18:02:20 -05:00
Audrey Thoma
0c96c330ec subread: new package (#4882) 2017-07-24 18:01:56 -05:00
Stas Sergienko
9aa3749787 added new version of cdo (#4877) 2017-07-24 15:50:44 -05:00
Audrey Thoma
bd0699b026 stringtie: new package (#4878) 2017-07-24 15:50:32 -05:00
Adam J. Stewart
250ee413e9 Change Version formatting properties and functions to return Version objects (#4834)
* Change version.up_to() to return Version() object
* Add unit tests for Version.up_to()
* Fix packages that expected up_to() to return a string
* Ensure that up_to() preserves separator characters
* Use version indexing instead of up_to
* Make all Version formatting properties return Version objects
* Update docs
* Tests need to test string representation
2017-07-24 13:02:13 -07:00
Jimmy Tang
df2fc25ddf Add a py-theano version from git repo (#4871) 2017-07-24 08:56:54 -05:00
健美猫
8a06e3d867 Add cuda variant for mvapich2. (#4800)
* Add cuda variant for mvapich2.

* Disable cuda for mvapich2 by default.
2017-07-23 12:18:05 -05:00
Stephen McDowell
1cdb3c61ca fix sphinx dependencies, add v1.6.3 (#4870) 2017-07-23 09:44:12 -05:00
Milton Woods
4044e9f918 Perl - allow package activation without PERL5LIB variable (#4540)
* perl: prepend default perl @INC path to support package activation

* perl: remove stray comma from list of configure arguments

* perl: final comma in configure arguments makes adding arguments safer

This reverts commit fdc10cd611f525ebc31ca1953e048095b1c75350.

* perl: add comment about modified @INC (thanks to George Hartzell)

* perl: use self.prefix.lib and self.prefix.bin for clarity

* perl: convert tabs added by editor to spaces for flake8

* perl: use new path syntax: prefix.lib.perl5

* perl: avoid line break before binary operator

* perl: use compact spack syntax for perl executable
2017-07-23 09:41:45 -05:00
Axel Huebl
62b4087c09 gBenchmark: Development Package (#4847)
* gBenchmark: Development Package

Add the development version (master branch) of `gBenchmark`

* gBenchmark: Remove Duplicate

Remove duplicate `gbenchmark` library
and keep its patch to remove the shipped
-Werror
2017-07-23 09:35:16 -05:00
Todd Gamblin
f159246d1d Make testing spack commands simpler (#4868)
Adds SpackCommand class allowing Spack commands to be easily in Python

Example usage:

    from spack.main import SpackCommand
    info = SpackCommand('info')
    out, err = info('mpich')
    print(info.returncode)

This allows easier testing of Spack commands.

Also:
* Simplify command tests
* Simplify mocking in command tests.
* Simplify module command test
* Simplify python command test
* Simplify uninstall command test
* Simplify url command test
* SpackCommand uses more compatible output redirection
2017-07-22 21:27:54 -07:00
Kshitij Mehta
c07d93a3e5 Savanna (#4856)
Installing the stable version 0.5 through the checksummed tar.gz does not fetch the git submodule in the package.
The submodule appears as an empty directory.

Thus, clone the commit tagged as v0.5 using git to get around this issue

* savanna: modified adios dependency spec
* Replaced adios+staging with adios+flexpath+dataspaces
* savanna: Enabling fortran support in adios by default
* savanna: reverting to variant 'staging' for enabling all staging transports
2017-07-21 23:47:13 -07:00
Audrey Thoma
aa96e1671b sparta: new package (#4867)
* sparta: new package

* fixing homepage
2017-07-21 21:40:31 -05:00
jiseung
e191ead9ac new package: miniGMG (#4849)
* new package: miniGMG

* changed based on comments

* removed cuda version
2017-07-21 20:52:09 -05:00
Audrey Thoma
cd9742a30b revbayes: trying this again (#4861) 2017-07-21 20:51:39 -05:00
Audrey Thoma
b56add1517 sortmerna: new package (#4866) 2017-07-21 20:51:03 -05:00
Gregory Lee
644f5b3229 added new pruners-ninja version (#4859) 2017-07-21 17:57:12 -05:00
Michael Kuhn
37d6907382 lmdb: Update to 0.9.21 (#4830)
Convert to MakefilePackage and add pkg-config file.
2017-07-21 17:12:17 -05:00
Audrey Thoma
aa98e35e58 singularity: new package (#4852) 2017-07-21 15:36:03 -05:00
Audrey Thoma
4164c5d5e6 smalt: new package (#4853) 2017-07-21 15:35:47 -05:00
Audrey Thoma
469e77068f seqprep: new package (#4850) 2017-07-21 14:25:18 -05:00
Audrey Thoma
cf88490059 sickle: new package (#4851) 2017-07-21 14:25:02 -05:00
Axel Huebl
e864e3bb51 New Package: C-Ares (#4840)
Adds the c-ares library, a C library for asynchronous DNS requests.

Required for the google gRPC library.
2017-07-21 09:36:14 -05:00
Audrey Thoma
51ad3a622e salmon: new package (#4833) 2017-07-21 09:17:55 +02:00
Audrey Thoma
7afce8d8cc satsuma2: new package (#4838) 2017-07-21 08:58:20 +02:00
Milton Woods
7876262826 py-cdat-lite: ensure that RPATH includes netcdf (#4521) 2017-07-20 14:13:36 -05:00
Mark Olesen
0ea2c7904a add mesa +swrender variants (gallium software/off-screen rendering) (#4602)
- +swrender variant lets you compile an off-screen only version for
  software rendering on clusters.

- +swrender+llvm for using llvm for the software pipe

- added newer versions (17.1 and 13.0) and corrected the url location
  to use the canonical location.
2017-07-20 14:12:05 -05:00
Kshitij Mehta
31425974b4 GTKorvo (#4657)
* gtkorvo-atl: atl library from gtkorvo

* gtkorvo-dill: dill library from gtkorvo

* gtkorvo-cercs-env: cercs_env library from gtkorvo

* gtkorvo-enet: Enet networking library from gtkorvo

* libffs: FFS middleware communication library from GTKorvo

* libevpath: EVPath high performance communication library from GTKorvo

* gtkorvo-cercs-env: Added homepage and removed function configure_args

* gtkorvo-cercs-env: Re-add of accidental removal of cmake_args function in previous commit

* gtkorvo-enet: Removed configure_args since unused
2017-07-20 14:07:52 -05:00
pkondamudi
b39e6c6fd0 New Package: SNbone. (#4754)
* removed the tags as per comment in PR# 4749

* addressed above comments

* changed fortran compiler.

* added proxy application tags.

* added tags by removing them from description.

* addressed comments

* used join_path instead of path concat.

* addressed comments

* removed string formatting for LDFLAGS.
2017-07-20 13:26:31 -05:00
Jim Galarowicz
5173a8bef9 Spack updates to three Krell packages (#4765)
* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build.

* Fix issues with the cbtf-argonavis package.py files related to comments.

* Add changes for changing the krell packages from Package to CMakePackage.

* Add better changes for changing the krell packages from Package to CMakePackage.

* Add more modifications for changing the krell packages from Package to CMakePackage.

* Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros

* Fix new travis errors.

* Fix new travis errors.

* Add more changes for PR 4765.

* Add more refinements to the conversion from Package to CMakePackage.

* Fix new travis errors.

* Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop.

* Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue.

* Fix more flake issues caused by last changes.
2017-07-20 13:25:57 -05:00
Audrey Thoma
5f0e1514ac kentutils: new pacakge (#4831) 2017-07-20 13:16:32 -05:00
jiseung
16fbd0fc41 new package:SNAP (#4826) 2017-07-20 13:15:43 -05:00
becker33
f962aba6ce Allow packages to control handling of compiler flags (#4421)
* Initial work on flag trapping using functions called <flag>_handler and default_flag_handler

* Update packages so they do not obliterate flags

* Added append to EnvironmentModifications class

* changed EnvironmentModifications to have append_flags method

* changed flag_val to be a tuple

* Increased test coverage

* added documentation of flag handling
2017-07-19 20:12:00 -07:00
George Hartzell
acca75b368 Add info for zsh@5.3.1 (#4827) 2017-07-19 21:49:15 -05:00
pkondamudi
9df9a809a8 Add MPI support and tags to embs package (#4824) 2017-07-19 19:04:48 -05:00
pkondamudi
bdcd63ed70 Add tags to nekbone package (#4825) 2017-07-19 19:03:53 -05:00
jiseung
9ae36849af new package: cns-nospec (#4806)
* new package: cns-nospec

* made changes as suggested and added proxy-app tag

* updated edit()

* adjusted logic for '+debug'
2017-07-19 17:05:19 -05:00
jiseung
301b457de3 new package: amr-exp-parabolic (#4821)
* new package: amr-exp-parabolic

* removed boilerplate and added tag
2017-07-19 17:04:53 -05:00
pkondamudi
1b0d2888bb Package/xsbench (#4822)
* removed the tags as per comment in PR# 4749

* addressed above comments

* changed fortran compiler.

* added proxy application tags.

* added tags by removing them from description.

* addressed comments

* used join_path instead of path concat.

* added tags and other minor changes.

* removed tags from description.
2017-07-19 17:04:17 -05:00
jiseung
60cffbb9d0 new package PENNANT added (#4708)
* new package PENNANT

* made adjustments based on comments

* edited logic for mpi variant

* replaced with 'else'

* prefix.bin instead of 'bin'
2017-07-19 08:50:53 -05:00
Akhil Reddy Patlolla
a6cac6ac99 Added Proxy App CoSP2 (#4726)
*  Added Proxy App CoSP2

*  Updated the PATH

* Updated MPI Fix

*  Fixed Issues

*  Fixed Issues with compiler and Flake8

*  Enhanced block of code.

*  Intended
2017-07-19 08:49:29 -05:00
Akhil Reddy Patlolla
7165129598 Added Proxy App CoHMM (#4727)
*  Added Proxy App CoSP2

*  Added Proxy App CoHMM

*  Updated PATH cohmm

*  Chages Fixing Minor issues

* Minor Fix  git add cohmm/package.py

*  Updated

* Resolved TAG Conflict

*  Updated based on the codecov failure
2017-07-19 08:48:41 -05:00
jiseung
e3e8893ed9 new package: CLAMR (#4728)
* new package: CLAMR

* changed from bool variants to single value variants and corresponding logic in build_type and cmake_args

* lowercase variant values

* updated conditionals for variants

* adjusted url and docstring
2017-07-19 08:48:03 -05:00
pkondamudi
45a7e8bb12 New Package: SimpleMOC (#4742)
* New Package SimpleMOC

* addressed comments

* removed tags as per PR# 4749

* flake8 fix.

* travis fix.

* added proxy app tags to description.

* added mpi and openmpi depedency.

* removed openmpi depdedency.

* addressed comments.

* adding openmp flag conditionally.

* flake 8 fix for tabs.
2017-07-19 08:46:42 -05:00
Kshitij Mehta
6e2eb83943 codar-cheetah: URL fix (#4815) 2017-07-18 22:49:51 -05:00
Adam J. Stewart
5fc0243d35 Improve version detection of release versions (#4816) 2017-07-18 22:48:39 -05:00
jiseung
d1c199e15d new package: SMC (#4817)
* new package: SMC

* removed template and added proxy-app tag

* added comp variant in edit()

* edited comp variant in edit()
2017-07-18 22:48:21 -05:00
Gregory Lee
b411849200 Misc python updates (#4807)
* updated py-pylint version

* setuptools required at runtime for pkg_resources

* fixed url for updated pylint
2017-07-18 19:37:40 -05:00
Adam J. Stewart
2bd8d7a36a Always install xproto in serial (#4809) 2017-07-18 19:37:12 -05:00
Audrey Thoma
e2485efb94 poamsa: new package (#4808)
* poamsa: new package

* fixed version specs
2017-07-18 19:36:48 -05:00
jiseung
78c11320d6 new package to be added: NuT (#4760)
* new package to be added: NuT

* removed cmake_args() and made other changes as suggested

* Added setup_environment()

* PEP8 compliant

* edited version name, build_targets, and files/directories to install

* corrected executable directory

* compiler dependencies based on version
2017-07-18 16:37:47 -05:00
Audrey Thoma
748221840a price: new package (#4810) 2017-07-18 16:35:33 -05:00
Audrey Thoma
3e72263d79 New package busco (#4678)
* busco: new package

* busco: fixing fussy paths

* removing paths, probably was a problem with our module setup

* fixed dep type
2017-07-18 13:49:18 -05:00
Jon Rood
904f6f0572 Adding a bit more Mellanox MXM capability to OpenMPI. (#4762) 2017-07-18 13:45:43 -05:00
Audrey Thoma
0e28afef1e raxml: new package (#4777)
* raxml: new package

* changed compiler variable

* removing if statement regarding intel compiler
2017-07-18 13:43:42 -05:00
homerdin
68a8f63569 Package/minimd (#4788)
* New Package: miniMD

* Minor Changes

* Corrected Dependency

* Renamed Executable

* Change to use build directory directly
2017-07-18 13:42:57 -05:00
pkondamudi
e291f59ea3 New Package: OpenMC (#4790)
* New Package: OpenMC

* comments addressed.

* comments addressed.

* changed 'os.makedirs' to 'mkdirp'

* flake 8 fix.
2017-07-18 13:42:11 -05:00
becker33
d2a63d55fa Open ended variants (#4746)
* Change directives to allow open-ended variants more easily

* make None default to open-ended
2017-07-18 10:03:15 -07:00
Adam J. Stewart
1215c3b20c Change path to CMakeLists.txt to be relative to root, not pwd (#4420)
* Change path to CMakeLists.txt to be relative to root, not pwd

* Changes requested during code review

* Revert back to old naming of root_cmakelists_dir
* Make relative directory more clear in docs

* Revert change causing build_type AttributeError

* Fix forgotten abs_path var

* Update CLHEP with new relative path

* Update more packages with new root_cmakelists_dir syntax
2017-07-18 09:58:19 -07:00
Massimiliano Culpo
5a1ee22575 package: removed default no-op patch (#4103)
* package: removed default no-op patch fixes #4085

* do_patch: handles NoSuchMethodError nicely
2017-07-18 09:53:35 -07:00
健美猫
6b2d75a0a6 Repalce ftp:// with http:// for gdbm, mesa-glu and udunits2. (#4798) 2017-07-18 11:22:14 -05:00
George Hartzell
c597bdb284 somatic-sniper depends_in('curses') (#4796)
somatic-sniper installs its own copy of samtools, which needs curses.
I'm not sure why I didn't stumble on this in my dev environment, but I
just stumbled over it in a standalone build.
2017-07-18 09:40:41 -05:00
健美猫
870062076f Add version 3.4.1 for r. (#4799) 2017-07-18 13:04:49 +02:00
Audrey Thoma
07d82422b8 pcma: new package (#4793) 2017-07-18 11:13:17 +02:00
Adam Fidel
da61455cc3 New Package: tig (#4794) 2017-07-18 11:10:39 +02:00
homerdin
7c1ce6e206 Package/minixyce (#4789)
* New Package: miniXyce

* Removed Tag
2017-07-17 15:50:31 -05:00
Audrey Thoma
9872fe980b partitionfidner: new package (#4791) 2017-07-17 15:49:26 -05:00
Massimiliano Culpo
6dcbc30a2c qhull: fix to work around a known issue of the library with intel compiler (#4648) 2017-07-17 14:39:09 -05:00
Audrey Thoma
2bf140601b bsseeker2: new package (#4770) 2017-07-17 19:02:17 +02:00
Kshitij Mehta
9c9f0c9612 codar-cheetah: Experimentation harness from the ECP CODAR project (#4658)
* codar-cheetah: Experimentation harness from the ECP CODAR project

* codar-cheetah: conforming to flake8
2017-07-17 09:33:57 -05:00
Audrey Thoma
990d60d340 mrbayes: new package (#4757)
* mrbayes: new package

* fixing beagle version

* fixing typos

* fixing libbeagle dependency types
2017-07-17 09:20:49 -05:00
homerdin
62f5eafc55 New Package: miniSMAC2D (#4767) 2017-07-17 09:15:15 -05:00
homerdin
f43e4890db Package/minighost (#4773)
* New Package: miniGhost

* Fixed empty string formatting
2017-07-17 09:13:46 -05:00
Axel Huebl
c110d03f95 ZeroMQ: 4.2.2 & develop (#4785)
The 4.X branches are now on the homepage, so we take the GitHub release
artifact (careful: take their upload, not the automatic tarball).

Adds a development version of ZeroMQ.
Requires a autogen run, as for all their unreleased versions,
and the pkg-config fix in #4736
2017-07-17 08:40:48 -05:00
Axel Huebl
febf41e0e2 pkg-config: aclocal env (#4736)
Always sets the `pkg-config` environment hint for
autotools.

Required dependency for `autoreconf` of ZeroMQ when
build from source (e.g. v4.2.2) via autotools in `autogen.sh`
step for `autoreconf`.
2017-07-17 08:40:22 -05:00
Audrey Thoma
7e32756fce orfm: new package (#4769) 2017-07-15 19:03:55 +02:00
George Hartzell
89ef576ba4 Add package for the Python regex library (#4771)
Lightly tested on CentOS 7 with `python@2.7.13` and `python@3.6.0`.
2017-07-15 18:11:54 +02:00
George Hartzell
ad2a22fa01 Add package for r-ada, update r-rpart version (#4772)
* Add package for r-ada, update r-rpart version

Adds a package for r-ada.

Update the version for r-rpart because the previous version is
no longer at that URL.  The previous version *is* in the Archive,
but list_url does not seem to be able to find it.

* Clean up FIXMEs (blush)
2017-07-15 18:08:36 +02:00
George Hartzell
8e6d7f117a Add package for MuSE (#4779) 2017-07-15 18:06:43 +02:00
George Hartzell
8bd22c3294 Add package for Somatic Sniper (#4778)
Lightly tested on CentOS 7.
2017-07-15 18:05:51 +02:00
homerdin
246c07f864 New Package: miniFE (#4712)
* New Package: miniFE

* Removed extra property, using variant value directly
2017-07-14 15:55:51 -05:00
Kshitij Mehta
31503cb058 Savanna (#4713)
* savanna: Runtime framework for online workflow management from the ECP CODAR project

* savanna: added version 0.5

* savanna: Copying the package contents to prefix as part of installation

* savanna: Doing submodules=true for git checkout of develop version

* savanna: removed dependency on adios@develop. depends on adios

* Savanna: Converted package to MakefilePackage
2017-07-14 15:54:57 -05:00
homerdin
f5f37845d6 New Package: Pathfinder (#4714)
* New Package: Pathfinder

* Added index for String format

* Changed to make Makefile edit more specific

* Make Flake8 Happy

* Removed unneeded conversion
2017-07-14 15:54:31 -05:00
George Hartzell
88cb8b493b Add package for freebayes (#4718)
* Add package for freebayes

* Don't include url, must use git info.

* Fix flake8 complaints
2017-07-14 15:49:46 -05:00
George Hartzell
ea8c05b263 Add package for Sniffles (#4719)
* Add package for Sniffles

* Wire up a manual install step

The cmake infra doesn't install anything, so do it by hand.

The binaries land in a location that embeds the version...
2017-07-14 15:49:02 -05:00
Audrey Thoma
1e205c09d8 hybpiper: new package (#4720)
* hybpiper: new package and spades dependency

* hybpiper: making flkae8 happy

* hybpiper: fixing dependency errors

* fixing python dep type

* removing cmake from spade dependencies
2017-07-14 15:48:30 -05:00
homerdin
c78ee4a733 Package/cloverleaf (#4759)
* New Package: CloverLeaf

* Removed Tag and Added Documentation

* Corrected Dependencies and Variant Values
2017-07-14 15:46:20 -05:00
pkondamudi
76d95b1798 New Package: Nekbone. (#4748) 2017-07-14 19:40:18 +02:00
pkondamudi
b3692d14fd New Package: EBMS (#4749) 2017-07-14 19:37:52 +02:00
Axel Huebl
0d8b126d66 libwebsockets: new versions (#4764)
* libwebsockets: new versions

both new versions fix a nasty bug leading to a hanging
connection on connect.

* ISAAC Server: Fix libwebsockets

ISAAC server did hang in docker containers due to a bug
in libwebsockets.
2017-07-14 10:28:15 -05:00
Denis Davydov
d929ea8102 slepc: fix download url (#4763) 2017-07-14 08:00:28 -05:00
pkondamudi
dfd56da358 New Package:XSBench (#4751)
* New Package:XSBench

* minor changes

* replaced extend() with append()

* addressed comment.

* removed tags as per PR# 4749
2017-07-13 22:21:30 -05:00
Patrick Gartung
f63cdc7b61 Add two python packages for editing mach-O headers. (#4725)
* Add two python packages for editing mach-O headers. Much faster than calling otool and install_name_tool directly

* remove non-overriding function

* autopep8
2017-07-13 22:07:22 -05:00
Audrey Thoma
3eedbd7c4e py-deeptools: new package and dependencies (#4717)
* py-deeptools: new package and dependencies

* py-deeptools: fixing python things

* missed a fix
2017-07-13 22:02:08 -05:00
Alen Kansakar
29fd896179 jags: Adding atlas as it depends on atlas 2017-07-13 09:48:30 -05:00
homerdin
34aea1328a New Package: CloverLeaf3D (#4705)
* New Package: CloverLeaf3D

* Fixed Flake8 Mistake

* Removed unnecessary check
2017-07-13 09:22:45 -05:00
Audrey Thoma
d68aa03868 graphmap: new package (#4707) 2017-07-13 09:21:37 -05:00
Jon Rood
47fe9e7aad Adding OpenMP variant to Trilinos. Also building NetCDF with PNetCDF directly, for Trilinos. (#4687)
* Adding OpenMP variant to Trilinos. Also building NetCDF with PNetCDF in Trilinos when necessary.

* Adding runtime error for PNetCDF variant in Trilinos when necessary. Omitting unnecessary openmp variant for Trilinos in Nalu.

* Changing variant checks to conflicts statements.

* Adding comments to Trilinos package.
2017-07-13 09:14:15 -05:00
Audrey Thoma
bde58a319b idba: new package (#4722) 2017-07-13 08:35:22 -05:00
Audrey Thoma
c104fa233a infernal: new package (#4724) 2017-07-13 08:32:55 -05:00
Audrey Thoma
4cbe1b338f last: new package (#4729) 2017-07-13 08:26:17 -05:00
Audrey Thoma
e257ea59c2 maverick: new package (#4731) 2017-07-13 08:09:23 -05:00
George Hartzell
adcaa82b88 Add package for daligner (#4734) 2017-07-13 08:08:36 -05:00
Audrey Thoma
c7af89d8fc mcl: new package (#4732) 2017-07-13 08:03:26 -05:00
Denis Davydov
92e6616a8a dealii: workaround for concretization bug (#4735)
* dealii: workaround for concretization bug

* trilinos: add Anasazi which got disabled recently
2017-07-13 07:51:45 -05:00
Audrey Thoma
1ecb389dcb mitofates: new package and dependency libsvm (#4741) 2017-07-13 07:44:44 -05:00
Akhil Reddy Patlolla
5ac2020c98 Added ASPA Proxy App (#4743) 2017-07-13 07:30:01 -05:00
Alen Kansakar
6ce33d7773 Jags: Changing depends on to only include lapack 2017-07-12 14:52:54 -05:00
Alen Kansakar
d930c8d01a Jags: Fixing problems found by flack8 2017-07-12 11:39:08 -05:00
kansakar
8873fc3a20 Jags: Adding jags defination 2017-07-12 11:39:07 -05:00
Christoph Junghans
a95f40f18e hpx: added new package (#4709) 2017-07-12 07:54:27 +02:00
George Hartzell
ff906faf9a Typo: submdoules -> submodules (#4716) 2017-07-12 07:48:31 +02:00
Audrey Thoma
3566966d47 genometools: new package (#4706)
* genometools: new package

* genometools: fixing perl dependency type
2017-07-11 07:49:00 -05:00
Audrey Thoma
143d50ab67 fseq: new package (#4702)
* fseq: new package

* fseq: fixed dependency type
2017-07-10 18:30:24 -05:00
homerdin
5bad9dfeac New Package: MiniAMR (#4701)
* New Package: MiniAMR

* Removed empty braces string formatting
2017-07-10 18:30:08 -05:00
homerdin
45e731d574 New Package: HPCCG (#4693)
* New Package: HPCCG

* Moved Run Script Install Location
2017-07-10 12:31:41 -05:00
homerdin
c908ccecdc New Package: MiniAero (#4694) 2017-07-10 12:31:23 -05:00
Audrey Thoma
02258056fd exabayes: new pacakge (#4695)
* exabayes: new pacakge

* exabayes: added configure arg

* exabayes: adding comments regarding compilers
2017-07-10 12:29:59 -05:00
Audrey Thoma
1f9d6927b7 csdp: new pacakge (#4700) 2017-07-10 12:28:51 -05:00
Audrey Thoma
c80bca00ff ea-utils: new package (#4690)
* ea-utils: new package

* ea-utils: simplifying self.spec.prefix

* ea-utils: added comment about perl

* ea-utils: fixing flake8 error
2017-07-10 12:26:03 -05:00
EmreAtes
1abf31d3fa New package: CoMD (#4697)
* New package: comd

* Avoid re-defining build
2017-07-09 09:05:11 -05:00
Mike DePaulo
72aa99cb24 GCC: Add strip variant to reduce installation size (#4670)
* gcc: Add strip variant

* gcc: Fix strip variant description being too long
2017-07-07 22:17:52 -05:00
George Hartzell
efecefd4dd Add a package for tophat (#4698)
Lightly tested on CentOS 7.
2017-07-07 22:15:38 -05:00
Audrey Thoma
56b959501a fastx-toolkit: solving gcc conflict (#4696) 2017-07-07 16:53:15 -05:00
Christoph Junghans
1886b0b370 New package: quinoa (#4686) 2017-07-07 11:11:53 +02:00
homerdin
60a8b68a7e Added TeaLeaf Package (#4683) 2017-07-07 10:54:34 +02:00
Axel Huebl
46e3c2b274 Isaac Server 1.3.1: New version (#4689)
adds a new release of isaac-server.
2017-07-07 10:51:09 +02:00
Audrey Thoma
d64405a30f emboss: new package (#4691) 2017-07-07 10:47:26 +02:00
Axel Huebl
396e76eb7c New Packages: gearshifft, clFFT (#4560)
Adds the `gearshifft` package, a benchmark suite for heterogeneous implementations of FFTs.
Adds clFFT, a software library containing FFT functions written in OpenCL.

see: https://github.com/clMathLibraries/clFFT
2017-07-07 10:46:35 +02:00
Gregory Lee
28cb1e4379 patch config.guess after autoreconf step (#4604) 2017-07-06 23:07:54 -05:00
Audrey Thoma
e003e2f78b cap3: new package (#4680)
* cap3: new package

* cap3: removing boilerplate

* cap3: fixed version and added doc
2017-07-06 13:34:40 -05:00
George Hartzell
8fe51b3ffc Make vcftools actually install its libraries (#4682)
The vcftools package was installing its Perl libraries into a
directory in the staging directory named 'lib', instead of installing
them into `prefix.lib` where they should have been because the value
passed to the configure script was wrong.

The result was that any attempt to run one of the scripts in the
package failed with something like:

> Can't locate VcfStats.pm in @INC (you may need to install the
> VcfStats module) [...]

This fix provides the correct information in `configure_args`.

Tested lightly on CentOS 7.
2017-07-06 13:33:57 -05:00
Axel Huebl
b749986dcc Isaac 1.3.1: New version (#4685)
adds a new release of isaac.
(1.3.0 forgot to bump the internal version number
in include macros)
2017-07-06 13:23:11 -05:00
Audrey Thoma
c3d0911cf6 cdbfasta: new package (#4681) 2017-07-06 17:10:25 +02:00
Audrey Thoma
df99fb4980 New package butter (#4679)
* butter: new package

* butter: fixed dependency type
2017-07-05 19:33:43 -05:00
Audrey Thoma
4beb76daf6 New package bucky (#4677) 2017-07-05 21:09:01 +02:00
Pramod S Kumbhar
bf195cd8b9 Fix for building osu-micro-benchmarks on OS X (librt not avaialble/required) (#4675)
* Fix for building osu-micro-benchmarks on OS X (librt not available/required)

* Fixed typo and replaced extend by append
2017-07-05 13:31:26 -05:00
Audrey Thoma
09681f721d Package ampliconnoise (#4676)
* ampliconnoise: new package

* ampliconnoise: fixed installation

* ampliconnoise: fixing install again
2017-07-05 13:30:40 -05:00
Massimiliano Culpo
f403117f71 libint: factored parts of configure_args into their own functions (#4211)
* libint: factored parts of configure_args into their own functions

* libint: added -xSSE2, as suggested by @lee218llnl
2017-07-05 09:19:39 -05:00
Michael Kuhn
e3bd6e3d93 gcc: Add version 6.4.0 (#4673) 2017-07-05 15:44:07 +02:00
Philip Davis
58915e6e7f New package: DataSpaces (#4651)
* Dataspaces spack package, hard-wired for ubuntu VM

* Initial commit of dataspaces spack package

* Made changes and additions necessary to install on Cori and Titan

* Added temp 1.6.2.1 for testing

* Updated tar file for 1.6.2

* Fixed formatting

* Set the type of build dependencies

* Changed the way autogen.sh is called for compatibility

* Use append instead of extend to add configure flags

* Various syntax fixes

* Switched string checking to method for compatibility
Now using the six library for Python 3 compatibility. Thanks @adamjstewart

* Made MPI variant default
2017-07-04 13:56:33 -05:00
Todd Gamblin
b4d1654e68 Parametrized lock test and make it work with MPI
- Lock test can be run either as a node-local test or as an MPI test.

- Lock test is now parametrized by filesystem, so you can test the
  locking capabilities of your NFS, Lustre, or GPFS filesystem.  See docs
  for details.
2017-07-04 11:41:37 -07:00
Todd Gamblin
bd7a591df1 Make filesytem more resilient to concurrent updates.
- Uses O_CREAT for touch (for guaranteed atomic open on NFS, multi-node)
- Ignore concurrent create errors in mkdirp
2017-07-04 11:41:37 -07:00
Todd Gamblin
326e2f7f66 Ported lock test to pytest. 2017-07-04 11:41:37 -07:00
Kshitij Mehta
81d696cc66 mpix-launch-swift: MPIX_Launch library tailored to work using swift-t (#4656) 2017-07-03 18:10:06 -07:00
Mark Olesen
f49f7b5bc5 add openfoam community packages for adiosWrite (#3726) 2017-07-03 18:00:59 -05:00
Mark Olesen
76b9563dc3 new OpenFOAM June 2017 release: OpenFOAM-v1706 (#4652)
- renamed develop version from 'plus' to 'develop'

- patches now prefixed by corresponding OpenFOAM version number.
  This makes it easier to sort and see what old/junk exists.

- remove MPI_BUFFER_SIZEk env variable (for all openfoam variants).
  The OpenFOAM shell setup addresses this and there is no reason
  to pollute the module environment at this stage.
2017-07-03 17:54:50 -05:00
Levi Baber
245eee7a56 sabre (#4619)
* sabre initial commit, works but test does not

* removing test until I have time to fix it

* sabre: fixing flake8 errors

* sabre: changing to MakefilePackage
2017-07-02 08:31:17 -05:00
Jimmy Tang
f6e2320ef0 Apply patch to allow users to change path of lock file (#4649)
See - https://github.com/Microsoft/CNTK/issues/62
2017-07-02 08:26:23 -05:00
Barry Smith
182554520f PETSc requires metis build with compatible numerical precision (#4654)
Commit-type: bug-fix, portability-fix
Funded-by: IDEAS
Project: xSDK
Time: .4 hours
Reported-by: Stanislav Y Sergienko <ssergien@anl.gov>
2017-07-02 08:09:05 -05:00
Andrey Prokopenko
77527ce1ae Trilinos: add ForTrilinos resource (#4660) 2017-07-02 08:05:47 -05:00
Michael Kuhn
a88e93852d antlr: Use official sources (#4662)
The tarball used until now is not available anymore.
2017-07-02 08:05:09 -05:00
Michael Kuhn
51ee9a1a6b Update go and go-bootstrap (#4664)
* go-bootstrap: Update to 1.4-bootstrap-20170531

Clean up empty patch method.

* go: Update to 1.8.3
2017-07-02 08:02:27 -05:00
Michael Kuhn
a3765d8a23 shared-mime-info: Depend on pkg-config (#4663) 2017-07-01 12:12:29 -05:00
Michael Kuhn
a9c83d64f0 qt: Update to 5.9.1 (#4661)
5.9.0 fails to build with disabled OpenGL.
2017-07-01 09:16:49 -05:00
Adam Moody
4dc79f9efb mpifileutils: update to v0.7 (#4642)
* mpifileutils: update to v0.7

* mpifileutils: disable --enable-experimental in v0.6 and earlier

* mpifileutils: list newest version first, avoid experimental switch unless at v0.7 or later
2017-06-30 11:53:47 -05:00
Michael Kuhn
2e6a735b00 mvapich2: Fix mpifort wrapper (#4650) 2017-06-30 11:51:07 -05:00
Mark Olesen
cabcfb032f update libdrm version (fixes #4645) (#4646) 2017-06-30 06:48:43 -05:00
Adam J. Stewart
9933d759ac Update hdfgroup packages to new URL structure (#4643)
* Update hdfgroup packages to new URL structure

* Update docs now that HDF5 URL isn't that complicated
2017-06-29 21:38:47 -05:00
George Hartzell
35488e04a0 Helper script support JAVA_{ARGS,OPTS} (#4640)
Make it possible to pass addition arguments to the
JVM.

Apparently there are two vars and they are [commonly *both* used][1].

Go figure.

[1]: https://stackoverflow.com/questions/23507639/is-it-same-mean-java-args-and-java-opts
2017-06-29 15:38:12 -05:00
Douglas Duckworth
7d59197b7b added numpy 1.13 - modified albacore to use 1.13 (#4639)
* albacore 1.24 requires numpy 1.13 - added numpy 1.13

* added numpy 1.13
2017-06-29 13:42:56 -05:00
George Hartzell
c416983e5f Add package for lftp (#4634)
* Add package for lftp

* Avoid expensive list processing
2017-06-29 09:27:18 -05:00
Douglas Duckworth
bdb859f1e1 added albacore 1.2.4 (#4637) 2017-06-29 06:42:43 -05:00
Thierry
dd4fa07de9 make yorick extendable. See plugins on D Munro github. (#4631) 2017-06-28 14:14:24 -05:00
Audrey Thoma
d354289b9c New package allpaths-lg (#4632)
* allpathslg: adding package. compiler specs iffy, will fix

* allpaths-lg: adding new package

* allpaths-lg: fixing conflicts
2017-06-28 14:14:12 -05:00
Darach Golden
6550aeeafc Requested changes related to mumps compilation (#4614)
*  * add mpii* wrappers for use with intel compilers

 * in mumps package, scotch is compiled without metis option when
   ptscotch variant is selected. This removes confusion over which
   metis.h to use

 * for intel mkl, add SPACK_COMPILER_EXTRA_RPATHS ending in 'intel64'

 * scotch lib requires libz when compression is turned on.  This
   caused a link issue on some Ubuntu distributions (not
   redhat). Change Scotch package to add -lz when needed

*  * intel-mkl append to SPACK_COMPILER_EXTRA_RPATHS rather than setting

 * use more concise method to obtain libz libraries for scotch

* remove changes to intel mpi

* remove commented out depends_on

* fix flake8 errors
2017-06-28 13:22:18 -05:00
Mark Olesen
e5c665600c new package for KaHIP (#4613) 2017-06-28 13:15:43 -05:00
EmreAtes
898c7f8838 add mpi to providers to remove virtual package error (#4608) 2017-06-28 12:24:29 -05:00
Kyle Fernandes, né Jacobs
cd1322b2c9 Update intel-parallel-studio and intel packages (#4628) 2017-06-28 11:32:25 -05:00
George Hartzell
00ec64150e Add package for primer3 (#4615)
* Add package for primer3

Built and mildly tested on CentOS 7.

* Convert to MakefilePackage

I always forget about this...

* Set build_directory the easy way

Life's not always complicated.  Don't go out of my way
to make it so....

* Fix Flake8 issue
2017-06-28 10:48:21 -05:00
George Hartzell
d24e4e311a Add package for muscle (#4616)
* Add package for muscle

Minimally tested on CentOS7.

* Convert to MakefilePackage

Do it the easy way...
2017-06-28 10:47:48 -05:00
Audrey Thoma
e98662959e beast2: adding new package beast2 (#4617) 2017-06-28 10:17:45 -05:00
George Hartzell
6ff7dde9a5 Add package for ngmlr (#4618)
Minimally tested on CentOS 7.
2017-06-28 10:17:17 -05:00
Audrey Thoma
6480e38217 angsd: adding package angsd (#4620) 2017-06-28 10:15:00 -05:00
Christoph Junghans
ddb0704028 pegtl: version bump (#4621)
* pegtl: version bump

* pegtl: added 2.1.4

* pegtl: reorder versions

* pegtl: fix flake8
2017-06-28 10:13:49 -05:00
Jon Rood
158f99f9ad Return an error exit code if spack cd does not succeed. (#4623)
* Return an error exit code if spack cd does not succeed.

* Reducing amount of return statements in spack cd exit code.
2017-06-28 06:41:04 -05:00
Christoph Junghans
8f9f0ab8ec vpic: new package (#4624) 2017-06-28 06:35:55 -05:00
becker33
b1861b29ef Added install option to read spec from file (#4611) 2017-06-27 12:27:16 -07:00
Douglas Duckworth
7b0d295a4c Added STAR-Fusion (#4380)
* added perl-star-fusion and perl-intervaltree

* added perl-star-fusion and all dependencies

* changes

* made changes as requested to perl-star-fusion dependencies

* changed perl-intervaltree dependency

* changes to star fusion

* now using perl properly
2017-06-27 13:53:58 -05:00
serbanmaerean
77218b1c8d Fix xl/trilinos (#4607)
* Added magma package

* Incorporated Serban's change

* fix-xl/trilinos: add -qfixed to Fortran flags in seacas package

* fix-xl/trilinos: fixed spack flake8 errors
2017-06-27 06:40:38 -05:00
Mark Olesen
051d15f777 BUG: inconsistent -fPIC causes adios/mxml linkage problem (fix #4605) (#4606)
- Thanks to pointer from @adamjstewart - can avoid this either by
  avoiding an external mxml dependency, or by making certain that they
  both use consistent code generation.

  The adios package uses '-fPIC' for python linkage and this seems to
  require the same for mxml too. If the adios-internal version of mxml
  is used, it has the same flags for both.
2017-06-27 06:34:52 -05:00
Douglas Duckworth
351f0e2e16 added py-multiqc and dependencies (#4381)
* added py-multiqc and dependencies

* added requested changes per #4381

* added colormath dependency per https://github.com/jsvine/spectra/blob/master/requirements.txt

* py-multiqc changes

* py-multiqc does not need colormath - spectra does
2017-06-26 16:05:15 -05:00
Lynn Garren
575ee41413 update for clhep (#4588)
* adding clhep 2.3.4.4, etc and modernizing package.py

* add remaining 2.3.x.y clhep releases

* setting list_depth to 1 is sufficient

* remove whitespace
2017-06-26 16:04:36 -05:00
Mark Olesen
767cdf98d3 Cleanup some depends_on flex for scotch and things depending on scotch (#4600) (#4601)
- The buggy flex-2.6.2 was blacklisted in the corresponding flex
  package, but now also removed the md5sum to avoid suggesting that
  this version should be revived.
  The 2.6.3 has similar problems (at least for scotch), but 2.6.4
  seems to work.

- Rejig flex restriction for scotch to exclude 2.6.2-2.6.3 only. Since
  flex-2.6.4 appears to be okay again, we can remove the flex version
  restriction that trickled through into the openfoam packages as a
  consequent of an spack spec bug.

- Make flex a build dependency for the openfoam packages
  (seems to have been an earlier oversight).
2017-06-26 09:58:02 -05:00
Adam J. Stewart
ad1382e664 Don't immediately raise an error when an editor is not found (#4587)
* Don't immediately raise an error when an editor is not found
* If no editor is found, raise an error only if we try to use it.
2017-06-25 20:42:38 -07:00
Michael Kuhn
1d82ccd25c Update libbson and libmongoc to 1.6.3 (#4599) 2017-06-25 07:09:47 -05:00
Adam J. Stewart
e5ce7b1639 Allow arbitrary Prefix attributes (#4591)
* Allow arbitrary Prefix attributes
* Test attribute type as well

* Flake8 fixes

* Remove __new__ method

* Fewer uses of join_path in the docs
2017-06-24 22:39:31 -07:00
Todd Gamblin
cac4362f64 Make LICENSE recognizable by GitHub. (#4598) 2017-06-24 22:22:55 -07:00
Christoph Junghans
add971e416 votca-xtp: new package (#4597) 2017-06-24 22:34:15 -05:00
Rajeev Jain
e8f60629fc Add cgm to moab, for resolving conflicts installing MeshKit on a brand new machine. (#4596)
Use spack install meshkit ^cgm+oce, for geometry engine support, by default cgm is facet-based
2017-06-24 15:34:14 -05:00
Massimiliano Culpo
b7ca7274b8 mv variants: packages are now needed only during normalization (#4129)
* mv variants: packages are now needed only during normalization

The relationship among different types of variants have been weakened,
in the sense that now it is permitted to compare MV, SV and BV among
each other. The mechanism that permits this is an implicit conversion
of the variant passed as argument to the type of the variant asking
to execute a constrain, satisfies, etc. operation.

* asbtract variant: added a new type of variant

An abstract variant is like a multi valued variant, but behaves
differently on "satisfies" requests, because it will reply "True"
to requests that **it could** satisfy eventually.

Tests have been modified to reflect the fact that abstract variants
are now what get parsed from expressions like `foo=bar` given by users.

* Removed 'concrete=' and 'normal=' kwargs from Spec.__init__

These two keyword arguments where only used in one test module to force
a Spec to 'appear' concrete. I suspect they are just a leftover from
another refactoring, as now there's the private method '_mark_concrete'
that does essentially the same job. Removed them to reduce a bit the
clutter in Spec.

* Moved yaml related functions from MultiValuedVariant to AbstractVariant.

This is to fix the erros that are occurring in epfl-scitas#73, and that
I can't reproduce locally.
2017-06-23 13:36:29 -07:00
Mark Olesen
6c1c290a63 relax qt dependency for paraview (#4592)
- previously restricted everything to QT-4, but now only have that
  restriction for older paraview versions.
2017-06-23 12:41:29 -05:00
Mark Olesen
2126c03a28 update for new version: qt-5.9.0 (#4590) 2017-06-23 11:41:44 -05:00
Massimiliano Culpo
087b3885f9 cp2k: added missing macros to the makefile (#88) (#4589) 2017-06-23 11:14:01 -05:00
Jimmy Tang
7fb9c3903f Minor fixes to CNTK package (#4429)
* Remove unneeded patch lines which fail for the most recent CNTK version on the head of the git repo

* Really check for NVML/GDK

* Fix some violations
2017-06-23 09:18:50 -05:00
Milton Woods
a4de317737 Gtkplus icons (#4511)
* gtkplus: set XDG_DATA_DIRS

* shared-mime-info: database of common MIME types

* gtkplus: needs shared-mime-info for correct handling of stock icons

* shared-mime-info: builds with newer intltool than provided by some platforms

* atk: set XDG_DATA_DIRS at run-time

* gdk-pixbuf: set XDG_DATA_DIRS at run-time

* gtkplus: set XDG_DATA_DIRS at run-time

* pango: set XDG_DATA_DIRS at run-time

* shared-mime-info: set XDG_DATA_DIRS at run-time
2017-06-23 09:01:09 -05:00
David Böhme
e27ccac4a5 caliper: Update caliper package (#4532)
* caliper: Update caliper package

* caliper: Explicitly enable/disable cmake options for all variants

* caliper: Fix flake8 warnings

* caliper: Modify defaults for Mac

* caliper: Fix some more flake8 warnings
2017-06-23 08:59:59 -05:00
iulian787
75b8d728bd Moab 5.0 and meshkit 1.5 (#4557)
* enable some of the tools

do not make zoltan default

* modify moab package

add shared, debug options to cgm, too
build some tools by default (mbsize, mbconvert)
add hdf5, netcdf dependency
add pnetcdf variant (dependency), metis, parmetis, zoltan
add shared, debug, fortran options to moab

* few kinks for moab

zoltan should be built without fortran api, otherwise moab
complains (need to fix)
also, notice that when built with cgm, shared can't find
cgm libraries for the new tools/geometry execs

install in serial for the time being (because of example makefile
duplicate?)

for example, these builds are successful:
spack install moab+mpi+hdf5+zoltan ^mpich@3.2
spack install moab+mpi+hdf5+shared ^mpich@3.2

* force hdf5+mpi if both are specified

also, something like this works:
spack install  moab+mpi+hdf5+cgm ^mpich@3.2 ^cgm+oce+mpi ^oce@0.17.2

use mpich32, and cgm built with oce 0.17.2

* forgot about irel, fbigeom, mbcoupler

* add meshkit package

simple build so far, moab and cgm deps only

also, an example of complex build for cgm
spack install  moab+mpi+hdf5+cgm+irel+fbigeom ^mpich@3.2 ^cgm+oce+mpi ^oce@0.17.2

* for meshkit, moab needs to have irel, fbigeom

* forgot to self.spec

after building moab with cgm with oce 0.17.2, we can build
meshkit with something like this
spack install meshkit ^moab/tsb75zk

cgm depencency is found out from moab

moab has to be built with irel and fbigeom

* add netgen package and review

do not support yet older versions of meshkit
(which depend on lasso, etc)
add netgen package; tested with meshkit (netgen has to be built without
occ, for meshkit)
We are not enforcing that yet, we may have to test

* use conflicts where needed, suggested by review

remove release candidates

* flake8 alignment errors

* flake8

* reviews

flake8 alignment
explicit options, even for default variants
variant for netgen should be "gui", with the default ~gui (False)
FIXME: with-occ does not work right for netgen ; maybe it should be disabled?
       also, with +gui, it should depend on a lot more, like tk, tcl?

* flake8 issues

whitespaces and a comment in netgen

* add more explicit options

--without-mpi needs fixing for cgm, moab and meshkit
add variable url for netgen (although we don''t know if other
versions will appear)

* flake8, trailing whitespace
2017-06-23 08:53:43 -05:00
Andrey Prokopenko
811ea4f465 ninja-fortran: a Fortran-capable fork of ninja build tool (#4539)
* ninja-fortran: a Fortran-capable fork of ninja build tool

* Use url_for_version for clarity

* Clean ninja-fortran

* Cleanup in the original ninja package
2017-06-23 08:52:57 -05:00
Adam J. Stewart
3e087f2e25 Remove test dependencies from Python packages (#4572)
* Remove test dependencies from Python packages

* Make test deptype more clear for a couple more packages
2017-06-23 08:51:45 -05:00
Geoffrey Oxberry
1d741a2110 suite-sparse: add openmp variant (#4563)
Fixes #4549.
2017-06-23 08:50:49 -05:00
Mark Olesen
b741809bb2 BUG: flex+lex fails with lib64/ installation (issue #4583) (#4584)
- new version 2.6.4 as well
2017-06-23 08:45:17 -05:00
Audrey Thoma
8125780b86 New package augustus (#4586)
* augustus: adding augustus

* augustus: fixing flake8 things

* augustus: simplifying verbose
2017-06-22 16:00:43 -05:00
Adam J. Stewart
a803a5e986 Add latest version of libtiff (#4574) 2017-06-22 12:52:23 -05:00
Adam J. Stewart
6d9494f0d2 Add latest version of libmng (#4575) 2017-06-22 12:52:02 -05:00
Stas Sergienko
6aa3d51939 created py-tomopy package and fixed its dependencies (#4576)
* added py-tomopy package

* fixed dependencies and added import_modules

* edited deps for tomopy with import_modules and added py-olefile pkg

* changed module name

* changed dependency to python because it will not build with setuptools

* fixed dependency list for py-tomopy and py-dxchange

* added py-nose dependency

* fixed tests

* commented out dependency py-counter

* fixed dependency py-pybtex-docutils

* removed nose as a dependency

* fixed flake8 errors

* fixed import_modules

* fixed import_modules indent

* fixed various issues in tomopy and deps files
2017-06-22 12:51:51 -05:00
Audrey Thoma
3c8e65f3d8 New package albert (#4568)
* albert: adding new package albert

* albert: fixing dependency type and build process
2017-06-22 11:12:37 -05:00
Audrey Thoma
2fa918f32c gmap-gsnap: adding gmap-gsnap package (#4570) 2017-06-22 11:12:19 -05:00
Mark Olesen
ff26cb9723 Update for paraview 5.4.0 (#4582)
- paraview 5.2.1 -> 5.4.0 supports both Qt4 and Qt5, but the assumed
  default version changes between versions. So explicitly define
  which QT major version is being used.
2017-06-22 09:29:19 -05:00
becker33
689c1d2f0c fix issue #4577 (#4579) 2017-06-21 18:33:11 -05:00
becker33
a113101126 Module cmd fix (#3250)
* Parse modules in a way that works for both lmod and tcl

* added test and made method more robust

* refactoring for pythonic clarity

* Improved detection of 'module' shell function + refactored module utilities into spack.util.module_cmd

* Improved regex to reject nested parentheses we are not prepared to handle

* make tests backwards compatible with python 2.6

* Improved regex to account for sh being aliased to bash and used in bash module definition on some systems

* Improve test compatibility with lmod

* Added error for None module_cmd

* Add test for get_module_cmd_from_which()

Add test for get_module_cmd_from_which().
Add -c argument to Popen call to typeset -f module in get_module_cmd_from_bash().

* Increased detection options

Included BASH_FUNC_module() variable outside of typeset as a detection option
This should work on bash even in restricted_shell mode
Kept the typeset detection as an option in case the module function is not exported in bash

Also added try statements to tests, with environment recreation in finally blocks.

* More tests added; some hackiness

* increased test coverage for util/module_cmd
2017-06-21 09:58:41 -07:00
Massimiliano Culpo
59b66b0d27 mumps: fixed compilation issues due to scotch not found at link time (#4567) 2017-06-21 11:36:18 -05:00
Mark Olesen
1f2e56e1f3 refactor openfoam packages (#3669)
* Several improvements for the openfoam packages

--

Refactor openfoam packages by adding an OpenfoamArch class

Use separate configure, build, install phases.

Provide FOAM_PROJECT_DIR dependent env for openfoam packages
- easier way to locate

Eliminate intermediate installation directories
- unneeded clutter.
- makes it less than easy to find the etc/bashrc file

Add versioning for all openfoam patches
- no certainty which parts (if any) will be needed in future versions,
  especially if we strive to ensure that the upstream version builds
  well with spack to begin with.

Support build of develop branches
- helps track build regressions for future openfoam releases

STYLE: use common/ and assets/ to provide additional (build) resources ...

* - adjust OpenFOAM provider

Move openfoam-com up front since this is the one being used as a base
for the others
2017-06-21 11:35:31 -05:00
Audrey Thoma
b1fceb75d0 Andi and libdivsufsort (#4559)
* andi: adding andi and libdivsufsort

* andi: adding andi and dependency libdivsufsort

* andi: adding andi and dependency libdivsufsort

* andi: fixing autotool dependency types

* andi: fixed whitespace to make flake8 compliant
2017-06-21 10:51:05 -05:00
Jonathan Wong
cb87edf230 Modified ipopt package to support build on ppc64le (#4561)
Added line in package.py to patch using ipopt_ppc_build.patch. The patch simply adds support in config.guess and Ipopt/config.guess to build ipopt on ppc64le.
2017-06-21 06:47:06 -05:00
Mark C. Miller
2525363c11 adding H5Z-ZFP; updating zfp to use choice variant for bit stream word size (#4466)
* adding H5Z-ZFP; updating zfp to use choice variant for bit stream word size

* fixing homepage url

* removed fortran error message...just build fortran if can, otherwise ignore
2017-06-21 06:46:14 -05:00
Jim Eliot
7c0a759a26 Fix for SAMRAI build debug spec bug (#4564) (#4565) 2017-06-21 06:38:27 -05:00
serbanmaerean
0fe9cb5d1c FFTW: remove search for IBM XL threaded compiler when compiler is not gcc (#4187)
* Added magma package

* Incorporated Serban's change

* fftw: patch configuration file to remove search for xlc_r compiler
when compiler not gcc

FFTW assumes there are only 2 compilers: gcc and IBM XL.  When
building threaded fftw, the configuration file is looking for
the threaded IBM XL's xlc_r compiler when the compiler is not gcc.
The PGI compiler is not gcc.
2017-06-20 16:47:24 -05:00
Audrey Thoma
bcb8615fb0 Add abyss package (#4555)
* abyss

* abyss: deleting attemped test from script

* abyss: adding new package abyss

* abyss: partially fixing mpi dependency issue

* abyss: added mpi provider conflicts
2017-06-20 16:34:42 -05:00
Christoph Junghans
12113c41e4 Features/votca (#4556)
* votca-csg: needs non-mpi version of gromacs

* votca-csg: fixed deps

* votca-moo: new package

* votca-ctp: new package

* votca-ctp: make flake8 happy
2017-06-20 15:34:17 -05:00
George Hartzell
e5560dfbde fontconfig should depend on gperf (#4551)
* Include depends_on for gperf

Sometime around 2.12.2 fontconfig acquired a build-time
dependency on `gperf` (this commit, I think:
59fd9960bbb58fd6257adb13ec0f918882149332).

This adds the dependency.

`gperf` is called in the `src/Makefile`, see line 907 of
`src/Makefile.in`.

* Only depend_on gperf if @2.12.2:

The gperf dependency *seems* to only be required when @2.12.2:.

Earlier releases do not check the arg type of the gperf lookup
function (which requires gperf) and are able to use pre-generated
files so gperf is not required at build time.
2017-06-20 12:46:49 -05:00
Mark C. Miller
ca9e6576db Fix veclibfort for gcc (#4548)
* fixes #967

* Version bump to 0.9.1

- Bugfixes for spack find
- 0.9.1 can read specs from current develop.

* Don't assume spack is in the path when building docs.

* fixing Makefile override of PREFIX and install w/gcc-6
2017-06-20 09:59:40 -05:00
Stas Sergienko
229886aa8f added py-dxchange and its dependencies dxfile,edffile,spefile,tifffile (#4534)
* added py-dxchange and its dependencies dxfile,edffile,spefile,tifffile

* fixed https in homepage of py-dxfile
2017-06-19 16:26:37 -05:00
Adam J. Stewart
9b89272ae0 Various updates to wget and dependencies (#4116)
* Various updates to wget and dependencies

* Add newer version of gnutls
2017-06-19 15:13:18 -05:00
Adam J. Stewart
cf2178f416 Overhaul CONVERGE installation and concretization (#4397) 2017-06-19 10:18:48 -05:00
Diana Bite
b12c0e0f87 fontconfig: Update to latest stable release (#4543) 2017-06-19 10:02:30 -05:00
Todd Gamblin
04af95c69a Add Slack info to READMEmd (#4542)
- Added a badge to show who's online.
- Added a section under "Get involved!"
2017-06-19 01:00:40 -07:00
Todd Gamblin
d1f176541d Update README.md and add analytics. (#4537) 2017-06-17 19:37:33 +02:00
Andrey Prokopenko
cbdee5faf7 votca-csg: fixing develop url (#4536)
Fix #4525.
2017-06-17 09:32:14 -05:00
becker33
541496dfe1 System config (#4518)
* Code changes to enable system config scope in /etc

Files will go in either /etc/spack or /etc/spack/<platform>
Required minor changes to conftest.

* Updated documentation to match new config scope
2017-06-16 12:31:56 -07:00
Stas Sergienko
5c01fadc59 Added py-pybtex package (#4507)
* Added py-pybtex package

* added more dependencies to py-pybtex

* added run to py-latexcodec dependency
2017-06-16 12:45:30 -05:00
John Roberts
4bd05d0c52 Py ase (#4517)
* py-ase: Adding python package py-ase.

* py-ase: Adding Python package py-ase.

* py-ase: Shortened package description.

* py-ase: Splitting package description to multiple lines to avoid char count max.

* py-ase: Removing trailing whitespace. Local flake8 tests passed now that flake8 is working for me.
2017-06-16 12:44:12 -05:00
Stas Sergienko
09ff2afb78 added py-sphinxcontrib-bibtex and py-pybtex-docutils packages (#4520)
* added py-sphinxcontrib-bibtex and py-pybtex-docutils packages

* added dpendency py-ordereddict
2017-06-16 12:42:36 -05:00
Kyle Fernandes, né Jacobs
a8919b07ca Update intel* packages (#4528)
* Update intel-*  packages

* Update intel package
2017-06-16 12:18:25 -05:00
David Böhme
04c2a1caf4 Update Scalasca/Score-P/Cube/OTF2 (#4485)
* Update Scalasca/Score-P/OTF2/Cube. Should fix #4349#

* cube: Fix flake8 warnings

* cube, scalasca: Fix version range syntax for deps

* otf2: Fix version URL generation

* cube: Remove static URLs
2017-06-16 11:45:06 -05:00
Adam J. Stewart
60db73a3f5 Fix OpenMPI CUDA support (#4323)
* Fix OpenMPI CUDA support

* Remove --with-cuda-libdir flag, not a real flag

* Fix PGI and CUDA 7 support
2017-06-16 10:00:19 -05:00
Milton Woods
f6e3ad4d90 py-pillow: ensure that RPATH includes graphics libraries (#4522) 2017-06-16 08:43:18 -05:00
iulian787
fe7bf77afe oce changes for cgm (#4514)
* oce changes for cgm

cgm can be configured with oce, but oce needs
to have X11 enabled, because some libraries
(like TKCAF in occ/oce) gets built only of X11 is NOT disabled
so introduce a variant +X11 for oce, which is needed when
configuring cgm with oce(+X11)

* follow up review

simplify by removing the patch and different url paths
use append instead of extend, when necessary
make mpi true by default

X11 dependency is still to be addressed; it pulls in some opengl
library (on laptop nvidia seem to work, on virtual linux machine
mesa was good enough)
2017-06-16 08:29:59 -05:00
Todd Gamblin
790b06e0c3 bugfix: support EDITOR values with spaces (#4523)
- previous code called `which` on $EDITOR, but that doesn't work for
  EDITORs like `emacs -nw` or `emacsclient -t -nw`.

- This patch just trusts EDITOR if it is set (same as previous
  behavior), and only uses the defaults if it's not.
2017-06-16 14:03:21 +02:00
Massimiliano Culpo
8b5e94976d issue 4492: DependencyMap.concrete checks for unconditional dependencies (#4499)
* issue 4492: added xfailing test, added owner to DependencyMap

* DependencyMap.concrete checks if we have unconditional dependencies

This fixes #4492 and #4107 using some heuristics to avoid an infinite
recursion among Spec.satisfies, Spec.concrete and DependencyMap.concrete

The idea, as suggested by @becker33, is to check just for unconditional
dependencies. This is not covering the whole space and a package with
just conditional dependencies can still fail in the same way. It should
cover though all the **real** packages we have in our repo so far.
2017-06-16 12:41:15 +02:00
Mario Melara
da67ee9790 Fix tests on cray (#4298)
* Check for CRAYPE_VERSION instead of path

Architecture tests would fail on Cray since it would not find
the expected path. To make the test correctly work on Cray search
for the CRAYPE version instead.

* Catch SystemExit error in case flake8 not in path

On shared systems having flake8 can involve starting own virtual env.
Skip the test if no flake8 is found to avoid failure reporting.

* Add compatibility to 1.5 svnadmin create

The flag added is needed to correctly create svn repos on NERSC systems.
This could be unnecessary for other sites. I'd like to see others
test before this change gets merged.
2017-06-15 15:16:14 -07:00
Stas Sergienko
c102be2144 Added package py-oset (#4500)
* Added py-oset package

* Added package py-oset

* changed homepage url
2017-06-15 13:50:48 -05:00
Stas Sergienko
503efb8881 added py-latexcodec package (#4509)
* Added py-latexcodec package

* removed url line from the file
2017-06-15 09:46:44 -05:00
Stas Sergienko
080314c68e added py-counter package (#4510) 2017-06-15 09:45:27 -05:00
Diana Bite
a9a7805626 openblas: Fix build on aarch64. (#4487)
- invoke make with the correct TARGET for aarch64
- foforce PILERDRIVER as openblas cannot correctly detect CPU on aarch64
- update url to more recent version
2017-06-15 06:38:24 -05:00
Adam J. Stewart
41e4a034ff Add latest version of JDK (#4317)
* Add latest version of JDK

* Use a more specific URL to get curl to work

* Remove failing unit test
2017-06-15 12:40:55 +02:00
Adam J. Stewart
dc911661ca Add missing doc variant to fenics package (#4473) 2017-06-15 12:35:56 +02:00
Mark C. Miller
27e6e8715e Adding initial AMReX package (#4467)
* adding initial amrex package

* adding missing fortran variant predicate

* adjusting description text

* adjusting as per @tgamlin guidance
2017-06-15 12:27:52 +02:00
Stas Sergienko
336e3e6a89 Added py-pywavelets package (#4496)
* Added py-pywt  package

* passes flake8 test

* renamed py-pywt to py-pywavelets
2017-06-15 11:51:52 +02:00
Todd Gamblin
8c2447272e Fix dashes in variant parsing (#4498)
- Skip spack flake8 test when flake8 is not installed.
- Fix parsing of dashes in specs broken by new help parser.
    - use argparse.REMAINDER instead of narg='?'
    - don't interpret parts of specs like -mpi as arguments.
2017-06-15 11:32:55 +02:00
Jon Rood
6762714302 Nalu requires Trilinos with Exodus support (#4505)
* Disabling Exodus in Trilinos by default.

* Returning default of Exodus to true in Trilinos.
2017-06-15 11:31:03 +02:00
Adam J. Stewart
e627447417 Prefer vim to vi for default editor (#4230)
* vim > vi
* Allow which to accept multiple args
* Update __init__ to use which with multiple args
* Fix doc tests
2017-06-15 11:27:18 +02:00
Adam J. Stewart
ce11e78530 Add h5utils package (#4506) 2017-06-14 15:41:42 -05:00
Alicia Klinvex
f732598f51 Fix tpetra-related xsdk errors (#4501)
* Fix tpetra-related xsdk errors

Recent changes to the trilinos package broke the xsdk build.
xSDK explicitly disables tpetra, but packages depending on it
(such as ifpack2 and amesos2) are explicitly enabled by default
in the trilinos package.  This commit explicitly disables them
within the xsdk package.py.

* Disabled exodus in the xsdk build

See issue #4502 for details
2017-06-14 13:56:24 -05:00
Luigi Calori
daa5cf7e73 fix intltool_sbang issue #4191 (#4192)
* fix intltool_sbang issue #4191

* add per dep even if already depending on perl-xml-parser

* adding more comment, properly spaced
2017-06-14 13:24:01 -05:00
Michael Kuhn
1ec3c14d23 Improve qt (#4309)
- Introduce an opengl variant that is enabled by default. Disabling it
  allows building qt for X forwarding etc.
- Depend on fontconfig and freetype to make use of system fonts.
  Otherwise qt can not find any fonts.
- libx11 is required when libxcb is used.
- Set MAKEFLAGS to parallelize qmake compilation.
2017-06-14 13:13:39 -05:00
Nicolas Richart
f06c23ef42 Adding package namd (#4321)
* Initial version of the namd package

* Modified charm to consider compile against intel/intel-mpi

* Correction of namd to compile with intel-mkl and intel compiler

* Adding inclue64 in the prefix

* adding property for the build directory

* removing useless function build
2017-06-14 13:11:30 -05:00
Josh Asplund
bc2c4a14c2 Updates rose definition (#4411)
* Adds z3 package

* Adds binwalk package

* Updates spot package definition

* Updates rose package definition

* Modifications for code review

* Fixes string formatting

* Remove python version requirement
2017-06-14 12:43:50 -05:00
Adam J. Stewart
f4f2f25838 Added new package for py-rsa (#4494) 2017-06-14 10:35:10 -05:00
serbanmaerean
0e5fb26dc1 superlu-dist: don't use '_' symbols from BLAS for IBM XL compiler (#4486) 2017-06-14 00:10:51 -07:00
Geoffrey Oxberry
3025f9d303 ipopt 3.12.7 (#4490)
* ipopt: update version to 3.12.7
* ipopt: add +coinhsl option
* ipopt: add +metis option
2017-06-13 18:09:12 -07:00
Geoffrey Oxberry
6af44e63ad coinhsl 2014.01.17: new package (#4482) 2017-06-13 18:03:49 -07:00
Geoffrey Oxberry
56f7c85c93 metis: bugfix: make shared library build portable (#4489)
Fixes #4488. When compiling metis as a shared library, the package
used the syntax `-rpath=`, followed by a path. This syntax is
non-portable, so replace it using Spack's compiler rpath argument
property.
2017-06-13 17:59:25 -07:00
John Roberts
b802524517 visit: Added VisIt version 2.12.2 (#4495) 2017-06-13 18:17:51 -05:00
scheibelp
1e69d9d1a9 Override partial installs by default - part three (#4331)
* During install, remove prior unfinished installs

If a user performs an installation which fails, in some cases the
install prefix is still present, and the stage path may also be
present. With this commit, unless the user specifies
'--keep-prefix', installs are guaranteed to begin with a clean
slate. The database is used to decide whether an install finished,
since a database record is not added until the end of the install
process.

* test updates

* repair_partial uses keep_prefix and keep_stage

* use of mock stage object to ensure that stage is destroyed when it should be destroyed (and otherwise not)

* add --restage option to 'install' command; when this option is not set, the default is to reuse a stage if it is found.
2017-06-13 09:15:51 -07:00
Massimiliano Culpo
9defe2c1c2 espresso: fixed compilation for 6.1 (elpa) and added support for hdf5 (#4483)
* espresso: fixed compilation for 6.1 (elpa) and added support for hdf5

* espresso: addressed items in @davydden review

* espresso: fixed behavior for espresso@:5.4.0
2017-06-13 10:22:12 -05:00
serbanmaerean
df6d8d913b Fix/mumps (#4453)
* Added magma package

* Incorporated Serban's change

* mumps: Fix compiler error with IBM XL

Split the patching between v 5.0.2 and 5.1.1
2017-06-13 08:09:59 -05:00
Michael Kuhn
181fd95057 Fix building shared libraries for gmp (#4464)
If specific compiler flags are set, gmp will not build a shared library,
causing failures further down the line.
2017-06-13 08:06:44 -05:00
Diana Bite
d450e4a93b czmq: Fix invocation when building with clang. (#4479)
Also bump to latest stable version.
2017-06-13 07:43:54 -05:00
Adam J. Stewart
14aa3b63e3 Add list_url for packages from http://ab-initio.mit.edu/ (#4471) 2017-06-12 09:48:20 -05:00
Adam J. Stewart
0de653ff01 Add an installcheck phase to MakefilePackage (#4476)
* Add an installcheck phase to MakefilePackage

* Minor changes to ESMF
2017-06-12 09:47:46 -05:00
Axel Huebl
ab9155eb37 ISAAC Server: Less Strict Deps (#4481)
The dependencies of the server packages were overly strict and pulled in too many dependencies.
This fixes it.
2017-06-12 16:01:17 +02:00
Robert Pavel
f127c4ed27 New Package: bml (#4213)
* New Package: lanl-bml

Added LANL's BML library as Spack Package as dependency for future
packages

* Adjusted lanl-bml versions

Specified current master as develop and added v1.1.0 tagged version

* Renamed lanlbml package to bml
2017-06-11 17:21:51 -05:00
Adam J. Stewart
4db107353e Convert elk to MakefilePackage (#4477) 2017-06-11 18:47:40 +02:00
Milton Woods
a5c6f0412b gcc: use isl@0.14 for gcc@5 (#4474) 2017-06-10 08:16:10 -05:00
Todd Gamblin
c67f647785 Move description to top of spack info (#4475) 2017-06-09 21:02:16 -07:00
Adam J. Stewart
36b8ea2f92 Add default list_url for GitLab, BitBucket, and CRAN (#4439)
* Add default list_url for GitLab, BitBucket, and CRAN

* Fix flake and doc tests
2017-06-09 12:28:39 -05:00
Adam J. Stewart
218992862c Move gpg section of docs to Getting Started (#4446) 2017-06-09 12:27:29 -05:00
Massimiliano Culpo
a3b12a60d1 scala + spark: added legacy versions (#82) (#4461) 2017-06-09 07:15:54 -05:00
Michael Kuhn
23a95de2bd Fix autotools issues (#4463)
Add ACLOCAL_PATH to libtool and pkg-config. Without this, aclocal can
not find the .m4 files.
2017-06-09 07:12:27 -05:00
Denis Davydov
5c5fd4a7e3 add teuchos to Trilinos, update dealii to explicitly require certain packages (#4460) 2017-06-09 07:10:54 -05:00
Adam J. Stewart
85fd8f0b31 Fix url parse offset for SourceForge downloads (#4458) 2017-06-09 08:53:40 +02:00
George Hartzell
a6bbbd4458 Package for mono (#4435)
* First draft package for mono

Mono's vendor'ed boringssl interacts badly with openssl, so
you need to use `cmake~openssl`.

Left to its own devices, it wants to refer to things in
`/usr/share/.mono`.  This doesn't work for installs that don't run as
root, etc...  This package includes a variant to redirect those paths
to `prefix.share`.

* Whitespace/Flake8
2017-06-08 17:55:45 -05:00
Jon Rood
3508909f06 Adding Nalu package. (#4428)
* Adding Nalu package.

* Fixing flake8 stuff.

* Fixing flake8 stuff.

* Reorganizing trilinos package file a little to make it less verbose.

* Reorganizing trilinos package file for more general use as well as use as a dependency of the Nalu package. Setting fpic as default for yaml-cpp and superlu.

* Explicitly stating fpic variants in dependent packages.

* Updating nalu and trilinos package files with suggested changes.

* Fixing formatting issues. Making suggested changes.

* Fixing formatting.

* Reducing amount of explicit variants in Nalu. Adding suggested changes to Trilinos package file.

* Making suggested changes to Nalu package.

* Turning off superlu-dist variant.

* Cleaning up yaml-cpp file.

* Fixing pnetcdf requirements in trilinos.
2017-06-08 17:54:26 -05:00
Gregory Lee
816f4f8b04 fix mfem build for ppc with gcc (#4452) 2017-06-08 10:23:30 -05:00
Howard Pritchard
4e92811939 Open MPI: add 2.0.3 (#4450)
Add Open MPI bug fix release 2.0.3

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-06-07 14:42:49 -05:00
Massimiliano Culpo
69bd119d64 folly: added new package. Also modified double-conversion to use 'pic'. (#4449) 2017-06-07 14:42:15 -05:00
Adam J. Stewart
1b9af88572 Supress output from gpg --version during tests (#4441) 2017-06-07 11:52:28 -05:00
Adam J. Stewart
0bbafb1673 Fix tab completion of Spack subcommands (#4442) 2017-06-07 11:52:07 -05:00
George Hartzell
29090a527a Bug/cctools syscall (#4440)
* Handle missing defn of __NR_memfd_create

Generally SYS_foo is defined to __NR_foo (in sys/syscall.h) which is
then defined to a syscall number (in asm/unistd_64.h).  Certain CentOS
systems have SYS_memfd_create defined to __NR_memfd_create but are
missing the second definition.  This is a belt and suspenders solution
to the problem.

See [this post][syscall] for a nice general description of how these
parts fit together.

[syscall]: https://www.uninformativ.de/blog/postings/2017-02-11/0/POSTING-en.html

* Avoid flake8 warning
2017-06-07 11:51:46 -05:00
Stas Sergienko
8018f6cdf6 Fixed duplicated spec: nag@6.1 line in getting started guide (#4445) 2017-06-07 11:50:56 -05:00
Stas Sergienko
af85014978 Added latest version of image-magick 7.0.5-9 (#4447) 2017-06-07 11:49:39 -05:00
Diana Bite
06e7708728 postgresql: Fix build with threadsafe and add variant. (#4403)
* postgresql: Fix build with threadsafe and add variant.

* postgresql: Convert Package to AutotoolsPackage.

Also add explicit enable flag for +threadsafe variant.
2017-06-07 18:20:17 +02:00
Michael Kuhn
f7b8b75c12 Fix intel-mpi installation (#4438) 2017-06-06 11:24:33 -05:00
George Hartzell
aa51e766cd Add add'l output formats for graphviz (#4431)
* Add add'l output formats for graphviz

Add support for additional output formats to graphviz, including gif,
jpg, pdf, and png.

Graphviz calls its pango+cairo option *pangocairo* so I followed suit.

Libgd was missing jpeg/jpg support.  None of the other supported
formats are conditionalized and there is no --with/--without support,
so I followed suit.

* Fix ghostscript plugin

When I installed thusly:

    spack install graphviz+pangocairo+libgd^cairo+X^pango+X

the ghostscript plugin tripped over some variable names that had
changes in `gs@9.18:`.  This fixes them.

* Remove wayward import of tty
2017-06-06 06:06:36 -05:00
Milton Woods
54cc8dd7fd ncl: cairo and math libraries (#4434)
* ncl: depends on cairo+X (cairo~X is built by default)

* ncl: '-lm' is needed when linking fortran with gcc
2017-06-06 06:05:10 -05:00
Michael Kuhn
08a054afd8 Update bazel to 0.4.5 (#4436) 2017-06-06 05:59:25 -05:00
George Hartzell
baad627944 Need to help Makefile.PL find the expat bits (#4422)
* Need to help Makefile.PL find the expat bits

We need to provide Makefile.PL with a clue about where our
expat bits live.  We had the dependency, but I suspect
that the lib was actually linking against a system version.

* Use prefix.lib instead of building path myself

Ditto with .include
2017-06-05 14:17:12 -05:00
George Hartzell
6b9d485e06 Disable parallel builds for bamutil (#4430)
I've had non-repeatable failures in my CI runs on all three clusters
at the bamutil's step.  In each case there are .o or .so files that
are corrupt or truncated.

I suspect that the homebrewed bamutil Makefile scheme doesn't actually
support parallel builds.
2017-06-05 14:14:49 -05:00
George Hartzell
bfb45ba1ce Tighten up graphviz package (explicitly disable unused languages, etc...) (#4408)
* Tighten up graphviz package

The fun started when configure discovered a broken/partial
installation of `swig` in `/usr/local`, then auto-discovered my
system's python and ruby packages.

- SpackException doesn't seem to exist.  Convert it to a SpackError
  and call `.format(...)` on the error string to fill in the
  placeholder.

- Pull swig out of the list of languages.  It's something that can be
  asked for explicitly and that is needed if *any* of the langagues
  are enabled.  It's disabled by default.

- Explicitly disable the languages that are in "untested_bindings"
  list lest the configure script pick up things from the system.

* Touch up variant description string

* Clean up conditional statement

* Use InstallError, not SpackError

* Drop the swig variant

Get rid of the swig variant and drive that bit based on whether any
languages are enabled.

* Move perl to the untested list

That's not strictly accurate.  I tested it and it doesn't work.

There's a missing depends_on().  When you add that you'll discover
that the language binding bit can't find Perl's 'EXTERN.h'.  Then
you'll discover that graphviz's `configure` script doesn't have a good
way to include the paths to Perl's bits (looks like I'll have to
gather them for each language and then use them to build `CFLAGS` and
`CXXFLAGS` and `LDFLAGS`).  While pondering that, you'll discover that
EXTERN.h is buried down here:

```
opt/spack/linux-centos7-x86_64/gcc-4.8.5/perl-5.24.1-35ejv4426dmzreum4ekdibu3ddmhquvi/lib/5.24.1/x86_64-linux/CORE/EXTERN.h
```

and decide that you wish you had never thought to actually test
`graphviz+perl`.

I could find that directory with a snippet like so:

```
perl -MConfig -e 'print "$Config{archlib}\n"'
```

but at this point I'm much, much further down this rabbit hole then I
ever wanted to go.

* Convince python that tested_bindings is a list

When I removed `+perl` and made `tested_bindings` a list of one
thing, I ended up with this:

```
==> Error: cannot concatenate 'str' and 'tuple' objects
```

* Flake8 cleanup

* Don't convert a string to a string

* rm unused () and clarify variable name

Feedback from @adamjstewart

- Get rid of some unnecessary parens.
- Clearer variable name and use.

* Further cleanup of language enabling loop

Now we don't need that pesky temporary variable.
2017-06-05 13:02:39 -05:00
George Hartzell
36d153967b Add package for cctools (#4417)
* Add package for cctools

Add a package for cctools.

Requires the recently submitted "useshrplib" support in Perl (or some
other mechanism to enable -fPIC for perl).

* Delete extraneous import

* Perl's shared variant changed, adapt...

The name of the variant that perl uses to build a shared lib changed and
it now defaults to True.  Use the new name and continue to be insistent
about using the shared variant.

* Flake8 cleanup
2017-06-05 11:41:02 -05:00
serbanmaerean
626aa3a8d0 Bugfix/boost pgi (#4426)
* Added magma package

* Incorporated Serban's change

* boost-pgi: Add support for PGI compiler

There are two patches required:
  (1) general fixes required by PGI
  (2) workaround for a bug in PGI 17.4

Conflicts:
	var/spack/repos/builtin/packages/boost/package.py
2017-06-02 11:44:33 -05:00
George Hartzell
23474be4b0 Add variant to build shared Perl lib (#4416)
* Add variant to build shared Perl lib

Add a variant that enables Perl's "useshrplib" feature, which builds a
shared perl library.

This addresses problems like so:

```
/usr/bin/ld: /blah/blah/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/perl-5.24.1-y43dp3p5w66v7qh5xkwgufxohyuodyew/lib/5.24.1/x86_64-linux/CORE/libperl.a(op.o): relocation R_X86_64_32S against `PL_opargs' can not be used when making a shared object; recompile with -fPIC
/blah/blah/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/perl-5.24.1-y43dp3p5w66v7qh5xkwgufxohyuodyew/lib/5.24.1/x86_64-linux/CORE/libperl.a: could not read symbols: Bad value
```

It should also address the Intel compiler issue discussed in #3081
while respecting Perl's configuration machinery.

* Rename shared variant and default to True

* Use correct variant to add configure arg

* Restore bits that set ccflags for intel compilers

After some experimentation we've established that setting
the flag to build a shared perl library is tightly tied to
the use of -fPIC.

This commit restores the code that sets ccflags for
intel compilers.

* Flake8 cleanup
2017-06-02 10:44:01 -05:00
Adam J. Stewart
623e7cb7b6 Add latest version of gnuplot (#4418) 2017-06-02 08:04:47 -05:00
Denis Davydov
bf58524943 astyle: add new versions (#4424) 2017-06-02 08:00:45 -05:00
George Hartzell
d8b6859e7b Add a package for Picard (#4398)
See the discussion about installing jar files in #4386.

Also installs a wrapper script that has explicit references to the
prerequisite java exe and to the jar file in it's final resting place.
2017-06-01 16:13:33 -05:00
George Hartzell
391afa9271 Add packages for clustalw and clustalo (and argtable) (#4412)
* Add packages for clustalw and clustalo (and argtable)

Add packages for the classic multiple alignment package, `clustalw`
and its younger sibling, `clustalo`.

`clustalo` needed the `argtable` package (command line arg parsing).

Lightly tested on CentOS 7.

* Remove FIXME (sigh...)
2017-06-01 12:36:01 -05:00
Tom Merrick
916243b23a Packages/r factoextra (#4410)
* Add mpi support to R

* Add multiple precision math routines to R

* Updated the URL to match the version

* Remove duplicate packages

* Add packages for r-ergm and it's dependents

* Fixed depends-on types

* Correct flake8 errors

* Correct Build type

* r-factoextra and dependents

* Revert "r-factoextra and dependents"

This reverts commit afbf477fd6.

* Add only r-factoextra files
2017-06-01 10:43:51 -05:00
Massimiliano Culpo
489dde1135 travis: fixes failure on six (#4415) 2017-06-01 14:42:33 +02:00
George Hartzell
61f640238b Add a package for Trimmomatic (#4399)
* Add a package for Trimmomatic

See the discussion about installing jar files in #4386.

Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.

* Fix bad format statement

Apparently something like this "blah{}".format(...) works (it's missing
something inside the curly braces) but fails the travis test.
2017-06-01 09:22:24 +02:00
Nils Deppe
2310e9dac0 Add Catch v1.7.1-1.9.4 (#4406) 2017-05-31 14:11:36 -05:00
Diana Bite
218d55a072 openssl: Fix build on Aarch64 with clang. (#4404) 2017-05-31 06:41:24 -05:00
Axel Huebl
c124fdb7a0 Fix Fetch MariaDB (#4394)
The two given versions of mariadb are not fetchable under the given
URL, probably because older versions are purged and only kept in
an archive.

Add two working, latest revisions of each release line.
2017-05-31 13:37:44 +02:00
Diana Bite
c15f3bc6ff cmocka: Bump version and add checksums (#4405) 2017-05-31 12:48:43 +02:00
Michael Kuhn
665598af1b Fix missing gcc dependency on zip (#4303)
For @:6, java is included in languages=all and requires zip.
2017-05-30 14:59:47 -05:00
Adam J. Stewart
421d8ea316 Make sure py-entrypoints runs its unit tests (#4347) 2017-05-30 14:57:53 -05:00
Axel Huebl
7e3a11b46a ISAAC: Fix CMakeLists.txt Path (#4374)
Somehow the path to `CMakeLists.txt` via the class property
`root_cmakelists_dir` was relative but is now actually relative
to `spack-build/`.

Close 4324 by providing a path relative to the source repo
of the stage via a method instead of a member variable
2017-05-30 14:55:50 -05:00
Adam J. Stewart
d9d5135ec9 Fix spack info bug for Python 3 (#4391) 2017-05-30 13:37:56 -05:00
Adam J. Stewart
336d988cc6 Add every version of OpenMPI (#4372) 2017-05-30 10:16:43 -05:00
Axel Huebl
c23ccb58e1 Package: Wt (#4384)
* Package: libharu (PDF)

C++ PDF generation library, necessary for wt

* Package: WT

Adds `wt` "witty", a Qt-like C++ web framework for GUIs
2017-05-30 09:37:34 -05:00
George Hartzell
8297244446 Add package for vcftools@0.1.14 (#4389)
* Add package for vcftools@0.1.14

The package munges the various perl scripts so that their sbang lines
point to the depended upon perl (perhaps with Spack sbanger in the
dance) instead of relying on `/usr/bin/env perl`.

As it stands it installs its Perl libraries into `prefix/lib` and then
depends on `setup_environment` to prepend that dir onto PERL5LIB.

See my [vcftools issue
80](https://github.com/vcftools/vcftools/issues/80) for a discussion
about fixing its non-functional attempt at isolating itself from
PERL5LIB shenanigans.

* perl dependency should be build/run
2017-05-30 06:59:37 -05:00
Diana Bite
115fec3346 zeromq: Fix invocation when building with clang. (#4395) 2017-05-30 06:57:28 -05:00
Axel Huebl
1b7c29cdfe Fix #3851 xmlto fetch (#4393)
xmlto migrated to https://pagure.io/xmlto
2017-05-30 06:56:44 -05:00
Axel Huebl
d7622b32f1 Close #4388 libaio fetch (#4392)
fetch libaio via the debian mirrors, the same way as archlinux builds
it (from original, unmodified sources):
  https://git.archlinux.org/svntogit/packages.git/commit/trunk/PKGBUILD?h=packages/libaio&id=a8ec32dd3988668809e6c6affe678db04db3fc76
2017-05-30 06:56:20 -05:00
George Hartzell
e3eaba80b1 Ensure Config.pm has correct setting for cc (#4345)
* Ensure Config.pm has correct setting for cc

Run a filter after install so that Config.pm records the compiler that
Spack built the package with.  If this isn't done, $Config{cc} will be
set to Spack's cc wrapper script.

* Also patch compilers Config_heavy.pl

This patch sets ld=gcc, which appears to work.  I'm not sure if
there's a good way to get at the ld that Spack uses.

* Clean up quoting

* Fix pattern for Config.pm

Does not start at beginning of line...
2017-05-29 16:59:30 -05:00
George Hartzell
e31f80988c Add support for an older version of STAR (#4385)
What the user wants, the user etc....

Add info for STAR@2.4.2a.  It's URL looks different, so added a URL for
it.  This broke the URL for the current version, so added a URL for it
also (known bug).

*Minimally* tested on CentOS 7.
2017-05-29 15:47:31 -05:00
George Hartzell
62daeaa525 Add package for bamutil (#4387)
*Minimally* tested on CentOS 7.

Stole the `install_target` bit from zip....
2017-05-29 15:36:18 -05:00
Milton Woods
7ea0e143c5 python: RPATH on Cray (#4209)
* python: ensure that distutils sets valid compiler options for RPATH on cray

* python: add cray-rpath patches for python@2.3:3.0.1 and python@3.1:

* python: in patch(..., when="@a:b platform=c"), limit b must be specified

* python: assume that python@4 will break the cray patches
2017-05-28 09:17:16 -07:00
Denis Davydov
87ebb0fc15 oce: add 0.18.1 (#4376) 2017-05-27 16:35:32 -05:00
Denis Davydov
0b252d5402 tbb: add 2017.6 (#4377) 2017-05-27 16:35:17 -05:00
Denis Davydov
d0d7768b90 Petsc and Slepc -- add new versions (#4378)
* petsc: add 3.7.6

* slepc: add 3.7.4

* hypre: remove whitespace
2017-05-27 16:35:05 -05:00
Douglas Duckworth
f14041d6c1 added STAR aligner package (#4368)
* added STAR aligner package

* fixed flake errors

* PATH NOW WORKS

* STAR install now works

* star install now perfected
2017-05-27 15:02:39 -05:00
Denis Davydov
50e729173b arpack: add 3.5.0 (#4375) 2017-05-27 15:02:25 -05:00
Adam J. Stewart
f9ac965fb9 Document known issue with R concretization (#4313) 2017-05-27 12:51:03 -05:00
eklee15
1b07d949ae Added pgi support for suite-sparse package (#4340)
* Added pgi support for suite-sparse package

* Patch modified

* added 'CFOPENMP={0}'.format(self.compiler.openmp_flag) for -mp flag
2017-05-27 06:49:21 -05:00
George Hartzell
1d80a87996 Fix mummerplot when ^perl@5.20: (#4348)
* Fix mummerplot when ^perl@5.20:

Calling defined() on a hash has been deprecated for ages.  It became
an error in perl@5.20.  If we're building with a perl where it's
illegal, we should fix it.

* Simplify call to filter_file

Treat the first arg to filter_file as a string rather than
a regex, so that we don't have to figure out the escapes.

* Patch mummerplot for *any* perl version.
2017-05-26 22:08:40 -05:00
George Hartzell
248fc92a45 Fix bwa url's (#4366)
* Fix bwa url's

Work around varying github URLs.

See #4365 for details.

* Restore main url entry

@adamjstewart pointed out that the package still needs a main url
so that `spack versions` works.
2017-05-26 22:08:00 -05:00
eklee15
c0fff6722d added -c11 flag for pgi compiler for TSL (#4367) 2017-05-26 22:07:24 -05:00
eklee15
a9feeefdb9 Added pgi support for mumps (#4369) 2017-05-26 22:06:55 -05:00
Adam J. Stewart
e7ad79fbed Add latest version of NCO (#4370) 2017-05-26 22:06:24 -05:00
Adam J. Stewart
d3a82ce632 Fix typo in mod_to_class docstring (#4371) 2017-05-26 22:05:54 -05:00
Adam J. Stewart
6f0ac9d54c Add --configure-args/vars support to RPackage (#4289)
* Add --configure-args/vars support to RPackage

* Docstring formatting change
2017-05-26 16:37:06 -05:00
Ben Boeckel
f38d250e50 gpg: add 'spack gpg subcommand (#3845)
- Add a `spack gpg` subcommand in anticipation of signed binaries.
- GPG keys are stored in var/spack/gpg, and the spack gpg command manages them.
- Docs are included on the command.
2017-05-26 10:31:04 -07:00
George Hartzell
71cc4e2ad1 Add info for jdk@7u80 (not downloadable) (#4363)
* Add info for jdk@7u80 (not downloadable)

Add version info for jdk@7u80.  Oracle does't seem to be
distributing it any longer so there's no reasonable URL to
provide, but for those of us who already have the tarball
this is useful.

* Flake8 cleanup
2017-05-26 10:46:14 -05:00
Nils Deppe
e5f5e98fc4 Add master as install option for yaml-cpp (#4364) 2017-05-26 07:46:11 -05:00
Douglas Duckworth
7bdf7a74af added libdrm 2.4.75 per #4316 (#4359)
* added libdrm 2.4.75 per #4316

* removed 'list_url'
2017-05-25 22:19:59 -05:00
George Hartzell
d13eac310a Add info for fastqc@0.11.4 (#4357)
* Add info for fastqc@0.11.4

* Delete the bamutil package (included by mistake)

The bamutil package was included by mistake, the commit deletes it.
2017-05-25 18:15:19 -05:00
Mark C. Miller
e85113faf6 updating mfem version (#4362)
* updating mfem version

* changing mfem tarball extension to .tar.gz
2017-05-25 18:14:47 -05:00
Denis Davydov
af77f811f2 petsc: fix scalapack error: (#4341)
Specify either "--with-scalapack-dir" or "--with-scalapack-lib --with-scalapack-include". But not both!
2017-05-25 16:23:59 -05:00
eklee15
c7de8d0cdc Added pgi support for superlu-dist package (#4343)
* Added pgi support for superlu-dist package

* added self.compiler.pic_flag
2017-05-25 16:23:26 -05:00
Tom Merrick
794dc50995 Packages/r adegenet (#4354)
* Add mpi support to R

* Add multiple precision math routines to R

* Updated the URL to match the version

* Remove duplicate packages

* Add packages for r-ergm and it's dependents

* Fixed depends-on types

* Correct flake8 errors

* Correct Build type

* r-adegenet and dependent packages
2017-05-25 14:42:49 -05:00
George Hartzell
7055be82b9 Add info for bwa@0.7.12 (#4356) 2017-05-25 14:42:32 -05:00
George Hartzell
d9892c629c Add ant@1.9.6 info (#4350) 2017-05-25 13:31:46 -05:00
George Hartzell
26440accab Touch up string expansion. (#4344)
* Touch up string expansion.

I'm chasing this:

```
$ (module purge; spack install perl %gcc/5.4.0)
==> Error: No installed spec matches the hash: '%s'
```

There's something deeper going on, but the error message isn't helpful.

After this change it tells me this:

```
$ (module purge; spack install perl %gcc/5.4.0)
==> Error: No installed spec matches the hash: '5.4.0'
```

Which is weird because `5.4.0` is not a hash...  Whatever is going on here, the error message needs to be fixed.

* Flake8 whitespace
2017-05-25 13:00:58 -05:00
Adam J. Stewart
53713d57c9 Add older version of CONVERGE (#4346) 2017-05-25 11:29:54 -05:00
Adam J. Stewart
f8a7549f51 Add missing dependency to py-entrypoints (#4330) 2017-05-25 09:49:00 -05:00
Andrey Prokopenko
8e9d905794 Trilinos: add DTK external package (#4304)
* trilinos: add DTK external package

* Making +dtk and ~tpetra conflict
2017-05-25 09:41:11 -05:00
becker33
12ab882eba Fix issues parsing multiple anonymous specs (#4199)
* fix parser
* Removed xfails
* cleaned up debug print statements
* make use of these changes in gcc
* Added comment explaining unreachable line, line left for added protection
2017-05-24 17:13:18 -07:00
Adam J. Stewart
c1cea7ebcf Add latest version of CONVERGE (#4337)
* Add latest version of CONVERGE

* Flake8 fixes
2017-05-24 14:20:13 -05:00
Douglas Duckworth
a0e7169df6 added new R package - r-rgl (#4335) 2017-05-24 10:25:31 -05:00
Adam J. Stewart
315bda3487 Fix PGI version detection: 17.4-0 -> 17.4 (#4251) 2017-05-24 06:57:31 -05:00
Milton Woods
0932b16d4e cairo: ensure that X support is disabled for variant "~X" (#4242)
* cairo: ensure that X support is disabled for variant "~X"

* cairo: explicitly enable X support for +X variant

* cairo: prefer "variant in spec" over spec.satisfies(variant)
2017-05-23 16:43:22 -05:00
George Hartzell
d0a81fda30 Correct installation step for mummer (and dependency) (#4293)
* Trailing whitespace cleanup

* Handcraft an install process for mummer (grumble)

Mummer punts on an installation step, they just build in and run from
the same directory.

Mummer also has various hardcoded paths built into it that allow it to
find other executables that it needs as well as its Perl library.

This updates the package to deal with this approach.

It patches the Makefile and scripts/Makefile so that the correct info
is fed to sed when it munges the perl scripts.

The install step is now finer grained and puts things where mummer
relatively wants to find them.

* Add perl dependency

* perl should be build/run dependency

* Fix whitespace

* Delete stray u at top of file
2017-05-23 16:37:33 -05:00
Luigi Calori
929c45916b new package virtualgl (#4297)
* new package virtualgl, depends on mesa-glu but NOT on mesa, so added a variant to mesa-glu

* add comment on mesa variant of mesa-glu
2017-05-23 16:36:48 -05:00
Gregory Lee
785168f5a1 fix build command for caffe with openblas (#4299) 2017-05-23 16:35:42 -05:00
Erik Schnetter
43edcfbf13 opencoarrays: new version (#4271) 2017-05-23 16:30:14 -05:00
George Hartzell
39ac8abbbd Add support for addl versions of bcl2fastq2 (#4328)
Two changes:

- It seems that Illumina version numbers are dotted and that the
  dashed version in the 2.18... filename is an anomaly (based on the
  names for 2.17.1.14 and 2.19.0).  `url_for_version` does the right
  thing for 2.18.  It will need to be fixed when support for 2.19 is
  added.  2.17 is no longer generally available so it gets a pass.

- Add version and hash for 2.17.1.14.

  2.17.1.14 is no longer distributed.  If you have a copy of the
  source tarball, you can drop it into a local mirror w/ the name
  mirror/bcl2fastq2/bcl2fastq2-2.17.1.14.zip and go from there.
2017-05-23 15:37:24 -05:00
Adam J. Stewart
d38e601134 Add latest version of libpciaccess (#4325) 2017-05-23 13:47:06 -05:00
Milton Woods
4553b1400c Magics with eccodes variant (#4320)
* magics: use filter_file to avoid using system python in all versions

* magics: add eccodes variant to switch between eccodes and grib-api
2017-05-23 10:06:59 -05:00
Tom Merrick
1469cfd0e7 Packages/r ergm (#4314)
* Add mpi support to R

* Add multiple precision math routines to R

* Add packages for r-ergm and it's dependents

* Fixed depends-on types

* Correct flake8 errors
2017-05-23 10:05:05 -05:00
Massimiliano Culpo
e89c699c06 plumed: fixed compilation on rhel6 (#4318)
* plumed: fixed compilation on rhel6 with mvapich2 and gcc@5.4.0 (#77)

* plumed: prevent parallel compilation, as it breaks for the newest version
2017-05-23 10:04:23 -05:00
Robert D. French
dd73c98d0e Add Microsoft's C++ Rest SDK (#4315) 2017-05-22 15:15:17 -05:00
Milton Woods
8ab8459397 magics: use spack perl instead of system perl (#4310) 2017-05-22 06:45:24 -05:00
Milton Woods
132b3c56bc qt: patch JavaScriptCore to favour internal pcre headers (#4270) 2017-05-21 18:01:26 -05:00
Michael Kuhn
f9203d4281 libdrm depends on pkg-config (#4308) 2017-05-21 13:34:16 -05:00
Milton Woods
ca2755d532 flex: create variant +lex that creates symlinks for lex and libl.{a,so} (#3894)
* flex: create variant +lex that creates symlinks for lex and libl.{a,so}

* flex: enable variant +lex by default

* flex: use dso_suffix for portability; replace repetitive code with a loop
2017-05-21 08:33:34 -05:00
Massimiliano Culpo
e4a3295c37 spark: remove whitespaces from run_env variable (#4210) 2017-05-20 23:40:59 -05:00
Michael Kuhn
17b2db0bd2 Fix ncview with netcdf+mpi (#4305)
ncview has to be compiled using the same compiler as netcdf.
2017-05-20 20:59:15 -05:00
Michael Kuhn
c741cd900b magics fixes for versions > 2.29.x (#4302) 2017-05-20 09:40:10 -05:00
Erik Schnetter
a32f8c33b0 julia: New version 0.5.2 (#4259) 2017-05-19 17:32:40 -05:00
Erik Schnetter
4b075de9de hwloc: new version (#4272) 2017-05-19 17:32:16 -05:00
Erik Schnetter
eb001e4d5d hpx5: new version (#4273) 2017-05-19 17:31:53 -05:00
Erik Schnetter
ff6ebe30e0 cmake: new version (#4274) 2017-05-19 17:31:20 -05:00
Michael Kuhn
a62bbb6ed8 gobject-introspection depends on pkg-build (#4301) 2017-05-19 17:30:54 -05:00
Adam Moody
efbcdafd30 Mpifileutils (#4283)
* adding mpifileutils

* mpifileutils: add +lustre variant

* mpifileutils: add variant for xattr

* mpifileutils: update to AutotoolsPackage

* mpifileutils: simplify and eliminate redundant make

* mpifileutils: drop unnecessary comments
2017-05-19 17:09:21 -05:00
Michael Kuhn
571a42d614 Fix gcc not finding zlib (#4291) 2017-05-19 12:03:56 -05:00
Douglas Duckworth
8b47fe5a78 added R 3.4.0, again (#4260) (#4294) 2017-05-19 11:55:48 -05:00
George Hartzell
18c7e96624 Fix boost@:1.56.0%gcc@:5 (#4295)
I need boost@1.54.0 for bcl2fastq2.  I tested bcl2fastq2 using the
system compiler (gcc@4.8.5).  My full build uses a spack-build
gcc@5.4.0.

boost@1.54.0 won't build.  I found the answer
[here](https://github.com/hashdist/hashstack/issues/802) with the
details in [this upstream/boost
ticket](https://svn.boost.org/trac/boost/ticket/10125).

I've confirmed that these combo's build:

boost version| compiler
------------ | ------------------
boost@1.54.0 | gcc@4.8.5 (system)
boost@1.54.0 | gcc@5.4.0 (Spack)
boost@1.64.0 | gcc@5.5.0 (system)
2017-05-19 11:55:21 -05:00
Tom Merrick
0bff9c1eb1 Add r-rmpfr and r-gmp to R (#4287)
* Add mpi support to R

* Add multiple precision math routines to R

* Updated the URL to match the version

* Remove duplicate packages
2017-05-19 09:59:35 -05:00
George Hartzell
be356cf707 Add info for libxml2@2.7.8 (#4290)
bcl2fastq2 needs this older version.
2017-05-18 19:02:03 -05:00
kothah
153a63de62 added new version 7.900.1 (#4292)
added new md5
2017-05-18 19:01:40 -05:00
Douglas Duckworth
f72cd79ad1 add mpi support to meme (#4265)
* added openmpi support to meme

* openmpi is a link dependency which leverages r_path

* openmpi support now the default - meme does not have configure argument for mpi - if it's found then it's used

* added serial option and set mpi to not be default

* modified meme
2017-05-18 15:37:47 -05:00
Adam J. Stewart
04ccb8f774 Add old version of ROOT 5 (#4288) 2017-05-18 13:22:09 -05:00
Adam J. Stewart
fa90a65d09 Fix spec['python'].home (#4228) 2017-05-18 12:12:08 -05:00
Tom Merrick
5486d021d6 Add mpi support to R (#4286) 2017-05-18 11:24:40 -05:00
Patrick Gartung
a29921b995 Add the gnupg package and missing dependencies. Update versions of ex… (#4281)
* Add the gnupg package and missing dependencies. Update versions of existing dependencies.

* this ended up in the wrong repo

* put versions back, remove uneeded function

* OK ;)

* autopep8

* typo on npth line

* whitespace
2017-05-18 10:11:27 -05:00
Adam J. Stewart
48588cb1d8 Add a new package for Open Babel (#4256)
* Add a new package for Open Babel

* Add post-installation tests, stolen from the fine folks at Homebrew

* Add patch to fix Python 3.6 support

* Add a more complete patch to get Python 3.6 support working

* Add patch to convert tabs to spaces in test script

testpdbformat.py contains mixed tabs and spaces
causing the unit tests to fail. With this patch,
all tests pass with flying colors.
2017-05-18 10:06:44 -05:00
Erik Schnetter
48eec5fc0f benchmark: New package for the Google Benchmark library (#4194)
* benchmark: New package

* benchmark: Remove empty function
2017-05-17 20:58:32 -05:00
George Hartzell
8eeb63e78e Add info for miniconda[23]@4.3.14 (#4263) 2017-05-17 20:57:48 -05:00
George Hartzell
daaa37c1ff Package for bcl2fastq2 (updates libxslt) (#4234)
* Add v1.1.26 and make crypto a variant

I need 1.1.26 for bcl2fastq2.

I also need to build it without crypto support.

* Initial support for bcl2fastq2

* Clean up commentary, messages, names

No substantial changes intended, just cleanup.

* fix flake8 and extra import

* The masked grammarian strikes again...

* Be normal (messages don't end in periods)

* When +crypto, add --with-crypto

Add `--with-crypto` to configure args when user hasn't explicitly set
`~crypto`.

* self.spec.satisfies is unsatisfying, in is in instead

See #4135, self.spec.satisfies has issues.  @adamjstewart suggests
simply using in.
2017-05-17 20:57:23 -05:00
Todd Gamblin
32c570913d Move doc dependencies to requirements.txt for readthedocs (#4280)
* Move doc dependencies to requirements.txt for readthedocs

* Move sphinx to doc requirements.
2017-05-17 20:45:03 -05:00
Adam J. Stewart
5b527e2c14 Add a new package for sphinxcontrib-programoutput (#4267) 2017-05-17 19:51:15 -05:00
Adam J. Stewart
bb451f967c Add latest version of matplotlib (#4279) 2017-05-17 19:50:50 -05:00
Adam J. Stewart
96560cc11f Add latest version of Sphinx (#4264)
* Add latest version of Sphinx

* Flake8 fix
2017-05-17 18:07:10 -05:00
Todd Gamblin
3e8662aaa7 fix bug with executables setting their own environment. (#4237) 2017-05-17 11:37:06 -05:00
Adam J. Stewart
cafc3cc3ca Sphinx no longer supports Python 2.6 (#4266)
* Sphinx no longer supports Python 2.6

* Update vendored sphinxcontrib.programoutput from 0.9.0 to 0.10.0

* Documentation cannot be built in parallel

* Let Travis install programoutput for us

* Remove vendored sphinxcontrib-programoutput

Recent updates to the sphinx package prevent the vendored version
from being found in sys.path. We don't vendor sphinx, so it doesn't
make sense to vendor sphinxcontrib-programoutput either.
2017-05-17 11:36:02 -05:00
Adam J. Stewart
b630c06773 Sphinx no longer ignores first argument (#4243)
* Sphinx no longer ignores first argument
* Duplicate first argument for maximum compatibility
2017-05-16 14:24:35 -07:00
Adam J. Stewart
de958df3b8 Update checksum for latest version of cudnn (#4254) 2017-05-16 11:42:00 -05:00
Douglas Duckworth
9a4b86cd49 added meme package (#4257)
* added albacore package as well as dependency py-ont-fast5-api

* added py-cutadapt and dependency py-xopen

* made more changes to albacore and cutadapt as well as dependencies

* made changes again per @adamjstewart

* fixed by python n00b errors i think

* fixed?

* tw=79

* made changes to py-ont-fast5-api ont-albacore

* removed bad characters

* albacore requires setuptools as build and run dependency

* added vmd

* added back albacore

* removed vmd package

* added meme software

* libz is only needed as link depedency for meme

* added libxml2 libxslt libgcrypt as link dependencies
2017-05-16 09:42:37 -05:00
Adam J. Stewart
fbc9d5a634 albacore requires setuptools as build and run requirement (#4255) 2017-05-15 15:57:21 -05:00
Adam J. Stewart
9f6c166f2f Add missing dependency to glib package (#4253) 2017-05-15 14:17:28 -05:00
Adam J. Stewart
6a328892d2 Add latest version of util-linux (#4252) 2017-05-15 12:47:03 -05:00
Adam J. Stewart
7864fbfcd3 Remove need for autoreconf in glib package (#4240) 2017-05-15 09:46:19 -05:00
Milton Woods
1ab2077b87 mesa-glu: provides libGLU, the OpenGL utility library from SGI (#4244) 2017-05-14 07:41:00 -05:00
Milton Woods
447d6f6602 harfbuzz: add latest version (1.4.6) (#4245) 2017-05-14 07:39:50 -05:00
Milton Woods
1cb98167a2 ncurses: build "normal" libs, not just "wide-char" libs, for ncurses@6: (#4246) 2017-05-14 07:37:50 -05:00
Christoph Junghans
f147c9f5f0 espressopp: always depends on py-numpy (#4207)
Ref espressopp/espressopp#161
2017-05-12 14:36:11 -05:00
Douglas Duckworth
360dc4a709 albacore and cutadapt again (#4219)
* added albacore package as well as dependency py-ont-fast5-api

* added py-cutadapt and dependency py-xopen

* made more changes to albacore and cutadapt as well as dependencies

* made changes again per @adamjstewart

* fixed by python n00b errors i think

* fixed?

* tw=79

* made changes to py-ont-fast5-api ont-albacore

* removed bad characters
2017-05-12 14:11:20 -05:00
Hans Pabst
4e13641db8 LIBXSMM 1.8.1 (#4235)
* Included LIBXSMM 1.8 into the list of available versions.

* LIBXSMM 1.8.1
2017-05-12 13:51:43 -05:00
Adam J. Stewart
c612781f6f Convert pixman to AutotoolsPackage (#4231) 2017-05-12 11:29:16 -05:00
Adam J. Stewart
1a6b4afe7f Add helpful error message for uncompressed downloads (#4205) 2017-05-12 09:52:01 -05:00
Jean-Paul Pelteret
d972ba7fbc Add SymEngine release 0.3.0 (#4227) 2017-05-12 07:49:06 -05:00
Milton Woods
2413f1ec3e Python cdat-lite package (#4208)
* py-cdat-lite: a python package for managing and analysing climate science data

* py-cdat-lite: depends on py-numpy

* py-cdat-lite: flake8 compliance

* py-cdat-lite: provide a generic URL where multiple versions are listed

* py-cdat-lite: restrict python versions; python required at run-time

* py-cdat-lite: use URL under pypi.io for consistency with other packages

* py-cdat-lite: add run-time dependency on py-numpy
2017-05-12 07:46:58 -05:00
Michael Kuhn
e7016b250f Add pdt support to scorep (#4198)
Add pdt dependency to scorep
2017-05-12 07:37:18 -05:00
Adam J. Stewart
5719cfb2f7 Download udunits from FTP server (#4218) 2017-05-11 19:07:12 -05:00
Adam J. Stewart
34cfd2483a Add latest version of eigen (#4224) 2017-05-11 19:06:11 -05:00
Adam J. Stewart
e7973dd290 Fix typo in PythonPackage documentation (#4221) 2017-05-11 19:05:02 -05:00
Adam J. Stewart
70939cf147 Fix metis list_url (#4222) 2017-05-11 19:04:38 -05:00
Stephen McDowell
d01f01c77f Flann package (#3966)
* Initial attempt at flann packaging.

Python2 somehow works. Python3 does not.  Still debugging their
obscure setup.py configuration.

* Flann good enough. Python3 broken but close.

Flake8 checks in place.  Unsure about CMAKE_BUILD_TYPE and default
spack behavior.

* spack uses RelWithDebInfo as default build type.

* builds py2/3, but direct site-packages install

* prefix working, empty python install dir

* flann package +python installs correctly

* str format {0} instead of {}

* potential doctest fix

* consistency of build env with PythonPackage

* fix python again, test deptype todo, build type

* potentially enable matlab, untested
2017-05-11 19:03:23 -05:00
Adam J. Stewart
4cc2d33bcf Force suite-sparse to use Spack's compiler wrappers (#4220) 2017-05-11 18:07:28 -05:00
Adam J. Stewart
9e65f2347c Add patch to fix missing MODULESHOME in profile (#4214) 2017-05-11 14:50:29 -05:00
Massimiliano Culpo
f8b3eff01c filesystem.py: fixed bug introduced in #3367 (scrambled order in output) (#4156)
PR #3367 inadvertently changed the semantics of _find_recursive and
_find_non_recursive so that the returned list are not ordered as the
input search list. This commit restores the original semantic, and adds
tests to verify it.
2017-05-11 10:29:08 -07:00
Adam J. Stewart
23ee792dcf Update NAG checksum, add F77 and FC (#4196) 2017-05-11 11:30:55 -05:00
Howard Pritchard
64dfc8bda6 Open MPI: add 2.1.1 to the list (#4204)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-05-10 16:08:52 -05:00
Michael Kuhn
a01be73185 Add nemesistcpib fabrics variant (#4197) 2017-05-10 14:37:01 -05:00
Suzanne Parete-Koon
e1d8cc86f0 updating git (#4200) 2017-05-10 14:36:10 -05:00
Matthew Thompson
604f65f395 Edits to get setup-env.csh working better (#4044)
* Edits to get setup-env.csh working better.

Autosets the sys_type a la setup-env.sh

* More stealing from bash setup script for module roots

* Add error message if SPACK_ROOT isn't set

* Remove _sp_lmod_root per Adam J Stewart
2017-05-10 10:18:45 -05:00
Erik Schnetter
e453865859 cosmomc: Enable Python bindings (#4169)
* cosmomc: Enable Python bindings

* cosmomc: Make python dependency optional
2017-05-10 10:10:53 -05:00
Erik Schnetter
28c7d15df8 hdf5: Correct spelling (#4172)
* hdf5: Correct spelling

* hdf5: avoid trailing spaces
2017-05-10 10:10:31 -05:00
Erik Schnetter
c422b33d77 highfive: New package; this is a C++ wrapper for the HDF5 library (#4173)
* highfive: New package; this is a C++ wrapper for the HDF5 library

The C++ wrapper that is shipped with the HDF5 library has several shortcomings. The highfive library seems to avoid these.

* highfive: Make MPI variant default to true
2017-05-10 09:47:56 -05:00
Adam J. Stewart
94c1651bce Add latest version of PGI compilers (#4186)
* Add latest version of PGI compilers

* Prepend, don't overwrite
2017-05-10 08:16:39 -05:00
Stephen McDowell
61ad369186 py-flask version updates, remote switch (#4166)
* version updates, remote switch

* trim versions to original and most recent

* proper url discovered and tested
2017-05-10 08:15:47 -05:00
Stephen McDowell
c0ceece9cc enable cuda support for suite-sparse (#4163)
* enable cuda support for suite-sparse

* do not use spec.satisfies

* cuda restructure, give clearer comment of why

* str format compatibility

* flake8 checks
2017-05-10 08:13:14 -05:00
Adam J. Stewart
b5eb298f3e Add a new package for ExtUtils::MakeMaker (#4179) 2017-05-09 18:52:08 -05:00
Adam J. Stewart
36db5ba9d8 Fix newline character in GCC package (#4181)
* Fix newline character in GCC package

* Remove the newline completely
2017-05-09 18:51:40 -05:00
Mark C. Miller
64fb2f22b4 Adding FASTMath uber package and missing FASTMath packages (#4120)
* adding 0.5.1 and variant for uint8 bit stream word type

* Revisions as per davydden

* fixing style (flake8) issues

* - switched to derive from MakefilePackage
- fixed typo in variant check
- Confirmed installs correctly with bswtuint8 variant

* added build method; changed zfp_incdir to incdir

* * Adding uber fastmath package to support 'spack install fastmath'
* Adding dims variant boxlib to control compile-time spatial dimension count
* Explicitly disabling many parts of moab to get lib to build. Don't need tools yet.
* Add logic to spack/setup-env to not refer to $SYS_TYPE if its not defined.

* adding mesquite package

* * Added Chombo (still working on Fortran name mangling)
* Made mesquite depend on mpi
* Fixed use of boxlib's dims numerical variant

* adding PUMI

* flake8 compliance

* adding phasta

* fixing flake8 issues

* undue $SYS_TYPE protection change

* fixing install step for fastmath uber package; resolve issues requested by adamjstewart in PR

* revisions as per adamjstewart

* re-enabling trilinos and phasta dependencies

* all changes requested modulu values= and assert statement

* fixing cmake_args usage in pumi; fixing lib installs for chombo

* first pass at numerical variant

* fixing dims variant as per @adamjstewart

* fixing func/var name collision

* fixing means of disabling -Werror

* fix name collision for cmake_args var/func

* fixing chombo homepage/url; make FASTMath use chombo#3.2; remove extraneous comment about boxlib dim

* remove dummy fastmath package; switch to @BarrySmith soln for install of dummy bundle

* fix flake8 import os issue

* remove extraneous comment

* adding url for fastmath scidac site

* final fixes as per @adamjstewart

* adding 1 dims option for boxlib

* switching make(all) to gmake(all)
2017-05-09 18:26:57 -05:00
Adam J. Stewart
a5fd658986 Add latest versions of Intel compiler (#4184) 2017-05-09 18:15:14 -05:00
George Hartzell
ba32f0d3a2 Make openmpi package defn more robust (#4183)
Make openmpi handle bad ibv_devices return statuses without bailing out completely.

See #4162 for background.
2017-05-09 18:00:08 -05:00
Erik Schnetter
692a100caa ncurses: Always build tools (#4174)
Otherwise, the install can fail if the system-provided `tic` binary is too old.
2017-05-09 17:59:46 -05:00
Erik Schnetter
caabcdc8b4 simulationio: Declare dependency on the HDF5 C++ bindings (#4177) 2017-05-09 17:59:21 -05:00
Erik Schnetter
44440d023d qthreads: Convert to AutoTools package (#4176) 2017-05-09 17:58:44 -05:00
Erik Schnetter
0e02f99323 funhpc: Update to version 1.3 (#4170)
Also use a Spack-provided GoogleTest.
2017-05-09 16:19:06 -05:00
Erik Schnetter
68034e4d42 gdbm: Declare readline dependency (#4171) 2017-05-09 16:18:17 -05:00
Gregory Lee
cbcf0f4674 Merge pull request #4165 from epfl-scitas/packages/cp2k_intel_stack_17
cp2k: fixed compilation issues for intel stack
2017-05-09 13:44:53 -07:00
Adam J. Stewart
e8f493ee7b Travis version of pip is too old (#4180)
* Travis version of pip is too old

* Also need to upgrade setuptools
2017-05-09 13:59:59 -05:00
Massimiliano Culpo
306f158c73 cp2k: fixed compilation issues for intel stack
Added DFLAGS to the `make.inc` file being written.
These macros are also added to the language specific variables
like CFLAGS, CXXFLAGS and FCFLAGS. Changed `spec.satisfies('foo')`
with `'foo' in spec` in `intel-mkl`, see #4135. Added a basic
build interface to `intel-mpi`.
2017-05-09 18:46:42 +02:00
Adam J. Stewart
4b866c6395 Add GCC 7 (#4144)
* Add GCC 7
* Allow users to build subset of GCC compilers with multi-value variant.
* Add comment explaining what 'all' actually means
* More specific golang support
* Only require Zip when building Java
* Comment out provide directives that don't currently work
* Add Ada support
* Use conflicts directive
* Fix joining of languages
* Need special flag to build jit
* Explicitly declare GNAT download extension
* Import tty, update lib64 to lib
* BRIG and Go are not supported on macOS
* Simplify formatting and imports
* JIT patch required for newer versions as well
2017-05-08 13:28:28 -07:00
Massimiliano Culpo
3efa9bd296 spec_syntax: added xfailing tests for cases in #4144 (#4151)
It seems that parse_anonymous_spec may fail if more than one part
(variant, version range, etc.) is given to the function. Added tests to
code against to fix the problem in #4144.
2017-05-08 13:24:37 -07:00
Todd Gamblin
ff3b5d88e4 rework spack help (#3033)
- Full help is now only generated lazily, when needed.
  - Executing specific commands doesn't require loading all of them.
  - All commands are only loaded if we need them for help.

- There is now short and long help:
  - short help (spack help) shows only basic spack options
  - long help (spack help -a) shows all spack options
  - Both divide help on commands into high-level sections

- Commands now specify attributes from which help is auto-generated:
  - description: used in help to describe the command.
  - section: help section
  - level: short or long

- Clean up command descriptions

- Add a `spack docs` command to open full documentation
  in the browser.

- move `spack doc` command to `spack pydoc` for clarity

- Add a `spack --spec` command to show documentation on 
  the spec syntax.
2017-05-08 13:18:29 -07:00
Denis Davydov
7923579a42 qt: add 5.8.0 which builds on Sierra with clang 8.1.0 (#4109)
* qt: add 5.8.0 which builds on Sierra with clang 8.1.0

* enable parallel build, add freetype dependency

* minor

* minor
2017-05-08 14:29:08 -05:00
scheibelp
16aa8faf45 Merge pull request #4145 from scheibelp/features/temporary-no-python-for-libxcb
Remove python dependency for libxcb and xcbproto
2017-05-08 11:22:27 -07:00
Massimiliano Culpo
85b0ebe836 BarrierTimeoutError must derive from Exception (#4157)
Seen in https://travis-ci.org/LLNL/spack/builds/229484526, very likely
due to a problem in the Travis builder.
2017-05-07 22:06:39 -07:00
Adam J. Stewart
cf93f49462 Fix PGI compiler detection on PowerPC (#4150) 2017-05-07 22:04:52 -07:00
Massimiliano Culpo
4e44d39f1a Spec.__init__: removed dead code (#4146)
The conditionals are repeated in the statement before _add_dependencies
2017-05-07 21:53:02 -07:00
Luigi Calori
b65daa93be Paramiko python extensions + his deps and other related extensions (#4158)
* adding paramiko and missing dependencies, setup to work with #2548

* adding other deps for paramiko

* fix flake8 errors

* removed spurious add

* address suggestion for proper dependencies

* fix cryptography deps

* remove FIXME comments and commented depends lines
2017-05-07 19:00:25 -05:00
nvarini
bb1a8efaca Added scala package (#67) 2017-05-07 13:05:29 +02:00
Adam J. Stewart
12633b06e4 Add Read the Docs badge to README (#4153) 2017-05-06 14:24:45 -05:00
Adam J. Stewart
42b09640f0 gmp: switch to download directly from GNU (#4152) 2017-05-06 14:24:19 -05:00
Adam J. Stewart
4f439f8e82 mpfr: switch to more reliable URL (#4139)
* Add list_url to mpfr

* Switch to download directly from GNU

* http -> https
2017-05-06 14:22:32 -05:00
Barry Britt
c0a52cc59e Updating bamtools to include a dependency for zlib. (#4031)
* Updating bamtools to include a dependency for zlib.

In a standard compile, bamtools will fail if zlib headers are not installed on the target machine. In order to maintain compatibility with all systems -- and since zlib is included already as a dependency for cmake -- this patch adds zlib as a link dependency for the bamtools package.

* Modified cmake rpath include.

Bamtools has a non-standard library location, so we need to append $prefix/lib/bamtools to the rpath. Not sure there's a better way to do this...

* Fixing syntax error in package.py

Fixed a non-terminated parenthesis on line 46.

* Updated bamtools to be a CMakePackage

Removed extraneous code, and altered the package to extend cmake_args
including the non-standard library location.

* UpRemoving cmake dependency and removing blank line from end of file

* Updates to cmake_args.

Removed the duplicate definition of std_cmake_args in favor of simply overriding the CMAKE_INSTALL_RPATH variable that is provided. This should allow the package to be linked correctly to itself.
2017-05-06 12:05:12 -05:00
Matthew Scott Krafczyk
741e4df233 Update zlib to work with other compilers (#4088)
* Fix -include issue with intel and pgi in zlib

MERGE CANDIDATE

* Patch zlib to compiler with the cray compiler suite.
2017-05-06 12:02:32 -05:00
Adam J. Stewart
73896e9481 Remind developers to update tab completion script (#4148) 2017-05-05 18:52:28 -05:00
George Hartzell
f55eddb9bd Add info for perl@5.22.1 (#4147)
What the user wants, the user gets....
2017-05-05 18:00:23 -05:00
Adam J. Stewart
be991a6efa Add latest version of curl (#4140) 2017-05-05 16:21:37 -05:00
Adam J. Stewart
6e23c31ad1 Python 3 doesn't have iteritems, use items (#4143) 2017-05-05 16:21:15 -05:00
Adam J. Stewart
c3af901ac6 Add latest version of Lmod (#4141) 2017-05-05 23:06:07 +02:00
Peter Josef Scheibel
19511a78b8 Remove python dependency for libxcb and xcbproto
python+tk will not build because it depends (indirectly) on python~tk
via libxcb. There are efforts to allow multiple instances of a package
to concretize together but they are ongoing so in the meantime this
comments out the dependencies and adds TODOs
2017-05-05 13:06:49 -07:00
Adam J. Stewart
9b49dfdc2a Fix typos in Basic Installation Tutorial (#4127) 2017-05-05 13:05:56 -05:00
George Hartzell
f532b4c90b Add info for jdk@8u73 (#4137)
* Fix ordering of versions (proper!)

* Add url/digest for jdk@8u73
2017-05-05 13:05:27 -05:00
Todd Gamblin
665e328566 Add OpenCV 3.2.0 checksum (#4138) 2017-05-05 13:05:05 -05:00
George Hartzell
0042b5e856 Add info for r@3.3.3 (#4128) 2017-05-05 13:04:46 -05:00
Massimiliano Culpo
85b4b15d9a SV variants are evaluated correctly in "when=" (#4118)
* SV variants are evaluated correctly in `when=` statements fixes #4113

The problem here was tricky:
```python
spec.satisfies(other)
```
changes already the MV variants in others into SV variants (where
necessary) if spec is concrete. If it is not concrete it does
nothing because we may be acting at a pure syntactical level.

When evaluating a `when=` keyword spec is for sure not concrete
as it is in the middle of the concretization process. In this case we
have to trigger manually the substitution in other to not end up
comparing a MV variant "foo=bar" to a SV variant "foo=bar" and having
False in return. Which is wrong.

* sv variants: improved error message for typos in "when=" statements
2017-05-04 11:01:02 -07:00
Massimiliano Culpo
6a9052bd4d variants: fixed packages reported by @adamjstewart in #4098 (#4105) 2017-05-04 10:58:58 -07:00
scheibelp
0cf406d7b6 Merge pull request #4121 from davydden/fix_transitive_build_dep_2
add transitive run dependencies of direct build dependencies
2017-05-04 10:32:50 -07:00
Gregory Lee
26a9793148 patch sqlite to work around macro definition (#4117) 2017-05-04 06:43:27 -05:00
Denis Davydov
7592971cb1 add transitive run dependencies of direct build dependencies 2017-05-04 08:43:06 +02:00
scheibelp
bee105fbb9 Merge pull request #4069 from davydden/fix_transitive_build_dep
only add direct build-only dependencies to PATH
2017-05-03 18:41:26 -07:00
Matthew Scott Krafczyk
18db25bb02 Update py-beautifulsoup4 (#4089)
* Update py-beautifulsoup4

* Change beautifulsoup4 url to pypi.io url.
2017-05-03 14:17:04 -05:00
Matthew Scott Krafczyk
6e14b97f84 Update cray compiler options (#4086) 2017-05-03 12:05:15 -05:00
Matthew Scott Krafczyk
07e1597a15 building wget depends on perl > 5.12.0 (#4087)
* building wget depends on perl > 5.12.0

* Remove extra parenthesis
2017-05-03 10:29:55 -05:00
Massimiliano Culpo
060351e121 bash completion: fixed invalid identifier (#4079)
* bash completion: fixed `_spack_create-db-tarball': not a valid identifier

* bash completion: dashes are translated to underscores

This also fixes the name of the subfunction to be called, as apparently
it was not updated after moving the command `create-db-tarball`.
2017-05-03 08:12:33 -05:00
Massimiliano Culpo
7ef46f4f69 hdf5: updated version (#4108) 2017-05-03 08:06:04 -05:00
Massimiliano Culpo
ae9a9e019a spack: no stacktrace if not in debug mode + fix emacs variant (#4098)
* spack: no stacktrace if not in debug mode + fix emacs variant

* emacs: removed dead code
2017-05-03 06:21:37 +02:00
Matthew Scott Krafczyk
72d45f7a44 Add the py-dryscrape package (#4094)
* Add the py-dryscrape package

* Adjust dependencies and change development to develop
2017-05-02 18:47:55 -05:00
Matthew Scott Krafczyk
a651b979ca Update the py-lxml package (#4090) 2017-05-02 16:35:42 -05:00
Matthew Scott Krafczyk
f265eefa22 Add findutils package (#4091) 2017-05-02 16:35:15 -05:00
Matthew Scott Krafczyk
abdb1fb0a0 Add the py-webkit-server package (#4092)
* Add the py-webkit-server package

* Change development to develop
2017-05-02 16:34:28 -05:00
Matthew Scott Krafczyk
2a1301596d Add the py-xvfbwrapper package (#4093) 2017-05-02 15:29:48 -05:00
Matthew Scott Krafczyk
70ea990efd Add py-pyprof2html package (#4095) 2017-05-02 15:28:46 -05:00
Matthew Scott Krafczyk
39ddc7d159 Add py-libconf package (#4096) 2017-05-02 15:28:19 -05:00
Matthew Scott Krafczyk
a0efcaef69 Add the libconfig package (#4097) 2017-05-02 15:27:56 -05:00
Massimiliano Culpo
78c4d0bd20 cgal: updated version (#4081) 2017-05-02 12:27:37 -05:00
Adam J. Stewart
1336630f17 Add link to spack view docs in command index (#4082) 2017-05-02 11:20:45 -05:00
Adam J. Stewart
9a3acea759 Allow ghostscript to build with Spack dependencies (#4065) 2017-05-02 09:45:10 -05:00
Adam J. Stewart
0f9059236c Add missing dependencies to emacs (#4068) 2017-05-02 09:44:02 -05:00
Massimiliano Culpo
b32afbbbcb mvapich2: fixed broken reference to spec (#4078) 2017-05-02 11:26:30 +02:00
Denis Davydov
708d8586ea add run-time dependencies of direct build-time dependencies to PATH 2017-05-02 08:43:37 +02:00
Todd Gamblin
094d47bff1 Allow user to specify profile sort column on the command line. (#4056)
- Add -P <STAT> argument so that caller can specify a sort column for
  cProfile. Can specify multiple columns with commas. e.g.:
      spack -P cumtime,module

- Add --lines option to Spack spec to control number of profile lines
  displayed

- Sort by time by default (because it works in all Python versions)

- Show sort column options in command help.

- Do a short profile run in the unit tests.
2017-05-01 14:32:33 -07:00
Denis Davydov
ef5da08f80 only add direct build-only dependencies to PATH 2017-05-01 22:58:24 +02:00
Adam J. Stewart
c86b53a73f Add latest version of libtiff (#4067) 2017-05-01 15:19:51 -05:00
Massimiliano Culpo
9e4b0eb34a Multi-valued variants (#2386)
Modifications:
- added support for multi-valued variants
- refactored code related to variants into variant.py
- added new generic features to AutotoolsPackage that leverage multi-valued variants
- modified openmpi to use new features
- added unit tests for the new semantics
2017-05-01 13:08:47 -07:00
Adam J. Stewart
5d0d670b72 Add latest version of lcms (#4066) 2017-05-01 14:31:59 -05:00
Todd Gamblin
32dd20035f Skip fetch tests for tools that are not installed. (#4059)
This allows people on systems that don't have all the fetchers to still
run Spack tests. Mark tests that require git, subversion, or mercurial to
be skipped if they're not installed.
2017-05-01 11:53:16 -07:00
Massimiliano Culpo
aa9da358b5 url_parse: ported to pytest (#3430) 2017-05-01 08:57:49 -07:00
Massimiliano Culpo
f60134cdb1 namespace_trie: ported to pytest (#4060) 2017-05-01 08:53:50 -07:00
Adam J. Stewart
2511520b32 Add a WafPackage base class (#3975)
* Add a WafPackage base class

* Correct comment in docstring

* Be more specific about the Python versions supported
2017-05-01 08:00:09 -07:00
Massimiliano Culpo
b3ce04cba3 url_substitution: ported to pytest (#4032) 2017-05-01 01:41:48 -07:00
Christoph Junghans
9f46bc8997 flecsale: works with python3 (#4058)
Ref laristra/flecsale#41
2017-04-30 19:25:16 -07:00
Denis Davydov
c7a5b2eaa9 disable rpaths on Darwin when arg=-r mode=ccld (#3930)
This fixes build of Ipopt package.
2017-04-30 19:16:28 -07:00
Sergey Kosukhin
4421013290 Updated cc wrapper: switch from ld to vcheck if version is requested. (#2501) 2017-04-30 19:08:49 -07:00
Adam J. Stewart
1f303c9ac8 Don't add system paths to PATH (#3910)
* Filter all system paths introduced by dependencies from PATH
* Make sure path filtering works *even* for trailing slashes
* Revert some of the changes to `filter_system_paths`
* Yes, `bin64` is a real thing (sigh)
* add tests: /usr, /usr/, /usr/local/../bin, etc.
* Convert from rST to Google-style docstrings
2017-04-30 18:43:44 -07:00
Massimiliano Culpo
8551ef3874 spack_yaml: ported to pytest (#4033) 2017-04-30 17:27:40 -07:00
Massimiliano Culpo
6a01612ad4 file_list: ported to pytest (#4054) 2017-04-30 10:09:04 -07:00
Massimiliano Culpo
17767bcf25 suite-sparse: updated version (#4055) 2017-04-30 12:01:35 +02:00
Christoph Junghans
110f68a83f Clean up now that submodules are properly supported. (#4053) 2017-04-29 20:43:16 -07:00
Christoph Junghans
0a9beccc4a flecsale: add more features (#4052) 2017-04-29 20:39:22 -05:00
Christoph Junghans
ea2f6b89e9 fetch: do full clone of git submodules (fix #3956) (#3958)
The required hash of a submodule might point to the
non-HEAD commit of the current main branch and hence
would lead to a "no such remote ref" at checkout in
a shallow submodule.
2017-04-29 17:58:52 -07:00
Adam J. Stewart
ce3ab503de Python command, libraries, and headers (#3367)
## Motivation

Python installations are both important and unfortunately inconsistent. Depending on the Python version, OS, and the strength of the Earth's magnetic field when it was installed, the name of the Python executable, directory containing its libraries, library names, and the directory containing its headers can vary drastically. 

I originally got into this mess with #3274, where I discovered that Boost could not be built with Python 3 because the executable is called `python3` and we were telling it to use `python`. I got deeper into this mess when I started hacking on #3140, where I discovered just how difficult it is to find the location and name of the Python libraries and headers.

Currently, half of the packages that depend on Python and need to know this information jump through hoops to determine the correct information. The other half are hard-coded to use `python`, `spec['python'].prefix.lib`, and `spec['python'].prefix.include`. Obviously, none of these packages would work for Python 3, and there's no reason to duplicate the effort. The Python package itself should contain all of the information necessary to use it properly. This is in line with the recent work by @alalazo and @davydden with respect to `spec['blas'].libs` and friends.

## Prefix

For most packages in Spack, we assume that the installation directory is `spec['python'].prefix`. This generally works for anything installed with Spack, but gets complicated when we include external packages. Python is a commonly used external package (it needs to be installed just to run Spack). If it was installed with Homebrew, `which python` would return `/usr/local/bin/python`, and most users would erroneously assume that `/usr/local` is the installation directory. If you peruse through #2173, you'll immediately see why this is not the case. Homebrew actually installs Python in `/usr/local/Cellar/python/2.7.12_2` and symlinks the executable to `/usr/local/bin/python`. `PYTHONHOME` (and presumably most things that need to know where Python is installed) needs to be set to the actual installation directory, not `/usr/local`.

Normally I would say, "sounds like user error, make sure to use the real installation directory in your `packages.yaml`". But I think we can make a special case for Python. That's what we decided in #2173 anyway. If we change our minds, I would be more than happy to simplify things.

To solve this problem, I created a `spec['python'].home` attribute that works the same way as `spec['python'].prefix` but queries Python to figure out where it was actually installed. @tgamblin Is there any way to overwrite `spec['python'].prefix`? I think it's currently immutable.

## Command

In general, Python 2 comes with both `python` and `python2` commands, while Python 3 only comes with a `python3` command. But this is up to the OS developers. For example, `/usr/bin/python` on Gentoo is actually Python 3. Worse yet, if someone is using an externally installed Python, all 3 commands may exist in the same directory! Here's what I'm thinking:

If the spec is for Python 3, try searching for the `python3` command.
If the spec is for Python 2, try searching for the `python2` command.
If neither are found, try searching for the `python` command.

## Libraries

Spack installs Python libraries in `spec['python'].prefix.lib`. Except on openSUSE 13, where it installs to `spec['python'].prefix.lib64` (see #2295 and #2253). On my CentOS 6 machine, the Python libraries are installed in `/usr/lib64`. Both need to work.

The libraries themselves change name depending on OS and Python version. For Python 2.7 on macOS, I'm seeing:
```
lib/libpython2.7.dylib
```
For Python 3.6 on CentOS 6, I'm seeing:
```
lib/libpython3.so
lib/libpython3.6m.so.1.0
lib/libpython3.6m.so -> lib/libpython3.6m.so.1.0
```
Notice the `m` after the version number. Yeah, that's a thing.

## Headers

In Python 2.7, I'm seeing:
```
include/python2.7/pyconfig.h
```
In Python 3.6, I'm seeing:
```
include/python3.6m/pyconfig.h
```
It looks like all Python 3 installations have this `m`. Tested with Python 3.2 and 3.6 on macOS and CentOS 6

Spack has really nice support for libraries (`find_libraries` and `LibraryList`), but nothing for headers. Fixed.
2017-04-29 17:24:13 -07:00
Adam J. Stewart
a32a0eacba Add a new package for dash (#4050) 2017-04-29 12:24:50 -07:00
Adam J. Stewart
90a57cdf8f Add latest version of PGI compilers (#4047)
* Add latest version of PGI compilers

* Add environment variables for PGI
2017-04-29 13:55:00 -05:00
Massimiliano Culpo
89ea5bdd61 A few updates to packages (mostly version updates) (#4049) 2017-04-29 07:44:55 -05:00
George Hartzell
2cfc5eebb5 Bug/make dia build (#4045)
* Make dia build w/ Spack's X bits (and misc)

X related

- need to depend on the +X variant of gtkplus
- need to depend on freetype

misc

- fix path to tarball

* Make freetype a "build" dependency

* Freetype is not just a build dep
2017-04-28 15:30:09 -05:00
Mark Olesen
6814842814 Allow compilation of mgridgen (serial) as well as parmgridgen (parallel) (#3906) 2017-04-28 15:02:05 -05:00
sknigh
15692c5475 ncurses package builds ncurses and ncursesw (#3953)
* ncurses package will build ncurses and ncursesw

* Added libs property to ncurses, added fix for hstr

* flake8 is a harsh mistress

* make libs() more robust

* atop depends on ncurses

* fish depends on ncurses

* libtermkey and nano depend on ncurses

* Adjust url spacing
2017-04-28 14:57:55 -05:00
Adam J. Stewart
4bfba146d5 Add tests to MakefilePackage (#4039) 2017-04-28 14:55:28 -05:00
Brian Van Essen
7f9acfa3b2 Various patches to Openblas for Intel (#4030)
* Added a patch to the openblas package to change the openmp flag for
icc to qopenmp.

* Fixed a linking problem where when using Intel compilers, it was still
pulling in -lgfortran
2017-04-28 14:54:59 -05:00
George Hartzell
529a2ae5fa Depend on readline, remove hardcoded -ltermcap (#4042)
* depend on readline, remove hardcoded -ltermcap

Bowtie should use Spack's readline and not explicitly depend on the
system termcap (which, on CentOS, leads to linking against the
system's tinfo library).

* Add depends_on('zlib')

* Add conflict with gcc@6:

Build seems to have trouble with 6's migration to -std=gnu++14.
2017-04-28 14:47:43 -05:00
Adam J. Stewart
3f6e03d5c1 Add a new package for Cbench (#4043) 2017-04-28 13:44:30 -05:00
Adam J. Stewart
2b6206a504 Add a new package for dos2unix (#4037) 2017-04-28 13:13:42 -05:00
Denis Davydov
a1059b5a6c dealii: fix missing -march=native in flags (#4036) 2017-04-28 12:43:06 -05:00
Adam J. Stewart
d970ef5404 Add a list_url for libpng (#4038) 2017-04-28 10:53:14 -05:00
Massimiliano Culpo
e78e87fd4b python: added version 3.6.1 (#4035) 2017-04-28 09:55:02 -05:00
Massimiliano Culpo
59ac047996 No compiler found: fixed error message (#4034)
When a compiler was not found a stacktrace was displayed to user because
there were three arguments to be substituted in a string with only two
substitutions to be done.
2017-04-28 08:37:47 -05:00
Christoph Junghans
8d92e26712 New package: portage (#4029) 2017-04-28 07:25:29 +02:00
Adam J. Stewart
091a689cb0 Add new package for PVM (#4028) 2017-04-28 07:24:23 +02:00
scheibelp
9a67e95686 Reindex checks install for non-external packages (#4027)
Fixes #4026

#1167 updated Database.reindex to keep old installation records to
support external packages. However, when a user manually removes a
prefix and reindexes this kept the records so the packages were
still installed according to "spack find" etc. This adds a check
for non-external packages to ensure they are properly installed
according to the directory layout.
2017-04-27 15:23:09 -07:00
Christoph Junghans
e8a814463c New package: flecsale (#4025) 2017-04-27 16:52:26 -05:00
Jeffrey Salmond
510d725b64 add relion package (#4020)
* add relion package

* fix flake8

* add licence
2017-04-27 16:52:05 -05:00
Kelly (KT) Thompson
109a3ed8e9 Dia requires libxml2. (#3976)
* Dia requires libxml2.

* Clean up dependencies for Dia (and add X11 deps).

+ Remove dependencies on cairo and libpng.  The will be satisfied via gtkplus.
+ Add dependencies on X11 libraries: libsm, libuuid, libxinerama, libxrender.
+ From a dependency diagram, it doesn't appear that we need libxml2 since this
  dependency should be come in through cairo (via gtkplus).  However, Dia will
  not build without it.
2017-04-27 14:04:45 -07:00
Adam J. Stewart
0488654f67 Prevent spack test flake8 from making changes (#4023) 2017-04-27 15:18:38 -05:00
Christoph Junghans
6f62a4fe36 flecsi: add mpi interoperability (#4000) 2017-04-27 15:10:30 -05:00
Adam J. Stewart
5d6a488c69 Add latest versions of root (#4022) 2017-04-27 14:13:39 -05:00
Todd Gamblin
bb5a433a46 Separate integration tests; simplify test scripts (#4006)
* Separate build integration tests; simplify test scripts

- Move build tests out of the regular Travis unit tests, add more smoke
  test packages to build.

- Run all test scripts with bash -e, which fails on error.

- Factor coverage out into a Travis environment variable, so it's more
  obvious from .travis.yml which tests contribute to coverage and which
  don't.

- Factor dependency checking and much of the front-matter in tests
  scripts into a setup.sh script, which is sourced by all the test
  scripts.  Extra cruft in each tests script now reduced to 2 lines at
  the beginning.
2017-04-27 11:47:56 -07:00
Adam J. Stewart
a0ebce0cb3 Remove 'release' suffix from package name (#4014) 2017-04-27 10:11:59 -07:00
Adam J. Stewart
d83ae6dcff Don't print successfully uninstalled twice (#4019) 2017-04-27 10:11:35 -07:00
Todd Gamblin
2d9dac9af0 Fix Python3 issue with sbang checking; add tests. (#4017) 2017-04-27 09:21:35 -07:00
George Hartzell
58567a2182 Adjustments to get gtkplus to build (#3208)
* Hackery to get gtkplus to build

PR #3077 broke gtkplus by introducing gobject-introspection.

This big hack makes things work.  It has problems.

1. Rather than deal with the nasty sbang fooey in the
   g-ir-tool-template.in derived scripts, it just adds a python
   dependency to each package that runs one of the scripts.  This lets
   the `/usr/bin/env python` sbang do the right thing.

2. It stuffs a several directories on to the XDG_DATA_DIRS environment
   variable, which is used for (among other things) locating the .gir
   files.

3. It avoids building the gtkplus demos because I can't make the bit
   that calls `gdk-pixbuf-csource` work.  It doesn't think that it can
   load `.png` files and all of the google hits I found suggest a bad
   `loader.cache` file.  The file's fine and I can strace the command
   and watch it read it in...  Many, many hours wasted here.

   In spite of the demo failing, the tests pass and an emacs built
   with this lib seems to work.

* Fix sbang so everyone needn't depend_on python

Rather than have every package that
`depends_on('gobject-introspection')` also need to
`depend_on('python')`, this commit fixes the
scripts (e.g. `g-ir-scanner`).

The interesting bit is in the gobject-introspection package.  There is
a beefy comment there that is included below.

The commit also removes the now un-necessary dependencies from various
packages.

I have two reservations about this commit:

1. How portable is the "insertion" sed command?  I'm particularly
   worried that some sed's might need the line to insert to be on a
   different line, which I can't imagine how to cram into the
   Makefile.in.

   The solution I see to this is rather than extending the existing
   sed command in the Makefile I could shim in another line in the
   rule and e.g. call a bit of Perl (or Python, I suppose) which would
   end up being much neater.

2. As written it always uses Spack's `.../bin/sbang`, which might or
   might not be a good idea.

   If I use "the solution" from number 1 above, then I can check the
   line length before I munge it.  Otherwise???

---

 This package creates several scripts from                                                                                                |
 toosl/g-ir-tool-template.in.  In their original form these                                                                               |
 scripts end up with a sbang line like                                                                                                    |
                                                                                                                                          |
 `#!/usr/bin/env /path/to/spack/python`.                                                                                                  |
                                                                                                                                          |
 These scripts are generated and then used as part of the build                                                                           |
 (other packages also use the scripts after they've been                                                                                  |
 installed).                                                                                                                              |
                                                                                                                                          |
 The path to the spack python can become too long.  Because these                                                                         |
 tools are used as part of the build, the normal hook that fixes                                                                          |
 this problem can't help us.                                                                                                              |
 This package fixes the problem in two steps:                                                                                             |
 - it rewrites the g-ir-tool-template so that its sbang line                                                                              |
   refers directly to spack's python (filter_file step below); and                                                                        |
 - it patches the Makefile.in so that the generated Makefile has an                                                                       |
   extra sed expression in its TOOL_SUBSTITUTION that results in                                                                          |
   an `#!/bin/bash /path/to/spack/bin/sbang` unconditionally being                                                                        |
   inserted into the scripts as they're generated.                                                                                        |

* Cairo needs python when it's +X

Cairo needs to depend_on python when it's +X.  I think it's an
indirect requirement that's coming in via libxcb).

* Flake8 cleanup

* Make cairo's dep on python be type=build

This seems to be the right thing and seems to produce a result
that works (I can build gtk+ and then emacs+X on top of it).
2017-04-27 11:04:26 -05:00
Milton Woods
41e3e7dbff ghostscript: add version 9.21 and handle new URL format (#3898)
* ghostscript: add version 9.21 and handle new URL format

* ghostscript: add url of latest version to fix `spack versions`

* ghostscript: use github for all versions our package provides (>= 9.18)
2017-04-27 10:42:56 -05:00
Todd Gamblin
455cae01c2 Convert rest docstrings to Google docstrings. (#3994)
- Sometimes you need something mindless to do.
- Sometimes it can be helpful, as well.
2017-04-27 07:45:34 -07:00
Massimiliano Culpo
a6986312ba pattern: ported to pytest (#4015) 2017-04-27 07:45:04 -07:00
Adam J. Stewart
91b32f67cc Fix alignment of versions and urls in spack checksum (#4003) 2017-04-26 15:55:35 -07:00
Massimiliano Culpo
0403a08509 link_tree: ported to pytest (#4008) 2017-04-26 15:36:35 -07:00
Adam J. Stewart
5422ac1558 Add latest version of libx11 (#4011) 2017-04-26 17:35:29 -05:00
Adam J. Stewart
2553afac25 Add latest version of libxpm (#4012) 2017-04-26 17:34:47 -05:00
Adam J. Stewart
369d370d0c Add latest version of libxrender (#4013) 2017-04-26 17:34:27 -05:00
Adam J. Stewart
463d91cd9f Add latest version of xproto (#4010) 2017-04-26 16:35:07 -05:00
Adam J. Stewart
581635c5ab Add latest version of libpthread-stubs (#4009) 2017-04-26 16:27:46 -05:00
Adam J. Stewart
2c1e5f9ee1 Add latest version of fontconfig (#4007) 2017-04-26 15:49:48 -05:00
Adam J. Stewart
348e715da7 Add missing readline dependency to sqlite (#4001)
* Add missing readline dependency to sqlite

* Fix typo
2017-04-26 14:59:03 -05:00
Gregory Lee
378935916a matplotlib and basemap require setuptools to run properly together (#3835)
* matplotlib and basemap require setuptools to run properly together

* flake 8 fix
2017-04-26 13:53:27 -05:00
Barry Smith
1e18ace647 Update checksum for dummy xsdk package (#4002)
Commit-type: bug-fix
Funded-by: IDEAS
Project: xSDK
Reported-by: "Klinvex, Alicia Marie" <amklinv@sandia.gov>
2017-04-26 13:39:09 -05:00
Todd Gamblin
b3ba9bdb37 Add __format__ support to version for fancy formatting. (#3996)
- add Version.__format__ to support new-style formatting.
- Python3 doesn't handle this well -- it delegates to
  object.__format__(), which raises an error for fancy format strings.
- not sure why it doesn't call str(self).__format__ instead, but that's
  hwo things are.
2017-04-26 11:06:34 -07:00
Adam J. Stewart
c616e4a619 Add list_url for bzip2 (#3988) 2017-04-26 10:49:27 -05:00
Jeffrey Salmond
e3378a0d3b add kokkos package (#3997)
* add kokkos package

* fix flake8

* add descriptions to kokkos variants
2017-04-26 09:33:00 -05:00
Christoph Junghans
97af407ae4 gasnet: build with fPIC for shared lib consumers (#3962) 2017-04-26 09:31:23 -05:00
jadoro
eba21b86bd Add ncurses as zsh dependency (#3991)
zsh build will fail with 
configure: error: "No terminal handling library was found on your system."
if ncurses is not found.
2017-04-26 07:53:58 -05:00
Milton Woods
e6efb1aa21 perl: identify dependency on gdbm (#3896)
* perl: provide +gdbm variant for use when system dbm is missing or buggy

* perl: remove gdbm variant; always depends on gdbm

* perl: pass gdbm paths as Configure arguments
2017-04-26 07:42:43 -05:00
futuretristan
3b32e008ec ipopt: fix build with Linux clang (#3995) 2017-04-26 01:42:48 -07:00
Adam J. Stewart
eaa50d3b7c Add API Docs for lib/spack/llnl (#3982)
* Add API Docs for lib/spack/llnl
* Clean up after previous builds
* Better fix for purging API docs
2017-04-25 22:24:02 -07:00
Adam J. Stewart
11dae722c2 Fix bug with '# noqa' filtering (#3993) 2017-04-25 22:23:01 -07:00
George Hartzell
33c9a91d85 Make perl and python variants (#3992)
The blast+ configure script supports building
--with-{python,perl}=path and --without-{python,perl}.

This commit makes the use of those two languages configurable via
variants and adds dependencies and explicit --with-... or
--without-... flags to configure.

Python was a non-optional dependency, now it is a variant that
defaults to `True`.

Perl was not previously an explicit dependency but the configure
script was likely to discover one on your system (`/usr/bin/perl`).
It is now a variant that defaults to `True`.

I am unable to accurately determine what these flags to the configure
script enable.  My users are frustrated by the dependency on Python in
particular because it constrains the other modules that they can have
loaded for new discernible benefit.
2017-04-26 06:04:20 +02:00
Barry Smith
d04ae9a2b4 xsdk version 0.2.0 (#3928)
* xSDK: a bundle/meta package that simple installs a series of packages with suitable specs

This is based on struggles with previous attempts at such a bundler
Funded-by: IDEAS
Project: IDEAS/xSDK
Time: 12 hours

* PETSc needs c++11 when built with Trilinos

* Added alquimia package

* remove direct setting of cpp in petsc/package.py since it doesn't work on some systems.

Funded-by: IDEAS
Project: IDEAS/xSDK
Time: .3 hours
Reported-by: Mark A. Berrill <berrillma@ornl.gov>

* provide the MPI compilers to PETSc configure with --with-cc etc instead of --with-mpi-dir

Funded-by: IDEAS
Project: IDEAS/xSDK

* Spack bug fix issue #3144

String could contain /n which resulting in spack generating warning message to stderr on each
use of compiler which configure interpreted as failing compiler

Thanks-to: Mark A. Berrill <berrillma@ornl.gov>

* Fixed alquimia package

Alquimia expects PETSC_DIR and PETSC_ARCH to be defined, and
refuses to install if they are not.  Spack does not define PETSC_
ARCH, so Alquimia will not install.  This patch does two things
to fix the alquimia build:

1. A patch has been added to remove the dependency on PETSC_ARCH.

2. Alquimia currently depends on old versions of PETSc and pflotran.
   @ghammond86 updated the alquimia interfaces to use more recent
   versions, but his patch is still sitting in an alquimia pull
   request.  As a result, the spack installer now uses his fork
   of alquimia.  This is a temporary fix until his pull request is
   accepted.

* Need to pass to Alquimia the MPI compilers, not the raw compilers

Otherwise the PETSc tests do not produce executables that can run because they are not
linked against MPI libraries

Funded-by: IDEAS
Project:  IDEAS/xSDK
Time: .5 hours

* Add alquimia to xSDK build

Funded-by: IDEAS
Project: IDEAS/xSDK

* Fix flake8 errors for xsdk packages

* Add xsdk support for xsdk version xsdk-0.2.0

Note that currently it is just dummy code, but will eventually use
a xsdk-0.2.0 tag for each package it installs.

Funded-by: IDEAS
Project:  IDEAS/xSDK
Time: .7 hours

* Do not build Mumps by default for PETSc since it is not portable, for example to Cray

Allow alquimia to accept PETSc even if the PETSc test executable cannot run since this is a problem on Cray.

Reported-by: Alicia Marie Klinvex <amklinv@sandia.gov>

* Add xsdk-0.2.0-rc1 tag for xsdk-0.2.0 installs

* Switch alquimia download site back to standard location

since they have incorporated Glenn Hammond's fixes
Also it no longer needs the patch to the Alquimia cmake

Funded-by: IDEAS
Project: IDEAS/xSDK
Reported-by: Sergi Molins Rafa <smolins@lbl.gov>

* update hypre to use the latest release candidate for xsdk 0.2.0

Funded-by: IDEAS
Project: IDEAS/xSDK
Reported-by: Ulrike Meier Yang <yang11@llnl.gov>

* Re-added patch to alquimia

The patch was out of date and has been updated accordingly.

* Added Tpetra-free option to Trilinos

The Tpetra stack takes forever to build and is not used by any of the
IDEAS teams, so there should be an option to disable it.  I have added
this option and updated the xSDK accordingly.  I also disabled
xSDKTrilinos in the xSDK, since none of the apps teams currently use it,
and it's largely Tpetra-based.

* Removed alquimia patch from develop version

The patch has been incorporated into alquimia and is no longer
necessary for the develop version.  The tagged version has not
been updated accordingly and still needs the patch for now.
(When the tagged version gets updated, the patch does need to be
removed from spack altogether, or it will break the build.)

* Removed patch from alquimia

It has been incorporated into alquimia, both the develop and
rc2 tagged versions.  The 0.2.0 version of alquimia has been updated
to tag rc2 rather than rc1.

* update xsdk-0.2.0 to depend on PETSc xsdk-0.2.0-rc2 which fixes for Apple xcode 8.3

Commit-type: bug-fix
Funded-by: IDEAS
Project: IDEAS/xSDK

* import sys got lost in merge with develop

* Update xsdk packages to use xsdk-0.2.0 tag

Commit-type: feature
Funded-by: IDEAS
Project: ECP

* Fixes for Flake8

note, had to ignore some long lines due to a single string

* simple improvements to XDK packages as suggested by Spack pull request reviewers

Commit-type: style-fix
Funded-by: IDEAS
Project: xSDK

* Removed unneeded : after develop as requested by Denis Davydov in pull request review

Commit-type: style-fix
Funded-by: IDEAS
Project: xSDK
Thanks-to: Denis Davydov

* Removed change that may not be needed due to updates in PETSc spack file such as using mpicc etc directly

Commit-type: bug-fix
Funded-by: IDEAS
Project: xSDK
Thanks-to: Adam J. Stewart

* Do not turn on xSDKTrilinos for xSDK builds since it requires tpetra

Commit-type: bug-fix
Funded-by: IDEAS
Project: xSDK

* comment why MUMPS is disabled by default for PETSc so that others won't try to enable it when modifying petsc package next time

Commit-type: documentation
Funded-by: IDEAS
Project: xSDK
Thanks-to: Denis Davydov
2017-04-25 16:09:30 -07:00
Adam J. Stewart
4a7a4f5cd3 Add latest version of freetype (#3989) 2017-04-25 16:56:42 -05:00
Adam J. Stewart
af4893f854 Add latest version of libpng (#3987) 2017-04-25 16:12:40 -05:00
Adam J. Stewart
1617b88759 Mark 1.64.0 unstable until +mpi+python fixed. (#3984) 2017-04-25 15:45:52 -05:00
Adam J. Stewart
95a0e6a5fd Add list_url for fftw (#3985) 2017-04-25 15:45:25 -05:00
Christoph Junghans
ef09049f24 New package: pax-utils (#3980) 2017-04-25 15:06:07 -05:00
Todd Gamblin
3e508884fa spack flake8 should exempt line-wrapped directives (#3990)
- Omit final paren from regular expressions in cmd/flake8.py
- Allows long directives to be exempted even if they are wrapped.
2017-04-25 12:58:24 -07:00
Massimiliano Culpo
fc9896ed45 hooks take spec as an argument (instead of pkg) (#3967) 2017-04-25 12:54:53 -07:00
Adam J. Stewart
58f2a947db Properly ignore flake8 F811 redefinition errors (#3932)
* Properly ignore flake8 F811 redefinition errors
* Add unit tests for flake8 command
* Allow spack flake8 to work on systems with older git
* Skip flake8 unit tests for Python 2.6 and 3.3
2017-04-25 11:01:25 -07:00
Adam J. Stewart
827ebe280d Add latest version of NCO (#3978) 2017-04-25 12:10:55 -05:00
Adam J. Stewart
18dd9c0860 Add patch to gettext to fix parallel make check (#3981) 2017-04-25 12:10:35 -05:00
Christoph Junghans
54bfa888b9 legion: add mpi interoperability and shared libs (#3959)
* legion: add mpi inoperability

* legion: make +mpi the default

* legion: add shared variant
2017-04-25 12:06:05 -05:00
健美猫
dd5f4cb251 A new package: CNTK. (#3578) 2017-04-25 06:40:23 -05:00
serbanmaerean
eef7d17946 Add global arrays package (#3970)
* Added magma package

* Incorporated Serban's change

* globalarrays: add global arrays package to Spack.

* globalarray: remove extreaneous comment from package file
2017-04-24 16:04:40 -07:00
Todd Gamblin
99a8297add Rename tutorial_sc16.rst to tutorial.rst (#3974)
- make the name more generic for posterity.
2017-04-24 15:25:41 -07:00
Brian Van Essen
00fdbe81bc Caffe (#3948)
* Added a package for the MDAnalysis toolkit.

* Added the hash for the 1.0 release of caffe and put in a conflict
statemet indicating that protobuf requires a c++11 compiler.

* Changed minimum version number.

* Tweaked the minimum version number.

* Fixed flake8 error.
2017-04-24 13:32:27 -05:00
Adam J. Stewart
c144c88302 Use six.moves.input instead of raw_input (#3961)
* Use six.moves.input instead of raw_input

* Remove comment mentioning raw_input
2017-04-23 10:32:08 -05:00
Gregory Lee
67bf71630b Do not require license for new Intel libraries (#3931)
* new Intel libs do not require license to install

* updated Intel library package URLs

* disable license_required for new Intel libraries
2017-04-23 08:58:47 -05:00
Milton Woods
b2155a5682 Update ECWMF packages: grib-api, libemos and magics (#3901)
* grib-api: add version 1.21.0

* libemos: add version 4.4.7 and allow choice of eccodes or grib-api

* magics: add version 2.32.0

* libemos: add description for eccodes variant
2017-04-23 07:56:47 -05:00
Milton Woods
980ffcdcec eccodes: new package for encoding and decoding meteorological data (#3900)
* eccodes: new package for encoding and decoding meteorological data

* eccodes: remove line breaks from package docstring

* eccodes: simplify names of variants

* eccodes: give a description for each variant

* eccodes: use succinct code for cmake_args

* eccodes: found extra dependency for python variant

* eccodes: add URL for a list of available releases
2017-04-23 07:55:51 -05:00
Massimiliano Culpo
3b52d0a883 External packages are now registered in the DB (#1167)
* treats correctly a change from `explicit=False` to `explicit=True` in an external package DB entry.
* added unit tests
* fixed issues raised by @tgamblin . In particular the PR is no more hash-changing for packages that are not external.
* added a test to check correctness of a spec/yaml round-trip for things that involve an external
* Don't find external module path at each step of concretization
    * it's not necessary.. The paths are retrieved at the end of concretizaion
* Don't find replacements for external packages.
* Test root of the DAG if external
    * No reason not to test if the root of the DAG is external when external
packages are now first class citizens!
* Create `external` property for Spec (for external_path and external_module)
* Allow users to specify external package paths relative to spack
    * Canonicalize external package paths so that users may specify their
locations relative to spack's directory.
* Update tests to use new external_path and external properly.
* skip license hooks on external
2017-04-22 18:06:27 -07:00
Adam J. Stewart
4e17ae911b Hack to fix python dependency ranges (#3938)
* Hack to fix python dependency ranges

* Flake8
2017-04-22 17:31:50 -05:00
Adam J. Stewart
fc8106afe3 Find more versions from GitHub (#3952) 2017-04-22 17:31:22 -05:00
George Hartzell
281ba99460 Add version info for emacs@25.2 (#3957) 2017-04-22 16:01:17 -05:00
Denis Davydov
94a0cca080 add Intel mpi package and add MPI wrappers to Intel parallel studio (#3905)
* intel-mpi: add new package

* fix hashes

* fix typo

* flake8

* add install

* blank line

* error

* add bin64

* fix MPI wrappers in intel-parallel-studio

* add missing I_MPI_FC

* use shorter hashes
2017-04-22 07:30:51 -05:00
Matthew Krafczyk
16a7b27a9e more fixes for use of setuptools in python packages
- py-setuptools is required by py-yt for importing yt in jupyter notebooks.
- add two dependencies needed for python 2.7
- add the py-subprocess32 package
2017-04-21 23:35:02 -07:00
Paul Hopkins
8b92908ab4 Fix setuptools handling in Python packages.
- add setuptools dependencies to packages that need it.
- remove setuptools from packages that do not need it.
2017-04-21 23:35:02 -07:00
Todd Gamblin
9f0b94b4e1 PythonPackage builds flat installs instead of egg directories.
- Spack doesn't need eggs -- it manages its own directories

- Simplify install layout and reduce sys.path searches by installing all
  packages flat (eggs are deprecated for wheels, and this is also what
  wheels do).

- We now supply the --single-version-externally-managed argument to
  `setup.py install` for setuptools packages and setuptools.

- modify packages to only use setuptools args if setuptools is an
  immediate dependency

- Remove setuptools from packages that do not need it.

  - Some packages use setuptools *only* when certain args (likeb
    'develop' or 'bdist') are supplied to setup.py, and they specifically
    do not use setuptools for installation.

  - Spack never calls setup.py this way, so just removing the setuptools
    dependency works for these packages.
2017-04-21 23:35:02 -07:00
Christoph Junghans
0b002c2911 fetch git submodules recursively (#3779)
* fetch git submodules recursively

This is useful if the submodules have submodules themselves. On
the other hand doing a recursive update doesn't hurt if there
is only one level.

* fetch submodules with depth=1 as well (fix #2190)

* use git submodule with depth only for git>=1.8.4
2017-04-21 21:59:30 -07:00
Todd Gamblin
4572685710 Coverage for multiple Python versions. (#3951)
Update tests to use codecov for multiple python versions.
2017-04-21 17:41:30 -07:00
Todd Gamblin
ead58cbb90 spack uninstall no longer requires a known package. (#3915)
- Spack install would previously fail if it could not load a package for
  the thing being uninstalled.

- This reworks uninstall to handle cases where the package is no longer
  known, e.g.:
    a) the package has been renamed or is no longer in Spack
    b) the repository the package came from is no longer registered in
       repos.yaml
2017-04-21 16:52:44 -07:00
Adam J. Stewart
2a04fdca52 Convert LLVM to CMakePackage, update cmake dependency version (#3940)
* Convert LLVM to CMakePackage, update cmake dependency version

* Remove unused import
2017-04-21 18:38:07 -05:00
George Hartzell
a90e34f4ca Add info for nextflow@0.17.3 (#3947) 2017-04-21 18:28:13 -05:00
Todd Gamblin
c67f8e4aa1 Fix ABI detection issues with macOS gcc. (#3854)
- gcc on macOS says it's version 4.2.1, but it's really clang, and it's
  actually the *same* clang as the system clang.

- It also doesn't respond with a full path when called with
  --print-file-name=libstdc++.dylib, which is expected from gcc in abi.py.
  Instead, it gives a relative path and _gcc_compiler_compare doesn't
  understand what to do with it.  This results in errors like:

  ```
  lib/spack/spack/abi.py, line 71, in _gcc_get_libstdcxx_version
      libpath = os.readlink(output.strip())
  OSError: [Errno 2] No such file or directory: 'libstdc++.dylib'
  ```

- This commit does two things:

  1. Ignore any gcc that's actually clang in abi.py.  We can probably do
     better than this, but it's not clear there is a need to, since we
     should handle the compiler as clang, not gcc.

  2. Don't auto-detect any "gcc" that is actually clang anymore.  Ignore
     it and expect people to use clang (which is the default macOS
     compiler anyway).

Users can still add fake gccs to their compilers.yaml if they want, but
it's discouraged.
2017-04-21 15:45:12 -07:00
Todd Gamblin
63c3410370 Fix checksumming in Python3; add more fetch tests (#3941)
* Checksum code wasn't opening binary files as binary.

- Fixes Python 3 issue where files are opened as unicode text by default,
  and decoding fails for binary blobs.

* Simplify fetch test parametrization.

* - add tests for URL fetching and checksumming.
- fix coverage on interface functions in FetchStrategy superclass
- add some extra crypto tests.
2017-04-21 15:36:15 -07:00
Todd Gamblin
c0356182b6 Remove all test variants (#3923) 2017-04-21 15:18:56 -07:00
Denis Davydov
6017a6a6fe netcdf: fix missing CC = mpicc ; this makes it work with Intel MPI (#3942) 2017-04-21 14:43:27 -07:00
Jeffrey Salmond
a2135dff49 add cppcheck new version (#3935) 2017-04-21 12:54:27 -05:00
Adam J. Stewart
46d0ca9d01 Ensure that tests are optional (#3922) 2017-04-21 12:15:39 -05:00
Adam J. Stewart
5250e8ee89 Fix HPL build, convert to MakefilePackage (#3777)
* Fix HPL build, convert to MakefilePackage

* Flake8 fix

* Fix: spec -> self.spec

* Properly query for system libraries

* Update Intel-MKL as well

* Recurse in system libs, fix MKL path, fixes lapack_libs
2017-04-21 12:11:29 -05:00
Javier
41efada340 Adding new python package: py-python-gitlab (#3936) 2017-04-21 11:47:52 -05:00
Jimmy Tang
f86ed1e34d Fix for llvm 4.0.0 on centos (#3904)
* Fix for llvm 4.0.0 on centos

This addresses https://github.com/LLNL/spack/issues/3791

* Only enable this option if on linux

* Change condition to satisfy standard
2017-04-21 11:29:41 -05:00
Bruno Turcksin
a017c5e2ef Add boost 1.64.0 (#3934) 2017-04-21 10:06:31 -05:00
Brian Van Essen
011442fd37 Keras 2.0.3 (#3927)
* Added a package for the MDAnalysis toolkit.

* Added has for Keras version 2.0.3
2017-04-20 17:48:30 -05:00
Michael Kuhn
f520c0dd8d Add vampirtrace (#3911)
Since scorep does not support all use cases yet, vampirtrace is still
useful in some circumstances.
2017-04-20 15:01:06 -05:00
Adam J. Stewart
e2e6dea9b3 Gettext test suite fails when run in parallel (#3921) 2017-04-20 13:06:11 -05:00
Adam J. Stewart
f0a6ead19c Flake8 2017-04-20 12:48:02 -05:00
Adam J. Stewart
9ca0d1f5f0 Remove all test variants 2017-04-20 12:13:11 -05:00
Adam J. Stewart
21e4a81de0 Add Napoleon extension to support Google docstrings (#3920) 2017-04-20 08:32:21 -07:00
Todd Gamblin
beeca6bb54 Revert "Override partial installs by default" (#3918)
* Revert "Override partial installs by default (#3530)"

This reverts commit a65c37f15d.
2017-04-20 03:53:41 -07:00
Todd Gamblin
fa3e91bf2a Revert "Add lmod files to MODULEPATH" (#3917)
* Revert "Add lmod files to MODULEPATH (#3912)"

This reverts commit 186d1f4511.
2017-04-20 03:05:44 -07:00
Massimiliano Culpo
50d7b33563 test/python_version.py: ported to pytest (#3438) 2017-04-20 01:18:52 -07:00
scheibelp
a65c37f15d Override partial installs by default (#3530)
* Package install remove prior unfinished installs

Depending on how spack is terminated in the middle of building a
package it may leave a partially installed package in the install
prefix. Originally Spack treated the package as being installed if
the prefix was present, in which case the user would have to
manually remove the installation prefix before restarting an
install. This commit adds a more thorough check to ensure that a
package is actually installed. If the installation prefix is present
but Spack determines that the install did not complete, it removes
the installation prefix and starts a new install; if the user has
enabled --keep-prefix, then Spack reverts to its old behavior.

* Added test for partial install handling

* Added test for restoring DB

* Style fixes

* Restoring 2.6 compatibility

* Relocated repair logic to separate function

* If --keep-prefix is set, package installs will continue an install from an existing prefix if one is present

* check metadata consistency when continuing partial install

* Added --force option to make spack reinstall a package (and all dependencies) from scratch

* Updated bash completion; removed '-f' shorthand for '--force' for install command

* dont use multiple write modes for completion file
2017-04-19 21:59:18 -07:00
Adam J. Stewart
e12f2c1855 Set proper deptypes for certain build systems (#3866)
* Set proper deptypes for certain build systems

* Add depends_on to namespace
2017-04-19 21:33:14 -07:00
Adam J. Stewart
9bd6d21322 Add variant to mvapich2 to set size of rank bits (#3886) 2017-04-19 21:31:21 -07:00
Adam J. Stewart
186d1f4511 Add lmod files to MODULEPATH (#3912) 2017-04-19 21:30:08 -07:00
Adam J. Stewart
3c0c0f3457 binutils should link to Spack zlib installation (#3914) 2017-04-19 21:29:27 -07:00
Adam J. Stewart
f51af42bc6 Add latest version of HOOMD-blue (#3889) 2017-04-19 21:24:32 -07:00
Adam J. Stewart
f4858cb7a7 Rework Spack's Mercurial support (#3834)
* Add tests to mercurial package

* Add support for --insecure with mercurial fetching

* Install man pages and tab-completion scripts

* Add tests and latest version for all deps

* Flake8 fix

* Use certifi module to find CA certificate

* Flake8 fix

* Unset PYTHONPATH when running hg

* svn_fetch should use to svn-test, not hg-test

* Drop Python 3 support in Mercurial

Python 3 support is a work in progress and isn't currently
recommended:

https://www.mercurial-scm.org/wiki/SupportedPythonVersions

* Test both secure and insecure hg fetching

* Test both secure and insecure git and svn fetching
2017-04-19 18:59:04 -07:00
Jimmy Tang
53763f7698 Sox (#3908)
* Initial add of flac

* Initial add of id3lib

* Initial add of the opus codec

* Initial add of sox audio processing tools

* Cleanup spec files to be inline with current standard

* Fix pep8 compliance

* Remove un-needed configuration
2017-04-19 16:21:13 -05:00
George Hartzell
a3dff31b07 Add info for sqlite@3.18.0 (#3913) 2017-04-19 16:15:21 -05:00
Mark Olesen
22a966d010 add lines missed in rebase (adios +bzip2) (#3907) 2017-04-19 09:36:46 -05:00
Milton Woods
9b6b91b0b9 ncl: capture more dependencies (#3902)
* ncl: add depends_on statements for bison, flex and libiconv

* ncl: depends on flex for building and linking

* ncl: links with -ll, so requires flex with variant '+lex'

* ncl: depends on szip; external hdf5 may not provide it
2017-04-19 06:55:22 -05:00
Milton Woods
b00a12565c pango: depends on libxft when +X, disable libxft support when ~X (#3899) 2017-04-19 06:54:06 -05:00
George Hartzell
13fef18244 Ensure sbin is prepended to PATH in modulefiles (#3843) 2017-04-19 06:51:04 -05:00
Denis Davydov
eaefaaba5b espresso: add 6.1.0 (#3881)
* espresso: fix missing dependency on elpa, add 6.1.0

* override default libs of elpa to get shared always
2017-04-19 12:34:42 +02:00
Milton Woods
13911f1b46 gdbm: GNU dbm package for manipulating hashed databases (#3895) 2017-04-19 09:32:00 +02:00
George Hartzell
a0b19d50c5 Disable parallel builds for vim (#3893)
* Disable parallel builds

The install step creates a bunch of links to the vim binary, e.g.
`view`.  When run with -j greater than 1 there are silent failures.

Running w/out parallelism seems to fix it.

* Only constrain the install phase to be -j 1

Thanks @adamjstewart!
2017-04-18 20:46:09 -05:00
Javier
687f5e78ae Adding new python package: py-simplejson (#3883)
* Adding new python package: py-simplejson

* Adding setuptools dependency

* Fixing typo
2017-04-18 12:02:55 -05:00
Christoph Junghans
2a3fc6c404 charm: set sane default (#3865)
see https://github.com/LLNL/spack/pull/3852#pullrequestreview-32996651
for details
2017-04-18 12:02:41 -05:00
Denis Davydov
ce714b5641 ocotpus and arpack-ng: fix arpack bug and add libs to arpack-ng (#3875)
* ocotpus and arpack-ng: fix arpack bug and add libs to arpack-ng

also rename the variant to be consistent with other packages

* fix a bug

* flake8
2017-04-18 11:50:10 -05:00
George Hartzell
afbe81b455 Add version info for git-lfs v2.0.2 (#3885) 2017-04-18 11:48:53 -05:00
Kelly (KT) Thompson
fad4ce21cc Provide version 3.8.0 of CMake. (#3882) 2017-04-18 10:59:59 -05:00
Javier
7ed99a4c86 Adding new package: sas (#3877) 2017-04-18 07:07:07 -05:00
Denis Davydov
5558bec14e ape: constrain libxc version (#3876) 2017-04-18 07:03:48 -05:00
Mark Olesen
c65d0775cf ADIOS - add bzip2 transport, python patch not applicable to adios 1.9.0 (#3874) 2017-04-18 07:00:39 -05:00
sknigh
d17b5eb2b9 Added expat dependency to apr-util (#3871) 2017-04-18 06:57:49 -05:00
健美猫
4e95525280 Add patched openfst-1.4.1 and kaldi@c024e8 required by CNTK. (#3806) 2017-04-18 06:56:18 -05:00
Denis Davydov
fc938962fa octave: add 4.2.1 (#3872)
Also switch to arpack-ng, which is maintained and has bugfixes,
whereas the original arpack code is abandoned.
2017-04-18 06:55:11 -05:00
Denis Davydov
89f531c18a gmsh: add 3.0.1 (#3873) 2017-04-18 11:30:17 +02:00
Adam J. Stewart
6d7b386199 Add a py-fiscalyear package (#3864)
* Add a py-fiscalyear package

* Declare supported Python versions
2017-04-17 16:46:52 -05:00
Adam J. Stewart
ebf30d95cd Add latest numpy release (#3869) 2017-04-17 15:45:52 -05:00
Denis Davydov
0ed18de836 opneblas: fix compilation with clang (#3862)
* opneblas: fix compilation with clang

* indentation
2017-04-17 09:16:18 -05:00
Michael Kuhn
3331c042af Fix udunits2 (#3809) 2017-04-17 09:15:02 -05:00
Adam J. Stewart
cc747d6b6f Remove redundant cmake dependencies (#3860) 2017-04-16 12:23:26 -05:00
Christoph Junghans
675a67e2ca random123: put uniform.hpp in right subfolder (#3858) 2017-04-16 08:47:46 -05:00
Christoph Junghans
a3378ccd3d charm: add support for shared linking (#3859) 2017-04-16 08:47:00 -05:00
Christoph Junghans
fdc8f71a5c trilinos: allow to compile exodus (#3857) 2017-04-15 21:57:44 -05:00
Christoph Junghans
1d514f48bc random123: install uniform.hpp as well (#3856) 2017-04-15 21:57:19 -05:00
Adam J. Stewart
5aa273b319 Fix flake8 changed files detection (#3855) 2017-04-15 11:46:28 -05:00
Adam J. Stewart
bd1beedaf5 Allow users to set parallel jobs in config.yaml (#3812)
* Allow users to set parallel jobs in config.yaml

* Undo change from endash to emdash

* Remove parallel config, rename jobs to build_jobs
2017-04-15 08:31:00 -07:00
Erik Schnetter
62fb1ad990 hpx5: Add patch to select Spack compiler on Cray (#3798) 2017-04-14 22:38:22 -05:00
Christoph Junghans
caad110757 New package: flecsi (#3780)
* New package: flecsi

* make fetch independent of #3779
2017-04-14 17:56:36 -05:00
healther
bd6a90742c Add package gccxml (#3836)
* Add package gccxml

* Fix spec undefinedwq

* fix versions

* fix patch when statement

* fix flake8...
2017-04-14 17:54:19 -05:00
Christoph Junghans
7d655f77ee New package: boost-mpl-cartesian_product (#3841) 2017-04-14 17:53:35 -05:00
Christoph Junghans
9e693336ad New package: tut (#3844) 2017-04-14 17:52:57 -05:00
Ben Boeckel
6574ec3143 stage: remove a rogue period (#3846) 2017-04-14 17:51:54 -05:00
George Hartzell
2ed2469b11 Add a package for FLASh (bioinformatics) (#3848)
Add a package for FLASh.
2017-04-14 17:51:36 -05:00
Adam J. Stewart
acad217cba Add a py-pkgconfig package (#3815) 2017-04-14 13:14:45 -05:00
George Hartzell
a4311f242a vim wasn't linking against ncurses (#3838)
See #3829.  Vim's configure was searching for ncurses
instead of ncursesw.
2017-04-14 13:13:36 -05:00
Christoph Junghans
9626a042f8 New package: PEGTL (#3839) 2017-04-14 13:13:15 -05:00
Christoph Junghans
ef64734192 New package: pstreams (#3840) 2017-04-14 12:18:49 -05:00
Jean-Paul Pelteret
a0217747d0 Readline package: Add ncurses library directory to link line. (#3802)
Resolves a issue with finding the ncurses library on MacOS.
2017-04-14 12:17:45 -05:00
Christoph Junghans
9922c374aa New package: MAD's numdiff (#3811) 2017-04-14 11:18:32 -05:00
Adam J. Stewart
5ce0126c91 Prevent users from building Score-P on macOS (#3825)
* Prevent users from building Score-P on macOS

* Add link to original reporting issue
2017-04-14 08:38:34 -07:00
Adam J. Stewart
3f21b82815 Add variant to mvapich2 to control thread level (#3832) 2017-04-14 08:14:19 -07:00
Adam J. Stewart
331f42b991 Convert Image-Magick to AutotoolsPackage (#3828) 2017-04-14 08:13:47 -07:00
Adam J. Stewart
bec6d99b15 Add documentation on explicit param for do_install (#3823) 2017-04-14 08:13:14 -07:00
Mario Melara
0405505e21 Quick fix for #3153 (#3822) 2017-04-14 07:56:51 -07:00
Adam J. Stewart
91d82c44e6 Remove mawk dependency from ncurses (#3782) 2017-04-14 09:38:13 -05:00
健美猫
102dcbcbd4 Add cub-1.4.1 required by cntk. (#3819) 2017-04-14 08:29:18 -05:00
健美猫
e636bf05fc A new package: bowtie. (#3837) 2017-04-14 08:16:51 -05:00
Christoph Junghans
c08965701f New package: h5part (#3821) 2017-04-13 15:00:17 -05:00
Christoph Junghans
90f46186f9 New package: pugixml (#3830) 2017-04-13 14:59:32 -05:00
Michael Kuhn
afdc2f4182 Fix adios (#3814)
adios currently only supports zfp <= 0.5.0 due to an API change.
2017-04-12 16:58:18 -05:00
George Hartzell
5b65380f98 Add package for nginx@1.12.0 (#3810)
* Add package for nginx@1.12.0

Includes support for:
- zlib
- pcre (and pcre-jit)
- openssl (https support)

Built and basics tested on CentOS 7.  I haven't tested the `https`
support [yet].

* Include final bit of doc string sentence.

I trimmed the docstring that I lifed from https://nginx.org/en a bit
too aggressively and left a '...' to remind me to fix it.

Apparently I need more obvious reminders.

Thanks @davydden!
2017-04-12 15:27:46 -05:00
Adam J. Stewart
e12e9996e4 Document commands that no longer work (#3781) 2017-04-12 10:46:00 -05:00
Jean-Paul Pelteret
0af57ce345 Apply a patch to allow valgrind 3.12 to build on MacOS >= 10.11 (#3808) 2017-04-12 07:43:14 -05:00
Javier
7203a3c055 Update xrootd versions (#3807)
* Update xrootd versions

* Removing unnecessary url_for_version method
2017-04-12 06:50:31 -05:00
Nils Deppe
701965fb2a brigand: New Package (#3801) 2017-04-11 22:14:54 -05:00
Christoph Junghans
56ae607a39 New package: f90cache (#3804) 2017-04-11 20:13:41 -05:00
Nils Deppe
d7b5726fdc blaze: New Package (#3803) 2017-04-11 17:08:26 -05:00
Gregory Lee
9a4077c272 added stat version 3.0.1 (#3800) 2017-04-11 14:10:09 -05:00
Adam J. Stewart
ed86dc2db6 Help cscope find ncursesw library (#3785)
* Help cscope find ncursesw library

* Overwrite CURSES_LIBS at build time
2017-04-11 14:09:29 -05:00
Erik Schnetter
cea4352555 spherepack: New package (#3797) 2017-04-11 13:15:41 -05:00
Erik Schnetter
4d18f9f233 pocl: New version 0.14 (#3799) 2017-04-11 13:15:19 -05:00
Javier
e55c9a0eb8 Update ccache version to 3.3.4 (#3794)
* Update ccache version to 3.3.4

* Flake8 fix
2017-04-11 09:32:31 -05:00
George Hartzell
47aa8053e9 Install the shell completion scripts (#3784)
* Install the shell completion scripts

Install the `git-completion.{bash,tcsh,zsh}` and `git-prompt.sh` into
`$(spack location -i git)/share/` (aka `prefix.share/`).

* Use copy_tree to copy all the files

The dest dir already exists, so install_tree()'s not an option.
2017-04-11 07:39:03 -05:00
healther
74b1f2b860 Fixup gcc@4.9{0,1,2} build on darwin (#3789) 2017-04-11 07:37:44 -05:00
Brian Van Essen
808e9b4649 Added a package for the MDAnalysis toolkit. (#3576)
* Added a package for the MDAnalysis toolkit.

* Added the dependency on setuptools.

* Added the rest of the dependencies to the py-mdanalysis package.  Also
added the griddataformats and seaborn packages to satisfy requirements.

* Removed seaborn package since it has been recently added.

* Fixed flake8 error

* Removed inadvertent commits.

* Cleaned up reviewers feedback.
2017-04-10 21:02:32 -05:00
Adam J. Stewart
4627655704 Rename libson-c to json-c, add new version (#3776) 2017-04-10 15:09:59 -05:00
George Hartzell
4acc36d188 Fix build, add version info for 1.3.0 (#3773)
Update the package recipe w.r.t. AutotoolsPackage changes,
now builds "out of source".

Update the package with version info for 1.3.0.

> Mosh 1.3.0 released, with John Hood as release lead. The release includes broader platform compatibility, robustness improvements, better testing, and fixes for excess CPU consumption in some cases. We have switched to semver.org-style versioning and will increment the minor version number whenever we add new functionality. (In our previous practice, this release would probably have been called “1.2.7.”)

Tested on CentOS 7.
2017-04-10 11:12:49 -05:00
Denis Davydov
c9da92dc97 doc: start with known issues section (#3722) 2017-04-10 08:20:57 -05:00
healther
5008973d99 Fix namespaced python packages (#3757)
* Fix namespaced python packages

* Update package.py

* Update package.py

* fix typo
2017-04-10 08:12:57 -05:00
健美猫
77673f4c42 A new package: cudnn. (#3770) 2017-04-10 07:27:15 -05:00
Adam J. Stewart
8e4ada5e99 Make it more clear that version ranges are inclusive (#3759) 2017-04-10 07:25:48 -05:00
健美猫
87818abf21 A new pacakge: hstr(hh). (#3769) 2017-04-09 11:56:49 -05:00
Adam J. Stewart
bd9213a55f Append system PKG_CONFIG_PATH on Cray instead of prepend (#3766) 2017-04-08 20:50:16 -05:00
Michael Kuhn
b91bf0e067 Update libbson and libmongoc to 1.6.2 (#3767) 2017-04-08 06:40:55 -05:00
George Hartzell
bf9dcc4a10 Add info for go@1.8.1 (#3765) 2017-04-07 16:50:08 -05:00
Mark C. Miller
a2afe984c0 Adding ZFP version 0.5.1 and variant for uint8 bit stream word type (#3753)
* adding 0.5.1 and variant for uint8 bit stream word type

* Revisions as per davydden

* fixing style (flake8) issues

* - switched to derive from MakefilePackage
- fixed typo in variant check
- Confirmed installs correctly with bswtuint8 variant

* added build method; changed zfp_incdir to incdir
2017-04-07 15:00:32 -05:00
Massimiliano Culpo
28e20313ac lmod: added new version (#3763) 2017-04-07 14:32:32 -05:00
Todd Gamblin
d995f9a314 Disable OpenSSL test dependency until we have proper support. (#3760) 2017-04-07 14:14:02 -05:00
Adam J. Stewart
ed4f276b68 Add a package for the NAS Parallel Benchmarks (NPB) (#3762) 2017-04-07 14:10:29 -05:00
Matthew Scott Krafczyk
7c4ed0a70a Add the rockstar package (#3680)
* Add the rockstar package

* Add rockstar to yt.

* Correct signature of prep_yt.

* Correct rockstar package installation process

Needed to change the way the necessary prefixes are found as well as
how the completed package is copied.

There should probably be a way to do the copying in a more 'spack' way.

* Add license

* Add description.

* Set no hdf5 variant as default.

* Use copy_tree for copying files

* Use MakefilePackage

* Address concerns from @adamjstewart

* Fix flake8 errors.
2017-04-07 13:17:19 -05:00
Jean-Paul Pelteret
c6777ddf74 Update LLVM to version 4.0.0 (#3683)
* Update LLVM to version 4.0.0

* Add arguments to prevent lldb, polly building when using ~<variant>
2017-04-07 13:15:14 -05:00
健美猫
3ad6754c1a Add the 'shared' variant for protobuf. (#3703) 2017-04-07 13:11:22 -05:00
Mark Olesen
f166f57f09 remove mxml CFLAGS option that was breaking configure (fixes #3700) (#3706)
- provide urls for versions 2.7, 2.6, 2.5 (archive copies)
2017-04-07 13:06:09 -05:00
Milton Woods
04f20320f4 subversion: spec.satisfies('^swig') does not work; replace spec.satisfies by "in spec" (#3662) 2017-04-07 13:03:57 -05:00
Axel Huebl
a8bd69f01c Package: ISAAC (#3733)
Adds the [ISAAC](https://github.com/ComputationalRadiationPhysics/isaac)
in situ volume rendering library. The ISAAC library can be build with
render/filter kernels for Nvidia GPUs via CUDA or with a more general
backend via [Alpaka](https://github.com/ComputationalRadiationPhysics/alpaka)
with support for Nvidia GPUs (via CUDA) and multicore CPUs.

Since alpaka is not yet part of spack, the second variant is still
commented out.

Packages

- `isaac`: header-only library with dependencies to other C++ libraries
           that is then used in simulations
- `isaac-server`: stand-alone executable that connects N simulations with M
                  clients in a `N simulations:1 server` and
                  `1 server:M clients` fashion

(ISAAC clients simply speak websockets/JSON and are usually
[HTML/JS pages](https://github.com/ComputationalRadiationPhysics/isaac/tree/v1.2.0/client))

Downstream Usage

PIConGPU uses ISAAC for in situ visualization.

References

- [Repo](https://github.com/ComputationalRadiationPhysics/isaac) (LGPLv3+)
- [Documentation](http://computationalradiationphysics.github.io/isaac/)
- [Talk at GTC2016](http://on-demand.gputechconf.com/gtc/2016/video/S6294.html)
2017-04-07 11:04:45 -05:00
Axel Huebl
7b37620e25 mallocMC: Spack Package (#3745)
Adds a package for mallocMC, a memory allocator for many core
architectures.

This project provides a framework for fast memory managers on
many core accelerators. Currently, it supports NVIDIA GPUs of
compute capability sm_20 or higher through the ScatterAlloc
algorithm. mallocMC is header-only.

Downstream Dependencies

PIConGPU and other projects of HZDR's
*Computational Radiation Physics* group

References

- Markus Steinberger, Michael Kenzel, Bernhard Kainz and Dieter Schmalstieg.
  *ScatterAlloc: Massively parallel dynamic memory allocation for the GPU*,
  Innovative Parallel Computing (InPar), 2012,
  https://doi.org/10.1109/InPar.2012.6339604

- Carlchristian Eckert.
  *Enhancements of the massively parallel memory allocator ScatterAlloc and its adaption to the general interface mallocMC*,
  Junior Thesis (grosser Beleg), 2014,
  http://dx.doi.org/10.5281/zenodo.34461
2017-04-07 11:03:58 -05:00
Adam J. Stewart
54d0f9157d Tell libedit to link to -lncursesw (#3752) 2017-04-07 11:03:19 -05:00
Christoph Junghans
f1943589b5 gromacs: added 5.1.4 and 2016.3 (#3758) 2017-04-07 10:59:14 -05:00
Adam J. Stewart
16fb872f84 Fix ncurses support in bash package (#3735) 2017-04-07 08:43:13 -05:00
healther
1d21a11ff4 fix dependencies of py-pynn (#3756) 2017-04-07 06:46:46 -05:00
Massimiliano Culpo
10c395b2f5 Abinit: a few modernizations for the package and its dependencies (#3699)
* libxc: added libs interface

* hdf5: added libs interface, added conflicts

* abinit: modernized package to use build interface

* netcdf-fortran: added libs interface

* abinit: added version 8.2.2
2017-04-07 11:18:34 +02:00
Axel Huebl
030127a071 cuda_memtest: Package of CRP (#3747)
This adds a maintained version of the (since 2012)
stalled original project.

https://github.com/ComputationalRadiationPhysics/cuda_memtest

Nvidia's NVML (via the GPU deployment kit) could also be
added, providing serial number output of failing GPUs
for multi-GPU nodes.
2017-04-06 22:05:13 -05:00
Christoph Junghans
e3bfb79824 Add Votca packages (#3748)
* A new package: votca-tools

* A new package: votca-csg
2017-04-06 22:04:51 -05:00
Todd Gamblin
279d410758 Add package for OpenSSH (#3750) 2017-04-06 21:37:49 -05:00
Christoph Junghans
10ceed3b66 A new package: legion (#3738) 2017-04-06 17:55:09 -05:00
George Hartzell
3232c16d0c Update version info to include v1.5.5 (#3743)
* Update version info to include v1.5.5

* Clean up url specifications.
2017-04-06 17:54:36 -05:00
Adam J. Stewart
7c41d9c6db spglib requires setuptools during runtime (#3744) 2017-04-06 17:54:07 -05:00
Denis Davydov
5c0fe2829b deal.ii: add 8.5.0 (#3741) 2017-04-06 16:29:40 -05:00
George Hartzell
84208523f9 set_executable can set S_IX{GRP,OTH} (#3742)
`set_executable` now checks if a user/group.other had read permission
on a file and if it does then it sets the corresponding executable
bit.

See #1483.
2017-04-06 16:25:13 -05:00
Max Katz
a526bcaf11 Correct uninstall -d to uninstall -R in tutorial (#3740)
-d was changed to -R as of PR #1917
2017-04-06 15:44:43 -05:00
Axel Huebl
f31a38532f libSplash & PNGwriter: CMakePackage (#3739)
Use new CMakePackage base class
2017-04-06 21:33:19 +02:00
Michael Kuhn
95e401fe80 Fix wx (#3734)
It is missing a pkg-config dependency.
2017-04-06 13:54:57 -05:00
Axel Huebl
951f4bf514 PNGwriter: 0.6.0 (#3732)
Adds the latest release of PNGwriter.
2017-04-06 12:31:55 -05:00
Todd Gamblin
eb9cb2d4a1 Fix libdwarf/elfutils conflict 2017-04-06 09:42:46 -07:00
健美猫
85f937525d A new package: xqilla. (#3731) 2017-04-06 10:54:16 -05:00
Jimmy Tang
00fb0dd6c6 Openmpi cuda support (#3725)
* Update cuda to latest ga2 release

* Add CUDA support to openmpi

* Use spec's lib directories for cuda

* flake8 compliance
2017-04-06 16:12:54 +02:00
Michael Kuhn
b81a50b4e3 Add zip package (#3715) 2017-04-06 08:12:51 -05:00
Michael Kuhn
095f57409c Fix magics (#3721)
- magics requires perl and perl-xml-parser.
- xml2cc_new.pl uses /usr/bin/perl by default.
2017-04-06 08:11:32 -05:00
Todd Gamblin
715ac8b7e6 Update copyright on the docs. (#3718) 2017-04-05 18:34:17 -07:00
Adam J. Stewart
df150b3e92 spack create MakefilePackage (#3710)
* spack create MakefilePackage

* Change default Perl template to match other build systems
2017-04-05 18:00:42 -05:00
Josh Asplund
048b6fc454 Fixes patch paths for earlier boost versions (#3712)
* Fixes patch paths for earlier boost versions

The directory structure of boost changed at version 1.56.0, so the patch
being used for python support did not work on earlier versions. This
adds another patch that matches earlier versions.

* Removes commented out code
2017-04-05 16:26:22 -05:00
Adam J. Stewart
745e2ce52f Fixes needed to build htop (#3691)
* Fixes needed to build htop

* Build libncursesw.so, not libncurses.so

* Remove htop hack now that it is picking up newer ncurses

* Tell packages to link to new ncursesw libraries
2017-04-05 16:03:11 -05:00
Milton Woods
87eafaa125 subversion: provide checksums for versions 1.8.17 and 1.9.5 (#3663)
* subversion: provide checksums for versions 1.8.17 and 1.9.5

* subversion: release versions sorted from newest to oldest
2017-04-05 15:15:22 -05:00
Denis Davydov
bccc73c6c9 petsc trilinos: fix Scalapack via MKL (#3702)
* petsc trilinos: fix Scalapack via MKL

* indentation
2017-04-05 14:55:28 -05:00
Mark Olesen
aa63bc6f34 update versions for scalasca and related tools (#3697)
- clean up fetch urls

- inherit from AutotoolsPackage instead of Package

- explicit fPIC flags look suspicious, but leave them in there.

- in scalasca, use the cube version that is implicit from
  the scorep dependency instead of specifying it twice.
2017-04-05 14:54:40 -05:00
Michael Kuhn
a813764874 Fix libxpm (#3704)
It tries to use gettext but fails because it does not explicitly link
against libintl.
2017-04-05 14:50:42 -05:00
Michael Kuhn
9dcd6052cb Fix ncl (#3708)
- Add patch to make ncl compile with hdf5 1.10.
- Add missing dependencies to make ncl compile without errors.
2017-04-05 13:59:26 -05:00
scheibelp
9e50d16f13 Merge pull request #2789 from paulhopkins/features/allow_package_installation_directory_to_be_configured
Allow installation directory layout to be configured
2017-04-05 10:45:11 -07:00
Adam J. Stewart
cd1c88c519 Add stress package (#3695) 2017-04-05 11:48:56 -05:00
健美猫
70372ddcd7 Add versions 3.2.0 3.1.0 for protobuf. (#3698) 2017-04-05 07:59:18 -05:00
Paul Hopkins
95c3cff6be Allow installation directory layout to be configured using either hash
length parameter or spec formatting.
2017-04-05 12:08:56 +01:00
George Hartzell
46f25a4e0a Add package for open source Shiny Server (#3688)
* The beginnings of a package for shiny-server

Just stashing a WIP.

This doesn't work.

This goes for a while and/but blows up with some OpenSSL related issue.

* Make it work!

Yay!

* shiny-server needs R with X support

My environment gets this for "free" from my packages.yaml, but it
should be explicity.

* Address feedback

- python version
- gcc dependency
- Flake8 comment rules

* Richer caveats and warnings.

* Convert to CMakePackage and fix python version typo

* Fix typo: noqab -> noqa

* Ensure proper build location, clean up comments
2017-04-04 18:05:28 -05:00
scheibelp
0038ea84a1 Avoid null reference in arch concretization (#2596)
Fixes #2587

The concretizer falls back on using the root architecture (followed
by the default system architecture) to fill in unspecified arch
properties for a spec. It failed to check cases where the root could
be None.
2017-04-04 15:03:52 -07:00
Adam J. Stewart
3866dba265 Convert STREAM to MakefilePackage (#3692) 2017-04-04 15:00:35 -05:00
Adam J. Stewart
3c57862084 Add fio package (#3689) 2017-04-04 13:26:08 -05:00
Denis Davydov
0dbeeab70e intel-mkl: add 2017.2 (#3687)
* intel-mkl: add 2017.2

* intel-mkl: add urls, update docstring
2017-04-04 11:39:26 -05:00
Massimiliano Culpo
20f388cebd Fixes #3675: Abinit: invalid spec on concretization #(3686) 2017-04-04 07:03:11 -07:00
Jean-Paul Pelteret
7de6a28b15 Update SymEngine package to enable build against LLVM (#3682) 2017-04-04 06:56:44 -05:00
Mayeul d'Avezac
0e32369a26 Cppcheck (#3684)
* Adds cppcheck version 1.72

* cppcheck installation requires cfg files

Without these files, cppcheck does not work correctly
2017-04-04 06:55:02 -05:00
Mayeul d'Avezac
8276bd75fc Update tinyxml (#3649)
* Update tinyxml

* url seems to have changed
* spack replaces "_2_6_2" with "_2.6.2" unless the url is explicitly
given
* copyfile is no longuer available by default

* URL version-parsing should work as of #2972
2017-04-04 06:52:58 -05:00
Justin Cook
508c96d046 Update getting_started.rst (#3685)
Fixed typo referring to .bashrc file
2017-04-04 06:50:44 -05:00
Adam J. Stewart
d6a28a7401 Add IOzone package (#3679) 2017-04-03 18:05:45 -05:00
Adam J. Stewart
50df071ad9 Overhaul Spack's URL parsing (#2972)
* Remove fake URLs from Spack

* Ignore long lines for URLs that start with ftp:

* Preliminary changes to version regexes

* New redesign of version regexes

* Allow letters in version-only

* Fix detection of versions that end in Final

* Rearrange a few regexes and add examples

* Add tests for common download repositories

* Add test cases for common tarball naming schemes

* Finalize version regexes

* spack url test -> spack url summary

* Clean up comments

* Rearrange suffix checks

* Use query strings for name detection

* Remove no longer necessary url_for_version functions

* Strip off extraneous information after package name

* Add one more test

* Dot in square brackets does not need to be escaped

* Move renaming outside of parse_name_offset

* Fix versions for a couple more packages

* Fix flake8 and doc tests

* Correctly parse Python, Lua, and Bio++ package names

* Use effective URLs for mfem

* Add checksummed version to mitos

* Remove url_for_version from STAR-CCM+ package

* Revert changes to version numbers with underscores and dashes

* Fix name detection for tbb

* Correctly parse Ruby gems

* Reverted mfem back to shortened URLs.

* Updated instructions for better security

* Remove preferred=True from newest version

* Add tests for new `spack url list` flags

* Add tests for strip_name_suffixes

* Add unit tests for version separators

* Fix bugs related to parseable name but in parseable version

* Remove dead code, update docstring

* Ignore 'binary' at end of version string

* Remove platform from version

* Flip libedit version numbers

* Re-support weird NCO alpha/beta versions

* Rebase and remove one new fake URL

* Add / to beginning of regex to avoid picking up similarly named packages

* Ignore weird tar versions

* Fix bug in url parse --spider when no versions found

* Less strict version matching for spack versions

* Don't rename Python packages

* Be a little more selective, version must begin with a digit

* Re-add fake URLs

* Fix up several other packages

* Ignore more file endings

* Add parsing support for Miniconda

* Update tab completion

* XFAILS are now PASSES for 2 web tests
2017-04-03 15:34:16 -07:00
Adam J. Stewart
7e9777f294 Add latest version of pkg-config (#3672) 2017-04-03 14:09:44 -05:00
健美猫
734f90d11f openfst conflicts with intel@16: and gcc@6: . (#3671) 2017-04-03 13:35:04 -05:00
健美猫
74bd894427 Fix conflict directives for libpfm4. (#3673) 2017-04-03 13:05:03 -05:00
Adam J. Stewart
6cf87e3637 Add latest alpha release of MVAPICH2 (#3674) 2017-04-03 13:04:42 -05:00
George Hartzell
11fe0b9b26 Add depends_on() new-ish bison (#3661)
* Add depends_on() new-ish bison

* Refine dependency, only needed to build.
2017-04-03 10:59:44 -05:00
健美猫
57b3961778 Add libpfm4 package. (#3667) 2017-04-03 10:59:24 -05:00
Jeffrey Salmond
9b19968bac add CUDA_HOME arg to nccl makefile (#3666) 2017-04-03 08:08:28 -05:00
Jeffrey Salmond
b7eee1bd7b add gflags as dependency of glog (#3665) 2017-04-03 07:56:58 -05:00
George Hartzell
cddb7524b7 Hey, I was using that! :) (#3660)
Turns out that we really want 5.22.2 for backward compatibility.
2017-04-02 20:32:20 -05:00
Adam J. Stewart
c0cfaacbc8 Set default providers for all virtual dependencies (#3634)
* Set default providers for everything

* Add default OpenFOAM provider
2017-04-02 14:48:27 -05:00
Massimiliano Culpo
ffef681377 new directive: conflicts() (#3125)
* Add conflicts(<spec>) directive
* openblas: added conflicts for intel@16 refs #3119
* added brief docs and unit tests
2017-04-02 11:40:09 -07:00
Todd Gamblin
0e785e0500 Add epigraph in docs. 2017-04-01 15:32:06 -07:00
Todd Gamblin
221f179716 Add better tests for web.py; fix some bugs found with spidering.
- _spider in web.py was actually failing to spider deeper than a certain
  point.
- Fixed multiprocessing pools to not use daemons and to allow recursive
  spawning.
- Added detailed tests for spidering and for finding archive versions.
- left some xfail URL finding exercises for the reader.
- Fix noqa annotations for some @when decorators
2017-04-01 15:10:45 -07:00
Adam J. Stewart
28d6d375b4 Fix Python 3 support in spack versions
- Add missing import, fixes spack versions in Python 2
- Fix spack versions in Python 3
2017-04-01 15:10:45 -07:00
Kenneth Hoste
b67e2db159 fix version specs for EasyBuild packages (#3659)
* fix Python version requirement for easybuild-framework

* make 'when' for depends_on('py-easybuild-framework') open-ended
2017-04-01 13:14:15 -05:00
Kenneth Hoste
90306cf415 EasyBuild and dependencies (#3658)
* add packages for EasyBuild and dependencies

* fix remarks w.r.t. docstrings & download urls, make dependency specs stricter w.r.t. required versions

* fix easybuild-* dep specs, should be open-ended

* correct dep specs for easybuild and easybuild-easyconfigs using @3.1.2[:]
2017-04-01 10:27:58 -07:00
Kenneth Hoste
fb98f9ee19 fix annoying 'fatal: Not a git repository' error message (#3657)
fix annoying 'fatal: Not a git repository' error message produced by 'spack list' when Spack is not run from a Git repository (#3657)
2017-04-01 03:29:06 -07:00
健美猫
f982cd78ae Add a pcakge: libzip. (#3656) 2017-04-01 00:09:09 -05:00
Gregory Lee
12c1216c34 fix flake8 ignore syntax (use E instead of ignore) (#3651) 2017-03-31 17:51:09 -07:00
Massimiliano Culpo
0c44dd28bb test/package_sanity.py: ported to pytest (#3474) 2017-03-31 13:42:04 -07:00
Massimiliano Culpo
ee7753a597 test/versions.py: ported to pytest (#3635) 2017-03-31 13:41:48 -07:00
Todd Gamblin
a8bcc23fe7 Spack works with Python 3
- Update version guard in spack script to allow python 3
- Update min required version in the docs
2017-03-31 13:40:41 -07:00
Todd Gamblin
3f21f2b088 Clean up tests and add Python3 to Travis.
- Clean up spec_syntax tests: don't dependend on DB order.
- spec_syntax hash parsing tests were strongly dependent on the order the
  DB was traversed.
- Tests now specifically grab the specs they want from the mock DB.
- Tests are more readable as a result.

- Add Python3 versions to Travis tests.
2017-03-31 13:40:41 -07:00
Todd Gamblin
b9ee86cac9 Make packages Python3 compatible. 2017-03-31 13:40:41 -07:00
Todd Gamblin
7f3f493024 Fix concretization bugs with virtuals and deptypes.
1. Fix #2807: Can't depend on virtual and non-virtual package

- This is tested by test_my_dep_depends_on_provider_of_my_virtual_dep in
  the concretize.py test.

- This was actually working in the test suite, but it depended on the
  order the dependencies were resolved in. Resolving non-virtual then
  virtual worked, but virtual, then non-virtual did not.

- Problem was that an unnecessary copy was made of a spec that already
  had some dependencies set up, and the copy lost half of some of the
  dependency relationships.  This caused the "can'd depend on X twice
  error".

- Fix by eliminating unnecessary copy and ensuring that dep parameter of
  _merge_dependency is always safe to own -- i.e. it's a defensive copy
  from somewhere else.

2. Fix bug and simplify concretization of deptypes.

- deptypes weren't being accumulated; they were being set on each
  DependencySpec. This could cause concretization to get into an infinite
  loop.

- Fixed by accumulating deptypes in DependencySpec.update_deptypes()

- Also simplified deptype normalization logic: deptypes are now merged in
  constrain() like everything else -- there is no need to merge them
  specially or to look at dpeendents in _merge_dependency().

- Add some docstrings to deptype tests.
2017-03-31 13:40:41 -07:00
Todd Gamblin
fe6f39b662 Use key sorting instead of cmp()
- Get rid of pkgsort() usage for preferred variants.
- Concretization is now entirely based on key-based sorting.
- Remove PreferredPackages class and various spec cmp() methods.
- Replace with PackagePrefs class that implements a key function for
  sorting according to packages.yaml.
- Clear package pref caches on config test.
- Explicit compare methods instead of total_ordering in Version.
- Our total_ordering backport wasn't making Python 3 happy for some
  reason.
- Python 3's functools.total_ordering and spelling the operators out
  fixes the problem.
- Fix unicode issues with spec hashes, json, & YAML
- Try to use str everywhere and avoid unicode objects in python 2.
2017-03-31 13:40:41 -07:00
Todd Gamblin
0cd6555388 Resolve Python2/Python3 unicode issues by using str()
- Remove ascii encoding assumption from spack_yaml
- proc.communicate() returns bytes; convert to str before adding.
- Fix various byte string/unicode issues for Python 2/3 support
- Need to decode subprocess output as utf-8 in from_sourcing_files.
- Fix comments in strify()
2017-03-31 13:40:41 -07:00
Todd Gamblin
1d1a14dbe9 Convert Python 2 idioms to Python 2/3-compatible ones.
- convert print, StringIO, except as, octals, izip
- convert print statement to print function
- convert StringIO to six.StringIO
  - remove usage of csv reader in Spec, in favor of simple regex
  - csv reader only does byte strings
- convert 0755 octal literals to 0o755
- convert `except Foo, e` to `except Foo as e`
- fix a few places `str` is used.
  - may need to switch everything to str later.
- convert iteritems usages to use six.iteritems
- fix urllib and HTMLParser
- port metaclasses to use six.with_metaclass
- More octal literal conversions for Python 2/3
- Fix a new octal literal.
- Convert `basestring` to `six.string_types`
- Convert xrange -> range
- Fix various issues with encoding, iteritems, and Python3 semantics.
- Convert contextlib.nested to explicitly nexted context managers.
- Convert use of filter() to list comprehensions.
- Replace reduce() with list comprehensions.
-  Clean up composite: replace inspect.ismethod() with callable()
- Python 3 doesn't have "method" objects; inspect.ismethod returns False.
- Need to use callable in Composite to make it work.
- Update colify to use future division.
- Fix zip() usages that need to be lists.
- Python3: Use line-buffered logging instead of unbuffered.
- Python3 raises an error with unbuffered I/O
  - See https://bugs.python.org/issue17404
2017-03-31 13:40:41 -07:00
Todd Gamblin
0331b08c64 Update externals to work with Python 3
- Update YAML version to support Python 3
- Python 3 support for ordereddict backport
- Exclude Python3 YAML from version tests.
- Vendor six into Spack.
- Make Python version-check tests work with Python 3
- Add ability to add version check exceptions with '# nopyqver' line
  comments.
2017-03-31 13:40:41 -07:00
Adam J. Stewart
bc404532ea PythonPackage: Let There Be Tests! (#2869)
* Run python setup.py test if --run-tests
* Attempt to import the Python module after installation
* Add testing support to numpy and scipy
* Remove duplicated comments
* Update to new run-tests callback methodology
* Remove unrelated changes for another PR
2017-03-31 13:39:07 -07:00
Gregory Lee
3ade829566 new and updated PRUNERS tools (#3648) 2017-03-31 13:42:03 -05:00
Michael Kuhn
0d421137f4 Fix mxml (#3639)
mxml is now hosted on GitHub.
2017-03-31 13:41:08 -05:00
Adam J. Stewart
343f3b2fde Add QBank package (#3641)
* Add QBank package

* Install the documentation and add it to the MANPATH

* Add Perl DBI package

* Make sure setup method variables are consistent
2017-03-31 11:51:13 -05:00
Adam J. Stewart
d13854b5d4 Perl: add more versions, add phases (#3640) 2017-03-31 09:18:28 -05:00
Mark Olesen
832f932310 CONFIG: add older bison version 2.7 (#3645)
- for programs that don't yet work with bison 3.x
2017-03-31 07:54:04 -05:00
Hans Pabst
d59ceba9c5 Included LIBXSMM 1.8 into the list of available versions. (#3646) 2017-03-31 07:53:37 -05:00
Milton Woods
890213d5c2 Subversion with perl bindings (#3644)
* perl-term-readkey: add perl Term::ReadKey package
* subversion: add variant with perl bindings
* subversion: use `which('perl')` to find perl executable in package.py
2017-03-31 01:48:18 -07:00
Milton Woods
a81b2b4dc6 perl-xml-parser: add perl XML::Parser package (#3643) 2017-03-30 21:54:56 -07:00
Milton Woods
9e43ff821c Extendable Perl (#3614)
* perl: make extendable and add Module::Build package
* perl: allow 'spack create' to identify perl packages from their contents
* perl-module-build: fix indenting of package docstring
* perl: split install() method for extensions into phases
* perl: auto-detect build method (Makefile.PL vs Build.PL) and define a 'check' method
* PerlPackage: use import statements similar to those in AutotoolsPackage
* PerlModule: fix detection of Build.PL
* PerlPackageTemplate: remove extraneous lines to avoid flake8 warnings
* PerlPackageTemplate: split into separate templates for Makefile.PL and Build.PL
* PerlPackage: add cross-references to docstrings
* AutotoolsPackage: fix ambiguous cross-references to avoid errors in doc tests
* PerlbuildPackageTemplate: depend on perl-module-build if Build.PL exists
2017-03-30 16:38:58 -07:00
Mark Olesen
9e1abb13dc support OpenFOAM package(s) (#3528)
* ENH: add package for building OpenFOAM (1612) from www.openfoam.com
- provide 'openfoam' as virtual package.
- package as openfoam-com to reflect the distribution point.

This initial spack packaging for OpenFOAM supports a number of possible
variants and should handle 64-bit labels properly now that the scotch
package has been updated accordingly.

* ENH: update package for foam-extend (extend-project.de)

- provide 'openfoam' as virtual package.

- much of the build is now aligned with how the openfoam-com package
  looks, with the aim of future refactoring.

- avoid installing intermediate targets.

- contains its own environment sourcing script for the build, for more
  flexibility and robustness (doesn't touch the python build environ)

* ENH: added package for building from openfoam.org

- provide 'openfoam' as a virtual package.

- this is largely a direct copy of the openfoam-com package.
  It has been supplied as a courtesy for users and to ensure maximum
  consistency in quality and naming between the foam-extend,
  openfoam-com and openfoam-org packages.

* CONFIG: add openfoam into bash completion providers list

* ENH: have openfoam-com use spack as USERMPI

- also simplify the generation of mplib/compiler rules

* ENH: have openfoam-org use spack as SYSTEMMPI

- this setup requires more environment settings than USERMPI
  (openfoam-com), but is currently the only means of integration
  for openfoam-org

- simplify generation of mplib/compiler rules

* ENH: simplify generation of mplib/compiler rules (foam-extend)

- rename mpi rules from SPACK,SPACKMPI to USER,USERMPI for consistency
  with openfoam-com and to generalize for any build system.

* STYLE: record spack tree as a log file (openfoam)

- can be useful for future diagnostics and general record keeping
2017-03-30 16:35:57 -07:00
healther
2bd216a6a1 add package py-spykeutils (#3633)
* add package py-spykeutils

* fixed dependency version restriction
2017-03-30 10:33:09 -05:00
Massimiliano Culpo
f9c0348891 cp2k: update to 4.1 + update of dependencies (#3561)
* libint: updated version, ported to AutotoolsPackage

* elpa: updated version, ported to AutotoolsPackage

* wannier90: updated version, ported to MakefilePackage

* pexsi: updated version, ported to MakefilePackage

* cp2k: updated version, removed wannier 90 from dependencies if cp2k@4.1

* plumed: updated version

Modifications:

* modules has been turned into a single variant, as different versions
  have different modules available
* added dictionaries for patches

* netlib-scalapack: ported to CMakePackage
2017-03-30 09:46:05 -05:00
Adam J. Stewart
73f78cb8c4 Move py-dev to the proper repo directory (#3630) 2017-03-30 09:18:40 +02:00
Adam J. Stewart
da6faa086a Fix url fetching for GnuTLS (#3631) 2017-03-30 09:16:56 +02:00
George Hartzell
68415f0fe5 Concretization problem breaks httpie dependency (#3629)
* Concretization problem breaks httpie dependency

Concretization problem breaks this.  Unconditional for now...
https://github.com/LLNL/spack/issues/3628

* Flake8 cleanups
2017-03-29 18:59:54 -05:00
George Hartzell
4cd4a2da46 Add package for snakemake (#3605)
* Add package for snakemake

* Flake8 cleanups

* Add package for py-wrapt

* Address PR feedback

Switch to pypi URL.

Tighten Python3 dependency spec.

Add missing dependencies (wrapt, requests).
    - add package for wrapt.
2017-03-29 14:25:09 -05:00
George Hartzell
6138350c9e Add package for httpie (#3609)
* Add package for httpie

* Remove wayward FIXME and flake8 cleanup

* Update dependencies, address PR feedback

Fine tune dependencies (version constraints).
Add missing dependency.
Make SOCKS support a variant.

* Flake8 cleanup
2017-03-29 14:24:52 -05:00
Denis Davydov
782882c2a9 petsc: a workaround for macOS Clang 8.1.0 and XCode 8.3 (#3615) 2017-03-29 14:24:18 -05:00
healther
64a80ba822 add package py-bokeh (#3618)
* add package py-bokeh

* remove setuptools dependency

* add missing dependencies
2017-03-29 14:23:53 -05:00
healther
28db55b1a7 Allow py-py2cairo to be built with cairo~X (#3620) 2017-03-29 14:23:24 -05:00
healther
b73f1e557c add package py-pympler (#3621)
* add package py-pympler

* add python@2.5: dependency
2017-03-29 14:21:41 -05:00
healther
8e99c97d21 Add package py-pynn (#3622)
* add package py-pynn

* fix docstring

* fix dependency mess

* add python dependency
2017-03-29 14:21:13 -05:00
healther
8d87c01f62 Add py-pymongo dependencies (#3624)
* add package py-mongo

* add dependencies
2017-03-29 14:20:58 -05:00
George Hartzell
259cc02260 htslib depends_on version must match samtools (#3625) 2017-03-29 14:20:37 -05:00
Adam J. Stewart
46251eb559 Add abipy package and dependencies (#3352)
* Add abipy package and dependencies

* Add first official release of py-abipy

* Ignore files from dependencies during activation
2017-03-29 11:13:23 -05:00
healther
441170f316 add package py-mongo (#3619) 2017-03-29 02:54:09 -07:00
healther
5ba4fce428 add package py-brian2 (#3617) 2017-03-29 02:52:59 -07:00
healther
754be1b275 Add version 3.5.9 to package gnutls (#3616) 2017-03-29 01:55:02 -07:00
George Hartzell
f5bc42f229 Add Blast+ package. (#3562)
* Add Blast+ package.

Adds support for NCBI's blast+@2.6.0.  I'll be adding a few historical versions in the near future.

It's a fairly direct transliteration of the [Homebrew Science recipe][hbs].

I skipped the mysql support.

There is a problem with HDF5 support.  Blast's configure script test program defines a macro 'HOST' to a string value and one of the HDF5 bits has an variable named 'HOST'.  Fun things happen.   I've disabled support for now.

I've run very very basic tests.  I'll get this out to my users and ensure that it works and fine tune the options and etc....

[hbs]: https://github.com/Homebrew/homebrew-science/blob/master/blast.rb

* Flake8 fixes

* Update w.t.r. mamelara's PR and cleanup

Add paths to things in the --with-* config args

Add add'l config flags from #3394.

Update patch to no-op and add comment.

Add add'l dependencies after studying `configure --help`.

* Flake8 cleanup

* Add support for blast+@2.2.30

Need to work around a configure bug.  See https://github.com/Homebrew/homebrew-science/issues/2337#issuecomment-170011511.

* Re-wrap comment, line length not a problem.

I'd broken a comment across to line in a fit of flake8
induced fear.  Adam pointed out that it's ok.

* Remove explicit prefix config

Remove explicit prefix config, the autotools package does it for us.
2017-03-28 21:38:51 -05:00
George Hartzell
53b0d93a7a Add info for version 2.16 (#3601) 2017-03-28 21:37:57 -05:00
George Hartzell
14194a137a Add support for v1.9.9 (#3602) 2017-03-28 21:37:34 -05:00
George Hartzell
18a4be3e56 Add packages for jq and ongiruma (#3607)
jq is a commandline JSON processor.  Oniguruma is a regexp
library on which jq depends.
2017-03-28 21:37:10 -05:00
George Hartzell
83e661604d Add package for direnv (#3608) 2017-03-28 21:36:39 -05:00
George Hartzell
ec3eabfc7a Add package for BATS (#3611)
Add package for the BASH Automated Testing System.
2017-03-28 21:36:12 -05:00
George Hartzell
9385659aa1 bowtie2: add support for version 2.3.1 (#3599)
* Add support for 2.3.1

Updated digest and added a dependency on tbb.

* Cleanup patch name and add description
2017-03-28 21:35:46 -05:00
George Hartzell
d6cbae81c7 Update/samtools (#3595)
* Update samtools family to 1.4

* simple cleanup

* Make bzip depends_on for future versions too
2017-03-28 21:34:41 -05:00
George Hartzell
70ec06949c New package: ncftp client (#3603)
* Add package for ncftp

* Flake8 cleanups
2017-03-28 21:33:59 -05:00
George Hartzell
d94757238a New package: staden-io-lib (#3604)
* Add package for staden-io-lib

* Flake8 cleanups
2017-03-28 21:33:34 -05:00
George Hartzell
bdf0baead7 New package: mummer (#3606)
* Add package for mummer

Blocked on https://github.com/LLNL/spack/pull/3555.

* Make "check" step optional and flake8 cleanups
2017-03-28 21:27:20 -05:00
George Hartzell
81a0881a57 new package: pigz (#3612)
* Add package for pigz

* Whitespace

* Remove leftover instructions (oops...)

* Flake8 cleanup

* Convert to MakefilePackage
2017-03-28 21:15:30 -05:00
George Hartzell
e5eb8e34c5 new package: blat (#3610)
* Add package for blat

* Whitespace cleanup

* Flake8 cleanup
2017-03-28 21:14:26 -05:00
George Hartzell
1e5da65d65 Add packages for miniconda[23] (#3613) 2017-03-28 21:13:46 -05:00
George Hartzell
36f80bdfa4 Add support for version 20170322 (#3598) 2017-03-28 18:56:21 -05:00
George Hartzell
a9025e3283 Add version info for 7.4.1 (#3600) 2017-03-28 18:55:25 -05:00
George Hartzell
212b342fd3 Add support for v8.0.0503 (#3596) 2017-03-28 18:51:30 -05:00
George Hartzell
5f3e9a791f Nextflow versions 0.24.1 and 0.23.3 (#3597)
Add support for nextflow versions 0.24.1 and 0.23.3.
2017-03-28 18:50:21 -05:00
sknigh
42f9040dfe fix for #3588 (#3589)
* fix for #3588

* set 'build_directory' variable instead
2017-03-28 12:59:24 -05:00
健美猫
8378d659e7 Add a package: cub. (#3584) 2017-03-28 12:46:47 -05:00
healther
41cfb811f0 add package double-conversion (#3585) 2017-03-28 12:29:05 -05:00
healther
98d67bd060 Add new version to glog (#3586) 2017-03-28 12:28:30 -05:00
sknigh
f6b6e397cb Add SST/macro and Dumpi trace packages (#3025)
* Added packages for Structural Simulation Toolkit and Dumpi trace

* sst-dumpi deps

Remove extraneous dependency from sst-dumpi

* Removed redundant function and fake-url from sst-dumpi package

* Fixed URL, Added git branches, requested changes

sst-dumpi version listed as 6.1, made an upstream change to 6.1.0
sst-macro and sst-dumpi can be installed as v6.1.0 and master branch

* Added bootstrap. Tweaked URLs and description
2017-03-28 12:28:05 -05:00
Todd Gamblin
dead67ae56 Restore newlines to easy-install.pth files. (#3583)
Previous syntax fix in 8a873bb was not quite right.
2017-03-28 09:32:50 -07:00
Todd Gamblin
782f29bc4b Fix bug in spack find for installations with unknown namespaces. (#3573)
- Spack find would fail with "unknown namespace" for some queries when a
  package from an unknown namespace was installed.

- Solve by being conservative: assume unknown packages are NOT providers
  of virtual dependencies.
2017-03-28 08:43:43 -07:00
Todd Gamblin
e549daa8ce Bugfix: allow deactivating installs that don't have packages anymore. (#3572)
- deactivate -a wouldn't work if the installation's package was no longer
  available.

- Fix installed_extensions_for so that it doesn't need to look at the
  package.py file.
2017-03-28 08:43:15 -07:00
健美猫
d9ddf2070c Add package kaldi. (#3503) 2017-03-28 09:39:23 -05:00
Erik Schnetter
e9737ee452 googletest: Convert to CMakePackage (#3571)
* googletest: New version 1.8.0

* googletest: Simplify
2017-03-28 09:34:45 -05:00
Denis Davydov
a8c58551ae openblas: raise an error when using unsupported Apple clang (#3577) 2017-03-28 08:14:12 -05:00
Mark Olesen
89d08c5be4 CONFIG: update versions for paraview (#3537)
- drop old TCL support from paraview build.

- add +plugins variant to have include directories installed. This is
  enabled by default since the additional diskspace for includes is
  really minimal and since this also allows re-use of the VTK libraries
  from ParaView without necessarily requiring a separate VTK
  installation.

- +opengl2 is now the default. As per all newer VTK and paraview versions.

BUG: broken install for paraview-5.0.1 with includes and without python

- incorrect conditional for ui_pqExportStateWizard.h when python is
  disabled and includes are to be installed.
  gcc compiler detection patch.
  These have both been fixed in paraview 5.3.0

ENH: refactor as a CMakePackage.

- Note that "spack install paraview" works as expected, but
  "spack build paraview" fails in weird unrelated ways.
2017-03-28 08:09:22 -05:00
Peter Doak
c20cd73b4a this builds cvs CentOS Linux release 7.2.1511 (#3574) 2017-03-27 14:33:22 -07:00
Gregory Lee
1cc2d22268 Merge pull request #3570 from LLNL/packages/elfutils-preferred-version
Make 0.163 the preferred version of elfutils.
2017-03-27 11:15:46 -07:00
Gregory Lee
8a873bbd8d Fix easy-install.pth syntax (#3569) 2017-03-27 10:56:55 -07:00
Todd Gamblin
394b78637d Make 0.163 the preferred version of elfutils.
- later versions do not seem to work well with libdwarf.
2017-03-27 10:14:49 -07:00
George Hartzell
625a1634bb Update to version 0.4.8-1 (#3568) 2017-03-27 11:24:51 -05:00
George Hartzell
9f19cb4193 Bugfix/gnutls (#3565)
* Fix nettle dependency

GnuTLS requires a nettle from the 2.7 series, won't work
with 3.x (so sayeth configure when it crashes...).

* Fix configure symlinking GNUmakefile to itself

I'm confused about how this ever worked, but....

As configure runs, it does something like this:

```
config.status: linking /home/hartzelg/tmp/spack/var/spack/stage/gnutls-3.3.9-uq2u4ecucncv2l3akran765aystyvkys/gnutls-3.3.9/GNUmakefile to GNUmakefile
```

and since that is the cwd the build crashes with:

```
==> 'make' '-j28'
make: GNUmakefile: Too many levels of symbolic links
make: stat: GNUmakefile: Too many levels of symbolic links
make: *** No rule to make target `GNUmakefile'.  Stop.
```

Since the comment in the configure script points out that the
GNUmakefile is "only for the maintainer" I've just commented out the
bit that leads to the symlinking.

Builds for me on CentOS 7.  (I do have a recent-ish set of auto-*
things in my patch via linuxbrew)

* Wordsmith

* Fix symbolic link problem properly

Autotools magic.  See #3565 for the details.

* Flake8 cleanup

* Add some headroom on the version number constraint

We really want < 3.0 but there's not a good way to express it.

We'd like to avoid having to update the file if they release 2.7.2.

This seems like a good compromise.
2017-03-27 10:29:56 -05:00
Mark Olesen
f3ee4ec5bd CONFIG: update qt package to build qt-5.7.1 (#3535)
- adjusted formatting to reduce some flake8 complaints
2017-03-27 08:29:33 -05:00
健美猫
a623a146de fftw: Add 3.3.6-pl2, remove 3.3.6-pl1. (#3566) 2017-03-27 07:55:16 -05:00
Mark Olesen
1c73f9d92f ENH: add int64 variant to scotch (as per metis +int64) (#3536)
BUG: provide patch for scotch 6.0.4 if building non-threaded

- corresponds to issue #20179 from the scotch issue trackter
2017-03-27 07:48:14 -05:00
George Hartzell
dd79630464 Update texlive digest/md5 (sigh...) (#3564) 2017-03-26 19:26:33 -05:00
George Hartzell
2d78b3113c Nettle: new version (#3563)
gnutls needs nettle from the 2.7 series.  Might as well give it
the latest.
2017-03-26 19:26:07 -05:00
Denis Davydov
2b3ce576a5 tbb: add 2017.5 (#3560) 2017-03-26 09:38:18 +02:00
Denis Davydov
b8486f413a mumps: add 5.1.1 (#3557) 2017-03-26 09:33:44 +02:00
Denis Davydov
a14f9491db hypre: add 2.11.2 (#3556) 2017-03-26 09:32:49 +02:00
Denis Davydov
57ef184254 superlu-dist: add 5.1.3 (#3559) 2017-03-26 09:31:32 +02:00
Denis Davydov
1e9eae4bfa suite-sparse: add 4.5.4 (#3558) 2017-03-26 09:26:57 +02:00
George Hartzell
bfd2db0c76 Add url_for_version and depends_on('libiconv') (#3555)
* Add url_for_version and depends_on('libiconv')

Fetching is broken.  See https://github.com/LLNL/spack/issues/3554.

libgd, when used in gnuplot at least, needs a dependency
on libiconv.

* Undo change from debugging pokery
2017-03-25 20:06:09 -05:00
Michael Kuron
55300d1181 pnfft: new package (#2646)
* pnfft: new package

* Convert some packages with overridden install from AutotoolsPackage to Package

* pnfft: fix URL

* Switch FFTW-derived packages back to AutotoolsPackage

* Disable unneeded build phases in FFTW and derived packages

* Separate build phases for FFTW and derived packages

* Fix broken merge

* fftw: pfft_patches for 3.3.6

* fftw: address @adamjstewart’s review comments
2017-03-25 14:27:52 -05:00
Brian Van Essen
3af971165a Added a package for Nvida NCCL (#3552) 2017-03-24 17:53:16 -07:00
Denis Davydov
61d01a71dd make git fetching quite (#3180)
also output repo and branch/commit/tag in one line
2017-03-24 17:37:47 -07:00
Adam J. Stewart
6461737bba Add latest version of util-linux (#3551) 2017-03-24 16:44:54 -05:00
Adam J. Stewart
821155470c Add mozjs package (#3550) 2017-03-24 16:31:59 -05:00
Adam J. Stewart
c97d79b150 Add old version of zlib (#3549) 2017-03-24 16:31:31 -05:00
Adam J. Stewart
5297d3d2ff Add NSPR package (#3548) 2017-03-24 16:23:01 -05:00
Adam J. Stewart
78301396f0 Add linux-headers package (#3547) 2017-03-24 16:22:36 -05:00
Adam J. Stewart
50f4f0827d Add libcap package (#3546) 2017-03-24 16:02:01 -05:00
Adam J. Stewart
0b4c39a9e0 Various updates to the intltool package (#3545) 2017-03-24 15:45:08 -05:00
Adam J. Stewart
df777bf077 Add autogen package (#3542) 2017-03-24 15:44:34 -05:00
Adam J. Stewart
eca8f548dc coreutils can no longer be built in-source (#3543) 2017-03-24 15:44:01 -05:00
George Hartzell
b5acd5e44b Fix r package, tk no longer has an X variant (#3544)
Tk recently lost its X variant (it now always uses X).

That broke r, this commit fixes it.

Tested on CentOS 7.
2017-03-24 15:43:25 -05:00
Adam J. Stewart
08799eac23 Add latest version of GNU Guile (#3541) 2017-03-24 15:20:52 -05:00
Adam J. Stewart
a60210f6b2 Add latest version of bdw-gc (#3539) 2017-03-24 15:20:25 -05:00
Adam J. Stewart
8a463c07ea Convert libatomic-ops to AutotoolsPackage (#3540) 2017-03-24 15:13:05 -05:00
Adam J. Stewart
3c96749622 Add latest version of libunistring (#3538) 2017-03-24 14:57:42 -05:00
Adam J. Stewart
1fe987949f Clean up the gcc package (#3511)
* Clean up the gcc package

* Add preliminary testing support

* Older versions of GCC do not depend on MPC

* DejaGnu 1.4.4 cannot be built in parallel

* Fix GCC test dir

* Add two more deps required to run the testsuite
2017-03-24 14:56:22 -05:00
Mark Olesen
268d48b407 CONFIG: update mxml versions (#3534) 2017-03-24 14:22:26 -05:00
Jimmy Tang
be5bb33aac Initial add of dev package (#3533)
* Initial add of dev package

* Use a more acceptable URL
2017-03-24 13:12:57 -05:00
健美猫
c68295df2c Add cuda support for gromacs. (#3527) 2017-03-24 07:48:08 -05:00
George Hartzell
4a36f23fa8 Add release info for git v2.12.1 (#3532)
Add info for git and git-manpages.

Built/tested on CentOS7.
2017-03-23 17:43:28 -05:00
Adam J. Stewart
929a3317e9 Add env vars for Intel VTune Amplifier (#3531)
* Add env vars for Intel VTune Amplifier

* Flake8 fix
2017-03-23 15:58:12 -05:00
Adam J. Stewart
10b49fd845 Add DejaGnu package (#3518) 2017-03-23 14:35:38 -05:00
Adam J. Stewart
4ecfc39e1e Add Expect package (#3517)
* Add Expect package

* Ignore patches during flake8 tests for package.py files

* Remove controversial changes
2017-03-23 14:35:11 -05:00
Adam J. Stewart
ace890af49 Only configure requested lammps features (#3526)
* Only configure requested lammps features

* Run configure from root and make from src
2017-03-23 12:28:17 -05:00
Adam J. Stewart
4e8a59a062 Add patch to fix xcb-proto make check (#3520) 2017-03-22 16:17:01 -05:00
Howard Pritchard
7c82db07ac Open MPI: add new packages (#3519)
there were various updated packages, both for the 2.x, 2.0.x,
and 1.10.x release branches of Open MPI.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
(cherry picked from commit 3b671935783fc3af76dc642a54461c2f02ab8ebf)
2017-03-22 16:16:32 -05:00
Jeffrey Salmond
f225741d07 configure vtk with external hdf5 and netcdf packages (#3504)
* configure vtk with external hdf5 and netcdf packages

* remove ~mpi constraints from hdf5 and netcdf
2017-03-22 14:53:05 -05:00
Erik Schnetter
7e7045e0ca llvm: Install utilities into libexec (#3516) 2017-03-22 09:01:10 -07:00
Jimmy Tang
31e28f9662 Update googletest (#3514) 2017-03-22 06:57:20 -05:00
Gregory Lee
606c5fbc5f patch readline to fix ipython seg fault (#3512) 2017-03-21 16:24:13 -07:00
Adam J. Stewart
07397e8ef7 Convert gettext to AutotoolsPackage (#3510) 2017-03-21 17:40:45 -05:00
George Hartzell
9b5f5fccf0 Fix for find --explicit #3374 (#3492)
This fixes the problem described in #3374, which describes `spack find` ignore explicit/implicit.

I believe that this was broken in #2626.

This restores the behavior of implicit/explicit for me.

I believe that it does not screw anything else up, but ....
2017-03-21 15:30:38 -07:00
Adam J. Stewart
657110f9d7 Convert isl to AutotoolsPackage (#3507) 2017-03-21 12:11:03 -05:00
Adam J. Stewart
ed9dec2259 Add recommended patches to mpfr package (#3506) 2017-03-21 11:25:14 -05:00
Kim Serradell
3923bdca90 Replacing failing git clone by valid url (#3505)
* Replacing failing git clone by valid url

* Moving to previous version package (0.163)

* Removing automake and autoconf dependencies and adding url_list to pick up newer versions

* Corrected typo

* Reorder versions and removed libtool
2017-03-21 10:50:34 -05:00
健美猫
babeb32c6d Add package openfst. (#3324) 2017-03-21 09:53:58 -05:00
Erik Schnetter
75c6c9f1ee llvm: Don’t copy “prefix/bin” into “prefix” during install (#3460) 2017-03-20 20:46:29 -05:00
Adam J. Stewart
777acb4c03 Fix: setuptools is a runtime dependency for pudb (#3502) 2017-03-20 18:08:45 -05:00
Adam J. Stewart
d31bbe450b Add latest version of binutils (#3500) 2017-03-20 18:07:37 -05:00
Michael Kuhn
0be9cee984 Update leveldb to 1.20 (#3441) 2017-03-20 15:07:24 -05:00
Erik Schnetter
79d0e7a5d7 gasnet: Update to 1.28.2 (#3496) 2017-03-20 15:05:23 -05:00
Erik Schnetter
ae8380c4fb cereal: Update to 1.2.2 (#3499) 2017-03-20 15:05:02 -05:00
Erik Schnetter
91dd854694 jemalloc: Update to 4.5.0 (#3497) 2017-03-20 15:04:34 -05:00
Erik Schnetter
68a4706b1e py-yt: Update to 3.3.5 (#3498) 2017-03-20 15:04:17 -05:00
scheibelp
19dca26f3a Improve output for compiler commands (#3480)
* Order listed compiler sections

"spack compiler list" output compiler sections in an arbitrary order.
With this commit compiler sections are ordered primarily by compiler
name and then by operating system and target.

* Compiler search lists config files with compilers

If a compiler entry is already defined in a configuration file that
the user does not know about, they may be confused when that compiler
is not added by "spack compiler find". This commit adds a message at
the end of "spack compiler find" to inform the user of the locations
of all config files where compilers are defined.
2017-03-20 12:36:44 -07:00
Matthew LeGendre
5ac6421f14 Fix issue with config.guess patching when the overwritten config.guess did not have write permissions. (#3494) 2017-03-20 12:35:38 -07:00
Erik Schnetter
22f3c9de84 fftw: Update to 3.3.6-pl1 (#3495) 2017-03-20 12:35:08 -07:00
健美猫
1655161ebb Add ffmpeg package. (#3470) 2017-03-19 10:12:34 -05:00
健美猫
fb248f17fb Substitue ftp:// with http:// (#3491) 2017-03-19 10:11:06 -05:00
健美猫
14c181e480 Add new version for intel package: 16.0.4 17.0.2 . (#3490) 2017-03-19 07:57:06 -05:00
Todd Gamblin
1297e47463 Use byte-encoded UTF-8 for sourced environment in Python 2 (#3489)
- Fixes recurring errors on develop with unicode commit characters.
- still Python3-proof: python3 will use str instead of bytestrings.
2017-03-18 22:48:20 -07:00
Erik Schnetter
a0ab3c2523 hdf5: Clean up building self-tests (#3483)
* hdf5: Clean up building self-tests

* hdf5: Clean up running self-tests
2017-03-18 20:14:47 -05:00
Adam J. Stewart
4866b4592f Add missing dependencies to gawk (#3481)
* Add missing dependencies to gawk

* Fix make check

* Add mawk packages and awk virtual dependency

* Use mawk instead of gawk to build ncurses

* Rearrange order of patches and dependencies
2017-03-18 19:13:32 -05:00
Adam J. Stewart
9d0a3c6b05 Fix deptype of various dependencies on Python packages (#3486) 2017-03-18 15:20:16 -05:00
Javier
6b97f538cf Adding new packages: py-argparse and py-importlib (#3488) 2017-03-18 13:45:29 -05:00
Adam J. Stewart
773357e20f setuptools is a runtime dependency of virtualenv (#3485) 2017-03-17 16:25:48 -05:00
Erik Schnetter
a2235fed41 julia: Create cacert directory manually to ensure correct permissions (#3482) 2017-03-17 16:07:49 -05:00
Javier
b0d9088603 Adding new package: py-future (#3401)
* Adding new package: py-future

* Commenting out deps needed when installing python@2.6
2017-03-17 13:59:38 -05:00
Adam J. Stewart
10b767b93f Don't use @system in packages.yaml (#3472) 2017-03-17 07:55:55 -07:00
Adam J. Stewart
5f13e40655 Add package for ESMF (#2831)
* Add package for ESMF

* Apparently mvapich2 is supported?
2017-03-17 09:21:25 -05:00
Adam J. Stewart
2c39f16d44 Add version constraints to VTK patch (#3357) 2017-03-17 09:19:44 -05:00
Erik Schnetter
19b3afebc9 hpx5: Convert to AutotoolsPackage, several updates (#3456)
* hpx5: Convert to AutotoolsPackage, several updates

- convert to AutotoolsPackage
- add several variants
- add several dependencies
- add new version 4.0.0
- don’t set compiler flags explicitly

* hpx5: Don’t import os

* hpx5: Clean up configure arguments

* hpx5: Correct libffi configure declaration

Also add new variant “+instrumentation”.

* hpx5: Correct CUDA, MPI, OpenCL configuration

* hpx5: Use built-in libffi

Spack’s libffi installs its headers in a strange place, and hpx5 can’t pick them up.
2017-03-17 09:11:02 -05:00
Erik Schnetter
e7bf8034b0 libpciaccess: Convert to AutotoolsPackage, remove Darwin work-around (#3459)
* libpciaccess: Convert to AutotoolsPackage, remove Darwin work-around

Other packages that depend on libpciaccess can do so via a conditional dependency (via a variant); we don’t need a dummy package for Darwin any more.

* Disable libpciaccess dependency on non-Darwin platforms

* hwloc: Remove direct dependency on libpciaccess
2017-03-17 09:09:09 -05:00
Michael Kuhn
1124bdc99e Add packages libbson and libmongoc (#3440) 2017-03-16 23:16:30 -07:00
Erik Schnetter
9c1885022e simulationio: New package (#3422)
* simulationio: New package

* simulationio: Rename development version to “develop”

* simulationio: Try to make flake8 happy

* simulationio: Correct flake8 error

* simulationio: Extend Python

* simulationio: Remove unused imports
2017-03-16 23:06:47 -07:00
Adam J. Stewart
386462c0cb Add latest version of NCO (#3469) 2017-03-16 21:39:41 -07:00
Brian Van Essen
3f17f761fe Py keras extension (#3468)
* Added support for building Theano with GPU support.  Added a package
for the libgpuarry libary needed for Theano.

* Added dependency on py-pexpect package which ipython requires.
2017-03-16 21:24:36 -07:00
scheibelp
0b27a7e13d Detect when OS updates affect compiler selection (#3410)
Fixes #1476

Concretization uses compilers defined in config files and if those
are not available defaults to searching typical paths where the
detected operating system would have a compiler. If there is an OS
update, the detected OS can change; in this case all compilers
defined in the config files would no longer match (because they would
be associated with the previous OS version). The error message in
this case was too vague. This commit adds logic for detecting when it
is likely that the OS has been updated (in particular when that
affects compiler concretization) and improves the information provided
to the user in the error message.
2017-03-16 21:08:13 -07:00
scheibelp
5936ad2ca7 Dont propagate flags between different compilers (#3379)
* Dont propagate flags between different compilers

Fixes #2786

Previously when a spec had no parents with an equivalent compiler,
Spack would default to adding the compiler flags associated with the
root of the DAG. This eliminates that default.

* added test for compiler flag propagation

* simplify compiler flag propagation logic
2017-03-16 21:07:35 -07:00
Todd Gamblin
328b2142f5 Fix Qt4 build on Yosemite (10.11) (#3444) 2017-03-16 17:55:06 -07:00
Erik Schnetter
4f05fb4b3f gasnet: Convert to AutotoolsPackage, update (#3455)
* gasnet: Convert to AutotoolsPackage, update

- convert to AutotoolsPackage
- add new version 1.28.0
- create variants for IB and MPI support

* gasnet: Don’t specify prefix explicitly

* gasnet: Add missing variant descriptions

* gasnet: Correct syntax error
2017-03-16 18:12:25 -05:00
scheibelp
9a27dec8e8 Dont auto-init compiler conf for 'compiler find' (#3439)
Fixes #3428

Users can run 'spack compiler find' to automatically initialize their
compilers.yaml configuration file. It also turns out that Spack will
implicitly initialize the compilers configuration file as part of
detecting compilers if none are found (so if a user were to attempt to
concretize a spec without running 'spack compiler find' it would not
fail). However, in this case Spack was overlooking its own implicit
initialization of the config files and would report that no new
compilers were found. This commit removes implicit initialization when
the user calls 'spack compiler find'.

This did not surface until #2999 because the 'spack compiler' command
defaulted to using a scope 'user/platform' that was not accounted for
in get_compiler_config (where the implicit initialization logic
predates the addition of this new scope); #2999 removed the scope
specification when checking through config files, leading to the
implicit initialization.
2017-03-16 11:24:34 -07:00
Adam J. Stewart
99ef28b5d2 Add latest version of lmod (#3467) 2017-03-16 12:50:30 -05:00
Adam J. Stewart
4c7a721341 Add latest version of git, convert to AutotoolsPackage (#3466) 2017-03-16 12:50:10 -05:00
Erik Schnetter
2eda08f192 julia: New variant +simd (#3458) 2017-03-16 11:49:37 -05:00
Erik Schnetter
83fe65e121 hwloc: Add missing dependencies (#3457)
* hwloc: Add missing dependencies

- add several missing dependencies
- add variants for various features
- add new version 1.11.6

* hwloc: Add descriptions to variants
2017-03-16 11:48:39 -05:00
Erik Schnetter
53ca628d8b qthreads: New version 1.12 (#3464) 2017-03-16 10:08:48 -05:00
Erik Schnetter
a609d22b95 pocl: Introduce virtual package “opencl” (#3461)
OpenCL is a standard like MPI, with several versions and several implementations.
2017-03-16 09:47:46 -05:00
Erik Schnetter
d6a7000aee py-numpy: Correct typos in comment (#3462) 2017-03-16 09:45:09 -05:00
Erik Schnetter
19a90ccc19 py-scipy: New version 0.19.0 (#3463) 2017-03-16 09:39:26 -05:00
Javier
9e1e3a203a Adding new package: py-jpype (#3402)
* Adding new package: py-jpype

* Moving jdk dependency
2017-03-16 06:37:09 -05:00
Adam J. Stewart
4518ff0150 Add latest version of lua (#3454) 2017-03-15 21:28:56 -05:00
Adam J. Stewart
a40ccc24d6 Add latest version of pcre (#3453) 2017-03-15 21:28:29 -05:00
Adam J. Stewart
72890f4840 Add latest version of readline (#3452) 2017-03-15 20:36:24 -05:00
Adam J. Stewart
caf209bdd7 Add latest version of libiconv (#3451) 2017-03-15 20:08:01 -05:00
Gregory Lee
d0060bc318 added parallel studio composer edition 2017.2 (#3450) 2017-03-15 18:51:18 -05:00
Adam J. Stewart
7be728d551 Add latest version of libsigsegv (#3449) 2017-03-15 18:00:17 -05:00
Adam J. Stewart
9f1af5913b Add latest version of cURL (#3447) 2017-03-15 16:01:10 -05:00
Adam J. Stewart
41114c3e76 Add latest version of Intel Parallel Studio (#3445) 2017-03-15 13:46:48 -05:00
健美猫
9af7bef10b Add version 4.0 for foam-extend. (#3442) 2017-03-15 13:02:36 -05:00
Adam J. Stewart
dca4d2b15e Consistent docs and usage of env mod methods (#3351) 2017-03-14 22:26:44 -07:00
Denis Davydov
560d28ac7f fix automatic mixing of clang with gfortran 6.3.0 on macOS (#3427)
* fix automatic mixing of clang with gfortran 6.3.0 on macOS
* automatically mix any gfortran with any clang on macOS
* adjust the unit test
2017-03-14 09:48:27 -07:00
Massimiliano Culpo
8c3edfd36f test/file_cache.py: ported to pytest (#3429) 2017-03-14 09:07:04 -07:00
Adam J. Stewart
64bd7adefa Fix vim ~gui behavior (#3432) 2017-03-14 07:45:17 -07:00
Adam J. Stewart
5430d45db1 Add latest version of openpyxl and missing dependencies (#3431) 2017-03-14 07:44:46 -07:00
Adam J. Stewart
b203058891 Fix zlib %pgi build (#3436) 2017-03-14 07:43:54 -07:00
Erik Schnetter
415c9398d2 ncurses: Use gawk as awk (#3425) 2017-03-14 07:43:02 -07:00
Todd Gamblin
d11e262b36 Fix from_sourcing_files(): decode json input as utf-8 (#3433) 2017-03-13 15:52:36 -07:00
Erik Schnetter
9121599145 New package pocl (#3413)
* New package pocl

* pocl: Update dependencies, add self-test

* pocl: Don't require LLVM shared libraries

LLVM build fails with shared libraries.

* Add patch

* Update

* Update

* Make build and install work; install test still fails

* Split pocl into pocl proper and pocl-test

* Add debug output

* pocl: Update to 0.14-rc

* pocl: Correct flake8 error

* pocl: Heed code review recommendations

* pocl: Add newline at end of file

* pocl: Correct flake8 error

I don’t want to use an even longer line by putting the whole variant declaration onto a single line, nor do I think that having an overlong line and adding `# noqa` at the end is more readable than splitting a string over three lines.

* pocl: Correct dependency type for libtool
2017-03-12 12:52:18 -05:00
Denis Davydov
0b948da74c gnuplot: fixed broken package and add variants (#3185)
* gnuplot: fix conflict in header via a simple patch; add variants

* gtkplus: fix missing dependency

* wx: fix build on macOS; switch to AutotoolsPackage

* gnuplot: add missing dependencies

* wx: put back parallel build
2017-03-12 09:37:26 -05:00
Erik Schnetter
d8f1446265 julia: New version 0.5.1 (#3418)
* julia: New version 0.5.1

* julia: Define url on a single line
2017-03-11 21:04:44 -06:00
Erik Schnetter
9a14597493 autoconf: Correct m4 dependency declaration (#3415)
* autoconf: Correct m4 dependency declaration

Closes #3406.

* autoconf: Correct m4 dependency type

* autoconf: Update comment
2017-03-11 21:04:18 -06:00
Erik Schnetter
02db630985 hwloc: Disable OpenCL (#2854)
* hwloc: Disable OpenCL

* hwloc: Convert `install` to `configure_args`
2017-03-11 20:59:06 -06:00
Erik Schnetter
41a3957540 libxsmm: Add header-only variant (#3419)
* libxsmm: Add header-only variant

* libxsmm: Implement requestes from code review

* libxsmm: Correct error in previous simplification

* libxsmm: Raise error if `header-only` variant is not supported by version

* libxsmm: Correct flake8 errors
2017-03-11 16:00:47 -06:00
Erik Schnetter
18ac76b320 bison: Declare m4 dependency correctly (#3424)
* bison: Declare m4 dependency correctly

* bison: Declare m4 as run-time dependency
2017-03-11 15:58:57 -06:00
Erik Schnetter
23d4a60639 funhpc: New package (#3421)
* funhpc: New package

* funhpc: Rename development version to “develop”

* funhpc: Try to make flake8 happy

* funhpc: Correct flake8 error
2017-03-11 15:58:09 -06:00
Erik Schnetter
63a8f79980 Correct inconsistency in comment (#3414) 2017-03-11 12:52:08 -06:00
Erik Schnetter
7e3eaba899 hdf5-blosc: Update compiler selection in self-test (#3417) 2017-03-11 12:50:54 -06:00
Erik Schnetter
093ffdfa45 cuda: Allow using unknown compilers (#3416)
* cuda: Allow using unknown compilers

* cuda: Correct flake8 error
2017-03-11 12:42:02 -06:00
Erik Schnetter
b30637e1ce py-yt: New version 3.3.4 (#3420) 2017-03-11 12:39:33 -06:00
Erik Schnetter
48640cf2fa binutils: Add gettext dependency (#3423) 2017-03-11 12:38:51 -06:00
Elsa Gonsiorowski
eef2021d91 pdsh basic package (#3408)
* added basic pdsh package

* need link to actual archive file
2017-03-11 09:12:26 -06:00
Todd Gamblin
e3101808ae Make multimethods work with inheritance. (#3411)
Previously, this would fail with a NoSuchMethodError:

    class Package(object):
        # this is the default implementation
        def some_method(self):
            ...

    class Foo(Package):
        @when('platform=cray')
        def some_method(self):
            ...

        @when('platform=linux')
        def some_method(self):
            ...

This fixes the implementation of `@when` so that the superclass method
will be invoked when no subclass method matches.

Adds tests to ensure this works, as well.
2017-03-11 05:48:36 -08:00
Mario Melara
15f80ed15c Add paths to PKG_CONFIG_PATH to find cray .pc file (#3378)
* Add paths to PKG_CONFIG_PATH to find cray .pc file

Adds two paths: /usr/lib64/pkgconfig and /usr/local/lib64/pkgconfig.

cray pkg-config looks at two different paths which are not included
in PKG_CONFIG_PATH environment variable. This PR addresses #3167.

* Flake8 fixes

* flake8 fix again
2017-03-10 16:29:20 -08:00
scheibelp
e727f56d89 Features/compiler config consistency (#2999)
* default scope for config command is made consistent with cmd/__init__ default

* dont specify a scope when looking for compilers with a matching spec (since compiler concretization is scope-independent)

* config edit should default to platform-specific file only for compilers

* when duplicate compiler specs are detected, the exception raised now points the user to the files where the duplicates appear

* updated error message to emphasize that a spec is duplicated (since multiple specs can reference the same compiler)

* 'spack compilers' is now also broken down into sections by os and target

* Added tests for new compiler methods
2017-03-10 13:58:48 -08:00
Javier
68f5b9adf8 Adding new package: py-lxml (#3403)
* Adding new package: py-lxml

* Adding missing version
2017-03-10 13:18:17 -06:00
Javier
a1e8644f63 Adding new package: py-elasticsearch (#3398)
* Adding new package: py-elasticsearch

* Adding missing dependency
2017-03-10 12:48:41 -06:00
Javier
0c9ddeafe4 Adding new package: py-keras (#3400)
* Adding new package: py-keras (and dependencies)

* Fixing dependencies
2017-03-10 12:48:22 -06:00
Jon Rood
6066526492 Confining CPPFLAGS=-P to only happen for GCC. (#3404) 2017-03-10 12:48:03 -06:00
Javier
22d7f9da40 Adding new package: py-py4j (#3390)
* Adding new package: py-py4j

* Adding missing depedency
2017-03-10 07:30:28 -06:00
Javier
a7f35b3db6 Adding new package: py-joblib (#3399) 2017-03-10 07:30:01 -06:00
Javier
84db03b5a8 Adding new package: vdt (#3396) 2017-03-10 07:08:41 -06:00
Javier
901f044bbf Adding new package: vc (#3397) 2017-03-10 07:08:17 -06:00
Javier
f0fd0156de Adding new package: py-pathos (and dependencies) (#3391)
* Adding new package: py-pathos (and dependencies)

* Fixing required versions
2017-03-09 17:28:32 -06:00
George Hartzell
611df0bebf New gcc uses C++14 mode, this fixes implicit conversion (#3392)
* New gcc uses C++14 mode, this fixes implicit conversion

The issue is described in depth [here][desc].  C++14 no longer
allows implicit conversion from iostream classes to void*.

This patch comes directly from [PR #6][patch].

[desc]: http://stackoverflow.com/questions/38659115/make-fails-with-error-cannot-convert-stdistream-aka-stdbasic-istreamchar
[patch]: https://github.com/agordon/libgtextutils/pull/6

* mend
2017-03-09 17:27:56 -06:00
Javier
ebd5066d07 Adding new package: py-4suite-xml (#3389) 2017-03-09 13:44:37 -06:00
Gregory Lee
604b75c1f9 created elf virtual package and updated dependent packages (#3317)
* created elf virtual package and updated dependent packages
* added `hide_files` context manager to handle moving files.
2017-03-09 10:36:32 -08:00
Erik Schnetter
2ac343e92e cosmomc: New package CosmoMC (#3292)
* cosmomc: New package CosmoMC

* cosmomc: Improve version numbering scheme

* planck-likelihood: New package

* cosmomc: Pacify flake8

* cosmomc: Code cleanup as requested in the review

* cosmomc: Various updates suggested during review

* cosmomc: Limit compiler versions (as documented in the build instructions)

* cosmomc: Correct flake8 error

* cosmomc: Use `libs` instead of `lapack_libs`

* planck-likelihood: Make makefile output more verbose and readable

* planck-likelilhood: Correct order of libraries when calling linker

* cosmomc: Clean up check for suitable compiler

* planck-likelihood: Use modern mechanism to set environment variables
2017-03-09 08:14:13 -06:00
Brian Van Essen
21e913bac5 Updated the spectrum-mpi package to get the right compiler names when (#3381)
we use spectrum.
2017-03-09 08:11:59 -06:00
Michael Kuhn
44b165461a udunits2: Add build dependency on texinfo (#3383) 2017-03-09 08:11:23 -06:00
Michael Kuhn
c1f8fbed34 ncl: Update to 6.4.0 (#3384) 2017-03-09 08:11:06 -06:00
Javier
e8c8e444e8 Fixing checkum of py-coverage v4.3.4 (#3386) 2017-03-09 08:10:45 -06:00
Massimiliano Culpo
f2c1cbdcd3 patch: configure and build out of source fixes #3387 (#3388) 2017-03-09 07:40:05 -06:00
Brian Van Essen
acf95c92a6 Fixes the Elemental and LBANN packages to conform to the new syntax (#3382)
introduced by PR https://github.com/LLNL/spack/pull/1875
2017-03-08 14:32:26 -06:00
healther
bacb60457d Add package py-guiqwt and dependencies (#3334)
* add package py-guiqwt with dependencies

* fixed url

* fixed url2

* Update package.py

* Update package.py
2017-03-08 10:18:57 -06:00
Massimiliano Culpo
f1d66467e3 package.py: packages dump build dependencies in prefix (#3373)
Modifications:
- `dump_packages` copies build dependencies into `$prefix/.spack`, as well as the link/run dependencies that we already copied there.
- fake installs copy dependency packages into `$prefix/.spack` as well
2017-03-07 07:05:45 -08:00
Massimiliano Culpo
c6d9a45f18 test/environment.py: ported to pytest, added a test on separators (#3375) 2017-03-07 07:03:12 -08:00
AP97
3d9cd72e33 Adding farmhash package from google (#3239)
* Adding farmhash package from google
2017-03-07 07:02:08 -08:00
Aidan San
5d1a16805e Added gemmlowp package (#3240) 2017-03-07 07:00:53 -08:00
Hans Pabst
2ae1ebbbe8 LIBXSMM 1.7.1 (#3371)
* Cleanup list of offered versions (only the latest update release of each minor version is kept: 1.4.4, 1.5.2, 1.6.6, 1.7.1); introduced master revision (via Git). Slightly more selective installation of the documentation; copy README.md and LICENSE files to documentation folder. Removed outdated build options (make_args); generally stay with LIBXSMM's defaults (general purpose build). Introduced one build variant ("debug").

* Incorporated comments of PR #3371 (https://github.com/LLNL/spack/pull/3371).

* Fixed flake8 complaints.

* Made the full list of versions available starting with version 1.4 (there are earlier releases, however those have been released before the Spack specification became available; original spec. also started with 1.4).

* Made DBG and TRACE actually two separate arguments.
2017-03-07 06:58:17 -08:00
Erik Schnetter
55e1550a59 openblas: Run tests only when requested (#3370)
The tests fail on some systems (e.g. Comet at SDSC) that impose limits on the number of processes or threads one can run simultaneously on the head node. Thus the tests should not be run by default.
2017-03-05 12:29:02 -06:00
Barry Smith
00d6cb9a8f Fixes veclibfort which was broken by PR1875 (#3368)
Funded-by: IDEAS
Project: IDEAS/xSDK
Thanks-to: Adam J. Stewart
2017-03-05 07:34:38 -06:00
healther
a7bab8a418 add package py-py-cpuinfo (#3339)
* add package py-py-cpuinfo

* renamed package to py-cpuinfo
2017-03-04 20:12:37 -06:00
Adam J. Stewart
a2d70a45fb Allow find_libraries to accept lists or strings (#3363)
* Allow find_libraries to accept lists or strings

* Convert one more example from list to string
2017-03-04 11:23:57 -06:00
Massimiliano Culpo
192a4b30f0 atlas: added a missing property decorator (#3366) 2017-03-04 10:24:48 -06:00
Denis Davydov
a36ed7fb9b fix blas/lapack usage after PR 1875 (#3365) 2017-03-04 09:42:02 -06:00
serbanmaerean
c3ac86310e ADIOS: change subclassing from Package to AutotoolsPackage (#3230)
* ADIOS: change the invocation of python script that generates test files

The python script ADIOS*/utils/gpp/gpp.py is invoked directly in the
ADIOS*/tests/genarray/Makefile and the name of the python interpreter
can be quite long if it is one built under spack, i.e. longer than the
80 characters allowed by the #! line in bash.  The name of the shbang
line is truncated at 80 characters and bash cannot find the python
interpreter specified.

This fix changes how the script is executed, by invoking it under
python. This way, the shbang line is ignored.

* adios: fixed flake8 errors from previous commit.

* adio: Switch to AutotoolsPackage class from Package class

Switched in order to add support for the ppc64le platform.
2017-03-04 07:53:50 -06:00
Jon Rood
0c1441c3e3 Using fPIC in PERL when using an Intel compiler. (#3355) 2017-03-04 07:50:38 -06:00
Adam J. Stewart
d52ac82f95 Convert gl2ps to CMakePackage (#3360)
* Convert gl2ps to CMakePackage

* Remove unused spec variable
2017-03-04 07:49:57 -06:00
Erik Schnetter
3e4fced7d8 ncurses: Work around an awk bug (#3361) 2017-03-04 07:49:12 -06:00
healther
1e6871add1 correct ipython dependency (#3332)
* correct ipython dependency

* needed to introduce a github download for py-jedi

* corrected dependencies

* restrict appnope dependency to darwin>10.8

* flake8 fix
2017-03-04 07:45:07 -06:00
healther
16c08fb5b3 add package py-junit-xml (#3336)
* add package py-junit-xml

* Update package.py

* flake8 fix
2017-03-04 07:44:36 -06:00
eklee15
c4e7cfe02b Added magma package (#3273)
* Added magma package

* Incorporated Serban's change

* Removed cmake dependency
2017-03-03 21:37:29 -06:00
healther
f34cd4be2b add package py-neo and py-quantities (#3337)
* add package py-neo and py-quantities

* Update package.py

* fixed errors
2017-03-03 21:34:20 -06:00
healther
ec81643906 add package py-pyminifier (#3340) 2017-03-03 21:34:04 -06:00
healther
b6ebfdaa60 add package py-serial (#3341)
* add package py-serial

* fixed setuptools dependency
2017-03-03 21:33:48 -06:00
healther
16e77086e0 add package py-pyfftw (#3342)
* add package py-pyfftw

* Update package.py
2017-03-03 21:33:31 -06:00
Adam J. Stewart
e7b019bf48 Revert "Make libgcc_s relocatable on Macos by adding @rpath to installname" (#3349) 2017-03-03 21:32:44 -06:00
Denis Davydov
003e841016 openblas: fix flags (#3344) 2017-03-03 19:30:35 -06:00
Andrew Holler
1cf8dbd200 features/highwayhash (#3242)
* Adding highwayhash package from Google

* Added the highwayhash package for Tensorflow

* Fixed the numerous flake8 issues

* fixed requested changes

* added conditionals for some installs

* forgot an import

* create install directories before you install anything in them
2017-03-03 19:00:43 -06:00
healther
8333c56ab8 add versions to package py-pandas (#3338) 2017-03-03 16:35:04 -06:00
Adam J. Stewart
678603f3cc scipy build fails when built in parallel (#3275) 2017-03-03 16:31:03 -06:00
Joschka Lingemann
7ef95767ee Fix error raised for multiple virtual packages. (#3306) 2017-03-03 16:30:32 -06:00
Erik Schnetter
37eb59622d opencoarrays: Correct download url, update version (#3322) 2017-03-03 16:29:56 -06:00
健美猫
9ec148e484 Add package sga. (#3330) 2017-03-03 16:28:34 -06:00
healther
dfbe3278c4 add package py-lmfit (#3333)
* add package py-lmfit

* needed to deactivate testing in openblas due to spec.cppflags being undefined

* undid openblas modification
2017-03-03 16:27:32 -06:00
healther
7dff5e7646 add package py-myhdl (#3335)
* add package py-myhdl

* Update package.py
2017-03-03 16:27:14 -06:00
Adam J. Stewart
897d0f3f3e Fix unexpected keyword error in Python 2.6 (#2954) 2017-03-03 15:24:44 -06:00
健美猫
d63a53e691 Fix simul by diabling inline and replacing mpicc command. (#3323) 2017-03-03 10:19:17 -06:00
healther
191bf1e132 add package py-elephant (#3302)
* add package py-elephant

* add variants for docs and pandas
2017-03-03 08:39:06 -06:00
healther
ba21940409 add resource manpages to package git (#3299)
* add resource manpages to package git

* Update package.py

* added manpages per version

* added explaining comment

* fixed synatx error
2017-03-03 08:07:50 -06:00
healther
def42f156d add flex variant to cscope (#3252)
* add flex variant to cscope

* fixed dependency

* fixed typo
2017-03-03 08:06:25 -06:00
健美猫
9df2649d02 Add package mdtest. (#3303) 2017-03-03 08:05:16 -06:00
健美猫
f443490f34 Add package sctk. (#3325) 2017-03-03 08:04:01 -06:00
健美猫
e4a0d8a78e Add packag gradle. (#3326) 2017-03-03 08:02:32 -06:00
healther
bb997d2de5 add package py-spyder (#3312)
* add package py-spyder

* fixed dependencies

* py-flake8 -> py-pycodestyle

* fixed packagename

* Update package.py

* Update package.py
2017-03-03 08:01:20 -06:00
healther
818118c589 add package py-qtawesome (#3308)
* add package py-qtawesome

requires py-qtpy

* fixed url

* remove unnecessary comment
2017-03-03 08:00:21 -06:00
healther
2d395d7d75 add package py-qtpy (#3307)
* add package py-qtpy

* (re)added qt dependence

* changed url
2017-03-03 08:00:01 -06:00
healther
ac0fa0ca6e add package py-numpydoc (#3311)
* add package py-numpydoc

* removed unnecessary dependency

* added dependency
2017-03-03 07:59:28 -06:00
健美猫
7511c9cd1a Add a new version for bamtools 2.4.1. (#3328) 2017-03-03 07:58:41 -06:00
healther
15c311fbeb add package notmuch and dependencies (#3329)
* add package notmuch and dependencies

depends on
* gmime

* flake8 again
2017-03-03 07:57:47 -06:00
healther
4494233c93 add package gmime (#3327)
* add package gmime

* flake8 fix..
2017-03-03 07:57:15 -06:00
Adam J. Stewart
7fcd414050 Fixes to allow Boost to build with Python 3 (#3293)
* Fixes to allow Boost to build with Python 3

* Restrict patch to Python 3 only
2017-03-02 18:36:10 -06:00
Adam J. Stewart
bde0a67415 Add new package for PaGMO/PyGMO (#3210)
* Add new package for PaGMO/PyGMO

* Rename py-pygmo to pagmo

* Fix concretization bug

* Correct Python detection, use correct flags

* Install PyGMO to the pagmo prefix, not the Python prefix
2017-03-02 18:35:19 -06:00
Federico Padua
ecca9abc72 Ior package: fix build issues (#3276)
This commits address build issues reported in issue #3268.
In particular, makes cleaner the dependency on parallel-netcdf
when +ncmpi variant is requested and adds CFLAGS=-D H5_USE_16_API
to handle the fact that Ior uses old 1.6 style APIs when +hdf5 is
requested.
These changes make Ior build fine and create modules for HDF5 versions
1.8.x and 1.10.0.
Even though build is successfull the modules haven't been tested in a
run.
2017-03-02 18:33:36 -06:00
Adam J. Stewart
a7be0d4e5d Convert icu4c to AutotoolsPackage (#3316) 2017-03-02 18:32:04 -06:00
Patrick Gartung
4afb7a729c Make libgcc_s relocatable on Macos by adding @rpath to installname (#1671)
* Make libgcc_s relocatable

* spack specifies full path to lib64

* don't need trailing /

* setting rpath is different on macos

* add -headerpad_max_install_names linker options

* formatting fixes

* Add Adam's recommendation
2017-03-02 16:39:05 -06:00
healther
7baefa83b9 add package py-jedi (#3313) 2017-03-02 16:29:01 -06:00
healther
c67b8173e3 add package py-rope (#3314) 2017-03-02 16:28:42 -06:00
healther
a562d684b7 add various variants to vim (#3255)
* add various variants to vim

* default to --enable-fail-if-missing

* vim package: -{python,ruby,lua,perl} sets build option to `no`

* vim's interpreter build options are `--enable-XXXXinterp={yes,no,dynamic}`
* dynamic seems to work only on windows builds
* `=no` is the default => use it in spack if the variant is disabled
2017-03-02 14:26:52 -06:00
healther
d0835289e8 add package py-chardet (#3310) 2017-03-02 13:50:21 -06:00
healther
73836fccd2 add package py-boltons (#3279)
* add package py-boltons

* added description

* fixed non-utf8 characters
2017-03-02 12:51:00 -06:00
Michael Kuhn
6d0fbe7d96 Update adios to 1.11.1 (#3221)
Add a zfp variant and a patch that resets the interpreter for gpp.py.
2017-03-02 12:44:43 -06:00
healther
acb72c7037 add package py-brian (#3280)
* add package py-brian

* fixed typo

* removed unnecessary dependency

* fixed typo2
2017-03-02 12:44:09 -06:00
healther
c610c197ba Feature/py doxypy (#3283)
* add package py-doxypy

* fixed template and url
2017-03-02 12:44:01 -06:00
healther
9607c55eac add package py-doxypypy (#3284) 2017-03-02 12:43:43 -06:00
healther
98baff0167 add package py-fasteners (#3285)
* add package py-fasteners

* fixed dependencies
2017-03-02 12:43:34 -06:00
healther
a8c57d65c1 add package py-flexx (#3288) 2017-03-02 12:43:24 -06:00
healther
2f0c3d81aa add version 2.0.0 for py-matplotlib (#3289) 2017-03-02 12:43:13 -06:00
healther
0c014bf36c add package py-lazyarray (#3290)
* add package py-lazyarray

* added numpy dependency

* flake8 fixes
2017-03-02 12:43:02 -06:00
healther
7bcc12a3c1 add package py-lazy (#3291) 2017-03-02 12:42:33 -06:00
健美猫
0c1ccd5180 Add simul. (#3300) 2017-03-02 12:42:15 -06:00
Brian Van Essen
5bb22c3024 Added a recipe for the Caffe deep learning toolkit. (#3232)
* Added a recipe for the Caffe deep learning toolkit.

* Added code to extend python and fixed flake8 error.

* Fixed Flake8 error
2017-03-02 12:30:00 -06:00
Massimiliano Culpo
ed582cef68 New interface for passing build information among specs (#1875)
- Added a new interface for Specs to pass build information
  - Calls forwarded from Spec to Package are now explicit
  - Added descriptor within Spec to manage forwarding
  - Added state in Spec to maintain query information
  - Modified a few packages (the one involved in spack install pexsi) to showcase changes

- This uses an object wrapper to `spec` to implement the `libs` sub-calls.
  - wrapper is returned from `__getitem__` only if spec is concrete
  - allows packagers to access build information easily
2017-03-02 10:01:29 -08:00
Massimiliano Culpo
5ce926d2d1 test/packages: fixed test suite (#3236)
It seems the tests in `packages.py` were running just because we had a specific order of execution. This should fix the problem, and make the test_suite more resilient to running order.
2017-03-02 09:29:23 -08:00
Denis Davydov
88f97c07de fix build of 64bit PETSc and Trilinos in the same deal.II DAG (#3223)
Declare that (i) Trilinos can be only built against 32bit Hypre
(ii) SLEPc can not be built with Arpack when 64bit indices are used
(iii) reflect those constraints in deal.II's depends_on
While there, add extra release flags for best performance.
2017-03-02 08:16:58 -06:00
Jon Rood
8f915de610 Updating SAMRAI package with new urls and new versions (#3188)
* Updating SAMRAI package file with new urls and new versions. Also using Spack's MPI compilers.

* Using default optimization for Samrai and setting type to build for m4 dependency.

* Adding debug variant to Samrai.

* Converting Samrai to AutotoolsPackage.
2017-03-02 06:52:53 -06:00
healther
ffce6e1c4e add variant shared to yaml-cpp (#3254) 2017-03-01 16:36:46 -06:00
healther
20360f6727 add package py-current (#3282) 2017-03-01 15:34:04 -06:00
eklee15
8b52a87285 Add xl and spectrum mpi support for mumps (#3231)
* Add xl and spectrum mpi support for mumps

* Incorporated Denis's comments. fPIC and if-else
2017-03-01 15:33:41 -06:00
eklee15
4e601bb6d3 Exclude a few packages to build with xl (#3270) 2017-03-01 14:46:58 -06:00
healther
fa294a25db add version 2.2.0 to package bear (#3278) 2017-03-01 13:37:47 -06:00
healther
1ee470c37e Add package: git-review (#3088)
* Add git-review

* Fix flake8 errors

* use PythonPackage for git-review

* added dependencies for git-review

* fix flake8

* moved url's to pypi.io based urls

* fixed flake8... again

* mostly url fixes, not tested, will do tomorrow

* flake8 fix

* changed URL for py-pysocks

* Fixed URL for pysocks

* fixed url
2017-03-01 12:29:22 -06:00
healther
5fe96dec27 add packages vcsh (#3256)
* add packages vcsh

* added git dependency

* added comment regarding makefile
2017-03-01 07:51:36 -06:00
healther
6a1a2d5ec1 add package units (#3257)
* add package units

* removed unnecessary dependency

* readded python dependency
2017-03-01 07:51:17 -06:00
healther
2fb179f55b add package py-xmlrunner and fix unittest2 dependency (#3260)
* add package py-xmlrunner and fix unittest2 dependency

* add setuptools dependency
2017-03-01 07:51:05 -06:00
healther
d5884bdb78 add package py-symfit (#3264)
* add package py-symfit

* added missing dependency

* fixed ordering of versions
2017-03-01 07:50:54 -06:00
healther
4e433f8a03 add package py-statsmodels and py-patsy (#3265)
* add package py-statsmodels and py-patsy

* fixed typo

* fixed urls

* removed rc version
2017-03-01 07:50:28 -06:00
Adam J. Stewart
186d990791 pip requires setuptools during runtime (#3272) 2017-03-01 07:49:57 -06:00
Gregory Lee
ecc8f578af added urls for Intel Parallel Studio (#3220) 2017-02-28 14:57:10 -06:00
healther
37c36cf04e add package py-tqdm (#3262)
* add package py-tqdm

* added py-setuptools dependency
2017-02-28 13:36:32 -06:00
eklee15
bce2accb69 xl support for suite-sparse (#3226)
* xl support for suite-sparse

* make_args.extend([
    'CFLAGS={0}'.format(self.compiler.pic_flag),
    'FFLAGS={0}'.format(self.compiler.pic_flag)
])
2017-02-28 11:26:49 -08:00
eklee15
9be0c06b98 Patch hypre to support ppc64le (#3238)
- Patch applies through v2.11.1
2017-02-28 11:24:43 -08:00
healther
c32a9416ec add package py-tabulate (#3263)
* add package py-tabulate
* added py-setuptools dependency
2017-02-28 11:20:46 -08:00
Jean-Paul Pelteret
86276cd734 Update Adol-C to AutotoolsPackage; Change develop repository (#3246)
The new repository for the development version points to the most
up-to-date official source for Adol-C. The previous SVN repository was
only occasionally sync'd with this repository.
2017-02-28 13:18:40 -06:00
Thierry
315dfe0970 nfft distclean before configure patch (#3241) 2017-02-28 13:05:01 -06:00
healther
d1040b7111 add package py-sh (#3266)
* add package py-sh

* removed constraint on py-setuptools
2017-02-28 12:59:43 -06:00
Adam J. Stewart
c1382f9d02 Fix infinite recursion in swig build (#3249) 2017-02-28 12:58:08 -06:00
Bryce Allen
b2784f3664 add sz package (#3251) 2017-02-28 12:57:16 -06:00
healther
dee2259f3a add package py-saga-python and dependencies (#3267)
* add package py-saga-python and dependencies

* fixed url and dependencies
2017-02-28 12:56:36 -06:00
healther
70d0cdcd0a add package py-attrs (#3253) 2017-02-28 10:51:31 -06:00
healther
be0033ac91 add py-ranger package (#3258) 2017-02-28 10:21:06 -06:00
healther
25f10cca48 add package py-xarray (#3259) 2017-02-28 10:17:43 -06:00
healther
a43f2a49cb add version 0.29.0 to py-wheel (#3261) 2017-02-28 10:12:51 -06:00
Denis Davydov
b5b1e58843 numdiff: add 5.9.0 (#3243) 2017-02-26 08:17:17 -06:00
Eric Müller
ef55b01906 Add py-mock version 2.0.0 (#3234) 2017-02-24 08:05:49 -06:00
Eric Müller
06f366c53f Add bazel version 0.4.4 (#3233) 2017-02-24 08:05:21 -06:00
Javier
9650afd97e Fixing graphviz issue when calling spec (#3225) 2017-02-23 07:56:39 -06:00
Denis Davydov
60b7e13e1a fix py-setuptools (#3217) 2017-02-22 15:15:23 -08:00
Pramod Kumbhar
c9f705ffc2 Add SCOREC Core package for unstructured mesh simulations. (#3202)
* Add SCOREC Core package for unstructured mesh simulations.
2017-02-22 14:03:11 -08:00
Pramod Kumbhar
f86dcd8b4c Fix scotch build on bg-q (#3196)
* Fix build issue #3190 on bg-q :
 - disable parallel build as it produces weired linker errors
   in cross compiling environment
 - update ldflags for bg-q as per Makefile provided Makefile.inc.ppca2_ibm_bgq
* Added note about -lpthread vs -pthread
2017-02-22 11:04:14 -08:00
Kim Serradell
871a94ee41 Updating homepages and sources from two BSC packages (#3216)
* Corrected extrae package homepage and url
* Corrected paraver package homepage and url
* To fix 'undefined reference to libintl_dgettext' appearing in extrae package when using binutils+libiberty
* Adding support to previous paraver version and reverting binutils changes to open another PR
2017-02-22 11:03:25 -08:00
Todd Gamblin
539a454900 Convert Jaspert to AutotoolsPackage (#3212) 2017-02-22 09:29:34 -08:00
eklee15
52fab8fff3 Boost modification for IBM xl compiler (#3205)
Tested with:
spack install boost@1.62.0+iostreams%xl_r^zlib%gcc^bzip2%gcc
2017-02-21 16:40:09 -08:00
healther
177c54ecbf Add packages: mosh (#3098)
* Add packages: mosh

Perl is a run dependency. See https://github.com/mobile-shell/mosh/wiki/Build-Instructions
2017-02-21 09:50:06 -08:00
Javier
d49cb2734f Fixing issue wheh overwriting build_args in PythonPackage (#3200) 2017-02-21 08:04:32 -06:00
Javier
3195264546 Fix malformed py-appdirs patch (#3203) 2017-02-21 07:51:19 -06:00
healther
7827a0ff67 Default to OpenSSL 1.0 (#3100)
* Added version 1.1 to openssl
* restore note explaining preferred=True for 1.0.2k
2017-02-20 18:21:27 -08:00
Carlos Bederián
6681fc1a47 parallel-netcdf: use spack_cc for sequential code instead of system gcc (#3143) 2017-02-20 18:19:45 -08:00
Adam J. Stewart
d2a52d6dd6 Fix setuptools bootstrapping now that dependencies are no longer vendored (#3198)
* Fix setuptools bootstrapping now that dependencies are no longer vendored
* Reorder patch and comments
* Use exact same patch as https://github.com/ActiveState/appdirs/pull/84
* Use exact same patch as https://sourceforge.net/p/pyparsing/patches/10/
2017-02-20 18:09:03 -08:00
Javier
fbbcf456e9 Updating package: geant4 (#3197) 2017-02-20 17:33:32 -08:00
Adam J. Stewart
5b6d2754d9 Add MATLAB package (#2614)
* Add MATLAB package
* Remove auto-accept license feature
2017-02-20 16:10:06 -08:00
Adam J. Stewart
f0e99456ed Fix tab completion of directories and filenames (#3184) 2017-02-20 15:44:58 -08:00
Barry Smith
ab2d6285c4 Add installer for petsc4py and slepc4py (#3187)
* Add installer for petsc4py and slepc4py
* @adamjstewart requested changes on this pull request; make these type=('build', 'run')
* @citibeth suggestion  Remove unneeded indirect dependencies
2017-02-20 15:43:33 -08:00
Adam J. Stewart
0203545eb8 Update CUDA docstring, no longer need to download manually (#3191)
* Update CUDA docstring, no longer need to download manually
2017-02-20 15:41:31 -08:00
Denis Davydov
031cde6e25 openblas: add develop version to make it work with Kabylake CPUs (#3192)
* openblas: add develop version to make it work with Kabylake CPUs
* dealii: fix develop branch
2017-02-20 15:40:46 -08:00
Pramod Kumbhar
8c2f5baa19 Fix zoltan installation issue on bg-q #3193 (#3194)
Zoltan expects mpi libraries with option --with-mpi-libs.
If this option is not provided then it uses '-lmpi' which
may not be correct. To avoid this, we have to explicitly
pass empty string.

This adds notes to the source explaining the change.
2017-02-20 15:39:51 -08:00
Adam J. Stewart
4de85ab4b7 Add new versions of several Python packages (#3195) 2017-02-20 15:38:30 -08:00
healther
8ebd49c962 add symlink variant (needed for AFS) (#3147)
* add symlink variant (needed for AFS)

* fix flake8

* added missing return statement
2017-02-20 17:14:44 -06:00
healther
c8cfe317c2 Added version 1.49.2 to gobject-introspection (#3090) 2017-02-20 07:53:33 -06:00
Carlos Bederián
4b9a37a357 silo: adding patch to support newer versions of hdf5 (#3162) 2017-02-19 17:45:19 -08:00
Barry Smith
7edea4361f Add installer for SAWs (#3186) 2017-02-19 17:44:16 -08:00
健美猫
a211795a0c Add Intel Parallel Studio XE 2016u4 and 2015u6. (#3182) 2017-02-18 19:12:05 -08:00
Adam J. Stewart
49d7f9db3d Add patches to allow PGI to build Tar properly (#3177) 2017-02-18 19:09:50 -08:00
Adam J. Stewart
4397ce8118 Replace GCC-specific warning flags with valid PGI flags (#3137) 2017-02-18 16:42:45 -06:00
Adam J. Stewart
341b78a96d Add patch to allow M4 make check to pass for PGI (#3108) 2017-02-18 16:42:13 -06:00
Denis Davydov
7f89bc1e1d octave: fix missing --without statements (#3178) 2017-02-18 16:13:00 -06:00
healther
1a5b3e184f Add package: log4cxx (#3097)
* Add log4cxx package

* add missing patch files to log4cxx

* remove unnecessary dependencies

* this fails at 'make check'

* this is the AutotoolsPackage version

* fixed install bug
2017-02-18 16:10:15 -06:00
healther
63a0ca729d Added 2017 Intel libraries (#3084) 2017-02-18 16:02:33 -06:00
healther
5712b524cc Add binutils variant +plugins (#3083)
* Add binutils variant +plugins

* added description to plugins variant
2017-02-18 16:02:01 -06:00
Jim Galarowicz
4da66d71b0 Fix for qt3 specific qt build (#3063)
* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.
2017-02-18 15:56:40 -06:00
sknigh
69b01c617e Added shmem variant to Score-p build (#3024)
* Disable by default to fix builds on Centos 7
2017-02-18 15:54:57 -06:00
Pramod Kumbhar
18334edf1a Bug fix: PDT configure uses -prefix, not --prefix (#2976)
* This bug was introduced in #2845.
2017-02-18 15:45:47 -06:00
Adam J. Stewart
c2d210568c Fix tab completion after change to uninstall flag (#3175) 2017-02-18 13:08:59 -06:00
Adam J. Stewart
6d3f649382 Fix readline support in spack python (#3132)
* Fix readline support in `spack python`
* Add documentation on `spack python`
* Add unit tests for `spack python`
2017-02-17 15:58:06 -08:00
serbanmaerean
0d22b3eea9 netlib-lapack: Update package file for netlib-lapack to work with IBM (#3040)
Update package file for netlib-lapack to work with IBM XL compiler

The flag -qzerosize is redundant, as the IBM XL compiler should set this flag
by default.  However, at this time the default flag appears to be ignore.
Hence, I am setting it in the package file as well, as it has no negative
effect if set twice.
2017-02-17 15:51:10 -08:00
healther
5c37c17173 Add package: py-apache-libcloud (#3101)
* Add py-apache-libcloud package
2017-02-17 15:30:49 -08:00
Adam J. Stewart
524303db06 Set default module type based on modules.yaml (#3173) 2017-02-17 13:46:31 -08:00
Adam J. Stewart
e492aff4f7 More consistent yes/no prompts (#3174)
* More consistent yes/no prompts
* Add ==> prefix to yes/no and number prompts
2017-02-17 13:45:02 -08:00
Elizabeth Fischer
29d070e50c On uninstall, change shortcut flag for --dependents to -R, as per Spack convention. (-r = --dependencies, -R = --dependents). (#1917) 2017-02-17 12:08:17 -08:00
Elizabeth Fischer
7180613218 graphviz: Tame Language Bindings (#1089)
graphviz: 
  * Download from Fedora projet, as main graphviz site not working.
  * Disable java because Spack does not yet support Java, and the system might not have it installed.
  * Added all language binding variants; disabled enough in the default configuration to avoid dependencies.
  * Removed alternate download location (turned into comments).
  * Turn off all language bindings by default.
  * Raise an exception on bindings that have not been verified to work.
  * Added text indicating what works and doesn't work when user runs `spack info`.
2017-02-17 12:07:54 -08:00
健美猫
1de2c53935 Patch openblas Makefile only when version >= 0.2.16. (#3170) 2017-02-17 12:03:43 -08:00
Adam J. Stewart
38dd01f6b5 Fix missing space in error message output (#3169) 2017-02-17 12:02:48 -08:00
Elizabeth Fischer
682d5cf164 py-git2: New Package (#1971) 2017-02-17 11:55:22 -08:00
Elizabeth Fischer
8cb7f3d262 Keep Curl Bootstrap Working With http:// (#3113)
* Add comments documenting problems in recent versions of NetCDF.
* Add comments to packages required to install curl.
2017-02-17 11:52:08 -08:00
Adam J. Stewart
a9cf99b3e2 Fix typos in External Packages documentation (#3168) 2017-02-17 11:49:55 -08:00
George Hartzell
ea1c582145 go: add support for v1.8 (#3165) 2017-02-17 11:48:45 -08:00
Denis Davydov
3c5024232c abinit: fix compilation on macOS, disable internal netcdf (#3157)
* abinit: fix compilation on macOS
* disable internal netcdf
2017-02-17 11:46:58 -08:00
Carlos Bederián
0f51daff24 hdf5: configure uses FCFLAGS instead of FFLAGS (#3155)
When building `hdf5+pic`, `-fPIC` wasn't being passed to the fortran compiler because `configure` takes `FCFLAGS` instead of `FFLAGS`.
2017-02-17 11:44:16 -08:00
Kelly (KT) Thompson
78962c8978 Provide Random123 header-only package. (#3141)
Add DESRES Random123 package:
- http://www.deshawresearch.com/resources_random123.html
2017-02-17 11:40:14 -08:00
Adam J. Stewart
c719802c83 Add new version of zlib, deprecate 1.2.10 (#3136) 2017-02-17 11:39:21 -08:00
Adam J. Stewart
4f60011121 Add patch to allow ncurses to be built with PGI (#3135) 2017-02-17 11:39:05 -08:00
Justin M Wozniak
163bdfde93 Swift/T: all packages (#3130)
* New package.py for ExM C-Utils: An initial package dependency for Swift/T
* New package.py for ADLB/X: A 2nd package dependency for Swift/T
* New package.py for Turbine
* New package.py for STC
2017-02-17 11:35:45 -08:00
Adam J. Stewart
c2fa7b1254 Add latest version of OpenSSL (#3171) 2017-02-17 07:11:54 -08:00
Ce Qin
f7a0a6fbc4 Add tag master for version develop of dealii. (#3048) 2017-02-16 18:37:20 -08:00
serbanmaerean
7bebfd29c2 spectrum-mpi: Add url info to spectrum-mpi package file (#3042)
Spack wants URL info even for external packages.  Without it, I get
the following error:

NoURLError: Package SpectrumMpi has no version with a URL.
  File "/home_local/serbanspack/spack/lib/spack/spack/repository.py", line 580, in get
    self._instances[key] = package_class(copy)
  File "/home_local/serbanspack/spack/lib/spack/spack/package.py", line 562, in __init__
    f = fs.for_package_version(self, self.version)
  File "/home_local/serbanspack/spack/lib/spack/spack/fetch_strategy.py", line 878, in for_package_version
    url = pkg.url_for_version(version)
  File "/home_local/serbanspack/spack/lib/spack/spack/package.py", line 682, in url_for_version
    raise NoURLError(cls)
2017-02-14 11:28:35 -08:00
Gregory Lee
4a20d170f4 fixes for pygtk and some dependencies (#3077) 2017-02-14 10:52:05 -08:00
Brian Van Essen
56952aaf1f LBANN (#3049)
* Creating a spack package for LLNL's LBANN (Livermore Big
Artificial Neural Network) training toolkit.

* Recipe for building LBANN toolkit.  Contains limited feature set and
is optimized for building with GNU gcc and OpenBLAS.

* Removed unnecessary dependencies based on reviewers feedback.

* Added support for the int64 data type in the Elemental library.  This
is required for supporting indices for large matrices.

* Added a variant to force a sequential weight matrix initialization.
This is slow, but provides an initialization that is independent of
model parallelism.

* Added a guard to prevent building Elemental with the Intel compiler
for versions that have known bugs.
2017-02-13 11:57:46 -08:00
Massimiliano Culpo
e34acd0074 qa: allow fast finish to avoid consuming a precious OSX build on a PR that will fail (#3120) 2017-02-10 18:21:52 -08:00
Adam J. Stewart
4dd0b349f9 Add Jmol package (#3041) 2017-02-10 16:18:56 -08:00
Adam J. Stewart
6e2903534a Add patch to allow PGI to build Bison (#3044) 2017-02-10 16:17:55 -08:00
Massimiliano Culpo
e24fdb49ea fix: don't call setup_environment when not needed (#3060)
* Don't call setup_environment when not needed. fixes #3059

* setup_environment and modules: added unit tests
2017-02-10 16:09:43 -08:00
Denis Davydov
cbbf5791ba numdiff: update dependencies and fix (#3061)
compile with -O0 as per upstream known issue with optimization and GMP,
according to Ubuntu folks.
2017-02-10 16:05:07 -08:00
Justin M Wozniak
2305f6434e New package.py for ExM C-Utils and Turbine (#3076)
* New package.py for ExM C-Utils: An initial package dependency for Swift/T
* New package turbine

* Fix package.py as requested by @adamjstewart

* New package.py for ADLB/X: A 2nd package dependency for Swift/T

* Add latest version of GNU Parallel (#3106)

* Address formatting guidelines from @adamjstewart

* WIP on new Turbine package.py

* Formatting fixes

* Complete Turbine package.py
2017-02-10 16:03:40 -08:00
healther
c98249c129 Add version 2017.0.098 to ipp (#3093) 2017-02-10 16:00:52 -08:00
Erik Schnetter
4362caa51a es: Declare readline dependency (#3071) 2017-02-10 16:00:20 -08:00
Adam J. Stewart
57855cab5d Explicitly tell MPC where to find its deps (#3073) 2017-02-10 15:59:46 -08:00
healther
563b6ab73a Add version 2017.0.098 to intel-mkl (#3092) 2017-02-10 15:55:02 -08:00
healther
2aec15a6f9 Add version 2.49.7 to glib (#3089) 2017-02-10 15:52:39 -08:00
becker33
f9e3b58d7e Make distro more robust to unreadable files (#3110)
* Make distro more robust to unreadable files. Will upstream

* Comment for clarify
2017-02-10 10:23:04 -08:00
Adam J. Stewart
f1ca79ba6c Add latest version of PGI (#3107) 2017-02-09 13:58:17 -08:00
Denis Davydov
b07835904a valgrind: add develop; fix build on macOS with clang (#3066)
- add develop version to valgrind; fix build on macOS with clang
- switch valgrind to AutotoolsPackage
2017-02-09 13:57:50 -08:00
Denis Davydov
b1eb921f28 make svn fetch quiet (#3070) 2017-02-09 13:55:18 -08:00
Adam J. Stewart
8d7bcbbbbb Add latest version of GNU Parallel (#3106) 2017-02-09 10:38:08 -08:00
Adam J. Stewart
2a3228e004 Add latest version of NCO (#3080) 2017-02-09 08:33:01 -08:00
Massimiliano Culpo
c91d18b622 qa: adjust thresholds for acceptance (#3105) 2017-02-09 08:31:57 -08:00
Todd Gamblin
b192011add Revert "db and concretization of packages modified after installation: fixes #2911" (#3078) 2017-02-08 13:12:10 -08:00
Massimiliano Culpo
79c1f7885a db and concretization of modified packages: fixes #2911 (#2920) 2017-02-07 18:28:01 -08:00
Massimiliano Culpo
28b7ef3175 codecov: added commit status, made green a reachable state (#3051) 2017-02-07 18:25:38 -08:00
Elizabeth Fischer
892955cc46 Add comments documenting problems in recent versions of NetCDF. (#3058) 2017-02-07 18:23:33 -08:00
Denis Davydov
4264051954 fix usage of self.build_directory in espressopp and astyle (#3053) 2017-02-07 18:22:52 -08:00
George Hartzell
b1f5b5f75b Add comment explaining why patch is still needed (#3054)
[The fix](https://github.com/golang/go/issues/17986) for the small buglet addressed by `misc-cgo-testcshared.patch` has been merged into the tree a while back.  I was surprised to see that it wasn't in 1.7.5 and did a bit of digging.  It is *has not* been merged into the 1.7 branch but it *has* been merged into 1.8 (and therefor the patch will no longer be necessary).

Figured I'd document my digging for the next person to come along.
2017-02-07 18:22:30 -08:00
Denis Davydov
7bf7016383 mpfr: add 3.1.5 (#3050) 2017-02-07 18:22:13 -08:00
Matthew Scott Krafczyk
f71df7bda3 move rpath from ALL to other sections of site.cfg (#3028)
* move rpath from ALL to other sections of site.cfg.  Solves #3007
* Add back mac condition to py-numpy
* Refactor py-numpy a bit.
2017-02-07 13:15:02 -08:00
Brian Van Essen
88e9bb586e Added a new version of the Google protobuf to the spack package. (#3046) 2017-02-07 10:05:02 -08:00
Adam J. Stewart
941dfcbe43 Bash Programmable Completion for Spack (#3026) 2017-02-06 12:34:35 -08:00
serbanmaerean
d78a35bb54 spectrum-mpi: Add new package file for external package (#3005)
* spectrum-mpi: Add new package file for external package

IBM Spectrum MPI is a commercial implementation of MPI based on
OpenMPI.  It is usually install in /opt/ibm/spectrum_mpi.

Users need to add the Spectrum MPI package in their packages.yaml
file as follows:

packages:
    spectrum-mpi:
        version: ['10.1.0.2']
        paths:
            spectrum-mpi@10.1.0.2: /opt/ibm/spectrum_mpi/
        buildable: False

    all:
        providers:
            mpi: [spectrum-mpi@10.1.0.2]

* spectrum-mpi: Added license files and removed the versions

No need for versions as the package is external.

* spectrum-mpi: Remove extraneous defines

Keep only the defines that other MPI implementation define in their
package file:
    self.spec.mpicc
    self.spec.mpicxx
    self.spec.mpif77
    self.spec.mpifc
2017-02-06 10:53:53 -08:00
Brian Van Essen
ffd582b2f6 Elemental (#2991)
* Add a package for the Elemental distributed linear algebra library.
2017-02-06 00:04:41 -08:00
Gregory Lee
158a1b9c36 fix OMPT support in Archer (#3035) 2017-02-05 23:34:38 -08:00
Nicolas Richart
7c09ad5305 Boostrapping the lammps package (#3032)
* First commit for the lammps package
* reviewed by adamjstewart and davydden
2017-02-05 19:34:53 -08:00
sknigh
dfff1f5cf4 Changed spark URL, Added version 2.0.2, 2.1.0 (#3027) 2017-02-05 15:56:34 -08:00
George Hartzell
d1c7f9c8bd Add a package for hunspell (#3029)
Add a package for the hunspell spelling checker.

This was created by `spack create`, trimmed down, and tested on CentOS 7.
2017-02-05 15:55:55 -08:00
健美猫
47f9096073 Use the official Maven site. (#3034) 2017-02-05 15:49:05 -08:00
Gregory Lee
ccb07dc25e added archer OpenMP race detector and its deps (#3030) 2017-02-04 15:42:22 -08:00
becker33
968199de7d Fix spec hash printing (#2941)
- Fix format printing to match command line for hashes and full name formats
- Update spack graph to use new format
- Changed format string signifier for hashes from `$#` to `$/`
2017-02-03 18:27:34 -08:00
Carlos Bederián
5aefaa6ffe Add FFTW 2.1.5 (#2987) 2017-02-03 18:26:27 -08:00
Carlos Bederián
384698157a MKL: Provide scalapack (#2974) 2017-02-03 18:18:31 -08:00
Erik Schnetter
4c1c284e56 New package “es” (extensible shell) (#3009) 2017-02-03 18:09:25 -08:00
George Hartzell
5e2827433c Update go to v1.7.5 (#3023)
Update the go package to v1.7.5.

- This release no longer needs the time-test patch (it's been merged upstream).
- This release still seems to need the cgo-testcshared patch.
- Also add a comment about environment set up that I need to build it successfully on a very large server.

Tested on CentOS 7.
2017-02-03 18:09:01 -08:00
健美猫
864670c0ab Retrive CUDA installers from Internet. (#3012) 2017-02-03 18:07:54 -08:00
sknigh
24553c12bb Flex and Glib builds are dependent on m4 (#3022) 2017-02-03 17:19:23 -08:00
George Hartzell
c456dfb60f Make module autoload warnings configurable (#2763)
Modules generated by the module creation machinery currently print out
a notice that warnts the user that things are being autoloaded.  In
some situations those warnings are problematic.  See #2754 for
discussion.

This is a first cut at optionally disabling the warning messages:

- adds a helper tothe EnvModule base class that encapsulates the
  config file variable;
- adds a method to the base class that provides a default (empty)
  code fragment for generating a warning message;
- passes the warning fragment into the bit that formats the autoload
  string;
- adds specialized autload_warner() methods in the tcl and lmod
  subclasses;; and finally
- touches up the autoload_format strings in the specialized classes.
2017-02-03 15:53:30 -08:00
George Hartzell
b28d8345ec Force particular repo to increase predictability (#2746)
The repository used by the texlive installer defaults to a redirector
that sends one off to various URLs depending on <fill in the blank>.

This is problematic because all of the mirrors do not update in
synchrony and bad tarballs often hang around for a while.

This leads to problems that are particularly hard to diagnose because
you're likely to end up using a different repo the next time around.

This commit constraints the package to a particular, mainstream,
repository.  It's not fast, but it's consistent and usually correct.

It also updates the installer digest, because no day is complete
without updating it at least (sigh) once.
2017-02-03 15:44:26 -08:00
George Hartzell
5a836fd06e Blacklist implicit packages for modulefile generation (#2603)
Add the ability to the modules generation process to blacklist
packages that were installed implicitly.  One can still whitelist
modules that were installed implicitly.

This changes adds a `blacklist_implicts` boolean as a peer to the
`whitelist` and `blacklist` arrays, e.g.:

```
modules:
  enable::
    - lmod
  lmod:
    whitelist:
      - 'lua'
      - 'py-setuptools'
    blacklist:
      -  '%gcc@4.8.3'
    blacklist_implicits: True
```

It adds a small helper in `spec.py` and then touches up the package
filtering code in `modules.py`.
2017-02-03 15:42:46 -08:00
George Hartzell
acb9281dbf Different versions of cmake need diff vers of openssl (#2993)
* Different versions of cmake need diff vers of openssl.  See Issue https://github.com/LLNL/spack/issues/2990 for background.

Versions of cmake through 3.6.9 seem to need OpenSSL up to 1.0.99.  Later
versions can use the current release (thanks to @citibeth for
[digging up details](https://cmake.org/pipermail/cmake/2016-November/064631.html)).

@davydden suggested this change.

Without it I *am not* able to build `cmake@3.6.1` on CentOS 7 and I *am*
able to build `cmake@3.7.2`.

Tested with `cmake@3.7.2` and `cmake@3.6.1` on CentOS 7.
With this change I am able to build both `cmake@3.6.1` and `cmake@3.7.2`
on CentOS 7.
2017-02-03 14:35:16 -08:00
George Hartzell
6c1b19f394 Ocaml fails as an AutotoolsPackage (#2995)
Switch the ocaml install bit back to being a Package with its own little install method.

This fix allows me to build Unison on CentOS 7.
2017-02-03 14:22:50 -08:00
George Hartzell
10d36ee343 Fetch tarballs from ant archive dir. (#2997)
There was a new release of Ant (1.9.8) which led to the v1.9.7
tarball disappearing.

This changes the URL to Ant's archive dir, which seems to contain
*everything* including the two current releases (1.9.8 and 1.10.0)

It adds a digest for 1.9.8.

It adds and comments out a digest for 1.10.0 (which requires Java 8),
as I have not tested it.
2017-02-03 14:21:14 -08:00
Mayeul d'Avezac
d7c816386a Add new versions of catch (#3016) 2017-02-03 14:20:41 -08:00
George Hartzell
0929b23d53 Update git package to include 2.11.1 (#3020)
Add git v2.11.1 digest.

Built and lightly tested on CentOS 7.
2017-02-03 14:17:33 -08:00
Carlos Bederián
3d67bf46ba Update Tcl/Tk to 8.6.6 (#3002) 2017-02-03 14:15:15 -08:00
Howard Pritchard
0cdbd74b82 openmpi (#2988)
We just released 2.0.2 yesterday, so add in that release for
spack.  Don't need the PMI patch for this release.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2017-02-03 14:10:44 -08:00
Adam J. Stewart
dbb18df3f2 Add latest stable Perl release (#2969) 2017-02-03 14:10:08 -08:00
Tom Scogland
95c04f3ab1 llvm: add 3.9.1, only download necessary resources (#3015)
* llvm: add 3.9.1, only download necessary resources

* sacrifice some spaces on the altar of flake8 the vengeful and merciless
2017-02-03 14:04:36 -08:00
健美猫
a08ccbedee Patch OpenMPI 2.0.x to fix pmi_opcaddy_t_class issue. (#2962) 2017-01-31 14:52:38 -05:00
serbanmaerean
8275b44715 Change default fflags for XL compiler to only "-qzerosize" (#2966) 2017-01-31 14:51:05 -05:00
Henrik Bengtsson
4f297f4336 R: Using official cloud URL for CRAN (#2956)
cran.r-project.org runs on a single old-school server in Austria
and could potentially be overloaded if "everyone" used it.

cloud.r-project.org is a cloud-based repository that "automatic redirection to servers worldwide [...]", cf. https://cran.r-project.org/mirrors.html.

I assume, that cloud.* can be scale up as needed. Out of the official CRAN mirror, this should be the safest one to pick if a static CRAN mirror is needed.
2017-01-31 14:47:20 -05:00
Adam J. Stewart
41c77d7429 Add installcheck phase to AutotoolsPackage (#2863)
* Add installcheck phase to AutotoolsPackage
* Update installcheck phase with new callbacks API
* build_directory has been converted to a property
2017-01-31 14:35:38 -05:00
Gregory Lee
7d279e06a0 Merge pull request #2964 from Zzzoom/fftw_add_sse2
FFTW: Add SSE2 support to x86_64 target
2017-01-31 09:48:47 -08:00
Adam J. Stewart
2ac0bcfcb0 Add latest version of Xorg util-macros (#2965) 2017-01-31 08:30:08 -08:00
Henrik Bengtsson
6e729bc333 DOCS: Examplify what file types are automatically extracted (#2955) 2017-01-31 08:26:19 -08:00
Adam J. Stewart
123f057089 Refactor Spack's URL parsing commands (#2938)
* Replace `spack urls` and `spack url-parse` with `spack url`
* Allow spack url list to only list incorrect parsings
* Add spack url test reporting
* Add unit tests for new URL commands
2017-01-31 11:14:52 -05:00
Denis Davydov
2e81fe4fb3 openssl: add extra url to download old versions (#2935) 2017-01-31 10:51:26 -05:00
Massimiliano Culpo
2babe4e4ff removed call syntax from property fixes #2944 (#2945) 2017-01-31 10:48:57 -05:00
健美猫
d46a1eadcd Replace FTP retrieval URLs with HTTP/HTTPS serving packages with identical checksum. (#2958) 2017-01-31 09:56:35 -05:00
Adam J. Stewart
0c0a1fdedc Add several new R packages (#2952)
* Add several new R packages

* Add a few more R packages

* Update more versions

* Convert Package to RPackage

* Add a few more packages

* Add missing dependencies
2017-01-31 09:54:34 -05:00
Massimiliano Culpo
19cf7a2833 libmng: fix trying to run configure on an already configured directory fixes #2959 (#2961) 2017-01-31 09:49:29 -05:00
Carlos Bederián
617786707f FFTW: Add SSE2 support to x86_64 target 2017-01-30 18:17:36 -03:00
Adam J. Stewart
75763bb8e3 Make OpenSSL tests optional (#2939)
* Make OpenSSL tests optional

* Add version constraint to Perl dependency in OpenSSL
2017-01-27 11:38:21 -08:00
becker33
58a4c5c14d Fix ambiguous hash message generation. (#2940)
* Fix ambiguous hash message generation. Engineering fix
2017-01-27 11:37:21 -08:00
Denis Davydov
aa7c5d1115 mumps: fix compilation with MKL (#2936) 2017-01-27 11:32:25 -08:00
Adam J. Stewart
6158115ca8 Standardize argparse help messages (#2847) 2017-01-26 02:33:01 -08:00
Adam J. Stewart
c7a1328326 Add missing dependencies to VizGlow package (#2581)
* Add missing dependencies to VizGlow package

* Use a version-specific URL for xterm
2017-01-26 02:30:18 -08:00
Todd Gamblin
ffb8aaa3f3 Packaging docs for MPI (#2838)
* Add MPI docs to packaging guide and simplify packaging guide TOC a bit.
2017-01-26 02:29:31 -08:00
Massimiliano Culpo
81a5146b1d AutotoolsPackage: minor improvements (#2859)
* AutotoolsPackage: added configure_directory to permit build out of source. The configure script executable is now invoked with an absolute path. Modified a few packages accordingly.

* build_systems: functions returning directories are now properties

* build_systems: fixed issues with tcl and tk

* AutotoolsPackage: reworked recipe for autoreconf
2017-01-26 02:27:15 -08:00
Todd Gamblin
3b2124af6a Turn off codecov comments (use only statuses) 2017-01-26 02:21:26 -08:00
Todd Gamblin
a5700a8888 Use codecov for coverage instead of coveralls (#2933)
* Switch from coveralls to codecov

- Add .codecov.yml, simplify .travis.yml
- Add codecov badge to README.md

* Add tests for spack graph.
2017-01-26 02:19:35 -08:00
Jean-Paul Pelteret
f59011f314 Adol-C: Enable trig/erf functions; advanced branching (#2747) 2017-01-26 01:33:20 -08:00
Denis Davydov
d324d13456 py-numpy: rework blas/lapack (#2365)
* py-numpy: fix blas/lapack section title

* py-numpy: rework BLAS/LAPACK

including a workaround for MKL due to
limited config system of numpy
2017-01-26 00:46:35 -08:00
scheibelp
e4d2d747ce Spec.satisfies accesses Spec.concrete as property (#2928)
* Spec.satisfies accesses Spec.concrete as property

Fixes #2760

When copying a spec, _concrete is always set to False for each
dependency. "Spec.satisfies" was accessing the member "_concrete"
directly instead of using the property "concrete". This means that
if you copy a spec, the dependencies will be considered equal, but
did not necessarily satisfy one another. Spec.satisfies is a
prerequisite for a package to be considered an extension; as a
consequence, an extension with run-time dependencies that were also
extensions did not activate those extensions. This updates
Spec.satisfies to avoid checking the cached member "_concrete"
directly.

* Added test to check for activation of dependency extension

* Added test to check for transitive satisfiability between a spec and its copy
2017-01-25 21:43:12 -07:00
Sam Gutiérrez
596190c83c Update libquo's homepage, url, and description. (#2925)
* Update libquo's homepage, url, and description.

Recently LANL moved to lanl (from losalamos).

* Fix formatting.

Conform to style guidelines.

* More style updates.

Doesn't appear to be necessary, but for good measure.
2017-01-25 21:41:26 -07:00
Adam J. Stewart
b18b6bad6f Remove intel-parallel-studio +all checks (#2905) 2017-01-25 21:41:09 -07:00
Denis Davydov
c24dc9072e oce: fix fetching (#2921)
* oce: fix fetching

apparently the fetcher is confused when there is a mixture of 3-digits
versions and 2-digits versions, i.e. 0.18 and 0.17.2

* flake8
2017-01-25 21:39:40 -07:00
Erik Schnetter
1ddd9c75c6 c-blosc: Add variant to disable AVX2 support (#2931)
Not all compilers support AVX2 instructions, and the package’s test for this is much too simplistic.
2017-01-25 21:39:10 -07:00
Timothy Brown
11454280e7 Updating udunits version. (#2922)
* Updating udunits.

Udunits 2.2.21 is no longer on the unidata ftp site.
The latest is 2.2.23, adding that and it's md5sum.

* Updating udunits2 download URL.

The Unidata ftp site does not keep previous versions of udunits.
However all the tagged versions are in their github.com repository.
Updating the URL to use github.

* Updating udunits2 with a autoreconf def.

The udunits packages on github do not contain a configure script.
One has to run autoreconf to generate it, so adding that to
package file.

Also updated to the latest version and all md5 checksums.
2017-01-25 21:38:44 -07:00
becker33
8ae380fb71 Fixes for parsing specs with hashes (#2889)
- Allows hashes to be specified after other parts of the spec
- Does not allow other parts of the spec to be specified after the hash
- The hash must either end input or be followed by another separate spec
- The next spec cannot be an anonymous spec (it must start with a package name or a hash)

See #2769 (after it was merged) for further discussion of this interface addition. That discussion resulted in these requirements:

```
python                     # 1 spec
/abc123                    # 1 spec
python /abc123             # 1 spec
/456789                    # 1 spec
python /abc123 /456789     # 2 specs
python /456789 /abc123     # 2 specs
/abc123 /456789            # 2 specs
/456789 /abc123            # 2 specs
/456789 /abc123 python     # 3 specs
```

assuming `abc123` and `456789` are both hashes of different python specs.
2017-01-25 21:38:10 -07:00
Jean-Paul Pelteret
a4f594a68d Update valgrind to 3.12.0 (#2929) 2017-01-25 17:14:55 -08:00
serbanmaerean
5e2a96574b Add support for IBM threaded compilers: xl*_r (#2894)
* Add support for IBM threaded compilers, xl*_r

Added new compiler class, xl_r; added default flags to the compilers.yaml file.

* Add cppflags to the set of default flags to be added to the compilers stanza in compiler.yaml.

These flags are optional. Only defined flags will be listed in the compilers.yaml file.

* Fix scripting warnings revealed by flake8.

Updated __init__.py and xl_r.py to conform with flake8 rules.

* Add justification to the definition of the XL default compiler flags.
2017-01-25 16:26:17 -07:00
Massimiliano Culpo
fc866ae0fe build systems: simpler, clearer decorators: run_after, run_before (#2860)
* PackageMeta: `run_before` is an alias of `precondition`, `run_after` an alias of `sanity_check`

* PackageMeta: removed `precondition` and `sanity_check`

* PackageMeta: decorators are now free-standing

* package: modified/added docstrings. Fixed the semantics of `on_package_attributes`.

* package: added unit test assertion as side effects of install

* build_systems: factored build-time test running into base class

* r: updated decorators in package.py

* docs: updated decorator names
2017-01-25 08:57:01 -07:00
George Hartzell
90d47a3ead Add dependency on perl (#2909)
* Add dependency on perl

The build process uses perl and also needs `Test::More`.

Some distros, e.g. CentOS, break the core Perl distribution
into separate packages, so it's possible to "have perl" but
not have all the bits one needs to build OpenSSL.

We'll just install one of ours, which comes with all of its
factory parts included.

* Remove uninformative comment

>  # Also requires make

doesn't really add any value...
2017-01-24 14:07:13 -07:00
Adam J. Stewart
268347ccbf Add latest version of flex (#2914) 2017-01-24 14:06:56 -07:00
Adam J. Stewart
fae36b8489 Add latest version of NetCDF (#2915) 2017-01-24 14:06:42 -07:00
Adam J. Stewart
a04ac74c4c Add latest version of xz (#2916) 2017-01-24 14:01:10 -07:00
Jason Sarich
6e895c4ccc add static options for some libraries (#2876)
* add static options for some libraries

* make requested changes: add comments and use configure_args
2017-01-24 12:48:01 -07:00
Adam J. Stewart
7d3da2ebdc Grammar and broken link fixes in modules tutorial (#2912) 2017-01-24 10:25:44 -07:00
Jean-Paul Pelteret
416e52c150 Update SymEngine package (#2919)
Take advantage of new configuration options in the @develop branch
2017-01-24 10:00:27 -07:00
Mayeul d'Avezac
db7a786d1c Simplifying gbenchmark (#2892)
Also, it seems the cmake_args API has changed in spack
2017-01-23 16:12:31 -08:00
Adam J. Stewart
f8c7dab826 Convert xerces-c to AutotoolsPackage (#2907) 2017-01-23 15:50:34 -08:00
Adam J. Stewart
e317f2639c Add latest version of PnetCDF (#2906) 2017-01-23 15:30:01 -08:00
Adam J. Stewart
bcef90fe10 Add --without-x when building r~X (#2864)
* Add --without-x when building r~X

* Add latest version of R

* Run patch for latest version as well
2017-01-23 15:29:48 -08:00
Michael Kuhn
258dfc707d Export spack function so it works in subshells (#2908) 2017-01-23 15:29:25 -08:00
Denis Davydov
c76088906e oce & trilinos: force rpath on Sierra to avoid issues with load commands size (#2855)
* oce: force rpath on Sierra to avoid issues with load commands size

* trilinos: use rpath on Sierra to avoid load commands limit
2017-01-23 13:59:16 -08:00
Massimiliano Culpo
a8e1d78881 documentation: build-system phases + build-time tests (#2780)
* documentation: reworked packaging guide to add build-system phases

* documentation: improvements to AutotoolsPackage autodocs

* build_systems: updated autodocs

* run-tests: added a few information on how to run tests fixes #2606 fixes#2605

* documentation: fixed items brought up by @davydden

    * typos in docs
    * consistent use of 'build system' (i.e. removed 'build-system' from docs)
    * added a note on possible default implementations for build-time tests

* documentation: fixed items brought up by @citibeth

    * added note to explain the difference between build system and language used in a package
    * capitalized bullet items
    * added link to API docs

* documentation: fixed multiple cross-references after rebase

* documentation: fixed minor issues raised by @tgamblin

* documentation: added entry in table for the `PythonPackage` class

* docs: fixed issues brought up by @citybeth in the second review
2017-01-23 13:55:39 -08:00
Michael Kuhn
72f2f845e7 Update lz4 to 1.7.5 (#2878) 2017-01-23 10:26:21 -08:00
Jason Sarich
3686d0ceb3 have trilinos search for static libraries first when not using shared variant (#2896) 2017-01-23 10:24:21 -08:00
George Hartzell
162be154d2 Fix configure's zlib version check (#2901)
* Fix configure's zlib version check

R wants a version of zlib that is 1.2.5 or newer.

The version checking code just does a lexicographic comparison
of the first 5 characters of the string, so it seesthat the latest
zlib version, 1.2.10, as 1.2.1 and fails.

This patch changes the comparison to use zlibs' hex ZLIB_VERNUM
so that it does not suffer from this problem.

A version of this patch is wending it's way through the R comunity
community and will/should be included in a future release.

I tested the patch with the current R, 3.3.1.

* Tighten zlib dependency version (>= 1.2.5)

* Convert patch to level=1 format.
2017-01-23 10:20:54 -08:00
Michael Kuhn
7fd936735c Add zstd package (#2897) 2017-01-23 10:18:51 -08:00
Adam J. Stewart
dae353374e Simplify unit tests listed in Contribution Guide (#2904)
* Simplify unit tests listed in Contribution Guide

* Use long name for option flags
2017-01-23 09:48:49 -08:00
Gregory Lee
6bc7be9217 updated config file name for Python 3.6 (#2881) 2017-01-23 09:34:50 -08:00
Erik Schnetter
19699a7607 libevent: Properly declare OpenSSL dependency version bounds (#2888)
* libevent: Properly declare OpenSSL dependency version bounds

* libevent: Handle ~openssl variant correctly
2017-01-20 13:57:15 -08:00
John Wohlbier
3e8106955b For qt3, append to LD_LIBRARY_PATH, do not nuke it (#2862)
* libmonitor does not exist at
http://libmonitor.googlecode.com/svn/trunk/

Change location to HPCToolkit version at github. Specify the hash corresponding
to the 20130218 version.

* When xcb is version 1.11, patch the configure file so it doesn't trip on
pthread-stubs and xau.

* Add os.getcwd()/lib to LD_LIBRARY_PATH, instead of nuking
existing LD_LIBRARY_PATH.
2017-01-20 10:34:40 -08:00
Erik Schnetter
adac3ebbf9 cfitsio: Allow building as shared libraries (#2887)
* cfitsio: Allow building as shared libraries

- Allow building as shared libraries
- Also add optional bzip2 variant
- Also update to newest version

This requires the recent correction to “fix_darwin_install_name”.

* cfitsio: Simplify code, default to +shared
2017-01-20 10:28:07 -08:00
Erik Schnetter
4e390e6689 m4: Update version (#2872) 2017-01-20 10:23:53 -08:00
Erik Schnetter
56cdb1d1ab swig: Update version (#2871) 2017-01-20 10:23:23 -08:00
Erik Schnetter
cade0181fd Spack: Correct fix_darwin_install_name (#2886)
Previously, fix_darwin_install_name would only handle dependencies that have no path set, and it ignore dependencies that have the build directory as path baked in. Catch this, and replace it by the install directory.
2017-01-20 10:22:59 -08:00
Jason Sarich
bc37a1012c let pflotran depend on hdf 1.8.12 and above (#2875) 2017-01-20 10:18:58 -08:00
Michael Kuhn
042307d5f1 Update c-blosc to 1.11.1 (#2877) 2017-01-20 10:17:46 -08:00
Erik Schnetter
a0c4fe247f OpenSSL: Update to version 1.1.0c (#2885) 2017-01-20 10:12:09 -08:00
Denis Davydov
1223e43827 p4est: add 2.0 (#2890) 2017-01-20 10:11:11 -08:00
Denis Davydov
c350bd1216 dealii: fix config without mpi (#2856)
* dealii: fix config without mpi

* dealii: add check of variants
2017-01-19 11:24:09 -08:00
Quinn
f511f7b558 Adding some fixes to packages that use configure_args function without setting spec set or directly referencing it (#2868)
* Adding 'self.' to the spec call for configure_args

* Updating this to set spec to self.spec

* More updates to the configure_args spec calls

* Another spec issue

* Another spec issue.

* And another spec issue

* Switching cmor back to self.spec.
2017-01-19 06:26:39 -08:00
Adam J. Stewart
4dad5aab84 Add spack edit option for build systems (#2865) 2017-01-18 18:49:48 -08:00
Erik Schnetter
9b7001fda1 OpenMPI: Update auto-detection of Verbs library location (#2124) 2017-01-18 14:54:39 -08:00
Adam J. Stewart
02f92fc7f8 Massive conversion from Package to AutotoolsPackage (#2845)
* Massive conversion from Package to AutotoolsPackage

* Forgot to convert p4est to AutotoolsPackage

* Fix typo

* Fix broken link in docs
2017-01-18 10:34:09 -08:00
Denis Davydov
5812081b80 gmsh: add 2.16 (#2857) 2017-01-18 09:34:05 -08:00
Denis Davydov
ddfbb14ad9 octave: add 4.2.0; fix Blas/Lapack; use AutotoolsPackage (#2858)
* octave: add 4.2.0; fix Blas/Lapack; use AutotoolsPackage

* fix a bug
2017-01-18 09:33:45 -08:00
Adam J. Stewart
026e2d0fe6 Convert 3 more new packages to PythonPackage (#2841) 2017-01-18 08:51:38 -08:00
Erik Schnetter
6242aaef6c papi: Update to 5.5.1 (#2849) 2017-01-18 08:18:38 -08:00
Erik Schnetter
70042f9e7d hwloc: Update to 1.11.5 (#2851) 2017-01-18 08:18:08 -08:00
Erik Schnetter
b452a7619c curl: update to 7.52.1 (#2852) 2017-01-18 08:17:50 -08:00
Erik Schnetter
a23fcd2a93 cmake: Update to 3.7.2 (#2853) 2017-01-18 08:17:31 -08:00
Erik Schnetter
3bd0101fb9 jemalloc: Update to 4.4.0 (#2850) 2017-01-18 08:16:59 -08:00
Adam J. Stewart
f0f230d480 Allow spack create to detect packages that need to run autoreconf (#2848) 2017-01-17 17:42:45 -08:00
Denis Davydov
a040c8c743 oce: add 0.18 and fix patching (#2844)
* oce: add 0.18 and fix patching

* oce: simplify the patch
2017-01-17 14:40:07 -08:00
Jason Sarich
a1f7006400 check if node is already deleted (#2799)
* check if node is already deleted

* fix variable name
2017-01-17 14:23:32 -08:00
Denis Davydov
190a5b575c p4est: switch to AutotoolsPackage (#2839) 2017-01-17 11:05:34 -08:00
Adam J. Stewart
061076aea9 Support scionlib version detection (#2818) 2017-01-17 10:54:36 -08:00
3313 changed files with 172639 additions and 31296 deletions

36
.codecov.yml Normal file
View File

@@ -0,0 +1,36 @@
coverage:
precision: 2
round: nearest
range: 60...90
status:
project:
default: true
llnl:
threshold: 0.5
paths:
- lib/spack/llnl
commands:
threshold: 0.5
paths:
- lib/spack/spack/cmd
build_systems:
threshold: 0.5
paths:
- lib/spack/spack/build_systems
modules:
threshold: 0.5
paths:
- lib/spack/spack/modules
core:
threshold: 0.5
paths:
- "!lib/spack/llnl"
- "!lib/spack/spack/cmd"
ignore:
- lib/spack/spack/test/.*
- lib/spack/env/.*
- lib/spack/docs/.*
- lib/spack/external/.*
comment: off

17
.flake8
View File

@@ -1,8 +1,8 @@
# -*- conf -*-
# flake8 settings for Spack.
# flake8 settings for Spack core files.
#
# Below we describe which flake8 checks Spack ignores and what the
# rationale is.
# These exceptions ar for Spack core files. We're slightly more lenient
# with packages. See .flake8_packages for that.
#
# Let people line things up nicely:
# - E129: visually indented line with same indent as next logical line
@@ -11,16 +11,11 @@
# - E272: multiple spaces before keyword
#
# Let people use terse Python features:
# - E731 : lambda expressions
# - E731: lambda expressions
#
# Spack allows wildcard imports:
# - F403: disable wildcard import
#
# These are required to get the package.py files to test clean.
# - F405: `name` may be undefined, or undefined from star imports: `module`
# - F821: undefined name `name` (needed for cmake, configure, etc.)
# These are required to get the package.py files to test clean:
# - F999: syntax error in doctest
#
[flake8]
ignore = E129,E221,E241,E272,E731,F403,F405,F821,F999
ignore = E129,E221,E241,E272,E731,F999
max-line-length = 79

22
.flake8_packages Normal file
View File

@@ -0,0 +1,22 @@
# -*- conf -*-
# flake8 settings for Spack package files.
#
# This should include all the same exceptions that we use for core files.
#
# In Spack packages, we also allow the single `from spack import *`
# wildcard import and dependencies can set globals for their
# dependents. So we add exceptions for checks related to undefined names.
#
# Note that we also add *per-line* exemptions for certain patters in the
# `spack flake8` command. This is where F403 for `from spack import *`
# is added (beause we *only* allow that wildcard).
#
# See .flake8 for regular exceptions.
#
# Redefinition exceptions:
# - F405: `name` may be undefined, or undefined from star imports: `module`
# - F821: undefined name `name` (needed for cmake, configure, etc.)
#
[flake8]
ignore = E129,E221,E241,E272,E731,F999,F405,F821
max-line-length = 79

7
.gitignore vendored
View File

@@ -8,8 +8,9 @@
*~
.DS_Store
.idea
/etc/spack/licenses
/etc/spack/*.yaml
# Ignore everything in /etc/spack except /etc/spack/defaults
/etc/spack/*
!/etc/spack/defaults
/etc/spackconfig
/share/spack/dotkit
/share/spack/modules
@@ -22,3 +23,5 @@
.#*
/.cache
/bin/spackc
*.in.log
*.out.log

View File

@@ -3,6 +3,7 @@ Adam Moody <moody20@llnl.gov> Adam T. Moody
Alfredo Gimenez <gimenez1@llnl.gov> Alfredo Gimenez <alfredo.gimenez@gmail.com>
Alfredo Gimenez <gimenez1@llnl.gov> Alfredo Adolfo Gimenez <alfredo.gimenez@gmail.com>
Andrew Williams <williamsa89@cardiff.ac.uk> Andrew Williams <andrew@alshain.org.uk>
Axel Huebl <a.huebl@hzdr.de> Axel Huebl <axel.huebl@plasma.ninja>
Ben Boeckel <ben.boeckel@kitware.com> Ben Boeckel <mathstuf@gmail.com>
Ben Boeckel <ben.boeckel@kitware.com> Ben Boeckel <mathstuf@users.noreply.github.com>
Benedikt Hegner <hegner@cern.ch> Benedikt Hegner <benedikt.hegner@cern.ch>
@@ -48,6 +49,7 @@ Robert D. French <frenchrd@ornl.gov> Robert D. French
Robert D. French <frenchrd@ornl.gov> Robert.French <frenchrd@ornl.gov>
Robert D. French <frenchrd@ornl.gov> robertdfrench <frenchrd@ornl.gov>
Saravan Pantham <saravan.pantham@gmail.com> Saravan Pantham <pantham1@surface86.llnl.gov>
Sergey Kosukhin <sergey.kosukhin@mpimet.mpg.de> Sergey Kosukhin <skosukhin@gmail.com>
Stephen Herbein <sherbein@udel.edu> Stephen Herbein <stephen272@gmail.com>
Todd Gamblin <tgamblin@llnl.gov> George Todd Gamblin <gamblin2@llnl.gov>
Todd Gamblin <tgamblin@llnl.gov> Todd Gamblin <gamblin2@llnl.gov>

View File

@@ -1,8 +1,6 @@
#=============================================================================
# Project settings
#=============================================================================
language: python
# Only build master and develop on push; do not build every branch.
branches:
only:
@@ -13,29 +11,97 @@ branches:
#=============================================================================
# Build matrix
#=============================================================================
python:
- 2.6
- 2.7
env:
- TEST_SUITE=unit
- TEST_SUITE=flake8
- TEST_SUITE=doc
matrix:
# Flake8 and Sphinx no longer support Python 2.6, and one run is enough.
exclude:
- python: 2.6
env: TEST_SUITE=flake8
- python: 2.6
env: TEST_SUITE=doc
# Explicitly include an OS X build with homebrew's python.
# Works around Python issues on Travis for OSX, described here:
# http://blog.fizyk.net.pl/blog/running-python-tests-on-traviss-osx-workers.html
jobs:
fast_finish: true
include:
- os: osx
language: generic
env: TEST_SUITE=unit
- stage: 'flake8 + documentation'
python: '2.7'
os: linux
language: python
env: TEST_SUITE=flake8
- stage: 'flake8 + documentation'
python: '2.7'
os: linux
language: python
env: TEST_SUITE=doc
- stage: 'unit tests'
python: '2.6'
os: linux
language: python
env: TEST_SUITE=unit
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=unit, COVERAGE=true ]
- python: '3.3'
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.4'
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.5'
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.6'
os: linux
language: python
env: [ TEST_SUITE=unit, COVERAGE=true ]
- stage: 'unit tests - osx'
os: osx
language: generic
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ]
# mpich (AutotoolsPackage)
- stage: 'build tests'
python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=mpich' ]
# astyle (MakefilePackage)
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=astyle' ]
# tut (WafPackage)
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=tut' ]
# py-setuptools (PythonPackage)
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=py-setuptools' ]
# perl-dbi (PerlPackage)
# - python: '2.7'
# os: linux
# language: python
# env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=perl-dbi' ]
# openjpeg (CMakePackage + external cmake)
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=openjpeg' ]
# r-rcpp (RPackage + external R)
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=r-rcpp' ]
# mpich (AutotoolsPackage)
- python: '3.6'
os: linux
language: python
env: [ TEST_SUITE=build, COVERAGE=true, 'SPEC=mpich' ]
stages:
- 'flake8 + documentation'
- 'unit tests'
- 'build tests'
- name: 'unit tests - osx'
if: type IN (cron)
#=============================================================================
# Environment
@@ -48,23 +114,36 @@ addons:
apt:
packages:
- gfortran
- mercurial
- graphviz
- libyaml-dev
- gnupg2
- cmake
- r-base
- r-base-core
- r-base-dev
- perl
- perl-base
cache: pip
# Work around Travis's lack of support for Python on OSX
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions python > /dev/null || brew install python; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then rm /usr/local/include/c++ ; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions gcc > /dev/null || brew install gcc; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions gnupg2 > /dev/null || brew install gnupg2; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then virtualenv venv; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source venv/bin/activate; fi
# Install various dependencies
install:
- pip install --upgrade coveralls
- pip install --upgrade pip
- pip install --upgrade six
- pip install --upgrade setuptools
- pip install --upgrade codecov
- pip install --upgrade flake8
- pip install --upgrade sphinx
- pip install --upgrade mercurial
- if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade -r lib/spack/docs/requirements.txt; fi
before_script:
# Need this for the git tests to succeed.
@@ -74,13 +153,15 @@ before_script:
# Need this to be able to compute the list of changed files
- git fetch origin develop:develop
# Set up external dependencies for build tests, because the take too long to compile
- if [[ "$TEST_SUITE" == "build" ]]; then cp share/spack/qa/configuration/packages.yaml etc/spack/packages.yaml; fi
#=============================================================================
# Building
#=============================================================================
script: share/spack/qa/run-$TEST_SUITE-tests
after_success:
- if [[ $TEST_SUITE == unit && $TRAVIS_PYTHON_VERSION == 2.7 && $TRAVIS_OS_NAME == "linux" ]]; then coveralls; fi
script:
- share/spack/qa/run-$TEST_SUITE-tests
- if [[ "$COVERAGE" == "true" ]]; then codecov --env PYTHON_VERSION --required --flags "${TEST_SUITE}${TRAVIS_OS_NAME}"; fi
#=============================================================================
# Notifications

46
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at maintainers@spack.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

5
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,5 @@
# Contributing to Spack
Before contributing to Spack you should read the
[Contribution Guide](https://spack.readthedocs.io/en/latest/contribution_guide.html),
which is maintained as part of Spack's documentation.

574
LICENSE
View File

@@ -1,135 +1,197 @@
########################################################################
GNU LESSER GENERAL PUBLIC LICENSE (Lesser GPL)
Version 2.1, February 1999
########################################################################
Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
Produced at the Lawrence Livermore National Laboratory.
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
This file is part of Spack.
Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
LLNL-CODE-647188
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
For details, see https://github.com/llnl/spack
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License (as
published by the Free Software Foundation) version 2.1, February 1999.
Preamble
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
conditions of the GNU Lesser General Public License for more details.
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
########################################################################
LLNL NOTICE AND TERMS AND CONDITIONS OF THE GNU LGPL
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
LLNL Preamble Notice
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
A. This notice is required to be provided under LLNL's contract with
the U.S. Department of Energy (DOE). This work was produced at the
Lawrence Livermore National Laboratory under Contract
No. DE-AC52-07NA27344 with the DOE.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
B. Neither the United States Government nor Lawrence Livermore
National Security, LLC nor any of their employees, makes any
warranty, express or implied, or assumes any liability or
responsibility for the accuracy, completeness, or usefulness of any
information, apparatus, product, or process disclosed, or
represents that its use would not infringe privately-owned rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
C. Also, reference herein to any specific commercial products,
process, or services by trade name, trademark, manufacturer or
otherwise does not necessarily constitute or imply its endorsement,
recommendation, or favoring by the United States Government or
Lawrence Livermore National Security, LLC. The views and opinions
of authors expressed herein do not necessarily state or reflect
those of the United States Government or Lawrence Livermore
National Security, LLC, and shall not be used for advertising or
product endorsement purposes.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
The precise terms and conditions for copying, distribution and
modification follows.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
########################################################################
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
0. This License Agreement applies to any software library or other
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License"). Each
licensee is addressed as "you".
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control
compilation and installation of the library. Activities other than
copying, distribution and modification are not covered by this
License; they are outside its scope. The act of running a program
using the Library is not restricted, and output from such a program is
covered only if its contents constitute a work based on the Library
(independent of the use of the Library in a tool for writing
it). Whether that is true depends on what the Library does and what
the program that uses the Library does.
interface definition files, plus the scripts used to control compilation
and installation of the library.
1. You may copy and distribute verbatim copies of the Library's
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library. You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection in exchange
for a fee.
Library.
2. You may modify your copy or copies of the Library or any portion of
it, thus forming a work based on the Library, and copy and distribute
such modifications or work under the terms of Section 1 above,
provided that you also meet all of these conditions:
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
a) The modified work must itself be a software library.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
a) The modified work must itself be a software library.
c) You must cause the whole of the work to be licensed at no charge to
all third parties under the terms of this License.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses the
facility, other than as an argument passed when the facility is
invoked, then you must make a good faith effort to ensure that, in the
event an application does not supply such function or table, the
facility still operates, and performs whatever part of its purpose
remains meaningful. (For example, a function in a library to compute
square roots has a purpose that is entirely well-defined independent
of the application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must be
optional: if the application does not supply it, the square root
function must still compute square roots.)
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
These requirements apply to the modified work as a whole. If
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
@@ -146,189 +208,191 @@ with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for that
copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy. This
option is useful when you wish to copy part of the code of the Library
into a program that is not a library.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
4. You may copy and distribute the Library (or a portion or derivative
of it, under Section 2) in object code or executable form under the
terms of Sections 1 and 2 above provided that you accompany it with
the complete corresponding machine- readable source code, which must
be distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
If distribution of object code is made by offering access to copy from
a designated place, then offering equivalent access to copy the source
code from the same place satisfies the requirement to distribute the
source code, even though third parties are not compelled to copy the
source along with the object code.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
5. A program that contains no derivative of any portion of the
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a work,
in isolation, is not a derivative work of the Library, and therefore
falls outside the scope of this License.
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License. Section
6 states terms for distribution of such executables.
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is
not. Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure
layouts and accessors, and small macros and small inline functions
(ten lines or less in length), then the use of the object file is
unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under section 6.)
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section
6. Any executables containing that work also fall under Section 6,
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or link
a "work that uses the Library" with the Library to produce a work
containing portions of the Library, and distribute that work under
terms of your choice, provided that the terms permit modification of
the work for the customer's own use and reverse engineering for
debugging such modifications.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding machine-readable
source code for the Library including whatever changes were used in
the work (which must be distributed under Sections 1 and 2 above);
and, if the work is an executable liked with the Library, with the
complete machine-readable "work that uses the Library", as object code
and/or source code, so that the user can modify the Library and then
relink to produce a modified executable containing the modified
Library. (It is understood that the user who changes the contents of
definitions files in the Library will not necessarily be able to
recompile the application to use the modified definitions.)
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a copy
of the library already present on the user's computer system, rather
than copying library functions into the executable, and (2) will
operate properly with a modified version of the library, if the user
installs one, as long as the modified version is interface- compatible
with the version that the work was made with.
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least three
years, to give the same user the materials specified in Subsection 6a,
above, for a charge no more than the cost of performing this
distribution.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy from
a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these materials
or that you have already sent this user a copy.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other propriety libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities. This
must be distributed under the terms of the Sections above.
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact that
part of it is a work based on the Library, and explaining where to
find the accompanying uncombined form of the same work.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
1 You may not copy, modify, sublicense, link with, or distribute the
Library except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, link with, or distribute the
Library is void, and will automatically terminate your rights under
this License. However, parties who have received copies, or rights,
from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
2 You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
3 Each time you redistribute the Library (or any work based on the
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted
herein. You are not responsible for enforcing compliance by third
parties with this License.
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
4 If, as a consequence of a court judgment or allegation of patent
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
@@ -338,56 +402,102 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
1 If the distribution and/or use of the Library is restricted in
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time. Such
new versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
2 If you wish to incorporate parts of the Library into other free
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
NO WARRANTY
1 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
2 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL
OR CONSQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

32
NOTICE Normal file
View File

@@ -0,0 +1,32 @@
########################################################################
LLNL NOTICE AND TERMS AND CONDITIONS OF THE GNU LGPL
########################################################################
LLNL Preamble Notice
A. This notice is required to be provided under LLNL's contract with
the U.S. Department of Energy (DOE). This work was produced at the
Lawrence Livermore National Laboratory under Contract
No. DE-AC52-07NA27344 with the DOE.
B. Neither the United States Government nor Lawrence Livermore
National Security, LLC nor any of their employees, makes any
warranty, express or implied, or assumes any liability or
responsibility for the accuracy, completeness, or usefulness of any
information, apparatus, product, or process disclosed, or
represents that its use would not infringe privately-owned rights.
C. Also, reference herein to any specific commercial products,
process, or services by trade name, trademark, manufacturer or
otherwise does not necessarily constitute or imply its endorsement,
recommendation, or favoring by the United States Government or
Lawrence Livermore National Security, LLC. The views and opinions
of authors expressed herein do not necessarily state or reflect
those of the United States Government or Lawrence Livermore
National Security, LLC, and shall not be used for advertising or
product endorsement purposes.
See the LICENSE file for the precise terms and conditions for copying,
distribution and modification.
########################################################################

View File

@@ -1,31 +1,30 @@
![image](share/spack/logo/spack-logo-text-64.png "Spack")
============
# <img src="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo.svg" width="64" valign="middle" alt="Spack"/> Spack
[![Build Status](https://travis-ci.org/LLNL/spack.svg?branch=develop)](https://travis-ci.org/LLNL/spack)
[![Coverage Status](https://coveralls.io/repos/github/LLNL/spack/badge.svg?branch=develop)](https://coveralls.io/github/LLNL/spack?branch=develop)
[![Build Status](https://travis-ci.org/spack/spack.svg?branch=develop)](https://travis-ci.org/spack/spack)
[![codecov](https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/spack/spack)
[![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io)
[![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com)
Spack is a package management tool designed to support multiple
versions and configurations of software on a wide variety of platforms
and environments. It was designed for large supercomputing centers,
where many users and application teams share common installations of
software on clusters with exotic architectures, using libraries that
do not have a standard ABI. Spack is non-destructive: installing a new
version does not break existing installations, so many configurations
can coexist on the same system.
Spack is a multi-platform package manager that builds and installs
multiple versions and configurations of software. It works on Linux,
macOS, and many supercomputers. Spack is non-destructive: installing a
new version of a package does not break existing installations, so many
configurations of the same package can coexist.
Most importantly, Spack is simple. It offers a simple spec syntax so
that users can specify versions and configuration options
concisely. Spack is also simple for package authors: package files are
written in pure Python, and specs allow package authors to write a
single build script for many different builds of the same package.
Spack offers a simple "spec" syntax that allows users to specify versions
and configuration options. Package files are written in pure Python, and
specs allow package authors to write a single script for many different
builds of the same package. With Spack, you can build your software
*all* the ways you want to.
See the
[Feature Overview](http://spack.readthedocs.io/en/latest/features.html)
for examples and highlights.
To install spack and install your first package:
To install spack and your first package, make sure you have Python.
Then:
$ git clone https://github.com/llnl/spack.git
$ git clone https://github.com/spack/spack.git
$ cd spack/bin
$ ./spack install libelf
@@ -35,15 +34,16 @@ Documentation
[**Full documentation**](http://spack.readthedocs.io/) for Spack is
the first place to look.
We've also got a [**Spack 101 Tutorial**](http://spack.readthedocs.io/en/latest/tutorial_sc16.html),
so you can learn Spack yourself, or teach users at your own site.
Try the
[**Spack Tutorial**](http://spack.readthedocs.io/en/latest/tutorial.html),
to learn how to use spack, write packages, or deploy packages for users
at your site.
See also:
* [Technical paper](http://www.computer.org/csdl/proceedings/sc/2015/3723/00/2807623.pdf) and
[slides](https://tgamblin.github.io/files/Gamblin-Spack-SC15-Talk.pdf) on Spack's design and implementation.
* [Short presentation](https://tgamblin.github.io/files/Gamblin-Spack-Lightning-Talk-BOF-SC15.pdf) from the *Getting Scientific Software Installed* BOF session at Supercomputing 2015.
Get Involved!
------------------------
@@ -53,37 +53,44 @@ packages to bugfixes, or even new core features.
### Mailing list
If you are interested in contributing to spack, the first step is to
join the mailing list. We're using a Google Group for this, and you
can join it here:
If you are interested in contributing to spack, join the mailing list.
We're using Google Groups for this:
* [Spack Google Group](https://groups.google.com/d/forum/spack)
### Slack channel
Spack has a Slack channel where you can chat about all things Spack:
* [Spack on Slack](https://spackpm.slack.com)
[Sign up here](https://spackpm.herokuapp.com) to get an invitation mailed
to you.
### Contributions
Contributing to Spack is relatively easy. Just send us a
[pull request](https://help.github.com/articles/using-pull-requests/).
When you send your request, make ``develop`` the destination branch on the
[Spack repository](https://github.com/LLNL/spack).
[Spack repository](https://github.com/spack/spack).
Your PR must pass Spack's unit tests and documentation tests, and must be
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant.
We enforce these guidelines with [Travis CI](https://travis-ci.org/LLNL/spack).
To run these tests locally, and for helpful tips on git, see our
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce
these guidelines with [Travis CI](https://travis-ci.org/spack/spack). To
run these tests locally, and for helpful tips on git, see our
[Contribution Guide](http://spack.readthedocs.io/en/latest/contribution_guide.html).
Spack uses a rough approximation of the [Git
Flow](http://nvie.com/posts/a-successful-git-branching-model/)
Spack uses a rough approximation of the
[Git Flow](http://nvie.com/posts/a-successful-git-branching-model/)
branching model. The ``develop`` branch contains the latest
contributions, and ``master`` is always tagged and points to the
latest stable release.
contributions, and ``master`` is always tagged and points to the latest
stable release.
Authors
----------------
Many thanks go to Spack's [contributors](https://github.com/llnl/spack/graphs/contributors).
Many thanks go to Spack's [contributors](https://github.com/spack/spack/graphs/contributors).
Spack was originally written by Todd Gamblin, tgamblin@llnl.gov.
Spack was created by Todd Gamblin, tgamblin@llnl.gov.
### Citing Spack
@@ -97,6 +104,8 @@ If you are referencing Spack in a publication, please cite the following paper:
Release
----------------
Spack is released under an LGPL license. For more details see the
LICENSE file.
NOTICE and LICENSE files.
``LLNL-CODE-647188``
![Analytics](https://ga-beacon.appspot.com/UA-101208306-3/welcome-page?pixel)

View File

@@ -1,14 +1,14 @@
#!/bin/bash
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -104,18 +104,27 @@ lines=0
while read line && ((lines < 2)) ; do
if [[ "$line" = '#!'* ]]; then
interpreter="${line#\#!}"
elif [[ "$line" = '//!'*node* ]]; then
interpreter="${line#//!}"
elif [[ "$line" = '--!'*lua* ]]; then
interpreter="${line#--!}"
fi
lines=$((lines+1))
done < "$script"
# this is ineeded for scripts with sbang parameter
# like ones in intltool
# #!/<spack-long-path>/perl -w
# this is the interpreter line with all the parameters as a vector
interpreter_v=(${interpreter})
# this is the single interpreter path
interpreter_f="${interpreter_v[0]}"
# Invoke any interpreter found, or raise an error if none was found.
if [[ -n "$interpreter" ]]; then
if [[ "${interpreter##*/}" = "perl" ]]; then
exec $interpreter -x "$@"
if [[ -n "$interpreter_f" ]]; then
if [[ "${interpreter_f##*/}" = "perl" ]]; then
exec $interpreter_v -x "$@"
else
exec $interpreter "$@"
exec $interpreter_v "$@"
fi
else
echo "error: sbang found no interpreter in $script"

205
bin/spack
View File

@@ -1,15 +1,14 @@
#!/usr/bin/env python
# flake8: noqa
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -24,27 +23,38 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import sys
if (sys.version_info[0] > 2) or (sys.version_info[:2] < (2, 6)):
v_info = sys.version_info[:3]
sys.exit("Spack requires Python 2.6 or 2.7. "
"This is Python %d.%d.%d." % v_info)
from __future__ import print_function
import os
import inspect
import sys
if sys.version_info[:2] < (2, 6):
v_info = sys.version_info[:3]
sys.exit("Spack requires Python 2.6 or higher."
"This is Python %d.%d.%d." % v_info)
# Find spack's location and its prefix.
SPACK_FILE = os.path.realpath(os.path.expanduser(__file__))
os.environ["SPACK_FILE"] = SPACK_FILE
SPACK_PREFIX = os.path.dirname(os.path.dirname(SPACK_FILE))
spack_file = os.path.realpath(os.path.expanduser(__file__))
spack_prefix = os.path.dirname(os.path.dirname(spack_file))
# Allow spack libs to be imported in our scripts
SPACK_LIB_PATH = os.path.join(SPACK_PREFIX, "lib", "spack")
sys.path.insert(0, SPACK_LIB_PATH)
spack_lib_path = os.path.join(spack_prefix, "lib", "spack")
sys.path.insert(0, spack_lib_path)
# Add external libs
SPACK_EXTERNAL_LIBS = os.path.join(SPACK_LIB_PATH, "external")
sys.path.insert(0, SPACK_EXTERNAL_LIBS)
spack_external_libs = os.path.join(spack_lib_path, "external")
if sys.version_info[:2] == (2, 6):
sys.path.insert(0, os.path.join(spack_external_libs, 'py26'))
sys.path.insert(0, spack_external_libs)
# Handle vendoring of YAML specially, as it has two versions.
if sys.version_info[0] == 2:
spack_yaml_libs = os.path.join(spack_external_libs, "yaml/lib")
else:
spack_yaml_libs = os.path.join(spack_external_libs, "yaml/lib3")
sys.path.insert(0, spack_yaml_libs)
# Quick and dirty check to clean orphaned .pyc files left over from
# previous revisions. These files were present in earlier versions of
@@ -52,13 +62,13 @@ sys.path.insert(0, SPACK_EXTERNAL_LIBS)
# imports. If we leave them, Spack will fail in mysterious ways.
# TODO: more elegant solution for orphaned pyc files.
orphaned_pyc_files = [
os.path.join(SPACK_EXTERNAL_LIBS, 'functools.pyc'),
os.path.join(SPACK_EXTERNAL_LIBS, 'ordereddict.pyc'),
os.path.join(SPACK_LIB_PATH, 'spack', 'platforms', 'cray_xc.pyc'),
os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'package-list.pyc'),
os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'test-install.pyc'),
os.path.join(SPACK_LIB_PATH, 'spack', 'cmd', 'url-parse.pyc'),
os.path.join(SPACK_LIB_PATH, 'spack', 'test', 'yaml.pyc')
os.path.join(spack_external_libs, 'functools.pyc'),
os.path.join(spack_external_libs, 'ordereddict.pyc'),
os.path.join(spack_lib_path, 'spack', 'platforms', 'cray_xc.pyc'),
os.path.join(spack_lib_path, 'spack', 'cmd', 'package-list.pyc'),
os.path.join(spack_lib_path, 'spack', 'cmd', 'test-install.pyc'),
os.path.join(spack_lib_path, 'spack', 'cmd', 'url-parse.pyc'),
os.path.join(spack_lib_path, 'spack', 'test', 'yaml.pyc')
]
for pyc_file in orphaned_pyc_files:
@@ -67,146 +77,9 @@ for pyc_file in orphaned_pyc_files:
try:
os.remove(pyc_file)
except OSError as e:
print ("WARNING: Spack may fail mysteriously. "
"Couldn't remove orphaned .pyc file: %s" % pyc_file)
print("WARNING: Spack may fail mysteriously. "
"Couldn't remove orphaned .pyc file: %s" % pyc_file)
# If there is no working directory, use the spack prefix.
try:
working_dir = os.getcwd()
except OSError:
os.chdir(SPACK_PREFIX)
working_dir = SPACK_PREFIX
# clean up the scope and start using spack package instead.
del SPACK_FILE, SPACK_PREFIX, SPACK_LIB_PATH
import llnl.util.tty as tty
from llnl.util.tty.color import *
import spack
from spack.error import SpackError
import argparse
# Command parsing
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter,
description="Spack: the Supercomputing PACKage Manager." + colorize("""
spec expressions:
PACKAGE [CONSTRAINTS]
CONSTRAINTS:
@c{@version}
@g{%compiler @compiler_version}
@B{+variant}
@r{-variant} or @r{~variant}
@m{=architecture}
[^DEPENDENCY [CONSTRAINTS] ...]"""))
parser.add_argument('-d', '--debug', action='store_true',
help="Write out debug logs during compile")
parser.add_argument('-D', '--pdb', action='store_true',
help="Run spack under the pdb debugger")
parser.add_argument('-k', '--insecure', action='store_true',
help="Do not check ssl certificates when downloading.")
parser.add_argument('-m', '--mock', action='store_true',
help="Use mock packages instead of real ones.")
parser.add_argument('-p', '--profile', action='store_true',
help="Profile execution using cProfile.")
parser.add_argument('-v', '--verbose', action='store_true',
help="Print additional output during builds")
parser.add_argument('-s', '--stacktrace', action='store_true',
help="Add stacktrace information to all printed statements")
parser.add_argument('-V', '--version', action='version',
version="%s" % spack.spack_version)
# each command module implements a parser() function, to which we pass its
# subparser for setup.
subparsers = parser.add_subparsers(metavar='SUBCOMMAND', dest="command")
import spack.cmd
for cmd in spack.cmd.commands:
module = spack.cmd.get_module(cmd)
cmd_name = cmd.replace('_', '-')
subparser = subparsers.add_parser(cmd_name, help=module.description)
module.setup_parser(subparser)
def _main(args, unknown_args):
# Set up environment based on args.
tty.set_verbose(args.verbose)
tty.set_debug(args.debug)
tty.set_stacktrace(args.stacktrace)
spack.debug = args.debug
if spack.debug:
import spack.util.debug as debug
debug.register_interrupt_handler()
# Run any available pre-run hooks
spack.hooks.pre_run()
spack.spack_working_dir = working_dir
if args.mock:
from spack.repository import RepoPath
spack.repo.swap(RepoPath(spack.mock_packages_path))
# If the user asked for it, don't check ssl certs.
if args.insecure:
tty.warn("You asked for --insecure. Will NOT check SSL certificates.")
spack.insecure = True
# Try to load the particular command asked for and run it
command = spack.cmd.get_command(args.command.replace('-', '_'))
# Allow commands to inject an optional argument and get unknown args
# if they want to handle them.
info = dict(inspect.getmembers(command))
varnames = info['__code__'].co_varnames
argcount = info['__code__'].co_argcount
# Actually execute the command
try:
if argcount == 3 and varnames[2] == 'unknown_args':
return_val = command(parser, args, unknown_args)
else:
if unknown_args:
tty.die('unrecognized arguments: %s' % ' '.join(unknown_args))
return_val = command(parser, args)
except SpackError as e:
e.die()
except KeyboardInterrupt:
sys.stderr.write('\n')
tty.die("Keyboard interrupt.")
# Allow commands to return values if they want to exit with some other code.
if return_val is None:
sys.exit(0)
elif isinstance(return_val, int):
sys.exit(return_val)
else:
tty.die("Bad return value from command %s: %s"
% (args.command, return_val))
def main(args):
# Just print help and exit if run with no arguments at all
if len(args) == 1:
parser.print_help()
sys.exit(1)
# actually parse the args.
args, unknown = parser.parse_known_args()
if args.profile:
import cProfile
cProfile.runctx('_main(args, unknown)', globals(), locals(),
sort='time')
elif args.pdb:
import pdb
pdb.runctx('_main(args, unknown)', globals(), locals())
else:
_main(args, unknown)
if __name__ == '__main__':
main(sys.argv)
# Once we've set up the system path, run the spack main method
import spack.main # noqa
sys.exit(spack.main.main())

View File

@@ -1,14 +1,14 @@
#!/bin/sh
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as

52
conftest.py Normal file
View File

@@ -0,0 +1,52 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import pytest
# Hooks to add command line options or set other custom behaviors.
# They must be placed here to be found by pytest. See:
#
# https://docs.pytest.org/en/latest/writing_plugins.html
#
def pytest_addoption(parser):
group = parser.getgroup("Spack specific command line options")
group.addoption(
'--fast', action='store_true', default=False,
help='runs only "fast" unit tests, instead of the whole suite')
def pytest_collection_modifyitems(config, items):
if not config.getoption('--fast'):
# --fast not given, run all the tests
return
slow_tests = ['db', 'network', 'maybeslow']
skip_as_slow = pytest.mark.skip(
reason='skipped slow test [--fast command line option given]'
)
for item in items:
if any(x in item.keywords for x in slow_tests):
item.add_marker(skip_as_slow)

View File

@@ -18,6 +18,9 @@ config:
# You can use $spack here to refer to the root of the spack instance.
install_tree: $spack/opt/spack
# Locations where templates should be found
template_dirs:
- $spack/templates
# Locations where different types of modules should be installed.
module_roots:
@@ -66,3 +69,9 @@ config:
# If set to true, `spack install` and friends will NOT clean
# potentially harmful variables from the build environment. Use wisely.
dirty: false
# The default number of jobs to use when running `make` in parallel.
# If set to 4, for example, `spack install` will run `make -j4`.
# If not set, all available cores are used by default.
# build_jobs: 4

View File

@@ -40,3 +40,7 @@ modules:
- PKG_CONFIG_PATH
'':
- CMAKE_PREFIX_PATH
lmod:
hierarchy:
- mpi

View File

@@ -17,7 +17,23 @@ packages:
all:
compiler: [gcc, intel, pgi, clang, xl, nag]
providers:
mpi: [openmpi, mpich]
awk: [gawk]
blas: [openblas]
daal: [intel-daal]
elf: [elfutils]
gl: [mesa, opengl]
golang: [gcc]
ipp: [intel-ipp]
java: [jdk]
lapack: [openblas]
mkl: [intel-mkl]
mpe: [mpe2]
mpi: [openmpi, mpich]
opencl: [pocl]
openfoam: [openfoam-com, openfoam-org, foam-extend]
pil: [py-pillow]
pkgconfig: [pkgconf, pkg-config]
scalapack: [netlib-scalapack]
szip: [libszip, libaec]
tbb: [intel-tbb]
jpeg: [libjpeg-turbo, libjpeg]

36
issue_template.md Normal file
View File

@@ -0,0 +1,36 @@
If you want to report a build error for some package, or a bug in core please use the following template as a guideline:
-----
Summary
### Expected Result
What you expected
### Actual Result
What happened instead
### Steps to reproduce the issue
```console
$ spack <command1> <spec>
$ spack <command2> <spec>
...
```
### Information on your system
This includes:
1. which platform you are using
2. any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.)
-----
We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
Other than that, thanks for taking the time to contribute to Spack!

View File

@@ -1,5 +1,5 @@
package_list.rst
package_list.html
command_index.rst
spack*.rst
modules.rst
llnl*.rst
_build

View File

@@ -3,13 +3,12 @@
# You can set these variables from the command line.
SPHINXOPTS = -E
JOBS ?= $(shell python -c 'import multiprocessing; print multiprocessing.cpu_count()')
SPHINXBUILD = sphinx-build -j $(JOBS)
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
export PYTHONPATH := ../../spack:$(PYTHONPATH)
APIDOC_FILES = spack*.rst
APIDOC_FILES = spack*.rst llnl*.rst
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
@@ -58,7 +57,8 @@ upload:
git push -f github gh-pages
apidoc:
sphinx-apidoc -T -o . $(PYTHONPATH)/spack
sphinx-apidoc -f -T -o . ../spack
sphinx-apidoc -f -T -o . ../llnl
help:
@echo "Please use \`make <target>' where <target> is one of"
@@ -83,7 +83,7 @@ help:
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -f package_list.rst command_index.rst modules.rst
-rm -f command_index.rst
-rm -rf $(BUILDDIR)/* $(APIDOC_FILES)
html:

View File

@@ -24,7 +24,7 @@
<br/>
Written by Todd Gamblin (<a href="mailto:tgamblin@llnl.gov">tgamblin@llnl.gov</a>) and
many contributors. LLNL-CODE-647188.
many <a href="https://github.com/spack/spack/graphs/contributors">contributors.</a> LLNL-CODE-647188.
{%- if last_updated %}
<br/>

View File

@@ -808,17 +808,46 @@ Specifying Specs by Hash
^^^^^^^^^^^^^^^^^^^^^^^^
Complicated specs can become cumbersome to enter on the command line,
especially when many of the qualifications are necessary to
distinguish between similar installs, for example when using the
``uninstall`` command. To avoid this, when referencing an existing spec,
especially when many of the qualifications are necessary to distinguish
between similar installs. To avoid this, when referencing an existing spec,
Spack allows you to reference specs by their hash. We previously
discussed the spec hash that Spack computes. In place of a spec in any
command, substitute ``/<hash>`` where ``<hash>`` is any amount from
the beginning of a spec hash. If the given spec hash is sufficient
to be unique, Spack will replace the reference with the spec to which
it refers. Otherwise, it will prompt for a more qualified hash.
the beginning of a spec hash.
Note that this will not work to reinstall a depencency uninstalled by
For example, lets say that you accidentally installed two different
``mvapich2`` installations. If you want to uninstall one of them but don't
know what the difference is, you can run:
.. code-block:: console
$ spack find --long mvapich2
==> 2 installed packages.
-- linux-centos7-x86_64 / gcc@6.3.0 ----------
qmt35td mvapich2@2.2%gcc
er3die3 mvapich2@2.2%gcc
You can then uninstall the latter installation using:
.. code-block:: console
$ spack uninstall /er3die3
Or, if you want to build with a specific installation as a dependency,
you can use:
.. code-block:: console
$ spack install trilinos ^/er3die3
If the given spec hash is sufficiently long as to be unique, Spack will
replace the reference with the spec to which it refers. Otherwise, it will
prompt for a more qualified hash.
Note that this will not work to reinstall a dependency uninstalled by
``spack uninstall --force``.
.. _cmd-spack-providers:

View File

@@ -0,0 +1,132 @@
.. _binary_caches:
============
Build caches
============
Some sites may encourage users to set up their own test environments
before carrying out central installations, or some users may prefer to set
up these environments on their own motivation. To reduce the load of
recompiling otherwise identical package specs in different installations,
installed packages can be put into build cache tarballs, uploaded to
your Spack mirror and then downloaded and installed by others.
--------------------------
Creating build cache files
--------------------------
A compressed tarball of an installed package is created. Tarballs are created
for all of its link and run dependency packages as well. Compressed tarballs are
signed with gpg and signature and tarball and put in a ``.spack`` file. Optionally,
the rpaths (and ids and deps on macOS) can be changed to paths relative to
the Spack install tree before the tarball is created.
Build caches are created via:
.. code-block:: console
$ spack buildcache create spec
---------------------------------------
Finding or installing build cache files
---------------------------------------
To find build caches or install build caches, a Spack mirror must be configured
with:
.. code-block:: console
$ spack mirror add <name> <url>
Build caches are found via:
.. code-block:: console
$ spack buildcache list
Build caches are installed via:
.. code-block:: console
$ spack buildcache install
----------
Relocation
----------
Initial build and later installation do not necessarily happen at the same
location. Spack provides a relocation capability and corrects for RPATHs and
non-relocatable scripts. However, many packages compile paths into binary
artifacts directly. In such cases, the build instructions of this package would
need to be adjusted for better re-locatability.
.. _cmd-spack-buildcache:
--------------------
``spack buildcache``
--------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^
``spack buildcache create``
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create tarball of installed Spack package and all dependencies.
Tarballs are checksummed and signed if gpg2 is available.
Places them in a directory ``build_cache`` that can be copied to a mirror.
Commands like ``spack buildcache install`` will search Spack mirrors for build_cache to get the list of build caches.
============== ========================================================================================================================
Arguments Description
============== ========================================================================================================================
``<specs>`` list of partial specs or hashes with a leading ``/`` to match from installed packages and used for creating build caches
``-d <path>`` directory in which ``build_cache`` directory is created, defaults to ``.``
``-f`` overwrite ``.spack`` file in ``build_cache`` directory if it exists
``-k <key>`` the key to sign package with. In the case where multiple keys exist, the package will be unsigned unless ``-k`` is used.
``-r`` make paths in binaries relative before creating tarball
``-y`` answer yes to all create unsigned ``build_cache`` questions
============== ========================================================================================================================
^^^^^^^^^^^^^^^^^^^^^^^^^
``spack buildcache list``
^^^^^^^^^^^^^^^^^^^^^^^^^
Retrieves all specs for build caches available on a Spack mirror.
============== =====================================================================================
Arguments Description
============== =====================================================================================
``<specs>`` list of partial package specs to be matched against specs downloaded for build caches
============== =====================================================================================
E.g. ``spack buildcache list gcc`` with print only commands to install ``gcc`` package(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
``spack buildcache install``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Retrieves all specs for build caches available on a Spack mirror and installs build caches
with specs matching the specs input.
============== ==============================================================================================
Arguments Description
============== ==============================================================================================
``<specs>`` list of partial package specs or hashes with a leading ``/`` to be installed from build caches
``-f`` remove install directory if it exists before unpacking tarball
``-y`` answer yes to all to don't verify package with gpg questions
============== ==============================================================================================
^^^^^^^^^^^^^^^^^^^^^^^^^
``spack buildcache keys``
^^^^^^^^^^^^^^^^^^^^^^^^^
List public keys available on Spack mirror.
========= ==============================================
Arguments Description
========= ==============================================
``-i`` trust the keys downloaded with prompt for each
``-y`` answer yes to all trust all keys downloaded
========= ==============================================

View File

@@ -71,9 +71,9 @@ package lacks a spec component, such as missing a compiler or
package version, then Spack will guess the missing component based
on its most-favored packages, and it may guess incorrectly.
Each package version and compilers listed in an external should
Each package version and compiler listed in an external should
have entries in Spack's packages and compiler configuration, even
though the package and compiler may not every be built.
though the package and compiler may not ever be built.
The packages configuration can tell Spack to use an external location
for certain package versions, but it does not restrict Spack to using

View File

@@ -1,14 +1,14 @@
# flake8: noqa
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -49,8 +49,11 @@
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('exts'))
sys.path.insert(0, os.path.abspath('../external'))
if sys.version_info[0] < 3:
sys.path.insert(0, os.path.abspath('../external/yaml/lib'))
else:
sys.path.insert(0, os.path.abspath('../external/yaml/lib3'))
sys.path.append(os.path.abspath('..'))
# Add the Spack bin directory to the path so that we can use its output in docs.
@@ -58,11 +61,6 @@
os.environ['SPACK_ROOT'] = spack_root
os.environ['PATH'] += '%s%s/bin' % (os.pathsep, spack_root)
# Get the spack version for use in the docs
spack_version = subprocess.Popen(
[spack_root + '/bin/spack', '-V'],
stderr=subprocess.PIPE).communicate()[1].strip().split('.')
# Set an environment variable so that colify will print output like it would to
# a terminal.
os.environ['COLIFY_SIZE'] = '25x120'
@@ -70,9 +68,10 @@
#
# Generate package list using spack command
#
with open('package_list.rst', 'w') as plist_file:
with open('package_list.html', 'w') as plist_file:
subprocess.Popen(
[spack_root + '/bin/spack', 'list', '--format=rst'], stdout=plist_file)
[spack_root + '/bin/spack', 'list', '--format=html'],
stdout=plist_file)
#
# Find all the `cmd-spack-*` references and add them to a command index
@@ -91,10 +90,21 @@
for cmd in sorted(command_names):
index.write(' * :ref:`%s`\n' % cmd)
#
# Run sphinx-apidoc
sphinx_apidoc(['-T', '-o', '.', '../spack'])
os.remove('modules.rst')
#
# Remove any previous API docs
# Read the Docs doesn't clean up after previous builds
# Without this, the API Docs will never actually update
#
apidoc_args = [
'--force', # Older versions of Sphinx ignore the first argument
'--force', # Overwrite existing files
'--no-toc', # Don't create a table of contents file
'--output-dir=.', # Directory to place all output
]
sphinx_apidoc(apidoc_args + ['../spack'])
sphinx_apidoc(apidoc_args + ['../llnl'])
#
# Exclude everything in spack.__all__ from indexing. All of these
@@ -110,17 +120,31 @@
for line in fileinput.input('spack.rst', inplace=1):
if handling_spack:
if not line.startswith(' :noindex:'):
print ' :noindex: %s' % ' '.join(spack.__all__)
print(' :noindex: %s' % ' '.join(spack.__all__))
handling_spack = False
if line.startswith('.. automodule::'):
handling_spack = (line == '.. automodule:: spack\n')
print line,
sys.stdout.write(line)
# Enable todo items
todo_include_todos = True
#
# Disable duplicate cross-reference warnings.
#
from sphinx.domains.python import PythonDomain
class PatchedPythonDomain(PythonDomain):
def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode):
if 'refspecific' in node:
del node['refspecific']
return super(PatchedPythonDomain, self).resolve_xref(
env, fromdocname, builder, typ, target, node, contnode)
def setup(sphinx):
sphinx.override_domain(PatchedPythonDomain)
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
@@ -130,6 +154,7 @@
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc',
'sphinx.ext.graphviz',
'sphinx.ext.napoleon',
'sphinx.ext.todo',
'sphinxcontrib.programoutput']
@@ -156,16 +181,16 @@
# General information about the project.
project = u'Spack'
copyright = u'2013-2015, Lawrence Livermore National Laboratory.'
copyright = u'2013-2017, Lawrence Livermore National Laboratory.'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '.'.join(spack_version[:2])
version = str(spack.spack_version.up_to(2))
# The full version, including alpha/beta/rc tags.
release = '.'.join(spack_version[:2])
release = str(spack.spack_version.up_to(2))
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -225,7 +250,7 @@
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = '../../../share/spack/logo/spack-logo-white-text-48.png'
html_logo = '../../../share/spack/logo/spack-logo-white-text.svg'
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32

View File

@@ -14,27 +14,6 @@ see the default settings by looking at
These settings can be overridden in ``etc/spack/config.yaml`` or
``~/.spack/config.yaml``. See :ref:`configuration-scopes` for details.
.. _config-file-variables:
------------------------------
Config file variables
------------------------------
You may notice some variables prefixed with ``$`` in the settings above.
Spack understands several variables that can be used in values of
configuration parameters. They are:
* ``$spack``: path to the prefix of this spack installation
* ``$tempdir``: default system temporary directory (as specified in
Python's `tempfile.tempdir
<https://docs.python.org/2/library/tempfile.html#tempfile.tempdir>`_
variable.
* ``$user``: name of the current user
Note that, as with shell variables, you can write these as ``$varname``
or with braces to distinguish the variable from surrounding characters:
``${varname}``.
--------------------
``install_tree``
--------------------
@@ -42,6 +21,43 @@ or with braces to distinguish the variable from surrounding characters:
The location where Spack will install packages and their dependencies.
Default is ``$spack/opt/spack``.
---------------------------------------------------
``install_hash_length`` and ``install_path_scheme``
---------------------------------------------------
The default Spack installation path can be very long and can create
problems for scripts with hardcoded shebangs. There are two parameters
to help with that. Firstly, the ``install_hash_length`` parameter can
set the length of the hash in the installation path from 1 to 32. The
default path uses the full 32 characters.
Secondly, it is
also possible to modify the entire installation scheme. By default
Spack uses
``${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}``
where the tokens that are available for use in this directive are the
same as those understood by the ``Spec.format`` method. Using this parameter it
is possible to use a different package layout or reduce the depth of
the installation paths. For example
.. code-block:: yaml
config:
install_path_scheme: '${PACKAGE}/${VERSION}/${HASH:7}'
would install packages into sub-directories using only the package
name, version and a hash length of 7 characters.
When using either parameter to set the hash length it only affects the
representation of the hash in the installation directory. You
should be aware that the smaller the hash length the more likely
naming conflicts will occur. These parameters are independent of those
used to configure module names.
.. warning:: Modifying the installation hash length or path scheme after
packages have been installed will prevent Spack from being
able to find the old installation directories.
--------------------
``module_roots``
--------------------
@@ -62,8 +78,8 @@ See :ref:`modules` for details.
``build_stage``
--------------------
Spack is designed to run out of a user home directories, and on many
systems the home directory a (slow) network filesystem. On most systems,
Spack is designed to run out of a user home directory, and on many
systems the home directory is a (slow) network filesystem. On most systems,
building in a temporary filesystem results in faster builds than building
in the home directory. Usually, there is also more space available in
the temporary location than in the home directory. So, Spack tries to
@@ -85,12 +101,12 @@ See :ref:`config-file-variables` for more on ``$tempdir`` and ``$spack``.
When Spack builds a package, it creates a temporary directory within the
``build_stage``, and it creates a symbolic link to that directory in
``$spack/var/spack/stage``. This is used totrack the stage.
``$spack/var/spack/stage``. This is used to track the stage.
After a package is successfully installed, Spack deletes the temporary
directory it used to build. Unsuccessful builds are not deleted, but you
can manually purge them with :ref:`spack purge --stage
<cmd-spack-purge>`.
can manually purge them with :ref:`spack clean --stage
<cmd-spack-clean>`.
.. note::
@@ -105,8 +121,8 @@ can manually purge them with :ref:`spack purge --stage
Location to cache downloaded tarballs and repositories. By default these
are stored in ``$spack/var/spack/cache``. These are stored indefinitely
by default. Can be purged with :ref:`spack purge --downloads
<cmd-spack-purge>`.
by default. Can be purged with :ref:`spack clean --downloads
<cmd-spack-clean>`.
--------------------
``misc_cache``
@@ -114,7 +130,7 @@ by default. Can be purged with :ref:`spack purge --downloads
Temporary directory to store long-lived cache files, such as indices of
packages available in repositories. Defaults to ``~/.spack/cache``. Can
be purged with :ref:`spack purge --misc-cache <cmd-spack-purge>`.
be purged with :ref:`spack clean --misc-cache <cmd-spack-clean>`.
--------------------
``verify_ssl``
@@ -143,7 +159,24 @@ the way packages build. This includes ``LD_LIBRARY_PATH``, ``CPATH``,
``LIBRARY_PATH``, ``DYLD_LIBRARY_PATH``, and others.
By default, builds are ``clean``, but on some machines, compilers and
other tools may need custom ``LD_LIBRARY_PATH`` setings to run. You can
other tools may need custom ``LD_LIBRARY_PATH`` settings to run. You can
set ``dirty`` to ``true`` to skip the cleaning step and make all builds
"dirty" by default. Be aware that this will reduce the reproducibility
of builds.
--------------
``build_jobs``
--------------
Unless overridden in a package or on the command line, Spack builds all
packages in parallel. For a build system that uses Makefiles, this means
running ``make -j<build_jobs>``, where ``build_jobs`` is the number of
threads to use.
The default parallelism is equal to the number of cores on your machine.
If you work on a shared login node or have a strict ulimit, it may be
necessary to set the default to a lower value. By setting ``build_jobs``
to 4, for example, commands like ``spack install`` will run ``make -j4``
instead of hogging every core.
To build all software in serial, set ``build_jobs`` to 1.

View File

@@ -45,20 +45,27 @@ Configuration Scopes
-------------------------
Spack pulls configuration data from files in several directories. There
are three configuration scopes. From lowest to highest:
are four configuration scopes. From lowest to highest:
1. **defaults**: Stored in ``$(prefix)/etc/spack/defaults/``. These are
#. **defaults**: Stored in ``$(prefix)/etc/spack/defaults/``. These are
the "factory" settings. Users should generally not modify the settings
here, but should override them in other configuration scopes. The
defaults here will change from version to version of Spack.
2. **site**: Stored in ``$(prefix)/etc/spack/``. Settings here affect
#. **system**: Stored in ``/etc/spack``. These are settings for this
machine, or for all machines on which this file system is
mounted. The site scope can be used for settings idiosyncratic to a
particular machine, such as the locations of compilers or external
packages. These settings are presumably controlled by someone with
root access on the machine.
#. **site**: Stored in ``$(prefix)/etc/spack/``. Settings here affect
only *this instance* of Spack, and they override defaults. The site
scope can can be used for per-project settings (one spack instance per
project) or for site-wide settings on a multi-user machine (e.g., for
a common spack instance).
3. **user**: Stored in the home directory: ``~/.spack/``. These settings
#. **user**: Stored in the home directory: ``~/.spack/``. These settings
affect all instances of Spack and take the highest precedence.
Each configuration directory may contain several configuration files,
@@ -78,22 +85,25 @@ Platform-specific scopes
-------------------------
For each scope above, there can *also* be platform-specific settings.
For example, on Blue Gene/Q machines, Spack needs to know the location of
cross-compilers for the compute nodes. This configuration is in
``etc/spack/defaults/bgq/compilers.yaml``. It will take precedence over
settings in the ``defaults`` scope, but can still be overridden by
settings in ``site``, ``site/bgq``, ``user``, or ``user/bgq``. So, the
full scope precedence is:
For example, on Blue Gene/Q machines, Spack needs to know the location
of cross-compilers for the compute nodes. This configuration is in
``etc/spack/defaults/bgq/compilers.yaml``. It will take precedence
over settings in the ``defaults`` scope, but can still be overridden
by settings in ``system``, ``system/bgq``, ``site``, ``site/bgq``,
``user``, or ``user/bgq``. So, the full scope precedence is:
1. ``defaults``
2. ``defaults/<platform>``
3. ``site``
4. ``site/<platform>``
5. ``user``
6. ``user/<platform>``
3. ``system``
4. ``system/<platform>``
5. ``site``
6. ``site/<platform>``
7. ``user``
8. ``user/<platform>``
You can get the name to use for ``<platform>`` by running ``spack arch
--platform``.
--platform``. The system config scope has a ``<platform>`` section for
sites at which ``/etc`` is mounted on multiple heterogeneous machines.
-------------------------
Scope precedence
@@ -251,3 +261,52 @@ The merged configuration would look like this:
- /lustre-scratch/$user
- ~/mystage
$ _
.. _config-file-variables:
------------------------------
Config file variables
------------------------------
Spack understands several variables which can be used in config file paths
where ever they appear. There are three sets of these variables, Spack specific
variables, environment variables, and user path variables. Spack specific
variables and environment variables both are indicated by prefixing the variable
name with ``$``. User path variables are indicated at the start of the path with
``~`` or ``~user``. Let's discuss each in turn.
^^^^^^^^^^^^^^^^^^^^^^^^
Spack Specific Variables
^^^^^^^^^^^^^^^^^^^^^^^^
Spack understands several special variables. These are:
* ``$spack``: path to the prefix of this spack installation
* ``$tempdir``: default system temporary directory (as specified in
Python's `tempfile.tempdir
<https://docs.python.org/2/library/tempfile.html#tempfile.tempdir>`_
variable.
* ``$user``: name of the current user
Note that, as with shell variables, you can write these as ``$varname``
or with braces to distinguish the variable from surrounding characters:
``${varname}``. Their names are also case insensitive meaning that ``$SPACK``
works just as well as ``$spack``. These special variables are also
substituted first, so any environment variables with the same name will not
be used.
^^^^^^^^^^^^^^^^^^^^^
Environment Variables
^^^^^^^^^^^^^^^^^^^^^
Spack then uses ``os.path.expandvars`` to expand any remaining environment
variables.
^^^^^^^^^^^^^^
User Variables
^^^^^^^^^^^^^^
Spack also uses the ``os.path.expanduser`` function on the path to expand
any user tilde paths such as ``~`` or ``~user``. These tilde paths must appear
at the beginning of the path or ``os.path.expanduser`` will not properly
expand them.

View File

@@ -26,21 +26,38 @@ Spack uses a rough approximation of the `Git Flow <http://nvie.com/posts/a-succe
branching model. The develop branch contains the latest contributions, and
master is always tagged and points to the latest stable release. Therefore, when
you send your request, make ``develop`` the destination branch on the
`Spack repository <https://github.com/LLNL/spack>`_.
`Spack repository <https://github.com/spack/spack>`_.
----------------------
Continuous Integration
----------------------
Spack uses `Travis CI <https://travis-ci.org/LLNL/spack>`_ for Continuous Integration
Spack uses `Travis CI <https://travis-ci.org/spack/spack>`_ for Continuous Integration
testing. This means that every time you submit a pull request, a series of tests will
be run to make sure you didn't accidentally introduce any bugs into Spack. Your PR
will not be accepted until it passes all of these tests. While you can certainly wait
be run to make sure you didn't accidentally introduce any bugs into Spack. **Your PR
will not be accepted until it passes all of these tests.** While you can certainly wait
for the results of these tests after submitting a PR, we recommend that you run them
locally to speed up the review process.
.. note::
Oftentimes, Travis will fail for reasons other than a problem with your PR.
For example, apt-get, pip, or homebrew will fail to download one of the
dependencies for the test suite, or a transient bug will cause the unit tests
to timeout. If Travis fails, click the "Details" link and click on the test(s)
that is failing. If it doesn't look like it is failing for reasons related to
your PR, you have two options. If you have write permissions for the Spack
repository, you should see a "Restart job" button on the right-hand side. If
not, you can close and reopen your PR to rerun all of the tests. If the same
test keeps failing, there may be a problem with your PR. If you notice that
every recent PR is failing with the same error message, it may be that Travis
is down or one of Spack's dependencies put out a new release that is causing
problems. If this is the case, please file an issue.
If you take a look in ``$SPACK_ROOT/.travis.yml``, you'll notice that we test
against Python 2.6 and 2.7. We currently perform 3 types of tests:
against Python 2.6, 2.7, and 3.3-3.6 on both macOS and Linux. We currently
perform 3 types of tests:
^^^^^^^^^^
Unit Tests
@@ -75,7 +92,10 @@ This allows you to develop iteratively: make a change, test that change, make
another change, test that change, etc. To get a list of all available unit
tests, run:
.. command-output:: spack test --collect-only
.. command-output:: spack test --list
A more detailed list of available unit tests can be found by running
``spack test --long-list``.
Unit tests are crucial to making sure bugs aren't introduced into Spack. If you
are modifying core Spack libraries or adding new functionality, please consider
@@ -84,7 +104,7 @@ adding new unit tests or strengthening existing tests.
.. note::
There is also a ``run-unit-tests`` script in ``share/spack/qa`` that
runs the unit tests. Afterwards, it reports back to Coverage with the
runs the unit tests. Afterwards, it reports back to Codecov with the
percentage of Spack that is covered by unit tests. This script is
designed for Travis CI. If you want to run the unit tests yourself, we
suggest you use ``spack test``.
@@ -121,7 +141,7 @@ command:
"extends" in ``package.py`` files.
More approved flake8 exemptions can be found
`here <https://github.com/LLNL/spack/blob/develop/.flake8>`_.
`here <https://github.com/spack/spack/blob/develop/.flake8>`_.
If all is well, you'll see something like this:
@@ -151,20 +171,22 @@ However, if you aren't compliant with PEP 8, flake8 will complain:
Most of the error messages are straightforward, but if you don't understand what
they mean, just ask questions about them when you submit your PR. The line numbers
will change if you add or delete lines, so simply run ``run-flake8-tests`` again
will change if you add or delete lines, so simply run ``spack flake8`` again
to update them.
.. tip::
Try fixing flake8 errors in reverse order. This eliminates the need for
multiple runs of ``flake8`` just to re-compute line numbers and makes it
much easier to fix errors directly off of the Travis output.
multiple runs of ``spack flake8`` just to re-compute line numbers and
makes it much easier to fix errors directly off of the Travis output.
.. warning::
Flake8 requires setuptools in order to run. If you installed ``py-flake8``
with Spack, make sure to add ``py-setuptools`` to your ``PYTHONPATH``.
Otherwise, you will get an error message like:
The easiest way to do this is to run ``spack activate py-flake8`` so that
all of the dependencies are symlinked to a central location. If you see an
error message like:
.. code-block:: console
@@ -173,6 +195,8 @@ to update them.
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
that means Flake8 couldn't find setuptools in your ``PYTHONPATH``.
^^^^^^^^^^^^^^^^^^^
Documentation Tests
^^^^^^^^^^^^^^^^^^^
@@ -186,6 +210,7 @@ Building the documentation requires several dependencies, all of which can be
installed with Spack:
* sphinx
* sphinxcontrib-programoutput
* graphviz
* git
* mercurial
@@ -193,20 +218,26 @@ installed with Spack:
.. warning::
Sphinx has `several required dependencies <https://github.com/LLNL/spack/blob/develop/var/spack/repos/builtin/packages/py-sphinx/package.py>`_.
Sphinx has `several required dependencies <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/py-sphinx/package.py>`_.
If you installed ``py-sphinx`` with Spack, make sure to add all of these
dependencies to your ``PYTHONPATH``. The easiest way to do this is to run
``spack activate py-sphinx`` so that all of the dependencies are symlinked
to a central location. If you see an error message like:
dependencies to your ``PYTHONPATH``. The easiest way to do this is to run:
.. code-block:: console
Traceback (most recent call last):
File: "/usr/bin/flake8", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
$ spack activate py-sphinx
$ spack activate py-sphinxcontrib-programoutput
that means Sphinx couldn't find setuptools in your ``PYTHONPATH``.
so that all of the dependencies are symlinked to a central location.
If you see an error message like:
.. code-block:: console
Extension error:
Could not import extension sphinxcontrib.programoutput (exception: No module named sphinxcontrib.programoutput)
make: *** [html] Error 1
that means Sphinx couldn't find ``py-sphinxcontrib-programoutput`` in your
``PYTHONPATH``.
Once all of the dependencies are installed, you can try building the documentation:
@@ -221,11 +252,11 @@ your PR is accepted.
.. note::
There is also a ``run-doc-tests`` script in the Quality Assurance directory.
The only difference between running this script and running ``make`` by hand
is that the script will exit immediately if it encounters an error or warning.
This is necessary for Travis CI. If you made a lot of documentation tests, it
is much quicker to run ``make`` by hand so that you can see all of the warnings
There is also a ``run-doc-tests`` script in ``share/spack/qa``. The only
difference between running this script and running ``make`` by hand is that
the script will exit immediately if it encounters an error or warning. This
is necessary for Travis CI. If you made a lot of documentation changes, it is
much quicker to run ``make`` by hand so that you can see all of the warnings
at once.
If you are editing the documentation, you should obviously be running the
@@ -273,6 +304,37 @@ Documentation changes can result in much more obfuscated warning messages.
If you don't understand what they mean, feel free to ask when you submit
your PR.
--------
Coverage
--------
Spack uses `Codecov <https://codecov.io/>`_ to generate and report unit test
coverage. This helps us tell what percentage of lines of code in Spack are
covered by unit tests. Although code covered by unit tests can still contain
bugs, it is much less error prone than code that is not covered by unit tests.
Codecov provides `browser extensions <https://github.com/codecov/browser-extension>`_
for Google Chrome, Firefox, and Opera. These extensions integrate with GitHub
and allow you to see coverage line-by-line when viewing the Spack repository.
If you are new to Spack, a great way to get started is to write unit tests to
increase coverage!
Unlike with Travis, Codecov tests are not required to pass in order for your
PR to be merged. If you modify core Spack libraries, we would greatly
appreciate unit tests that cover these changed lines. Otherwise, we have no
way of knowing whether or not your changes introduce a bug. If you make
substantial changes to the core, we may request unit tests to increase coverage.
.. note::
If the only files you modified are package files, we do not care about
coverage on your PR. You may notice that the Codecov tests fail even though
you didn't modify any core files. This means that Spack's overall coverage
has increased since you branched off of develop. This is a good thing!
If you really want to get the Codecov tests to pass, you can rebase off of
the latest develop, but again, this is not required.
-------------
Git Workflows
-------------

View File

@@ -300,6 +300,46 @@ Stage objects
Writing commands
----------------
Adding a new command to Spack is easy. Simply add a ``<name>.py`` file to
``lib/spack/spack/cmd/``, where ``<name>`` is the name of the subcommand.
At the bare minimum, two functions are required in this file:
^^^^^^^^^^^^^^^^^^
``setup_parser()``
^^^^^^^^^^^^^^^^^^
Unless your command doesn't accept any arguments, a ``setup_parser()``
function is required to define what arguments and flags your command takes.
See the `Argparse documentation <https://docs.python.org/2.7/library/argparse.html>`_
for more details on how to add arguments.
Some commands have a set of subcommands, like ``spack compiler find`` or
``spack module refresh``. You can add subparsers to your parser to handle
this. Check out ``spack edit --command compiler`` for an example of this.
A lot of commands take the same arguments and flags. These arguments should
be defined in ``lib/spack/spack/cmd/common/arguments.py`` so that they don't
need to be redefined in multiple commands.
^^^^^^^^^^^^
``<name>()``
^^^^^^^^^^^^
In order to run your command, Spack searches for a function with the same
name as your command in ``<name>.py``. This is the main method for your
command, and can call other helper methods to handle common tasks.
Remember, before adding a new command, think to yourself whether or not this
new command is actually necessary. Sometimes, the functionality you desire
can be added to an existing command. Also remember to add unit tests for
your command. If it isn't used very frequently, changes to the rest of
Spack can cause your command to break without sufficient unit tests to
prevent this from happening.
Whenever you add/remove/rename a command or flags for an existing command,
make sure to update Spack's `Bash tab completion script
<https://github.com/adamjstewart/spack/blob/develop/share/spack/spack-completion.bash>`_.
----------
Unit tests
----------
@@ -312,14 +352,121 @@ Unit testing
Developer commands
------------------
.. _cmd-spack-doc:
^^^^^^^^^^^^^
``spack doc``
^^^^^^^^^^^^^
.. _cmd-spack-test:
^^^^^^^^^^^^^^
``spack test``
^^^^^^^^^^^^^^
.. _cmd-spack-python:
^^^^^^^^^^^^^^^^
``spack python``
^^^^^^^^^^^^^^^^
``spack python`` is a command that lets you import and debug things as if
you were in a Spack interactive shell. Without any arguments, it is similar
to a normal interactive Python shell, except you can import spack and any
other Spack modules:
.. code-block:: console
$ spack python
Spack version 0.10.0
Python 2.7.13, Linux x86_64
>>> from spack.version import Version
>>> a = Version('1.2.3')
>>> b = Version('1_2_3')
>>> a == b
True
>>> c = Version('1.2.3b')
>>> c > a
True
>>>
You can also run a single command:
.. code-block:: console
$ spack python -c 'import distro; distro.linux_distribution()'
('Fedora', '25', 'Workstation Edition')
or a file:
.. code-block:: console
$ spack python ~/test_fetching.py
just like you would with the normal ``python`` command.
.. _cmd-spack-url:
^^^^^^^^^^^^^
``spack url``
^^^^^^^^^^^^^
A package containing a single URL can be used to download several different
versions of the package. If you've ever wondered how this works, all of the
magic is in :mod:`spack.url`. This module contains methods for extracting
the name and version of a package from its URL. The name is used by
``spack create`` to guess the name of the package. By determining the version
from the URL, Spack can replace it with other versions to determine where to
download them from.
The regular expressions in ``parse_name_offset`` and ``parse_version_offset``
are used to extract the name and version, but they aren't perfect. In order
to debug Spack's URL parsing support, the ``spack url`` command can be used.
"""""""""""""""""""
``spack url parse``
"""""""""""""""""""
If you need to debug a single URL, you can use the following command:
.. command-output:: spack url parse http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz
You'll notice that the name and version of this URL are correctly detected,
and you can even see which regular expressions it was matched to. However,
you'll notice that when it substitutes the version number in, it doesn't
replace the ``2.2`` with ``9.9`` where we would expect ``9.9.9b`` to live.
This particular package may require a ``list_url`` or ``url_for_version``
function.
This command also accepts a ``--spider`` flag. If provided, Spack searches
for other versions of the package and prints the matching URLs.
""""""""""""""""""
``spack url list``
""""""""""""""""""
This command lists every URL in every package in Spack. If given the
``--color`` and ``--extrapolation`` flags, it also colors the part of
the string that it detected to be the name and version. The
``--incorrect-name`` and ``--incorrect-version`` flags can be used to
print URLs that were not being parsed correctly.
"""""""""""""""""""""
``spack url summary``
"""""""""""""""""""""
This command attempts to parse every URL for every package in Spack
and prints a summary of how many of them are being correctly parsed.
It also prints a histogram showing which regular expressions are being
matched and how frequently:
.. command-output:: spack url summary
This command is essential for anyone adding or changing the regular
expressions that parse names and versions. By running this command
before and after the change, you can make sure that your regular
expression fixes more packages than it breaks.
---------
Profiling
---------

View File

@@ -1,25 +0,0 @@
Copyright (c) 2010, 2011, 2012 Sebastian Wiesner <lunaryorn@googlemail.com>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,9 +0,0 @@
# -*- coding: utf-8 -*-
"""
sphinxcontrib
~~~~~~~~~~~~~
Contains 3rd party Sphinx extensions.
"""
__import__('pkg_resources').declare_namespace(__name__)

View File

@@ -1,263 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2010, 2011, 2012, Sebastian Wiesner <lunaryorn@gmail.com>
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
"""
sphinxcontrib.programoutput
===========================
This extension provides a directive to include the output of commands as
literal block while building the docs.
.. moduleauthor:: Sebastian Wiesner <lunaryorn@gmail.com>
"""
from __future__ import (print_function, division, unicode_literals,
absolute_import)
import sys
import os
import shlex
from subprocess import Popen, PIPE, STDOUT
from collections import defaultdict, namedtuple
from docutils import nodes
from docutils.parsers import rst
from docutils.parsers.rst.directives import flag, unchanged, nonnegative_int
__version__ = '0.9'
class program_output(nodes.Element):
pass
def _slice(value):
parts = [int(v.strip()) for v in value.split(',')]
if len(parts) > 2:
raise ValueError('too many slice parts')
return tuple((parts + [None] * 2)[:2])
class ProgramOutputDirective(rst.Directive):
has_content = False
final_argument_whitespace = True
required_arguments = 1
option_spec = dict(shell=flag, prompt=flag, nostderr=flag,
ellipsis=_slice, extraargs=unchanged,
returncode=nonnegative_int, cwd=unchanged)
def run(self):
env = self.state.document.settings.env
node = program_output()
node.line = self.lineno
node['command'] = self.arguments[0]
if self.name == 'command-output':
node['show_prompt'] = True
else:
node['show_prompt'] = 'prompt' in self.options
node['hide_standard_error'] = 'nostderr' in self.options
node['extraargs'] = self.options.get('extraargs', '')
_, cwd = env.relfn2path(self.options.get('cwd', '/'))
node['working_directory'] = cwd
node['use_shell'] = 'shell' in self.options
node['returncode'] = self.options.get('returncode', 0)
if 'ellipsis' in self.options:
node['strip_lines'] = self.options['ellipsis']
return [node]
_Command = namedtuple(
'Command', 'command shell hide_standard_error working_directory')
class Command(_Command):
"""
A command to be executed.
"""
def __new__(cls, command, shell=False, hide_standard_error=False,
working_directory='/'):
if isinstance(command, list):
command = tuple(command)
# `chdir()` resolves symlinks, so we need to resolve them too for
# caching to make sure that different symlinks to the same directory
# don't result in different cache keys. Also normalize paths to make
# sure that identical paths are also equal as strings.
working_directory = os.path.normpath(os.path.realpath(
working_directory))
return _Command.__new__(cls, command, shell, hide_standard_error,
working_directory)
@classmethod
def from_program_output_node(cls, node):
"""
Create a command from a :class:`program_output` node.
"""
extraargs = node.get('extraargs', '')
command = (node['command'] + ' ' + extraargs).strip()
return cls(command, node['use_shell'],
node['hide_standard_error'], node['working_directory'])
def execute(self):
"""
Execute this command.
Return the :class:`~subprocess.Popen` object representing the running
command.
"""
if self.shell:
if sys.version_info[0] < 3 and isinstance(self.command, unicode):
command = self.command.encode(sys.getfilesystemencoding())
else:
command = self.command
else:
if sys.version_info[0] < 3 and isinstance(self.command, unicode):
command = shlex.split(self.command.encode(
sys.getfilesystemencoding()))
elif isinstance(self.command, str):
command = shlex.split(self.command)
else:
command = self.command
return Popen(command, shell=self.shell, stdout=PIPE,
stderr=PIPE if self.hide_standard_error else STDOUT,
cwd=self.working_directory)
def get_output(self):
"""
Get the output of this command.
Return a tuple ``(returncode, output)``. ``returncode`` is the
integral return code of the process, ``output`` is the output as
unicode string, with final trailing spaces and new lines stripped.
"""
process = self.execute()
output = process.communicate()[0].decode(
sys.getfilesystemencoding(), 'replace').rstrip()
return process.returncode, output
def __str__(self):
if isinstance(self.command, tuple):
return repr(list(self.command))
return repr(self.command)
class ProgramOutputCache(defaultdict):
"""
Execute command and cache their output.
This class is a mapping. Its keys are :class:`Command` objects represeting
command invocations. Its values are tuples of the form ``(returncode,
output)``, where ``returncode`` is the integral return code of the command,
and ``output`` is the output as unicode string.
The first time, a key is retrieved from this object, the command is
invoked, and its result is cached. Subsequent access to the same key
returns the cached value.
"""
def __missing__(self, command):
"""
Called, if a command was not found in the cache.
``command`` is an instance of :class:`Command`.
"""
result = command.get_output()
self[command] = result
return result
def run_programs(app, doctree):
"""
Execute all programs represented by ``program_output`` nodes in
``doctree``. Each ``program_output`` node in ``doctree`` is then
replaced with a node, that represents the output of this program.
The program output is retrieved from the cache in
``app.env.programoutput_cache``.
"""
if app.config.programoutput_use_ansi:
# enable ANSI support, if requested by config
from sphinxcontrib.ansi import ansi_literal_block
node_class = ansi_literal_block
else:
node_class = nodes.literal_block
cache = app.env.programoutput_cache
for node in doctree.traverse(program_output):
command = Command.from_program_output_node(node)
try:
returncode, output = cache[command]
except EnvironmentError as error:
error_message = 'Command {0} failed: {1}'.format(command, error)
error_node = doctree.reporter.error(error_message, base_node=node)
node.replace_self(error_node)
else:
if returncode != node['returncode']:
app.warn('Unexpected return code {0} from command {1}'.format(
returncode, command))
# replace lines with ..., if ellipsis is specified
if 'strip_lines' in node:
lines = output.splitlines()
start, stop = node['strip_lines']
lines[start:stop] = ['...']
output = '\n'.join(lines)
if node['show_prompt']:
tmpl = app.config.programoutput_prompt_template
output = tmpl.format(command=node['command'], output=output,
returncode=returncode)
new_node = node_class(output, output)
new_node['language'] = 'text'
node.replace_self(new_node)
def init_cache(app):
"""
Initialize the cache for program output at
``app.env.programoutput_cache``, if not already present (e.g. being
loaded from a pickled environment).
The cache is of type :class:`ProgramOutputCache`.
"""
if not hasattr(app.env, 'programoutput_cache'):
app.env.programoutput_cache = ProgramOutputCache()
def setup(app):
app.add_config_value('programoutput_use_ansi', False, 'env')
app.add_config_value('programoutput_prompt_template',
'$ {command}\n{output}', 'env')
app.add_directive('program-output', ProgramOutputDirective)
app.add_directive('command-output', ProgramOutputDirective)
app.connect(str('builder-inited'), init_cache)
app.connect(str('doctree-read'), run_programs)

View File

@@ -11,9 +11,10 @@ Prerequisites
Spack has the following minimum requirements, which must be installed
before Spack is run:
1. Python 2.6 or 2.7
1. Python 2 (2.6 or 2.7) or 3 (3.3 - 3.6)
2. A C/C++ compiler
3. The ``git`` and ``curl`` commands.
4. If using the ``gpg`` subcommand, ``gnupg2`` is required.
These requirements can be easily installed on most modern Linux systems;
on Macintosh, XCode is required. Spack is designed to run on HPC
@@ -26,11 +27,11 @@ Installation
------------
Getting Spack is easy. You can clone it from the `github repository
<https://github.com/llnl/spack>`_ using this command:
<https://github.com/spack/spack>`_ using this command:
.. code-block:: console
$ git clone https://github.com/llnl/spack.git
$ git clone https://github.com/spack/spack.git
This will create a directory called ``spack``.
@@ -51,7 +52,7 @@ For a richer experience, use Spack's shell support:
.. code-block:: console
# For bash users
# For bash/zsh users
$ export SPACK_ROOT=/path/to/spack
$ . $SPACK_ROOT/share/spack/setup-env.sh
@@ -59,10 +60,15 @@ For a richer experience, use Spack's shell support:
$ setenv SPACK_ROOT /path/to/spack
$ source $SPACK_ROOT/share/spack/setup-env.csh
This automatically adds Spack to your ``PATH`` and allows the ``spack``
command to :ref:`load environment modules <shell-support>` and execute
command to be used to execute spack :ref:`commands <shell-support>` and
:ref:`useful packaging commands <packaging-shell-support>`.
If :ref:`environment-modules or dotkit <InstallEnvironmentModules>` is
installed and available, the ``spack`` command can also load and unload
:ref:`modules <modules>`.
^^^^^^^^^^^^^^^^^
Clean Environment
^^^^^^^^^^^^^^^^^
@@ -85,30 +91,20 @@ Check Installation
With Spack installed, you should be able to run some basic Spack
commands. For example:
.. code-block:: console
.. command-output:: spack spec netcdf
$ spack spec netcdf
...
netcdf@4.4.1%gcc@5.3.0~hdf4+mpi arch=linux-SuSE11-x86_64
^curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
^hdf5@1.10.0-patch1%gcc@5.3.0+cxx~debug+fortran+mpi+shared~szip~threadsafe arch=linux-SuSE11-x86_64
^openmpi@1.10.1%gcc@5.3.0~mxm~pmi~psm~psm2~slurm~sqlite3~thread_multiple~tm+verbs+vt arch=linux-SuSE11-x86_64
^m4@1.4.17%gcc@5.3.0+sigsegv arch=linux-SuSE11-x86_64
^libsigsegv@2.10%gcc@5.3.0 arch=linux-SuSE11-x86_64
^^^^^^^^^^^^^^^^^^^^^^^^^^
Optional: Alternate Prefix
^^^^^^^^^^^^^^^^^^^^^^^^^^
You may want to run Spack out of a prefix other than the git repository
you cloned. The ``spack bootstrap`` command provides this
you cloned. The ``spack clone`` command provides this
functionality. To install spack in a new directory, simply type:
.. code-block:: console
$ spack bootstrap /my/favorite/prefix
$ spack clone /my/favorite/prefix
This will install a new spack script in ``/my/favorite/prefix/bin``,
which you can use just like you would the regular spack script. Each
@@ -225,7 +221,7 @@ If you want to see specifics on a particular compiler, you can run
f77 = /usr/local/bin/ifort-15.0.090
fc = /usr/local/bin/ifort-15.0.090
modules = []
operating system = centos6
operating_system = centos6
...
This shows which C, C++, and Fortran compilers were detected by Spack.
@@ -325,19 +321,6 @@ by adding the following to your ``packages.yaml`` file:
compiler: [gcc@4.9.3]
.. tip::
If you are building your own compiler, some users prefer to have a
Spack instance just for that. For example, create a new Spack in
``~/spack-tools`` and then run ``~/spack-tools/bin/spack install
gcc@4.9.3``. Once the compiler is built, don't build anything
more in that Spack instance; instead, create a new "real" Spack
instance, configure Spack to use the compiler you've just built,
and then build your application software in the new Spack
instance. Following this tip makes it easy to delete all your
Spack packages *except* the compiler.
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Compilers Requiring Modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -415,14 +398,62 @@ provides no Fortran compilers. The user is therefore forced to use a
mixed toolchain: XCode-provided Clang for C/C++ and GNU ``gfortran`` for
Fortran.
#. You need to make sure that command-line tools are installed. To that
end run ``$ xcode-select --install``.
#. You need to make sure that Xcode is installed. Run the following command:
#. Run ``$ spack compiler find`` to locate Clang.
.. code-block:: console
$ xcode-select --install
If the Xcode command-line tools are already installed, you will see an
error message:
.. code-block:: none
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
#. For most packages, the Xcode command-line tools are sufficient. However,
some packages like ``qt`` require the full Xcode suite. You can check
to see which you have installed by running:
.. code-block:: console
$ xcode-select -p
If the output is:
.. code-block:: none
/Applications/Xcode.app/Contents/Developer
you already have the full Xcode suite installed. If the output is:
.. code-block:: none
/Library/Developer/CommandLineTools
you only have the command-line tools installed. The full Xcode suite can
be installed through the App Store. Make sure you launch the Xcode
application and accept the license agreement before using Spack.
It may ask you to install additional components. Alternatively, the license
can be accepted through the command line:
.. code-block:: console
$ sudo xcodebuild -license accept
Note: the flag is ``-license``, not ``--license``.
#. Run ``spack compiler find`` to locate Clang.
#. There are different ways to get ``gfortran`` on macOS. For example, you can
install GCC with Spack (``$ spack install gcc``) or with Homebrew
(``$ brew install gcc``).
install GCC with Spack (``spack install gcc``) or with Homebrew
(``brew install gcc``).
#. The only thing left to do is to edit ``~/.spack/compilers.yaml`` to provide
the path to ``gfortran``:
@@ -438,7 +469,7 @@ Fortran.
fc: /path/to/bin/gfortran
If you used Spack to install GCC, you can get the installation prefix by
``$ spack location -i gcc`` (this will only work if you have a single version
``spack location -i gcc`` (this will only work if you have a single version
of GCC installed). Whereas for Homebrew, GCC is installed in
``/usr/local/Cellar/gcc/x.y.z``.
@@ -650,6 +681,7 @@ Or it can be set permanently in your ``compilers.yaml``:
fflags: -mismatch
spec: nag@6.1
---------------
System Packages
---------------
@@ -712,19 +744,22 @@ example:
$ curl -O https://github.com/ImageMagick/ImageMagick/archive/7.0.2-7.tar.gz
The recommended way to tell Spack to use the system-supplied OpenSSL is
to add the following to ``packages.yaml``. Note that the ``@system``
"version" means "I don't care what version it is, just use what is
there." This is reasonable for OpenSSL, which has a stable API.
To tell Spack to use the system-supplied OpenSSL, first determine what
version you have:
.. code-block:: console
$ openssl version
OpenSSL 1.0.2g 1 Mar 2016
Then add the following to ``~/.spack/packages.yaml``:
.. code-block:: yaml
packages:
openssl:
paths:
openssl@system: /usr
version: [system]
openssl@1.0.2g: /usr
buildable: False
@@ -740,8 +775,7 @@ to add the following to ``packages.yaml``:
packages:
netlib-lapack:
paths:
netlib-lapack@system: /usr
version: [system]
netlib-lapack@3.6.1: /usr
buildable: False
all:
providers:
@@ -750,11 +784,9 @@ to add the following to ``packages.yaml``:
.. note::
The ``@system`` "version" means "I don't care what version it is,
just use what is there." Above we pretend that the system-provided
Blas/Lapack is ``netlib-lapack`` only because it is the only BLAS / LAPACK
provider which use standard names for libraries (as opposed to, for example,
`libopenblas.so`).
Above we pretend that the system-provided BLAS / LAPACK is ``netlib-lapack``
only because it is the only BLAS / LAPACK provider which use standard names
for libraries (as opposed to, for example, ``libopenblas.so``).
Although we specify external package in ``/usr``, Spack is smart enough not
to add ``/usr/lib`` to RPATHs, where it could cause unrelated system
@@ -784,7 +816,7 @@ This problem is related to OpenSSL, and in some cases might be solved
by installing a new version of ``git`` and ``openssl``:
#. Run ``spack install git``
#. Add the output of ``spack module loads git`` to your ``.bahsrc``.
#. Add the output of ``spack module loads git`` to your ``.bashrc``.
If this doesn't work, it is also possible to disable checking of SSL
certificates by using:
@@ -857,6 +889,10 @@ well. They can generally be activated as in the ``curl`` example above;
or some systems might already have an appropriate hand-built
environment module that may be loaded. Either way works.
If you find that you are missing some of these programs, ``spack`` can
build some of them for you with ``spack bootstrap``. Currently supported
programs are ``environment-modules``.
A few notes on specific programs in this list:
""""""""""""""""""""""""""
@@ -890,55 +926,37 @@ Once ``curl`` has been installed, you can similarly install the others.
Environment Modules
"""""""""""""""""""
In order to use Spack's generated environment modules, you must have
installed one of *Environment Modules* or *Lmod*. On many Linux
distributions, this can be installed from the vendor's repository. For
example: ``yum install environment-modules`` (Fedora/RHEL/CentOS). If
your Linux distribution does not have Environment Modules, you can get it
with Spack:
#. Consider using system tcl (as long as your system has Tcl version 8.0 or later):
#) Identify its location using ``which tclsh``
#) Identify its version using ``echo 'puts $tcl_version;exit 0' | tclsh``
#) Add to ``~/.spack/packages.yaml`` and modify as appropriate:
.. code-block:: yaml
packages:
tcl:
paths:
tcl@8.5: /usr
version: [8.5]
buildable: False
#. Install with:
.. code-block:: console
$ spack install environment-modules
#. Activate with the following script (or apply the updates to your
``.bashrc`` file manually):
.. code-block:: sh
TMP=`tempfile`
echo >$TMP
MODULE_HOME=`spack location --install-dir environment-modules`
MODULE_VERSION=`ls -1 $MODULE_HOME/Modules | head -1`
${MODULE_HOME}/Modules/${MODULE_VERSION}/bin/add.modules <$TMP
cp .bashrc $TMP
echo "MODULE_VERSION=${MODULE_VERSION}" > .bashrc
cat $TMP >>.bashrc
This adds to your ``.bashrc`` (or similar) files, enabling Environment
Modules when you log in. Re-load your .bashrc (or log out and in
again), and then test that the ``module`` command is found with:
In order to use Spack's generated module files, you must have
installed ``environment-modules`` or ``lmod``. The simplest way
to get the latest version of either of these tools is installing
it as part of Spack's bootstrap procedure:
.. code-block:: console
$ module avail
$ spack bootstrap
.. warning::
At the moment ``spack bootstrap`` is only able to install ``environment-modules``.
Extending its capabilities to prefer ``lmod`` where possible is in the roadmap,
and likely to happen before the next release.
Alternatively, on many Linux distributions, you can install a pre-built binary
from the vendor's repository. On Fedora/RHEL/CentOS, for example, this can be
done with the command:
.. code-block:: console
$ yum install environment-modules
Once you have the tool installed and available in your path, you can source
Spack's setup file:
.. code-block:: console
$ source share/spack/setup-env.sh
This activates :ref:`shell support <shell-support>` and makes commands like
``spack load`` available for use.
^^^^^^^^^^^^^^^^^
@@ -996,6 +1014,89 @@ written in C/C++/Fortran would need it. A potential workaround is to
load a recent ``binutils`` into your environment and use the ``--dirty``
flag.
-----------
GPG Signing
-----------
.. _cmd-spack-gpg:
^^^^^^^^^^^^^
``spack gpg``
^^^^^^^^^^^^^
Spack has support for signing and verifying packages using GPG keys. A
separate keyring is used for Spack, so any keys available in the user's home
directory are not used.
^^^^^^^^^^^^^^^^^^
``spack gpg init``
^^^^^^^^^^^^^^^^^^
When Spack is first installed, its keyring is empty. Keys stored in
:file:`var/spack/gpg` are the default keys for a Spack installation. These
keys may be imported by running ``spack gpg init``. This will import the
default keys into the keyring as trusted keys.
^^^^^^^^^^^^^
Trusting keys
^^^^^^^^^^^^^
Additional keys may be added to the keyring using
``spack gpg trust <keyfile>``. Once a key is trusted, packages signed by the
owner of they key may be installed.
^^^^^^^^^^^^^
Creating keys
^^^^^^^^^^^^^
You may also create your own key so that you may sign your own packages using
``spack gpg create <name> <email>``. By default, the key has no expiration,
but it may be set with the ``--expires <date>`` flag (see the ``gnupg2``
documentation for accepted date formats). It is also recommended to add a
comment as to the use of the key using the ``--comment <comment>`` flag. The
public half of the key can also be exported for sharing with others so that
they may use packages you have signed using the ``--export <keyfile>`` flag.
Secret keys may also be later exported using the
``spack gpg export <location> [<key>...]`` command.
.. note::
Key creation speed
The creation of a new GPG key requires generating a lot of random numbers.
Depending on the entropy produced on your system, the entire process may
take a long time (even a few minutes). To speed it up you may install
tools like ``rngd``, which is usually available as a package in the host OS.
On e.g. an Ubuntu machine you need to give the following commands:
.. code-block:: console
$ sudo apt-get install rng-tools
$ sudo rngd -r /dev/urandom
before generating the keys.
^^^^^^^^^^^^
Listing keys
^^^^^^^^^^^^
In order to list the keys available in the keyring, the
``spack gpg list`` command will list trusted keys with the ``--trusted`` flag
and keys available for signing using ``--signing``. If you would like to
remove keys from your keyring, ``spack gpg untrust <keyid>``. Key IDs can be
email addresses, names, or (best) fingerprints.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Signing and Verifying Packages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In order to sign a package, ``spack gpg sign <file>`` should be used. By
default, the signature will be written to ``<file>.asc``, but that may be
changed by using the ``--output <file>`` flag. If there is only one signing
key available, it will be used, but if there is more than one, the key to use
must be specified using the ``--key <keyid>`` flag. The ``--clearsign`` flag
may also be used to create a signed file which contains the contents, but it
is not recommended. Signed packages may be verified by using
``spack gpg verify <file>``.
.. _cray-support:
@@ -1091,10 +1192,13 @@ Here's an example of an external configuration for cray modules:
.. code-block:: yaml
packages:
mpi:
mpich:
modules:
mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10: cray-mpich
mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10: cray-mpich
all:
providers:
mpi: [mpich]
This tells Spack that for whatever package that depends on mpi, load the
cray-mpich module into the environment. You can then be able to use whatever
@@ -1111,7 +1215,7 @@ Here is an example of a full packages.yaml used at NERSC
.. code-block:: yaml
packages:
mpi:
mpich:
modules:
mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-mpich
mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge: cray-mpich
@@ -1128,6 +1232,8 @@ Here is an example of a full packages.yaml used at NERSC
buildable: False
all:
compiler: [gcc@5.2.0, intel@16.0.0.109]
providers:
mpi: [mpich]
Here we tell spack that whenever we want to build with gcc use version 5.2.0 or
if we want to build with intel compilers, use version 16.0.0.109. We add a spec

View File

@@ -4,9 +4,13 @@
contain the root `toctree` directive.
===================
Spack Documentation
Spack
===================
.. epigraph::
`These are docs for the Spack package manager. For sphere packing, see` `pyspack <https://pyspack.readthedocs.io>`_.
Spack is a package management tool designed to support multiple
versions and configurations of software on a wide variety of platforms
and environments. It was designed for large supercomputing centers,
@@ -25,12 +29,12 @@ maintain a single file for many different builds of the same package.
See the :doc:`features` for examples and highlights.
Get spack from the `github repository
<https://github.com/llnl/spack>`_ and install your first
<https://github.com/spack/spack>`_ and install your first
package:
.. code-block:: console
$ git clone https://github.com/llnl/spack.git
$ git clone https://github.com/spack/spack.git
$ cd spack/bin
$ ./spack install libelf
@@ -46,7 +50,8 @@ or refer to the full manual below.
getting_started
basic_usage
workflows
tutorial_sc16
tutorial
known_issues
.. toctree::
:maxdepth: 2
@@ -58,6 +63,7 @@ or refer to the full manual below.
mirrors
module_file_support
repositories
binary_caches
command_index
package_list
@@ -68,7 +74,8 @@ or refer to the full manual below.
contribution_guide
packaging_guide
developer_guide
API Docs <spack>
Spack API Docs <spack>
LLNL API Docs <llnl>
==================
Indices and tables

View File

@@ -0,0 +1,90 @@
============
Known Issues
============
This is a list of known bugs in Spack. It provides ways of getting around these
problems if you encounter them.
-----------------------------------------------------------------
Default variants are not taken into account during concretization
-----------------------------------------------------------------
**Status:** Expected to be fixed in the next release
Current concretization algorithm does not take into account default values
of variants when adding extra constraints to the spec via CLI. For example
you may encounter the following error when trying to specify which MPI provider
to use:
.. code-block:: console
$ spack install hdf5 ^openmpi
==> Error: hdf5 does not depend on openmpi
although the hdf5 package contains:
.. code-block:: python
variant('mpi', default=True, description='Enable MPI support')
depends_on('mpi', when='+mpi')
A workaround is to explicitly activate the variant related to the dependency:
.. code-block:: console
$ spack install hdf5+mpi ^openmpi
See https://github.com/spack/spack/issues/397 for further details.
---------------------------------------------------
Variants are not properly forwarded to dependencies
---------------------------------------------------
**Status:** Expected to be fixed in the next release
Sometimes, a variant of a package can also affect how its dependencies are
built. For example, in order to build MPI support for a package, it may
require that its dependencies are also built with MPI support. In the
``package.py``, this looks like:
.. code-block:: python
depends_on('hdf5~mpi', when='~mpi')
depends_on('hdf5+mpi', when='+mpi')
Spack handles this situation properly for *immediate* dependencies, and
builds ``hdf5`` with the same variant you used for the package that
depends on it. However, for *indirect* dependencies (dependencies of
dependencies), Spack does not backtrack up the DAG far enough to handle
this. Users commonly run into this situation when trying to build R with
X11 support:
.. code-block:: console
$ spack install r+X
...
==> Error: Invalid spec: 'cairo@1.14.8%gcc@6.2.1+X arch=linux-fedora25-x86_64 ^bzip2@1.0.6%gcc@6.2.1+shared arch=linux-fedora25-x86_64 ^font-util@1.3.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^fontconfig@2.12.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^freetype@2.7.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^gettext@0.19.8.1%gcc@6.2.1+bzip2+curses+git~libunistring+libxml2+tar+xz arch=linux-fedora25-x86_64 ^glib@2.53.1%gcc@6.2.1~libmount arch=linux-fedora25-x86_64 ^inputproto@2.3.2%gcc@6.2.1 arch=linux-fedora25-x86_64 ^kbproto@1.0.7%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libffi@3.2.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libpng@1.6.29%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libpthread-stubs@0.4%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libx11@1.6.5%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxau@1.0.8%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxcb@1.12%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxdmcp@1.1.2%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxext@1.3.3%gcc@6.2.1 arch=linux-fedora25-x86_64 ^libxml2@2.9.4%gcc@6.2.1~python arch=linux-fedora25-x86_64 ^libxrender@0.9.10%gcc@6.2.1 arch=linux-fedora25-x86_64 ^ncurses@6.0%gcc@6.2.1~symlinks arch=linux-fedora25-x86_64 ^openssl@1.0.2k%gcc@6.2.1 arch=linux-fedora25-x86_64 ^pcre@8.40%gcc@6.2.1+utf arch=linux-fedora25-x86_64 ^pixman@0.34.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^pkg-config@0.29.2%gcc@6.2.1+internal_glib arch=linux-fedora25-x86_64 ^python@2.7.13%gcc@6.2.1+shared~tk~ucs4 arch=linux-fedora25-x86_64 ^readline@7.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^renderproto@0.11.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^sqlite@3.18.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^tar^util-macros@1.19.1%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xcb-proto@1.12%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xextproto@7.3.0%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xproto@7.0.31%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xtrans@1.3.5%gcc@6.2.1 arch=linux-fedora25-x86_64 ^xz@5.2.3%gcc@6.2.1 arch=linux-fedora25-x86_64 ^zlib@1.2.11%gcc@6.2.1+pic+shared arch=linux-fedora25-x86_64'.
Package cairo requires variant ~X, but spec asked for +X
A workaround is to explicitly activate the variants of dependencies as well:
.. code-block:: console
$ spack install r+X ^cairo+X ^pango+X
See https://github.com/spack/spack/issues/267 and
https://github.com/spack/spack/issues/2546 for further details.
----------------------------
``spack setup`` doesn't work
----------------------------
**Status:** Work in progress
Spack provides a ``setup`` command that is useful for the development of
software outside of Spack. Unfortunately, this command no longer works.
See https://github.com/spack/spack/issues/2597 and
https://github.com/spack/spack/issues/2662 for details. This is expected
to be fixed by https://github.com/spack/spack/pull/2664.

View File

@@ -162,7 +162,7 @@ your site.
Once you have a mirror, you need to let spack know about it. This is
relatively simple. First, figure out the URL for the mirror. If it's
a file, you can use a file URL like this one:
a directory, you can use a file URL like this one:
.. code-block:: none
@@ -237,7 +237,7 @@ as other Spack mirrors (so it can be copied anywhere and referenced with a URL
like other mirrors). The mirror is maintained locally (within the Spack
installation directory) at :file:`var/spack/cache/`. It is always enabled (and
is always searched first when attempting to retrieve files for an installation)
but can be cleared with :ref:`purge <cmd-spack-purge>`; the cache directory can also
but can be cleared with :ref:`clean <cmd-spack-clean>`; the cache directory can also
be deleted manually without issue.
Caching includes retrieved tarball archives and source control repositories, but

View File

@@ -0,0 +1,989 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="682"
height="382"
id="svg3341"
inkscape:version="0.48.4 r9939"
sodipodi:docname="module_file_generation.svg">
<metadata
id="metadata3657">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1134"
id="namedview3655"
showgrid="false"
inkscape:zoom="2.0073314"
inkscape:cx="341"
inkscape:cy="191"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g3345" />
<defs
id="defs3343" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Background">
<rect
style="fill:none;stroke:#ff0000;stroke-width:1.40437257;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8.42623582, 8.42623582;stroke-dashoffset:0"
id="rect3844"
width="442.15341"
height="375.15021"
x="18.745768"
y="3.2206354" />
<rect
style="fill:none;stroke:#0000ff;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:9, 9;stroke-dashoffset:0"
id="rect3844-6"
width="175.74904"
height="179.83459"
x="486.96402"
y="179.3212" />
</g>
<g
id="g3345">
<g
transform="translate(-246,-214) scale(1,1)"
id="g3347">
<rect
fill="#C0C0C0"
stroke="none"
x="297"
y="231"
width="198"
height="104"
opacity="0.2"
id="rect3349" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3351">
<rect
fill="#ffffff"
stroke="none"
x="290"
y="224"
width="198"
height="104"
id="rect3353" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3355">
<path
fill="none"
stroke="#000000"
d="M 290 224 L 488 224 L 488 328 L 290 328 L 290 224 Z Z"
stroke-miterlimit="10"
id="path3357" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3359">
<rect
fill="#ffffff"
stroke="none"
x="280"
y="231"
width="20"
height="10"
id="rect3361" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3363">
<path
fill="none"
stroke="#000000"
d="M 280 231 L 300 231 L 300 241 L 280 241 L 280 231 Z Z"
stroke-miterlimit="10"
id="path3365" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3367">
<rect
fill="#ffffff"
stroke="none"
x="280"
y="251"
width="20"
height="10"
id="rect3369" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3371">
<path
fill="none"
stroke="#000000"
d="M 280 251 L 300 251 L 300 261 L 280 261 L 280 251 Z Z"
stroke-miterlimit="10"
id="path3373" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3375">
<g
id="g3377">
<path
fill="none"
stroke="none"
id="path3379" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="343"
y="243.5"
id="text3381">Configuration files</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3383">
<rect
fill="#C0C0C0"
stroke="none"
x="327"
y="263"
width="98"
height="24"
opacity="0.2"
id="rect3385" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3387">
<rect
fill="#ffffff"
stroke="none"
x="320"
y="256"
width="98"
height="24"
id="rect3389" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3391">
<path
fill="none"
stroke="#000000"
d="M 320 256 L 418 256 L 418 280 L 320 280 L 320 256 Z Z"
stroke-miterlimit="10"
id="path3393" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3395">
<rect
fill="#ffffff"
stroke="none"
x="320"
y="256"
width="98"
height="24"
id="rect3397" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3399">
<path
fill="none"
stroke="#000000"
d="M 320 256 L 418 256 L 418 280 L 320 280 L 320 256 Z Z"
stroke-miterlimit="10"
id="path3401" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3403">
<g
id="g3405"
transform="translate(-2.8259277,-4.138916)">
<path
id="path3407"
d=""
inkscape:connector-curvature="0"
style="fill:none;stroke:none" />
<text
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="328.5"
y="275.5"
id="text3409"
style="font-size:13px;font-style:normal;font-weight:bold;text-decoration:none;fill:#000000;stroke:none;font-family:Arial">modules.yaml</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3411">
<rect
fill="#C0C0C0"
stroke="none"
x="335"
y="295"
width="83"
height="24"
opacity="0.2"
id="rect3413" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3415">
<rect
fill="#ffffff"
stroke="none"
x="328"
y="288"
width="83"
height="24"
id="rect3417" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3419">
<path
fill="none"
stroke="#000000"
d="M 328 288 L 411 288 L 411 312 L 328 312 L 328 288 Z Z"
stroke-miterlimit="10"
id="path3421" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3423">
<rect
fill="#ffffff"
stroke="none"
x="328"
y="288"
width="83"
height="24"
id="rect3425" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3427">
<path
fill="none"
stroke="#000000"
d="M 328 288 L 411 288 L 411 312 L 328 312 L 328 288 Z Z"
stroke-miterlimit="10"
id="path3429" />
</g>
<g
transform="translate(-248.92773,-218.16748)"
id="g3431">
<g
id="g3433">
<path
id="path3435"
d=""
inkscape:connector-curvature="0"
style="fill:none;stroke:none" />
<text
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="336.5"
y="307.5"
id="text3437"
style="font-size:13px;font-style:normal;font-weight:bold;text-decoration:none;fill:#000000;stroke:none;font-family:Arial">config.yaml</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3439">
<rect
fill="#C0C0C0"
stroke="none"
x="489"
y="407"
width="198"
height="72"
opacity="0.2"
id="rect3441" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3443">
<rect
fill="#ffffff"
stroke="none"
x="482"
y="400"
width="198"
height="72"
id="rect3445" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3447">
<path
fill="none"
stroke="#000000"
d="M 482 400 L 680 400 L 680 472 L 482 472 L 482 400 Z Z"
stroke-miterlimit="10"
id="path3449" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3451">
<rect
fill="#ffffff"
stroke="none"
x="472"
y="407"
width="20"
height="10"
id="rect3453" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3455">
<path
fill="none"
stroke="#000000"
d="M 472 407 L 492 407 L 492 417 L 472 417 L 472 407 Z Z"
stroke-miterlimit="10"
id="path3457" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3459">
<rect
fill="#ffffff"
stroke="none"
x="472"
y="427"
width="20"
height="10"
id="rect3461" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3463">
<path
fill="none"
stroke="#000000"
d="M 472 427 L 492 427 L 492 437 L 472 437 L 472 427 Z Z"
stroke-miterlimit="10"
id="path3465" />
</g>
<g
transform="translate(-255.37842,-194.16748)"
id="g3467">
<g
id="g3469">
<path
id="path3471"
d=""
inkscape:connector-curvature="0"
style="fill:none;stroke:none" />
<text
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="528"
y="419.5"
id="text3473"
style="font-size:13px;font-style:normal;font-weight:bold;text-decoration:none;fill:#000000;stroke:none;font-family:Arial">Module subpackage</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3475">
<path
fill="none"
stroke="#000000"
d="M 369 313 L 368 440 L 471 438"
stroke-miterlimit="10"
stroke-dasharray="3"
id="path3477" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3479">
<path
fill="none"
stroke="#000000"
d="M 460.9209632639215 442.4060207072573 L 471 438 L 460.7575176559406 433.98857189624056"
stroke-miterlimit="10"
id="path3481" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3483">
<path
fill="#ffffff"
stroke="none"
d="M 256 448 L 381 448 L 391 458 L 391 496 L 256 496 L 256 448"
id="path3485" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3487">
<path
fill="none"
stroke="#000000"
d="M 256 448 L 381 448 L 391 458 L 391 496 L 256 496 L 256 448 L 256 448"
stroke-miterlimit="10"
id="path3489" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3491">
<path
fill="none"
stroke="#000000"
d="M 381 448 L 381 458 L 391 458 L 381 448"
stroke-miterlimit="10"
id="path3493" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3495">
<g
id="g3497">
<path
fill="none"
stroke="none"
id="path3499" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="normal"
text-decoration="none"
x="261"
y="466"
id="text3501">template directory</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3503">
<g
id="g3505">
<path
fill="none"
stroke="none"
id="path3507" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="normal"
text-decoration="none"
x="261"
y="481"
id="text3509">module file directory</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3511">
<path
fill="none"
stroke="#000000"
d="M 419 439 L 393 448"
stroke-miterlimit="10"
stroke-dasharray="3"
id="path3513" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3515">
<path
d="M 419,267 576.40856,267.26845 576,399"
stroke-miterlimit="10"
id="path3517"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10;stroke-dasharray:3"
sodipodi:nodetypes="ccc" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3519">
<path
fill="none"
stroke="#000000"
d="M 571.790482243984 388.83732514237585 L 576 399 L 580.209517756016 388.83732514237585"
stroke-miterlimit="10"
id="path3521" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3523">
<path
fill="#ffffff"
stroke="none"
d="M 600 296 L 737 296 L 747 306 L 747 344 L 600 344 L 600 296"
id="path3525" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3527">
<path
fill="none"
stroke="#000000"
d="M 600 296 L 737 296 L 747 306 L 747 344 L 600 344 L 600 296 L 600 296"
stroke-miterlimit="10"
id="path3529" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3531">
<path
fill="none"
stroke="#000000"
d="M 737 296 L 737 306 L 747 306 L 737 296"
stroke-miterlimit="10"
id="path3533" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3535">
<g
id="g3537">
<path
fill="none"
stroke="none"
id="path3539" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="normal"
text-decoration="none"
x="605"
y="314"
id="text3541">content customization</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3543">
<g
id="g3545">
<path
fill="none"
stroke="none"
id="path3547" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="normal"
text-decoration="none"
x="605"
y="329"
id="text3549">layout customization</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3551">
<path
fill="none"
stroke="#000000"
d="M 576 331 L 599 328"
stroke-miterlimit="10"
stroke-dasharray="3"
id="path3553" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3555">
<rect
fill="#C0C0C0"
stroke="none"
x="801"
y="415"
width="99"
height="44"
opacity="0.2"
id="rect3557" />
</g>
<g
transform="translate(-246,-210)"
id="g3559">
<rect
x="794"
y="408"
width="99"
height="44"
id="rect3561"
style="fill:#ffffff;stroke:none" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3563">
<path
fill="none"
stroke="#000000"
d="M 794 408 L 893 408 L 893 452 L 794 452 L 794 408 Z Z"
stroke-miterlimit="10"
id="path3565" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3567">
<rect
fill="#ffffff"
stroke="none"
x="784"
y="415"
width="20"
height="10"
id="rect3569" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3571">
<path
fill="none"
stroke="#000000"
d="M 784 415 L 804 415 L 804 425 L 784 425 L 784 415 Z Z"
stroke-miterlimit="10"
id="path3573" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3575">
<rect
fill="#ffffff"
stroke="none"
x="784"
y="435"
width="20"
height="10"
id="rect3577" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3579">
<path
fill="none"
stroke="#000000"
d="M 784 435 L 804 435 L 804 445 L 784 445 L 784 435 Z Z"
stroke-miterlimit="10"
id="path3581" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3583">
<g
id="g3585"
transform="translate(-6.7685547,5.861084)">
<path
id="path3587"
d=""
inkscape:connector-curvature="0"
style="fill:none;stroke:none" />
<text
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="832"
y="427.5"
id="text3589"
style="font-size:13px;font-style:normal;font-weight:bold;text-decoration:none;fill:#000000;stroke:none;font-family:Arial">Jinja2</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3591">
<path
fill="#C0C0C0"
stroke="none"
d="M 568.9 519 L 596.34 519 L 608.1 530.76 L 608.1 568 L 568.9 568"
opacity="0.2"
id="path3593" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3595">
<path
fill="#ffffff"
stroke="none"
d="M 561.9 512 L 589.34 512 L 601.1 523.76 L 601.1 561 L 561.9 561"
id="path3597" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3599">
<path
fill="none"
stroke="#000000"
d="M 561.9 512 L 589.34 512 L 601.1 523.76 L 601.1 561 L 561.9 561 L 561.9 512"
stroke-miterlimit="10"
id="path3601" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3603">
<path
fill="none"
stroke="#000000"
d="M 589.34 512 L 589.34 523.76 L 601.1 523.76 L 589.34 512"
stroke-miterlimit="10"
id="path3605" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3607">
<g
id="g3609">
<path
fill="none"
stroke="none"
id="path3611" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="551.5"
y="580.5"
id="text3613">Templates</text>
</g>
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3615">
<path
d="M 620,549 836.73155,549.54866 838,453"
stroke-miterlimit="10"
id="path3617"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10;stroke-dasharray:3"
sodipodi:nodetypes="ccc" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3619">
<path
fill="none"
stroke="#000000"
d="M 842.4139237018308 463.0755782739462 L 838 453 L 833.9966056593214 463.2456251030878"
stroke-miterlimit="10"
id="path3621" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3623">
<path
d="M 680.18289,431.54866 783,431"
stroke-miterlimit="10"
id="path3625"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10;stroke-dasharray:3"
sodipodi:nodetypes="cc" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3627">
<path
fill="none"
stroke="#000000"
d="M 772.9654737429415 435.5064712133113 L 783 431 L 772.7179620834851 427.0910747917938"
stroke-miterlimit="10"
id="path3629" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3631">
<path
fill="#C0C0C0"
stroke="none"
d="M 862.4 247 L 889.84 247 L 901.6 258.76 L 901.6 296 L 862.4 296"
opacity="0.2"
id="path3633" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3635">
<path
fill="#ffffff"
stroke="none"
d="M 855.4 240 L 882.84 240 L 894.6 251.76000000000002 L 894.6 289 L 855.4 289"
id="path3637" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3639">
<path
fill="none"
stroke="#000000"
d="M 855.4 240 L 882.84 240 L 894.6 251.76000000000002 L 894.6 289 L 855.4 289 L 855.4 240"
stroke-miterlimit="10"
id="path3641" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3643">
<path
fill="none"
stroke="#000000"
d="M 882.84 240 L 882.84 251.76000000000002 L 894.6 251.76000000000002 L 882.84 240"
stroke-miterlimit="10"
id="path3645" />
</g>
<g
transform="translate(-246,-214) scale(1,1)"
id="g3647">
<g
id="g3649">
<path
fill="none"
stroke="none"
id="path3651" />
<text
fill="#000000"
stroke="none"
font-family="Arial"
font-size="13px"
font-style="normal"
font-weight="bold"
text-decoration="none"
x="840.5"
y="308.5"
id="text3653">Module files</text>
</g>
</g>
<g
transform="translate(-261.34866,-222.82727)"
id="g3635-8">
<path
style="fill:#ffffff;stroke:none"
inkscape:connector-curvature="0"
d="m 855.4,240 27.44,0 11.76,11.76 0,37.24 -39.2,0"
id="path3637-9" />
</g>
<g
transform="translate(-261.34866,-222.82727)"
id="g3639-7">
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 855.4,240 27.44,0 11.76,11.76 0,37.24 -39.2,0 0,-49"
stroke-miterlimit="10"
id="path3641-3" />
</g>
<g
transform="translate(-261.34866,-222.82727)"
id="g3643-6">
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 882.84,240 0,11.76 11.76,0 L 882.84,240"
stroke-miterlimit="10"
id="path3645-1" />
</g>
<g
transform="translate(-278.09946,-233.44973)"
id="g3635-84">
<path
style="fill:#ffffff;stroke:none"
inkscape:connector-curvature="0"
d="m 855.4,240 27.44,0 11.76,11.76 0,37.24 -39.2,0"
id="path3637-5" />
</g>
<g
transform="translate(-278.09946,-233.44973)"
id="g3639-0">
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 855.4,240 27.44,0 11.76,11.76 0,37.24 -39.2,0 0,-49"
stroke-miterlimit="10"
id="path3641-36" />
</g>
<g
transform="translate(-278.09946,-233.44973)"
id="g3643-1">
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 882.84,240 0,11.76 11.76,0 L 882.84,240"
stroke-miterlimit="10"
id="path3645-0" />
</g>
<g
transform="translate(-27.431351,-208.3001)"
id="g3375-6" />
<g
id="g4709"
transform="matrix(1,0,0,0.81117898,54.337968,31.640263)">
<g
id="g3623-5"
transform="matrix(0,-1,1,0,121.9107,875.37876)">
<path
sodipodi:nodetypes="cc"
style="fill:none;stroke:#000000;stroke-miterlimit:10;stroke-dasharray:3"
inkscape:connector-curvature="0"
id="path3625-4"
stroke-miterlimit="10"
d="M 680.18289,431.54866 783,431" />
</g>
<g
id="g3627-7"
transform="matrix(0,-1,1,0,121.98695,871.00978)">
<path
id="path3629-6"
stroke-miterlimit="10"
d="M 772.96547,435.50647 783,431 772.71796,427.09107"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -7,16 +7,10 @@ Modules
The use of module systems to manage user environment in a controlled way
is a common practice at HPC centers that is often embraced also by individual
programmers on their development machines. To support this common practice
Spack provides integration with `Environment Modules
Spack integrates with `Environment Modules
<http://modules.sourceforge.net/>`_ , `LMod
<http://lmod.readthedocs.io/en/latest/>`_ and `Dotkit <https://computing.llnl.gov/?set=jobs&page=dotkit>`_ by:
* generating module files after a successful installation
* providing commands that can leverage the spec syntax to manipulate modules
In the following you will see how to activate shell support for commands in Spack
that requires it, and discover what benefits this may bring with respect to deal
directly with automatically generated module files.
<http://lmod.readthedocs.io/en/latest/>`_ and `Dotkit <https://computing.llnl.gov/?set=jobs&page=dotkit>`_ by
providing post-install hooks that generate module files and commands to manipulate them.
.. note::
@@ -26,13 +20,58 @@ directly with automatically generated module files.
.. _shell-support:
-------------
Shell support
-------------
----------------------------
Using module files via Spack
----------------------------
You can enable shell support by sourcing the appropriate setup file
in the ``$SPACK_ROOT/share/spack`` directory.
For ``bash`` or ``ksh`` users:
If you have installed a supported module system either manually or through
``spack bootstrap``, you should be able to run either ``module avail`` or
``use -l spack`` to see what module files have been installed. Here is
sample output of those programs, showing lots of installed packages:
.. code-block:: console
$ module avail
--------------------------------------------------------------- ~/spack/share/spack/modules/linux-ubuntu14-x86_64 ---------------------------------------------------------------
autoconf-2.69-gcc-4.8-qextxkq hwloc-1.11.6-gcc-6.3.0-akcisez m4-1.4.18-gcc-4.8-ev2znoc openblas-0.2.19-gcc-6.3.0-dhkmed6 py-setuptools-34.2.0-gcc-6.3.0-fadur4s
automake-1.15-gcc-4.8-maqvukj isl-0.18-gcc-4.8-afi6taq m4-1.4.18-gcc-6.3.0-uppywnz openmpi-2.1.0-gcc-6.3.0-go2s4z5 py-six-1.10.0-gcc-6.3.0-p4dhkaw
binutils-2.28-gcc-4.8-5s7c6rs libiconv-1.15-gcc-4.8-at46wg3 mawk-1.3.4-gcc-4.8-acjez57 openssl-1.0.2k-gcc-4.8-dkls5tk python-2.7.13-gcc-6.3.0-tyehea7
bison-3.0.4-gcc-4.8-ek4luo5 libpciaccess-0.13.4-gcc-6.3.0-gmufnvh mawk-1.3.4-gcc-6.3.0-ostdoms openssl-1.0.2k-gcc-6.3.0-gxgr5or readline-7.0-gcc-4.8-xhufqhn
bzip2-1.0.6-gcc-4.8-iffrxzn libsigsegv-2.11-gcc-4.8-pp2cvte mpc-1.0.3-gcc-4.8-g5mztc5 pcre-8.40-gcc-4.8-r5pbrxb readline-7.0-gcc-6.3.0-zzcyicg
bzip2-1.0.6-gcc-6.3.0-bequudr libsigsegv-2.11-gcc-6.3.0-7enifnh mpfr-3.1.5-gcc-4.8-o7xm7az perl-5.24.1-gcc-4.8-dg5j65u sqlite-3.8.5-gcc-6.3.0-6zoruzj
cmake-3.7.2-gcc-6.3.0-fowuuby libtool-2.4.6-gcc-4.8-7a523za mpich-3.2-gcc-6.3.0-dmvd3aw perl-5.24.1-gcc-6.3.0-6uzkpt6 tar-1.29-gcc-4.8-wse2ass
curl-7.53.1-gcc-4.8-3fz46n6 libtool-2.4.6-gcc-6.3.0-n7zmbzt ncurses-6.0-gcc-4.8-dcpe7ia pkg-config-0.29.2-gcc-4.8-ib33t75 tcl-8.6.6-gcc-4.8-tfxzqbr
expat-2.2.0-gcc-4.8-mrv6bd4 libxml2-2.9.4-gcc-4.8-ryzxnsu ncurses-6.0-gcc-6.3.0-ucbhcdy pkg-config-0.29.2-gcc-6.3.0-jpgubk3 util-macros-1.19.1-gcc-6.3.0-xorz2x2
flex-2.6.3-gcc-4.8-yf345oo libxml2-2.9.4-gcc-6.3.0-rltzsdh netlib-lapack-3.6.1-gcc-6.3.0-js33dog py-appdirs-1.4.0-gcc-6.3.0-jxawmw7 xz-5.2.3-gcc-4.8-mew4log
gcc-6.3.0-gcc-4.8-24puqve lmod-7.4.1-gcc-4.8-je4srhr netlib-scalapack-2.0.2-gcc-6.3.0-5aidk4l py-numpy-1.12.0-gcc-6.3.0-oemmoeu xz-5.2.3-gcc-6.3.0-3vqeuvb
gettext-0.19.8.1-gcc-4.8-yymghlh lua-5.3.4-gcc-4.8-im75yaz netlib-scalapack-2.0.2-gcc-6.3.0-hjsemcn py-packaging-16.8-gcc-6.3.0-i2n3dtl zip-3.0-gcc-4.8-rwar22d
gmp-6.1.2-gcc-4.8-5ub2wu5 lua-luafilesystem-1_6_3-gcc-4.8-wkey3nl netlib-scalapack-2.0.2-gcc-6.3.0-jva724b py-pyparsing-2.1.10-gcc-6.3.0-tbo6gmw zlib-1.2.11-gcc-4.8-pgxsxv7
help2man-1.47.4-gcc-4.8-kcnqmau lua-luaposix-33.4.0-gcc-4.8-mdod2ry netlib-scalapack-2.0.2-gcc-6.3.0-rgqfr6d py-scipy-0.19.0-gcc-6.3.0-kr7nat4 zlib-1.2.11-gcc-6.3.0-7cqp6cj
The names should look familiar, as they resemble the output from ``spack find``.
You *can* use the modules here directly. For example, you could type either of these commands
to load the ``cmake`` module:
.. code-block:: console
$ use cmake-3.7.2-gcc-6.3.0-fowuuby
.. code-block:: console
$ module load cmake-3.7.2-gcc-6.3.0-fowuuby
Neither of these is particularly pretty, easy to remember, or
easy to type. Luckily, Spack has its own interface for using modules and dotkits.
^^^^^^^^^^^^^
Shell support
^^^^^^^^^^^^^
To enable additional Spack commands for loading and unloading module files,
and to add the correct path to ``MODULEPATH``, you need to source the appropriate
setup file in the ``$SPACK_ROOT/share/spack`` directory. This will activate shell
support for the commands that need it. For ``bash``, ``ksh`` or ``zsh`` users:
.. code-block:: console
@@ -42,73 +81,20 @@ For ``csh`` and ``tcsh`` instead:
.. code-block:: console
$ set SPACK_ROOT ...
$ source $SPACK_ROOT/share/spack/setup-env.csh
Note that in the latter case it is necessary to explicitly set ``SPACK_ROOT``
before sourcing the setup file (you will get a meaningful error message
if you don't).
.. note::
You can put the source line in your ``.bashrc`` or ``.cshrc`` to
have Spack's shell support available on the command line at any login.
When ``bash`` and ``ksh`` users update their environment with ``setup-env.sh``, it will check for spack-installed environment modules and add the ``module`` command to their environment; This only occurs if the module command is not already available. You can install ``environment-modules`` with ``spack bootstrap`` as described in :ref:`InstallEnvironmentModules`.
Finally, if you want to have Spack's shell support available on the command line at
any login you can put this source line in one of the files that are sourced
at startup (like ``.profile``, ``.bashrc`` or ``.cshrc``). Be aware though
that the startup time may be slightly increased because of that.
----------------------------
Using module files via Spack
----------------------------
If you have shell support enabled you should be able to run either
``module avail`` or ``use -l spack`` to see what module/dotkit files have
been installed. Here is sample output of those programs, showing lots
of installed packages.
.. code-block:: console
$ module avail
------- ~/spack/share/spack/modules/linux-debian7-x86_64 --------
adept-utils@1.0%gcc@4.4.7-5adef8da libelf@0.8.13%gcc@4.4.7
automaded@1.0%gcc@4.4.7-d9691bb0 libelf@0.8.13%intel@15.0.0
boost@1.55.0%gcc@4.4.7 mpc@1.0.2%gcc@4.4.7-559607f5
callpath@1.0.1%gcc@4.4.7-5dce4318 mpfr@3.1.2%gcc@4.4.7
dyninst@8.1.2%gcc@4.4.7-b040c20e mpich@3.0.4%gcc@4.4.7
gcc@4.9.1%gcc@4.4.7-93ab98c5 mpich@3.0.4%gcc@4.9.0
gmp@6.0.0a%gcc@4.4.7 mrnet@4.1.0%gcc@4.4.7-72b7881d
graphlib@2.0.0%gcc@4.4.7 netgauge@2.4.6%gcc@4.9.0-27912b7b
launchmon@1.0.1%gcc@4.4.7 stat@2.1.0%gcc@4.4.7-51101207
libNBC@1.1.1%gcc@4.9.0-27912b7b sundials@2.5.0%gcc@4.9.0-27912b7b
libdwarf@20130729%gcc@4.4.7-b52fac98
.. code-block:: console
$ use -l spack
spack ----------
adept-utils@1.0%gcc@4.4.7-5adef8da - adept-utils @1.0
automaded@1.0%gcc@4.4.7-d9691bb0 - automaded @1.0
boost@1.55.0%gcc@4.4.7 - boost @1.55.0
callpath@1.0.1%gcc@4.4.7-5dce4318 - callpath @1.0.1
dyninst@8.1.2%gcc@4.4.7-b040c20e - dyninst @8.1.2
gmp@6.0.0a%gcc@4.4.7 - gmp @6.0.0a
libNBC@1.1.1%gcc@4.9.0-27912b7b - libNBC @1.1.1
libdwarf@20130729%gcc@4.4.7-b52fac98 - libdwarf @20130729
libelf@0.8.13%gcc@4.4.7 - libelf @0.8.13
libelf@0.8.13%intel@15.0.0 - libelf @0.8.13
mpc@1.0.2%gcc@4.4.7-559607f5 - mpc @1.0.2
mpfr@3.1.2%gcc@4.4.7 - mpfr @3.1.2
mpich@3.0.4%gcc@4.4.7 - mpich @3.0.4
mpich@3.0.4%gcc@4.9.0 - mpich @3.0.4
netgauge@2.4.6%gcc@4.9.0-27912b7b - netgauge @2.4.6
sundials@2.5.0%gcc@4.9.0-27912b7b - sundials @2.5.0
The names here should look familiar, they're the same ones from
``spack find``. You *can* use the names here directly. For example,
you could type either of these commands to load the callpath module:
.. code-block:: console
$ use callpath@1.0.1%gcc@4.4.7-5dce4318
.. code-block:: console
$ module load callpath@1.0.1%gcc@4.4.7-5dce4318
.. _cmd-spack-load:
@@ -116,12 +102,11 @@ you could type either of these commands to load the callpath module:
``spack load / unload``
^^^^^^^^^^^^^^^^^^^^^^^
Neither of these is particularly pretty, easy to remember, or
easy to type. Luckily, Spack has its own interface for using modules
and dotkits. You can use the same spec syntax you're used to:
Once you have shell support enabled you can use the same spec syntax
you're used to:
========================= ==========================
Environment Modules Dotkit
Modules Dotkit
========================= ==========================
``spack load <spec>`` ``spack use <spec>``
``spack unload <spec>`` ``spack unuse <spec>``
@@ -210,7 +195,7 @@ Scripts to load modules recursively may be made with the command:
$ spack module loads --dependencies <spec>
An equivalent alternative is:
An equivalent alternative using `process substitution <http://tldp.org/LDP/abs/html/process-sub.html>`_ is:
.. code-block :: console
@@ -296,43 +281,46 @@ For example, consider the following on one system:
# antlr@2.7.7%gcc@5.3.0~csharp+cxx~java~python arch=linux-SuSE11-x86_64
module load linux-SuSE11-x86_64/antlr-2.7.7-gcc-5.3.0-bdpl46y
----------------------------
Auto-generating Module Files
----------------------------
-------------------------
Module file customization
-------------------------
Module files are generated by post-install hooks after the successful
installation of a package. The following table summarizes the essential
installation of a package. The table below summarizes the essential
information associated with the different file formats
that can be generated by Spack:
+-----------------------------+--------------------+-------------------------------+----------------------+
| | **Hook name** | **Default root directory** | **Compatible tools** |
+=============================+====================+===============================+======================+
| **Dotkit** | ``dotkit`` | share/spack/dotkit | DotKit |
+-----------------------------+--------------------+-------------------------------+----------------------+
| **TCL - Non-Hierarchical** | ``tcl`` | share/spack/modules | Env. Modules/LMod |
+-----------------------------+--------------------+-------------------------------+----------------------+
| **Lua - Hierarchical** | ``lmod`` | share/spack/lmod | LMod |
+-----------------------------+--------------------+-------------------------------+----------------------+
+-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+
| | **Hook name** | **Default root directory** | **Default template file** | **Compatible tools** |
+=============================+====================+===============================+==================================+======================+
| **Dotkit** | ``dotkit`` | share/spack/dotkit | templates/modules/modulefile.dk | DotKit |
+-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+
| **TCL - Non-Hierarchical** | ``tcl`` | share/spack/modules | templates/modules/modulefile.tcl | Env. Modules/LMod |
+-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+
| **Lua - Hierarchical** | ``lmod`` | share/spack/lmod | templates/modules/modulefile.lua | LMod |
+-----------------------------+--------------------+-------------------------------+----------------------------------+----------------------+
Though Spack ships with sensible defaults for the generation of module files,
one can customize many aspects of it to accommodate package or site specific needs.
These customizations are enabled by either:
Spack ships with sensible defaults for the generation of module files, but
you can customize many aspects of it to accommodate package or site specific needs.
In general you can override or extend the default behavior by:
1. overriding certain callback APIs in the Python packages
2. writing specific rules in the ``modules.yaml`` configuration file
3. writing your own templates to override or extend the defaults
The former method fits best cases that are site independent, e.g. injecting variables
from language interpreters into their extensions. The latter instead permits to
fine tune the content, naming and creation of module files to meet site specific conventions.
The former method let you express changes in the run-time environment
that are needed to use the installed software properly, e.g. injecting variables
from language interpreters into their extensions. The latter two instead permit to
fine tune the filesystem layout, content and creation of module files to meet
site specific conventions.
^^^^^^^^^^^^^^^^^^^^
``Package`` file API
^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Override API calls in ``package.py``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are two methods that can be overridden in any ``package.py`` to affect the
content of generated module files. The first one is:
There are two methods that you can override in any ``package.py`` to affect the
content of the module files generated by Spack. The first one:
.. code-block:: python
@@ -340,8 +328,8 @@ content of generated module files. The first one is:
"""Set up the compile and runtime environments for a package."""
pass
and can alter the content of *the same package where it is overridden*
by adding actions to ``run_env``. The second method is:
can alter the content of the module file associated with the same package where it is overridden.
The second method:
.. code-block:: python
@@ -349,12 +337,13 @@ by adding actions to ``run_env``. The second method is:
"""Set up the environment of packages that depend on this one"""
pass
and has similar effects on module file of dependees. Even in this case
``run_env`` must be filled with the desired list of environment modifications.
can instead inject run-time environment modifications in the module files of packages
that depend on it. In both cases you need to fill ``run_env`` with the desired
list of environment modifications.
.. note::
The ``r`` package and callback APIs
A typical example in which overriding both methods prove to be useful
An example in which it is crucial to override both methods
is given by the ``r`` package. This package installs libraries and headers
in non-standard locations and it is possible to prepend the appropriate directory
to the corresponding environment variables:
@@ -375,37 +364,36 @@ and has similar effects on module file of dependees. Even in this case
it appropriately in the override of the second method:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/r/package.py
:lines: 128-129,146-151
:pyobject: R.setup_dependent_environment
.. _modules-yaml:
---------------------------------
Configuration in ``modules.yaml``
---------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^
Write a configuration file
^^^^^^^^^^^^^^^^^^^^^^^^^^
The name of the configuration file that controls module generation behavior
is ``modules.yaml``. The default configuration:
The configuration files that control module generation behavior
are named ``modules.yaml``. The default configuration:
.. literalinclude:: ../../../etc/spack/defaults/modules.yaml
:language: yaml
activates generation for ``tcl`` and ``dotkit`` module files and inspects
activates the hooks to generate ``tcl`` and ``dotkit`` module files and inspects
the installation folder of each package for the presence of a set of subdirectories
(``bin``, ``man``, ``share/man``, etc.). If any is found its full path is prepended
to the environment variables listed below the folder name.
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Activation of other systems
^^^^^^^^^^^^^^^^^^^^^^^^^^^
""""""""""""""""""""
Activate other hooks
""""""""""""""""""""
Any other module file generator shipped with Spack can be activated adding it to the
list under the ``enable`` key in the module file. Currently the only generator that
is not activated by default is ``lmod``, which produces hierarchical lua module files.
For each module system that can be enabled a finer configuration is possible.
is not active by default is ``lmod``, which produces hierarchical lua module files.
Directives that are aimed at driving the generation of a particular type of module files
should be listed under a top level key that corresponds to the generator being
customized:
Each module system can then be configured separately. In fact, you should list configuration
options that affect a particular type of module files under a top level key corresponding
to the generator being customized:
.. code-block:: yaml
@@ -421,24 +409,21 @@ customized:
lmod:
# contains lmod specific customizations
All these module sections allow for both:
1. global directives that usually affect the whole layout of modules or the naming scheme
2. directives that affect only a set of packages and modify their content
For the latter point in particular it is possible to use anonymous specs
to select an appropriate set of packages on which the modifications should be applied.
In general, the configuration options that you can use in ``modules.yaml`` will
either change the layout of the module files on the filesystem, or they will affect
their content. For the latter point it is possible to use anonymous specs
to fine tune the set of packages on which the modifications should be applied.
.. _anonymous_specs:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
""""""""""""""""""""""""""""
Selection by anonymous specs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
""""""""""""""""""""""""""""
The procedure to select packages using anonymous specs is a natural
extension of using them to install packages, the only difference being
that specs in this case **are not required to have a root package**.
Consider for instance this snippet:
In the configuration file you can use *anonymous specs* (i.e. specs
that **are not required to have a root package** and are thus used just
to express constraints) to apply certain modifications on a selected set
of the installed software. For instance, in the snippet below:
.. code-block:: yaml
@@ -467,8 +452,7 @@ Consider for instance this snippet:
unset:
- FOOBAR
During module file generation, the configuration above will instruct
Spack to set the environment variable ``BAR=bar`` for every module,
you are instructing Spack to set the environment variable ``BAR=bar`` for every module,
unless the associated spec satisfies ``^openmpi`` in which case ``BAR=baz``.
In addition in any spec that satisfies ``zlib`` the value ``foo`` will be
prepended to ``LD_LIBRARY_PATH`` and in any spec that satisfies ``zlib%gcc@4.8``
@@ -480,15 +464,15 @@ the variable ``FOOBAR`` will be unset.
first, no matter where they appear in the configuration file. All the other
spec constraints are instead evaluated top to bottom.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Blacklist or whitelist the generation of specific module files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
""""""""""""""""""""""""""""""""""""""""""""
Blacklist or whitelist specific module files
""""""""""""""""""""""""""""""""""""""""""""
Anonymous specs are also used to prevent module files from being written or
to force them to be written. A common case for that at HPC centers is to hide
from users all of the software that needs to be built with system compilers.
Suppose for instance to have ``gcc@4.4.7`` provided by your system. Then
with a configuration file like this one:
You can use anonymous specs also to prevent module files from being written or
to force them to be written. Consider the case where you want to hide from users
all the boilerplate software that you had to build in order to bootstrap a new
compiler. Suppose for instance that ``gcc@4.4.7`` is the compiler provided by
your system. If you write a configuration file like:
.. code-block:: yaml
@@ -497,13 +481,13 @@ with a configuration file like this one:
whitelist: ['gcc', 'llvm'] # Whitelist will have precedence over blacklist
blacklist: ['%gcc@4.4.7'] # Assuming gcc@4.4.7 is the system compiler
you will skip the generation of module files for any package that
is compiled with ``gcc@4.4.7``, with the exception of any ``gcc``
you will prevent the generation of module files for any package that
is compiled with ``gcc@4.4.7``, with the only exception of any ``gcc``
or any ``llvm`` installation.
^^^^^^^^^^^^^^^^^^^^^^^^^^^
"""""""""""""""""""""""""""
Customize the naming scheme
^^^^^^^^^^^^^^^^^^^^^^^^^^^
"""""""""""""""""""""""""""
The names of environment modules generated by spack are not always easy to
fully comprehend due to the long hash in the name. There are two module
@@ -551,7 +535,9 @@ most likely via the ``+blas`` variant specification.
tcl:
naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}'
all:
conflict: ['${PACKAGE}', 'intel/14.0.1']
conflict:
- '${PACKAGE}'
- 'intel/14.0.1'
will create module files that will conflict with ``intel/14.0.1`` and with the
base directory of the same module, effectively preventing the possibility to
@@ -563,9 +549,9 @@ most likely via the ``+blas`` variant specification.
.. note::
LMod hierarchical module files
When ``lmod`` is activated Spack will generate a set of hierarchical lua module
files that are understood by LMod. The generated hierarchy always contains the
three layers ``Core`` / ``Compiler`` / ``MPI`` but can be further extended to
any other virtual dependency present in Spack. A case that could be useful in
files that are understood by LMod. The hierarchy will always contain the
two layers ``Core`` / ``Compiler`` but can be further extended to
any of the virtual dependencies present in Spack. A case that could be useful in
practice is for instance:
.. code-block:: yaml
@@ -574,11 +560,14 @@ most likely via the ``+blas`` variant specification.
enable:
- lmod
lmod:
core_compilers: ['gcc@4.8']
hierarchical_scheme: ['lapack']
core_compilers:
- 'gcc@4.8'
hierarchy:
- 'mpi'
- 'lapack'
that will generate a hierarchy in which the ``lapack`` layer is treated as the ``mpi``
one. This allows a site to build the same libraries or applications against different
that will generate a hierarchy in which the ``lapack`` and ``mpi`` layer can be switched
independently. This allows a site to build the same libraries or applications against different
implementations of ``mpi`` and ``lapack``, and let LMod switch safely from one to the
other.
@@ -587,15 +576,14 @@ most likely via the ``+blas`` variant specification.
For hierarchies that are deeper than three layers ``lmod spider`` may have some issues.
See `this discussion on the LMod project <https://github.com/TACC/Lmod/issues/114>`_.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
""""""""""""""""""""""""""""""""""""
Filter out environment modifications
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
""""""""""""""""""""""""""""""""""""
Modifications to certain environment variables in module files are generated by
default, for instance by prefix inspections in the default configuration file.
There are cases though where some of these modifications are unwanted.
Suppose you need to avoid having ``CPATH`` and ``LIBRARY_PATH``
modified by your ``dotkit`` modules:
Modifications to certain environment variables in module files are there by
default, for instance because they are generated by prefix inspections.
If you want to prevent modifications to some environment variables, you can
do so by using the environment blacklist:
.. code-block:: yaml
@@ -610,11 +598,11 @@ The configuration above will generate dotkit module files that will not contain
modifications to either ``CPATH`` or ``LIBRARY_PATH`` and environment module
files that instead will contain these modifications.
^^^^^^^^^^^^^^^^^^^^^
"""""""""""""""""""""
Autoload dependencies
^^^^^^^^^^^^^^^^^^^^^
"""""""""""""""""""""
In some cases it can be useful to have module files directly autoload
In some cases it can be useful to have module files that automatically load
their dependencies. This may be the case for Python extensions, if not
activated using ``spack activate``:
@@ -626,8 +614,9 @@ activated using ``spack activate``:
autoload: 'direct'
The configuration file above will produce module files that will
automatically load their direct dependencies. The allowed values for the
``autoload`` statement are either ``none``, ``direct`` or ``all``.
load their direct dependencies if the package installed depends on ``python``.
The allowed values for the ``autoload`` statement are either ``none``,
``direct`` or ``all``.
.. note::
TCL prerequisites

View File

@@ -0,0 +1,12 @@
.. _package-list:
============
Package List
============
This is a list of things you can install using Spack. It is
automatically generated based on the packages in the latest Spack
release.
.. raw:: html
:file: package_list.html

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
# These dependencies should be installed using pip in order
# to build the documentation.
sphinx
sphinxcontrib-programoutput

View File

@@ -4,9 +4,9 @@
Tutorial: Spack 101
=============================
This is a 3-hour introduction to Spack with lectures and live demos. It
was presented as a tutorial at `Supercomputing 2016
<http://sc16.supercomputing.org>`_. You can use these materials to teach
This is a full day introduction to Spack with lectures and live demos. It
was presented as a tutorial at `Supercomputing 2017
<http://sc17.supercomputing.org>`_. You can use these materials to teach
a course on Spack at your own site, or you can just skip ahead and read
the live demo scripts to see how Spack is used in practice.
@@ -15,19 +15,18 @@ the live demo scripts to see how Spack is used in practice.
.. rubric:: Slides
.. figure:: tutorial/sc16-tutorial-slide-preview.png
:target: http://llnl.github.io/spack/files/Spack-SC16-Tutorial.pdf
:target: http://spack.io/slides/Spack-SC17-Tutorial.pdf
:height: 72px
:align: left
:alt: Slide Preview
`Download Slides <http://llnl.github.io/spack/files/Spack-SC16-Tutorial.pdf>`_.
`Download Slides <http://spack.io/slides/Spack-SC17-Tutorial.pdf>`_.
**Full citation:** Todd Gamblin, Massimiliano Culpo, Gregory Becker, Matt
Legendre, Greg Lee, Elizabeth Fischer, and Benedikt Hegner.
`Managing HPC Software Complexity with Spack
<http://sc16.supercomputing.org/presentation/?id=tut166&sess=sess209>`_.
Tutorial presented at Supercomputing 2016. November 13, 2016, Salt Lake
City, UT, USA.
<http://sc17.supercomputing.org/presentation/?id=tut151&sess=sess233>`_.
Tutorial presented at Supercomputing 2017. November 13, 2017, Denver, CO, USA.
.. _sc16-live-demos:
@@ -37,12 +36,18 @@ These scripts will take you step-by-step through basic Spack tasks. They
correspond to sections in the slides above.
1. :ref:`basics-tutorial`
2. :ref:`packaging-tutorial`
3. :ref:`modules-tutorial`
2. :ref:`configs-tutorial`
3. :ref:`packaging-tutorial`
4. :ref:`build-systems-tutorial`
5. :ref:`advanced-packaging-tutorial`
6. :ref:`modules-tutorial`
Full contents:
.. toctree::
tutorial_sc16_spack_basics
tutorial_sc16_packaging
tutorial_sc16_modules
tutorial_basics
tutorial_configuration
tutorial_packaging
tutorial_buildsystems
tutorial_advanced_packaging
tutorial_modules

View File

@@ -1,13 +1,13 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -40,7 +40,7 @@
from spack import *
class Mpileaks(AutotoolsPackage):
class Mpileaks(Package):
"""FIXME: Put a proper description of your package here."""
# FIXME: Add a proper url for your package's homepage here.
@@ -50,14 +50,9 @@ class Mpileaks(AutotoolsPackage):
version('1.0', '8838c574b39202a57d7c2d68692718aa')
# FIXME: Add dependencies if required.
# depends_on('m4', type='build')
# depends_on('autoconf', type='build')
# depends_on('automake', type='build')
# depends_on('libtool', type='build')
# depends_on('foo')
def configure_args(self):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete the function
args = []
return args
def install(self, spec, prefix):
# FIXME: Unknown build system
make()
make('install')

View File

@@ -1,13 +1,13 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -25,24 +25,18 @@
from spack import *
class Mpileaks(AutotoolsPackage):
class Mpileaks(Package):
"""Tool to detect and report MPI objects like MPI_Requests and
MPI_Datatypes."""
homepage = "https://github.com/hpc/mpileaks"
url = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
url = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz" # NOQA
version('1.0', '8838c574b39202a57d7c2d68692718aa')
# FIXME: Add dependencies if required.
# depends_on('m4', type='build')
# depends_on('autoconf', type='build')
# depends_on('automake', type='build')
# depends_on('libtool', type='build')
# depends_on('foo')
def configure_args(self):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete the function
args = []
return args
def install(self, spec, prefix):
# FIXME: Unknown build system
make()
make('install')

View File

@@ -1,13 +1,13 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -25,7 +25,7 @@
from spack import *
class Mpileaks(AutotoolsPackage):
class Mpileaks(Package):
"""Tool to detect and report MPI objects like MPI_Requests and
MPI_Datatypes."""
@@ -38,8 +38,7 @@ class Mpileaks(AutotoolsPackage):
depends_on('adept-utils')
depends_on('callpath')
def configure_args(self):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete the function
args = []
return args
def install(self, spec, prefix):
# FIXME: Unknown build system
make()
make('install')

View File

@@ -1,13 +1,13 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -25,9 +25,10 @@
from spack import *
class Mpileaks(AutotoolsPackage):
class Mpileaks(Package):
"""Tool to detect and report MPI objects like MPI_Requests and
MPI_Datatypes."""
homepage = "https://github.com/hpc/mpileaks"
url = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
@@ -37,7 +38,7 @@ class Mpileaks(AutotoolsPackage):
depends_on('adept-utils')
depends_on('callpath')
def configure_args(self):
args = ['--with-adept-utils=%s' % self.spec['adept-utils'].prefix,
'--with-callpath=%s' % self.spec['callpath'].prefix]
return args
def install(self, spec, prefix):
configure()
make()
make('install')

View File

@@ -1,13 +1,13 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -25,7 +25,7 @@
from spack import *
class Mpileaks(AutotoolsPackage):
class Mpileaks(Package):
"""Tool to detect and report MPI objects like MPI_Requests and
MPI_Datatypes."""
@@ -34,17 +34,13 @@ class Mpileaks(AutotoolsPackage):
version('1.0', '8838c574b39202a57d7c2d68692718aa')
variant('stackstart', default=0, description='Specify the number of stack frames to truncate.')
depends_on('mpi')
depends_on('adept-utils')
depends_on('callpath')
def configure_args(self):
args = ['--with-adept-utils=%s' % self.spec['adept-utils'].prefix,
'--with-callpath=%s' % self.spec['callpath'].prefix]
stackstart = int(self.spec.variants['stackstart'].value)
if stackstart:
args.extend(['--with-stack-start-c=%s' % stackstart,
'--with-stack-start-fortran=%s' % stackstart])
return args
def install(self, spec, prefix):
configure('--with-adept-utils=%s' % self.spec['adept-utils'].prefix,
'--with-callpath=%s' % self.spec['callpath'].prefix,
'--prefix=%s' % self.spec.prefix)
make()
make('install')

View File

@@ -0,0 +1,53 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Mpileaks(Package):
"""Tool to detect and report MPI objects like MPI_Requests and
MPI_Datatypes."""
homepage = "https://github.com/hpc/mpileaks"
url = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
version('1.0', '8838c574b39202a57d7c2d68692718aa')
variant('stackstart', values=int, default=0, description='Specify the number of stack frames to truncate.')
depends_on('mpi')
depends_on('adept-utils')
depends_on('callpath')
def install(self, spec, prefix):
stackstart = int(self.spec.variants['stackstart'].value)
confargs = ['--with-adept-utils=%s' % self.spec['adept-utils'].prefix,
'--with-callpath=%s' % self.spec['callpath'].prefix,
'--prefix=%s' % self.spec.prefix]
if stackstart:
confargs.extend(['--with-stack-start-c=%s' % stackstart,
'--with-stack-start-fortran=%s' % stackstart])
configure(*confargs)
make()
make('install')

View File

@@ -0,0 +1,46 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Mpileaks(AutoToolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and
MPI_Datatypes."""
homepage = "https://github.com/hpc/mpileaks"
url = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
version('1.0', '8838c574b39202a57d7c2d68692718aa')
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def install(self, spec, prefix):
configure("--prefix=" + prefix,
"--with-adept-utils=" + spec['adept-utils'].prefix,
"--with-callpath=" + spec['callpath'].prefix)
make()
make("install")

View File

@@ -0,0 +1,51 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Mpileaks(AutoToolsPackage):
"""Tool to detect and report leaked MPI objects like MPI_Requests and
MPI_Datatypes."""
homepage = "https://github.com/hpc/mpileaks"
url = "https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
version('1.0', '8838c574b39202a57d7c2d68692718aa')
variant("stackstart", values=int, default=0,
description="Specify the number of stack frames to truncate")
depends_on("mpi")
depends_on("adept-utils")
depends_on("callpath")
def configure_args(self):
stackstart = int(self.spec.variants['stackstart'].value)
args = ["--with-adept-utils=" + spec['adept-utils'].prefix,
"--with-callpath=" + spec['callpath'].prefix]
if stackstart:
args.extend(['--with-stack-start-c=%s' % stackstart,
'--with-stack-start-fortran=%s' % stackstart])
return args

View File

@@ -0,0 +1,60 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
#
# This is a template package file for Spack. We've put "FIXME"
# next to all the things you'll want to change. Once you've handled
# them, you can save this file and test your package like this:
#
# spack install callpath
#
# You can edit this file again by typing:
#
# spack edit callpath
#
# See the Spack documentation for more information on packaging.
# If you submit this package back to Spack as a pull request,
# please first remove this boilerplate and all FIXME comments.
#
from spack import *
class Callpath(CMakePackage):
"""FIXME: Put a proper description of your package here."""
# FIXME: Add a proper url for your package's homepage here.
homepage = "http://www.example.com"
url = "https://github.com/llnl/callpath/archive/v1.0.1.tar.gz"
version('1.0.3', 'c89089b3f1c1ba47b09b8508a574294a')
# FIXME: Add dependencies if required.
# depends_on('foo')
def cmake_args(self):
# FIXME: Add arguments other than
# FIXME: CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE
# FIXME: If not needed delete this function
args = []
return args

View File

@@ -0,0 +1,42 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Callpath(CMakePackage):
"""Library for representing callpaths consistently in
distributed-memory performance tools."""
homepage = "https://github.com/llnl/callpath"
url = "https://github.com/llnl/callpath/archive/v1.0.3.tar.gz"
version('1.0.3', 'c89089b3f1c1ba47b09b8508a574294a')
depends_on("elf", type="link")
depends_on("libdwarf")
depends_on("dyninst")
depends_on("adept-utils")
depends_on("mpi")
depends_on("cmake@2.8:", type="build")

View File

@@ -0,0 +1,52 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Callpath(CMakePackage):
"""Library for representing callpaths consistently in
distributed-memory performance tools."""
homepage = "https://github.com/llnl/callpath"
url = "https://github.com/llnl/callpath/archive/v1.0.3.tar.gz"
version('1.0.3', 'c89089b3f1c1ba47b09b8508a574294a')
depends_on("elf", type="link")
depends_on("libdwarf")
depends_on("dyninst")
depends_on("adept-utils")
depends_on("mpi")
depends_on("cmake@2.8:", type="build")
def cmake_args(self):
args = ["-DCALLPATH_WALKER=dyninst"]
if self.spec.satisfies("^dyninst@9.3.0:"):
std.flag = self.compiler.cxx_flag
args.append("-DCMAKE_CXX_FLAGS='{0}' -fpermissive'".format(
std_flag))
return args

View File

@@ -0,0 +1,45 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Bowtie(MakefilePackage):
"""FIXME: Put a proper description of your package here."""
# FIXME: Add a proper url for your package's homepage here.
homepage = "http://www.example.com"
url = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
# FIXME: Add dependencies if required.
# depends_on('foo')
def edit(self, spec, prefix):
# FIXME: Edit the Makefile if necessary
# FIXME: If not needed delete this function
# makefile = FileFilter('Makefile')
# makefile.filter('CC = .*', 'CC = cc')
return

View File

@@ -0,0 +1,46 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Bowtie(MakefilePackage):
"""Bowtie is an ultrafast, memory efficient short read aligner
for short DNA sequences (reads) from next-gen sequencers."""
homepage = "https://sourceforge.net/projects/bowtie-bio/"
url = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
variant("tbb", default=False, description="Use Intel thread building block")
depends_on("tbb", when="+tbb")
def edit(self, spec, prefix):
# FIXME: Edit the Makefile if necessary
# FIXME: If not needed delete this function
# makefile = FileFilter('Makefile')
# makefile.filter('CC = .*', 'CC = cc')
return

View File

@@ -0,0 +1,44 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Bowtie(MakefilePackage):
"""Bowtie is an ultrafast, memory efficient short read aligner
for short DNA sequences (reads) from next-gen sequencers."""
homepage = "https://sourceforge.net/projects/bowtie-bio/"
url = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
variant("tbb", default=False, description="Use Intel thread building block")
depends_on("tbb", when="+tbb")
def edit(self, spec, prefix):
makefile = FileFilter("Makefile")
makefile.filter('CC= .*', 'CC = ' + env['CC'])
makefile.filter('CXX = .*', 'CXX = ' + env['CXX'])

View File

@@ -0,0 +1,53 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class Bowtie(MakefilePackage):
"""Bowtie is an ultrafast, memory efficient short read aligner
for short DNA sequences (reads) from next-gen sequencers."""
homepage = "https://sourceforge.net/projects/bowtie-bio/"
url = "https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip"
version('1.2.1.1', 'ec06265730c5f587cd58bcfef6697ddf')
variant("tbb", default=False, description="Use Intel thread building block")
depends_on("tbb", when="+tbb")
def edit(self, spec, prefix):
makefile = FileFilter("Makefile")
makefile.filter('CC= .*', 'CC = ' + env['CC'])
makefile.filter('CXX = .*', 'CXX = ' + env['CXX'])
def build(self, spec, prefix):
if "+tbb" in spec:
make()
else:
make("NO_TBB=1")
def install(self, spec, prefix):
make('prefix={0}'.format(self.prefix), 'install')

View File

@@ -0,0 +1,60 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
#
# This is a template package file for Spack. We've put "FIXME"
# next to all the things you'll want to change. Once you've handled
# them, you can save this file and test your package like this:
#
# spack install py-pandas
#
# You can edit this file again by typing:
#
# spack edit py-pandas
#
# See the Spack documentation for more information on packaging.
# If you submit this package back to Spack as a pull request,
# please first remove this boilerplate and all FIXME comments.
#
from spack import *
class PyPandas(PythonPackage):
"""FIXME: Put a proper description of your package here."""
# FIXME: Add a proper url for your package's homepage here.
homepage = "http://www.example.com"
url = "https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz"
version('0.19.0', 'bc9bb7188e510b5d44fbdd249698a2c3')
# FIXME: Add dependencies if required.
# depends_on('py-setuptools', type='build')
# depends_on('py-foo', type=('build', 'run'))
def build_args(self, spec, prefix):
# FIXME: Add arguments other than --prefix
# FIXME: If not needed delete this function
args = []
return args

View File

@@ -0,0 +1,51 @@
##############################################################################
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class PyPandas(PythonPackage):
"""pandas is a Python package providing fast, flexible, and expressive
data structures designed to make working with relational or
labeled data both easy and intuitive. It aims to be the
fundamental high-level building block for doing practical, real
world data analysis in Python. Additionally, it has the broader
goal of becoming the most powerful and flexible open source data
analysis / manipulation tool available in any language.
"""
homepage = "http://pandas.pydata.org/"
url = "https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz"
version('0.19.0', 'bc9bb7188e510b5d44fbdd249698a2c3')
version('0.18.0', 'f143762cd7a59815e348adf4308d2cf6')
version('0.16.1', 'fac4f25748f9610a3e00e765474bdea8')
version('0.16.0', 'bfe311f05dc0c351f8955fbd1e296e73')
depends_on('py-dateutil', type=('build', 'run'))
depends_on('py-numpy', type=('build', 'run'))
depends_on('py-setuptools', type='build')
depends_on('py-cython', type='build')
depends_on('py-pytz', type=('build', 'run'))
depends_on('py-numexpr', type=('build', 'run'))
depends_on('py-bottleneck', type=('build', 'run'))

View File

@@ -0,0 +1,512 @@
.. _advanced-packaging-tutorial:
============================
Advanced Topics in Packaging
============================
Spack tries to automatically configure packages with information from
dependencies such that all you need to do is to list the dependencies
(i.e. with the ``depends_on`` directive) and the build system (for example
by deriving from :code:`CmakePackage`).
However, there are many special cases. Often you need to retrieve details
about dependencies to set package-specific configuration options, or to
define package-specific environment variables used by the package's build
system. This tutorial covers how to retrieve build information from
dependencies, and how you can automatically provide important information to
dependents in your package.
----------------------
Setup for the tutorial
----------------------
The simplest way to follow along with this tutorial is to use our Docker image,
which comes with Spack and various packages pre-installed:
.. code-block:: console
$ docker pull alalazo/spack:advanced_packaging_tutorial
$ docker run --rm -h advanced-packaging-tutorial -it alalazo/spack:advanced_packaging_tutorial
root@advanced-packaging-tutorial:/#
root@advanced-packaging-tutorial:/# spack find
==> 20 installed packages.
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
arpack-ng@3.5.0 hdf5@1.10.1 libpciaccess@0.13.5 libtool@2.4.6 m4@1.4.18 ncurses@6.0 openblas@0.2.20 openssl@1.0.2k superlu@5.2.1 xz@5.2.3
cmake@3.9.4 hwloc@1.11.8 libsigsegv@2.11 libxml2@2.9.4 mpich@3.2 netlib-lapack@3.6.1 openmpi@3.0.0 pkg-config@0.29.2 util-macros@1.19.1 zlib@1.2.11
If you already started the image, you can set the ``EDITOR`` environment
variable to your preferred editor (``vi``, ``emacs``, and ``nano`` are included in the image)
and move directly to :ref:`adv_pkg_tutorial_start`.
If you choose not to use the Docker image, you can clone the Spack repository
and build the necessary bits yourself:
.. code-block:: console
$ git clone https://github.com/spack/spack.git
Cloning into 'spack'...
remote: Counting objects: 92731, done.
remote: Compressing objects: 100% (1108/1108), done.
remote: Total 92731 (delta 1964), reused 4186 (delta 1637), pack-reused 87932
Receiving objects: 100% (92731/92731), 33.31 MiB | 64.00 KiB/s, done.
Resolving deltas: 100% (43557/43557), done.
Checking connectivity... done.
$ cd spack
$ git checkout tutorials/advanced_packaging
Branch tutorials/advanced_packaging set up to track remote branch tutorials/advanced_packaging from origin.
Switched to a new branch 'tutorials/advanced_packaging'
At this point you can install the software that will be used
during the rest of the tutorial (the output of the commands is omitted
for the sake of brevity):
.. code-block:: console
$ spack install openblas
$ spack install netlib-lapack
$ spack install mpich
$ spack install openmpi
$ spack install --only=dependencies armadillo ^openblas
$ spack install --only=dependencies netcdf
$ spack install --only=dependencies elpa
Now, you are ready to set your preferred ``EDITOR`` and continue with
the rest of the tutorial.
.. _adv_pkg_tutorial_start:
------------------------------
Retrieving library information
------------------------------
Although Spack attempts to help packages locate their dependency libraries
automatically (e.g. by setting PKG_CONFIG_PATH and CMAKE_PREFIX_PATH), a
package may have unique configuration options that are required to locate
libraries. When a package needs information about dependency libraries, the
general approach in Spack is to query the dependencies for the locations of
their libraries and set configuration options accordingly. By default most
Spack packages know how to automatically locate their libraries. This section
covers how to retrieve library information from dependencies and how to locate
libraries when the default logic doesn't work.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Accessing dependency libraries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you need to access the libraries of a dependency, you can do so
via the ``libs`` property of the spec, for example in the ``arpack-ng``
package:
.. code-block:: python
def install(self, spec, prefix):
lapack_libs = spec['lapack'].libs.joined(';')
blas_libs = spec['blas'].libs.joined(';')
cmake(*[
'-DLAPACK_LIBRARIES={0}'.format(lapack_libs),
'-DBLAS_LIBRARIES={0}'.format(blas_libs)
], '.')
Note that ``arpack-ng`` is querying virtual dependencies, which Spack
automatically resolves to the installed implementation (e.g. ``openblas``
for ``blas``).
We've started work on a package for ``armadillo``. You should open it,
read through the comment that starts with ``# TUTORIAL:`` and complete
the ``cmake_args`` section:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack edit armadillo
If you followed the instructions in the package, when you are finished your
``cmake_args`` method should look like:
.. code-block:: python
def cmake_args(self):
spec = self.spec
return [
# ARPACK support
'-DARPACK_LIBRARY={0}'.format(spec['arpack-ng'].libs.joined(";")),
# BLAS support
'-DBLAS_LIBRARY={0}'.format(spec['blas'].libs.joined(";")),
# LAPACK support
'-DLAPACK_LIBRARY={0}'.format(spec['lapack'].libs.joined(";")),
# SuperLU support
'-DSuperLU_INCLUDE_DIR={0}'.format(spec['superlu'].prefix.include),
'-DSuperLU_LIBRARY={0}'.format(spec['superlu'].libs.joined(";")),
# HDF5 support
'-DDETECT_HDF5={0}'.format('ON' if '+hdf5' in spec else 'OFF')
]
As you can see, getting the list of libraries that your dependencies provide
is as easy as accessing the their ``libs`` attribute. Furthermore, the interface
remains the same whether you are querying regular or virtual dependencies.
At this point you can complete the installation of ``armadillo`` using ``openblas``
as a LAPACK provider:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install armadillo ^openblas
==> pkg-config is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkg-config-0.29.2-ae2hwm7q57byfbxtymts55xppqwk7ecj
...
==> superlu is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/superlu-5.2.1-q2mbtw2wo4kpzis2e2n227ip2fquxrno
==> Installing armadillo
==> Using cached archive: /usr/local/var/spack/cache/armadillo/armadillo-8.100.1.tar.xz
==> Staging archive: /usr/local/var/spack/stage/armadillo-8.100.1-n2eojtazxbku6g4l5izucwwgnpwz77r4/armadillo-8.100.1.tar.xz
==> Created stage in /usr/local/var/spack/stage/armadillo-8.100.1-n2eojtazxbku6g4l5izucwwgnpwz77r4
==> Applied patch undef_linux.patch
==> Building armadillo [CMakePackage]
==> Executing phase: 'cmake'
==> Executing phase: 'build'
==> Executing phase: 'install'
==> Successfully installed armadillo
Fetch: 0.01s. Build: 3.96s. Total: 3.98s.
[+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/armadillo-8.100.1-n2eojtazxbku6g4l5izucwwgnpwz77r4
Hopefully the installation went fine and the code we added expanded to the right list
of semicolon separated libraries (you are encouraged to open ``armadillo``'s
build logs to double check).
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Providing libraries to dependents
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Spack provides a default implementation for ``libs`` which often works
out of the box. A user can write a package definition without having to
implement a ``libs`` property and dependents can retrieve its libraries
as shown in the above section. However, the default implementation assumes that
libraries follow the naming scheme ``lib<package name>.so`` (or e.g.
``lib<package name>.a`` for static libraries). Packages which don't
follow this naming scheme must implement this function themselves, e.g.
``opencv``:
.. code-block:: python
@property
def libs(self):
shared = "+shared" in self.spec
return find_libraries(
"libopencv_*", root=self.prefix, shared=shared, recurse=True
)
This issue is common for packages which implement an interface (i.e.
virtual package providers in Spack). If we try to build another version of
``armadillo`` tied to ``netlib-lapack`` we'll notice that this time the
installation won't complete:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install armadillo ^netlib-lapack
==> pkg-config is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pkg-config-0.29.2-ae2hwm7q57byfbxtymts55xppqwk7ecj
...
==> openmpi is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f
==> Installing arpack-ng
==> Using cached archive: /usr/local/var/spack/cache/arpack-ng/arpack-ng-3.5.0.tar.gz
==> Already staged arpack-ng-3.5.0-bloz7cqirpdxj33pg7uj32zs5likz2un in /usr/local/var/spack/stage/arpack-ng-3.5.0-bloz7cqirpdxj33pg7uj32zs5likz2un
==> No patches needed for arpack-ng
==> Building arpack-ng [Package]
==> Executing phase: 'install'
==> Error: RuntimeError: Unable to recursively locate netlib-lapack libraries in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-lapack-3.6.1-jjfe23wgt7nkjnp2adeklhseg3ftpx6z
RuntimeError: RuntimeError: Unable to recursively locate netlib-lapack libraries in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-lapack-3.6.1-jjfe23wgt7nkjnp2adeklhseg3ftpx6z
/usr/local/var/spack/repos/builtin/packages/arpack-ng/package.py:105, in install:
5 options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix)
6
7 # Make sure we use Spack's blas/lapack:
>> 8 lapack_libs = spec['lapack'].libs.joined(';')
9 blas_libs = spec['blas'].libs.joined(';')
10
11 options.extend([
See build log for details:
/usr/local/var/spack/stage/arpack-ng-3.5.0-bloz7cqirpdxj33pg7uj32zs5likz2un/arpack-ng-3.5.0/spack-build.out
Unlike ``openblas`` which provides a library named ``libopenblas.so``,
``netlib-lapack`` provides ``liblapack.so``, so it needs to implement
customized library search logic. Let's edit it:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack edit netlib-lapack
and follow the instructions in the ``# TUTORIAL:`` comment as before.
What we need to implement is:
.. code-block:: python
@property
def lapack_libs(self):
shared = True if '+shared' in self.spec else False
return find_libraries(
'liblapack', root=self.prefix, shared=shared, recurse=True
)
i.e. a property that returns the correct list of libraries for the LAPACK interface.
We use the name ``lapack_libs`` rather than ``libs`` because
``netlib-lapack`` can also provide ``blas``, and when it does it is provided
as a separate library file. Using this name ensures that when
dependents ask for ``lapack`` libraries, ``netlib-lapack`` will retrieve only
the libraries associated with the ``lapack`` interface. Now we can finally
install ``armadillo ^netlib-lapack``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install armadillo ^netlib-lapack
...
==> Building armadillo [CMakePackage]
==> Executing phase: 'cmake'
==> Executing phase: 'build'
==> Executing phase: 'install'
==> Successfully installed armadillo
Fetch: 0.01s. Build: 3.75s. Total: 3.76s.
[+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/armadillo-8.100.1-sxmpu5an4dshnhickh6ykchyfda7jpyn
Since each implementation of a virtual package is responsible for locating the
libraries associated with the interfaces it provides, dependents do not need
to include special-case logic for different implementations and for example
need only ask for :code:`spec['blas'].libs`.
---------------------------------------
Modifying a package's build environment
---------------------------------------
Spack sets up several environment variables like PATH by default to aid in
building a package, but many packages make use of environment variables which
convey specific information about their dependencies, for example MPICC. This
section covers how update your Spack packages so that package-specific
environment variables are defined at build-time.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Set environment variables in dependent packages at build-time
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dependencies can set environment variables that are required when their
dependents build. For example, when a package depends on a python extension
like py-numpy, Spack's ``python`` package will add it to ``PYTHONPATH``
so it is available at build time; this is required because the default setup
that spack does is not sufficient for python to import modules.
To provide environment setup for a dependent, a package can implement the
:py:func:`setup_dependent_environment <spack.package.PackageBase.setup_dependent_environment>`
function. This function takes as a parameter a :py:class:`EnvironmentModifications <spack.environment.EnvironmentModifications>`
object which includes convenience methods to update the environment. For
example an MPI implementation can set ``MPICC`` for packages that depend on it:
.. code-block:: python
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc'))
In this case packages which depend on ``mpi`` will have ``MPICC`` defined in
their environment when they build. This section is focused on modifying the
build-time environment represented by ``spack_env``, but it's worth noting that
modifications to ``run_env`` are included in Spack's automatically-generated
module files.
We can practice by editing the ``mpich`` package to set the ``MPICC``
environment variable in the build-time environment of dependent packages.
.. code-block:: console
root@advanced-packaging-tutorial:/# spack edit mpich
Once you're finished the method should look like this:
.. code-block:: python
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('MPICC', join_path(self.prefix.bin, 'mpicc'))
spack_env.set('MPICXX', join_path(self.prefix.bin, 'mpic++'))
spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77'))
spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90'))
spack_env.set('MPICH_CC', spack_cc)
spack_env.set('MPICH_CXX', spack_cxx)
spack_env.set('MPICH_F77', spack_f77)
spack_env.set('MPICH_F90', spack_fc)
spack_env.set('MPICH_FC', spack_fc)
At this point we can, for instance, install ``netlib-scalapack``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install netlib-scalapack ^mpich
...
==> Created stage in /usr/local/var/spack/stage/netlib-scalapack-2.0.2-km7tsbgoyyywonyejkjoojskhc5knz3z
==> No patches needed for netlib-scalapack
==> Building netlib-scalapack [CMakePackage]
==> Executing phase: 'cmake'
==> Executing phase: 'build'
==> Executing phase: 'install'
==> Successfully installed netlib-scalapack
Fetch: 0.01s. Build: 3m 59.86s. Total: 3m 59.87s.
[+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netlib-scalapack-2.0.2-km7tsbgoyyywonyejkjoojskhc5knz3z
and double check the environment logs to verify that every variable was
set to the correct value.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Set environment variables in your own package
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Packages can modify their own build-time environment by implementing the
:py:func:`setup_environment <spack.package.PackageBase.setup_environment>` function.
For ``qt`` this looks like:
.. code-block:: python
def setup_environment(self, spack_env, run_env):
spack_env.set('MAKEFLAGS', '-j{0}'.format(make_jobs))
run_env.set('QTDIR', self.prefix)
When ``qt`` builds, ``MAKEFLAGS`` will be defined in the environment.
To contrast with ``qt``'s :py:func:`setup_dependent_environment <spack.package.PackageBase.setup_dependent_environment>`
function:
.. code-block:: python
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
spack_env.set('QTDIR', self.prefix)
Let's see how it works by completing the ``elpa`` package:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack edit elpa
In the end your method should look like:
.. code-block:: python
def setup_environment(self, spack_env, run_env):
spec = self.spec
spack_env.set('CC', spec['mpi'].mpicc)
spack_env.set('FC', spec['mpi'].mpifc)
spack_env.set('CXX', spec['mpi'].mpicxx)
spack_env.set('SCALAPACK_LDFLAGS', spec['scalapack'].libs.joined())
spack_env.append_flags('LDFLAGS', spec['lapack'].libs.search_flags)
spack_env.append_flags('LIBS', spec['lapack'].libs.link_flags)
At this point it's possible to proceed with the installation of ``elpa``.
----------------------
Other Packaging Topics
----------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Attach attributes to other packages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Build tools usually also provide a set of executables that can be used
when another package is being installed. Spack gives the opportunity
to monkey-patch dependent modules and attach attributes to them. This
helps make the packager experience as similar as possible to what would
have been the manual installation of the same package.
An example here is the ``automake`` package, which overrides
:py:func:`setup_dependent_package <spack.package.PackageBase.setup_dependent_package>`:
.. code-block:: python
def setup_dependent_package(self, module, dependent_spec):
# Automake is very likely to be a build dependency,
# so we add the tools it provides to the dependent module
executables = ['aclocal', 'automake']
for name in executables:
setattr(module, name, self._make_executable(name))
so that every other package that depends on it can use directly ``aclocal``
and ``automake`` with the usual function call syntax of :py:class:`Executable <spack.util.executable.Executable>`:
.. code-block:: python
aclocal('--force')
^^^^^^^^^^^^^^^^^^^^^^^
Extra query parameters
^^^^^^^^^^^^^^^^^^^^^^^
An advanced feature of the Spec's build-interface protocol is the support
for extra parameters after the subscript key. In fact, any of the keys used in the query
can be followed by a comma separated list of extra parameters which can be
inspected by the package receiving the request to fine-tune a response.
Let's look at an example and try to install ``netcdf``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install netcdf
==> libsigsegv is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
==> m4 is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-r5envx3kqctwwflhd4qax4ahqtt6x43a
...
==> Error: AttributeError: 'list' object has no attribute 'search_flags'
AttributeError: AttributeError: 'list' object has no attribute 'search_flags'
/usr/local/var/spack/repos/builtin/packages/netcdf/package.py:207, in configure_args:
50 # used instead.
51 hdf5_hl = self.spec['hdf5:hl']
52 CPPFLAGS.append(hdf5_hl.headers.cpp_flags)
>> 53 LDFLAGS.append(hdf5_hl.libs.search_flags)
54
55 if '+parallel-netcdf' in self.spec:
56 config_args.append('--enable-pnetcdf')
See build log for details:
/usr/local/var/spack/stage/netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj/netcdf-4.4.1.1/spack-build.out
We can see from the error that ``netcdf`` needs to know how to link the *high-level interface*
of ``hdf5``, and thus passes the extra parameter ``hl`` after the request to retrieve it.
Clearly the implementation in the ``hdf5`` package is not complete, and we need to fix it:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack edit hdf5
If you followed the instructions correctly, the code added to the
``lib`` property should be similar to:
.. code-block:: python
:emphasize-lines: 1
query_parameters = self.spec.last_query.extra_parameters
key = tuple(sorted(query_parameters))
libraries = query2libraries[key]
shared = '+shared' in self.spec
return find_libraries(
libraries, root=self.prefix, shared=shared, recurse=True
)
where we highlighted the line retrieving the extra parameters. Now we can successfully
complete the installation of ``netcdf``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install netcdf
==> libsigsegv is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libsigsegv-2.11-fypapcprssrj3nstp6njprskeyynsgaz
==> m4 is already installed in /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/m4-1.4.18-r5envx3kqctwwflhd4qax4ahqtt6x43a
...
==> Installing netcdf
==> Using cached archive: /usr/local/var/spack/cache/netcdf/netcdf-4.4.1.1.tar.gz
==> Already staged netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj in /usr/local/var/spack/stage/netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj
==> Already patched netcdf
==> Building netcdf [AutotoolsPackage]
==> Executing phase: 'autoreconf'
==> Executing phase: 'configure'
==> Executing phase: 'build'
==> Executing phase: 'install'
==> Successfully installed netcdf
Fetch: 0.01s. Build: 24.61s. Total: 24.62s.
[+] /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/netcdf-4.4.1.1-gk2xxhbqijnrdwicawawcll4t3c7dvoj

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,795 @@
.. _build-systems-tutorial:
==============================
Spack Package Build Systems
==============================
You may begin to notice after writing a couple of package template files a
pattern emerge for some packages. For example, you may find yourself writing
an :code:`install()` method that invokes: :code:`configure`, :code:`cmake`,
:code:`make`, :code:`make install`. You may also find yourself writing
:code:`"prefix=" + prefix` as an argument to :code:`configure` or :code:`cmake`.
Rather than having you repeat these lines for all packages, Spack has
classes that can take care of these patterns. In addition,
these package files allow for finer grained control of these build systems.
In this section, we will describe each build system and give examples on
how these can be manipulated to install a package.
-----------------------
Package Class Hierarchy
-----------------------
.. graphviz::
digraph G {
node [
shape = "record"
]
edge [
arrowhead = "empty"
]
PackageBase -> Package [dir=back]
PackageBase -> MakefilePackage [dir=back]
PackageBase -> AutotoolsPackage [dir=back]
PackageBase -> CMakePackage [dir=back]
PackageBase -> PythonPackage [dir=back]
}
The above diagram gives a high level view of the class hierarchy and how each
package relates. Each subclass inherits from the :code:`PackageBaseClass`
super class. The bulk of the work is done in this super class which includes
fetching, extracting to a staging directory and installing. Each subclass
then adds additional build-system-specific functionality. In the following
sections, we will go over examples of how to utilize each subclass and to see
how powerful these abstractions are when packaging.
-----------------
Package
-----------------
We've already seen examples of a :code:`Package` class in our walkthrough for writing
package files, so we won't be spending much time with them here. Briefly,
the Package class allows for abitrary control over the build process, whereas
subclasses rely on certain patterns (e.g. :code:`configure` :code:`make`
:code:`make install`) to be useful. :code:`Package` classes are particularly useful
for packages that have a non-conventional way of being built since the packager
can utilize some of Spack's helper functions to customize the building and
installing of a package.
-------------------
Autotools
-------------------
As we have seen earlier, packages using :code:`Autotools` use :code:`configure`,
:code:`make` and :code:`make install` commands to execute the build and
install process. In our :code:`Package` class, your typical build incantation will
consist of the following:
.. code-block:: python
def install(self, spec, prefix):
configure("--prefix=" + prefix)
make()
make("install")
You'll see that this looks similar to what we wrote in our packaging tutorial.
The :code:`Autotools` subclass aims to simplify writing package files and provides
convenience methods to manipulate each of the different phases for a :code:`Autotools`
build system.
:code:`Autotools` packages consist of four phases:
1. :code:`autoreconf()`
2. :code:`configure()`
3. :code:`build()`
4. :code:`install()`
Each of these phases have sensible defaults. Let's take a quick look at some
the internals of the :code:`Autotools` class:
.. code-block:: console
$ spack edit --build-system autotools
This will open the :code:`AutotoolsPackage` file in your text editor.
.. note::
The examples showing code for these classes is abridged to avoid having
long examples. We only show what is relevant to the packager.
.. literalinclude:: ../../../lib/spack/spack/build_systems/autotools.py
:language: python
:emphasize-lines: 42,45,62
:lines: 40-95,259-267
:linenos:
Important to note are the highlighted lines. These properties allow the
packager to set what build targets and install targets they want for their
package. If, for example, we wanted to add as our build target :code:`foo`
then we can append to our :code:`build_targets` property:
.. code-block:: python
build_targets = ["foo"]
Which is similiar to invoking make in our Package
.. code-block:: python
make("foo")
This is useful if we have packages that ignore environment variables and need
a command-line argument.
Another thing to take note of is in the :code:`configure()` method.
Here we see that the :code:`prefix` argument is already included since it is a
common pattern amongst packages using :code:`Autotools`. We then only have to
override :code:`configure_args()`, which will then return it's output to
to :code:`configure()`. Then, :code:`configure()` will append the common
arguments
Packagers also have the option to run :code:`autoreconf` in case a package
needs to update the build system and generate a new :code:`configure`. Though,
for the most part this will be unnecessary.
Let's look at the :code:`mpileaks` package.py file that we worked on earlier:
.. code-block:: console
$ spack edit mpileaks
Notice that mpileaks is a :code:`Package` class but uses the :code:`Autotools`
build system. Although this package is acceptable let's make this into an
:code:`AutotoolsPackage` class and simplify it further.
.. literalinclude:: tutorial/examples/Autotools/0.package.py
:language: python
:emphasize-lines: 28
:linenos:
We first inherit from the :code:`AutotoolsPackage` class.
Although we could keep the :code:`install()` method, most of it can be handled
by the :code:`AutotoolsPackage` base class. In fact, the only thing that needs
to be overridden is :code:`configure_args()`.
.. literalinclude:: tutorial/examples/Autotools/1.package.py
:language: python
:emphasize-lines: 42,43
:linenos:
Since Spack takes care of setting the prefix for us we can exclude that as
an argument to :code:`configure`. Our packages look simpler, and the packager
does not need to worry about whether they have properly included :code:`configure`
and :code:`make`.
This version of the :code:`mpileaks` package installs the same as the previous,
but the :code:`AutotoolsPackage` class lets us do it with a cleaner looking
package file.
-----------------
Makefile
-----------------
Packages that utilize :code:`Make` or a :code:`Makefile` usually require you
to edit a :code:`Makefile` to set up platform and compiler specific variables.
These packages are handled by the :code:`Makefile` subclass which provides
convenience methods to help write these types of packages.
A :code:`MakefilePackage` class has three phases that can be overridden. These include:
1. :code:`edit()`
2. :code:`build()`
3. :code:`install()`
Packagers then have the ability to control how a :code:`Makefile` is edited, and
what targets to include for the build phase or install phase.
Let's also take a look inside the :code:`MakefilePackage` class:
.. code-block:: console
$ spack edit --build-system makefile
Take note of the following:
.. literalinclude:: ../../../lib/spack/spack/build_systems/makefile.py
:language: python
:lines: 33-79,89-107
:emphasize-lines: 48,54,61
:linenos:
Similar to :code:`Autotools`, :code:`MakefilePackage` class has properties
that can be set by the packager. We can also override the different
methods highlighted.
Let's try to recreate the Bowtie_ package:
.. _Bowtie: http://bowtie-bio.sourceforge.net/index.shtml
.. code-block:: console
$ spack create -f https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip
==> This looks like a URL for bowtie
==> Found 1 version of bowtie:
1.2.1.1 https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip
==> How many would you like to checksum? (default is 1, q to abort) 1
==> Downloading...
==> Fetching https://downloads.sourceforge.net/project/bowtie-bio/bowtie/1.2.1.1/bowtie-1.2.1.1-src.zip
######################################################################## 100.0%
==> Checksummed 1 version of bowtie
==> This package looks like it uses the makefile build system
==> Created template for bowtie package
==> Created package file: /Users/mamelara/spack/var/spack/repos/builtin/packages/bowtie/package.py
Once the fetching is completed, Spack will open up your text editor in the
usual fashion and create a template of a :code:`MakefilePackage` package.py.
.. literalinclude:: tutorial/examples/Makefile/0.package.py
:language: python
:linenos:
Spack was successfully able to detect that :code:`Bowtie` uses :code:`Make`.
Let's add in the rest of our details for our package:
.. literalinclude:: tutorial/examples/Makefile/1.package.py
:language: python
:emphasize-lines: 29,30,32,33,37,39
:linenos:
As we mentioned earlier, most packages using a :code:`Makefile` have hard-coded
variables that must be edited. These variables are fine if you happen to not
care about setup or types of compilers used but Spack is designed to work with
any compiler. The :code:`MakefilePackage` subclass makes it easy to edit
these :code:`Makefiles` by having an :code:`edit()` method that
can be overridden.
Let's take a look at the default :code:`Makefile` that :code:`Bowtie` provides.
If we look inside, we see that :code:`CC` and :code:`CXX` point to our GNU
compiler:
.. code-block:: console
$ spack stage bowtie
.. note::
As usual make sure you have shell support activated with spack:
:code:`source /path/to/spack_root/spack/share/spack/setup-env.sh`
.. code-block:: console
$ spack cd -s bowtie
$ cd bowtie-1.2
$ vim Makefile
.. code-block:: make
CPP = g++ -w
CXX = $(CPP)
CC = gcc
LIBS = $(LDFLAGS) -lz
HEADERS = $(wildcard *.h)
To fix this, we need to use the :code:`edit()` method to write our custom
:code:`Makefile`.
.. literalinclude:: tutorial/examples/Makefile/2.package.py
:language: python
:emphasize-lines: 42,43,44
:linenos:
Here we use a :code:`FileFilter` object to edit our :code:`Makefile`. It takes
in a regular expression and then replaces :code:`CC` and :code:`CXX` to whatever
Spack sets :code:`CC` and :code:`CXX` environment variables to. This allows us to
build :code:`Bowtie` with whatever compiler we specify through Spack's
:code:`spec` syntax.
Let's change the build and install phases of our package:
.. literalinclude:: tutorial/examples/Makefile/3.package.py
:language: python
:emphasize-lines: 46, 52
:linenos:
Here demonstrate another strategy that we can use to manipulate our package
We can provide command-line arguments to :code:`make()`. Since :code:`Bowtie`
can use :code:`tbb` we can either add :code:`NO_TBB=1` as a argument to prevent
:code:`tbb` support or we can just invoke :code:`make` with no arguments.
:code:`Bowtie` requires our :code:`install_target` to provide a path to
the install directory. We can do this by providing :code:`prefix=` as a command
line argument to :code:`make()`.
Let's look at a couple of other examples and go through them:
.. code-block:: console
$ spack edit cbench
Some packages allow environment variables to be set and will honor them.
Packages that use :code:`?=` for assignment in their :code:`Makefile`
can be set using environment variables. In our :code:`cbench` example we
set two environment variables in our :code:`edit()` method:
.. code-block:: python
def edit(self, spec, prefix):
# The location of the Cbench source tree
env['CBENCHHOME'] = self.stage.source_path
# The location that will contain all your tests and your results
env['CBENCHTEST'] = prefix
# ... more code
As you may have noticed, we didn't really write anything to the :code:`Makefile`
but rather we set environment variables that will override variables set in
the :code:`Makefile`.
Some packages include a configuration file that sets certain compiler variables,
platform specific variables, and the location of dependencies or libraries.
If the file is simple and only requires a couple of changes, we can overwrite
those entries with our :code:`FileFilter` object. If the configuration involves
complex changes, we can write a new configuration file from scratch.
Let's look at an example of this in the :code:`elk` package:
.. code-block:: console
$ spack edit elk
.. code-block:: python
def edit(self, spec, prefix):
# Dictionary of configuration options
config = {
'MAKE': 'make',
'AR': 'ar'
}
# Compiler-specific flags
flags = ''
if self.compiler.name == 'intel':
flags = '-O3 -ip -unroll -no-prec-div'
elif self.compiler.name == 'gcc':
flags = '-O3 -ffast-math -funroll-loops'
elif self.compiler.name == 'pgi':
flags = '-O3 -lpthread'
elif self.compiler.name == 'g95':
flags = '-O3 -fno-second-underscore'
elif self.compiler.name == 'nag':
flags = '-O4 -kind=byte -dusty -dcfuns'
elif self.compiler.name == 'xl':
flags = '-O3'
config['F90_OPTS'] = flags
config['F77_OPTS'] = flags
# BLAS/LAPACK support
# Note: BLAS/LAPACK must be compiled with OpenMP support
# if the +openmp variant is chosen
blas = 'blas.a'
lapack = 'lapack.a'
if '+blas' in spec:
blas = spec['blas'].libs.joined()
if '+lapack' in spec:
lapack = spec['lapack'].libs.joined()
# lapack must come before blas
config['LIB_LPK'] = ' '.join([lapack, blas])
# FFT support
if '+fft' in spec:
config['LIB_FFT'] = join_path(spec['fftw'].prefix.lib,
'libfftw3.so')
config['SRC_FFT'] = 'zfftifc_fftw.f90'
else:
config['LIB_FFT'] = 'fftlib.a'
config['SRC_FFT'] = 'zfftifc.f90'
# MPI support
if '+mpi' in spec:
config['F90'] = spec['mpi'].mpifc
config['F77'] = spec['mpi'].mpif77
else:
config['F90'] = spack_fc
config['F77'] = spack_f77
config['SRC_MPI'] = 'mpi_stub.f90'
# OpenMP support
if '+openmp' in spec:
config['F90_OPTS'] += ' ' + self.compiler.openmp_flag
config['F77_OPTS'] += ' ' + self.compiler.openmp_flag
else:
config['SRC_OMP'] = 'omp_stub.f90'
# Libxc support
if '+libxc' in spec:
config['LIB_libxc'] = ' '.join([
join_path(spec['libxc'].prefix.lib, 'libxcf90.so'),
join_path(spec['libxc'].prefix.lib, 'libxc.so')
])
config['SRC_libxc'] = ' '.join([
'libxc_funcs.f90',
'libxc.f90',
'libxcifc.f90'
])
else:
config['SRC_libxc'] = 'libxcifc_stub.f90'
# Write configuration options to include file
with open('make.inc', 'w') as inc:
for key in config:
inc.write('{0} = {1}\n'.format(key, config[key]))
:code:`config` is just a dictionary that we can add key-value pairs to. By the
end of the :code:`edit()` method we write the contents of our dictionary to
:code:`make.inc`.
---------------
CMake
---------------
CMake_ is another common build system that has been gaining popularity. It works
in a similar manner to :code:`Autotools` but with differences in variable names,
the number of configuration options available, and the handling of shared libraries.
Typical build incantations look like this:
.. _CMake: https://cmake.org
.. code-block:: python
def install(self, spec, prefix):
cmake("-DCMAKE_INSTALL_PREFIX:PATH=/path/to/install_dir ..")
make()
make("install")
As you can see from the example above, it's very similar to invoking
:code:`configure` and :code:`make` in an :code:`Autotools` build system. However,
the variable names and options differ. Most options in CMake are prefixed
with a :code:`'-D'` flag to indicate a configuration setting.
In the :code:`CMakePackage` class we can override the following phases:
1. :code:`cmake()`
2. :code:`build()`
3. :code:`install()`
The :code:`CMakePackage` class also provides sensible defaults so we only need to
override :code:`cmake_args()`.
Let's look at these defaults in the :code:`CMakePackage` class:
.. code-block:: console
$ spack edit --build-system cmake
And go into a bit of detail on the highlighted sections:
.. literalinclude:: ../../../lib/spack/spack/build_systems/cmake.py
:language: python
:lines: 37-92, 94-155, 174-211
:emphasize-lines: 57,68,86,94,96,99,100,101,102,111,117,135,136
:linenos:
Some :code:`CMake` packages use different generators. Spack is able to support
Unix-Makefile_ generators as well as Ninja_ generators.
.. _Unix-Makefile: https://cmake.org/cmake/help/v3.4/generator/Unix%20Makefiles.html
.. _Ninja: https://cmake.org/cmake/help/v3.4/generator/Ninja.html
Default generator is :code:`Unix Makefile`.
Next we setup the build type. In :code:`CMake` you can specify the build type
that you want. Options include:
1. empty
2. Debug
3. Release
4. RelWithDebInfo
5. MinSizeRel
With these options you can specify whether you want your executable to have
the debug version only, release version or the release with debug information.
Release executables tend to be more optimized than Debug. In Spack, we set
the default as RelWithDebInfo unless otherwise specified through a variant.
Spack then automatically sets up the :code:`-DCMAKE_INSTALL_PREFIX` path,
appends the build type (RelDebInfo default), and then specifies a verbose
:code:`Makefile`.
Next we add the :code:`rpaths` to :code:`-DCMAKE_INSTALL_RPATH:STRING`.
Finally we add to :code:`-DCMAKE_PREFIX_PATH:STRING` the locations of all our
dependencies so that :code:`CMake` can find them.
In the end our :code:`cmake` line will look like this (example is :code:`xrootd`):
.. code-block:: console
$ cmake $HOME/spack/var/spack/stage/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk/xrootd-4.6.0 -G Unix Makefiles -DCMAKE_INSTALL_PREFIX:PATH=$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_FIND_FRAMEWORK:STRING=LAST -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=FALSE -DCMAKE_INSTALL_RPATH:STRING=$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk/lib:$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/xrootd-4.6.0-4ydm74kbrp4xmcgda5upn33co5pwddyk/lib64 -DCMAKE_PREFIX_PATH:STRING=$HOME/spack/opt/spack/darwin-sierra-x86_64/clang-9.0.0-apple/cmake-3.9.4-hally3vnbzydiwl3skxcxcbzsscaasx5
Saves a lot of typing doesn't it?
Let's try to recreate callpath_:
.. _callpath: https://github.com/LLNL/callpath.git
.. code-block:: console
$ spack create -f https://github.com/llnl/callpath/archive/v1.0.3.tar.gz
==> This looks like a URL for callpath
==> Found 4 versions of callpath:
1.0.3 https://github.com/LLNL/callpath/archive/v1.0.3.tar.gz
1.0.2 https://github.com/LLNL/callpath/archive/v1.0.2.tar.gz
1.0.1 https://github.com/LLNL/callpath/archive/v1.0.1.tar.gz
1.0 https://github.com/LLNL/callpath/archive/v1.0.tar.gz
==> How many would you like to checksum? (default is 1, q to abort) 1
==> Downloading...
==> Fetching https://github.com/LLNL/callpath/archive/v1.0.3.tar.gz
######################################################################## 100.0%
==> Checksummed 1 version of callpath
==> This package looks like it uses the cmake build system
==> Created template for callpath package
==> Created package file: /Users/mamelara/spack/var/spack/repos/builtin/packages/callpath/package.py
which then produces the following template:
.. literalinclude:: tutorial/examples/Cmake/0.package.py
:language: python
:linenos:
Again we fill in the details:
.. literalinclude:: tutorial/examples/Cmake/1.package.py
:language: python
:linenos:
:emphasize-lines: 28,32,33,37,38,39,40,41,42
As mentioned earlier, Spack will use sensible defaults to prevent repeated code
and to make writing :code:`CMake` package files simpler.
In callpath, we want to add options to :code:`CALLPATH_WALKER` as well as add
compiler flags. We add the following options like so:
.. literalinclude:: tutorial/examples/Cmake/2.package.py
:language: python
:linenos:
:emphasize-lines: 45,49,50
Now we can control our build options using :code:`cmake_args()`. If defaults are
sufficient enough for the package, we can leave this method out.
:code:`CMakePackage` classes allow for control of other features in the
build system. For example, you can specify the path to the "out of source"
build directory and also point to the root of the :code:`CMakeLists.txt` file if it
is placed in a non-standard location.
A good example of a package that has its :code:`CMakeLists.txt` file located at a
different location is found in :code:`spades`.
.. code-block:: console
$ spack edit spade
.. code-block:: python
root_cmakelists_dir = "src"
Here :code:`root_cmakelists_dir` will tell Spack where to find the location
of :code:`CMakeLists.txt`. In this example, it is located a directory level below in
the :code:`src` directory.
Some :code:`CMake` packages also require the :code:`install` phase to be
overridden. For example, let's take a look at :code:`sniffles`.
.. code-block:: console
$ spack edit sniffles
In the :code:`install()` method, we have to manually install our targets
so we override the :code:`install()` method to do it for us:
.. code-block:: python
# the build process doesn't actually install anything, do it by hand
def install(self, spec, prefix):
mkdir(prefix.bin)
src = "bin/sniffles-core-{0}".format(spec.version.dotted)
binaries = ['sniffles', 'sniffles-debug']
for b in binaries:
install(join_path(src, b), join_path(prefix.bin, b))
--------------
PythonPackage
--------------
Python extensions and modules are built differently from source than most
applications. Python uses a :code:`setup.py` script to install Python modules.
The script consists of a call to :code:`setup()` which provides the information
required to build a module to Distutils. If you're familiar with pip or
easy_install, setup.py does the same thing.
These modules are usually installed using the following line:
.. code-block:: console
$ python setup.py install
There are also a list of commands and phases that you can call. To see the full
list you can run:
.. code-block:: console
$ python setup.py --help-commands
Standard commands:
build build everything needed to install
build_py "build" pure Python modules (copy to build directory)
build_ext build C/C++ extensions (compile/link to build directory)
build_clib build C/C++ libraries used by Python extensions
build_scripts "build" scripts (copy and fixup #! line)
clean (no description available)
install install everything from build directory
install_lib install all Python modules (extensions and pure Python)
install_headers install C/C++ header files
install_scripts install scripts (Python or otherwise)
install_data install data files
sdist create a source distribution (tarball, zip file, etc.)
register register the distribution with the Python package index
bdist create a built (binary) distribution
bdist_dumb create a "dumb" built distribution
bdist_rpm create an RPM distribution
bdist_wininst create an executable installer for MS Windows
upload upload binary package to PyPI
check perform some checks on the package
To see the defaults that Spack has for each a methods, we will take a look
at the :code:`PythonPackage` class:
.. code-block:: console
$ spack edit --build-system python
We see the following:
.. literalinclude:: ../../../lib/spack/spack/build_systems/python.py
:language: python
:lines: 35, 161-364
:linenos:
Each of these methods have sensible defaults or they can be overridden.
We can write package files for Python packages using the :code:`Package` class,
but the class brings with it a lot of methods that are useless for Python packages.
Instead, Spack has a :code: `PythonPackage` subclass that allows packagers
of Python modules to be able to invoke :code:`setup.py` and use :code:`Distutils`,
which is much more familiar to a typical python user.
We will write a package file for Pandas_:
.. _pandas: https://pandas.pydata.org
.. code-block:: console
$ spack create -f https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz
==> This looks like a URL for pandas
==> Warning: Spack was unable to fetch url list due to a certificate verification problem. You can try running spack -k, which will not check SSL certificates. Use this at your own risk.
==> Found 1 version of pandas:
0.19.0 https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz
==> How many would you like to checksum? (default is 1, q to abort) 1
==> Downloading...
==> Fetching https://pypi.io/packages/source/p/pandas/pandas-0.19.0.tar.gz
######################################################################## 100.0%
==> Checksummed 1 version of pandas
==> This package looks like it uses the python build system
==> Changing package name from pandas to py-pandas
==> Created template for py-pandas package
==> Created package file: /Users/mamelara/spack/var/spack/repos/builtin/packages/py-pandas/package.py
And we are left with the following template:
.. literalinclude:: tutorial/examples/PyPackage/0.package.py
:language: python
:linenos:
As you can see this is not any different than any package template that we have
written. We have the choice of providing build options or using the sensible
defaults
Luckily for us, there is no need to provide build args.
Next we need to find the dependencies of a package. Dependencies are usually
listed in :code:`setup.py`. You can find the dependencies by searching for
:code:`install_requires` keyword in that file. Here it is for :code:`Pandas`:
.. code-block:: python
# ... code
if sys.version_info[0] >= 3:
setuptools_kwargs = {
'zip_safe': False,
'install_requires': ['python-dateutil >= 2',
'pytz >= 2011k',
'numpy >= %s' % min_numpy_ver],
'setup_requires': ['numpy >= %s' % min_numpy_ver],
}
if not _have_setuptools:
sys.exit("need setuptools/distribute for Py3k"
"\n$ pip install distribute")
# ... more code
You can find a more comprehensive list at the Pandas documentation_.
.. _documentation: https://pandas.pydata.org/pandas-docs/stable/install.html
By reading the documentation and :code:`setup.py` we found that :code:`Pandas`
depends on :code:`python-dateutil`, :code:`pytz`, and :code:`numpy`, :code:`numexpr`,
and finally :code:`bottleneck`.
Here is the completed :code:`Pandas` script:
.. literalinclude:: tutorial/examples/PyPackage/1.package.py
:language: python
:linenos:
It is quite important to declare all the dependencies of a Python package.
Spack can "activate" Python packages to prevent the user from having to
load each dependency module explictly. If a dependency is missed, Spack will
be unable to properly activate the package and it will cause an issue. To
learn more about extensions go to :ref:`cmd-spack-extensions`.
From this example, you can see that building Python modules is made easy
through the :code:`PythonPackage` class.
-------------------
Other Build Systems
-------------------
Although we won't get in depth with any of the other build systems that Spack
supports, it is worth mentioning that Spack does provide subclasses
for the following build systems:
1. :code:`IntelPackage`
2. :code:`SconsPackage`
3. :code:`WafPackage`
4. :code:`RPackage`
5. :code:`PerlPackage`
6. :code:`QMake`
Each of these classes have their own abstractions to help assist in writing
package files. For whatever doesn't fit nicely into the other build-systems,
you can use the :code:`Package` class.
Hopefully by now you can see how we aim to make packaging simple and
robust through these classes. If you want to learn more about these build
systems, check out :ref:`installation_procedure` in the Packaging Guide.

View File

@@ -0,0 +1,843 @@
.. _configs-tutorial:
======================
Configuration Tutorial
======================
This tutorial will guide you through various configuration options
that allow you to customize Spack's behavior with respect to
software installation. We will first cover the configuration file
hierarchy. Then, we will cover configuration options for compilers,
focusing on how it can be used to extend Spack's compiler auto-detection.
Next, we will cover the packages configuration file, focusing on
how it can be used to override default build options as well as
specify external package installations to use. Finally, we will
briefly touch on the config configuration file, which manages more
high-level Spack configuration options.
For all of these features we will demonstrate how we build up a full
configuration file. For some we will then demonstrate how the
configuration affects the install command, and for others we will use
the ``spack spec`` command to demonstrate how the configuration
changes have affected Spack's concretization algorithm. The provided
output is all from a server running Ubuntu version 16.04.
.. _configs-tutorial-scopes:
--------------------
Configuration Scopes
--------------------
Depending on your use case, you may want to provide configuration
settings common to everyone on your team, or you may want to set
default behaviors specific to a single user account. Spack provides
4 configuration *scopes* to handle this customization. These scopes,
in order of decreasing priority, are:
====================== ==================================
Scope Directory
====================== ==================================
User configurations ``~/.spack``
Project configurations ``$SPACK_ROOT/etc/spack``
System configurations ``/etc/spack``
Default configurations ``$SPACK_ROOT/etc/spack/defaults``
====================== ==================================
Spack's default configuration settings reside in
``$SPACK_ROOT/etc/spack/defaults``. These are useful for reference,
but should never be directly edited. To override these settings,
create new configuration files in any of the higher-priority
configuration scopes.
A particular cluster may have multiple Spack installations associated
with different projects. To provide settings common to all Spack
installations, put your configuration files in ``/etc/spack``.
To provide settings specific to a particular Spack installation,
you can use the ``$SPACK_ROOT/etc/spack`` directory.
For settings specific to a particular user, you will want to add
configuration files to the ``~/.spack`` directory. When Spack first
checked for compilers on your system, you may have noticed that it
placed your compiler configuration in this directory.
Some facilities manage multiple platforms from a single shared
filesystem. In order to handle this, each of the configuration
scopes listed above has two *sub-scopes*: platform-specific and
platform-independent. For example, compiler settings can be stored
in ``compilers.yaml`` configuration files in the following locations:
- ``~/.spack/<platform>/compilers.yaml``
- ``~/.spack/compilers.yaml``
- ``$SPACK_ROOT/etc/spack/<platform>/compilers.yaml``
- ``$SPACK_ROOT/etc/spack/compilers.yaml``
- ``/etc/spack/<platform>/compilers.yaml``
- ``/etc/spack/compilers.yaml``
- ``$SPACK_ROOT/etc/defaults/<platform>/compilers.yaml``
- ``$SPACK_ROOT/etc/defaults/compilers.yaml``
These files are listed in decreasing order of precedence, so files in
``~/.spack/<platform>`` will override settings in ``~/.spack``.
Spack configurations are YAML dictionaries. Every configuration file
begins with a top-level dictionary that tells Spack which
configuration set it modifies. When Spack checks it's configuration,
the configuration scopes are updated as dictionaries in increasing
order of precedence, allowing higher precedence files to override
lower. YAML dictionaries use a colon ":" to specify key-value
pairs. Spack extends YAML syntax slightly to allow a double-colon
"::" to specify a key-value pair. When a double-colon is used to
specify a key-value pair, instead of adding that section Spack
replaces what was in that section with the new value. For example, a
user compilers configuration file as follows:
.. code-block:: yaml
compilers::
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: ubuntu16.04
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: gcc@5.4.0
target: x86_64
ensures that no other compilers are used, as the user configuration
scope is the last scope searched and the ``compilers::`` line replaces
all previous configuration files information. If the same
configuration file had a single colon instead of the double colon, it
would add the gcc version 5.4.0 compiler to whatever other compilers
were listed in other configuration files.
.. _configs-tutorial-compilers:
----------------------
Compiler Configuration
----------------------
For most tasks, we can use Spack with the compilers auto-detected the
first time Spack runs on a system. As we discussed in the basic
installation section, we can also tell Spack where compilers are
located using the ``spack compiler add`` command. However, in some
circumstances we want even more fine-grained control over the
compilers available. This section will teach you how to exercise that
control using the compilers configuration file.
We will start by opening the compilers configuration file
.. code-block:: console
$ spack config edit compilers
.. code-block:: yaml
compilers:
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: ubuntu16.04
paths:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: null
fc: null
spec: clang@3.8.0-2ubuntu4
target: x86_64
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: ubuntu16.04
paths:
cc: /usr/bin/gcc
cxx: /usr/bin/g++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: gcc@5.4.0
target: x86_64
This specifies one version of the gcc compiler and one version of the
clang compiler with no flang compiler. Now suppose we have a code that
we want to compile with the clang compiler for C/C++ code, but with
gfortran for Fortran components. We can do this by adding another entry
to the ``compilers.yaml`` file.
.. code-block:: yaml
- compiler:
environment: {}
extra_rpaths: []
flags: {}
modules: []
operating_system: ubuntu16.04
paths:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: clang@3.8.0-gfortran
target: x86_64
Let's talk about the sections of this compiler entry that we've changed.
The biggest change we've made is to the ``paths`` section. This lists
the paths to the compilers to use for each language/specification.
In this case, we point to the clang compiler for C/C++ and the gfortran
compiler for both specifications of Fortran. We've also changed the
``spec`` entry for this compiler. The ``spec`` entry is effectively the
name of the compiler for Spack. It consists of a name and a version
number, separated by the ``@`` sigil. The name must be one of the supported
compiler names in Spack (gcc, intel, pgi, xl, xl_r, clang, nag, cce).
The version number can be an arbitrary string of alphanumeric characters,
as well as ``-``, ``.``, and ``_``. The ``target`` and ``operating_system``
sections we leave unchanged. These sections specify when Spack can use
different compilers, and are primarily useful for configuration files that
will be used across multiple systems.
We can verify that our new compiler works by invoking it now:
.. code-block:: console
$ spack install zlib %clang@3.8.0-gfortran
...
This new compiler also works on Fortran codes:
.. code-block:: console
$ spack install cfitsio %clang@3.8.0-gfortran
...
^^^^^^^^^^^^^^
Compiler Flags
^^^^^^^^^^^^^^
Some compilers may require specific compiler flags to work properly in
a particular computing environment. Spack provides configuration
options for setting compiler flags every time a specific compiler is
invoked. These flags become part of the package spec and therefore of
the build provenance. As on the command line, the flags are set
through the implicit build variables ``cflags``, ``cxxflags``, ``cppflags``,
``fflags``, ``ldflags``, and ``ldlibs``.
Let's open our compilers configuration file again and add a compiler flag.
.. code-block:: yaml
- compiler:
environment: {}
extra_rpaths: []
flags:
cppflags: -g
modules: []
operating_system: ubuntu16.04
paths:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: /usr/bin/gfortran
fc: /usr/bin/gfortran
spec: clang@3.8.0-gfortran
target: x86_64
We can test this out using the ``spack spec`` command to show how the
spec is concretized.
.. code-block:: console
$ spack spec cfitsio %clang@3.8.0-gfortran
Input spec
--------------------------------
cfitsio%clang@3.8.0-gfortran
Normalized
--------------------------------
cfitsio%clang@3.8.0-gfortran
Concretized
--------------------------------
cfitsio@3.410%clang@3.8.0-gfortran cppflags="-g" +bzip2+shared arch=linux-ubuntu16.04-x86_64
^bzip2@1.0.6%clang@3.8.0-gfortran cppflags="-g" +shared arch=linux-ubuntu16.04-x86_64
We can see that "cppflags=-g" has been added to every node in the DAG.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Advanced Compiler Configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There are three fields of the compiler configuration entry that we
have not talked about yet.
The ``modules`` field of the compiler is used primarily on Cray systems,
but can be useful on any system that has compilers that are only
useful when a particular module is loaded. Any modules in the
``modules`` field of the compiler configuration will be loaded as part
of the build environment for packages using that compiler.
The ``extra_rpaths`` field of the compiler configuration is used for
compilers that do not rpath all of their dependencies by
default. Since compilers are generally installed externally to Spack,
Spack is unable to manage compiler dependencies and enforce
rpath usage. This can lead to packages not finding link dependencies
imposed by the compiler properly. For compilers that impose link
dependencies on the resulting executables that are not rpath'ed into
the executable automatically, the ``extra_rpath`` field of the compiler
configuration tells Spack which dependencies to rpath into every
executable created by that compiler. The executables will then be able
to find the link dependencies imposed by the compiler.
The ``environment`` field of the compiler configuration is used for
compilers that require environment variables to be set during build
time. For example, if your Intel compiler suite requires the
``INTEL_LICENSE_FILE`` environment variable to point to the proper
license server, you can set this in ``compilers.yaml``.
-------------------------------
Configuring Package Preferences
-------------------------------
Package preferences in Spack are managed through the ``packages.yaml``
configuration file. First, we will look at the default
``packages.yaml`` file.
.. code-block:: console
$ spack config --scope defaults edit packages
.. literalinclude:: ../../../etc/spack/defaults/packages.yaml
:language: yaml
This sets the default preferences for compilers and for providers of
virtual packages. To illustrate how this works, suppose we want to
change the preferences to prefer the clang compiler and to prefer
mpich over openmpi. Currently, we prefer gcc and openmpi
.. code-block:: console
$ spack spec hdf5
Input spec
--------------------------------
hdf5
Normalized
--------------------------------
hdf5
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%gcc@5.4.0+cxx~debug+fortran+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^openmpi@3.0.0%gcc@5.4.0~cuda fabrics= ~java schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
^hwloc@1.11.7%gcc@5.4.0~cuda+libxml2~pci arch=linux-ubuntu16.04-x86_64
^libxml2@2.9.4%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
^pkg-config@0.29.2%gcc@5.4.0+internal_glib arch=linux-ubuntu16.04-x86_64
^xz@5.2.3%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%gcc@5.4.0+pic+shared arch=linux-ubuntu16.04-x86_64
Now we will open the packages configuration file and update our
preferences.
.. code-block:: console
$ spack config edit packages
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
Because of the configuration scoping we discussed earlier, this
overrides the default settings just for these two items.
.. code-block:: console
$ spack spec hdf5
Input spec
--------------------------------
hdf5
Normalized
--------------------------------
hdf5
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^mpich@3.2%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%clang@3.8.0-2ubuntu4+pic+shared arch=linux-ubuntu16.04-x86_64
^^^^^^^^^^^^^^^^^^^
Variant Preferences
^^^^^^^^^^^^^^^^^^^
The packages configuration file can also set variant preferences for
package variants. For example, let's change our preferences to build all
packages without shared libraries. We will accomplish this by turning
off the ``shared`` variant on all packages that have one.
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
variants: ~shared
We can check the effect of this command with ``spack spec hdf5`` again.
.. code-block:: console
$ spack spec hdf5
Input spec
--------------------------------
hdf5
Normalized
--------------------------------
hdf5
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^mpich@3.2%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%clang@3.8.0-2ubuntu4+pic~shared arch=linux-ubuntu16.04-x86_64
So far we have only made global changes to the package preferences. As
we've seen throughout this tutorial, hdf5 builds with MPI enabled by
default in Spack. If we were working on a project that would routinely
need serial hdf5, that might get annoying quickly, having to type
``hdf5~mpi`` all the time. Instead, we'll update our preferences for
hdf5.
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
variants: ~shared
hdf5:
variants: ~mpi
Now hdf5 will concretize without an MPI dependency by default.
.. code-block:: console
$ spack spec hdf5
Input spec
--------------------------------
hdf5
Normalized
--------------------------------
hdf5
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%clang@3.8.0-2ubuntu4+pic~shared arch=linux-ubuntu16.04-x86_64
In general, every attribute that we can set for all packages we can
set separately for an individual package.
^^^^^^^^^^^^^^^^^
External Packages
^^^^^^^^^^^^^^^^^
The packages configuration file also controls when Spack will build
against an externally installed package. On these systems we have a
pre-installed zlib.
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
variants: ~shared
hdf5:
variants: ~mpi
zlib:
paths:
zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
Here, we've told Spack that zlib 1.2.8 is installed on our system.
We've also told it the installation prefix where zlib can be found.
We don't know exactly which variants it was built with, but that's
okay.
.. code-block:: console
$ spack spec hdf5
Input spec
--------------------------------
hdf5
Normalized
--------------------------------
hdf5
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%gcc@5.4.0~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
You'll notice that Spack is now using the external zlib installation,
but the compiler used to build zlib is now overriding our compiler
preference of clang. If we explicitly specify clang:
.. code-block:: console
$ spack spec hdf5 %clang
Input spec
--------------------------------
hdf5%clang
Normalized
--------------------------------
hdf5%clang
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
Spack concretizes to both hdf5 and zlib being built with clang.
This has a side-effect of rebuilding zlib. If we want to force
Spack to use the system zlib, we have two choices. We can either
specify it on the command line, or we can tell Spack that it's
not allowed to build its own zlib. We'll go with the latter.
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
variants: ~shared
hdf5:
variants: ~mpi
zlib:
paths:
zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
buildable: False
Now Spack will be forced to choose the external zlib.
.. code-block:: console
$ spack spec hdf5 %clang
Input spec
--------------------------------
hdf5%clang
Normalized
--------------------------------
hdf5%clang
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl~mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^zlib@1.2.8%gcc@5.4.0+optimize+pic~shared arch=linux-ubuntu16.04-x86_64
This gets slightly more complicated with virtual dependencies. Suppose
we don't want to build our own MPI, but we now want a parallel version
of hdf5? Well, fortunately we have mpich installed on these systems.
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
variants: ~shared
hdf5:
variants: ~mpi
zlib:
paths:
zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
buildable: False
mpich:
paths:
mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64: /usr
buildable: False
If we concretize ``hdf5+mpi`` with this configuration file, we will just
build with an alternate MPI implementation.
.. code-block:: console
$ spack spec hdf5 %clang +mpi
Input spec
--------------------------------
hdf5%clang+mpi
Normalized
--------------------------------
hdf5%clang+mpi
^mpi
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^openmpi@3.0.0%clang@3.8.0-2ubuntu4~cuda fabrics=verbs ~java schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
^hwloc@1.11.8%clang@3.8.0-2ubuntu4~cuda+libxml2+pci arch=linux-ubuntu16.04-x86_64
^libpciaccess@0.13.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^libtool@2.4.6%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^pkg-config@0.29.2%clang@3.8.0-2ubuntu4+internal_glib arch=linux-ubuntu16.04-x86_64
^util-macros@1.19.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^libxml2@2.9.4%clang@3.8.0-2ubuntu4~python arch=linux-ubuntu16.04-x86_64
^xz@5.2.3%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^zlib@1.2.8%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
We have only expressed a preference for mpich over other MPI
implementations, and Spack will happily build with one we haven't
forbid it from using. We could resolve this by requesting
``hdf5%clang+mpi^mpich`` explicitly, or we can configure Spack not to
use any other MPI implementation. Since we're focused on
configurations here and the former can get tedious, we'll need to
modify our ``packages.yaml`` file again.
While we're at it, we can configure hdf5 to build with MPI by default
again.
.. code-block:: yaml
packages:
all:
compiler: [clang, gcc, intel, pgi, xl, nag]
providers:
mpi: [mpich, openmpi]
variants: ~shared
zlib:
paths:
zlib@1.2.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64: /usr
buildable: False
mpich:
paths:
mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64: /usr
buildable: False
openmpi:
buildable: False
mvapich2:
buildable: False
intel-mpi:
buildable: False
spectrum-mpi:
buildable: False
intel-parallel-studio:
buildable: False
Now that we have configured Spack not to build any of the possible
providers for MPI we can try again.
.. code-block:: console
$ spack spec hdf5 %clang
Input spec
--------------------------------
hdf5%clang
Normalized
--------------------------------
hdf5%clang
^mpi
^zlib@1.1.2:
Concretized
--------------------------------
hdf5@1.10.1%clang@3.8.0-2ubuntu4+cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^mpich@3.2%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
^zlib@1.2.8%gcc@5.4.0+pic+shared arch=linux-ubuntu16.04-x86_64
By configuring most of our package preferences in ``packages.yaml``,
we can cut down on the amount of work we need to do when specifying
a spec on the command line. In addition to compiler and variant
preferences, we can specify version preferences as well. Anything
that you can specify on the command line can be specified in
``packages.yaml`` with the exact same spec syntax.
.. warning::
Make sure to delete or move the ``packages.yaml`` you have been
editing up to this point. Otherwise, it will change the hashes
of your packages, leading to differences in the output of later
tutorial sections.
-----------------
High-level Config
-----------------
In addition to compiler and package settings, Spack allows customization
of several high-level settings. These settings are stored in the generic
``config.yaml`` configuration file. You can see the default settings by
running:
.. code-block:: console
$ spack config --scope defaults edit config
.. literalinclude:: ../../../etc/spack/defaults/config.yaml
:language: yaml
As you can see, many of the directories Spack uses can be customized.
For example, you can tell Spack to install packages to a prefix
outside of the ``$SPACK_ROOT`` hierarchy. Module files can be
written to a central location if you are using multiple Spack
instances. If you have a fast scratch filesystem, you can run builds
from this filesystem with the following ``config.yaml``:
.. code-block:: yaml
config:
build_stage:
- /scratch/$user
On systems with compilers that absolutely *require* environment variables
like ``LD_LIBRARY_PATH``, it is possible to prevent Spack from cleaning
the build environment with the ``dirty`` setting:
.. code-block:: yaml
config:
dirty: true
However, this is strongly discouraged, as it can pull unwanted libraries
into the build.
One last setting that may be of interest to many users is the ability
to customize the parallelism of Spack builds. By default, Spack
installs all packages in parallel with the number of jobs equal to the
number of cores on the node. For example, on a node with 36 cores,
this will look like:
.. code-block:: console
$ spack install --verbose zlib
==> Installing zlib
==> Using cached archive: ~/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
==> Staging archive: ~/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
==> Created stage in ~/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
==> No patches needed for zlib
==> Building zlib [Package]
==> Executing phase: 'install'
==> './configure' '--prefix=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
Checking for shared library support...
Building shared library libz.so.1.2.11 with ~/spack/lib/spack/env/gcc/gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
==> 'make' '-j36'
...
==> 'make' '-j36' 'install'
...
As you can see, we are building with all 36 cores on the node. If you are
on a shared login node, this can slow down the system for other users. If
you have a strict ulimit or restriction on the number of available licenses,
you may not be able to build at all with this many cores. On nodes with 64+
cores, you may not see a significant speedup of the build anyway. To limit
the number of cores our build uses, set ``build_jobs`` like so:
.. code-block:: yaml
config:
build_jobs: 4
If we uninstall and reinstall zlib, we see that it now uses only 4 cores:
.. code-block:: console
$ spack install -v zlib
==> Installing zlib
==> Using cached archive: ~/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
==> Staging archive: ~/spack/var/spack/stage/zlib-1.2.11-ezuwp4pa52e75v6iweawzwymmf4ahxxn/zlib-1.2.11.tar.gz
==> Created stage in ~/spack/var/spack/stage/zlib-1.2.11-ezuwp4pa52e75v6iweawzwymmf4ahxxn
==> No patches needed for zlib
==> Building zlib [Package]
==> Executing phase: 'install'
==> './configure' '--prefix=~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/zlib-1.2.11-ezuwp4pa52e75v6iweawzwymmf4ahxxn'
Checking for shared library support...
Building shared library libz.so.1.2.11 with ~/spack/lib/spack/env/gcc/gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
==> 'make' '-j4'
...
==> 'make' '-j4' 'install'
...
Obviously, if you want to build everything in serial for whatever reason,
you would set ``build_jobs`` to 1.

File diff suppressed because it is too large Load Diff

View File

@@ -43,7 +43,7 @@ A few things before we get started:
Creating the Package File
-------------------------
Spack comes with a handy command to create a new package: ``spack create``
Spack comes with a handy command to create a new package: ``spack create``.
This command is given the location of a package's source code, downloads
the code, and sets up some basic packaging infrastructure for you. The
@@ -52,12 +52,20 @@ we run ``spack create`` on it:
.. code-block:: console
$ spack create -f https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
==> This looks like a URL for mpileaks version 1.0
==> Creating template for package mpileaks
$ spack create -t generic -f https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
==> This looks like a URL for mpileaks
==> Found 1 version of mpileaks:
1.0 https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
==> How many would you like to checksum? (default is 1, q to abort) 1
==> Downloading...
==> Fetching https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
###################################################################################### 100.0%
==> Fetching https://github.com/LLNL/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
############################################################################# 100.0%
==> Checksummed 1 version of mpileaks
==> Using specified package template: 'generic'
==> Created template for mpileaks package
==> Created package file: $SPACK_ROOT/var/spack/repos/builtin/packages/mpileaks/package.py
And Spack should spawn a text editor with this file:
@@ -192,29 +200,27 @@ Now when we try to install this package a lot more happens:
.. code-block:: console
$ spack install mpileaks
...
==> libdwarf is already installed in SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libdwarf-20160507-er4jrjynul6uba7wiu5tasuj35roxw6m
==> dyninst is already installed in SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/dyninst-9.3.2-t7mau34jv3e76mpspdzhf2p2a6k7qubg
==> callpath is already installed in SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4-ikbbkvfmsfmqzo624nvvrbooovf7egoc
==> Installing mpileaks
==> openmpi is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz
==> callpath is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/callpath-1.0.2-zm4pf3gasgxeibyu2y262suktvaazube
==> adept-utils is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/adept-utils-1.0.1-7p7ezxwtajdglj6cmojy2vybjct4j4jz
==> Using cached archive: /usr/workspace/wsa/legendre/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Already staged mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk in /usr/workspace/wsa/legendre/spack/var/spack/stage/mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk
==> Already patched mpileaks
==> Building mpileaks [AutotoolsPackage]
==> Executing phase : 'autoreconf'
==> Executing phase : 'configure'
==> Error: ProcessError: Command exited with status 1:
'./configure' '--prefix=/usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk'
/usr/workspace/wsa/legendre/spack/lib/spack/spack/build_systems/autotools.py:150, in configure:
145 def configure(self, spec, prefix):
146 """Runs configure with the arguments specified in `configure_args`
147 and an appropriately set prefix
148 """
149 options = ['--prefix={0}'.format(prefix)] + self.configure_args()
>> 150 inspect.getmodule(self).configure(*options)
==> Using cached archive: SPACK_ROOT/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Already staged mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7 in SPACK_ROOT/var/spack/stage/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> Error: ProcessError: Command exited with status 2:
'make' '-j36'
1 error found in build log:
1 ==> Executing phase: 'install'
2 ==> 'make' '-j36'
>> 3 make: *** No targets specified and no makefile found. Stop.
See build log for details:
/tmp/legendre/spack-stage/spack-stage-7V5yyk/mpileaks-1.0/spack-build.out
SPACK_ROOT/var/spack/stage/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7/mpileaks-1.0/spack-build.out
Note that this command may take a while to run and produce more output if
you don't have an MPI already installed or configured in Spack.
@@ -228,44 +234,79 @@ Debugging Package Builds
------------------------
Our ``mpileaks`` package is still not building. It may be obvious to
many of you that we're still missing the configure options. But let's
pretend we're not all intelligent developers and use this opportunity
spend some time debugging. We a few options that can tell us about
many of you that we never ran the configure script. Let's add a
call to ``configure()`` to the top of the install routine. The resulting
package.py is in ``$SPACK_ROOT/lib/spack/docs/tutorial/examples/3.package.py``:
.. literalinclude:: tutorial/examples/3.package.py
:lines: 25-
:language: python
If we re-run we still get errors:
.. code-block:: console
==> Installing mpileaks
==> Using cached archive: SPACK_ROOT/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Already staged mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7 in SPACK_ROOT/var/spack/stage/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> Error: ProcessError: Command exited with status 1:
'./configure'
1 error found in build log:
[ ... ]
21 checking whether SPACK_ROOT/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
22 checking whether we are using the GNU C++ compiler... yes
23 checking whether SPACK_ROOT/lib/spack/env/gcc/g++ accepts -g... yes
24 checking dependency style of SPACK_ROOT/lib/spack/env/gcc/g++... gcc3
25 checking for SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
26 Checking whether SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc responds to '-showme:compile'... yes
>> 27 configure: error: unable to locate adept-utils installation
See build log for details:
SPACK_ROOT/var/spack/stage/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7/mpileaks-1.0/spack-build.out
Again, the problem may be obvious. But let's pretend we're not
all intelligent developers and use this opportunity spend some
time debugging. We have a few options that can tell us about
what's going wrong:
As per the error message, Spack has given us a ``spack-build.out`` debug log:
.. code-block:: console
==> './configure' '--prefix=/usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk'
==> Executing phase: 'install'
==> './configure'
checking metadata... no
checking installation directory variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc
checking for gcc... SPACK_ROOT/lib/spack/env/gcc/gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc accepts -g... yes
checking for /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
checking whether SPACK_ROOT/lib/spack/env/gcc/gcc accepts -g... yes
checking for SPACK_ROOT/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc... gcc3
checking whether /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
checking dependency style of SPACK_ROOT/lib/spack/env/gcc/gcc... gcc3
checking whether SPACK_ROOT/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/g++... gcc3
checking for /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz/bin/mpicc... /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz/bin/mpicc
Checking whether /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz/bin/mpicc responds to '-showme:compile'... yes
configure: error: unable to locate ``adept-utils`` installation
checking whether SPACK_ROOT/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of SPACK_ROOT/lib/spack/env/gcc/g++... gcc3
checking for SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
Checking whether SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc responds to '-showme:compile'... yes
configure: error: unable to locate adept-utils installation
This gives us the output from the build, and it's fairly obvious that
mpileaks isn't finding its ``adept-utils`` package. Spack has
This gives us the output from the build, and mpileaks isn't
finding its ``adept-utils`` package. Spack has
automatically added the include and library directories of
``adept-utils`` to the compiler's search path, but some packages like
mpileaks can sometimes be picky and still want things spelled out on
@@ -292,26 +333,26 @@ From here we can manually re-run the build:
checking installation directory variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc
checking for gcc... SPACK_ROOT/lib/spack/env/gcc/gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc accepts -g... yes
checking for /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
checking whether SPACK_ROOT/lib/spack/env/gcc/gcc accepts -g... yes
checking for SPACK_ROOT/lib/spack/env/gcc/gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc... gcc3
checking whether /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
checking dependency style of SPACK_ROOT/lib/spack/env/gcc/gcc... gcc3
checking whether SPACK_ROOT/lib/spack/env/gcc/gcc and cc understand -c and -o together... yes
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of /usr/workspace/wsa/legendre/spack/lib/spack/env/gcc/g++... gcc3
checking for /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz/bin/mpicc... /usr/workspace/wsa /legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz/bin/mpicc
Checking whether /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz/bin/mpicc responds to '-showme:compile'... yes
checking whether SPACK_ROOT/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of SPACK_ROOT/lib/spack/env/gcc/g++... gcc3
checking for SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
Checking whether SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc responds to '-showme:compile'... yes
configure: error: unable to locate adept-utils installation
We're seeing the same error, but now we're in a shell where we can run
@@ -328,9 +369,9 @@ Specifying Configure Arguments
Let's add the configure arguments to the mpileaks' ``package.py``. This
version can be found in
``$SPACK_ROOT/lib/spack/docs/tutorial/examples/3.package.py``:
``$SPACK_ROOT/lib/spack/docs/tutorial/examples/4.package.py``:
.. literalinclude:: tutorial/examples/3.package.py
.. literalinclude:: tutorial/examples/4.package.py
:lines: 25-
:language: python
@@ -339,37 +380,35 @@ This is all we need for working mpileaks! If we install now we'll see:
.. code-block:: console
$ spack install mpileaks
spack install mpileaks
...
==> Installing mpileaks
==> openmpi is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz
==> callpath is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/callpath-1.0.2-zm4pf3gasgxeibyu2y262suktvaazube
==> adept-utils is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/adept-utils-1.0.1-7p7ezxwtajdglj6cmojy2vybjct4j4jz
==> Using cached archive: /usr/workspace/wsa/legendre/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Already staged mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk in /usr/workspace/wsa/legendre/spack/var/spack/stage/mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk
==> Already patched mpileaks
==> Building mpileaks [AutotoolsPackage]
==> Executing phase : 'autoreconf'
==> Executing phase : 'configure'
==> Executing phase : 'build'
==> Executing phase : 'install'
==> Using cached archive: SPACK_ROOT/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: SPACK_ROOT/var/spack/stage/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7/mpileaks-1.0.tar.gz
==> Created stage in SPACK_ROOT/var/spack/stage/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> Successfully installed mpileaks
Fetch: 0.00s. Build: 14.08s. Total: 14.08s.
[+] /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/mpileaks-1.0-eum4hmnlt6ovalwjnciaygfb3beja4gk
Fetch: 0.00s. Build: 9.01s. Total: 9.01s.
[+] SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpileaks-1.0-lfgf53rns5mswq25rxckzgvmjc6ywam7
We took a few shortcuts for this package that are worth highlighting.
Spack automatically detected that mpileaks was an Autotools-based package
when we ran ``spack create``. If this had been a CMake-based package we
would have been filling in a ``cmake_args`` function instead of
``configure_args``. If Spack hadn't been able to detect the build
system, we'd be filling in a generic install method that would manually
be calling build commands, such as is found in the ``zlib`` package:
There are some special circumstances in package that are worth highlighting.
Normally spack would have automatically detected that mpileaks was an
Autotools-based package when we ran ``spack create`` and made it an ``AutoToolsPackage`` class (except we added the ``-t generic`` option to skip this). Instead of
a full install routine we would have just written:
.. code-block:: python
def install(self, spec, prefix):
configure('--prefix={0}'.format(prefix))
make()
make('install')
def configure_args(self):
args = ['--with-adept-utils=%s' % self.spec['adept-utils'].prefix,
'--with-callpath=%s' % self.spec['callpath'].prefix]
return args
Similarly, if this had been a CMake-based package we
would have been filling in a ``cmake_args`` function instead of
``configure_args``. There are similar default package types for
many build environments.
--------
Variants
@@ -381,9 +420,9 @@ that it walks. Let's add a variant to allow users to set this when they
build in Spack.
To do this, we'll add a variant to our package, as per the following (see
``$SPACK_ROOT/lib/spack/docs/tutorial/examples/4.package.py``):
``$SPACK_ROOT/lib/spack/docs/tutorial/examples/5.package.py``):
.. literalinclude:: tutorial/examples/4.package.py
.. literalinclude:: tutorial/examples/5.package.py
:lines: 25-
:language: python
@@ -394,18 +433,15 @@ configure line (output truncated for length):
.. code-block:: console
$ spack install --verbose mpileaks stackstart=4
...
==> Installing mpileaks
==> openmpi is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/openmpi-2.0.1-5ee5j34c2y4kb5c3joygrgahidqnwhnz
==> callpath is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/callpath-1.0.2-zm4pf3gasgxeibyu2y262suktvaazube
==> adept-utils is already installed in /usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/adept-utils-1.0.1-7p7ezxwtajdglj6cmojy2vybjct4j4jz
==> Using cached archive: /usr/workspace/wsa/legendre/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: /usr/workspace/wsa/legendre/spack/var/spack/stage/mpileaks-1.0-otqo2opkhan5ksujt6tpmdftydrieig7/mpileaks-1.0.tar.gz
==> Created stage in /usr/workspace/wsa/legendre/spack/var/spack/stage/mpileaks-1.0-otqo2opkhan5ksujt6tpmdftydrieig7
==> Ran patch() for mpileaks
==> Building mpileaks [AutotoolsPackage]
==> Executing phase : 'autoreconf'
==> Executing phase : 'configure'
==> './configure' '--prefix=/usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/mpileaks-1.0-otqo2opkhan5ksujt6tpmdftydrieig7' '--with-adept-utils=/usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/adept-utils-1.0.1-7p7ezxwtajdglj6cmojy2vybjct4j4jz' '--with-callpath=/usr/workspace/wsa/legendre/spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/callpath-1.0.2-zm4pf3gasgxeibyu2y262suktvaazube' '--with-stack-start-c=4' '--with-stack-start-fortran=4'
==> Using cached archive: SPACK_ROOT/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: SPACK_ROOT/var/spack/stage/mpileaks-1.0-gxxi4fp57b4j6xalra5t65hyx5rj25t7/mpileaks-1.0.tar.gz
==> Created stage in SPACK_ROOT/var/spack/stage/mpileaks-1.0-gxxi4fp57b4j6xalra5t65hyx5rj25t7
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> './configure' '--with-adept-utils=SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/adept-utils-1.0.1-pm3gffhrnwsdtqthtvsfvs2tny4r65wb' '--with-callpath=SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4-ikbbkvfmsfmqzo624nvvrbooovf7egoc' '--prefix=SPACK_ROOT/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpileaks-1.0-gxxi4fp57b4j6xalra5t65hyx5rj25t7' '--with-stack-start-c=4' '--with-stack-start-fortran=4'
---------------
The Spec Object

View File

@@ -1,982 +0,0 @@
.. _modules-tutorial:
=============================
Module Configuration Tutorial
=============================
This tutorial will guide you through the customization of both
content and naming of module files generated by Spack.
Starting from the default Spack settings you will add an increasing
number of directives to the ``modules.yaml`` configuration file to
satisfy a number of constraints that mimic those that you may encounter
in a typical production environment at HPC sites.
Even though the focus will be for the most part on customizing
TCL non-hierarchical module files, everything
you'll see applies also to other kinds of module files generated by Spack.
The generation of Lua hierarchical
module files will be addressed at the end of the tutorial,
and you'll see that with minor modifications
to an existing ``modules.yaml`` written for TCL
non-hierarchical modules you'll get almost
for free the possibility to try a hierarchical layout.
Let's start!
.. _module_file_tutorial_prerequisites:
-------------
Prerequisites
-------------
Before proceeding further ensure:
- you have LMod or Environment Modules available
- have :ref:`shell support <shell-support>` activated in Spack
If you need to install Lmod or Environment module you can refer
to the documentation :ref:`here <InstallEnvironmentModules>`.
^^^^^^^^^^^^^^^^^^
Add a new compiler
^^^^^^^^^^^^^^^^^^
Spack automatically scans the environment to search for available
compilers on first use. On a Ubuntu 14.04 a fresh clone will show
something like this:
.. code-block:: console
$ uname -a
Linux nuvolari 4.4.0-45-generic #66~14.04.1-Ubuntu SMP Wed Oct 19 15:05:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ spack compilers
==> Available compilers
-- gcc ----------------------------------------------------------
gcc@4.8
For the purpose of building a limited set of packages with some features
that will help showcasing the capabilities of
module customization the first thing we need is to build a new compiler:
.. code-block:: console
$ spack install gcc@6.2.0
# ...
# Wait a long time
# ...
Then we can use shell support for modules to add it to the list of known compilers:
.. code-block:: console
# The name of the generated module may vary
$ module load gcc-6.2.0-gcc-4.8-twd5nqg
$ spack compiler add
==> Added 1 new compiler to ~/.spack/linux/compilers.yaml
gcc@6.2.0
$ spack compilers
==> Available compilers
-- gcc ----------------------------------------------------------
gcc@6.2.0 gcc@4.8
Note that the final 7 digits hash at the end of the generated module may vary depending
on architecture or package version.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Build software that will be used in the tutorial
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Next you should install a few modules that will be used in the tutorial:
.. code-block:: console
$ spack install netlib-scalapack ^openmpi ^openblas
# ...
The packages you need to install are:
- ``netlib-scalapack ^openmpi ^openblas``
- ``netlib-scalapack ^mpich ^openblas``
- ``netlib-scalapack ^openmpi ^netlib-lapack``
- ``netlib-scalapack ^mpich ^netlib-lapack``
- ``py-scipy ^openblas``
In the end your environment should look something like:
.. code-block:: console
$ module avail
------------------------------------------------------------------------ ~/spack/share/spack/modules/linux-Ubuntu14-x86_64 ------------------------------------------------------------------------
binutils-2.27-gcc-4.8-dz3xevw libpciaccess-0.13.4-gcc-6.2.0-eo2siet lzo-2.09-gcc-6.2.0-jcngz72 netlib-scalapack-2.0.2-gcc-6.2.0-wnimqhw python-2.7.12-gcc-6.2.0-qu7rc5p
bzip2-1.0.6-gcc-6.2.0-csoc2mq libsigsegv-2.10-gcc-4.8-avb6azw m4-1.4.17-gcc-4.8-iggewke netlib-scalapack-2.0.2-gcc-6.2.0-wojunhq sqlite-3.8.5-gcc-6.2.0-td3zfe7
cmake-3.5.2-gcc-6.2.0-6poypqg libsigsegv-2.10-gcc-6.2.0-g3qpmbi m4-1.4.17-gcc-6.2.0-lhgqa6s nettle-3.2-gcc-6.2.0-djdthlh tcl-8.6.5-gcc-4.8-atddxu7
curl-7.50.3-gcc-6.2.0-2ffacqm libtool-2.4.6-gcc-6.2.0-kiepac6 mpc-1.0.3-gcc-4.8-lylv7lk openblas-0.2.19-gcc-6.2.0-js33umc util-macros-1.19.0-gcc-6.2.0-uoukuqk
expat-2.2.0-gcc-6.2.0-bxqnjar libxml2-2.9.4-gcc-6.2.0-3k4ykbe mpfr-3.1.4-gcc-4.8-bldfx3w openmpi-2.0.1-gcc-6.2.0-s3qbtby xz-5.2.2-gcc-6.2.0-t5lk6in
gcc-6.2.0-gcc-4.8-twd5nqg lmod-6.4.5-gcc-4.8-7v7bh7b mpich-3.2-gcc-6.2.0-5n5xoep openssl-1.0.2j-gcc-6.2.0-hibnfda zlib-1.2.8-gcc-4.8-bds4ies
gmp-6.1.1-gcc-4.8-uq52e2n lua-5.3.2-gcc-4.8-xozf2hx ncurses-6.0-gcc-4.8-u62fit4 pkg-config-0.29.1-gcc-6.2.0-rslsgcs zlib-1.2.8-gcc-6.2.0-asydrba
gmp-6.1.1-gcc-6.2.0-3cfh3hi lua-luafilesystem-1_6_3-gcc-4.8-sbzejlz ncurses-6.0-gcc-6.2.0-7tb426s py-nose-1.3.7-gcc-6.2.0-4gl5c42
hwloc-1.11.4-gcc-6.2.0-3ostwel lua-luaposix-33.4.0-gcc-4.8-xf7y2p5 netlib-lapack-3.6.1-gcc-6.2.0-mirer2l py-numpy-1.11.1-gcc-6.2.0-i3rpk4e
isl-0.14-gcc-4.8-cq73t5m lz4-131-gcc-6.2.0-cagoem4 netlib-scalapack-2.0.2-gcc-6.2.0-6bqlxqy py-scipy-0.18.1-gcc-6.2.0-e6uljfi
libarchive-3.2.1-gcc-6.2.0-2b54aos lzma-4.32.7-gcc-6.2.0-sfmeynw netlib-scalapack-2.0.2-gcc-6.2.0-hpqb3dp py-setuptools-25.2.0-gcc-6.2.0-hkqauaa
------------------------------------------------
Filter unwanted modifications to the environment
------------------------------------------------
The non-hierarchical TCL module files that have been generated so far
follow the default rules for module generation, which are given
:ref:`here <modules-yaml>` in the reference part of the manual. Taking a
look at the ``gcc`` module you'll see something like:
.. code-block:: console
$ module show gcc-6.2.0-gcc-4.8-twd5nqg
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
~/spack/share/spack/modules/linux-Ubuntu14-x86_64/gcc-6.2.0-gcc-4.8-twd5nqg:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("gcc @6.2.0 ")
prepend_path("PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/bin")
prepend_path("CMAKE_PREFIX_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/")
prepend_path("MANPATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/share/man")
prepend_path("PKG_CONFIG_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64/pkgconfig")
prepend_path("LIBRARY_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64")
prepend_path("LD_LIBRARY_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64")
prepend_path("CPATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/include")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, and Java.
]])
As expected, a few environment variables representing paths will be modified
by the modules according to the default prefix inspection rules.
Consider now the case that your site has decided that e.g. ``CPATH`` and
``LIBRARY_PATH`` modifications should not be present in module files. What you can
do to abide by the rules is to create a configuration file ``~/.spack/modules.yaml``
with the following content:
.. code-block:: yaml
modules:
tcl:
all:
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
Next you should regenerate all the module files:
.. code-block:: console
$ spack module refresh --module-type tcl
==> You are about to regenerate tcl module files for:
-- linux-Ubuntu14-x86_64 / gcc@4.8 ------------------------------
dz3xevw binutils@2.27 uq52e2n gmp@6.1.1 avb6azw libsigsegv@2.10 xozf2hx lua@5.3.2 xf7y2p5 lua-luaposix@33.4.0 lylv7lk mpc@1.0.3 u62fit4 ncurses@6.0 bds4ies zlib@1.2.8
twd5nqg gcc@6.2.0 cq73t5m isl@0.14 7v7bh7b lmod@6.4.5 sbzejlz lua-luafilesystem@1_6_3 iggewke m4@1.4.17 bldfx3w mpfr@3.1.4 atddxu7 tcl@8.6.5
...
==> Do you want to proceed ? [y/n]
y
==> Regenerating tcl module files
If you take a look now at the module for ``gcc`` you'll see that the unwanted
paths have disappeared:
.. code-block:: console
$ module show gcc-6.2.0-gcc-4.8-twd5nqg
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
~/spack/share/spack/modules/linux-Ubuntu14-x86_64/gcc-6.2.0-gcc-4.8-twd5nqg:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("gcc @6.2.0 ")
prepend_path("PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/bin")
prepend_path("CMAKE_PREFIX_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/")
prepend_path("MANPATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/share/man")
prepend_path("PKG_CONFIG_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64/pkgconfig")
prepend_path("LD_LIBRARY_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, and Java.
]])
----------------------------------------------
Prevent some module files from being generated
----------------------------------------------
Another common request at many sites is to avoid exposing software that
is only needed as an intermediate step when building a newer stack.
Let's try to prevent the generation of
module files for anything that is compiled with ``gcc@4.8`` (the OS provided compiler).
To do this you should add a ``blacklist`` keyword to the configuration file:
.. code-block:: yaml
:emphasize-lines: 3,4
modules:
tcl:
blacklist:
- '%gcc@4.8'
all:
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
and regenerate the module files:
.. code-block:: console
$ spack module refresh --module-type tcl --delete-tree
==> You are about to regenerate tcl module files for:
-- linux-Ubuntu14-x86_64 / gcc@4.8 ------------------------------
dz3xevw binutils@2.27 uq52e2n gmp@6.1.1 avb6azw libsigsegv@2.10 xozf2hx lua@5.3.2 xf7y2p5 lua-luaposix@33.4.0 lylv7lk mpc@1.0.3 u62fit4 ncurses@6.0 bds4ies zlib@1.2.8
twd5nqg gcc@6.2.0 cq73t5m isl@0.14 7v7bh7b lmod@6.4.5 sbzejlz lua-luafilesystem@1_6_3 iggewke m4@1.4.17 bldfx3w mpfr@3.1.4 atddxu7 tcl@8.6.5
-- linux-Ubuntu14-x86_64 / gcc@6.2.0 ----------------------------
csoc2mq bzip2@1.0.6 2b54aos libarchive@3.2.1 sfmeynw lzma@4.32.7 wnimqhw netlib-scalapack@2.0.2 s3qbtby openmpi@2.0.1 hkqauaa py-setuptools@25.2.0
6poypqg cmake@3.5.2 eo2siet libpciaccess@0.13.4 jcngz72 lzo@2.09 6bqlxqy netlib-scalapack@2.0.2 hibnfda openssl@1.0.2j qu7rc5p python@2.7.12
2ffacqm curl@7.50.3 g3qpmbi libsigsegv@2.10 lhgqa6s m4@1.4.17 wojunhq netlib-scalapack@2.0.2 rslsgcs pkg-config@0.29.1 td3zfe7 sqlite@3.8.5
bxqnjar expat@2.2.0 kiepac6 libtool@2.4.6 5n5xoep mpich@3.2 hpqb3dp netlib-scalapack@2.0.2 4gl5c42 py-nose@1.3.7 uoukuqk util-macros@1.19.0
3cfh3hi gmp@6.1.1 3k4ykbe libxml2@2.9.4 7tb426s ncurses@6.0 djdthlh nettle@3.2 i3rpk4e py-numpy@1.11.1 t5lk6in xz@5.2.2
3ostwel hwloc@1.11.4 cagoem4 lz4@131 mirer2l netlib-lapack@3.6.1 js33umc openblas@0.2.19 e6uljfi py-scipy@0.18.1 asydrba zlib@1.2.8
==> Do you want to proceed ? [y/n]
y
$ module avail
------------------------------------------------------------------------ ~/spack/share/spack/modules/linux-Ubuntu14-x86_64 ------------------------------------------------------------------------
bzip2-1.0.6-gcc-6.2.0-csoc2mq libsigsegv-2.10-gcc-6.2.0-g3qpmbi ncurses-6.0-gcc-6.2.0-7tb426s openmpi-2.0.1-gcc-6.2.0-s3qbtby sqlite-3.8.5-gcc-6.2.0-td3zfe7
cmake-3.5.2-gcc-6.2.0-6poypqg libtool-2.4.6-gcc-6.2.0-kiepac6 netlib-lapack-3.6.1-gcc-6.2.0-mirer2l openssl-1.0.2j-gcc-6.2.0-hibnfda util-macros-1.19.0-gcc-6.2.0-uoukuqk
curl-7.50.3-gcc-6.2.0-2ffacqm libxml2-2.9.4-gcc-6.2.0-3k4ykbe netlib-scalapack-2.0.2-gcc-6.2.0-6bqlxqy pkg-config-0.29.1-gcc-6.2.0-rslsgcs xz-5.2.2-gcc-6.2.0-t5lk6in
expat-2.2.0-gcc-6.2.0-bxqnjar lz4-131-gcc-6.2.0-cagoem4 netlib-scalapack-2.0.2-gcc-6.2.0-hpqb3dp py-nose-1.3.7-gcc-6.2.0-4gl5c42 zlib-1.2.8-gcc-6.2.0-asydrba
gmp-6.1.1-gcc-6.2.0-3cfh3hi lzma-4.32.7-gcc-6.2.0-sfmeynw netlib-scalapack-2.0.2-gcc-6.2.0-wnimqhw py-numpy-1.11.1-gcc-6.2.0-i3rpk4e
hwloc-1.11.4-gcc-6.2.0-3ostwel lzo-2.09-gcc-6.2.0-jcngz72 netlib-scalapack-2.0.2-gcc-6.2.0-wojunhq py-scipy-0.18.1-gcc-6.2.0-e6uljfi
libarchive-3.2.1-gcc-6.2.0-2b54aos m4-1.4.17-gcc-6.2.0-lhgqa6s nettle-3.2-gcc-6.2.0-djdthlh py-setuptools-25.2.0-gcc-6.2.0-hkqauaa
libpciaccess-0.13.4-gcc-6.2.0-eo2siet mpich-3.2-gcc-6.2.0-5n5xoep openblas-0.2.19-gcc-6.2.0-js33umc python-2.7.12-gcc-6.2.0-qu7rc5p
This time it is convenient to pass the option ``--delete-tree`` to the command that
regenerates the module files to instruct it to delete the existing tree and regenerate
a new one instead of overwriting the files in the existing directory.
If you pay careful attention you'll see though that we went too far in blacklisting modules:
the module for ``gcc@6.2.0`` disappeared as it was bootstrapped with ``gcc@4.8``. To specify
exceptions to the blacklist rules you can use ``whitelist``:
.. code-block:: yaml
:emphasize-lines: 3,4
modules:
tcl:
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
``whitelist`` rules always have precedence over ``blacklist`` rules. If you regenerate the modules again:
.. code-block:: console
$ spack module refresh --module-type tcl -y
you'll see that now the module for ``gcc@6.2.0`` has reappeared:
.. code-block:: console
$ module avail gcc-6.2.0-gcc-4.8-twd5nqg
------------------------------------------------------------------------ ~/spack/share/spack/modules/linux-Ubuntu14-x86_64 ------------------------------------------------------------------------
gcc-6.2.0-gcc-4.8-twd5nqg
-------------------------
Change module file naming
-------------------------
The next step in making module files more user-friendly is to
improve their naming scheme.
To reduce the length of the hash or remove it altogether you can
use the ``hash_length`` keyword in the configuration file:
.. TODO: give reasons to remove hashes if they are not evident enough?
.. code-block:: yaml
:emphasize-lines: 3
modules:
tcl:
hash_length: 0
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
If you try to regenerate the module files now you will get an error:
.. code-block:: console
$ spack module refresh --module-type tcl --delete-tree -y
==> Error: Name clashes detected in module files:
file : ~/spack/share/spack/modules/linux-Ubuntu14-x86_64/netlib-scalapack-2.0.2-gcc-6.2.0
spec : netlib-scalapack@2.0.2%gcc@6.2.0~fpic+shared arch=linux-Ubuntu14-x86_64
spec : netlib-scalapack@2.0.2%gcc@6.2.0~fpic+shared arch=linux-Ubuntu14-x86_64
spec : netlib-scalapack@2.0.2%gcc@6.2.0~fpic+shared arch=linux-Ubuntu14-x86_64
spec : netlib-scalapack@2.0.2%gcc@6.2.0~fpic+shared arch=linux-Ubuntu14-x86_64
==> Error: Operation aborted
.. note::
We try to check for errors upfront!
In Spack we check for errors upfront whenever possible, so don't worry about your module files:
as a name clash was detected nothing has been changed on disk.
The problem here is that without
the hashes the four different flavors of ``netlib-scalapack`` map to the same module file
name. We have the possibility to add suffixes to differentiate them:
.. code-block:: yaml
:emphasize-lines: 9-11,14-17
modules:
tcl:
hash_length: 0
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
suffixes:
'^openblas': openblas
'^netlib-lapack': netlib
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
netlib-scalapack:
suffixes:
'^openmpi': openmpi
'^mpich': mpich
As you can see it is possible to specify rules that applies only to a
restricted set of packages using :ref:`anonymous specs <anonymous_specs>`.
Regenerating module files now we obtain:
.. code-block:: console
$ spack module refresh --module-type tcl --delete-tree -y
==> Regenerating tcl module files
$ module avail
------------------------------------------------------------------------ ~/spack/share/spack/modules/linux-Ubuntu14-x86_64 ------------------------------------------------------------------------
bzip2-1.0.6-gcc-6.2.0 libpciaccess-0.13.4-gcc-6.2.0 mpich-3.2-gcc-6.2.0 openblas-0.2.19-gcc-6.2.0 python-2.7.12-gcc-6.2.0
cmake-3.5.2-gcc-6.2.0 libsigsegv-2.10-gcc-6.2.0 ncurses-6.0-gcc-6.2.0 openmpi-2.0.1-gcc-6.2.0 sqlite-3.8.5-gcc-6.2.0
curl-7.50.3-gcc-6.2.0 libtool-2.4.6-gcc-6.2.0 netlib-lapack-3.6.1-gcc-6.2.0 openssl-1.0.2j-gcc-6.2.0 util-macros-1.19.0-gcc-6.2.0
expat-2.2.0-gcc-6.2.0 libxml2-2.9.4-gcc-6.2.0 netlib-scalapack-2.0.2-gcc-6.2.0-netlib-mpich pkg-config-0.29.1-gcc-6.2.0 xz-5.2.2-gcc-6.2.0
gcc-6.2.0-gcc-4.8 lz4-131-gcc-6.2.0 netlib-scalapack-2.0.2-gcc-6.2.0-netlib-openmpi py-nose-1.3.7-gcc-6.2.0 zlib-1.2.8-gcc-6.2.0
gmp-6.1.1-gcc-6.2.0 lzma-4.32.7-gcc-6.2.0 netlib-scalapack-2.0.2-gcc-6.2.0-openblas-mpich py-numpy-1.11.1-gcc-6.2.0-openblas
hwloc-1.11.4-gcc-6.2.0 lzo-2.09-gcc-6.2.0 netlib-scalapack-2.0.2-gcc-6.2.0-openblas-openmpi py-scipy-0.18.1-gcc-6.2.0-openblas
libarchive-3.2.1-gcc-6.2.0 m4-1.4.17-gcc-6.2.0 nettle-3.2-gcc-6.2.0 py-setuptools-25.2.0-gcc-6.2.0
Finally we can set a ``naming_scheme`` to prevent users from loading
modules that refer to different flavors of the same library/application:
.. code-block:: yaml
:emphasize-lines: 4,10,11
modules:
tcl:
hash_length: 0
naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}'
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
conflict:
- '${PACKAGE}'
suffixes:
'^openblas': openblas
'^netlib-lapack': netlib
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
netlib-scalapack:
suffixes:
'^openmpi': openmpi
'^mpich': mpich
The final result should look like:
.. code-block:: console
$ module avail
------------------------------------------------------------------------ ~/spack/share/spack/modules/linux-Ubuntu14-x86_64 ------------------------------------------------------------------------
bzip2/1.0.6-gcc-6.2.0 libpciaccess/0.13.4-gcc-6.2.0 mpich/3.2-gcc-6.2.0 openblas/0.2.19-gcc-6.2.0 python/2.7.12-gcc-6.2.0
cmake/3.5.2-gcc-6.2.0 libsigsegv/2.10-gcc-6.2.0 ncurses/6.0-gcc-6.2.0 openmpi/2.0.1-gcc-6.2.0 sqlite/3.8.5-gcc-6.2.0
curl/7.50.3-gcc-6.2.0 libtool/2.4.6-gcc-6.2.0 netlib-lapack/3.6.1-gcc-6.2.0 openssl/1.0.2j-gcc-6.2.0 util-macros/1.19.0-gcc-6.2.0
expat/2.2.0-gcc-6.2.0 libxml2/2.9.4-gcc-6.2.0 netlib-scalapack/2.0.2-gcc-6.2.0-netlib-mpich pkg-config/0.29.1-gcc-6.2.0 xz/5.2.2-gcc-6.2.0
gcc/6.2.0-gcc-4.8 lz4/131-gcc-6.2.0 netlib-scalapack/2.0.2-gcc-6.2.0-netlib-openmpi py-nose/1.3.7-gcc-6.2.0 zlib/1.2.8-gcc-6.2.0
gmp/6.1.1-gcc-6.2.0 lzma/4.32.7-gcc-6.2.0 netlib-scalapack/2.0.2-gcc-6.2.0-openblas-mpich py-numpy/1.11.1-gcc-6.2.0-openblas
hwloc/1.11.4-gcc-6.2.0 lzo/2.09-gcc-6.2.0 netlib-scalapack/2.0.2-gcc-6.2.0-openblas-openmpi (D) py-scipy/0.18.1-gcc-6.2.0-openblas
libarchive/3.2.1-gcc-6.2.0 m4/1.4.17-gcc-6.2.0 nettle/3.2-gcc-6.2.0 py-setuptools/25.2.0-gcc-6.2.0
.. note::
TCL specific directive
The directives ``naming_scheme`` and ``conflict`` are TCL specific and do not apply
to the ``dotkit`` or ``lmod`` sections in the configuration file.
------------------------------------
Add custom environment modifications
------------------------------------
At many sites it is customary to set an environment variable in a
package's module file that points to the folder in which the package
is installed. You can achieve this with Spack by adding an
``environment`` directive to the configuration file:
.. code-block:: yaml
:emphasize-lines: 17-19
modules:
tcl:
hash_length: 0
naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}'
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
conflict:
- '${PACKAGE}'
suffixes:
'^openblas': openblas
'^netlib-lapack': netlib
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
environment:
set:
'${PACKAGE}_ROOT': '${PREFIX}'
netlib-scalapack:
suffixes:
'^openmpi': openmpi
'^mpich': mpich
There are many variable tokens available to use in the ``environment``
and ``naming_scheme`` directives, such as ``${PACKAGE}``,
``${VERSION}``, etc. (see the :meth:`~spack.spec.Spec.format` API
documentation for the complete list).
Regenerating the module files should result in something like:
.. code-block:: console
:emphasize-lines: 14
$ spack module refresh -y --module-type tcl
==> Regenerating tcl module files
$ module show gcc
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
~/spack/share/spack/modules/linux-Ubuntu14-x86_64/gcc/6.2.0-gcc-4.8:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("gcc @6.2.0 ")
prepend_path("PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/bin")
prepend_path("CMAKE_PREFIX_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/")
prepend_path("MANPATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/share/man")
prepend_path("PKG_CONFIG_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64/pkgconfig")
prepend_path("LD_LIBRARY_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64")
setenv("GCC_ROOT","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u")
conflict("gcc")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, and Java.
]])
As you see the ``gcc`` module has the environment variable ``GCC_ROOT`` set.
Sometimes it's also useful to apply environment modifications selectively and target
only certain packages. You can, for instance set the common variables ``CC``, ``CXX``,
etc. in the ``gcc`` module file and apply other custom modifications to the
``openmpi`` modules as follows:
.. code-block:: yaml
:emphasize-lines: 20-32
modules:
tcl:
hash_length: 0
naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}'
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
conflict:
- '${PACKAGE}'
suffixes:
'^openblas': openblas
'^netlib-lapack': netlib
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
environment:
set:
'${PACKAGE}_ROOT': '${PREFIX}'
gcc:
environment:
set:
CC: gcc
CXX: g++
FC: gfortran
F90: gfortran
F77: gfortran
openmpi:
environment:
set:
SLURM_MPI_TYPE: pmi2
OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
netlib-scalapack:
suffixes:
'^openmpi': openmpi
'^mpich': mpich
This time we will be more selective and regenerate only the ``gcc`` and
``openmpi`` module files:
.. code-block:: console
$ spack module refresh -y --module-type tcl gcc
==> Regenerating tcl module files
$ spack module refresh -y --module-type tcl openmpi
==> Regenerating tcl module files
$ module show gcc
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
~/spack/share/spack/modules/linux-Ubuntu14-x86_64/gcc/6.2.0-gcc-4.8:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("gcc @6.2.0 ")
prepend_path("PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/bin")
prepend_path("CMAKE_PREFIX_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/")
prepend_path("MANPATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/share/man")
prepend_path("PKG_CONFIG_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64/pkgconfig")
prepend_path("LD_LIBRARY_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u/lib64")
setenv("GCC_ROOT","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-4.8/gcc-6.2.0-twd5nqg33hrrssqclcfi5k42eccwxz5u")
setenv("CC","gcc")
setenv("CXX","g++")
setenv("F90","gfortran")
setenv("FC","gfortran")
setenv("F77","gfortran")
conflict("gcc")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, and Java.
]])
$ module show openmpi
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
~/spack/share/spack/modules/linux-Ubuntu14-x86_64/openmpi/2.0.1-gcc-6.2.0:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("openmpi @2.0.1 ")
prepend_path("PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/openmpi-2.0.1-s3qbtbyh3y5y4gkchmhcuak7th44l53w/bin")
prepend_path("CMAKE_PREFIX_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/openmpi-2.0.1-s3qbtbyh3y5y4gkchmhcuak7th44l53w/")
prepend_path("LD_LIBRARY_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/openmpi-2.0.1-s3qbtbyh3y5y4gkchmhcuak7th44l53w/lib")
prepend_path("PKG_CONFIG_PATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/openmpi-2.0.1-s3qbtbyh3y5y4gkchmhcuak7th44l53w/lib/pkgconfig")
prepend_path("MANPATH","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/openmpi-2.0.1-s3qbtbyh3y5y4gkchmhcuak7th44l53w/share/man")
setenv("SLURM_MPI_TYPE","pmi2")
setenv("OMPI_MCA_BTL_OPENIB_WARN_DEFAULT_GID_PREFIX","0")
setenv("OPENMPI_ROOT","~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/openmpi-2.0.1-s3qbtbyh3y5y4gkchmhcuak7th44l53w")
conflict("openmpi")
help([[The Open MPI Project is an open source Message Passing Interface
implementation that is developed and maintained by a consortium of
academic, research, and industry partners. Open MPI is therefore able to
combine the expertise, technologies, and resources from all across the
High Performance Computing community in order to build the best MPI
library available. Open MPI offers advantages for system and software
vendors, application developers and computer science researchers.
]])
---------------------
Autoload dependencies
---------------------
Spack can also generate module files that contain code to load the
dependencies automatically. You can, for instance generate python
modules that load their dependencies by adding the ``autoload``
directive and assigning it the value ``direct``:
.. code-block:: yaml
:emphasize-lines: 37,38
modules:
tcl:
hash_length: 0
naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}'
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
conflict:
- '${PACKAGE}'
suffixes:
'^openblas': openblas
'^netlib-lapack': netlib
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
environment:
set:
'${PACKAGE}_ROOT': '${PREFIX}'
gcc:
environment:
set:
CC: gcc
CXX: g++
FC: gfortran
F90: gfortran
F77: gfortran
openmpi:
environment:
set:
SLURM_MPI_TYPE: pmi2
OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
netlib-scalapack:
suffixes:
'^openmpi': openmpi
'^mpich': mpich
^python:
autoload: 'direct'
and regenerating the module files for every package that depends on ``python``:
.. code-block:: console
$ spack module refresh -y --module-type tcl ^python
==> Regenerating tcl module files
Now the ``py-scipy`` module will be:
.. code-block:: tcl
#%Module1.0
## Module file created by spack (https://github.com/LLNL/spack) on 2016-11-02 20:53:21.283547
##
## py-scipy@0.18.1%gcc@6.2.0 arch=linux-Ubuntu14-x86_64-e6uljfi
##
module-whatis "py-scipy @0.18.1"
proc ModulesHelp { } {
puts stderr "SciPy (pronounced "Sigh Pie") is a Scientific Library for Python. It"
puts stderr "provides many user-friendly and efficient numerical routines such as"
puts stderr "routines for numerical integration and optimization."
}
if ![ is-loaded python/2.7.12-gcc-6.2.0 ] {
puts stderr "Autoloading python/2.7.12-gcc-6.2.0"
module load python/2.7.12-gcc-6.2.0
}
if ![ is-loaded openblas/0.2.19-gcc-6.2.0 ] {
puts stderr "Autoloading openblas/0.2.19-gcc-6.2.0"
module load openblas/0.2.19-gcc-6.2.0
}
if ![ is-loaded py-numpy/1.11.1-gcc-6.2.0-openblas ] {
puts stderr "Autoloading py-numpy/1.11.1-gcc-6.2.0-openblas"
module load py-numpy/1.11.1-gcc-6.2.0-openblas
}
prepend-path CMAKE_PREFIX_PATH "~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/py-scipy-0.18.1-e6uljfiffgym4xvj6wveevqxfqnfb3gh/"
prepend-path LD_LIBRARY_PATH "~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/py-scipy-0.18.1-e6uljfiffgym4xvj6wveevqxfqnfb3gh/lib"
prepend-path PYTHONPATH "~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/py-scipy-0.18.1-e6uljfiffgym4xvj6wveevqxfqnfb3gh/lib/python2.7/site-packages"
setenv PY_SCIPY_ROOT "~/spack/opt/spack/linux-Ubuntu14-x86_64/gcc-6.2.0/py-scipy-0.18.1-e6uljfiffgym4xvj6wveevqxfqnfb3gh"
conflict py-scipy
and will contain code to autoload all the dependencies:
.. code-block:: console
$ module load py-scipy
Autoloading python/2.7.12-gcc-6.2.0
Autoloading openblas/0.2.19-gcc-6.2.0
Autoloading py-numpy/1.11.1-gcc-6.2.0-openblas
-----------------------------
Lua hierarchical module files
-----------------------------
In the final part of this tutorial you will modify ``modules.yaml`` to generate
Lua hierarchical module files. You will see that most of the directives used before
are also valid in the ``lmod`` context.
^^^^^^^^^^^^^^^^^
Core/Compiler/MPI
^^^^^^^^^^^^^^^^^
.. warning::
Only LMod supports Lua hierarchical module files
For this part of the tutorial you need to be using LMod to
manage your environment.
The most common hierarchy is the so called ``Core/Compiler/MPI``. To have an idea
how a hierarchy is organized you may refer to the
`Lmod guide <https://www.tacc.utexas.edu/research-development/tacc-projects/lmod/user-guide/module-hierarchy>`_.
Since ``lmod`` is not enabled by default, you need to add it to the list of
enabled module file generators. The other things you need to do are:
- change the ``tcl`` tag to ``lmod``
- remove ``tcl`` specific directives (``naming_scheme`` and ``conflict``)
- set which compilers are considered ``core``
- remove the ``mpi`` related suffixes (as they will be substituted by hierarchies)
After modifications the configuration file will be:
.. code-block:: yaml
:emphasize-lines: 2-6
modules:
enable::
- lmod
lmod:
core_compilers:
- 'gcc@4.8'
hash_length: 0
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
all:
suffixes:
'^openblas': openblas
'^netlib-lapack': netlib
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
environment:
set:
'${PACKAGE}_ROOT': '${PREFIX}'
gcc:
environment:
set:
CC: gcc
CXX: g++
FC: gfortran
F90: gfortran
F77: gfortran
openmpi:
environment:
set:
SLURM_MPI_TYPE: pmi2
OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
.. note::
The double colon
The double colon after ``enable`` is intentional and it serves the
purpose of overriding the default list of enabled generators so
that only ``lmod`` will be active (see :ref:`the reference
manual <config-overrides>` for a more detailed explanation of
config scopes).
The directive ``core_compilers`` accepts a list of compilers : everything built
using these compilers will create a module in the ``Core`` part of the hierarchy. It is
common practice to put the OS provided compilers in the list and only build common utilities
and other compilers in ``Core``.
If you regenerate the module files
.. code-block:: console
$ spack module refresh --module-type lmod --delete-tree -y
and update ``MODULEPATH`` to point to the ``Core`` folder, and
list the available modules, you'll see:
.. code-block:: console
$ module unuse ~/spack/share/spack/modules/linux-Ubuntu14-x86_64
$ module use ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/Core
$ module avail
----------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/Core -----------------------------------------------------------------------
gcc/6.2.0
The only module visible now is ``gcc``. Loading that you will make
visible the ``Compiler`` part of the software stack that was built with ``gcc/6.2.0``:
.. code-block:: console
$ module load gcc
$ module avail
-------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/gcc/6.2.0 ---------------------------------------------------------------------
binutils/2.27 curl/7.50.3 hwloc/1.11.4 libtool/2.4.6 lzo/2.09 netlib-lapack/3.6.1 openssl/1.0.2j py-scipy/0.18.1-openblas util-macros/1.19.0
bison/3.0.4 expat/2.2.0 libarchive/3.2.1 libxml2/2.9.4 m4/1.4.17 nettle/3.2 pkg-config/0.29.1 py-setuptools/25.2.0 xz/5.2.2
bzip2/1.0.6 flex/2.6.0 libpciaccess/0.13.4 lz4/131 mpich/3.2 openblas/0.2.19 py-nose/1.3.7 python/2.7.12 zlib/1.2.8
cmake/3.6.1 gmp/6.1.1 libsigsegv/2.10 lzma/4.32.7 ncurses/6.0 openmpi/2.0.1 py-numpy/1.11.1-openblas sqlite/3.8.5
----------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/Core -----------------------------------------------------------------------
gcc/6.2.0 (L)
The same holds true for the ``MPI`` part of the stack, that you can enable by loading
either ``mpich`` or ``openmpi``. The nice features of LMod will become evident
once you'll try switching among different stacks:
.. code-block:: console
$ module load mpich
$ module avail
----------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/mpich/3.2-5n5xoep/gcc/6.2.0 ------------------------------------------------------------
netlib-scalapack/2.0.2-netlib netlib-scalapack/2.0.2-openblas (D)
-------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/gcc/6.2.0 ---------------------------------------------------------------------
binutils/2.27 curl/7.50.3 hwloc/1.11.4 libtool/2.4.6 lzo/2.09 netlib-lapack/3.6.1 openssl/1.0.2j py-scipy/0.18.1-openblas util-macros/1.19.0
bison/3.0.4 expat/2.2.0 libarchive/3.2.1 libxml2/2.9.4 m4/1.4.17 nettle/3.2 pkg-config/0.29.1 py-setuptools/25.2.0 xz/5.2.2
bzip2/1.0.6 flex/2.6.0 libpciaccess/0.13.4 lz4/131 mpich/3.2 (L) openblas/0.2.19 py-nose/1.3.7 python/2.7.12 zlib/1.2.8
cmake/3.6.1 gmp/6.1.1 libsigsegv/2.10 lzma/4.32.7 ncurses/6.0 openmpi/2.0.1 py-numpy/1.11.1-openblas sqlite/3.8.5
----------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/Core -----------------------------------------------------------------------
gcc/6.2.0 (L)
$ module load openblas netlib-scalapack/2.0.2-openblas
$ module list
Currently Loaded Modules:
1) gcc/6.2.0 2) mpich/3.2 3) openblas/0.2.19 4) netlib-scalapack/2.0.2-openblas
$ module load openmpi
Lmod is automatically replacing "mpich/3.2" with "openmpi/2.0.1"
Due to MODULEPATH changes the following have been reloaded:
1) netlib-scalapack/2.0.2-openblas
This layout is already a great improvement over the usual non-hierarchical layout,
but it still has an asymmetry: ``LAPACK`` providers are semantically the same as ``MPI``
providers, but they are still not part of the hierarchy. We'll see a possible solution
next.
.. Activate lmod and turn the previous modifications into lmod:
Add core compilers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Extend the hierarchy to other virtual providers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. warning::
This is an experimental feature
Having a hierarchy deeper than ``Core``/``Compiler``/``MPI`` is an experimental
feature, still not fully supported by ``module spider``,
see `here <https://github.com/TACC/Lmod/issues/114>`_. Furthermore its use
with hierarchies more complex than ``Core``/``Compiler``/``MPI``/``LAPACK``
has not been thoroughly tested in production environments.
Spack permits you to generate Lua hierarchical module files where users
can add an arbitrary list of virtual providers to the triplet
``Core``/``Compiler``/``MPI``. A configuration file like:
.. code-block:: yaml
:emphasize-lines: 7,8
modules:
enable::
- lmod
lmod:
core_compilers:
- 'gcc@4.8'
hierarchical_scheme:
- lapack
hash_length: 0
whitelist:
- gcc
blacklist:
- '%gcc@4.8'
- readline
all:
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
environment:
set:
'${PACKAGE}_ROOT': '${PREFIX}'
gcc:
environment:
set:
CC: gcc
CXX: g++
FC: gfortran
F90: gfortran
F77: gfortran
openmpi:
environment:
set:
SLURM_MPI_TYPE: pmi2
OMPI_MCA_btl_openib_warn_default_gid_prefix: '0'
will add ``lapack`` providers to the mix. After the usual regeneration of module files:
.. code-block:: console
$ module purge
$ spack module refresh --module-type lmod --delete-tree -y
==> Regenerating lmod module files
you will have something like:
.. code-block:: console
$ module load gcc
$ module load openblas
$ module load openmpi
$ module avail
--------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/openblas/0.2.19-js33umc/openmpi/2.0.1-s3qbtby/gcc/6.2.0 ----------------------------------------------
netlib-scalapack/2.0.2
-------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/openblas/0.2.19-js33umc/gcc/6.2.0 ---------------------------------------------------------
py-numpy/1.11.1 py-scipy/0.18.1
-------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/gcc/6.2.0 ---------------------------------------------------------------------
binutils/2.27 curl/7.50.3 hwloc/1.11.4 libtool/2.4.6 lzo/2.09 netlib-lapack/3.6.1 openssl/1.0.2j python/2.7.12 zlib/1.2.8
bison/3.0.4 expat/2.2.0 libarchive/3.2.1 libxml2/2.9.4 m4/1.4.17 nettle/3.2 pkg-config/0.29.1 sqlite/3.8.5
bzip2/1.0.6 flex/2.6.0 libpciaccess/0.13.4 lz4/131 mpich/3.2 openblas/0.2.19 (L) py-nose/1.3.7 util-macros/1.19.0
cmake/3.6.1 gmp/6.1.1 libsigsegv/2.10 lzma/4.32.7 ncurses/6.0 openmpi/2.0.1 (L) py-setuptools/25.2.0 xz/5.2.2
----------------------------------------------------------------------- ~/spack/share/spack/lmod/linux-Ubuntu14-x86_64/Core -----------------------------------------------------------------------
gcc/6.2.0 (L)
Now both the ``MPI`` and the ``LAPACK`` providers are handled by LMod as hierarchies:
.. code-block:: console
$ module load py-numpy netlib-scalapack
$ module load mpich
Lmod is automatically replacing "openmpi/2.0.1" with "mpich/3.2"
Due to MODULEPATH changes the following have been reloaded:
1) netlib-scalapack/2.0.2
$ module load netlib-lapack
Lmod is automatically replacing "openblas/0.2.19" with "netlib-lapack/3.6.1"
Inactive Modules:
1) py-numpy
Due to MODULEPATH changes the following have been reloaded:
1) netlib-scalapack/2.0.2
making the use of tags to differentiate them unnecessary.
Note that because we only compiled ``py-numpy`` with ``openblas`` the module
is made inactive when we switch the ``LAPACK`` provider. The user
environment will now be consistent by design!

File diff suppressed because it is too large Load Diff

View File

@@ -33,24 +33,12 @@ possible realization of a particular package, out of combinatorially
many other realizations. For example, here is a concrete spec
instantiated from ``curl``:
.. code-block:: console
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
.. command-output:: spack spec curl
Spack's core concretization algorithm generates concrete specs by
instantiating packages from its repo, based on a set of "hints",
including user input and the ``packages.yaml`` file. This algorithm
may be accessed at any time with the ``spack spec`` command. For
example:
.. code-block:: console
$ spack spec curl
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
may be accessed at any time with the ``spack spec`` command.
Every time Spack installs a package, that installation corresponds to
a concrete spec. Only a vanishingly small fraction of possible
@@ -68,7 +56,7 @@ variant, compiler, etc. For example, the following set is consistent:
.. code-block:: console
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
@@ -77,7 +65,7 @@ The following set is not consistent:
.. code-block:: console
curl@7.50.1%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@system%gcc@5.3.0 arch=linux-SuSE11-x86_64
^openssl@1.0.2k%gcc@5.3.0 arch=linux-SuSE11-x86_64
^zlib@1.2.8%gcc@5.3.0 arch=linux-SuSE11-x86_64
zlib@1.2.7%gcc@5.3.0 arch=linux-SuSE11-x86_64
@@ -182,7 +170,7 @@ of usage:
.. code-block:: sh
#!/bin/sh
#!/bin/bash
compilers=(
%gcc
@@ -367,7 +355,7 @@ Transitive Dependencies
In the script above, each ``spack module loads`` command generates a
*single* ``module load`` line. Transitive dependencies do not usually
need to be loaded, only modules the user needs in in ``$PATH``. This is
need to be loaded, only modules the user needs in ``$PATH``. This is
because Spack builds binaries with RPATH. Spack's RPATH policy has
some nice features:
@@ -488,10 +476,11 @@ if the view is built with hardlinks.
.. FIXME: reference the relocation work of Hegner and Gartung (PR #1013)
.. _cmd-spack-view:
""""""""""""""""""""""
Using Filesystem Views
""""""""""""""""""""""
""""""""""""""
``spack view``
""""""""""""""
A filesystem view is created, and packages are linked in, by the ``spack
view`` command's ``symlink`` and ``hardlink`` sub-commands. The
@@ -1039,6 +1028,232 @@ or filesystem views. However, it has some drawbacks:
integrate Spack explicitly in their workflow. Not all users are
willing to do this.
------------------------
Using Spack on Travis-CI
------------------------
Spack can be deployed as a provider for userland software in
`Travis-CI <https://http://travis-ci.org>`_.
A starting-point for a ``.travis.yml`` file can look as follows.
It uses `caching <https://docs.travis-ci.com/user/caching/>`_ for
already built environments, so make sure to clean the Travis cache if
you run into problems.
The main points that are implemented below:
#. Travis is detected as having up to 34 cores available, but only 2
are actually allocated for the user. We limit the parallelism of
the spack builds in the config.
(The Travis yaml parser is a bit buggy on the echo command.)
#. Builds over 10 minutes need to be prefixed with ``travis_wait``.
Alternatively, generate output once with ``spack install -v``.
#. Travis builds are non-interactive. This prevents using bash
aliases and functions for modules. We fix that by sourcing
``/etc/profile`` first (or running everything in a subshell with
``bash -l -c '...'``).
.. code-block:: yaml
language: cpp
sudo: false
dist: trusty
cache:
apt: true
directories:
- $HOME/.cache
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
- environment-modules
env:
global:
- SPACK_ROOT: $HOME/.cache/spack
- PATH: $PATH:$HOME/.cache/spack/bin
before_install:
- export CXX=g++-4.9
- export CC=gcc-4.9
- export FC=gfortran-4.9
- export CXXFLAGS="-std=c++11"
install:
- if ! which spack >/dev/null; then
mkdir -p $SPACK_ROOT &&
git clone --depth 50 https://github.com/spack/spack.git $SPACK_ROOT &&
echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml;
fi
- travis_wait spack install cmake@3.7.2~openssl~ncurses
- travis_wait spack install boost@1.62.0~graph~iostream~locale~log~wave
- spack clean -a
- source /etc/profile &&
source $SPACK_ROOT/share/spack/setup-env.sh
- spack load cmake
- spack load boost
script:
- mkdir -p $HOME/build
- cd $HOME/build
- cmake $TRAVIS_BUILD_DIR
- make -j 2
- make test
.. _workflow_create_docker_image:
-----------------------------------
Using Spack to Create Docker Images
-----------------------------------
Spack can be the ideal tool to set up images for Docker (and Singularity).
An example ``Dockerfile`` is given below, downloading the latest spack
version.
The following functionality is prepared:
#. Base image: the example starts from a minimal ubuntu.
#. Installing as root: docker images are usually set up as root.
Since some autotools scripts might complain about this being unsafe, we set
``FORCE_UNSAFE_CONFIGURE=1`` to avoid configure errors.
#. Pre-install the spack dependencies, including modules from the packages.
This avoids needing to build those from scratch via ``spack bootstrap``.
Package installs are followed by a clean-up of the system package index,
to avoid outdated information and it saves space.
#. Install spack in ``/usr/local``.
Add ``setup-env.sh`` to profile scripts, so commands in *login* shells
can use the whole spack functionality, including modules.
#. Install an example package (``tar``).
As with system package managers above, ``spack install`` commands should be
concatenated with a ``&& spack clean -a`` in order to keep image sizes small.
#. Add a startup hook to an *interactive login shell* so spack modules will be
usable.
In order to build and run the image, execute:
.. code-block:: bash
docker build -t spack .
docker run -it spack
.. code-block:: docker
FROM ubuntu:16.04
MAINTAINER Your Name <someone@example.com>
# general environment for docker
ENV DEBIAN_FRONTEND=noninteractive \
SPACK_ROOT=/usr/local \
FORCE_UNSAFE_CONFIGURE=1
# install minimal spack depedencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
autoconf \
build-essential \
ca-certificates \
coreutils \
curl \
environment-modules \
git \
python \
unzip \
vim \
&& rm -rf /var/lib/apt/lists/*
# load spack environment on login
RUN echo "source $SPACK_ROOT/share/spack/setup-env.sh" \
> /etc/profile.d/spack.sh
# spack settings
# note: if you wish to change default settings, add files alongside
# the Dockerfile with your desired settings. Then uncomment this line
#COPY packages.yaml modules.yaml $SPACK_ROOT/etc/spack/
# install spack
RUN curl -s -L https://api.github.com/repos/spack/spack/tarball \
| tar xzC $SPACK_ROOT --strip 1
# note: at this point one could also run ``spack bootstrap`` to avoid
# parts of the long apt-get install list above
# install software
RUN spack install tar \
&& spack clean -a
# need the modules already during image build?
#RUN /bin/bash -l -c ' \
# spack load tar \
# && which tar'
# image run hook: the -l will make sure /etc/profile environments are loaded
CMD /bin/bash -l
^^^^^^^^^^^^^^
Best Practices
^^^^^^^^^^^^^^
"""
MPI
"""
Due to the dependency on Fortran for OpenMPI, which is the spack default
implementation, consider adding ``gfortran`` to the ``apt-get install`` list.
Recent versions of OpenMPI will require you to pass ``--allow-run-as-root``
to your ``mpirun`` calls if started as root user inside Docker.
For execution on HPC clusters, it can be helpful to import the docker
image into Singularity in order to start a program with an *external*
MPI. Otherwise, also add ``openssh-server`` to the ``apt-get install`` list.
""""
CUDA
""""
Starting from CUDA 9.0, Nvidia provides minimal CUDA images based on
Ubuntu.
Please see `their instructions <https://hub.docker.com/r/nvidia/cuda/>`_.
Avoid double-installing CUDA by adding, e.g.
.. code-block:: yaml
packages:
cuda:
paths:
cuda@9.0.176%gcc@5.4.0 arch=linux-ubuntu16-x86_64: /usr/local/cuda
buildable: False
to your ``packages.yaml``.
Then ``COPY`` in that file into the image as in the example above.
Users will either need ``nvidia-docker`` or e.g. Singularity to *execute*
device kernels.
"""""""""""
Singularity
"""""""""""
Importing and running the image created above into
`Singularity <http://singularity.lbl.gov/>`_ works like a charm.
Just use the `docker bootstraping mechanism <http://singularity.lbl.gov/quickstart#bootstrap-recipes>`_:
.. code-block:: none
Bootstrap: docker
From: registry/user/image:tag
%runscript
exec /bin/bash -l
------------------
Upstream Bug Fixes
------------------
@@ -1055,7 +1270,7 @@ Buggy New Version
Sometimes, the old version of a package works fine, but a new version
is buggy. For example, it was once found that `Adios did not build
with hdf5@1.10 <https://github.com/LLNL/spack/issues/1683>`_. If the
with hdf5@1.10 <https://github.com/spack/spack/issues/1683>`_. If the
old version of ``hdf5`` will work with ``adios``, the suggested
procedure is:
@@ -1065,7 +1280,7 @@ procedure is:
.. code-block:: python
# Adios does not build with HDF5 1.10
# See: https://github.com/LLNL/spack/issues/1683
# See: https://github.com/spack/spack/issues/1683
depends_on('hdf5@:1.9')
#. Determine whether the problem is with ``hdf5`` or ``adios``, and
@@ -1078,7 +1293,7 @@ procedure is:
.. code-block:: python
# Adios up to v1.10.0 does not build with HDF5 1.10
# See: https://github.com/LLNL/spack/issues/1683
# See: https://github.com/spack/spack/issues/1683
depends_on('hdf5@:1.9', when='@:1.10.0')
depends_on('hdf5', when='@1.10.1:')

27
lib/spack/env/cc vendored
View File

@@ -1,14 +1,14 @@
#!/bin/bash
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -45,6 +45,7 @@ parameters=(
SPACK_PREFIX
SPACK_ENV_PATH
SPACK_DEBUG_LOG_DIR
SPACK_DEBUG_LOG_ID
SPACK_COMPILER_SPEC
SPACK_CC_RPATH_ARG
SPACK_CXX_RPATH_ARG
@@ -58,7 +59,7 @@ parameters=(
# The default compiler flags are passed from these variables:
# SPACK_CFLAGS, SPACK_CXXFLAGS, SPACK_FCFLAGS, SPACK_FFLAGS,
# SPACK_LDFLAGS, SPACK_LDLIBS
# Debug env var is optional; set to true for debug logging:
# Debug env var is optional; set to "TRUE" for debug logging:
# SPACK_DEBUG
# Test command is used to unit test the compiler script.
# SPACK_TEST_COMMAND
@@ -98,25 +99,25 @@ case "$command" in
cpp)
mode=cpp
;;
cc|c89|c99|gcc|clang|icc|pgcc|xlc)
cc|c89|c99|gcc|clang|icc|pgcc|xlc|xlc_r)
command="$SPACK_CC"
language="C"
comp="CC"
lang_flags=C
;;
c++|CC|g++|clang++|icpc|pgc++|xlc++)
c++|CC|g++|clang++|icpc|pgc++|xlc++|xlc++_r)
command="$SPACK_CXX"
language="C++"
comp="CXX"
lang_flags=CXX
;;
ftn|f90|fc|f95|gfortran|ifort|pgfortran|xlf90|nagfor)
ftn|f90|fc|f95|gfortran|flang|ifort|pgfortran|xlf90|xlf90_r|nagfor)
command="$SPACK_FC"
language="Fortran 90"
comp="FC"
lang_flags=F
;;
f77|gfortran|ifort|pgfortran|xlf|nagfor|ftn)
f77|gfortran|flang|ifort|pgfortran|xlf|xlf_r|nagfor|ftn)
command="$SPACK_F77"
language="Fortran 77"
comp="F77"
@@ -133,7 +134,7 @@ esac
# If any of the arguments below are present, then the mode is vcheck.
# In vcheck mode, nothing is added in terms of extra search paths or
# libraries.
if [[ -z $mode ]]; then
if [[ -z $mode ]] || [[ $mode == ld ]]; then
for arg in "$@"; do
if [[ $arg == -v || $arg == -V || $arg == --version || $arg == -dumpversion ]]; then
mode=vcheck
@@ -218,7 +219,7 @@ fi
add_rpaths=true
if [[ ($mode == ld || $mode == ccld) && "$SPACK_SHORT_SPEC" =~ "darwin" ]]; then
for arg in "$@"; do
if [[ ($arg == -r && $mode == ld) || ($arg == -Wl,-r && $mode == ccld) ]]; then
if [[ ($arg == -r && $mode == ld) || ($arg == -r && $mode == ccld) || ($arg == -Wl,-r && $mode == ccld) ]]; then
add_rpaths=false
break
fi
@@ -328,8 +329,10 @@ IFS=':' read -ra extra_rpaths <<< "$SPACK_COMPILER_EXTRA_RPATHS"
for extra_rpath in "${extra_rpaths[@]}"; do
if [[ $mode == ccld ]]; then
$add_rpaths && args=("$rpath$extra_rpath" "${args[@]}")
args=("-L$extra_rpath" "${args[@]}")
elif [[ $mode == ld ]]; then
$add_rpaths && args=("-rpath" "$extra_rpath" "${args[@]}")
args=("-L$extra_rpath" "${args[@]}")
fi
done
@@ -353,8 +356,8 @@ fi
# Write the input and output commands to debug logs if it's asked for.
#
if [[ $SPACK_DEBUG == TRUE ]]; then
input_log="$SPACK_DEBUG_LOG_DIR/spack-cc-$SPACK_SHORT_SPEC.in.log"
output_log="$SPACK_DEBUG_LOG_DIR/spack-cc-$SPACK_SHORT_SPEC.out.log"
input_log="$SPACK_DEBUG_LOG_DIR/spack-cc-$SPACK_DEBUG_LOG_ID.in.log"
output_log="$SPACK_DEBUG_LOG_DIR/spack-cc-$SPACK_DEBUG_LOG_ID.out.log"
echo "[$mode] $command $input_command" >> "$input_log"
echo "[$mode] ${full_command[@]}" >> "$output_log"
fi

1
lib/spack/env/clang/flang vendored Symbolic link
View File

@@ -0,0 +1 @@
../cc

1
lib/spack/env/xl_r/xlc++_r vendored Symbolic link
View File

@@ -0,0 +1 @@
../cc

1
lib/spack/env/xl_r/xlc_r vendored Symbolic link
View File

@@ -0,0 +1 @@
../cc

1
lib/spack/env/xl_r/xlf90_r vendored Symbolic link
View File

@@ -0,0 +1 @@
../cc

1
lib/spack/env/xl_r/xlf_r vendored Symbolic link
View File

@@ -0,0 +1 @@
../cc

View File

@@ -1,13 +1,13 @@
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
# For details, see https://github.com/spack/spack
# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
@@ -22,28 +22,113 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
"""
This module contains external, potentially separately licensed,
packages that are included in spack.
So far:
argparse: We include our own version to be Python 2.6 compatible.
distro: Provides a more stable linux distribution detection.
functools: Used for implementation of total_ordering.
jsonschema: An implementation of JSON Schema for Python.
ordereddict: We include our own version to be Python 2.6 compatible.
py: Needed by pytest. Library with cross-python path,
ini-parsing, io, code, and log facilities.
pyqver2: External script to query required python version of
python source code. Used for ensuring 2.6 compatibility.
pytest: Testing framework used by Spack.
yaml: Used for config files.
"""This module contains the following external, potentially separately
licensed, packages that are included in Spack:
argparse
--------
* Homepage: https://pypi.python.org/pypi/argparse
* Usage: We include our own version to be Python 2.6 compatible.
* Version: 1.4.0
* Note: This package has been slightly modified to improve
error message formatting. See the following commit if the
vendored copy ever needs to be updated again:
https://github.com/spack/spack/pull/6786/commits/dfcef577b77249106ea4e4c69a6cd9e64fa6c418
ctest_log_parser
----------------
* Homepage: https://github.com/Kitware/CMake/blob/master/Source/CTest/cmCTestBuildHandler.cxx
* Usage: Functions to parse build logs and extract error messages.
* Version: Unversioned
* Note: This is a homemade port of Kitware's CTest build handler.
distro
------
* Homepage: https://pypi.python.org/pypi/distro
* Usage: Provides a more stable linux distribution detection.
* Version: 1.0.4 (last version supporting Python 2.6)
functools
---------
* Homepage: https://github.com/python/cpython/blob/2.7/Lib/functools.py
* Usage: Used for implementation of total_ordering.
* Version: Unversioned
* Note: This is the functools.total_ordering implementation
from Python 2.7 backported so we can run on Python 2.6.
jinja2
------
* Homepage: https://pypi.python.org/pypi/Jinja2
* Usage: A modern and designer-friendly templating language for Python.
* Version: 2.10
jsonschema
----------
* Homepage: https://pypi.python.org/pypi/jsonschema
* Usage: An implementation of JSON Schema for Python.
* Version: 2.4.0 (last version before functools32 dependency was added)
* Note: functools32 doesn't support Python 2.6 or 3.0, so jsonschema
cannot be upgraded any further
markupsafe
----------
* Homepage: https://pypi.python.org/pypi/MarkupSafe
* Usage: Implements a XML/HTML/XHTML Markup safe string for Python.
* Version: 1.0
orderddict
----------
* Homepage: https://pypi.org/project/ordereddict/
* Usage: A drop-in substitute for Py2.7's new collections.OrderedDict
that works in Python 2.4-2.6.
* Version: 1.1
py
--
* Homepage: https://pypi.python.org/pypi/py
* Usage: Needed by pytest. Library with cross-python path,
ini-parsing, io, code, and log facilities.
* Version: 1.4.34 (last version supporting Python 2.6)
pyqver
------
* Homepage: https://github.com/ghewgill/pyqver
* Usage: External script to query required python version of
python source code. Used for ensuring 2.6 compatibility.
* Version: Unversioned
pytest
------
* Homepage: https://pypi.python.org/pypi/pytest
* Usage: Testing framework used by Spack.
* Version: 3.2.5 (last version supporting Python 2.6)
* Note: This package has been slightly modified to improve
Python 2.6 compatibility. See the following commit if the
vendored copy ever needs to be updated again:
https://github.com/spack/spack/pull/6801/commits/ff513c39f2c67ff615de5cbc581dd69a8ec96526
pyyaml
------
* Homepage: https://pypi.python.org/pypi/PyYAML
* Usage: Used for config files.
* Version: 3.12
six
---
* Homepage: https://pypi.python.org/pypi/six
* Usage: Python 2 and 3 compatibility utilities.
* Version: 1.11.0
"""

View File

@@ -1,141 +0,0 @@
Holger Krekel, holger at merlinux eu
merlinux GmbH, Germany, office at merlinux eu
Contributors include::
Abdeali JK
Abhijeet Kasurde
Ahn Ki-Wook
Alexei Kozlenok
Anatoly Bubenkoff
Andreas Zeidler
Andrzej Ostrowski
Andy Freeland
Anthon van der Neut
Antony Lee
Armin Rigo
Aron Curzon
Aviv Palivoda
Ben Webb
Benjamin Peterson
Bernard Pratz
Bob Ippolito
Brian Dorsey
Brian Okken
Brianna Laugher
Bruno Oliveira
Cal Leeming
Carl Friedrich Bolz
Charles Cloud
Charnjit SiNGH (CCSJ)
Chris Lamb
Christian Boelsen
Christian Theunert
Christian Tismer
Christopher Gilling
Daniel Grana
Daniel Hahler
Daniel Nuri
Daniel Wandschneider
Danielle Jenkins
Dave Hunt
David Díaz-Barquero
David Mohr
David Vierra
Diego Russo
Dmitry Dygalo
Duncan Betts
Edison Gustavo Muenz
Edoardo Batini
Eduardo Schettino
Elizaveta Shashkova
Endre Galaczi
Eric Hunsberger
Eric Siegerman
Erik M. Bray
Feng Ma
Florian Bruhin
Floris Bruynooghe
Gabriel Reis
Georgy Dyuldin
Graham Horler
Greg Price
Grig Gheorghiu
Grigorii Eremeev (budulianin)
Guido Wesdorp
Harald Armin Massa
Ian Bicking
Jaap Broekhuizen
Jan Balster
Janne Vanhala
Jason R. Coombs
Javier Domingo Cansino
Javier Romero
John Towler
Jon Sonesen
Jordan Guymon
Joshua Bronson
Jurko Gospodnetić
Justyna Janczyszyn
Kale Kundert
Katarzyna Jachim
Kevin Cox
Lee Kamentsky
Lev Maximov
Lukas Bednar
Luke Murphy
Maciek Fijalkowski
Maho
Marc Schlaich
Marcin Bachry
Mark Abramowitz
Markus Unterwaditzer
Martijn Faassen
Martin K. Scherer
Martin Prusse
Mathieu Clabaut
Matt Bachmann
Matt Williams
Matthias Hafner
mbyt
Michael Aquilina
Michael Birtwell
Michael Droettboom
Michael Seifert
Mike Lundy
Ned Batchelder
Neven Mundar
Nicolas Delaby
Oleg Pidsadnyi
Oliver Bestwalter
Omar Kohl
Pieter Mulder
Piotr Banaszkiewicz
Punyashloka Biswal
Quentin Pradet
Ralf Schmitt
Raphael Pierzina
Raquel Alegre
Roberto Polli
Romain Dorgueil
Roman Bolshakov
Ronny Pfannschmidt
Ross Lawley
Russel Winder
Ryan Wooden
Samuele Pedroni
Simon Gomizelj
Stefan Farmbauer
Stefan Zimmermann
Stefano Taschini
Steffen Allner
Stephan Obermann
Tareq Alayan
Ted Xiao
Thomas Grainger
Tom Viner
Trevor Bekolay
Tyler Goodlet
Vasily Kuznetsov
Wouter van Ackooy
Xuecong Liao

View File

@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2004-2016 Holger Krekel and others
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,102 +0,0 @@
.. image:: http://docs.pytest.org/en/latest/_static/pytest1.png
:target: http://docs.pytest.org
:align: center
:alt: pytest
------
.. image:: https://img.shields.io/pypi/v/pytest.svg
:target: https://pypi.python.org/pypi/pytest
.. image:: https://img.shields.io/pypi/pyversions/pytest.svg
:target: https://pypi.python.org/pypi/pytest
.. image:: https://img.shields.io/coveralls/pytest-dev/pytest/master.svg
:target: https://coveralls.io/r/pytest-dev/pytest
.. image:: https://travis-ci.org/pytest-dev/pytest.svg?branch=master
:target: https://travis-ci.org/pytest-dev/pytest
.. image:: https://ci.appveyor.com/api/projects/status/mrgbjaua7t33pg6b?svg=true
:target: https://ci.appveyor.com/project/pytestbot/pytest
The ``pytest`` framework makes it easy to write small tests, yet
scales to support complex functional testing for applications and libraries.
An example of a simple test:
.. code-block:: python
# content of test_sample.py
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 5
To execute it::
$ pytest
============================= test session starts =============================
collected 1 items
test_sample.py F
================================== FAILURES ===================================
_________________________________ test_answer _________________________________
def test_answer():
> assert inc(3) == 5
E assert 4 == 5
E + where 4 = inc(3)
test_sample.py:5: AssertionError
========================== 1 failed in 0.04 seconds ===========================
Due to ``pytest``'s detailed assertion introspection, only plain ``assert`` statements are used. See `getting-started <http://docs.pytest.org/en/latest/getting-started.html#our-first-test-run>`_ for more examples.
Features
--------
- Detailed info on failing `assert statements <http://docs.pytest.org/en/latest/assert.html>`_ (no need to remember ``self.assert*`` names);
- `Auto-discovery
<http://docs.pytest.org/en/latest/goodpractices.html#python-test-discovery>`_
of test modules and functions;
- `Modular fixtures <http://docs.pytest.org/en/latest/fixture.html>`_ for
managing small or parametrized long-lived test resources;
- Can run `unittest <http://docs.pytest.org/en/latest/unittest.html>`_ (or trial),
`nose <http://docs.pytest.org/en/latest/nose.html>`_ test suites out of the box;
- Python2.6+, Python3.3+, PyPy-2.3, Jython-2.5 (untested);
- Rich plugin architecture, with over 150+ `external plugins <http://docs.pytest.org/en/latest/plugins.html#installing-external-plugins-searching>`_ and thriving community;
Documentation
-------------
For full documentation, including installation, tutorials and PDF documents, please see http://docs.pytest.org.
Bugs/Requests
-------------
Please use the `GitHub issue tracker <https://github.com/pytest-dev/pytest/issues>`_ to submit bugs or request features.
Changelog
---------
Consult the `Changelog <http://docs.pytest.org/en/latest/changelog.html>`__ page for fixes and enhancements of each version.
License
-------
Copyright Holger Krekel and others, 2004-2016.
Distributed under the terms of the `MIT`_ license, pytest is free and open source software.
.. _`MIT`: https://github.com/pytest-dev/pytest/blob/master/LICENSE

View File

@@ -1,2 +1,8 @@
#
__version__ = '3.0.5'
__all__ = ['__version__']
try:
from ._version import version as __version__
except ImportError:
# broken installation, we don't even try
# unknown only works because we do poor mans version compare
__version__ = 'unknown'

View File

@@ -57,26 +57,29 @@
which should throw a KeyError: 'COMPLINE' (which is properly set by the
global argcomplete script).
"""
from __future__ import absolute_import, division, print_function
import sys
import os
from glob import glob
class FastFilesCompleter:
'Fast file completer class'
def __init__(self, directories=True):
self.directories = directories
def __call__(self, prefix, **kwargs):
"""only called on non option completions"""
if os.path.sep in prefix[1:]: #
if os.path.sep in prefix[1:]:
prefix_dir = len(os.path.dirname(prefix) + os.path.sep)
else:
prefix_dir = 0
completion = []
globbed = []
if '*' not in prefix and '?' not in prefix:
if prefix[-1] == os.path.sep: # we are on unix, otherwise no bash
# we are on unix, otherwise no bash
if not prefix or prefix[-1] == os.path.sep:
globbed.extend(glob(prefix + '.*'))
prefix += '*'
globbed.extend(glob(prefix))
@@ -96,7 +99,8 @@ def __call__(self, prefix, **kwargs):
filescompleter = FastFilesCompleter()
def try_argcomplete(parser):
argcomplete.autocomplete(parser)
argcomplete.autocomplete(parser, always_complete_options=False)
else:
def try_argcomplete(parser): pass
def try_argcomplete(parser):
pass
filescompleter = None

View File

@@ -1,4 +1,5 @@
""" python inspection/code generation API """
from __future__ import absolute_import, division, print_function
from .code import Code # noqa
from .code import ExceptionInfo # noqa
from .code import Frame # noqa

View File

@@ -2,8 +2,10 @@
# CHANGES:
# - some_str is replaced, trying to create unicode strings
#
from __future__ import absolute_import, division, print_function
import types
def format_exception_only(etype, value):
"""Format the exception part of a traceback.
@@ -29,7 +31,7 @@ def format_exception_only(etype, value):
# would throw another exception and mask the original problem.
if (isinstance(etype, BaseException) or
isinstance(etype, types.InstanceType) or
etype is None or type(etype) is str):
etype is None or type(etype) is str):
return [_format_final_exc_line(etype, value)]
stype = etype.__name__
@@ -61,6 +63,7 @@ def format_exception_only(etype, value):
lines.append(_format_final_exc_line(stype, value))
return lines
def _format_final_exc_line(etype, value):
"""Return a list of a single line -- normal case for format_exception_only"""
valuestr = _some_str(value)
@@ -70,6 +73,7 @@ def _format_final_exc_line(etype, value):
line = "%s: %s\n" % (etype, valuestr)
return line
def _some_str(value):
try:
return unicode(value)

View File

@@ -1,14 +1,16 @@
from __future__ import absolute_import, division, print_function
import sys
from inspect import CO_VARARGS, CO_VARKEYWORDS
import re
from weakref import ref
from _pytest.compat import _PY2, _PY3, PY35, safe_str
import py
builtin_repr = repr
reprlib = py.builtin._tryimport('repr', 'reprlib')
if sys.version_info[0] >= 3:
if _PY3:
from traceback import format_exception_only
else:
from ._py2traceback import format_exception_only
@@ -16,6 +18,7 @@
class Code(object):
""" wrapper around Python code objects """
def __init__(self, rawcode):
if not hasattr(rawcode, "co_filename"):
rawcode = getrawcode(rawcode)
@@ -24,7 +27,7 @@ def __init__(self, rawcode):
self.firstlineno = rawcode.co_firstlineno - 1
self.name = rawcode.co_name
except AttributeError:
raise TypeError("not a code object: %r" %(rawcode,))
raise TypeError("not a code object: %r" % (rawcode,))
self.raw = rawcode
def __eq__(self, other):
@@ -80,6 +83,7 @@ def getargs(self, var=False):
argcount += raw.co_flags & CO_VARKEYWORDS
return raw.co_varnames[:argcount]
class Frame(object):
"""Wrapper around a Python frame holding f_locals and f_globals
in which expressions can be evaluated."""
@@ -117,7 +121,7 @@ def exec_(self, code, **vars):
"""
f_locals = self.f_locals.copy()
f_locals.update(vars)
py.builtin.exec_(code, self.f_globals, f_locals )
py.builtin.exec_(code, self.f_globals, f_locals)
def repr(self, object):
""" return a 'safe' (non-recursive, one-line) string repr for 'object'
@@ -141,6 +145,7 @@ def getargs(self, var=False):
pass # this can occur when using Psyco
return retval
class TracebackEntry(object):
""" a single entry in a traceback """
@@ -166,7 +171,7 @@ def relline(self):
return self.lineno - self.frame.code.firstlineno
def __repr__(self):
return "<TracebackEntry %s:%d>" %(self.frame.code.path, self.lineno+1)
return "<TracebackEntry %s:%d>" % (self.frame.code.path, self.lineno + 1)
@property
def statement(self):
@@ -245,19 +250,21 @@ def __str__(self):
line = str(self.statement).lstrip()
except KeyboardInterrupt:
raise
except:
except: # noqa
line = "???"
return " File %r:%d in %s\n %s\n" %(fn, self.lineno+1, name, line)
return " File %r:%d in %s\n %s\n" % (fn, self.lineno + 1, name, line)
def name(self):
return self.frame.code.raw.co_name
name = property(name, None, None, "co_name of underlaying code")
class Traceback(list):
""" Traceback objects encapsulate and offer higher level
access to Traceback entries.
"""
Entry = TracebackEntry
def __init__(self, tb, excinfo=None):
""" initialize from given python traceback object and ExceptionInfo """
self._excinfo = excinfo
@@ -287,7 +294,7 @@ def cut(self, path=None, lineno=None, firstlineno=None, excludepath=None):
(excludepath is None or not hasattr(codepath, 'relto') or
not codepath.relto(excludepath)) and
(lineno is None or x.lineno == lineno) and
(firstlineno is None or x.frame.code.firstlineno == firstlineno)):
(firstlineno is None or x.frame.code.firstlineno == firstlineno)):
return Traceback(x._rawentry, self._excinfo)
return self
@@ -313,7 +320,7 @@ def getcrashentry(self):
""" return last non-hidden traceback entry that lead
to the exception of a traceback.
"""
for i in range(-1, -len(self)-1, -1):
for i in range(-1, -len(self) - 1, -1):
entry = self[i]
if not entry.ishidden():
return entry
@@ -328,30 +335,33 @@ def recursionindex(self):
# id for the code.raw is needed to work around
# the strange metaprogramming in the decorator lib from pypi
# which generates code objects that have hash/value equality
#XXX needs a test
# XXX needs a test
key = entry.frame.code.path, id(entry.frame.code.raw), entry.lineno
#print "checking for recursion at", key
l = cache.setdefault(key, [])
if l:
# print "checking for recursion at", key
values = cache.setdefault(key, [])
if values:
f = entry.frame
loc = f.f_locals
for otherloc in l:
for otherloc in values:
if f.is_true(f.eval(co_equal,
__recursioncache_locals_1=loc,
__recursioncache_locals_2=otherloc)):
__recursioncache_locals_1=loc,
__recursioncache_locals_2=otherloc)):
return i
l.append(entry.frame.f_locals)
values.append(entry.frame.f_locals)
return None
co_equal = compile('__recursioncache_locals_1 == __recursioncache_locals_2',
'?', 'eval')
class ExceptionInfo(object):
""" wraps sys.exc_info() objects and offers
help for navigating the traceback.
"""
_striptext = ''
_assert_start_repr = "AssertionError(u\'assert " if _PY2 else "AssertionError(\'assert "
def __init__(self, tup=None, exprinfo=None):
import _pytest._code
if tup is None:
@@ -359,8 +369,8 @@ def __init__(self, tup=None, exprinfo=None):
if exprinfo is None and isinstance(tup[1], AssertionError):
exprinfo = getattr(tup[1], 'msg', None)
if exprinfo is None:
exprinfo = py._builtin._totext(tup[1])
if exprinfo and exprinfo.startswith('assert '):
exprinfo = py.io.saferepr(tup[1])
if exprinfo and exprinfo.startswith(self._assert_start_repr):
self._striptext = 'AssertionError: '
self._excinfo = tup
#: the exception class
@@ -401,10 +411,10 @@ def _getreprcrash(self):
exconly = self.exconly(tryshort=True)
entry = self.traceback.getcrashentry()
path, lineno = entry.frame.code.raw.co_filename, entry.lineno
return ReprFileLocation(path, lineno+1, exconly)
return ReprFileLocation(path, lineno + 1, exconly)
def getrepr(self, showlocals=False, style="long",
abspath=False, tbfilter=True, funcargs=False):
abspath=False, tbfilter=True, funcargs=False):
""" return str()able representation of this exception info.
showlocals: show locals per traceback entry
style: long|short|no|native traceback style
@@ -421,7 +431,7 @@ def getrepr(self, showlocals=False, style="long",
)), self._getreprcrash())
fmt = FormattedExcinfo(showlocals=showlocals, style=style,
abspath=abspath, tbfilter=tbfilter, funcargs=funcargs)
abspath=abspath, tbfilter=tbfilter, funcargs=funcargs)
return fmt.repr_excinfo(self)
def __str__(self):
@@ -465,15 +475,15 @@ def __init__(self, showlocals=False, style="long", abspath=True, tbfilter=True,
def _getindent(self, source):
# figure out indent for given source
try:
s = str(source.getstatement(len(source)-1))
s = str(source.getstatement(len(source) - 1))
except KeyboardInterrupt:
raise
except:
except: # noqa
try:
s = str(source[-1])
except KeyboardInterrupt:
raise
except:
except: # noqa
return 0
return 4 + (len(s) - len(s.lstrip()))
@@ -509,7 +519,7 @@ def get_source(self, source, line_index=-1, excinfo=None, short=False):
for line in source.lines[:line_index]:
lines.append(space_prefix + line)
lines.append(self.flow_marker + " " + source.lines[line_index])
for line in source.lines[line_index+1:]:
for line in source.lines[line_index + 1:]:
lines.append(space_prefix + line)
if excinfo is not None:
indent = 4 if short else self._getindent(source)
@@ -542,10 +552,10 @@ def repr_locals(self, locals):
# _repr() function, which is only reprlib.Repr in
# disguise, so is very configurable.
str_repr = self._saferepr(value)
#if len(str_repr) < 70 or not isinstance(value,
# if len(str_repr) < 70 or not isinstance(value,
# (list, tuple, dict)):
lines.append("%-10s = %s" %(name, str_repr))
#else:
lines.append("%-10s = %s" % (name, str_repr))
# else:
# self._line("%-10s =\\" % (name,))
# # XXX
# py.std.pprint.pprint(value, stream=self.excinfowriter)
@@ -571,14 +581,14 @@ def repr_traceback_entry(self, entry, excinfo=None):
s = self.get_source(source, line_index, excinfo, short=short)
lines.extend(s)
if short:
message = "in %s" %(entry.name)
message = "in %s" % (entry.name)
else:
message = excinfo and excinfo.typename or ""
path = self._makepath(entry.path)
filelocrepr = ReprFileLocation(path, entry.lineno+1, message)
filelocrepr = ReprFileLocation(path, entry.lineno + 1, message)
localsrepr = None
if not short:
localsrepr = self.repr_locals(entry.locals)
localsrepr = self.repr_locals(entry.locals)
return ReprEntry(lines, reprargs, localsrepr, filelocrepr, style)
if excinfo:
lines.extend(self.get_exconly(excinfo, indent=4))
@@ -598,24 +608,54 @@ def repr_traceback(self, excinfo):
traceback = excinfo.traceback
if self.tbfilter:
traceback = traceback.filter()
recursionindex = None
if is_recursion_error(excinfo):
recursionindex = traceback.recursionindex()
traceback, extraline = self._truncate_recursive_traceback(traceback)
else:
extraline = None
last = traceback[-1]
entries = []
extraline = None
for index, entry in enumerate(traceback):
einfo = (last == entry) and excinfo or None
reprentry = self.repr_traceback_entry(entry, einfo)
entries.append(reprentry)
if index == recursionindex:
extraline = "!!! Recursion detected (same locals & position)"
break
return ReprTraceback(entries, extraline, style=self.style)
def _truncate_recursive_traceback(self, traceback):
"""
Truncate the given recursive traceback trying to find the starting point
of the recursion.
The detection is done by going through each traceback entry and finding the
point in which the locals of the frame are equal to the locals of a previous frame (see ``recursionindex()``.
Handle the situation where the recursion process might raise an exception (for example
comparing numpy arrays using equality raises a TypeError), in which case we do our best to
warn the user of the error and show a limited traceback.
"""
try:
recursionindex = traceback.recursionindex()
except Exception as e:
max_frames = 10
extraline = (
'!!! Recursion error detected, but an error occurred locating the origin of recursion.\n'
' The following exception happened when comparing locals in the stack frame:\n'
' {exc_type}: {exc_msg}\n'
' Displaying first and last {max_frames} stack frames out of {total}.'
).format(exc_type=type(e).__name__, exc_msg=safe_str(e), max_frames=max_frames, total=len(traceback))
traceback = traceback[:max_frames] + traceback[-max_frames:]
else:
if recursionindex is not None:
extraline = "!!! Recursion detected (same locals & position)"
traceback = traceback[:recursionindex + 1]
else:
extraline = None
return traceback, extraline
def repr_excinfo(self, excinfo):
if sys.version_info[0] < 3:
if _PY2:
reprtraceback = self.repr_traceback(excinfo)
reprcrash = excinfo._getreprcrash()
@@ -639,7 +679,7 @@ def repr_excinfo(self, excinfo):
e = e.__cause__
excinfo = ExceptionInfo((type(e), e, e.__traceback__)) if e.__traceback__ else None
descr = 'The above exception was the direct cause of the following exception:'
elif e.__context__ is not None:
elif (e.__context__ is not None and not e.__suppress_context__):
e = e.__context__
excinfo = ExceptionInfo((type(e), e, e.__traceback__)) if e.__traceback__ else None
descr = 'During handling of the above exception, another exception occurred:'
@@ -652,7 +692,7 @@ def repr_excinfo(self, excinfo):
class TerminalRepr(object):
def __str__(self):
s = self.__unicode__()
if sys.version_info[0] < 3:
if _PY2:
s = s.encode('utf-8')
return s
@@ -665,7 +705,7 @@ def __unicode__(self):
return io.getvalue().strip()
def __repr__(self):
return "<%s instance at %0x>" %(self.__class__, id(self))
return "<%s instance at %0x>" % (self.__class__, id(self))
class ExceptionRepr(TerminalRepr):
@@ -709,6 +749,7 @@ def toterminal(self, tw):
self.reprtraceback.toterminal(tw)
super(ReprExceptionInfo, self).toterminal(tw)
class ReprTraceback(TerminalRepr):
entrysep = "_ "
@@ -724,7 +765,7 @@ def toterminal(self, tw):
tw.line("")
entry.toterminal(tw)
if i < len(self.reprentries) - 1:
next_entry = self.reprentries[i+1]
next_entry = self.reprentries[i + 1]
if entry.style == "long" or \
entry.style == "short" and next_entry.style == "long":
tw.sep(self.entrysep)
@@ -732,12 +773,14 @@ def toterminal(self, tw):
if self.extraline:
tw.line(self.extraline)
class ReprTracebackNative(ReprTraceback):
def __init__(self, tblines):
self.style = "native"
self.reprentries = [ReprEntryNative(tblines)]
self.extraline = None
class ReprEntryNative(TerminalRepr):
style = "native"
@@ -747,6 +790,7 @@ def __init__(self, tblines):
def toterminal(self, tw):
tw.write("".join(self.lines))
class ReprEntry(TerminalRepr):
localssep = "_ "
@@ -763,7 +807,7 @@ def toterminal(self, tw):
for line in self.lines:
red = line.startswith("E ")
tw.line(line, bold=True, red=red)
#tw.line("")
# tw.line("")
return
if self.reprfuncargs:
self.reprfuncargs.toterminal(tw)
@@ -771,7 +815,7 @@ def toterminal(self, tw):
red = line.startswith("E ")
tw.line(line, bold=True, red=red)
if self.reprlocals:
#tw.sep(self.localssep, "Locals")
# tw.sep(self.localssep, "Locals")
tw.line("")
self.reprlocals.toterminal(tw)
if self.reprfileloc:
@@ -784,6 +828,7 @@ def __str__(self):
self.reprlocals,
self.reprfileloc)
class ReprFileLocation(TerminalRepr):
def __init__(self, path, lineno, message):
self.path = str(path)
@@ -800,6 +845,7 @@ def toterminal(self, tw):
tw.write(self.path, bold=True, red=True)
tw.line(":%s: %s" % (self.lineno, msg))
class ReprLocals(TerminalRepr):
def __init__(self, lines):
self.lines = lines
@@ -808,6 +854,7 @@ def toterminal(self, tw):
for line in self.lines:
tw.line(line)
class ReprFuncArgs(TerminalRepr):
def __init__(self, args):
self.args = args
@@ -816,11 +863,11 @@ def toterminal(self, tw):
if self.args:
linesofar = ""
for name, value in self.args:
ns = "%s = %s" %(name, value)
ns = "%s = %s" % (safe_str(name), safe_str(value))
if len(ns) + len(linesofar) + 2 > tw.fullwidth:
if linesofar:
tw.line(linesofar)
linesofar = ns
linesofar = ns
else:
if linesofar:
linesofar += ", " + ns
@@ -848,7 +895,7 @@ def getrawcode(obj, trycall=True):
return obj
if sys.version_info[:2] >= (3, 5): # RecursionError introduced in 3.5
if PY35: # RecursionError introduced in 3.5
def is_recursion_error(excinfo):
return excinfo.errisinstance(RecursionError) # noqa
else:

View File

@@ -1,8 +1,9 @@
from __future__ import generators
from __future__ import absolute_import, division, generators, print_function
from bisect import bisect_right
import sys
import inspect, tokenize
import inspect
import tokenize
import py
cpy_compile = compile
@@ -19,6 +20,7 @@ class Source(object):
possibly deindenting it.
"""
_compilecounter = 0
def __init__(self, *parts, **kwargs):
self.lines = lines = []
de = kwargs.get('deindent', True)
@@ -73,7 +75,7 @@ def strip(self):
start, end = 0, len(self)
while start < end and not self.lines[start].strip():
start += 1
while end > start and not self.lines[end-1].strip():
while end > start and not self.lines[end - 1].strip():
end -= 1
source = Source()
source.lines[:] = self.lines[start:end]
@@ -86,8 +88,8 @@ def putaround(self, before='', after='', indent=' ' * 4):
before = Source(before)
after = Source(after)
newsource = Source()
lines = [ (indent + line) for line in self.lines]
newsource.lines = before.lines + lines + after.lines
lines = [(indent + line) for line in self.lines]
newsource.lines = before.lines + lines + after.lines
return newsource
def indent(self, indent=' ' * 4):
@@ -95,7 +97,7 @@ def indent(self, indent=' ' * 4):
all lines indented by the given indent-string.
"""
newsource = Source()
newsource.lines = [(indent+line) for line in self.lines]
newsource.lines = [(indent + line) for line in self.lines]
return newsource
def getstatement(self, lineno, assertion=False):
@@ -134,7 +136,8 @@ def isparseable(self, deindent=True):
try:
import parser
except ImportError:
syntax_checker = lambda x: compile(x, 'asd', 'exec')
def syntax_checker(x):
return compile(x, 'asd', 'exec')
else:
syntax_checker = parser.suite
@@ -143,8 +146,8 @@ def isparseable(self, deindent=True):
else:
source = str(self)
try:
#compile(source+'\n', "x", "exec")
syntax_checker(source+'\n')
# compile(source+'\n', "x", "exec")
syntax_checker(source + '\n')
except KeyboardInterrupt:
raise
except Exception:
@@ -164,8 +167,8 @@ def compile(self, filename=None, mode='exec',
"""
if not filename or py.path.local(filename).check(file=0):
if _genframe is None:
_genframe = sys._getframe(1) # the caller
fn,lineno = _genframe.f_code.co_filename, _genframe.f_lineno
_genframe = sys._getframe(1) # the caller
fn, lineno = _genframe.f_code.co_filename, _genframe.f_lineno
base = "<%d-codegen " % self._compilecounter
self.__class__._compilecounter += 1
if not filename:
@@ -180,7 +183,7 @@ def compile(self, filename=None, mode='exec',
# re-represent syntax errors from parsing python strings
msglines = self.lines[:ex.lineno]
if ex.offset:
msglines.append(" "*ex.offset + '^')
msglines.append(" " * ex.offset + '^')
msglines.append("(code was compiled probably from here: %s)" % filename)
newex = SyntaxError('\n'.join(msglines))
newex.offset = ex.offset
@@ -198,8 +201,8 @@ def compile(self, filename=None, mode='exec',
# public API shortcut functions
#
def compile_(source, filename=None, mode='exec', flags=
generators.compiler_flag, dont_inherit=0):
def compile_(source, filename=None, mode='exec', flags=generators.compiler_flag, dont_inherit=0):
""" compile the given source to a raw code object,
and maintain an internal cache which allows later
retrieval of the source code for the code object
@@ -208,7 +211,7 @@ def compile_(source, filename=None, mode='exec', flags=
if _ast is not None and isinstance(source, _ast.AST):
# XXX should Source support having AST?
return cpy_compile(source, filename, mode, flags, dont_inherit)
_genframe = sys._getframe(1) # the caller
_genframe = sys._getframe(1) # the caller
s = Source(source)
co = s.compile(filename, mode, flags, _genframe=_genframe)
return co
@@ -245,12 +248,13 @@ def getfslineno(obj):
# helper functions
#
def findsource(obj):
try:
sourcelines, lineno = py.std.inspect.findsource(obj)
except py.builtin._sysex:
raise
except:
except: # noqa
return None, -1
source = Source()
source.lines = [line.rstrip() for line in sourcelines]
@@ -274,7 +278,7 @@ def deindent(lines, offset=None):
line = line.expandtabs()
s = line.lstrip()
if s:
offset = len(line)-len(s)
offset = len(line) - len(s)
break
else:
offset = 0
@@ -293,11 +297,11 @@ def readline_generator(lines):
try:
for _, _, (sline, _), (eline, _), _ in tokenize.generate_tokens(lambda: next(it)):
if sline > len(lines):
break # End of input reached
break # End of input reached
if sline > len(newlines):
line = lines[sline - 1].expandtabs()
if line.lstrip() and line[:offset].isspace():
line = line[offset:] # Deindent
line = line[offset:] # Deindent
newlines.append(line)
for i in range(sline, eline):
@@ -315,29 +319,29 @@ def get_statement_startend2(lineno, node):
import ast
# flatten all statements and except handlers into one lineno-list
# AST's line numbers start indexing at 1
l = []
values = []
for x in ast.walk(node):
if isinstance(x, _ast.stmt) or isinstance(x, _ast.ExceptHandler):
l.append(x.lineno - 1)
values.append(x.lineno - 1)
for name in "finalbody", "orelse":
val = getattr(x, name, None)
if val:
# treat the finally/orelse part as its own statement
l.append(val[0].lineno - 1 - 1)
l.sort()
insert_index = bisect_right(l, lineno)
start = l[insert_index - 1]
if insert_index >= len(l):
values.append(val[0].lineno - 1 - 1)
values.sort()
insert_index = bisect_right(values, lineno)
start = values[insert_index - 1]
if insert_index >= len(values):
end = None
else:
end = l[insert_index]
end = values[insert_index]
return start, end
def getstatementrange_ast(lineno, source, assertion=False, astnode=None):
if astnode is None:
content = str(source)
if sys.version_info < (2,7):
if sys.version_info < (2, 7):
content += "\n"
try:
astnode = compile(content, "source", "exec", 1024) # 1024 for AST
@@ -393,7 +397,7 @@ def getstatementrange_old(lineno, source, assertion=False):
raise IndexError("likely a subclass")
if "assert" not in line and "raise" not in line:
continue
trylines = source.lines[start:lineno+1]
trylines = source.lines[start:lineno + 1]
# quick hack to prepare parsing an indented line with
# compile_command() (which errors on "return" outside defs)
trylines.insert(0, 'def xxx():')
@@ -405,10 +409,8 @@ def getstatementrange_old(lineno, source, assertion=False):
continue
# 2. find the end of the statement
for end in range(lineno+1, len(source)+1):
for end in range(lineno + 1, len(source) + 1):
trysource = source[start:end]
if trysource.isparseable():
return start, end
raise SyntaxError("no valid source range around line %d " % (lineno,))

View File

@@ -2,7 +2,7 @@
imports symbols from vendored "pluggy" if available, otherwise
falls back to importing "pluggy" from the default namespace.
"""
from __future__ import absolute_import, division, print_function
try:
from _pytest.vendored_packages.pluggy import * # noqa
from _pytest.vendored_packages.pluggy import __version__ # noqa

View File

@@ -1,12 +1,13 @@
"""
support for presenting detailed information in failing assertions.
"""
from __future__ import absolute_import, division, print_function
import py
import os
import sys
from _pytest.assertion import util
from _pytest.assertion import rewrite
from _pytest.assertion import truncate
def pytest_addoption(parser):
@@ -24,10 +25,6 @@ def pytest_addoption(parser):
expression information.""")
def pytest_namespace():
return {'register_assert_rewrite': register_assert_rewrite}
def register_assert_rewrite(*names):
"""Register one or more module names to be rewritten on import.
@@ -100,12 +97,6 @@ def pytest_collection(session):
assertstate.hook.set_session(session)
def _running_on_ci():
"""Check if we're currently running on a CI system."""
env_vars = ['CI', 'BUILD_NUMBER']
return any(var in os.environ for var in env_vars)
def pytest_runtest_setup(item):
"""Setup the pytest_assertrepr_compare hook
@@ -119,8 +110,8 @@ def callbinrepr(op, left, right):
This uses the first result from the hook and then ensures the
following:
* Overly verbose explanations are dropped unless -vv was used or
running on a CI.
* Overly verbose explanations are truncated unless configured otherwise
(eg. if running in verbose mode).
* Embedded newlines are escaped to help util.format_explanation()
later.
* If the rewrite mode is used embedded %-characters are replaced
@@ -133,14 +124,7 @@ def callbinrepr(op, left, right):
config=item.config, op=op, left=left, right=right)
for new_expl in hook_result:
if new_expl:
if (sum(len(p) for p in new_expl[1:]) > 80*8 and
item.config.option.verbose < 2 and
not _running_on_ci()):
show_max = 10
truncated_lines = len(new_expl) - show_max
new_expl[show_max:] = [py.builtin._totext(
'Detailed information truncated (%d more lines)'
', use "-vv" to show' % truncated_lines)]
new_expl = truncate.truncate_if_required(new_expl, item)
new_expl = [line.replace("\n", "\\n") for line in new_expl]
res = py.builtin._totext("\n~").join(new_expl)
if item.config.getvalue("assertmode") == "rewrite":

View File

@@ -1,5 +1,5 @@
"""Rewrite assertion AST to produce nice error messages"""
from __future__ import absolute_import, division, print_function
import ast
import _ast
import errno
@@ -11,7 +11,6 @@
import struct
import sys
import types
from fnmatch import fnmatch
import py
from _pytest.assertion import util
@@ -37,10 +36,11 @@
REWRITE_NEWLINES = sys.version_info[:2] != (2, 7) and sys.version_info < (3, 2)
ASCII_IS_DEFAULT_ENCODING = sys.version_info[0] < 3
if sys.version_info >= (3,5):
if sys.version_info >= (3, 5):
ast_Call = ast.Call
else:
ast_Call = lambda a,b,c: ast.Call(a, b, c, None, None)
def ast_Call(a, b, c):
return ast.Call(a, b, c, None, None)
class AssertionRewritingHook(object):
@@ -163,11 +163,7 @@ def _should_rewrite(self, name, fn_pypath, state):
# modules not passed explicitly on the command line are only
# rewritten if they match the naming convention for test files
for pat in self.fnpats:
# use fnmatch instead of fn_pypath.fnmatch because the
# latter might trigger an import to fnmatch.fnmatch
# internally, which would cause this method to be
# called recursively
if fnmatch(fn_pypath.basename, pat):
if fn_pypath.fnmatch(pat):
state.trace("matched test file %r" % (fn,))
return True
@@ -214,13 +210,12 @@ def load_module(self, name):
mod.__cached__ = pyc
mod.__loader__ = self
py.builtin.exec_(co, mod.__dict__)
except:
del sys.modules[name]
except: # noqa
if name in sys.modules:
del sys.modules[name]
raise
return sys.modules[name]
def is_package(self, name):
try:
fd, fn, desc = imp.find_module(name)
@@ -265,7 +260,7 @@ def _write_pyc(state, co, source_stat, pyc):
fp = open(pyc, "wb")
except IOError:
err = sys.exc_info()[1].errno
state.trace("error writing pyc file at %s: errno=%s" %(pyc, err))
state.trace("error writing pyc file at %s: errno=%s" % (pyc, err))
# we ignore any failure to write the cache file
# there are many reasons, permission-denied, __pycache__ being a
# file etc.
@@ -287,6 +282,7 @@ def _write_pyc(state, co, source_stat, pyc):
cookie_re = re.compile(r"^[ \t\f]*#.*coding[:=][ \t]*[-\w.]+")
BOM_UTF8 = '\xef\xbb\xbf'
def _rewrite_test(config, fn):
"""Try to read and rewrite *fn* and return the code object."""
state = config._assertstate
@@ -311,7 +307,7 @@ def _rewrite_test(config, fn):
end2 = source.find("\n", end1 + 1)
if (not source.startswith(BOM_UTF8) and
cookie_re.match(source[0:end1]) is None and
cookie_re.match(source[end1 + 1:end2]) is None):
cookie_re.match(source[end1 + 1:end2]) is None):
if hasattr(state, "_indecode"):
# encodings imported us again, so don't rewrite.
return None, None
@@ -336,7 +332,7 @@ def _rewrite_test(config, fn):
return None, None
rewrite_asserts(tree, fn, config)
try:
co = compile(tree, fn.strpath, "exec")
co = compile(tree, fn.strpath, "exec", dont_inherit=True)
except SyntaxError:
# It's possible that this error is from some bug in the
# assertion rewriting, but I don't know of a fast way to tell.
@@ -344,6 +340,7 @@ def _rewrite_test(config, fn):
return None, None
return stat, co
def _make_rewritten_pyc(state, source_stat, pyc, co):
"""Try to dump rewritten code to *pyc*."""
if sys.platform.startswith("win"):
@@ -357,6 +354,7 @@ def _make_rewritten_pyc(state, source_stat, pyc, co):
if _write_pyc(state, co, source_stat, proc_pyc):
os.rename(proc_pyc, pyc)
def _read_pyc(source, pyc, trace=lambda x: None):
"""Possibly read a pytest pyc containing rewritten code.
@@ -414,7 +412,8 @@ def _saferepr(obj):
return repr.replace(t("\n"), t("\\n"))
from _pytest.assertion.util import format_explanation as _format_explanation # noqa
from _pytest.assertion.util import format_explanation as _format_explanation # noqa
def _format_assertmsg(obj):
"""Format the custom assertion message given.
@@ -443,9 +442,11 @@ def _format_assertmsg(obj):
s = s.replace(t("\\n"), t("\n~"))
return s
def _should_repr_global_name(obj):
return not hasattr(obj, "__name__") and not py.builtin.callable(obj)
def _format_boolop(explanations, is_or):
explanation = "(" + (is_or and " or " or " and ").join(explanations) + ")"
if py.builtin._istext(explanation):
@@ -454,6 +455,7 @@ def _format_boolop(explanations, is_or):
t = py.builtin.bytes
return explanation.replace(t('%'), t('%%'))
def _call_reprcompare(ops, results, expls, each_obj):
for i, res, expl in zip(range(len(ops)), results, expls):
try:
@@ -487,7 +489,7 @@ def _call_reprcompare(ops, results, expls, each_obj):
ast.Mult: "*",
ast.Div: "/",
ast.FloorDiv: "//",
ast.Mod: "%%", # escaped for string formatting
ast.Mod: "%%", # escaped for string formatting
ast.Eq: "==",
ast.NotEq: "!=",
ast.Lt: "<",
@@ -593,23 +595,26 @@ def run(self, mod):
# docstrings and __future__ imports.
aliases = [ast.alias(py.builtin.builtins.__name__, "@py_builtins"),
ast.alias("_pytest.assertion.rewrite", "@pytest_ar")]
expect_docstring = True
doc = getattr(mod, "docstring", None)
expect_docstring = doc is None
if doc is not None and self.is_rewrite_disabled(doc):
return
pos = 0
lineno = 0
lineno = 1
for item in mod.body:
if (expect_docstring and isinstance(item, ast.Expr) and
isinstance(item.value, ast.Str)):
doc = item.value.s
if "PYTEST_DONT_REWRITE" in doc:
# The module has disabled assertion rewriting.
if self.is_rewrite_disabled(doc):
return
lineno += len(doc) - 1
expect_docstring = False
elif (not isinstance(item, ast.ImportFrom) or item.level > 0 or
item.module != "__future__"):
lineno = item.lineno
break
pos += 1
else:
lineno = item.lineno
imports = [ast.Import([alias], lineno=lineno, col_offset=0)
for alias in aliases]
mod.body[pos:pos] = imports
@@ -635,6 +640,9 @@ def run(self, mod):
not isinstance(field, ast.expr)):
nodes.append(field)
def is_rewrite_disabled(self, docstring):
return "PYTEST_DONT_REWRITE" in docstring
def variable(self):
"""Get a new variable."""
# Use a character invalid in python identifiers to avoid clashing.
@@ -727,7 +735,7 @@ def visit_Assert(self, assert_):
if isinstance(assert_.test, ast.Tuple) and self.config is not None:
fslocation = (self.module_path, assert_.lineno)
self.config.warn('R1', 'assertion is always true, perhaps '
'remove parentheses?', fslocation=fslocation)
'remove parentheses?', fslocation=fslocation)
self.statements = []
self.variables = []
self.variable_counter = itertools.count()
@@ -791,7 +799,7 @@ def visit_BoolOp(self, boolop):
if i:
fail_inner = []
# cond is set in a prior loop iteration below
self.on_failure.append(ast.If(cond, fail_inner, [])) # noqa
self.on_failure.append(ast.If(cond, fail_inner, [])) # noqa
self.on_failure = fail_inner
self.push_format_context()
res, expl = self.visit(v)
@@ -843,7 +851,7 @@ def visit_Call_35(self, call):
new_kwargs.append(ast.keyword(keyword.arg, res))
if keyword.arg:
arg_expls.append(keyword.arg + "=" + expl)
else: ## **args have `arg` keywords with an .arg of None
else: # **args have `arg` keywords with an .arg of None
arg_expls.append("**" + expl)
expl = "%s(%s)" % (func_expl, ', '.join(arg_expls))
@@ -897,7 +905,6 @@ def visit_Call_legacy(self, call):
else:
visit_Call = visit_Call_legacy
def visit_Attribute(self, attr):
if not isinstance(attr.ctx, ast.Load):
return self.generic_visit(attr)

View File

@@ -0,0 +1,102 @@
"""
Utilities for truncating assertion output.
Current default behaviour is to truncate assertion explanations at
~8 terminal lines, unless running in "-vv" mode or running on CI.
"""
from __future__ import absolute_import, division, print_function
import os
import py
DEFAULT_MAX_LINES = 8
DEFAULT_MAX_CHARS = 8 * 80
USAGE_MSG = "use '-vv' to show"
def truncate_if_required(explanation, item, max_length=None):
"""
Truncate this assertion explanation if the given test item is eligible.
"""
if _should_truncate_item(item):
return _truncate_explanation(explanation)
return explanation
def _should_truncate_item(item):
"""
Whether or not this test item is eligible for truncation.
"""
verbose = item.config.option.verbose
return verbose < 2 and not _running_on_ci()
def _running_on_ci():
"""Check if we're currently running on a CI system."""
env_vars = ['CI', 'BUILD_NUMBER']
return any(var in os.environ for var in env_vars)
def _truncate_explanation(input_lines, max_lines=None, max_chars=None):
"""
Truncate given list of strings that makes up the assertion explanation.
Truncates to either 8 lines, or 640 characters - whichever the input reaches
first. The remaining lines will be replaced by a usage message.
"""
if max_lines is None:
max_lines = DEFAULT_MAX_LINES
if max_chars is None:
max_chars = DEFAULT_MAX_CHARS
# Check if truncation required
input_char_count = len("".join(input_lines))
if len(input_lines) <= max_lines and input_char_count <= max_chars:
return input_lines
# Truncate first to max_lines, and then truncate to max_chars if max_chars
# is exceeded.
truncated_explanation = input_lines[:max_lines]
truncated_explanation = _truncate_by_char_count(truncated_explanation, max_chars)
# Add ellipsis to final line
truncated_explanation[-1] = truncated_explanation[-1] + "..."
# Append useful message to explanation
truncated_line_count = len(input_lines) - len(truncated_explanation)
truncated_line_count += 1 # Account for the part-truncated final line
msg = '...Full output truncated'
if truncated_line_count == 1:
msg += ' ({0} line hidden)'.format(truncated_line_count)
else:
msg += ' ({0} lines hidden)'.format(truncated_line_count)
msg += ", {0}" .format(USAGE_MSG)
truncated_explanation.extend([
py.builtin._totext(""),
py.builtin._totext(msg),
])
return truncated_explanation
def _truncate_by_char_count(input_lines, max_chars):
# Check if truncation required
if len("".join(input_lines)) <= max_chars:
return input_lines
# Find point at which input length exceeds total allowed length
iterated_char_count = 0
for iterated_index, input_line in enumerate(input_lines):
if iterated_char_count + len(input_line) > max_chars:
break
iterated_char_count += len(input_line)
# Create truncated explanation with modified final line
truncated_result = input_lines[:iterated_index]
final_line = input_lines[iterated_index]
if final_line:
final_line_truncate_point = max_chars - iterated_char_count
final_line = final_line[:final_line_truncate_point]
truncated_result.append(final_line)
return truncated_result

View File

@@ -1,4 +1,5 @@
"""Utilities for assertion debugging"""
from __future__ import absolute_import, division, print_function
import pprint
import _pytest._code
@@ -8,7 +9,7 @@
except ImportError:
Sequence = list
BuiltinAssertionError = py.builtin.builtins.AssertionError
u = py.builtin._totext
# The _reprcompare attribute on the util module is used by the new assertion
@@ -52,11 +53,11 @@ def _split_explanation(explanation):
"""
raw_lines = (explanation or u('')).split('\n')
lines = [raw_lines[0]]
for l in raw_lines[1:]:
if l and l[0] in ['{', '}', '~', '>']:
lines.append(l)
for values in raw_lines[1:]:
if values and values[0] in ['{', '}', '~', '>']:
lines.append(values)
else:
lines[-1] += '\\n' + l
lines[-1] += '\\n' + values
return lines
@@ -81,7 +82,7 @@ def _format_lines(lines):
stack.append(len(result))
stackcnt[-1] += 1
stackcnt.append(0)
result.append(u(' +') + u(' ')*(len(stack)-1) + s + line[1:])
result.append(u(' +') + u(' ') * (len(stack) - 1) + s + line[1:])
elif line.startswith('}'):
stack.pop()
stackcnt.pop()
@@ -90,7 +91,7 @@ def _format_lines(lines):
assert line[0] in ['~', '>']
stack[-1] += 1
indent = len(stack) if line.startswith('~') else len(stack) - 1
result.append(u(' ')*indent + line[1:])
result.append(u(' ') * indent + line[1:])
assert len(stack) == 1
return result
@@ -105,16 +106,22 @@ def _format_lines(lines):
def assertrepr_compare(config, op, left, right):
"""Return specialised explanations for some operators/operands"""
width = 80 - 15 - len(op) - 2 # 15 chars indentation, 1 space around op
left_repr = py.io.saferepr(left, maxsize=int(width//2))
right_repr = py.io.saferepr(right, maxsize=width-len(left_repr))
left_repr = py.io.saferepr(left, maxsize=int(width // 2))
right_repr = py.io.saferepr(right, maxsize=width - len(left_repr))
summary = u('%s %s %s') % (ecu(left_repr), op, ecu(right_repr))
issequence = lambda x: (isinstance(x, (list, tuple, Sequence)) and
not isinstance(x, basestring))
istext = lambda x: isinstance(x, basestring)
isdict = lambda x: isinstance(x, dict)
isset = lambda x: isinstance(x, (set, frozenset))
def issequence(x):
return (isinstance(x, (list, tuple, Sequence)) and not isinstance(x, basestring))
def istext(x):
return isinstance(x, basestring)
def isdict(x):
return isinstance(x, dict)
def isset(x):
return isinstance(x, (set, frozenset))
def isiterable(obj):
try:
@@ -256,8 +263,8 @@ def _compare_eq_dict(left, right, verbose=False):
explanation = []
common = set(left).intersection(set(right))
same = dict((k, left[k]) for k in common if left[k] == right[k])
if same and not verbose:
explanation += [u('Omitting %s identical items, use -v to show') %
if same and verbose < 2:
explanation += [u('Omitting %s identical items, use -vv to show') %
len(same)]
elif same:
explanation += [u('Common items:')]
@@ -284,7 +291,7 @@ def _compare_eq_dict(left, right, verbose=False):
def _notin_text(term, text, verbose=False):
index = text.find(term)
head = text[:index]
tail = text[index+len(term):]
tail = text[index + len(term):]
correct_text = head + tail
diff = _diff_text(correct_text, text, verbose)
newdiff = [u('%s is contained here:') % py.io.saferepr(term, maxsize=42)]

71
lib/spack/external/_pytest/cacheprovider.py vendored Normal file → Executable file
View File

@@ -1,20 +1,21 @@
"""
merged implementation of the cache provider
the name cache was not choosen to ensure pluggy automatically
the name cache was not chosen to ensure pluggy automatically
ignores the external pytest-cache
"""
from __future__ import absolute_import, division, print_function
import py
import pytest
import json
import os
from os.path import sep as _sep, altsep as _altsep
class Cache(object):
def __init__(self, config):
self.config = config
self._cachedir = config.rootdir.join(".cache")
self._cachedir = Cache.cache_dir_from_config(config)
self.trace = config.trace.root.get("cache")
if config.getvalue("cacheclear"):
self.trace("clearing cachedir")
@@ -22,6 +23,16 @@ def __init__(self, config):
self._cachedir.remove()
self._cachedir.mkdir()
@staticmethod
def cache_dir_from_config(config):
cache_dir = config.getini("cache_dir")
cache_dir = os.path.expanduser(cache_dir)
cache_dir = os.path.expandvars(cache_dir)
if os.path.isabs(cache_dir):
return py.path.local(cache_dir)
else:
return config.rootdir.join(cache_dir)
def makedir(self, name):
""" return a directory path object with the given name. If the
directory does not yet exist, it will be created. You can use it
@@ -89,31 +100,31 @@ def set(self, key, value):
class LFPlugin:
""" Plugin which implements the --lf (run last-failing) option """
def __init__(self, config):
self.config = config
active_keys = 'lf', 'failedfirst'
self.active = any(config.getvalue(key) for key in active_keys)
if self.active:
self.lastfailed = config.cache.get("cache/lastfailed", {})
else:
self.lastfailed = {}
self.lastfailed = config.cache.get("cache/lastfailed", {})
self._previously_failed_count = None
def pytest_report_header(self):
def pytest_report_collectionfinish(self):
if self.active:
if not self.lastfailed:
if not self._previously_failed_count:
mode = "run all (no recorded failures)"
else:
mode = "rerun last %d failures%s" % (
len(self.lastfailed),
" first" if self.config.getvalue("failedfirst") else "")
noun = 'failure' if self._previously_failed_count == 1 else 'failures'
suffix = " first" if self.config.getvalue("failedfirst") else ""
mode = "rerun previous {count} {noun}{suffix}".format(
count=self._previously_failed_count, suffix=suffix, noun=noun
)
return "run-last-failure: %s" % mode
def pytest_runtest_logreport(self, report):
if report.failed and "xfail" not in report.keywords:
if (report.when == 'call' and report.passed) or report.skipped:
self.lastfailed.pop(report.nodeid, None)
elif report.failed:
self.lastfailed[report.nodeid] = True
elif not report.failed:
if report.when == "call":
self.lastfailed.pop(report.nodeid, None)
def pytest_collectreport(self, report):
passed = report.outcome in ('passed', 'skipped')
@@ -135,22 +146,24 @@ def pytest_collection_modifyitems(self, session, config, items):
previously_failed.append(item)
else:
previously_passed.append(item)
if not previously_failed and previously_passed:
self._previously_failed_count = len(previously_failed)
if not previously_failed:
# running a subset of all tests with recorded failures outside
# of the set of tests currently executing
pass
elif self.config.getvalue("failedfirst"):
items[:] = previously_failed + previously_passed
else:
return
if self.config.getvalue("lf"):
items[:] = previously_failed
config.hook.pytest_deselected(items=previously_passed)
else:
items[:] = previously_failed + previously_passed
def pytest_sessionfinish(self, session):
config = self.config
if config.getvalue("cacheshow") or hasattr(config, "slaveinput"):
return
prev_failed = config.cache.get("cache/lastfailed", None) is not None
if (session.testscollected and prev_failed) or self.lastfailed:
saved_lastfailed = config.cache.get("cache/lastfailed", {})
if saved_lastfailed != self.lastfailed:
config.cache.set("cache/lastfailed", self.lastfailed)
@@ -171,6 +184,9 @@ def pytest_addoption(parser):
group.addoption(
'--cache-clear', action='store_true', dest="cacheclear",
help="remove all cache contents at start of test run.")
parser.addini(
"cache_dir", default='.cache',
help="cache directory path.")
def pytest_cmdline_main(config):
@@ -179,7 +195,6 @@ def pytest_cmdline_main(config):
return wrap_session(config, cacheshow)
@pytest.hookimpl(tryfirst=True)
def pytest_configure(config):
config.cache = Cache(config)
@@ -219,12 +234,12 @@ def cacheshow(config, session):
basedir = config.cache._cachedir
vdir = basedir.join("v")
tw.sep("-", "cache values")
for valpath in vdir.visit(lambda x: x.isfile()):
for valpath in sorted(vdir.visit(lambda x: x.isfile())):
key = valpath.relto(vdir).replace(valpath.sep, "/")
val = config.cache.get(key, dummy)
if val is dummy:
tw.line("%s contains unreadable content, "
"will be ignored" % key)
"will be ignored" % key)
else:
tw.line("%s contains:" % key)
stream = py.io.TextIO()
@@ -235,8 +250,8 @@ def cacheshow(config, session):
ddir = basedir.join("d")
if ddir.isdir() and ddir.listdir():
tw.sep("-", "cache directories")
for p in basedir.join("d").visit():
#if p.check(dir=1):
for p in sorted(basedir.join("d").visit()):
# if p.check(dir=1):
# print("%s/" % p.relto(basedir))
if p.isfile():
key = p.relto(basedir)

View File

@@ -2,17 +2,19 @@
per-test stdout/stderr capturing mechanism.
"""
from __future__ import with_statement
from __future__ import absolute_import, division, print_function
import contextlib
import sys
import os
import io
from io import UnsupportedOperation
from tempfile import TemporaryFile
import py
import pytest
from _pytest.compat import CaptureIO
from py.io import TextIO
unicode = py.builtin.text
patchsysdict = {0: 'stdin', 1: 'stdout', 2: 'stderr'}
@@ -32,8 +34,11 @@ def pytest_addoption(parser):
@pytest.hookimpl(hookwrapper=True)
def pytest_load_initial_conftests(early_config, parser, args):
_readline_workaround()
ns = early_config.known_args_namespace
if ns.capture == "fd":
_py36_windowsconsoleio_workaround(sys.stdout)
_colorama_workaround()
_readline_workaround()
pluginmanager = early_config.pluginmanager
capman = CaptureManager(ns.capture)
pluginmanager.register(capman, "capturemanager")
@@ -130,7 +135,7 @@ def pytest_runtest_call(self, item):
self.resumecapture()
self.activate_funcargs(item)
yield
#self.deactivate_funcargs() called from suspendcapture()
# self.deactivate_funcargs() called from suspendcapture()
self.suspendcapture_item(item, "call")
@pytest.hookimpl(hookwrapper=True)
@@ -167,6 +172,7 @@ def capsys(request):
request.node._capfuncarg = c = CaptureFixture(SysCapture, request)
return c
@pytest.fixture
def capfd(request):
"""Enable capturing of writes to file descriptors 1 and 2 and make
@@ -234,6 +240,7 @@ def safe_text_dupfile(f, mode, default_encoding="UTF8"):
class EncodedFile(object):
errors = "strict" # possibly needed by py3 code (issue555)
def __init__(self, buffer, encoding):
self.buffer = buffer
self.encoding = encoding
@@ -247,6 +254,11 @@ def writelines(self, linelist):
data = ''.join(linelist)
self.write(data)
@property
def name(self):
"""Ensure that file.name is a string."""
return repr(self.buffer)
def __getattr__(self, name):
return getattr(object.__getattribute__(self, "buffer"), name)
@@ -314,9 +326,11 @@ def readouterr(self):
return (self.out.snap() if self.out is not None else "",
self.err.snap() if self.err is not None else "")
class NoCapture:
__init__ = start = done = suspend = resume = lambda *args: None
class FDCapture:
""" Capture IO to/from a given os-level filedescriptor. """
@@ -389,7 +403,7 @@ def resume(self):
def writeorg(self, data):
""" write to original file descriptor. """
if py.builtin._istext(data):
data = data.encode("utf8") # XXX use encoding of original stream
data = data.encode("utf8") # XXX use encoding of original stream
os.write(self.targetfd_save, data)
@@ -402,7 +416,7 @@ def __init__(self, fd, tmpfile=None):
if name == "stdin":
tmpfile = DontReadFromInput()
else:
tmpfile = TextIO()
tmpfile = CaptureIO()
self.tmpfile = tmpfile
def start(self):
@@ -448,7 +462,8 @@ def read(self, *args):
__iter__ = read
def fileno(self):
raise ValueError("redirected Stdin is pseudofile, has no fileno()")
raise UnsupportedOperation("redirected stdin is pseudofile, "
"has no fileno()")
def isatty(self):
return False
@@ -458,12 +473,30 @@ def close(self):
@property
def buffer(self):
if sys.version_info >= (3,0):
if sys.version_info >= (3, 0):
return self
else:
raise AttributeError('redirected stdin has no attribute buffer')
def _colorama_workaround():
"""
Ensure colorama is imported so that it attaches to the correct stdio
handles on Windows.
colorama uses the terminal on import time. So if something does the
first import of colorama while I/O capture is active, colorama will
fail in various ways.
"""
if not sys.platform.startswith('win32'):
return
try:
import colorama # noqa
except ImportError:
pass
def _readline_workaround():
"""
Ensure readline is imported so that it attaches to the correct stdio
@@ -489,3 +522,56 @@ def _readline_workaround():
import readline # noqa
except ImportError:
pass
def _py36_windowsconsoleio_workaround(stream):
"""
Python 3.6 implemented unicode console handling for Windows. This works
by reading/writing to the raw console handle using
``{Read,Write}ConsoleW``.
The problem is that we are going to ``dup2`` over the stdio file
descriptors when doing ``FDCapture`` and this will ``CloseHandle`` the
handles used by Python to write to the console. Though there is still some
weirdness and the console handle seems to only be closed randomly and not
on the first call to ``CloseHandle``, or maybe it gets reopened with the
same handle value when we suspend capturing.
The workaround in this case will reopen stdio with a different fd which
also means a different handle by replicating the logic in
"Py_lifecycle.c:initstdio/create_stdio".
:param stream: in practice ``sys.stdout`` or ``sys.stderr``, but given
here as parameter for unittesting purposes.
See https://github.com/pytest-dev/py/issues/103
"""
if not sys.platform.startswith('win32') or sys.version_info[:2] < (3, 6):
return
# bail out if ``stream`` doesn't seem like a proper ``io`` stream (#2666)
if not hasattr(stream, 'buffer'):
return
buffered = hasattr(stream.buffer, 'raw')
raw_stdout = stream.buffer.raw if buffered else stream.buffer
if not isinstance(raw_stdout, io._WindowsConsoleIO):
return
def _reopen_stdio(f, mode):
if not buffered and mode[0] == 'w':
buffering = 0
else:
buffering = -1
return io.TextIOWrapper(
open(os.dup(f.fileno()), mode, buffering),
f.encoding,
f.errors,
f.newlines,
f.line_buffering)
sys.__stdin__ = sys.stdin = _reopen_stdio(sys.stdin, 'rb')
sys.__stdout__ = sys.stdout = _reopen_stdio(sys.stdout, 'wb')
sys.__stderr__ = sys.stderr = _reopen_stdio(sys.stderr, 'wb')

View File

@@ -1,6 +1,7 @@
"""
python version compatibility code
"""
from __future__ import absolute_import, division, print_function
import sys
import inspect
import types
@@ -9,8 +10,8 @@
import py
import _pytest
import _pytest
from _pytest.outcomes import TEST_OUTCOME
try:
@@ -19,6 +20,7 @@
# Only available in Python 3.4+ or as a backport
enum = None
_PY3 = sys.version_info > (3, 0)
_PY2 = not _PY3
@@ -26,6 +28,10 @@
NoneType = type(None)
NOTSET = object()
PY35 = sys.version_info[:2] >= (3, 5)
PY36 = sys.version_info[:2] >= (3, 6)
MODULE_NOT_FOUND_ERROR = 'ModuleNotFoundError' if PY36 else 'ImportError'
if hasattr(inspect, 'signature'):
def _format_args(func):
return str(inspect.signature(func))
@@ -42,11 +48,18 @@ def _format_args(func):
def is_generator(func):
try:
return _pytest._code.getrawcode(func).co_flags & 32 # generator function
except AttributeError: # builtin functions have no bytecode
# assume them to not be generators
return False
genfunc = inspect.isgeneratorfunction(func)
return genfunc and not iscoroutinefunction(func)
def iscoroutinefunction(func):
"""Return True if func is a decorated coroutine function.
Note: copied and modified from Python 3.5's builtin couroutines.py to avoid import asyncio directly,
which in turns also initializes the "logging" module as side-effect (see issue #8).
"""
return (getattr(func, '_is_coroutine', False) or
(hasattr(inspect, 'iscoroutinefunction') and inspect.iscoroutinefunction(func)))
def getlocation(function, curdir):
@@ -55,7 +68,7 @@ def getlocation(function, curdir):
lineno = py.builtin._getcode(function).co_firstlineno
if fn.relto(curdir):
fn = fn.relto(curdir)
return "%s:%d" %(fn, lineno+1)
return "%s:%d" % (fn, lineno + 1)
def num_mock_patch_args(function):
@@ -66,13 +79,21 @@ def num_mock_patch_args(function):
mock = sys.modules.get("mock", sys.modules.get("unittest.mock", None))
if mock is not None:
return len([p for p in patchings
if not p.attribute_name and p.new is mock.DEFAULT])
if not p.attribute_name and p.new is mock.DEFAULT])
return len(patchings)
def getfuncargnames(function, startindex=None):
def getfuncargnames(function, startindex=None, cls=None):
"""
@RonnyPfannschmidt: This function should be refactored when we revisit fixtures. The
fixture mechanism should ask the node for the fixture names, and not try to obtain
directly from the function object well after collection has occurred.
"""
if startindex is None and cls is not None:
is_staticmethod = isinstance(cls.__dict__.get(function.__name__, None), staticmethod)
startindex = 0 if is_staticmethod else 1
# XXX merge with main.py's varnames
#assert not isclass(function)
# assert not isclass(function)
realfunction = function
while hasattr(realfunction, "__wrapped__"):
realfunction = realfunction.__wrapped__
@@ -98,8 +119,7 @@ def getfuncargnames(function, startindex=None):
return tuple(argnames[startindex:])
if sys.version_info[:2] == (2, 6):
if sys.version_info[:2] == (2, 6):
def isclass(object):
""" Return true if the object is a class. Overrides inspect.isclass for
python 2.6 because it will return True for objects which always return
@@ -111,10 +131,12 @@ def isclass(object):
if _PY3:
import codecs
imap = map
izip = zip
STRING_TYPES = bytes, str
UNICODE_TYPES = str,
def _escape_strings(val):
def _ascii_escaped(val):
"""If val is pure ascii, returns it as a str(). Otherwise, escapes
bytes objects into a sequence of escaped bytes:
@@ -144,8 +166,11 @@ def _escape_strings(val):
return val.encode('unicode_escape').decode('ascii')
else:
STRING_TYPES = bytes, str, unicode
UNICODE_TYPES = unicode,
def _escape_strings(val):
from itertools import imap, izip # NOQA
def _ascii_escaped(val):
"""In py2 bytes and str are the same type, so return if it's a bytes
object, return it unchanged if it is a full ascii string,
otherwise escape it into its binary form.
@@ -167,8 +192,18 @@ def get_real_func(obj):
""" gets the real function object of the (possibly) wrapped object by
functools.wraps or functools.partial.
"""
while hasattr(obj, "__wrapped__"):
obj = obj.__wrapped__
start_obj = obj
for i in range(100):
new_obj = getattr(obj, '__wrapped__', None)
if new_obj is None:
break
obj = new_obj
else:
raise ValueError(
("could not find real function of {start}"
"\nstopped at {current}").format(
start=py.io.saferepr(start_obj),
current=py.io.saferepr(obj)))
if isinstance(obj, functools.partial):
obj = obj.func
return obj
@@ -195,14 +230,16 @@ def getimfunc(func):
def safe_getattr(object, name, default):
""" Like getattr but return default upon any Exception.
""" Like getattr but return default upon any Exception or any OutcomeException.
Attribute access can potentially fail for 'evil' Python objects.
See issue214
See issue #214.
It catches OutcomeException because of #2490 (issue #580), new outcomes are derived from BaseException
instead of Exception (for more details check #2707)
"""
try:
return getattr(object, name, default)
except Exception:
except TEST_OUTCOME:
return default
@@ -226,5 +263,64 @@ def safe_str(v):
try:
return str(v)
except UnicodeError:
if not isinstance(v, unicode):
v = unicode(v)
errors = 'replace'
return v.encode('ascii', errors)
return v.encode('utf-8', errors)
COLLECT_FAKEMODULE_ATTRIBUTES = (
'Collector',
'Module',
'Generator',
'Function',
'Instance',
'Session',
'Item',
'Class',
'File',
'_fillfuncargs',
)
def _setup_collect_fakemodule():
from types import ModuleType
import pytest
pytest.collect = ModuleType('pytest.collect')
pytest.collect.__all__ = [] # used for setns
for attr in COLLECT_FAKEMODULE_ATTRIBUTES:
setattr(pytest.collect, attr, getattr(pytest, attr))
if _PY2:
# Without this the test_dupfile_on_textio will fail, otherwise CaptureIO could directly inherit from StringIO.
from py.io import TextIO
class CaptureIO(TextIO):
@property
def encoding(self):
return getattr(self, '_encoding', 'UTF-8')
else:
import io
class CaptureIO(io.TextIOWrapper):
def __init__(self):
super(CaptureIO, self).__init__(
io.BytesIO(),
encoding='UTF-8', newline='', write_through=True,
)
def getvalue(self):
return self.buffer.getvalue().decode('UTF-8')
class FuncargnamesCompatAttr(object):
""" helper class so that Metafunc, Function and FixtureRequest
don't need to each define the "funcargnames" compatibility attribute.
"""
@property
def funcargnames(self):
""" alias attribute for ``fixturenames`` for pre-2.3 compatibility"""
return self.fixturenames

View File

@@ -1,4 +1,5 @@
""" command line options, ini-file and conftest.py processing. """
from __future__ import absolute_import, division, print_function
import argparse
import shlex
import traceback
@@ -7,7 +8,8 @@
import py
# DON't import pytest here because it causes import cycle troubles
import sys, os
import sys
import os
import _pytest._code
import _pytest.hookspec # the extension point definitions
import _pytest.assertion
@@ -53,15 +55,15 @@ def main(args=None, plugins=None):
return 4
else:
try:
config.pluginmanager.check_pending()
return config.hook.pytest_cmdline_main(config=config)
finally:
config._ensure_unconfigure()
except UsageError as e:
for msg in e.args:
sys.stderr.write("ERROR: %s\n" %(msg,))
sys.stderr.write("ERROR: %s\n" % (msg,))
return 4
class cmdline: # compatibility namespace
main = staticmethod(main)
@@ -70,6 +72,12 @@ class UsageError(Exception):
""" error in pytest usage or invocation"""
class PrintHelp(Exception):
"""Raised when pytest should print it's help to skip the rest of the
argument parsing and validation."""
pass
def filename_arg(path, optname):
""" Argparse type validator for filename arguments.
@@ -95,10 +103,11 @@ def directory_arg(path, optname):
_preinit = []
default_plugins = (
"mark main terminal runner python fixtures debugging unittest capture skipping "
"tmpdir monkeypatch recwarn pastebin helpconfig nose assertion "
"junitxml resultlog doctest cacheprovider freeze_support "
"setuponly setupplan").split()
"mark main terminal runner python fixtures debugging unittest capture skipping "
"tmpdir monkeypatch recwarn pastebin helpconfig nose assertion "
"junitxml resultlog doctest cacheprovider freeze_support "
"setuponly setupplan warnings").split()
builtin_plugins = set(default_plugins)
builtin_plugins.add("pytester")
@@ -108,6 +117,7 @@ def _preloadplugins():
assert not _preinit
_preinit.append(get_config())
def get_config():
if _preinit:
return _preinit.pop(0)
@@ -118,6 +128,7 @@ def get_config():
pluginmanager.import_plugin(spec)
return config
def get_plugin_manager():
"""
Obtain a new instance of the
@@ -129,6 +140,7 @@ def get_plugin_manager():
"""
return get_config().pluginmanager
def _prepareconfig(args=None, plugins=None):
warning = None
if args is None:
@@ -153,7 +165,7 @@ def _prepareconfig(args=None, plugins=None):
if warning:
config.warn('C1', warning)
return pluginmanager.hook.pytest_cmdline_parse(
pluginmanager=pluginmanager, args=args)
pluginmanager=pluginmanager, args=args)
except BaseException:
config._ensure_unconfigure()
raise
@@ -161,13 +173,14 @@ def _prepareconfig(args=None, plugins=None):
class PytestPluginManager(PluginManager):
"""
Overwrites :py:class:`pluggy.PluginManager` to add pytest-specific
Overwrites :py:class:`pluggy.PluginManager <_pytest.vendored_packages.pluggy.PluginManager>` to add pytest-specific
functionality:
* loading plugins from the command line, ``PYTEST_PLUGIN`` env variable and
``pytest_plugins`` global variables found in plugins being loaded;
* ``conftest.py`` loading during start-up;
"""
def __init__(self):
super(PytestPluginManager, self).__init__("pytest", implprefix="pytest_")
self._conftest_plugins = set()
@@ -198,7 +211,8 @@ def addhooks(self, module_or_class):
"""
.. deprecated:: 2.8
Use :py:meth:`pluggy.PluginManager.add_hookspecs` instead.
Use :py:meth:`pluggy.PluginManager.add_hookspecs <_pytest.vendored_packages.pluggy.PluginManager.add_hookspecs>`
instead.
"""
warning = dict(code="I2",
fslocation=_pytest._code.getfslineno(sys._getframe(1)),
@@ -227,7 +241,7 @@ def parse_hookimpl_opts(self, plugin, name):
def parse_hookspec_opts(self, module_or_class, name):
opts = super(PytestPluginManager, self).parse_hookspec_opts(
module_or_class, name)
module_or_class, name)
if opts is None:
method = getattr(module_or_class, name)
if name.startswith("pytest_"):
@@ -250,7 +264,10 @@ def register(self, plugin, name=None):
ret = super(PytestPluginManager, self).register(plugin, name)
if ret:
self.hook.pytest_plugin_registered.call_historic(
kwargs=dict(plugin=plugin, manager=self))
kwargs=dict(plugin=plugin, manager=self))
if isinstance(plugin, types.ModuleType):
self.consider_module(plugin)
return ret
def getplugin(self, name):
@@ -265,11 +282,11 @@ def pytest_configure(self, config):
# XXX now that the pluginmanager exposes hookimpl(tryfirst...)
# we should remove tryfirst/trylast as markers
config.addinivalue_line("markers",
"tryfirst: mark a hook implementation function such that the "
"plugin machinery will try to call it first/as early as possible.")
"tryfirst: mark a hook implementation function such that the "
"plugin machinery will try to call it first/as early as possible.")
config.addinivalue_line("markers",
"trylast: mark a hook implementation function such that the "
"plugin machinery will try to call it last/as late as possible.")
"trylast: mark a hook implementation function such that the "
"plugin machinery will try to call it last/as late as possible.")
def _warn(self, message):
kwargs = message if isinstance(message, dict) else {
@@ -293,7 +310,7 @@ def _set_initial_conftests(self, namespace):
"""
current = py.path.local()
self._confcutdir = current.join(namespace.confcutdir, abs=True) \
if namespace.confcutdir else None
if namespace.confcutdir else None
self._noconftest = namespace.noconftest
testpaths = namespace.file_or_dir
foundanchor = False
@@ -304,7 +321,7 @@ def _set_initial_conftests(self, namespace):
if i != -1:
path = path[:i]
anchor = current.join(path, abs=1)
if exists(anchor): # we found some file object
if exists(anchor): # we found some file object
self._try_load_conftest(anchor)
foundanchor = True
if not foundanchor:
@@ -371,7 +388,7 @@ def _importconftest(self, conftestpath):
if path and path.relto(dirpath) or path == dirpath:
assert mod not in mods
mods.append(mod)
self.trace("loaded conftestmodule %r" %(mod))
self.trace("loaded conftestmodule %r" % (mod))
self.consider_conftest(mod)
return mod
@@ -381,7 +398,7 @@ def _importconftest(self, conftestpath):
#
def consider_preparse(self, args):
for opt1,opt2 in zip(args, args[1:]):
for opt1, opt2 in zip(args, args[1:]):
if opt1 == "-p":
self.consider_pluginarg(opt2)
@@ -395,38 +412,33 @@ def consider_pluginarg(self, arg):
self.import_plugin(arg)
def consider_conftest(self, conftestmodule):
if self.register(conftestmodule, name=conftestmodule.__file__):
self.consider_module(conftestmodule)
self.register(conftestmodule, name=conftestmodule.__file__)
def consider_env(self):
self._import_plugin_specs(os.environ.get("PYTEST_PLUGINS"))
def consider_module(self, mod):
plugins = getattr(mod, 'pytest_plugins', [])
if isinstance(plugins, str):
plugins = [plugins]
self.rewrite_hook.mark_rewrite(*plugins)
self._import_plugin_specs(plugins)
self._import_plugin_specs(getattr(mod, 'pytest_plugins', []))
def _import_plugin_specs(self, spec):
if spec:
if isinstance(spec, str):
spec = spec.split(",")
for import_spec in spec:
self.import_plugin(import_spec)
plugins = _get_plugin_specs_as_list(spec)
for import_spec in plugins:
self.import_plugin(import_spec)
def import_plugin(self, modname):
# most often modname refers to builtin modules, e.g. "pytester",
# "terminal" or "capture". Those plugins are registered under their
# basename for historic purposes but must be imported with the
# _pytest prefix.
assert isinstance(modname, str)
assert isinstance(modname, (py.builtin.text, str)), "module name as text required, got %r" % modname
modname = str(modname)
if self.get_plugin(modname) is not None:
return
if modname in builtin_plugins:
importspec = "_pytest." + modname
else:
importspec = modname
self.rewrite_hook.mark_rewrite(importspec)
try:
__import__(importspec)
except ImportError as e:
@@ -440,11 +452,28 @@ def import_plugin(self, modname):
import pytest
if not hasattr(pytest, 'skip') or not isinstance(e, pytest.skip.Exception):
raise
self._warn("skipped plugin %r: %s" %((modname, e.msg)))
self._warn("skipped plugin %r: %s" % ((modname, e.msg)))
else:
mod = sys.modules[importspec]
self.register(mod, modname)
self.consider_module(mod)
def _get_plugin_specs_as_list(specs):
"""
Parses a list of "plugin specs" and returns a list of plugin names.
Plugin specs can be given as a list of strings separated by "," or already as a list/tuple in
which case it is returned as a list. Specs can also be `None` in which case an
empty list is returned.
"""
if specs is not None:
if isinstance(specs, str):
specs = specs.split(',') if specs else []
if not isinstance(specs, (list, tuple)):
raise UsageError("Plugin specs must be a ','-separated string or a "
"list/tuple of strings for plugin names. Given: %r" % specs)
return list(specs)
return []
class Parser:
@@ -488,7 +517,7 @@ def getgroup(self, name, description="", after=None):
for i, grp in enumerate(self._groups):
if grp.name == after:
break
self._groups.insert(i+1, group)
self._groups.insert(i + 1, group)
return group
def addoption(self, *opts, **attrs):
@@ -526,7 +555,7 @@ def _getparser(self):
a = option.attrs()
arggroup.add_argument(*n, **a)
# bash like autocompletion for dirs (appending '/')
optparser.add_argument(FILE_OR_DIR, nargs='*').completer=filescompleter
optparser.add_argument(FILE_OR_DIR, nargs='*').completer = filescompleter
return optparser
def parse_setoption(self, args, option, namespace=None):
@@ -670,7 +699,7 @@ def attrs(self):
if self._attrs.get('help'):
a = self._attrs['help']
a = a.replace('%default', '%(default)s')
#a = a.replace('%prog', '%(prog)s')
# a = a.replace('%prog', '%(prog)s')
self._attrs['help'] = a
return self._attrs
@@ -754,7 +783,7 @@ def __init__(self, parser, extra_info=None):
extra_info = {}
self._parser = parser
argparse.ArgumentParser.__init__(self, usage=parser._usage,
add_help=False, formatter_class=DropShorterLongHelpFormatter)
add_help=False, formatter_class=DropShorterLongHelpFormatter)
# extra_info is a dict of (param -> value) to display if there's
# an usage error to provide more contextual information to the user
self.extra_info = extra_info
@@ -782,9 +811,10 @@ class DropShorterLongHelpFormatter(argparse.HelpFormatter):
- shortcut if there are only two options and one of them is a short one
- cache result on action object as this is called at least 2 times
"""
def _format_action_invocation(self, action):
orgstr = argparse.HelpFormatter._format_action_invocation(self, action)
if orgstr and orgstr[0] != '-': # only optional arguments
if orgstr and orgstr[0] != '-': # only optional arguments
return orgstr
res = getattr(action, '_formatted_action_invocation', None)
if res:
@@ -795,7 +825,7 @@ def _format_action_invocation(self, action):
action._formatted_action_invocation = orgstr
return orgstr
return_list = []
option_map = getattr(action, 'map_long_option', {})
option_map = getattr(action, 'map_long_option', {})
if option_map is None:
option_map = {}
short_long = {}
@@ -813,7 +843,7 @@ def _format_action_invocation(self, action):
short_long[shortened] = xxoption
# now short_long has been filled out to the longest with dashes
# **and** we keep the right option ordering from add_argument
for option in options: #
for option in options:
if len(option) == 2 or option[2] == ' ':
return_list.append(option)
if option[2:] == short_long.get(option.replace('-', '')):
@@ -822,22 +852,26 @@ def _format_action_invocation(self, action):
return action._formatted_action_invocation
def _ensure_removed_sysmodule(modname):
try:
del sys.modules[modname]
except KeyError:
pass
class CmdOptions(object):
""" holds cmdline options as attributes."""
def __init__(self, values=()):
self.__dict__.update(values)
def __repr__(self):
return "<CmdOptions %r>" %(self.__dict__,)
return "<CmdOptions %r>" % (self.__dict__,)
def copy(self):
return CmdOptions(self.__dict__)
class Notset:
def __repr__(self):
return "<NOTSET>"
@@ -847,6 +881,18 @@ def __repr__(self):
FILE_OR_DIR = 'file_or_dir'
def _iter_rewritable_modules(package_files):
for fn in package_files:
is_simple_module = '/' not in fn and fn.endswith('.py')
is_package = fn.count('/') == 1 and fn.endswith('__init__.py')
if is_simple_module:
module_name, _ = os.path.splitext(fn)
yield module_name
elif is_package:
package_name = os.path.dirname(fn)
yield package_name
class Config(object):
""" access to configuration values, pluginmanager and plugin hooks. """
@@ -864,6 +910,7 @@ def __init__(self, pluginmanager):
self.trace = self.pluginmanager.trace.root.get("config")
self.hook = self.pluginmanager.hook
self._inicache = {}
self._override_ini = ()
self._opt2dest = {}
self._cleanup = []
self._warn = self.pluginmanager._warn
@@ -896,11 +943,11 @@ def _ensure_unconfigure(self):
fin = self._cleanup.pop()
fin()
def warn(self, code, message, fslocation=None):
def warn(self, code, message, fslocation=None, nodeid=None):
""" generate a warning for this test session. """
self.hook.pytest_logwarning.call_historic(kwargs=dict(
code=code, message=message,
fslocation=fslocation, nodeid=None))
fslocation=fslocation, nodeid=nodeid))
def get_terminal_writer(self):
return self.pluginmanager.get_plugin("terminalreporter")._tw
@@ -916,14 +963,14 @@ def notify_exception(self, excinfo, option=None):
else:
style = "native"
excrepr = excinfo.getrepr(funcargs=True,
showlocals=getattr(option, 'showlocals', False),
style=style,
)
showlocals=getattr(option, 'showlocals', False),
style=style,
)
res = self.hook.pytest_internalerror(excrepr=excrepr,
excinfo=excinfo)
if not py.builtin.any(res):
for line in str(excrepr).split("\n"):
sys.stderr.write("INTERNALERROR> %s\n" %line)
sys.stderr.write("INTERNALERROR> %s\n" % line)
sys.stderr.flush()
def cwd_relative_nodeid(self, nodeid):
@@ -964,8 +1011,9 @@ def _initini(self, args):
self.invocation_dir = py.path.local()
self._parser.addini('addopts', 'extra command line options', 'args')
self._parser.addini('minversion', 'minimally required pytest version')
self._override_ini = ns.override_ini or ()
def _consider_importhook(self, args, entrypoint_name):
def _consider_importhook(self, args):
"""Install the PEP 302 import hook if using assertion re-writing.
Needs to parse the --assert=<mode> option from the commandline
@@ -980,26 +1028,34 @@ def _consider_importhook(self, args, entrypoint_name):
except SystemError:
mode = 'plain'
else:
import pkg_resources
self.pluginmanager.rewrite_hook = hook
for entrypoint in pkg_resources.iter_entry_points('pytest11'):
# 'RECORD' available for plugins installed normally (pip install)
# 'SOURCES.txt' available for plugins installed in dev mode (pip install -e)
# for installed plugins 'SOURCES.txt' returns an empty list, and vice-versa
# so it shouldn't be an issue
for metadata in ('RECORD', 'SOURCES.txt'):
for entry in entrypoint.dist._get_metadata(metadata):
fn = entry.split(',')[0]
is_simple_module = os.sep not in fn and fn.endswith('.py')
is_package = fn.count(os.sep) == 1 and fn.endswith('__init__.py')
if is_simple_module:
module_name, ext = os.path.splitext(fn)
hook.mark_rewrite(module_name)
elif is_package:
package_name = os.path.dirname(fn)
hook.mark_rewrite(package_name)
self._mark_plugins_for_rewrite(hook)
self._warn_about_missing_assertion(mode)
def _mark_plugins_for_rewrite(self, hook):
"""
Given an importhook, mark for rewrite any top-level
modules or packages in the distribution package for
all pytest plugins.
"""
import pkg_resources
self.pluginmanager.rewrite_hook = hook
# 'RECORD' available for plugins installed normally (pip install)
# 'SOURCES.txt' available for plugins installed in dev mode (pip install -e)
# for installed plugins 'SOURCES.txt' returns an empty list, and vice-versa
# so it shouldn't be an issue
metadata_files = 'RECORD', 'SOURCES.txt'
package_files = (
entry.split(',')[0]
for entrypoint in pkg_resources.iter_entry_points('pytest11')
for metadata in metadata_files
for entry in entrypoint.dist._get_metadata(metadata)
)
for name in _iter_rewritable_modules(package_files):
hook.mark_rewrite(name)
def _warn_about_missing_assertion(self, mode):
try:
assert False
@@ -1023,19 +1079,17 @@ def _preparse(self, args, addopts=True):
args[:] = shlex.split(os.environ.get('PYTEST_ADDOPTS', '')) + args
args[:] = self.getini("addopts") + args
self._checkversion()
entrypoint_name = 'pytest11'
self._consider_importhook(args, entrypoint_name)
self._consider_importhook(args)
self.pluginmanager.consider_preparse(args)
self.pluginmanager.load_setuptools_entrypoints(entrypoint_name)
self.pluginmanager.load_setuptools_entrypoints('pytest11')
self.pluginmanager.consider_env()
self.known_args_namespace = ns = self._parser.parse_known_args(args, namespace=self.option.copy())
confcutdir = self.known_args_namespace.confcutdir
if self.known_args_namespace.confcutdir is None and self.inifile:
confcutdir = py.path.local(self.inifile).dirname
self.known_args_namespace.confcutdir = confcutdir
try:
self.hook.pytest_load_initial_conftests(early_config=self,
args=args, parser=self._parser)
args=args, parser=self._parser)
except ConftestImportFailure:
e = sys.exc_info()[1]
if ns.help or ns.version:
@@ -1053,28 +1107,32 @@ def _checkversion(self):
myver = pytest.__version__.split(".")
if myver < ver:
raise pytest.UsageError(
"%s:%d: requires pytest-%s, actual pytest-%s'" %(
self.inicfg.config.path, self.inicfg.lineof('minversion'),
minver, pytest.__version__))
"%s:%d: requires pytest-%s, actual pytest-%s'" % (
self.inicfg.config.path, self.inicfg.lineof('minversion'),
minver, pytest.__version__))
def parse(self, args, addopts=True):
# parse given cmdline arguments into this config object.
assert not hasattr(self, 'args'), (
"can only parse cmdline args at most once per Config object")
"can only parse cmdline args at most once per Config object")
self._origargs = args
self.hook.pytest_addhooks.call_historic(
kwargs=dict(pluginmanager=self.pluginmanager))
kwargs=dict(pluginmanager=self.pluginmanager))
self._preparse(args, addopts=addopts)
# XXX deprecated hook:
self.hook.pytest_cmdline_preparse(config=self, args=args)
args = self._parser.parse_setoption(args, self.option, namespace=self.option)
if not args:
cwd = os.getcwd()
if cwd == self.rootdir:
args = self.getini('testpaths')
self._parser.after_preparse = True
try:
args = self._parser.parse_setoption(args, self.option, namespace=self.option)
if not args:
args = [cwd]
self.args = args
cwd = os.getcwd()
if cwd == self.rootdir:
args = self.getini('testpaths')
if not args:
args = [cwd]
self.args = args
except PrintHelp:
pass
def addinivalue_line(self, name, line):
""" add a line to an ini-file option. The option must have been
@@ -1082,12 +1140,12 @@ def addinivalue_line(self, name, line):
the first line in its value. """
x = self.getini(name)
assert isinstance(x, list)
x.append(line) # modifies the cached list inline
x.append(line) # modifies the cached list inline
def getini(self, name):
""" return configuration value from an :ref:`ini file <inifiles>`. If the
specified name hasn't been registered through a prior
:py:func:`parser.addini <pytest.config.Parser.addini>`
:py:func:`parser.addini <_pytest.config.Parser.addini>`
call (usually from a plugin), a ValueError is raised. """
try:
return self._inicache[name]
@@ -1099,7 +1157,7 @@ def _getini(self, name):
try:
description, type, default = self._parser._inidict[name]
except KeyError:
raise ValueError("unknown configuration value: %r" %(name,))
raise ValueError("unknown configuration value: %r" % (name,))
value = self._get_override_ini_value(name)
if value is None:
try:
@@ -1112,10 +1170,10 @@ def _getini(self, name):
return []
if type == "pathlist":
dp = py.path.local(self.inicfg.config.path).dirpath()
l = []
values = []
for relpath in shlex.split(value):
l.append(dp.join(relpath, abs=True))
return l
values.append(dp.join(relpath, abs=True))
return values
elif type == "args":
return shlex.split(value)
elif type == "linelist":
@@ -1132,13 +1190,13 @@ def _getconftest_pathlist(self, name, path):
except KeyError:
return None
modpath = py.path.local(mod.__file__).dirpath()
l = []
values = []
for relroot in relroots:
if not isinstance(relroot, py.path.local):
relroot = relroot.replace("/", py.path.local.sep)
relroot = modpath.join(relroot, abs=True)
l.append(relroot)
return l
values.append(relroot)
return values
def _get_override_ini_value(self, name):
value = None
@@ -1146,15 +1204,14 @@ def _get_override_ini_value(self, name):
# and -o foo1=bar1 -o foo2=bar2 options
# always use the last item if multiple value set for same ini-name,
# e.g. -o foo=bar1 -o foo=bar2 will set foo to bar2
if self.getoption("override_ini", None):
for ini_config_list in self.option.override_ini:
for ini_config in ini_config_list:
try:
(key, user_ini_value) = ini_config.split("=", 1)
except ValueError:
raise UsageError("-o/--override-ini expects option=value style.")
if key == name:
value = user_ini_value
for ini_config_list in self._override_ini:
for ini_config in ini_config_list:
try:
(key, user_ini_value) = ini_config.split("=", 1)
except ValueError:
raise UsageError("-o/--override-ini expects option=value style.")
if key == name:
value = user_ini_value
return value
def getoption(self, name, default=notset, skip=False):
@@ -1177,7 +1234,7 @@ def getoption(self, name, default=notset, skip=False):
return default
if skip:
import pytest
pytest.skip("no %r option found" %(name,))
pytest.skip("no %r option found" % (name,))
raise ValueError("no option named %r" % (name,))
def getvalue(self, name, path=None):
@@ -1188,12 +1245,14 @@ def getvalueorskip(self, name, path=None):
""" (deprecated, use getoption(skip=True)) """
return self.getoption(name, skip=True)
def exists(path, ignore=EnvironmentError):
try:
return path.check()
except ignore:
return False
def getcfg(args, warnfunc=None):
"""
Search the list of arguments for a valid ini-file for pytest,
@@ -1228,25 +1287,20 @@ def getcfg(args, warnfunc=None):
return None, None, None
def get_common_ancestor(args):
# args are what we get after early command line parsing (usually
# strings, but can be py.path.local objects as well)
def get_common_ancestor(paths):
common_ancestor = None
for arg in args:
if str(arg)[0] == "-":
continue
p = py.path.local(arg)
if not p.exists():
for path in paths:
if not path.exists():
continue
if common_ancestor is None:
common_ancestor = p
common_ancestor = path
else:
if p.relto(common_ancestor) or p == common_ancestor:
if path.relto(common_ancestor) or path == common_ancestor:
continue
elif common_ancestor.relto(p):
common_ancestor = p
elif common_ancestor.relto(path):
common_ancestor = path
else:
shared = p.common(common_ancestor)
shared = path.common(common_ancestor)
if shared is not None:
common_ancestor = shared
if common_ancestor is None:
@@ -1257,9 +1311,29 @@ def get_common_ancestor(args):
def get_dirs_from_args(args):
return [d for d in (py.path.local(x) for x in args
if not str(x).startswith("-"))
if d.exists()]
def is_option(x):
return str(x).startswith('-')
def get_file_part_from_node_id(x):
return str(x).split('::')[0]
def get_dir_from_path(path):
if path.isdir():
return path
return py.path.local(path.dirname)
# These look like paths but may not exist
possible_paths = (
py.path.local(get_file_part_from_node_id(arg))
for arg in args
if not is_option(arg)
)
return [
get_dir_from_path(path)
for path in possible_paths
if path.exists()
]
def determine_setup(inifile, args, warnfunc=None):
@@ -1282,7 +1356,7 @@ def determine_setup(inifile, args, warnfunc=None):
rootdir, inifile, inicfg = getcfg(dirs, warnfunc=warnfunc)
if rootdir is None:
rootdir = get_common_ancestor([py.path.local(), ancestor])
is_fs_root = os.path.splitdrive(str(rootdir))[1] == os.sep
is_fs_root = os.path.splitdrive(str(rootdir))[1] == '/'
if is_fs_root:
rootdir = ancestor
return rootdir, inifile, inicfg or {}
@@ -1304,7 +1378,7 @@ def setns(obj, dic):
else:
setattr(obj, name, value)
obj.__all__.append(name)
#if obj != pytest:
# if obj != pytest:
# pytest.__all__.append(name)
setattr(pytest, name, value)

View File

@@ -1,10 +1,8 @@
""" interactive debugging with PDB, the Python Debugger. """
from __future__ import absolute_import
from __future__ import absolute_import, division, print_function
import pdb
import sys
import pytest
def pytest_addoption(parser):
group = parser.getgroup("general")
@@ -16,19 +14,17 @@ def pytest_addoption(parser):
help="start a custom interactive Python debugger on errors. "
"For example: --pdbcls=IPython.terminal.debugger:TerminalPdb")
def pytest_namespace():
return {'set_trace': pytestPDB().set_trace}
def pytest_configure(config):
if config.getvalue("usepdb") or config.getvalue("usepdb_cls"):
if config.getvalue("usepdb_cls"):
modname, classname = config.getvalue("usepdb_cls").split(":")
__import__(modname)
pdb_cls = getattr(sys.modules[modname], classname)
else:
pdb_cls = pdb.Pdb
if config.getvalue("usepdb"):
config.pluginmanager.register(PdbInvoke(), 'pdbinvoke')
if config.getvalue("usepdb_cls"):
modname, classname = config.getvalue("usepdb_cls").split(":")
__import__(modname)
pdb_cls = getattr(sys.modules[modname], classname)
else:
pdb_cls = pdb.Pdb
pytestPDB._pdb_cls = pdb_cls
old = (pdb.set_trace, pytestPDB._pluginmanager)
@@ -37,30 +33,33 @@ def fin():
pytestPDB._config = None
pytestPDB._pdb_cls = pdb.Pdb
pdb.set_trace = pytest.set_trace
pdb.set_trace = pytestPDB.set_trace
pytestPDB._pluginmanager = config.pluginmanager
pytestPDB._config = config
pytestPDB._pdb_cls = pdb_cls
config._cleanup.append(fin)
class pytestPDB:
""" Pseudo PDB that defers to the real pdb. """
_pluginmanager = None
_config = None
_pdb_cls = pdb.Pdb
def set_trace(self):
@classmethod
def set_trace(cls):
""" invoke PDB set_trace debugging, dropping any IO capturing. """
import _pytest.config
frame = sys._getframe().f_back
if self._pluginmanager is not None:
capman = self._pluginmanager.getplugin("capturemanager")
if cls._pluginmanager is not None:
capman = cls._pluginmanager.getplugin("capturemanager")
if capman:
capman.suspendcapture(in_=True)
tw = _pytest.config.create_terminal_writer(self._config)
tw = _pytest.config.create_terminal_writer(cls._config)
tw.line()
tw.sep(">", "PDB set_trace (IO-capturing turned off)")
self._pluginmanager.hook.pytest_enter_pdb(config=self._config)
self._pdb_cls().set_trace(frame)
cls._pluginmanager.hook.pytest_enter_pdb(config=cls._config)
cls._pdb_cls().set_trace(frame)
class PdbInvoke:
@@ -74,7 +73,7 @@ def pytest_exception_interact(self, node, call, report):
def pytest_internalerror(self, excrepr, excinfo):
for line in str(excrepr).split("\n"):
sys.stderr.write("INTERNALERROR> %s\n" %line)
sys.stderr.write("INTERNALERROR> %s\n" % line)
sys.stderr.flush()
tb = _postmortem_traceback(excinfo)
post_mortem(tb)

View File

@@ -5,10 +5,15 @@
Keeping it in a central location makes it easy to track what is deprecated and should
be removed when the time comes.
"""
from __future__ import absolute_import, division, print_function
class RemovedInPytest4Warning(DeprecationWarning):
"""warning class for features removed in pytest 4.0"""
MAIN_STR_ARGS = 'passing a string to pytest.main() is deprecated, ' \
'pass a list of arguments instead.'
'pass a list of arguments instead.'
YIELD_TESTS = 'yield tests are deprecated, and scheduled to be removed in pytest 4.0'
@@ -21,4 +26,17 @@
GETFUNCARGVALUE = "use of getfuncargvalue is deprecated, use getfixturevalue"
RESULT_LOG = '--result-log is deprecated and scheduled for removal in pytest 4.0'
RESULT_LOG = (
'--result-log is deprecated and scheduled for removal in pytest 4.0.\n'
'See https://docs.pytest.org/en/latest/usage.html#creating-resultlog-format-files for more information.'
)
MARK_INFO_ATTRIBUTE = RemovedInPytest4Warning(
"MarkInfo objects are deprecated as they contain the merged marks"
)
MARK_PARAMETERSET_UNPACKING = RemovedInPytest4Warning(
"Applying marks directly to parameters is deprecated,"
" please use pytest.param(..., marks=...) instead.\n"
"For more details, see: https://docs.pytest.org/en/latest/parametrize.html"
)

View File

@@ -1,5 +1,5 @@
""" discover and run doctests in modules and test files."""
from __future__ import absolute_import
from __future__ import absolute_import, division, print_function
import traceback
@@ -22,27 +22,29 @@
DOCTEST_REPORT_CHOICE_ONLY_FIRST_FAILURE,
)
def pytest_addoption(parser):
parser.addini('doctest_optionflags', 'option flags for doctests',
type="args", default=["ELLIPSIS"])
type="args", default=["ELLIPSIS"])
parser.addini("doctest_encoding", 'encoding used for doctest files', default="utf-8")
group = parser.getgroup("collect")
group.addoption("--doctest-modules",
action="store_true", default=False,
help="run doctests in all .py modules",
dest="doctestmodules")
action="store_true", default=False,
help="run doctests in all .py modules",
dest="doctestmodules")
group.addoption("--doctest-report",
type=str.lower, default="udiff",
help="choose another output format for diffs on doctest failure",
choices=DOCTEST_REPORT_CHOICES,
dest="doctestreport")
type=str.lower, default="udiff",
help="choose another output format for diffs on doctest failure",
choices=DOCTEST_REPORT_CHOICES,
dest="doctestreport")
group.addoption("--doctest-glob",
action="append", default=[], metavar="pat",
help="doctests file matching pattern, default: test*.txt",
dest="doctestglob")
action="append", default=[], metavar="pat",
help="doctests file matching pattern, default: test*.txt",
dest="doctestglob")
group.addoption("--doctest-ignore-import-errors",
action="store_true", default=False,
help="ignore doctest ImportErrors",
dest="doctest_ignore_import_errors")
action="store_true", default=False,
help="ignore doctest ImportErrors",
dest="doctest_ignore_import_errors")
def pytest_collect_file(path, parent):
@@ -118,7 +120,7 @@ def repr_failure(self, excinfo):
lines = ["%03d %s" % (i + test.lineno + 1, x)
for (i, x) in enumerate(lines)]
# trim docstring error lines to 10
lines = lines[example.lineno - 9:example.lineno + 1]
lines = lines[max(example.lineno - 9, 0):example.lineno + 1]
else:
lines = ['EXAMPLE LOCATION UNKNOWN, not showing all tests of that example']
indent = '>>>'
@@ -127,18 +129,18 @@ def repr_failure(self, excinfo):
indent = '...'
if excinfo.errisinstance(doctest.DocTestFailure):
lines += checker.output_difference(example,
doctestfailure.got, report_choice).split("\n")
doctestfailure.got, report_choice).split("\n")
else:
inner_excinfo = ExceptionInfo(excinfo.value.exc_info)
lines += ["UNEXPECTED EXCEPTION: %s" %
repr(inner_excinfo.value)]
repr(inner_excinfo.value)]
lines += traceback.format_exception(*excinfo.value.exc_info)
return ReprFailDoctest(reprlocation, lines)
else:
return super(DoctestItem, self).repr_failure(excinfo)
def reportinfo(self):
return self.fspath, None, "[doctest] %s" % self.name
return self.fspath, self.dtest.lineno, "[doctest] %s" % self.name
def _get_flag_lookup():
@@ -171,15 +173,16 @@ def collect(self):
# inspired by doctest.testfile; ideally we would use it directly,
# but it doesn't support passing a custom checker
text = self.fspath.read()
encoding = self.config.getini("doctest_encoding")
text = self.fspath.read_text(encoding)
filename = str(self.fspath)
name = self.fspath.basename
globs = {'__name__': '__main__'}
optionflags = get_optionflags(self)
runner = doctest.DebugRunner(verbose=0, optionflags=optionflags,
checker=_get_checker())
_fix_spoof_python2(runner, encoding)
parser = doctest.DocTestParser()
test = parser.get_doctest(text, globs, name, filename, 0)
@@ -215,6 +218,7 @@ def collect(self):
optionflags = get_optionflags(self)
runner = doctest.DebugRunner(verbose=0, optionflags=optionflags,
checker=_get_checker())
for test in finder.find(module, module.__name__):
if test.examples: # skip empty doctests
yield DoctestItem(test.name, self, runner, test)
@@ -323,6 +327,33 @@ def _get_report_choice(key):
DOCTEST_REPORT_CHOICE_NONE: 0,
}[key]
def _fix_spoof_python2(runner, encoding):
"""
Installs a "SpoofOut" into the given DebugRunner so it properly deals with unicode output. This
should patch only doctests for text files because they don't have a way to declare their
encoding. Doctests in docstrings from Python modules don't have the same problem given that
Python already decoded the strings.
This fixes the problem related in issue #2434.
"""
from _pytest.compat import _PY2
if not _PY2:
return
from doctest import _SpoofOut
class UnicodeSpoof(_SpoofOut):
def getvalue(self):
result = _SpoofOut.getvalue(self)
if encoding:
result = result.decode(encoding)
return result
runner._fakeout = UnicodeSpoof()
@pytest.fixture(scope='session')
def doctest_namespace():
"""

View File

@@ -1,22 +1,39 @@
import sys
from py._code.code import FormattedExcinfo
import py
import pytest
import warnings
from __future__ import absolute_import, division, print_function
import inspect
import sys
import warnings
import py
from py._code.code import FormattedExcinfo
import _pytest
from _pytest import nodes
from _pytest._code.code import TerminalRepr
from _pytest.compat import (
NOTSET, exc_clear, _format_args,
getfslineno, get_real_func,
is_generator, isclass, getimfunc,
getlocation, getfuncargnames,
safe_getattr,
FuncargnamesCompatAttr,
)
from _pytest.outcomes import fail, TEST_OUTCOME
if sys.version_info[:2] == (2, 6):
from ordereddict import OrderedDict
else:
from collections import OrderedDict # nopyqver
def pytest_sessionstart(session):
import _pytest.python
scopename2class.update({
'class': _pytest.python.Class,
'module': _pytest.python.Module,
'function': _pytest.main.Item,
})
session._fixturemanager = FixtureManager(session)
@@ -29,6 +46,7 @@ def pytest_sessionstart(session):
scope2props["instance"] = scope2props["class"] + ("instance", )
scope2props["function"] = scope2props["instance"] + ("function", "keywords")
def scopeproperty(name=None, doc=None):
def decoratescope(func):
scopename = name or func.__name__
@@ -43,19 +61,6 @@ def provide(self):
return decoratescope
def pytest_namespace():
scopename2class.update({
'class': pytest.Class,
'module': pytest.Module,
'function': pytest.Item,
})
return {
'fixture': fixture,
'yield_fixture': yield_fixture,
'collect': {'_fillfuncargs': fillfixtures}
}
def get_scope_node(node, scope):
cls = scopename2class.get(scope)
if cls is None:
@@ -73,7 +78,7 @@ def add_funcarg_pseudo_fixture_def(collector, metafunc, fixturemanager):
# XXX we can probably avoid this algorithm if we modify CallSpec2
# to directly care for creating the fixturedefs within its methods.
if not metafunc._calls[0].funcargs:
return # this function call does not have direct parametrization
return # this function call does not have direct parametrization
# collect funcargs of all callspecs into a list of values
arg2params = {}
arg2scope = {}
@@ -103,36 +108,32 @@ def add_funcarg_pseudo_fixture_def(collector, metafunc, fixturemanager):
if scope != "function":
node = get_scope_node(collector, scope)
if node is None:
assert scope == "class" and isinstance(collector, pytest.Module)
assert scope == "class" and isinstance(collector, _pytest.python.Module)
# use module-level collector for class-scope (for now)
node = collector
if node and argname in node._name2pseudofixturedef:
arg2fixturedefs[argname] = [node._name2pseudofixturedef[argname]]
else:
fixturedef = FixtureDef(fixturemanager, '', argname,
get_direct_param_fixture_func,
arg2scope[argname],
valuelist, False, False)
fixturedef = FixtureDef(fixturemanager, '', argname,
get_direct_param_fixture_func,
arg2scope[argname],
valuelist, False, False)
arg2fixturedefs[argname] = [fixturedef]
if node is not None:
node._name2pseudofixturedef[argname] = fixturedef
def getfixturemarker(obj):
""" return fixturemarker or None if it doesn't exist or raised
exceptions."""
try:
return getattr(obj, "_pytestfixturefunction", None)
except KeyboardInterrupt:
raise
except Exception:
except TEST_OUTCOME:
# some objects raise errors like request (from flask import request)
# we don't expect them to be fixture functions
return None
def get_parametrized_fixture_keys(item, scopenum):
""" return list of keys for all parametrized arguments which match
the specified scope. """
@@ -142,10 +143,10 @@ def get_parametrized_fixture_keys(item, scopenum):
except AttributeError:
pass
else:
# cs.indictes.items() is random order of argnames but
# then again different functions (items) can change order of
# arguments so it doesn't matter much probably
for argname, param_index in cs.indices.items():
# cs.indices.items() is random order of argnames. Need to
# sort this so that different calls to
# get_parametrized_fixture_keys will be deterministic.
for argname, param_index in sorted(cs.indices.items()):
if cs._arg2scopenum[argname] != scopenum:
continue
if scopenum == 0: # session
@@ -167,20 +168,21 @@ def reorder_items(items):
for scopenum in range(0, scopenum_function):
argkeys_cache[scopenum] = d = {}
for item in items:
keys = set(get_parametrized_fixture_keys(item, scopenum))
keys = OrderedDict.fromkeys(get_parametrized_fixture_keys(item, scopenum))
if keys:
d[item] = keys
return reorder_items_atscope(items, set(), argkeys_cache, 0)
def reorder_items_atscope(items, ignore, argkeys_cache, scopenum):
if scopenum >= scopenum_function or len(items) < 3:
return items
items_done = []
while 1:
items_before, items_same, items_other, newignore = \
slice_items(items, ignore, argkeys_cache[scopenum])
slice_items(items, ignore, argkeys_cache[scopenum])
items_before = reorder_items_atscope(
items_before, ignore, argkeys_cache,scopenum+1)
items_before, ignore, argkeys_cache, scopenum + 1)
if items_same is None:
# nothing to reorder in this scope
assert items_other is None
@@ -201,9 +203,9 @@ def slice_items(items, ignore, scoped_argkeys_cache):
for i, item in enumerate(it):
argkeys = scoped_argkeys_cache.get(item)
if argkeys is not None:
argkeys = argkeys.difference(ignore)
if argkeys: # found a slicing key
slicing_argkey = argkeys.pop()
newargkeys = OrderedDict.fromkeys(k for k in argkeys if k not in ignore)
if newargkeys: # found a slicing key
slicing_argkey, _ = newargkeys.popitem()
items_before = items[:i]
items_same = [item]
items_other = []
@@ -211,7 +213,7 @@ def slice_items(items, ignore, scoped_argkeys_cache):
for item in it:
argkeys = scoped_argkeys_cache.get(item)
if argkeys and slicing_argkey in argkeys and \
slicing_argkey not in ignore:
slicing_argkey not in ignore:
items_same.append(item)
else:
items_other.append(item)
@@ -221,17 +223,6 @@ def slice_items(items, ignore, scoped_argkeys_cache):
return items, None, None, None
class FuncargnamesCompatAttr:
""" helper class so that Metafunc, Function and FixtureRequest
don't need to each define the "funcargnames" compatibility attribute.
"""
@property
def funcargnames(self):
""" alias attribute for ``fixturenames`` for pre-2.3 compatibility"""
return self.fixturenames
def fillfixtures(function):
""" fill missing funcargs for a test function. """
try:
@@ -254,10 +245,10 @@ def fillfixtures(function):
request._fillfixtures()
def get_direct_param_fixture_func(request):
return request.param
class FuncFixtureInfo:
def __init__(self, argnames, names_closure, name2fixturedefs):
self.argnames = argnames
@@ -296,7 +287,6 @@ def node(self):
""" underlying collection node (depends on current request scope)"""
return self._getscopeitem(self.scope)
def _getnextfixturedef(self, argname):
fixturedefs = self._arg2fixturedefs.get(argname, None)
if fixturedefs is None:
@@ -318,7 +308,6 @@ def config(self):
""" the pytest config object associated with this request. """
return self._pyfuncitem.config
@scopeproperty()
def function(self):
""" test function object if the request has a per-function scope. """
@@ -327,7 +316,7 @@ def function(self):
@scopeproperty("class")
def cls(self):
""" class (can be None) where the test function was collected. """
clscol = self._pyfuncitem.getparent(pytest.Class)
clscol = self._pyfuncitem.getparent(_pytest.python.Class)
if clscol:
return clscol.obj
@@ -345,7 +334,7 @@ def instance(self):
@scopeproperty()
def module(self):
""" python module object where the test function was collected. """
return self._pyfuncitem.getparent(pytest.Module).obj
return self._pyfuncitem.getparent(_pytest.python.Module).obj
@scopeproperty()
def fspath(self):
@@ -414,7 +403,7 @@ def cached_setup(self, setup, teardown=None, scope="module", extrakey=None):
:arg extrakey: added to internal caching key of (funcargname, scope).
"""
if not hasattr(self.config, '_setupcache'):
self.config._setupcache = {} # XXX weakref?
self.config._setupcache = {} # XXX weakref?
cachekey = (self.fixturename, self._getscopeitem(scope), extrakey)
cache = self.config._setupcache
try:
@@ -445,7 +434,8 @@ def getfuncargvalue(self, argname):
from _pytest import deprecated
warnings.warn(
deprecated.GETFUNCARGVALUE,
DeprecationWarning)
DeprecationWarning,
stacklevel=2)
return self.getfixturevalue(argname)
def _get_active_fixturedef(self, argname):
@@ -470,13 +460,13 @@ class PseudoFixtureDef:
def _get_fixturestack(self):
current = self
l = []
values = []
while 1:
fixturedef = getattr(current, "_fixturedef", None)
if fixturedef is None:
l.reverse()
return l
l.append(fixturedef)
values.reverse()
return values
values.append(fixturedef)
current = current._parent_request
def _getfixturevalue(self, fixturedef):
@@ -508,7 +498,7 @@ def _getfixturevalue(self, fixturedef):
source_lineno,
)
)
pytest.fail(msg)
fail(msg)
else:
# indices might not be set if old-style metafunc.addcall() was used
param_index = funcitem.callspec.indices.get(argname, 0)
@@ -541,11 +531,11 @@ def _check_scope(self, argname, invoking_scope, requested_scope):
if scopemismatch(invoking_scope, requested_scope):
# try to report something helpful
lines = self._factorytraceback()
pytest.fail("ScopeMismatch: You tried to access the %r scoped "
"fixture %r with a %r scoped request object, "
"involved factories\n%s" %(
(requested_scope, argname, invoking_scope, "\n".join(lines))),
pytrace=False)
fail("ScopeMismatch: You tried to access the %r scoped "
"fixture %r with a %r scoped request object, "
"involved factories\n%s" % (
(requested_scope, argname, invoking_scope, "\n".join(lines))),
pytrace=False)
def _factorytraceback(self):
lines = []
@@ -554,7 +544,7 @@ def _factorytraceback(self):
fs, lineno = getfslineno(factory)
p = self._pyfuncitem.session.fspath.bestrelpath(fs)
args = _format_args(factory)
lines.append("%s:%d: def %s%s" %(
lines.append("%s:%d: def %s%s" % (
p, lineno, factory.__name__, args))
return lines
@@ -570,12 +560,13 @@ def _getscopeitem(self, scope):
return node
def __repr__(self):
return "<FixtureRequest for %r>" %(self.node)
return "<FixtureRequest for %r>" % (self.node)
class SubRequest(FixtureRequest):
""" a sub request for handling getting a fixture from a
test function/fixture. """
def __init__(self, request, scope, param, param_index, fixturedef):
self._parent_request = request
self.fixturename = fixturedef.argname
@@ -584,9 +575,8 @@ def __init__(self, request, scope, param, param_index, fixturedef):
self.param_index = param_index
self.scope = scope
self._fixturedef = fixturedef
self.addfinalizer = fixturedef.addfinalizer
self._pyfuncitem = request._pyfuncitem
self._fixture_values = request._fixture_values
self._fixture_values = request._fixture_values
self._fixture_defs = request._fixture_defs
self._arg2fixturedefs = request._arg2fixturedefs
self._arg2index = request._arg2index
@@ -595,6 +585,9 @@ def __init__(self, request, scope, param, param_index, fixturedef):
def __repr__(self):
return "<SubRequest %r for %r>" % (self.fixturename, self._pyfuncitem)
def addfinalizer(self, finalizer):
self._fixturedef.addfinalizer(finalizer)
class ScopeMismatchError(Exception):
""" A fixture function tries to use a different fixture function which
@@ -626,6 +619,7 @@ def scope2index(scope, descr, where=None):
class FixtureLookupError(LookupError):
""" could not return a requested Fixture (missing or invalid). """
def __init__(self, argname, request, msg=None):
self.argname = argname
self.request = request
@@ -648,9 +642,9 @@ def formatrepr(self):
lines, _ = inspect.getsourcelines(get_real_func(function))
except (IOError, IndexError, TypeError):
error_msg = "file %s, line %s: source code not available"
addline(error_msg % (fspath, lineno+1))
addline(error_msg % (fspath, lineno + 1))
else:
addline("file %s, line %s" % (fspath, lineno+1))
addline("file %s, line %s" % (fspath, lineno + 1))
for i, line in enumerate(lines):
line = line.rstrip()
addline(" " + line)
@@ -666,7 +660,7 @@ def formatrepr(self):
if faclist and name not in available:
available.append(name)
msg = "fixture %r not found" % (self.argname,)
msg += "\n available fixtures: %s" %(", ".join(sorted(available)),)
msg += "\n available fixtures: %s" % (", ".join(sorted(available)),)
msg += "\n use 'pytest --fixtures [testpath]' for help on them."
return FixtureLookupErrorRepr(fspath, lineno, tblines, msg, self.argname)
@@ -692,15 +686,16 @@ def toterminal(self, tw):
tw.line('{0} {1}'.format(FormattedExcinfo.flow_marker,
line.strip()), red=True)
tw.line()
tw.line("%s:%d" % (self.filename, self.firstlineno+1))
tw.line("%s:%d" % (self.filename, self.firstlineno + 1))
def fail_fixturefunc(fixturefunc, msg):
fs, lineno = getfslineno(fixturefunc)
location = "%s:%s" % (fs, lineno+1)
location = "%s:%s" % (fs, lineno + 1)
source = _pytest._code.Source(fixturefunc)
pytest.fail(msg + ":\n\n" + str(source.indent()) + "\n" + location,
pytrace=False)
fail(msg + ":\n\n" + str(source.indent()) + "\n" + location,
pytrace=False)
def call_fixture_func(fixturefunc, request, kwargs):
yieldctx = is_generator(fixturefunc)
@@ -715,7 +710,7 @@ def teardown():
pass
else:
fail_fixturefunc(fixturefunc,
"yield_fixture function has more than one 'yield'")
"yield_fixture function has more than one 'yield'")
request.addfinalizer(teardown)
else:
@@ -725,6 +720,7 @@ def teardown():
class FixtureDef:
""" A container for a factory definition. """
def __init__(self, fixturemanager, baseid, argname, func, scope, params,
unittest=False, ids=None):
self._fixturemanager = fixturemanager
@@ -749,10 +745,19 @@ def addfinalizer(self, finalizer):
self._finalizer.append(finalizer)
def finish(self):
exceptions = []
try:
while self._finalizer:
func = self._finalizer.pop()
func()
try:
func = self._finalizer.pop()
func()
except: # noqa
exceptions.append(sys.exc_info())
if exceptions:
e = exceptions[0]
del exceptions # ensure we don't keep all frames alive because of the traceback
py.builtin._reraise(*e)
finally:
ihook = self._fixturemanager.session.ihook
ihook.pytest_fixture_post_finalizer(fixturedef=self)
@@ -790,6 +795,7 @@ def __repr__(self):
return ("<FixtureDef name=%r scope=%r baseid=%r >" %
(self.argname, self.scope, self.baseid))
def pytest_fixture_setup(fixturedef, request):
""" Execution of fixture setup. """
kwargs = {}
@@ -815,7 +821,7 @@ def pytest_fixture_setup(fixturedef, request):
my_cache_key = request.param_index
try:
result = call_fixture_func(fixturefunc, request, kwargs)
except Exception:
except TEST_OUTCOME:
fixturedef.cached_result = (None, my_cache_key, sys.exc_info())
raise
fixturedef.cached_result = (result, my_cache_key, None)
@@ -833,17 +839,16 @@ def __init__(self, scope, params, autouse=False, ids=None, name=None):
def __call__(self, function):
if isclass(function):
raise ValueError(
"class fixtures not supported (may be in the future)")
"class fixtures not supported (may be in the future)")
function._pytestfixturefunction = self
return function
def fixture(scope="function", params=None, autouse=False, ids=None, name=None):
""" (return a) decorator to mark a fixture factory function.
This decorator can be used (with or or without parameters) to define
a fixture function. The name of the fixture function can later be
This decorator can be used (with or without parameters) to define a
fixture function. The name of the fixture function can later be
referenced to cause its invocation ahead of running tests: test
modules or classes can use the pytest.mark.usefixtures(fixturename)
marker. Test functions can directly use fixture names as input
@@ -862,25 +867,25 @@ def fixture(scope="function", params=None, autouse=False, ids=None, name=None):
reference is needed to activate the fixture.
:arg ids: list of string ids each corresponding to the params
so that they are part of the test id. If no ids are provided
they will be generated automatically from the params.
so that they are part of the test id. If no ids are provided
they will be generated automatically from the params.
:arg name: the name of the fixture. This defaults to the name of the
decorated function. If a fixture is used in the same module in
which it is defined, the function name of the fixture will be
shadowed by the function arg that requests the fixture; one way
to resolve this is to name the decorated function
``fixture_<fixturename>`` and then use
``@pytest.fixture(name='<fixturename>')``.
decorated function. If a fixture is used in the same module in
which it is defined, the function name of the fixture will be
shadowed by the function arg that requests the fixture; one way
to resolve this is to name the decorated function
``fixture_<fixturename>`` and then use
``@pytest.fixture(name='<fixturename>')``.
Fixtures can optionally provide their values to test functions using a ``yield`` statement,
instead of ``return``. In this case, the code block after the ``yield`` statement is executed
as teardown code regardless of the test outcome. A fixture function must yield exactly once.
"""
if callable(scope) and params is None and autouse == False:
if callable(scope) and params is None and autouse is False:
# direct decoration
return FixtureFunctionMarker(
"function", params, autouse, name=name)(scope)
"function", params, autouse, name=name)(scope)
if params is not None and not isinstance(params, (list, tuple)):
params = list(params)
return FixtureFunctionMarker(scope, params, autouse, ids=ids, name=name)
@@ -895,7 +900,7 @@ def yield_fixture(scope="function", params=None, autouse=False, ids=None, name=N
if callable(scope) and params is None and not autouse:
# direct decoration
return FixtureFunctionMarker(
"function", params, autouse, ids=ids, name=name)(scope)
"function", params, autouse, ids=ids, name=name)(scope)
else:
return FixtureFunctionMarker(scope, params, autouse, ids=ids, name=name)
@@ -954,14 +959,9 @@ def __init__(self, session):
self._nodeid_and_autousenames = [("", self.config.getini("usefixtures"))]
session.config.pluginmanager.register(self, "funcmanage")
def getfixtureinfo(self, node, func, cls, funcargs=True):
if funcargs and not hasattr(node, "nofuncargs"):
if cls is not None:
startindex = 1
else:
startindex = None
argnames = getfuncargnames(func, startindex)
argnames = getfuncargnames(func, cls=cls)
else:
argnames = ()
usefixtures = getattr(func, "usefixtures", None)
@@ -985,8 +985,8 @@ def pytest_plugin_registered(self, plugin):
# by their test id)
if p.basename.startswith("conftest.py"):
nodeid = p.dirpath().relto(self.config.rootdir)
if p.sep != "/":
nodeid = nodeid.replace(p.sep, "/")
if p.sep != nodes.SEP:
nodeid = nodeid.replace(p.sep, nodes.SEP)
self.parsefactories(plugin, nodeid)
def _getautousenames(self, nodeid):
@@ -996,7 +996,7 @@ def _getautousenames(self, nodeid):
if nodeid.startswith(baseid):
if baseid:
i = len(baseid)
nextchar = nodeid[i:i+1]
nextchar = nodeid[i:i + 1]
if nextchar and nextchar not in ":/":
continue
autousenames.extend(basenames)
@@ -1041,9 +1041,14 @@ def pytest_generate_tests(self, metafunc):
if faclist:
fixturedef = faclist[-1]
if fixturedef.params is not None:
func_params = getattr(getattr(metafunc.function, 'parametrize', None), 'args', [[None]])
parametrize_func = getattr(metafunc.function, 'parametrize', None)
func_params = getattr(parametrize_func, 'args', [[None]])
func_kwargs = getattr(parametrize_func, 'kwargs', {})
# skip directly parametrized arguments
argnames = func_params[0]
if "argnames" in func_kwargs:
argnames = parametrize_func.kwargs["argnames"]
else:
argnames = func_params[0]
if not isinstance(argnames, (tuple, list)):
argnames = [x.strip() for x in argnames.split(",") if x.strip()]
if argname not in func_params and argname not in argnames:
@@ -1068,7 +1073,9 @@ def parsefactories(self, node_or_obj, nodeid=NOTSET, unittest=False):
self._holderobjseen.add(holderobj)
autousenames = []
for name in dir(holderobj):
obj = getattr(holderobj, name, None)
# The attribute can be an arbitrary descriptor, so the attribute
# access below can raise. safe_getatt() ignores such exceptions.
obj = safe_getattr(holderobj, name, None)
# fixture functions have a pytest_funcarg__ prefix (pre-2.3 style)
# or are "@pytest.fixture" marked
marker = getfixturemarker(obj)
@@ -1079,7 +1086,7 @@ def parsefactories(self, node_or_obj, nodeid=NOTSET, unittest=False):
continue
marker = defaultfuncargprefixmarker
from _pytest import deprecated
self.config.warn('C1', deprecated.FUNCARG_PREFIX.format(name=name))
self.config.warn('C1', deprecated.FUNCARG_PREFIX.format(name=name), nodeid=nodeid)
name = name[len(self._argprefix):]
elif not isinstance(marker, FixtureFunctionMarker):
# magic globals with __getattr__ might have got us a wrong
@@ -1129,6 +1136,5 @@ def getfixturedefs(self, argname, nodeid):
def _matchfactories(self, fixturedefs, nodeid):
for fixturedef in fixturedefs:
if nodeid.startswith(fixturedef.baseid):
if nodes.ischildnode(fixturedef.baseid, nodeid):
yield fixturedef

View File

@@ -2,9 +2,7 @@
Provides a function to report all internal modules for using freezing tools
pytest
"""
def pytest_namespace():
return {'freeze_includes': freeze_includes}
from __future__ import absolute_import, division, print_function
def freeze_includes():

View File

@@ -1,25 +1,61 @@
""" version info, help messages, tracing configuration. """
from __future__ import absolute_import, division, print_function
import py
import pytest
import os, sys
from _pytest.config import PrintHelp
import os
import sys
from argparse import Action
class HelpAction(Action):
"""This is an argparse Action that will raise an exception in
order to skip the rest of the argument parsing when --help is passed.
This prevents argparse from quitting due to missing required arguments
when any are defined, for example by ``pytest_addoption``.
This is similar to the way that the builtin argparse --help option is
implemented by raising SystemExit.
"""
def __init__(self,
option_strings,
dest=None,
default=False,
help=None):
super(HelpAction, self).__init__(
option_strings=option_strings,
dest=dest,
const=True,
default=default,
nargs=0,
help=help)
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, self.const)
# We should only skip the rest of the parsing after preparse is done
if getattr(parser._parser, 'after_preparse', False):
raise PrintHelp
def pytest_addoption(parser):
group = parser.getgroup('debugconfig')
group.addoption('--version', action="store_true",
help="display pytest lib version and import information.")
group._addoption("-h", "--help", action="store_true", dest="help",
help="show help message and configuration info")
group._addoption('-p', action="append", dest="plugins", default = [],
metavar="name",
help="early-load given plugin (multi-allowed). "
"To avoid loading of plugins, use the `no:` prefix, e.g. "
"`no:doctest`.")
help="display pytest lib version and import information.")
group._addoption("-h", "--help", action=HelpAction, dest="help",
help="show help message and configuration info")
group._addoption('-p', action="append", dest="plugins", default=[],
metavar="name",
help="early-load given plugin (multi-allowed). "
"To avoid loading of plugins, use the `no:` prefix, e.g. "
"`no:doctest`.")
group.addoption('--traceconfig', '--trace-config',
action="store_true", default=False,
help="trace considerations of conftest.py files."),
action="store_true", default=False,
help="trace considerations of conftest.py files."),
group.addoption('--debug',
action="store_true", dest="debug", default=False,
help="store internal tracing debug information in 'pytestdebug.log'.")
action="store_true", dest="debug", default=False,
help="store internal tracing debug information in 'pytestdebug.log'.")
group._addoption(
'-o', '--override-ini', nargs='*', dest="override_ini",
action="append",
@@ -34,10 +70,10 @@ def pytest_cmdline_parse():
path = os.path.abspath("pytestdebug.log")
debugfile = open(path, 'w')
debugfile.write("versions pytest-%s, py-%s, "
"python-%s\ncwd=%s\nargs=%s\n\n" %(
pytest.__version__, py.__version__,
".".join(map(str, sys.version_info)),
os.getcwd(), config._origargs))
"python-%s\ncwd=%s\nargs=%s\n\n" % (
pytest.__version__, py.__version__,
".".join(map(str, sys.version_info)),
os.getcwd(), config._origargs))
config.trace.root.setwriter(debugfile.write)
undo_tracing = config.pluginmanager.enable_tracing()
sys.stderr.write("writing pytestdebug information to %s\n" % path)
@@ -51,11 +87,12 @@ def unset_tracing():
config.add_cleanup(unset_tracing)
def pytest_cmdline_main(config):
if config.option.version:
p = py.path.local(pytest.__file__)
sys.stderr.write("This is pytest version %s, imported from %s\n" %
(pytest.__version__, p))
(pytest.__version__, p))
plugininfo = getpluginversioninfo(config)
if plugininfo:
for line in plugininfo:
@@ -67,6 +104,7 @@ def pytest_cmdline_main(config):
config._ensure_unconfigure()
return 0
def showhelp(config):
reporter = config.pluginmanager.get_plugin('terminalreporter')
tw = reporter._tw
@@ -82,7 +120,7 @@ def showhelp(config):
if type is None:
type = "string"
spec = "%s (%s)" % (name, type)
line = " %-24s %s" %(spec, help)
line = " %-24s %s" % (spec, help)
tw.line(line[:tw.fullwidth])
tw.line()
@@ -111,6 +149,7 @@ def showhelp(config):
('pytest_plugins', 'list of plugin names to load'),
]
def getpluginversioninfo(config):
lines = []
plugininfo = config.pluginmanager.list_plugin_distinfo()
@@ -122,11 +161,12 @@ def getpluginversioninfo(config):
lines.append(" " + content)
return lines
def pytest_report_header(config):
lines = []
if config.option.debug or config.option.traceconfig:
lines.append("using: pytest-%s pylib-%s" %
(pytest.__version__,py.__version__))
(pytest.__version__, py.__version__))
verinfo = getpluginversioninfo(config)
if verinfo:
@@ -140,5 +180,5 @@ def pytest_report_header(config):
r = plugin.__file__
else:
r = repr(plugin)
lines.append(" %-20s: %s" %(name, r))
lines.append(" %-20s: %s" % (name, r))
return lines

Some files were not shown because too many files have changed in this diff Show More