Commit graph

7277 commits

Author SHA1 Message Date
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