Compare commits

..

2820 Commits

Author SHA1 Message Date
Todd Gamblin
0311b63e0b update CHANGELOG.md for 0.13.4 2020-02-07 16:52:07 -06:00
Todd Gamblin
a8d5c6ccf2 version bump: 0.13.4 2020-02-07 16:51:44 -06:00
Massimiliano Culpo
010f9451c9 bugfix: make _source_single_file work in venvs (#14569)
Using `sys.executable` to run Python in a sub-shell doesn't always work in a virtual environment as the `sys.executable` Python is not necessarily compatible with any loaded spack/other virtual environment.

- revert use of sys.executable to print out subshell environment (#14496)
- try instead to use an available python, then if there *is not* one, use `sys.executable`
- this addresses RHEL8 (where there is no `python` and `PYTHONHOME` issue in a simpler way
2020-02-07 16:36:23 -06:00
Adam J. Stewart
f9f28e8fba Fix use of sys.executable for module/env commands (#14496)
* Fix use of sys.executable for module/env commands

* Fix unit tests

* More consistent quotation, less duplication

* Fix import syntax
2020-02-07 16:36:18 -06:00
Sajid Ali
4da8f7fcef RHEL8 bugfix for module_cmd (#14349) 2020-02-07 16:35:57 -06:00
Adam J. Stewart
69e5683ba4 Fix outdated bash tab completion (#14392) 2020-02-07 16:23:51 -06:00
Jeffrey Salmond
5397d500c8 Remove extensions from view in the correct order (#12961)
When removing packages from a view, extensions were being deactivated
in an arbitrary order. Extensions must be deactivated in preorder
traversal (dependents before dependencies), so when this order was
violated the view update would fail.

This commit ensures that views deactivate extensions based on a
preorder traversal and adds a test for it.
2020-02-07 16:12:20 -06:00
Todd Gamblin
b442b21751 bugfix: hashes should use ordered dictionaries (#14390)
Despite trying very hard to keep dicts out of our hash algorithm, we seem
to still accidentally add them in ways that the tests can't catch. This
can cause errors when hashes are not computed deterministically.

This fixes an error we saw with Python 3.5, where dictionary iteration
order is random.  In this instance, we saw a bug when reading Spack
environment lockfiles -- The load would fail like this:

```
...
File "/sw/spack/lib/spack/spack/environment.py", line 1249, in concretized_specs
  yield (s, self.specs_by_hash[h])
KeyError: 'qcttqplkwgxzjlycbs4rfxxladnt423p'
```

This was because the hashes differed depending on whether we wrote `path`
or `module` first when recomputing the build hash as part of reading a
Spack lockfile.  We can fix it by ensuring a determistic iteration order.

- [x] Fix two places (one that caused an issue, and one that did
  not... yet) where our to_node_dict-like methods were using regular python
  dicts.

- [x] Also add a check that statically analyzes our to_node_dict
  functions and flags any that use Python dicts.

The test found the two errors fixed here, specifically:

```
E       AssertionError: assert [] == ['Use syaml_dict instead of ...pack/spack/spec.py:1495:28']
E         Right contains more items, first extra item: 'Use syaml_dict instead of dict at /Users/gamblin2/src/spack/lib/spack/spack/spec.py:1495:28'
E         Full diff:
E         - []
E         + ['Use syaml_dict instead of dict at '
E         +  '/Users/gamblin2/src/spack/lib/spack/spack/spec.py:1495:28']
```

and

```
E       AssertionError: assert [] == ['Use syaml_dict instead of ...ack/architecture.py:359:15']
E         Right contains more items, first extra item: 'Use syaml_dict instead of dict at /Users/gamblin2/src/spack/lib/spack/spack/architecture.py:359:15'
E         Full diff:
E         - []
E         + ['Use syaml_dict instead of dict at '
E         +  '/Users/gamblin2/src/spack/lib/spack/spack/architecture.py:359:15']
```
2020-02-07 16:11:06 -06:00
Todd Gamblin
55d5b435c8 update CHANGELOG.md for 0.13.3 2019-12-23 23:48:11 -08:00
Todd Gamblin
231e237764 version bump: 0.13.3 2019-12-23 23:48:11 -08:00
Massimiliano Culpo
8616a26406 Travis exits at the first failing test, pin codecov at v4.5.4 (#14179)
Before this commit we used to run the entire unit test suite
in the presence of a failure. Since we currently rely a lot
on the state of the filesystem etc. the end report was most
of the time showing spurious failures that were a consequence
of the first failing test.

This PR makes unit tests exit at the first failing test

Also, pin codecov at v4.5.4 (last one supporting Python 2.6)
2019-12-23 23:48:03 -08:00
Todd Gamblin
e22d3250dd performance: dont' read spec.yaml files twice in view regeneration
`ViewDescriptor.regenerate()` calls `get_all_specs()`, which reads
`spec.yaml` files, which is slow.  It's fine to do this once, but
`view.remove_specs()` *also* calls it immediately afterwards.

- [x] Pass the result of `get_all_specs()` as an optional parameter to
  `view.remove_specs()` to avoid reading `spec.yaml` files twice.
2019-12-23 23:18:47 -08:00
Todd Gamblin
e3939b0c72 performance: don't recompute hashes when regenerating environments
`ViewDescriptor.regenerate()` was copying specs and stripping build
dependencies, which clears `_hash` and other cached fields on concrete
specs, which causes a bunch of YAML hashes to be recomputed.

- [x] Preserve the `_hash` and `_normal` fields on stripped specs, as
  these will be unchanged.
2019-12-23 23:18:46 -08:00
Todd Gamblin
f013687397 performance: reduce system calls required for remove_dead_links
`os.path.exists()` will report False if the target of a symlink doesn't
exist, so we can avoid a costly call to realpath here.
2019-12-23 23:18:46 -08:00
Todd Gamblin
79ddf6cf0d performance: only regenerate env views once in spack install
`spack install` previously concretized, writes the entire environment
out, regenerated views, then wrote and regenerated views
again. Regenerating views is slow, so ensure that we only do that once.

- [x] add an option to env.write() to skip view regeneration

- [x] add a note on whether regenerate_views() shouldn't just be a
  separate operation -- not clear if we want to keep it as part of write
  to ensure consistency, or take it out to avoid performance issues.
2019-12-23 23:18:45 -08:00
Todd Gamblin
be6d7db2a8 performance: add read transactions for install_all() and install()
Environments need to read the DB a lot when installing all specs.

- [x] Put a read transaction around `install_all()` and `install()`
  to avoid repeated locking
2019-12-23 23:18:45 -08:00
Todd Gamblin
d87ededddc lock transactions: avoid redundant reading in write transactions
Our `LockTransaction` class was reading overly aggressively.  In cases
like this:

```
1  with spack.store.db.read_transaction():
2    with spack.store.db.write_transaction():
3      ...
```

The `ReadTransaction` on line 1 would read in the DB, but the
WriteTransaction on line 2 would read in the DB *again*, even though we
had a read lock the whole time.  `WriteTransaction`s were only
considering nested writes to decide when to read, but they didn't know
when we already had a read lock.

- [x] `Lock.acquire_write()` return `False` in cases where we already had
       a read lock.
2019-12-23 23:18:45 -08:00
Todd Gamblin
b3a5f2e3c3 lock transactions: ensure that nested write transactions write
If a write transaction was nested inside a read transaction, it would not
write properly on release, e.g., in a sequence like this, inside our
`LockTransaction` class:

```
1  with spack.store.db.read_transaction():
2    with spack.store.db.write_transaction():
3      ...
4  with spack.store.db.read_transaction():
   ...
```

The WriteTransaction on line 2 had no way of knowing that its
`__exit__()` call was the last *write* in the nesting, and it would skip
calling its write function.

The `__exit__()` call of the `ReadTransaction` on line 1 wouldn't know
how to write, and the file would never be written.

The DB would be correct in memory, but the `ReadTransaction` on line 4
would re-read the whole DB assuming that other processes may have
modified it.  Since the DB was never written, we got stale data.

- [x] Make `Lock.release_write()` return `True` whenever we release the
      *last write* in a nest.
2019-12-23 23:18:44 -08:00
Todd Gamblin
98577e3af5 lock transactions: fix non-transactional writes
Lock transactions were actually writing *after* the lock was
released. The code was looking at the result of `release_write()` before
writing, then writing based on whether the lock was released.  This is
pretty obviously wrong.

- [x] Refactor `Lock` so that a release function can be passed to the
      `Lock` and called *only* when a lock is really released.

- [x] Refactor `LockTransaction` classes to use the release function
  instead of checking the return value of `release_read()` / `release_write()`
2019-12-23 23:18:44 -08:00
Todd Gamblin
a85b9070cb performance: avoid repeated DB locking on view generation
`ViewDescriptor.regenerate()` checks repeatedly whether packages are
installed and also does a lot of DB queries.  Put a read transaction
around the whole thing to avoid repeatedly locking and unlocking the DB.
2019-12-23 23:18:44 -08:00
Todd Gamblin
91ea90c253 performance: speed up spack find in environments
`Environment.added_specs()` has a loop around calls to
`Package.installed()`, which can result in repeated DB queries.  Optimize
this with a read transaction in `Environment`.
2019-12-23 23:17:59 -08:00
Todd Gamblin
5bdba98837 performance: spack spec should use a read transacction with -I
`spack spec -I` queries the database for installation status and should
use a read transaction around calls to `Spec.tree()`.
2019-12-23 23:17:59 -08:00
Todd Gamblin
cbf8553406 concretization: improve performance by avoiding database locks
Checks for deprecated specs were repeatedly taking out read locks on the
database, which can be very slow.

- [x] put a read transaction around the deprecation check
2019-12-23 23:17:58 -08:00
Todd Gamblin
48befd67b5 performance: memoize spack.architecture.get_platform()
`get_platform()` is pretty expensive and can be called many times in a
spack invocation.

- [x] memoize `get_platform()`
2019-12-23 23:17:58 -08:00
Sajid Ali
37eac1a226 use sys.executable instead of python in _source_single_file (#14252) 2019-12-23 23:16:30 -08:00
Peter Josef Scheibel
639156130b Patch fetching: remove unnecessary argument 2019-12-23 23:03:10 -08:00
Peter Josef Scheibel
587c650b88 Mirrors: skip attempts to fetch BundlePackages
BundlePackages use a noop fetch strategy. The mirror logic was assuming
that the fetcher had a resource to cach after performing a fetch. This adds
a special check to skip caching if the stage is associated with a
BundleFetchStrategy. Note that this should allow caching resources
associated with BundlePackages.
2019-12-23 23:03:10 -08:00
Peter Josef Scheibel
d71428622b Mirrors: avoid re-downloading patches
When updating a mirror, Spack was re-retrieving all patches (since the
fetch logic for patches is separate). This updates the patch logic to
allow the mirror logic to avoid this.
2019-12-23 23:03:10 -08:00
Peter Josef Scheibel
a69b3c85b0 Mirrors: perform checksum of fetched sources
Since cache_mirror does the fetch itself, it also needs to do the
checksum itself if it wants to verify that the source stored in the
mirror is valid. Note that this isn't strictly required because fetching
(including from mirrors) always separately verifies the checksum.
2019-12-23 23:03:09 -08:00
Peter Josef Scheibel
98b498c671 Mirrors: fix cosmetic symlink targets
The targets for the cosmetic paths in mirrrors were being calculated
incorrectly as of fb3a3ba: the symlinks used relative paths as targets,
and the relative path was computed relative to the wrong directory.
2019-12-23 23:03:09 -08:00
Peter Josef Scheibel
64209dda97 Allow repeated invocations of 'mirror create'
When creating a cosmetic symlink for a resource in a mirror, remove
it if it already exists. The symlink is removed in case the logic to
create the symlink has changed.
2019-12-23 23:03:09 -08:00
Paul Ferrell
c15e55c668 mirror bug fixes: symlinks, duplicate patch names, and exception handling (#13789)
* Some packages (e.g. mpfr at the time of this patch) can have patches
  with the same name but different contents (which apply to different
  versions of the package). This appends part of the patch hash to the
  cache file name to avoid conflicts.
* Some exceptions which occur during fetching are not a subclass of
  SpackError and therefore do not have a 'message' attribute. This
  updates the logic for mirroring a single spec (add_single_spec)
  to produce an appropriate error message in that case (where before
  it failed with an AttributeError)
* In various circumstances, a mirror can contain the universal storage
  path but not a cosmetic symlink; in this case it would not generate
  a symlink. Now "spack mirror create" will create a symlink for any
  package that doesn't have one.
2019-12-23 23:03:03 -08:00
Todd Gamblin
fe4ccdd555 update CHANGELOG.md for 0.13.2 2019-12-04 22:02:41 -08:00
Todd Gamblin
46b68263d8 version bump: 0.13.2 2019-12-04 21:20:09 -08:00
Peter Scheibel
03a5771b9d Bugfix: allow missing modules if they are blacklisted (#13540)
`spack module loads` and `spack module find` previously failed if any upstream modules were missing.  This prevented it from being used with upstreams (or, really, any spack instance) that blacklisted modules.

This PR makes module finding is now more lenient (especially for blacklisted modules).

- `spack module find` now does not report an error if the spec is blacklisted
  - instead, it prints a single warning if any modules will be omitted from the loads file
  - It comments the missing modules out of the loads file so the user can see what's missing
  - Debug messages are also printed so users can check this with `spack -d...`

- also added tests for new functionality
2019-12-04 20:55:50 -08:00
Massimiliano Culpo
a93a613668 Speedup environment activation (#13557)
* Add a transaction around repeated calls to `spec.prefix` in the activation process
* cache the computation of home in the python package to speed up setting deps
* ensure that module-scope variables are only set *once* per module
2019-12-02 14:05:35 -08:00
Todd Gamblin
c36d9f297f bugfix: mirror path works for unknown versions (#13626)
`mirror_archive_path` was failing to account for the case where the fetched version isn't known to Spack.

- [x] don't require the fetched version to be in `Package.versions`
- [x] add regression test for mirror paths when package does not have a version
2019-12-01 20:23:06 -08:00
Adam J. Stewart
b44df29316 environments: don't try to modify run-env if a spec is not installed (#13589)
Fixes #13529
Fixes #13509
2019-12-01 20:22:31 -08:00
Greg Becker
fba963f1d1 use semicolons instead of newlines in module/python command (#13904) 2019-12-01 20:21:34 -08:00
Daryl W. Grunau
9c5b583508 verify.py: os.path.exists exception handling (#13656) 2019-12-01 20:21:08 -08:00
Adam J. Stewart
eb22abc521 Document use of the maintainers field (#13748) 2019-11-17 15:30:08 -07:00
Greg Becker
aa83c483f7 Bugfix/config caching 13754 (#13759)
* remove reference to `spack.store` in method definition

Referencing `spack.store` in method definition will cache the `spack.config.config` singleton variable too early, before we have a chance to add command line and environment scopes.
2019-11-15 13:55:51 -08:00
Massimiliano Culpo
46bfcbbd3d hwloc: added 'master' version pointing at the HEAD of the master branch (#13734) 2019-11-15 12:38:30 -08:00
Greg Becker
74e04b7e20 Config option to allow gpg warning suppression (#13744)
Add a configuration option to suppress gpg warnings during binary
package verification. This only suppresses warnings: a gpg failure
will still fail the install. This allows users who have already
explicitly trusted the gpg key they are using to avoid seeing
repeated warnings that it is self-signed.
2019-11-14 16:22:19 -08:00
Peter Scheibel
28163cb34f determine target relative to the link directory rather than the full link path (which includes the file name) (#13727) 2019-11-14 12:15:47 -08:00
Greg Becker
b280034380 Allow binary relocation of strings in relative binaries (#13724)
Binaries with relative RPATHS currently do not relocate strings
hard-coded in binaries

This PR extends the best-effort relocation of strings hard-coded
in binaries to those whose RPATHs have been relativized.
2019-11-13 16:03:16 -08:00
Todd Gamblin
b4501c4586 spack find now displays variants and other spec constraints
If you do this in a spack environment:

    spack add hdf5+hl

hdf5+hl will be the root added to the `spack.yaml` file, and you should
really expect `hdf5+hl` to display as a root in the environment.

- [x] Add decoration to roots so that you can see the details about what
      is required to build.
- [x] Add a test.
2019-11-05 02:49:17 -07:00
Todd Gamblin
ecfe84def7 bugfix: uninstall should find concrete specs by DAG hash
This fixes a regression introduced in #10792.  `spack uninstall` in an
environment would not match concrete query specs properly after the index
hash of enviroments changed.

- [x] Search by DAG hash for specs to remove instead of by build hash
2019-11-05 02:47:27 -07:00
Greg Becker
fbb5cf944b environments: make shell modifications partially unconditional (#13523)
* environments: make shell modifications partially unconditional

* flake

* missing module name

* add regression test

* flake
2019-11-04 23:35:23 -07:00
Greg Becker
385e41d70b binary distribution: relocate text files properly in relative binaries (#13578)
* Make relative binaries relocate text files properly
* rb strings aren't valid in python 2
* move perl to new interface for setup_environment family methods
2019-11-04 22:03:35 -07:00
Omar Padron
edf9548310 bugfix: fetch prefers to fetch local mirrors over remote resources (#13545)
- [x] insert at beginning of list so fetch grabs local mirrors before remote resources
- [x] update the S3FetchStrategy so that it throws a SpackError if the fetch fails.  
      Before, it was throwing URLError, which was not being caught in stage.py.
- [x] move error handling out of S3FetchStrategy and into web_util.read_from_url()
- [x] pass string instead of URLError to SpackWebError
2019-11-03 17:13:02 -08:00
Greg Becker
7cdb241f80 environments: only write when necessary (#13546)
This changes Spack environments so that the YAML file associated with the environment is *only* written when necessary (i.e., if it is changed *by spack*).  The lockfile is still written out as before.

There is a larger question here of which part of Spack should be responsible for setting defaults in config files, and how we can get rid of empty lists and data structures currently cluttering files like `compilers.yaml`.  But that probably requires a rework of the default-setting validator in `spack.config`, as well as the code that uses `spack.config`.  This will at least help for `spack.yaml`.
2019-11-03 15:47:19 -08:00
Todd Gamblin
d670765b97 version bump: 0.13.1 2019-11-01 03:52:04 -07:00
Omar Padron
01a0d554f5 bugfix: spack.util.url.join() now handles absolute paths correctly (#13488)
* fix issue where spack.util.url.join() failed to correctly handle absolute path components
* add url util tests
2019-11-01 03:50:47 -07:00
Gregory Lee
2a9d6b9fbf sbang: use utf-8 for encoding when patching (#13490)
This fixes a UnicodeDecodeError in the sbang patching function.
2019-11-01 03:50:38 -07:00
Massimiliano Culpo
eb286bb80f Specs with quoted flags containing spaces are parsed correctly (#13521) 2019-11-01 03:50:26 -07:00
Massimiliano Culpo
1cc69e1ce0 targets: print a warning message before downgrading (#13513)
* Make package preferences a soft failure for targets, instead of a hard failure.
* Added unit tests for preferences expressed via packages.yaml
2019-11-01 03:50:17 -07:00
Adam J. Stewart
338a532e07 Travis CI: Test Python 3.8 (#13347)
* Travis CI: Test Python 3.8

* Fix use of deprecated cgi.escape method

* Fix version comparison

* Fix flake8 F811 change in Python 3.8

* Make flake8 happy

* Use Python 3.8 for all test categories
2019-11-01 03:50:02 -07:00
Greg Becker
30c9609c4e Documentation: Database.query methods share docstrings (#13515)
Currently, query arguments in the Spack core are documented on the
Database._query method, where the functionality is defined.

For users of the spack python command, this makes the python builtin
method help less than ideally useful, as help(spack.store.db.query)
and help(spack.store.db.query_local) do not show relevant information.

This PR updates the doc attributes for the Database.query and
Database.query_local arguments to mirror everything after the first
line of the Database._query docstring.
2019-11-01 03:49:47 -07:00
Massimiliano Culpo
944d7b3d62 cuda: fix conflict statements for x86-64 targets (#13472)
* cuda: fix conflict statements for x86-64 targets

fixes #13462

This build system mixin was not updated after the support for specific
targets has been merged.

* Updated the version range of cuda that conflicts with gcc@8:

* Updated the version range of cuda that conflicts with gcc@8: for ppc64le

* Relaxed conflicts for version > 10.1

* Updated versions in conflicts

Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja>
2019-11-01 03:49:35 -07:00
Greg Becker
b727f922a4 cpu: fix clang flags for generic x86_64 (#13491)
* cpu: differentiate flags used for pristine LLVM vs. Apple's version
2019-11-01 03:49:16 -07:00
Peter Scheibel
835df4b2e4 syaml_int type should use int.__repr__ rather than str.__repr__ (#13487) 2019-11-01 03:49:00 -07:00
eugeneswalker
94de86aeb8 elpa: prefer 2016.05.004 until sse/avx/avx2 issues are resolved (#13530)
- configuration fails on newer versions when enabling sse/avx/avx2
- prefer an older version that will build with these features
2019-10-31 23:56:14 -07:00
eugeneswalker
63afd0d2cf trilinos: temporarily constrain netcdf@:4.7.1 (#13526)
remove this when issues are resolved with `trilinos^netcdf@4.7.2`
2019-10-31 15:53:54 -07:00
Todd Gamblin
f7de8942b8 Add top-level CHANGELOG.md with release notes. 2019-10-25 23:19:36 -07:00
Todd Gamblin
8eeb64096c version bump: 0.13.0 2019-10-25 21:53:52 -07:00
Todd Gamblin
847703c13d tutorial: move tutorial to standalone site (#13450)
* docs: add a spack environment for building the docs

* docs: remove tutorial and link to spack-tutorial.readthedocs.io

The tutorial now has its own standalone website, versioned by instances
of the tutorial.  Link to that instead of versioning it directly with Spack.
2019-10-25 21:49:27 -07:00
Peter Scheibel
4af448724f mirror create --all can mirror everything (#12940)
Support mirroring all packages with `spack mirror create --all`.

In this mode there is no concretization:

* Spack pulls every version of every package into the created mirror.
* It also makes multiple attempts for each package/version combination
  (if there is a temporary connection failure).
* Continues if all attempts fail. i.e., this makes its best effort to
  fetch evrerything, even if all attempts to fetch one package fail.

This also changes mirroring logic to prefer storing sources by their hash
or by a unique name derived from the source.  For example:

* Archives with checksums are named by the sha256 sum, i.e.,
  `archive/f6/f6cf3bd233f9ea6147b21c7c02cac24e5363570ce4fd6be11dab9f499ed6a7d8.tar.gz`
  vs the previous `<package-name>-package-version>.tar.gz`
* VCS repositories are stored by a path derived from their URL,
  e.g. `git/google/leveldb.git/master.tar.gz`.

The new mirror layout allows different packages to refer to the same
resource or source without duplicating that download in the
mirror/cache. This change is not essential to mirroring everything but is
expected to save space when mirroring packages that all use the same
resource.

The new structure of the mirror is:

```
<base directory>/
  _source-cache/   <-- the _source-cache directory is new
    archive/       <-- archives/resources/patches stored by hash
      00/          <-- 2-letter sha256 prefix
        002748bdd0319d5ab82606cf92dc210fc1c05d0607a2e1d5538f60512b029056.tar.gz
      01/
        0154c25c45b5506b6d618ca8e18d0ef093dac47946ac0df464fb21e77b504118.tar.gz
        0173a74a515211997a3117a47e7b9ea43594a04b865b69da5a71c0886fa829ea.tar.gz
        ...
    git/
      OpenFAST/
        openfast.git/
          master.tar.gz     <-- repo by branch name
      PHASTA/
        phasta.git/
          11f431f2d1a53a529dab4b0f079ab8aab7ca1109.tar.gz  <-- repo by commit
      ...
    svn/      <-- each fetch strategy has its own subdirectory
      ...
  openmpi/   <-- the remaining package directories have the old format
    openmpi-1.10.1.tar.gz  <-- human-readable name is symlink to _source-cache
```

In addition to the archive names as described above, `mirror create` now
also creates symlinks with the old format to help users understand which
package each mirrored archive is associated with, and to allow mirrors to
work with old spack versions. The symlinks are relative so the mirror
directory can still itself be archived.

Other improvements:

* `spack mirror create` will not re-download resources that have already
  been placed in it.

* When creating a mirror, the resources downloaded to the mirror will not
  be cached (things are not stored twice).
2019-10-25 21:47:28 -07:00
Adam J. Stewart
5582de837e Add py-twine package (#13449) 2019-10-25 21:27:44 -05:00
Adam J. Stewart
85597be4d7 Add py-pkginfo package (#13448) 2019-10-25 21:27:29 -05:00
Adam J. Stewart
d6735aa5cd Add latest version of py-tqdm (#13446) 2019-10-25 21:27:12 -05:00
Adam J. Stewart
46ae845b6b Add latest version of py-requests-toolbelt (#13445) 2019-10-25 21:26:48 -05:00
Adam J. Stewart
3dda714477 Add latest version of py-readme-renderer (#13444) 2019-10-25 21:26:29 -05:00
Glenn Johnson
c566a610c9 New package: gpu-burn (#13108) 2019-10-25 17:14:52 -07:00
Peter Scheibel
cfbac14cba bugfix: restore upstream lock safety; update tests
Restore upstream lock safety; avoid calling methods directly on upstream DB in test.
2019-10-25 16:01:45 -07:00
Andreas Baumbach
24ccc11242 py-nbformat package: add version 4.4.0 (#13421) 2019-10-25 15:42:49 -07:00
Andreas Baumbach
32c0ef5ebd New package: py-defusedxml (#13419) 2019-10-25 15:40:59 -07:00
Sinan
ca917cfccc New package: OSQP (#13432) 2019-10-25 15:36:28 -07:00
Hans Pabst
92e2758837 LIBXSMM package: add version 1.14 (#13436) 2019-10-25 15:34:54 -07:00
Michael Kuhn
d4ce124b65 lmdb package: add version 0.9.24 (#13437) 2019-10-25 15:34:13 -07:00
Michael Kuhn
2f752d4880 sqlite package: add version 3.30.1 (#13438) 2019-10-25 15:33:47 -07:00
Justin S
1b6ba93668 py-gensim: new package at 3.8.0 (#13136)
* py-gensim: new package at 3.8.0

* py-gensim: add 3.8.1
2019-10-25 16:43:54 -05:00
Todd Gamblin
e0b94dba14 completion: add bash completion for spack spec --json (#13433) 2019-10-25 11:02:52 -07:00
Andreas Baumbach
ab55890ba8 Make error msg of test_api_for_build_and_run_environment more informative (#13435) 2019-10-25 19:24:41 +02:00
Todd Gamblin
ebeb1ed62f bugfix: reindexing is not necessary for DB v0.9.3 to v5 upgrade (#13434)
reindexing takes a significant amount of time, and there's no reason to
do it from DB version 0.9.3 to version 5. The only difference is that v5
can contain "deprecated_for" fields.

- [x] Add a `_skip_reindex` list at the start of `database.py`

- [x] Skip the reindex for upgrades in this list. The new version will
  just be written to the file the first time we actually have to write
  the DB out (e.g., after an install), and reads will still work fine.
2019-10-25 07:10:03 -07:00
Todd Gamblin
dbee91f7f1 bugfix: allow fetching no-code packages (#13429)
Previously, spack would error out if we tried to fetch something with no
code, but that would prevent fetching dependencies. In particular, this
would fail:

    spack fetch --dependencies xsdk

- [x] Instead of raising an error, just print a message that there is nothing
      to be fetched for packages like xsdk that do not have code.

- [x] Make BundleFetchStrategy a bit more quiet about doing nothing.
2019-10-24 16:02:28 -07:00
Todd Gamblin
757387dc2a commands: Add --json argument to spack spec (#13431)
We've had `spack spec --yaml` for a while, and we've had methods for JSON
for a while as well.  We just haven't has a `--json` argument for `spack spec`.

- [x] Add a `--json` argument to `spack spec`, just like `--yaml`
2019-10-24 16:01:31 -07:00
Chris Green
77af4684aa Improvements to detection of AMD architectures. (#13407)
New entry for K10 microarchitecture.

Reorder Zen* microarchitectures to avoid triggering as k10.

Remove some desktop-specific flags that were preventing Opteron Bulldozer/Piledriver/Steamroller/Excavator CPUs from being recognized as such.

Remove one or two flags which weren't produced in /proc/cpuinfo on older OS (RHEL6 and friends).
2019-10-24 15:48:54 -07:00
Greg Becker
a6ea0bbbae Views: fix python in views when python prefix is under a symlink (#12575)
* Fix python in views when python prefix is under a symlink

* Add todo for future generalization
2019-10-24 16:27:21 -05:00
Adam J. Stewart
0f22e528f3 Add latest version of NetCDF libraries (#13416) 2019-10-24 14:21:12 -06:00
Mikael Simberg
83016e96fd Extend HPX package (#13219)
* Add master branch as version to HPX package

* Remove C++98 option from HPX package

* Add option to turn off examples in HPX package

* Add MPI variant to HPX package
2019-10-24 14:19:25 -06:00
Jannek Squar
5004b20f5c New package: py-cdsapi (#13363)
* New package py-cdsapi to access Climate Data Store for downloading climate and weather reanalysis data

* Improvements
2019-10-24 13:30:21 -05:00
Geoffrey Oxberry
2dd83523e2 mfem: add version 4.0 (without cuda) (#11880)
* mfem: add version 4.0.0 (without cuda, raja, etc)

* mfem@4.0.0: add occa variant

* mfem@4.0.0: add raja variant

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py
2019-10-24 13:08:51 -05:00
Chris Green
0913328812 Correctly identify Skylake CPUs on Darwin. (#13377)
* Correctly identify Skylake CPUs on Darwin.

* Add a test for haswell on Mojave.
2019-10-24 12:44:58 -05:00
Greg Becker
f65f2450df database: update DB version and change to integer database versions (#13410)
Update on version format: change to an integer database format version for simplicity, instead of tracking the Spack version.
2019-10-24 10:43:49 -07:00
Nick Forrington
845df79ac6 Patch libtool when using the Arm compiler (#12004)
* Patch libtool when using the arm, clang, and fujitsu compilers

If libtool does not have values for linker/pic flags, patch them in
2019-10-24 09:51:00 -05:00
Eric Martin
44485c56b6 blast-legacy: fix build issues (#13370) 2019-10-23 23:16:22 -05:00
Eric Martin
944ffe44a7 subread: add version 2.0.0 (#13368) 2019-10-23 23:07:11 -05:00
Cody Balos
177f661bb3 sundials: add version 5.0.0 and new variant (#13375)
* sundials: add version 5.0.0 and new variant

plus some cleanup

* sundiaks: fix formatting

* sundials: fix dependencies
2019-10-23 23:06:20 -05:00
Eric Martin
d0d0456fa7 vt: add version 0.5772 (#13367) 2019-10-23 23:05:27 -05:00
Greg Becker
8c7a3e55dd add spack dev-build command; deprecate spack diy (#13374)
Rename the `spack diy` command to `spack dev-build` to make the use case clearer.

The `spack diy` command has some useful functionality for developers using Spack to build their dependencies and configure/build/install the code they are developing.  Developers do not notice it, partly because of the obscure name.

The `spack dev-build` command has a `-u/--until PHASE` option to stop after a given phase of the build. This can be used to configure your project, run cmake on your project, or similarly stop after any stage of the build the user wants. These options are analogous to the existing `spack configure` and `spack build` commands, but for developer builds.

To unify the syntax, we have deprecated the `spack configure` and `spack build` commands, and added a `-u/--until PHASE` option to the `spack install` command as well.

The functionality in `spack dev-build` (specifically `spack dev-build -u cmake`) may be able to supersede the `spack setup` command, but this PR does not deprecate that command as that will require slightly more thought.
2019-10-23 17:08:15 -07:00
Peter Scheibel
f2ddffb840 bugfix: web.push_to_url should not format the local path that is passed to it (#13408)
fd58c98 formats the `Stage`'s `archive_path` in `Stage.archive` (as part of `web.push_to_url`). This is not needed and if the formatted differs from the original path (for example if the archive file name contains a URL query suffix), then the copy fails.

This removes the formatting that occurs in `web.push_to_url`.

We should figure out a way to handle bad cases like this *and* to have nicer filenames for downloaded files.  One option that would work in this particular case would be to also pass `-J` / `--remote-header-name` to `curl`.  We'll need to do follow-up work to determine if we can use `-J` everywhere.

See also: https://github.com/spack/spack/pull/11117#discussion_r338301058
2019-10-23 16:50:51 -07:00
Michael Kuhn
bd7265ed52 bison: Fix parallel build (#13402) 2019-10-23 16:49:18 -05:00
Peter Scheibel
685946b1f1 syaml.dump now allows representing all syaml_ objects (originally this was only available for syaml.dump_config) (#13403) 2019-10-23 14:24:14 -07:00
Massimiliano Culpo
b29eb4212e Users can configure use of RPATH or RUNPATH (#9168)
Add a new entry in `config.yaml`:

    config:
        shared_linking: 'rpath'

If this variable is set to `rpath` (the default) Spack will set RPATH in ELF binaries. If set to `runpath` it will set RUNPATH.

Details:
* Spack cc wrapper explicitly adds `--disable-new-dtags` when linking
* cc wrapper also strips `--enable-new-dtags` from the compile line
    when disabling (and vice versa)
* We specifically do *not* add any dtags flags on macOS, which uses
    Mach-O binaries, not ELF, so there's no RUNPATH)
2019-10-23 13:22:24 -07:00
Greg Becker
cd185c3d28 commands: add spack deprecate command (#12933)
`spack deprecate` allows for the removal of insecure packages with minimal impact to their dependents. It allows one package to be symlinked into the prefix of another to provide seamless transition for rpath'd and hard-coded applications using the old version.

Example usage:

    spack deprecate /hash-of-old-openssl /hash-of-new-openssl

The spack deprecate command is designed for use only in extroardinary circumstances.  The spack deprecate command makes no promises about binary compatibility. It is up to the user to ensure the replacement is suitable for the deprecated package.
2019-10-23 13:11:35 -07:00
Michael Kuhn
420346b275 mysql: Use correct python command (#13393)
* mysql: Use correct python command

python~pythoncmd does not provide a python symlink for python3, so make
sure we pick the right command.

* mysql: Adapt to build env changes
2019-10-23 14:15:30 -05:00
Sarah Osborn
b7536eb332 hypre: Add new variants to expose existing features. (#13373)
* hypre: Add new variants to expost existing features.

* hypre: Add new variants to expose existing features.

* hypre: Shorten description line.

* hypre: Add an explicit else clause to disable some features.
2019-10-23 14:13:21 -05:00
Todd Gamblin
26ec644fc8 url summary: show right and wrong parse counts for each regex
Previously this command only showed total counts for each regular
expression.  This doesn't give you a sense of which regexes are working
well and which ones are not.  We now display the number of right, wrong,
and total URL parses per regex.

It's easier to see where we might improve the URL parsing with this
change.
2019-10-23 09:10:32 -07:00
Adam J. Stewart
33499681a4 Add latest version of py-pbr (#13380) 2019-10-23 10:14:04 -05:00
Adam J. Stewart
df3b23334a py-argparse: remove Python dependency version (#13378) 2019-10-23 10:13:39 -05:00
Adam J. Stewart
bc6c76baf9 py-traceback2: fix dependencies (#13381) 2019-10-23 10:13:11 -05:00
Michael Kuhn
b75f506a1a bison: Fix build (#13231)
It seems that 3.4.2 includes a change that is supposed to fix parallel
builds (https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00000.html).
Instead, it actually breaks it for me (with -j48) with errors such as:
```
mv: cannot stat 'examples/c/reccalc/scan.stamp.tmp': No such file or directory
Makefile:9323: recipe for target 'examples/c/reccalc/scan.stamp' failed
```
2019-10-23 10:07:22 -05:00
Adam J. Stewart
4bd0a9b286 py-linecache2: pbr is only a build dependency (#13379) 2019-10-23 09:38:05 -05:00
Adam J. Stewart
baeec6a94e py-unittest2: fix dependencies (#13382) 2019-10-23 09:37:03 -05:00
Adam J. Stewart
79c28331d2 Add py-codecov package (#13383) 2019-10-23 09:36:45 -05:00
t-karatsu
6f41987500 bpp-phyl: Clarify namespace of 'isnan' function. (#13386) 2019-10-23 09:36:01 -05:00
Michael Kuhn
64694dfaf8 magics: Use correct python path (#13394)
python~pythoncmd does not provide a python symlink for python3, so make
sure we pick the right command.
2019-10-23 09:33:42 -05:00
Michael Kuhn
466d07558d bracken: Use correct python command (#13395)
python~pythoncmd does not provide a python symlink for python3, so make
sure we pick the right command.
2019-10-23 09:33:09 -05:00
carlabguillen
44f859849b Ace package. Initial commit (#13211)
* Ace package. Initial commit

* Correcting header now with licence.

* Using sha256

* Making requested changes:removing import line, urls and checksums in one line, and making it an MakefilePackage.

* Removing extra line
2019-10-23 09:31:06 -05:00
Michael Kuhn
464ce2795a glib: Use correct python command (#13392)
python~pythoncmd does not provide a python symlink for python3, so make
sure we pick the right command.
2019-10-23 09:30:46 -05:00
Satish Balay
25d63aa44c petsc: add version 3.12.1 [and variant: batch] (#13390)
* petsc: add version 3.12.1 [and variant: batch]

* fix test_prs_update_old_api errors
2019-10-23 09:29:28 -05:00
Todd Gamblin
af65146ef6 Preserve comments for Spack YAML objects (#11602)
This updates the configuration loading/dumping logic (now called
load_config/dump_config) in spack_yaml to preserve comments (by using
ruamel.yaml's RoundTripLoader). This has two effects:

* environment spack.yaml files expect to retain comments, which
  load_config now supports. By using load_config, users can now use the
  ':' override syntax that was previously unavailable for environment
  configs (but was available for other config files).

* config files now retain user comments by default (although in cases
  where Spack updates/overwrites config, the comments can still be
  removed).

Details:

* Subclasses `RoundTripLoader`/`RoundTripDumper` to parse yaml into
  ruamel's `CommentedMap` and analogous data structures

* Applies filename info directly to ruamel objects in cases where the
  updated loader returns those

* Copies management of sections in `SingleFileScope` from #10651 to allow
  overrides to occur

* Updates the loader/dumper to handle the processing of overrides by
  specifically checking for the `:` character
  * Possibly the most controversial aspect, but without that, the parsed
    objects have to be reconstructed (i.e. as was done in
    `mark_overrides`). It is possible that `mark_overrides` could remain
    and a deep copy will not cause problems, but IMO that's generally
    worth avoiding.
  * This is also possibly controversial because Spack YAML strings can
    include `:`. My reckoning is that this only occurs for version
    specifications, so it is safe to check for `endswith(':') and not
    ('@' in string)`
  * As a consequence, this PR ends up reserving spack yaml functions
    load_config/dump_config exclusively for the purpose of storing spack
    config
2019-10-23 06:29:49 -07:00
Todd Gamblin
b3f5084b96 tests: avoid extra output in env status test (#13344)
`test_envoronment_status()` was printing extra output during tests.

- [x] disable output only for `env('status')` calls instead of disabling
  it for the whole test.
2019-10-22 23:59:28 -07:00
Greg Becker
95a48b27ec env activation: use package defined env setup methods (#13249)
This PR ensures that environment activation sets all environment variables set by the equivalent `module load` operations, except that the spec prefixes are "rebased" to the view associated with the environment.

Currently, Spack blindly adds paths relative to the environment view root to the user environment on activation. Issue #12731 points out ways in which this behavior is insufficient.

This PR changes that behavior to use the `setup_run_environment` logic for each package to augment the prefix inspections (as in Spack's modulefile generation logic) to ensure that all necessary variables are set to make use of the packages in the environment.

See #12731 for details on the previous problems in behavior.

This PR also updates the `ViewDescriptor` object in `spack.environment` to have a `__contains__` method. This allows for checks like `if spec in self.default_view`. The `__contains__` operator for `ViewDescriptor` objects checks whether the spec satisfies the filters of the View descriptor, not whether the spec is already linked into the underlying `FilesystemView` object.
2019-10-22 23:27:40 -07:00
Massimiliano Culpo
b14f18acda microarchitectures: look in /sbin and /usr/sbin for sysctl (#13365)
This PR ensures that on Darwin we always append /sbin and /usr/sbin to PATH, if they are not already present, when looking for sysctl.

* Make sure we look into /sbin and /usr/sbin for sysctl
* Refactor sysctl for better readability
* Remove marker to make test pass
2019-10-22 21:42:38 -07:00
Massimiliano Culpo
8808207ddf Fixed optimization flags support for old GCC versions (#13362)
These changes update our gcc microarchitecture descriptions based on manuals found here https://gcc.gnu.org/onlinedocs/ and assuming that new architectures are not added during patch releases.
2019-10-22 21:40:45 -07:00
Todd Gamblin
a942d2dd3d Disable macOS builds on PRs while we wait for Travis to catch up. (#13389)
Travis macOS builds are taking too long to run, so we'll only run them on
`develop` until they get faster.
2019-10-22 20:40:47 -07:00
Benjamin Fovet
7338730528 gmsh: add version 4.4.1 (#13366) 2019-10-22 18:18:19 -05:00
Frédéric Simonis
ab5135db1c Boost package: Fix iostream autodetect libraries (#12440)
Boost iostream autodetects the compression libraries libzstd and
liblzma outside of the Spack environment.

This commit disables mentioned libraries. In the future if the
Spack zstd/lzma packages were added as dependencies of the Spack
Boost package, additional work could be done to build Boost with
the Spack-built versions of these libraries.
2019-10-22 14:25:03 -07:00
Axel Huebl
0f931cfc87 ADIOS2: Document endian_reverse variant (#13226)
Update the documentation of the `endian_reverse` variant in ADIOS2.
The short description caused some confusion (for me) :-)
2019-10-22 11:06:06 -05:00
Ruben Di Battista
49291d5a40 git-lfs: Add new version (#13356)
PS: The old versions do not work: it's likely that they changed git
history on submodules
2019-10-22 10:45:45 -05:00
Adam J. Stewart
526ee113ea Default to Python 3.7 (#10319)
* Default to Python 3

* Fix build with Intel compilers
2019-10-22 10:22:32 -05:00
Adam J. Stewart
48e8029fb1 Add latest version of py-scikit-learn (#13295)
* Add latest version of py-scikit-learn

* setup_environment -> setup_build_environment
2019-10-22 09:16:58 -05:00
Adam J. Stewart
09070b0c9b Add latest version of npth (#13353) 2019-10-22 09:16:33 -05:00
Adam J. Stewart
2de807d4cb Add latest version of py-macs2 (#13358) 2019-10-22 09:16:07 -05:00
Adam J. Stewart
e0c310bfd3 Add latest version of py-sphinxcontrib-programoutput (#13359) 2019-10-22 09:15:39 -05:00
Adam J. Stewart
809733c7e6 Restrict parallel build of py-astropy to Python 3 (#13360) 2019-10-22 09:15:11 -05:00
Massimiliano Culpo
cfbdd2179e microarchitectures: add optimization flags for Intel compilers (#13345)
* Added optimization flags for Intel compilers with Intel CPUs
* Added optimization flags for Intel compilers with AMD CPUs
2019-10-22 00:33:59 -07:00
Omar Padron
fd58c98b0e fetching: S3 upload and download (#11117)
This extends Spack functionality so that it can fetch sources and binaries from-, push sources and binaries to-, and index the contents of- mirrors hosted on an S3 bucket.

High level to-do list:

- [x] Extend mirrors configuration to add support for `file://`, and `s3://` URLs.
- [x] Ensure all fetching, pushing, and indexing operations work for `file://` URLs.
- [x] Implement S3 source fetching
- [x] Implement S3 binary mirror indexing
- [x] Implement S3 binary package fetching
- [x] Implement S3 source pushing
- [x] Implement S3 binary package pushing

Important details:

* refactor URL handling to handle S3 URLs and mirror URLs more gracefully.
  - updated parse() to accept already-parsed URL objects.  an equivalent object
    is returned with any extra s3-related attributes intact.  Objects created with
    urllib can also be passed, and the additional s3 handling logic will still be applied.

* update mirror schema/parsing (mirror can have separate fetch/push URLs)
* implement s3_fetch_strategy/several utility changes
* provide more feature-complete S3 fetching
* update buildcache create command to support S3

* Move the core logic for reading data from S3 out of the s3 fetch strategy and into
  the s3 URL handler.  The s3 fetch strategy now calls into `read_from_url()` Since
  read_from_url can now handle S3 URLs, the S3 fetch strategy is redundant.  It's
  not clear whether the ideal design is to have S3 fetching functionality in a fetch
  strategy, directly implemented in read_from_url, or both.

* expanded what can be passed to `spack buildcache` via the -d flag: In addition
  to a directory on the local filesystem, the name of a configured mirror can be
  passed, or a push URL can be passed directly.
2019-10-22 00:32:04 -07:00
Adam J. Stewart
6cb972a9d2 Add dependency version constraint to libgcrypt (#13351) 2019-10-22 00:43:44 -05:00
Adam J. Stewart
2aa51697c5 Fix configure arg to libassuan (#13350) 2019-10-22 00:43:29 -05:00
Adam J. Stewart
598274a278 Fix configure arg to libksba (#13352) 2019-10-22 00:43:11 -05:00
Adam J. Stewart
fb219cd91c Add latest version of gnupg (#13349) 2019-10-22 00:42:56 -05:00
Adam J. Stewart
326db657da Add latest version of patchelf (#13348) 2019-10-22 00:42:40 -05:00
Adam J. Stewart
5e6dc7ab4b Add latest version of zstd (#13340)
* Add latest version of zstd

* setup_environment -> setup_build_environment
2019-10-21 21:45:48 -05:00
Toyohisa Kameyama
98c0d59a0c sniffles: fix zlib header lookup directory. (#13063)
* sniffles: fix zlib header lookup directory.

* use bamtools and zlib to spack installed package.

* remove unneeded patch.
2019-10-21 18:38:05 -05:00
noguchi-k
7b62b64b03 elsi:add CMAKE Fortran MODDIR FLAG for Fujitsu compiler (#13244)
* add CMAKE Fortran MODDIR FLAG for Fujitsu compiler

* elsi:remove extra fix
2019-10-21 18:28:38 -05:00
t-karatsu
0e3e1836ff arpack-ng: Fixed error that is not compatible with isnan. (#13246) 2019-10-21 18:27:39 -05:00
t-karatsu
26141ad489 bpp-core: Clarify 'isnan' function's namespace. (#13260) 2019-10-21 18:24:10 -05:00
Michael Kuhn
edf56d8ac4 qt: Fix build for newer versions (#13262)
For some reason, newer versions of qt fail to build because they cannot
find certain system libraries such as libatomic and libdl.

Leaving the qmake compiler set to gcc seems to fix the problem.

Fixes #13221
2019-10-21 18:23:03 -05:00
健美猞猁
26687988eb New package: Fl (#12877) 2019-10-21 12:04:00 -07:00
Massimiliano Culpo
3d77ecd92e Bootstrap environment modules optimizing for generic architectures (#13105)
fixes #13073

Since #3206 was merged bootstrapping environment-modules was using the architecture of the current host or the best match supported by the default compiler. The former case is an issue since shell integration was looking for a spec targeted at the host microarchitecture.

1. Bootstrap an env modules targeted at generic architectures
2. Look for generic targets in shell integration scripts
3. Add a new entry in Travis to test shell integration
2019-10-21 11:20:05 -07:00
Massimiliano Culpo
498f448ef3 microarchitectures: fix custom compiler versions (#13222)
Custom string versions for compilers were raising a ValueError on
conversion to int. This commit fixes the behavior by trying to detect
the underlying compiler version when in presence of a custom string
version.

* Refactor code that deals with custom versions for better readability
* Partition version components with a regex
* Fix semantic of custom compiler versions with a suffix
* clang@x.y-apple has been special-cased
* Add unit tests
2019-10-21 10:24:57 -07:00
Adam J. Stewart
4ab63c17d5 Fix Python 3.8 build on macOS (#13338) 2019-10-21 11:21:47 -05:00
Adam J. Stewart
4d99663ef9 Add latest version of py-cffi (#13322)
* Add latest version of py-cffi

* setup_environment -> setup_build_environment
2019-10-21 11:19:48 -05:00
Adam J. Stewart
038f7b1b66 Add latest version of py-numpy (#13307)
* Add latest version of py-numpy

* setup_environment -> setup_build_environment
2019-10-21 11:19:05 -05:00
Adam J. Stewart
72177b6e97 Add latest version of py-tables (#13291)
* Add latest version of py-tables

* setup_environment -> setup_build_environment
2019-10-21 11:17:52 -05:00
Adam J. Stewart
5090071693 Add latest version of py-torch (#13290)
* Add latest version of py-torch

* setup_environment -> setup_build_environment
2019-10-21 11:17:15 -05:00
Adam J. Stewart
f2d91f7e3c Use specific version of googletest for uriparser (#13339) 2019-10-20 19:08:23 -05:00
Adam J. Stewart
01e64886ac Tut cannot be built with Python 3.7+ (#13341) 2019-10-20 19:08:04 -05:00
Adam J. Stewart
7f2aacfffc Add latest version of proj (#13337) 2019-10-20 17:56:37 -05:00
Adam J. Stewart
030b2f8657 Add missing zlib dependency to openjpeg (#13336) 2019-10-20 17:06:43 -05:00
Adam J. Stewart
0cfc88c7d7 openblas: http -> https (#13335) 2019-10-20 17:06:30 -05:00
Adam J. Stewart
785d5d9ca3 mapserver: http -> https (#13334) 2019-10-20 16:31:55 -05:00
Adam J. Stewart
4789ac956c liblas: http -> https (#13331) 2019-10-20 15:51:35 -05:00
Adam J. Stewart
529d1246f6 libtiff: http -> https (#13332) 2019-10-20 15:51:23 -05:00
Adam J. Stewart
b56e46ece8 libgeotiff: http -> https (#13330) 2019-10-20 15:51:08 -05:00
Adam J. Stewart
f1e595cb61 Add latest version of libyaml (#13333) 2019-10-20 15:50:48 -05:00
Adam J. Stewart
04e999162d Add latest version of libgcrypt (#13329) 2019-10-20 14:45:00 -05:00
Adam J. Stewart
73c5a9c736 Add latest version of googletest (#13328) 2019-10-20 14:44:43 -05:00
Adam J. Stewart
1673dc5aeb GEOS: http -> https (#13327) 2019-10-20 14:44:28 -05:00
Adam J. Stewart
c767444f88 Add missing test dependency to py-alabaster (#13325) 2019-10-20 14:44:14 -05:00
Adam J. Stewart
a602ed873d Add latest version of py-typing (#13287) 2019-10-20 13:18:02 -05:00
Adam J. Stewart
d462749b59 Add missing dependencies to py-apipkg (#13324) 2019-10-20 13:17:44 -05:00
Adam J. Stewart
32879df9d0 Add latest version of py-babel (#13323) 2019-10-20 13:17:28 -05:00
Adam J. Stewart
ea90d2b88a Add latest version of py-chardet (#13321) 2019-10-20 11:44:12 -05:00
Adam J. Stewart
d2744a072b Add latest version of py-click (#13320) 2019-10-20 11:43:56 -05:00
Adam J. Stewart
41126d457f Add latest version of py-execnet (#13317) 2019-10-20 11:21:59 -05:00
Adam J. Stewart
1007a0f7e5 Add latest version of py-decorator (#13318) 2019-10-20 11:21:46 -05:00
Adam J. Stewart
47831a95e1 Add latest version of py-coverage (#13319) 2019-10-20 11:21:32 -05:00
Adam J. Stewart
b421c97110 Add latest version of py-sphinxcontrib-websupport (#13292) 2019-10-20 11:21:03 -05:00
Adam J. Stewart
21d14a19f6 Add latest version of py-sphinx (#13293) 2019-10-20 11:20:46 -05:00
Adam J. Stewart
2268dd9e8f Add latest version of py-snowballstemmer (#13294) 2019-10-20 11:20:21 -05:00
Adam J. Stewart
a2e7f0e9d2 Add latest version of py-requests (#13296) 2019-10-20 11:19:51 -05:00
Adam J. Stewart
35362adb97 Add latest version of py-pyyaml (#13297) 2019-10-20 11:19:29 -05:00
Adam J. Stewart
b76f1687fb Add latest version of py-pytest-xdist (#13298) 2019-10-20 11:19:11 -05:00
Adam J. Stewart
f832f12ca6 Add latest version of py-pytest-runner (#13299) 2019-10-20 11:18:55 -05:00
Adam J. Stewart
3a2eeedf20 Add latest version of py-pytest-mock (#13300) 2019-10-20 11:18:39 -05:00
Adam J. Stewart
4d7226e561 Add latest version of py-pytest-httpbin (#13301) 2019-10-20 11:18:04 -05:00
Adam J. Stewart
63dd97f84e Add latest version of py-pytest-cov (#13302) 2019-10-20 11:17:47 -05:00
Adam J. Stewart
03b1af0d96 Add latest version of py-pysocks (#13303) 2019-10-20 11:17:27 -05:00
Adam J. Stewart
10065b325d Add latest version of py-pycparser (#13304) 2019-10-20 11:17:11 -05:00
Adam J. Stewart
d4f409ea51 Add latest version of py-psutil (#13305) 2019-10-20 11:16:53 -05:00
Adam J. Stewart
04af812e03 Add latest version of py-pip (#13306) 2019-10-20 11:16:36 -05:00
Adam J. Stewart
c130a2980f Add latest version of py-mock (#13308) 2019-10-20 11:16:07 -05:00
Adam J. Stewart
0d189e779a Add latest version of py-markupsafe (#13309) 2019-10-20 11:15:51 -05:00
Adam J. Stewart
30fdff4ff9 Add latest version of py-lxml (#13310) 2019-10-20 11:15:32 -05:00
Adam J. Stewart
51432aa92e Add latest version of py-jinja2 (#13311) 2019-10-20 11:15:16 -05:00
Adam J. Stewart
d61b5125c5 Add latest version of py-itsdangerous (#13312) 2019-10-20 11:15:01 -05:00
Adam J. Stewart
e05d165f92 Add latest version of py-idna (#13313) 2019-10-20 11:14:46 -05:00
Adam J. Stewart
ac0fee0f34 Add latest version of py-hypothesis (#13314) 2019-10-20 11:14:32 -05:00
Adam J. Stewart
5aea70e733 Add latest version of py-httpbin (#13315) 2019-10-20 11:14:17 -05:00
Adam J. Stewart
db8f83d333 Add latest version of py-flask (#13316) 2019-10-20 11:13:55 -05:00
Adam J. Stewart
de6d53b626 Add latest version of py-torchvision (#13289) 2019-10-20 11:12:43 -05:00
Adam J. Stewart
5995c3f85b Add latest version of py-typing-extensions (#13288) 2019-10-20 11:12:27 -05:00
Adam J. Stewart
4e2cce2c9f Add latest version of py-urllib3 (#13286) 2019-10-20 11:11:41 -05:00
Adam J. Stewart
d2202f6d98 Add latest version of py-virtualenv (#13285) 2019-10-20 11:11:23 -05:00
Adam J. Stewart
78942c7840 Add latest version of py-werkzeug (#13284) 2019-10-20 11:11:06 -05:00
Adam J. Stewart
0443581a20 Add py-mypy-extensions package (#13283) 2019-10-20 11:10:40 -05:00
Adam J. Stewart
92a359e4ba Add py-mypy package (#13282) 2019-10-20 11:10:22 -05:00
Adam J. Stewart
9ac7e098d9 Add py-pytest-forked package (#13281) 2019-10-20 11:10:04 -05:00
Adam J. Stewart
1dc99765e9 Add py-raven package (#13280) 2019-10-20 11:09:44 -05:00
Adam J. Stewart
a6bc0c7ee0 Add py-flake8-import-order package (#13273) 2019-10-20 11:09:23 -05:00
Adam J. Stewart
00f766b248 Add py-sphinxcontrib-devhelp package (#13278) 2019-10-20 11:09:04 -05:00
Adam J. Stewart
c8285da8e7 Add py-sphinxcontrib-applehelp package (#13279) 2019-10-20 11:08:51 -05:00
Adam J. Stewart
d37c95b80b Add py-sphinxcontrib-htmlhelp package (#13277) 2019-10-20 11:08:34 -05:00
Adam J. Stewart
7bda2fe292 Add py-sphinxcontrib-jsmath package (#13276) 2019-10-20 11:08:16 -05:00
Adam J. Stewart
d4ac57f3a3 Add py-sphinxcontrib-qthelp package (#13275) 2019-10-20 11:07:54 -05:00
Adam J. Stewart
f35bcaf83b Add py-sphinxcontrib-serializinghtml package (#13274) 2019-10-20 11:07:31 -05:00
Adam J. Stewart
3e18e664fc Add py-typed-ast package (#13272) 2019-10-20 11:07:01 -05:00
Adam J. Stewart
95b7f31112 Add py-docutils-stubs package (#13271) 2019-10-20 11:06:38 -05:00
Adam J. Stewart
4f56bcc790 Add py-brotlipy package (#13270) 2019-10-20 11:06:18 -05:00
Adam J. Stewart
596f3f1d61 spack create: http -> https (#13269) 2019-10-20 11:05:54 -05:00
Todd Gamblin
20bb6fd733 shebangs: don't warn when patching long shebangs (#13266)
We've been doing this for quite a while now, and it does not seem to
cause issues.

- [x] Switch the noisy warning to a debug to make Spack a bit quieter
  while building.
2019-10-19 14:09:25 -07:00
Massimiliano Culpo
41fb0395a6 Microarchitecture specific optimizations for LLVM (#13250)
* Added architecture specific optimization flags for Clang / LLVM
* Disallow compiler optimizations for mixed toolchains
    * We emit a warning when building for a mixed toolchain
* Fixed issues with suffixed versions of compilers; Apple's Clang will, 
    for the time being, fall back on x86-64 for every compilation.
2019-10-19 13:19:29 -07:00
Adam J. Stewart
0fb563f3d9 GCC: fix build on macOS Catalina (#13202)
* GCC: speed up build

* Add back 3-stage bootstrapping
2019-10-19 12:18:31 -05:00
Adam J. Stewart
306346356c brotli: fix darwin install name (#13258) 2019-10-19 12:18:06 -05:00
Axel Huebl
327a7368e9 ADIOS2: Dataspaces, libffi, libfabric (#13230)
* DataSpaces: 1.8.0

Add a newer release of DataSpaces for ADIOS2.
Also add missing `-fPIC` flags since this is a static library.

* ADIOS2: Dataspaces, libffi, libfabric

Add missing dependencies to ADIOS2. Without explicit control,
those dependencies might get picked up from the system environment
and will cause unstable builds.

* Hide transitive SST dependencies

* ADIOS2: Simplify SST CMake Flags

As proposed by Chuck
2019-10-18 13:26:56 -07:00
wspear
f9e7bf295c Updated to latest version. Removed dependency on node-js (#13055)
* Updated to latest version. Removed dependency on node-js

* Refined dependencies

* Added dependencies, including version-specific ones. Re-added 0.9.4.

* Updated py-jupyterhub requirements. Enabled version 0.9.4 and 1.0.0
2019-10-18 12:53:47 -05:00
Christoph Junghans
b4383825be fftw: altivec only works for float (#13242) 2019-10-18 10:36:40 -06:00
wspear
40a11c6bf6 Added package py-python-oauth2, a dependency of py-jupyterhub@0.9.4. … (#13140)
* Added package py-python-oauth2, a dependency of py-jupyterhub@0.9.4. Depends on #13132, #13133 and #13134

* Remove optional dependencies
2019-10-18 11:29:26 -05:00
Justin S
af3c238c31 interproscan: add 5.38-76.0 (#13253) 2019-10-17 20:52:54 -05:00
Peter Scheibel
fd88f8fefa satisfaction checks on dependencies should be strict when the parent check is strict (#13243) 2019-10-17 11:02:14 -07:00
Massimiliano Culpo
9ddc98e46a Separate setting build environment and run environment in packages (#11115)
* Methods setting the environment now do it separately for build and run

Before this commit the `*_environment` methods were setting
modifications to both the build-time and run-time environment
simultaneously. This might cause issues as the two environments
inherently rely on different preconditions:

1. The build-time environment is set before building a package, thus
the package prefix doesn't exist and can't be inspected

2. The run-time environment instead is set assuming the target package
has been already installed

Here we split each of these functions into two: one setting the
build-time environment, one the run-time.

We also adopt a fallback strategy that inspects for old methods and
executes them as before, but prints a deprecation warning to tty. This
permits to port packages to use the new methods in a distributed way,
rather than having to modify all the packages at once.

* Added a test that fails if any package uses the old API

Marked the test xfail for now as we have a lot of packages in that
state.

* Added a test to check that a package modified by a PR is up to date

This test can be used any time we deprecate a method call to ensure
that during the first modification of the package we update also
the deprecated calls.

* Updated documentation
2019-10-17 10:17:21 -07:00
Todd Gamblin
cf9de058aa multimethods: avoid calling caller_locals() in Python 3 (#13238)
Python 3 metaclasses have a `__prepare__` method that lets us save the
class's dictionary before it is constructed.  In Python 2 we had to walk
up the stack using our `caller_locals()` method to get at this.  Using
`__prepare__` is much faster as it doesn't require us to use `inspect`.

This makes multimethods use the faster `__prepare__` method in Python3,
while still using `caller_locals()` in Python 2.  We try to reduce the
use of caller locals using caching to speed up Python 2 a little bit.
2019-10-17 06:40:23 -07:00
wspear
93c34039e4 python-editor: added new package at v1.0.4 (#13126) 2019-10-17 08:46:34 +02:00
Christoph Junghans
6cd997e743 eospac: avoid conflict with linux's getopt (#13241)
* eospac: avoid conflict with linux's getopt

* Update package.py
2019-10-16 18:46:26 -07:00
Todd Gamblin
e65b7f8ebf importing: make importlib_importer recognize .pyc cache (#13239)
Our importer was always parsing from source (which is considerably
slower) because the source size recorded in the .pyc file differed from
the size of the input file.

Override path_stats in the prepending importer to fool it into thinking
that the source size is the size *with* the prepended code.
2019-10-16 17:07:18 -07:00
Michael Kuhn
ffe87ed49f filter_file: fix multiple invocations on the same file (#13234)
Since the backup file is only created on the first invocation, it will
contain the original file without any modifications. Further invocations
will then read the backup file, effectively reverting prior invocations.

This can be reproduced easily by trying to install likwid, which will
try to install into /usr/local. Work around this by creating a temporary
file to read from.
2019-10-16 15:15:24 -07:00
Tamara Dahlgren
1ef71376f2 Bugfix: stage directory permissions and cleaning (#12733)
* This updates stage names to use "spack-stage-" as a prefix.
  This avoids removing non-Spack directories in "spack clean" as
  c141e99 did (in this case so long as they don't contain the
  prefix "spack-stage-"), and also addresses a follow-up issue
  where Spack stage directories were not removed.
* Spack now does more-stringent checking of expected permissions for
  staging directories. For a given stage root that includes a user
  component, all directories before the user component that are
  created by Spack are expected to match the permissions of their
  parent; the user component and all deeper directories are expected
  to be accessible to the user (read/write/execute).
2019-10-16 14:55:37 -07:00
Jeffrey Salmond
e17df2e8f5 add python version 3.8.0 (#13218) 2019-10-16 14:42:36 -07:00
Christoph Junghans
b0543005b2 expat: don't pick up external docbook (#13228) 2019-10-16 05:59:51 -07:00
Jeffrey Salmond
f08f4201c7 add latest version of vim (#13203) 2019-10-15 20:43:03 -07:00
Greg Becker
94e80933f0 Feature: installed file verification (#12841)
This feature generates a verification manifest for each installed
package and provides a command, "spack verify", which can be used to
compare the current file checksums/permissions with those calculated
at installed time.

Verification includes

* Checksums of files
* File permissions
* Modification time
* File size

Packages installed before this PR will be skipped during verification.
To verify such a package you must reinstall it.

The spack verify command has three modes.

* With the -a,--all option it will check every installed package.
* With the -f,--files option, it will check some specific files,
  determine which package they belong to, and confirm that they have
  not been changed.
* With the -s,--specs option or by default, it will check some
  specific packages that no files havae changed.
2019-10-15 14:24:52 -07:00
Satish Balay
5ea0eed287 hypre: add version 2.18.1 (#13224) 2019-10-15 13:05:51 -07:00
Axel Huebl
dc3a9618a0 ADIOS2: Default no Python (#13220)
Turn off the python variant by default.
2019-10-15 14:55:45 -04:00
Massimiliano Culpo
d33b0ffc50 lmod: module files are written in a root folder named by target family (#13121)
fixes #13005

This commit fixes an issue with the name of the root directory for
module file hierarchies. Since #3206 the root folder was named after
the microarchitecture used for the spec, which is too specific and
not backward compatible for lmod hierarchies. Here we compute the
root folder name using the target family instead of the target name
itself and we add target information in the 'whatis' portion of the
module file.
2019-10-15 11:20:49 -07:00
Andrey Prokopenko
41e7e5693e arborx: update v0.8-beta to v0.8-beta2 (#13143)
- Require Kokkos with c++14
- Update the case of CMake options
2019-10-15 11:19:16 +02:00
Andrey Prokopenko
ce5333c1fd kokkos: add cxxstd variant (#13142) 2019-10-15 11:14:37 +02:00
Tim Haines
27a339eeb2 Add version 0.177 of elfutils (#13129)
* Add version 0.177

* Fix spacing
2019-10-14 22:22:11 -07:00
t-karatsu
8f69c9d334 ntpoly: Define module directry when compiling with Fujitsu compiler. (#13120)
* ntpoly: Define module directry when compiling with Fujitsu compiler.

* Delete quotes.
2019-10-14 22:20:52 -07:00
Massimiliano Culpo
5cd28847e8 filter_file uses "surrogateescape" error handling (#12765)
From Python docs:
--
'surrogateescape' will represent any incorrect bytes as code points in
the Unicode Private Use Area ranging from U+DC80 to U+DCFF. These
private code points will then be turned back into the same bytes when
the surrogateescape error handler is used when writing data. This is
useful for processing files in an unknown encoding.
--

This will allow us to process files with unknown encodings.

To accommodate the case of self-extracting bash scripts, filter_file
can now stop filtering text input if a certain marker is found. The
marker must be passed at call time via the "stop_at" function argument.
At that point the file will be reopened in binary mode and copied
verbatim.

* use "surrogateescape" error handling to ignore unknown chars
* permit to stop filtering if a marker is found
* add unit tests for non-ASCII and mixed text/binary files
2019-10-14 20:35:14 -07:00
Greg Becker
3f46f03c83 bugfix: install --only dependencies works in env (#13090)
* bugfix: install --only dependents works in env

includes regression testing
2019-10-14 17:50:38 -07:00
Satish Balay
a63e64f1c4 py-petsc4py: add version 3.12.0 (#13209)
* py-petsc4py: add version 3.12.0

* fix typo wrt maintainer
2019-10-14 15:27:28 -05:00
William F Godoy
dafee9df31 Complete cleanup of the adios2 package configuration (#13107)
Provide up to date specs for build options
Remove non-production versions
Format using autopep8 and flake8
Separate cmake options in adios2 2.4.0 version
Keep default as True as much as possible
Support for Python 2 and 3 for adios2 versions <= 2.4.0
Starting v2.5.0 only Python 3 is supported
Addressing review suggestions
2019-10-14 12:47:55 -07:00
Hadrien G
be8f8856ce New ACTS versions (#12484)
* Add new ACTS releases

* Update ACTS dependency requirements

* We can actually be more specific here

* The material plugin is gone as of ACTS v0.10.0

* Add 0.10.4 release

* Remove material mapping plugin

It was merged into core as of 0.10.x, and given ACTS' youth it is unlikely to have actual users at this point in time.
2019-10-14 14:01:53 -05:00
wspear
48b7370265 py-pymongo: added new package at version 3.9.0 (#13132) 2019-10-14 20:57:54 +02:00
Todd Gamblin
385d2bf3fa commands: add resource stats to spack url stats (#13205)
`spack url stats` now also looks at packages' resources when outputting
statistics.

Example:

```
$ spack url stats
==> URL stats for 3531 packages:
--------------------------------------------------------------
stat                    versions        %   resources        %
--------------------------------------------------------------
url                         8335    89.3%         339    89.0%
    schemes
        https               6489    69.5%          93    24.4%
        ftp                   32     0.3%           8     2.1%
        http                1763    18.9%         237    62.2%
        file                  51     0.5%           1     0.3%
    checksums
        md5                   26     0.3%           0     0.0%
        sha256              8306    89.0%         336    88.2%
        no checksum            3     0.0%           3     0.8%
--------------------------------------------------------------
go                             1     0.0%           0     0.0%
--------------------------------------------------------------
hg                             7     0.1%           0     0.0%
--------------------------------------------------------------
no code                        4     0.0%           0     0.0%
--------------------------------------------------------------
svn                            4     0.0%          16     4.2%
--------------------------------------------------------------
git                          981    10.5%          26     6.8%
    branch                   442     4.7%           4     1.0%
    commit                   362     3.9%          14     3.7%
    no ref                    36     0.4%           2     0.5%
    tag                      141     1.5%           6     1.6%
--------------------------------------------------------------
```
2019-10-14 08:58:01 -07:00
wspear
8a1e5f68f4 py-alembic: fixed missing dependencies. (#13127) 2019-10-14 10:53:01 +02:00
Jeffrey Salmond
2bb1bae2ae dialign: added new package at version 2.2.1 (#13130)
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-14 10:49:31 +02:00
Justin S
c851cfd122 py-smart-open: new package at 1.8.4 (#13135) 2019-10-14 10:42:49 +02:00
Adam J. Stewart
e1cf35a82b Fix svn tests, skip if svnadmin not found (#13137) 2019-10-14 10:40:20 +02:00
wspear
bdcf9ba5cd py-python-memcached: added new package at version 1.59 (#13133)
* Added package py-python-memcached, a dependency of python-oauth2

* Fixed line lengths
2019-10-14 10:35:41 +02:00
wspear
04af0eb5a2 py-redis: added new package at version 3.3.8 (#13134) 2019-10-14 10:34:37 +02:00
Adam J. Stewart
27ad28e51a Add py-kiwisolver 1.1.0 (#13170) 2019-10-13 22:26:49 -07:00
Satish Balay
846daa0404 amrex: add version 19.10 (#13206) 2019-10-13 19:57:11 -05:00
Satish Balay
20c2fa62aa slepc: use spack specified python in configure (#13207) 2019-10-13 19:56:27 -05:00
Satish Balay
1f29785b88 omega-h: add version 9.29.0 (#13208) 2019-10-13 19:54:41 -05:00
Adam J. Stewart
ce6bf5fba1 Add apr-util 1.6.1 (#13145) 2019-10-13 19:52:58 -05:00
Adam J. Stewart
c121ddb300 Add apr 1.7.0 (#13146) 2019-10-13 19:52:40 -05:00
Adam J. Stewart
7b21ac3188 Add bison 3.4.2 (#13147) 2019-10-13 19:52:10 -05:00
Adam J. Stewart
30c5f88255 Add freetype 2.10.1 (#13149) 2019-10-13 19:51:53 -05:00
Adam J. Stewart
518a7c5bb9 Add libpng 1.6.37 (#13153) 2019-10-13 19:51:04 -05:00
Adam J. Stewart
b3fcfc1cb2 Add lz4 1.9.2 (#13155) 2019-10-13 19:50:44 -05:00
Adam J. Stewart
48cd455cc1 Add mercurial 5.1.2 (#13156) 2019-10-13 19:50:19 -05:00
Adam J. Stewart
e5d1810bec Add subversion 1.12.2 (#13158) 2019-10-13 19:49:53 -05:00
Adam J. Stewart
143afbd3a0 Add py-attrs 19.2.0 (#13163) 2019-10-13 19:49:29 -05:00
Adam J. Stewart
4b2b548981 Add py-cython 0.29.13 (#13166) 2019-10-13 19:49:07 -05:00
Adam J. Stewart
2884a862e8 Add py-docutils 0.15.2 (#13167) 2019-10-13 19:47:25 -05:00
Adam J. Stewart
83a96755ef Add py-joblib 0.14.0 (#13169) 2019-10-13 19:47:07 -05:00
Adam J. Stewart
e72c20bc47 Add py-more-itertools 7.2.0 (#13171) 2019-10-13 19:46:13 -05:00
Adam J. Stewart
d61743561b Add py-pillow 6.2.0 (#13175)
* Add py-pillow 6.2.0

* Flake8 fix
2019-10-13 19:45:23 -05:00
Adam J. Stewart
ec3b891714 Add py-py 1.8.0 (#13177) 2019-10-13 19:44:08 -05:00
Adam J. Stewart
f7b3524765 Add py-pyflakes 2.1.1 (#13178) 2019-10-13 19:43:50 -05:00
Adam J. Stewart
1276a182b6 Add py-pygments 2.4.2 (#13179) 2019-10-13 19:43:34 -05:00
Adam J. Stewart
8c2096aac5 Add py-pyparsing 2.4.2 (#13180) 2019-10-13 19:43:14 -05:00
Adam J. Stewart
d6f6c41d58 Add py-pytz 2019.3 (#13182) 2019-10-13 19:42:55 -05:00
Adam J. Stewart
2835e9bf17 Add py-setuptools-scm 3.3.3 (#13183) 2019-10-13 19:42:35 -05:00
Adam J. Stewart
ea4f9ebbde gmp: fix make check on catalina (#13201) 2019-10-12 20:21:45 -05:00
Adam J. Stewart
08d448bc54 mpfr: fix make check on catalina (#13200) 2019-10-12 20:21:23 -05:00
Adam J. Stewart
41e0b069d7 Fix external numpy package support (#13197) 2019-10-12 20:21:03 -05:00
Adam J. Stewart
3df6b05c04 Add py-setuptools 41.4.0 (#13184) 2019-10-12 20:20:41 -05:00
Adam J. Stewart
ebfd06d248 Add py-pytest 5.2.1 (#13181) 2019-10-12 20:18:31 -05:00
Adam J. Stewart
328583decc Add py-pluggy 0.13.0 (#13176) 2019-10-12 20:14:12 -05:00
Adam J. Stewart
2ced690efb Add py-pandas 0.25.1 (#13174) 2019-10-12 20:12:41 -05:00
Adam J. Stewart
50e9dc5e2e Add py-packaging 19.2 (#13173) 2019-10-12 20:12:19 -05:00
Adam J. Stewart
101c287e7b Add py-numexpr 2.7.0 (#13172) 2019-10-12 20:11:57 -05:00
Adam J. Stewart
db4d06f953 Add py-importlib-metadata 0.23 (#13168) 2019-10-12 20:08:33 -05:00
Adam J. Stewart
1d7eab10ac Add py-certifi 2019.9.11 (#13165) 2019-10-12 20:05:00 -05:00
Adam J. Stewart
a59e77e374 Add missing test dependency to py-bottleneck (#13164) 2019-10-12 20:04:34 -05:00
Adam J. Stewart
1078dfb6cc Add py-atomicwrites 1.3.0 (#13162) 2019-10-12 20:03:01 -05:00
Adam J. Stewart
b18e4ad142 Add missing libiconv dependency to wget (#13161) 2019-10-12 20:02:41 -05:00
Adam J. Stewart
7a43817205 Add missing gettext dependency to watch (#13160) 2019-10-12 20:02:24 -05:00
Adam J. Stewart
6beb5da497 Fix valgrind concretization on macOS (#13159) 2019-10-12 20:02:05 -05:00
Adam J. Stewart
22e9aafe5f Add SCons 3.1.1 (#13157) 2019-10-12 20:00:28 -05:00
Adam J. Stewart
73b2b2a70f Add LLVM OpenMP 9.0.0 (#13154) 2019-10-12 19:57:36 -05:00
Adam J. Stewart
94d57446c7 Add libjpeg-turbo 2.0.3 (#13152) 2019-10-12 19:55:44 -05:00
Adam J. Stewart
1e2754f0d2 Add help2man 1.47.11 (#13151) 2019-10-12 19:55:14 -05:00
Adam J. Stewart
681c5bcceb Add graphviz 2.42.2 (#13150) 2019-10-12 19:54:46 -05:00
Adam J. Stewart
0a8be4e311 Add cmake 3.15.4 (#13148) 2019-10-12 19:52:47 -05:00
Adam J. Stewart
18ab375968 Add utf8proc package (#13144) 2019-10-12 19:40:05 -05:00
Greg Becker
1808ba3c68 install: add --cache-only option (#12729)
* add `--cache-only` option to install
* testing for `--cache-only`
* remove extraneous stage creation at stage destroy time
2019-10-12 11:43:37 -07:00
Nichols A. Romero
ebb5ce4b69 F18 Oct2019 Minor Update (#13192)
* Minor clean-up of package information.

* Add variants, fix dependencies, and add conflicts for compilers that do not support C++17.

* Correct dependency type for CMake.
2019-10-12 12:30:43 -05:00
Todd Gamblin
64bdc3251f checksums: enforce that all mainline packages use sha256 checksums
- Add a test that verifies checksums on all packages

- Also add an attribute to packages that indicates whether they need a
  manual download or not, and add an exception in the tests for these
  packages until we can verify them.
2019-10-12 07:19:43 -07:00
Todd Gamblin
8cbd349cb4 checksums: fix packages that needed new download locations
Some packages had incorrect checksums because they needed to be
downloaded from a new place or the package needed tweaking somehow.
These packages to sha256 and the new checksums have been verified by
fetching over https.
2019-10-12 07:19:43 -07:00
Todd Gamblin
45a9cfcdd7 packages: remove packages that are no longer fetchable
These packages have either been retired or are no longer retrievable from
any site we can find. They also aren't needed by other packages, so we're
removing them from Spack.

- allinea-reports: is now arm performance reports
- globus-toolkit: retired, globus is now a paid service.
- uberftp: used globus-toolkit, github site is retired.
- mpiblast: site is dead; no longer fetchable.
- py-mxnet: site and github are gone
- soap2, soapindel, soapsnp: site is gone, unfetchable
- arlecore: could not verify md5 securely
2019-10-12 07:19:43 -07:00
Todd Gamblin
00f91ab22b checksums: Remove or fix up unfetchable or unverifiable md5 versions
This commit either removes remaining md5 checksums, or it replaces them
with sha256 checksums verified by fetching over https.
2019-10-12 07:19:43 -07:00
Todd Gamblin
62927654dd checksums: use sha256 checksums everywhere
We'd like to use a consistent checksum scheme everywhere so that we can:

    a) incorporate archive checksums into our specs and have a
       consistent hashing algorithm across all specs.

    b) index mirrors with a consistent type of checksum, and not one that
       is dependent on how spack packages are written.

- [x] convert existing md5, sha224, sha512, sha1 checksums to sha256
2019-10-12 07:19:43 -07:00
Matthew LeGendre
87fa7c15fc Add adiak package, version 0.1.1 2019-10-11 21:22:33 -07:00
Massimiliano Culpo
f8a4a3802c Autotools build system to patch config.guess based on a range check 2019-10-11 21:21:57 -07:00
Massimiliano Culpo
8dd95c1705 Fixed options to compile generic code on ppc64 and ppc64le 2019-10-11 21:20:28 -07:00
Patrick Gartung
d248b0e9d5 Fix python3 errors from string and byte concatenation (#13141) 2019-10-11 03:21:45 -05:00
Massimiliano Culpo
fd97f5c491 Fixed constraints in recipes for packages that depends on fftw (#13125) 2019-10-11 07:55:15 +02:00
Nichols A. Romero
884964d551 Fix f18 install method (#13123)
* Install method is broken and not needed. Built-in install method works fine. Just delete.

* Change version to master.
2019-10-10 21:52:29 -05:00
Tamara Dahlgren
93a44c822c tests: cleanup config:build_stage handling (fixes #12651, #12798) 2019-10-10 16:50:05 -07:00
Tamara Dahlgren
87cdfa2c25 Add support for nested "overrides" scopes. 2019-10-10 16:50:05 -07:00
Massimiliano Culpo
b07460ab5f Added NEON to the list of features required for the aarch64 family
Both floating-point and NEON are required in all standard ARMv8
implementations. Theoretically though specialized markets can support
no NEON or floating-point at all. Source:

https://developer.arm.com/docs/den0024/latest/aarch64-floating-point-and-neon

On the other hand the base procedure call standard for Aarch64
"assumes the availability of the vector registers for passing
floating-point and SIMD arguments". Further "the Arm 64-bit
architecture defines two mandatory register banks: a general-purpose
register bank which can be used for scalar integer processing and
pointer arithmetic; and a SIMD and Floating-Point register bank".
Source:

https://developer.arm.com/docs/ihi0055/latest/procedure-call-standard-for-the-arm-64-bit-architecture

This makes customization of Aarch64 with no NEON instruction set
available so unlikely that we can consider them a feature of the
generic family.
2019-10-10 16:24:36 -07:00
Massimiliano Culpo
77444dff10 ArchSpec: fix constraint satisfaction for targets
fixes #13111

Due to a missing case we were treating a single target that was not
equal to the one we were comparing to as a range open on the right.
2019-10-10 16:22:38 -07:00
Adam J. Stewart
7af8c206ac Add patches and missing dependency to bash (#13084) 2019-10-10 12:48:49 -05:00
Adam J. Stewart
c131a725af Add mpfr 4.0.2 (#13091) 2019-10-10 12:48:32 -05:00
Adam J. Stewart
06dffaefed Add tar 1.32 (#13099) 2019-10-10 12:48:16 -05:00
Jannek Squar
02564ef4ab sublime-text: New version, adapt install process (#13074)
* Added new version, reworked installation process

* Removed explicit addition to PATH
2019-10-10 12:13:00 -05:00
Adam J. Stewart
e925dbcefe Add expat 2.2.9 (#13085) 2019-10-10 12:10:48 -05:00
Adam J. Stewart
f940e8616c Add gettext 0.20.1 (#13086) 2019-10-10 12:10:19 -05:00
Adam J. Stewart
4d2b300da0 Add isl 0.21 (#13087) 2019-10-10 12:10:03 -05:00
Adam J. Stewart
15d7e2efd5 Add libiconv 1.16 (#13088) 2019-10-10 12:09:46 -05:00
Adam J. Stewart
c570c09cbf Add libsigsegv 2.12 (#13089) 2019-10-10 12:09:28 -05:00
Adam J. Stewart
db8178d99a Add latest openssl releases (#13092) 2019-10-10 12:09:02 -05:00
Adam J. Stewart
ace11d857f Add latest Perl releases (#13093) 2019-10-10 12:08:40 -05:00
Adam J. Stewart
f35c845330 Add pkgconf 1.6.3 (#13094) 2019-10-10 12:08:19 -05:00
Adam J. Stewart
0cf6980437 Add readline 8.0 (#13095) 2019-10-10 12:07:48 -05:00
Adam J. Stewart
4a5bdd1afd gdbm: https -> http (#13096) 2019-10-10 12:07:24 -05:00
Adam J. Stewart
01b87259e2 ncurses: https -> http (#13097) 2019-10-10 12:07:05 -05:00
Adam J. Stewart
f904e47c4e Add sqlite 3.30.0 (#13098) 2019-10-10 12:06:44 -05:00
Satish Balay
dd64bdc313 hypre: add compatibility patch for petsc/mfem build failures (#13116) 2019-10-10 09:11:15 -05:00
wspear
a042a7e91e Added new versions to py-tornado (#13080)
* Added new versions to py-tornado

* Removed all but the latest new version
2019-10-10 09:06:01 -05:00
Matthias Wolf
e69efded32 py-line-profiler: add 2.1.2, re-run cython if needed (#13102)
* py-line-profiler: add 2.1.2, re-run cython if needed

See rkern/line_profiler#166.

* Update var/spack/repos/builtin/packages/py-line-profiler/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-10 11:34:50 +02:00
Rob Latham
d93cacfa5c libfabric: new upstream release 1.8.1 (#13053) 2019-10-09 22:24:17 -05:00
wspear
c8289fcd90 Added latest versions of SQLAlchemy 1.3.X, 1.2.X and 1.1.X (#13078)
* Added latest versions of SQLAlchemy 1.3.X, 1.2.X and 1.1.X

* Added missing dependencies
2019-10-09 22:23:55 -05:00
wspear
e7e67fdfec Added latest versions to py-traitlets (#13079)
* Added latest versions to py-traitlets

* Added missing dependencies
2019-10-09 22:23:33 -05:00
Francesco Di Natale
4ef64b64d1 Add new versions of py-maestrowf (#13081)
* Addition of 1.1.3 and 1.1.4

* Addition of conditional enum-34 installation.

* Update var/spack/repos/builtin/packages/py-maestrowf/package.py

Addition of versioning for pyyaml.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Addition of enum34 back to older versions 1.1.3 and below.
2019-10-09 22:23:19 -05:00
Michael Kuhn
2e2b1a5e02 qt: Add 5.13.1 and missing zlib flags (#13109) 2019-10-09 22:22:52 -05:00
Patrick Gartung
5b879459c7 Buildcache: pass string.encode('utf-8') for old_dir and new_dir to replace_prefix_bin. (#13114)
This should fix a Python3 error from concatenating strings and bytes.
2019-10-09 20:36:47 -05:00
Michael Kuhn
469bef880a mysql: Add missing dependencies (#12717)
This also changes the default for cxxstd from 98 to 14 because (at
least) newer versions of mysql do not compile with 98 (tested with
gcc@9).
2019-10-09 14:45:31 -05:00
Massimiliano Culpo
acbb2af528 "No Spack mirror configured": demoted the warning to a debug message (#13082)
fixes #12010
2019-10-09 07:13:37 -05:00
Toyohisa Kameyama
b0bf528ab3 perl-perlio-gzip: add zlib dependency. (#13060) 2019-10-08 20:51:39 -05:00
Toyohisa Kameyama
529d0f3e37 psmc: add zlib dependency. (#13061) 2019-10-08 20:51:04 -05:00
Toyohisa Kameyama
f1e1693a6a seqprep: add zlib dependency. (#13062) 2019-10-08 20:50:51 -05:00
Toyohisa Kameyama
fdc91a1705 tabix: add zlib dependency. (#13064) 2019-10-08 20:48:37 -05:00
wspear
2e4bcf223c Added py-certipy package. Dependency of py-jupyterhub. (#13068)
* Added py-certipy package. Dependency of py-jupyterhub.

* Changed url to pypi
2019-10-08 20:48:11 -05:00
Nichols A. Romero
2794e52ddd QMCPACK Oct2019 fix buglets (#13069)
* Support different CMake build types correctly.

* LIBXML2 variables no longer used.

* Fix E501 as part of https://github.com/spack/spack/pull/13069
2019-10-08 20:46:15 -05:00
wspear
8de453af54 Fixed hash of version .0.5 and added latest version (.0.7.1) (#13077) 2019-10-08 20:43:44 -05:00
Mark Olesen
e3f69f8ce6 Build older openfoam (#13071)
* adjust building of OpenFOAM 1806 and earlier

- spack now unpacks into spack-src, but earlier OpenFOAM versions
  still expect particular directory names (eg, OpenFOAM-v1806).

  Resolve by creating a symlink during patching.

* replace openfoam 1806 patch with URL version
2019-10-08 20:42:44 -05:00
wspear
6a99b7e262 Added py-pamela package. Dependency of py-jupyterhub. (#13075) 2019-10-08 20:08:32 -05:00
George Hartzell
4377cc7066 Add headsup note re cryptsetup patch for v2.2.2 (#13076) 2019-10-08 20:07:38 -05:00
Massimiliano Culpo
1213aec7ed travis: bump python version for flake8 and build tests 2019-10-08 16:06:32 -07:00
Phil Carns
66b9009a07 pmdk: added v 1.7 (#13067) 2019-10-08 09:19:27 +02:00
Adam J. Stewart
72d8febc4e Add macOS Catalina support (#13070) 2019-10-07 23:59:33 -07:00
Oliver Breitwieser
9600eb4f5a py-apipkg: Fix mix up of checksums (#13066)
Change-Id: Ibae329c5a6cf7e3741a879612da523e11e3b0ab9
2019-10-07 20:55:22 -05:00
Massimiliano Culpo
9faee51e22 Spack environments can concretize specs together (#11372)
This PR adds a 'concretize' entry to an environment's spec.yaml file
which controls how user specs are concretized. By default it is
set to 'separately' which means that each spec added by the user is
concretized separately (the behavior of environments before this PR).
If set to 'together', the environment will concretize all of the
added user specs together; this means that all specs and their
dependencies will be consistent with each other (for example, a
user could develop code linked against the set of libraries in the
environment without conflicts).

If the environment was previously concretized, this will re-concretize
all specs, in which case previously-installed specs may no longer be
used by the environment (in this sense, adding a new spec to an
environment with 'concretize: together' can be significantly more
expensive).

The 'concretize: together' setting is not compatible with Spec
matrices; this PR adds a check to look for multiple instances of the
same package added to the environment and fails early when
'concretize: together' is set (to avoid confusing messages about
conflicts later on).
2019-10-07 09:53:23 -07:00
Adam J. Stewart
c8c795e7db watch: added new package (#13044) 2019-10-07 11:11:17 +02:00
Paul
7d0e7efabb Added go 1.13.1 and 1.12.10 (#12977) 2019-10-06 20:22:05 -05:00
Denis Davydov
79bd6bbd04 gnuplot: add 5.2.7 and fix qt dep (#13058) 2019-10-06 14:28:34 -05:00
Matthias Wolf
3d247d9567 freeimage: new package (#13049)
* freeimage: new package

* Address comments.

* Whitespace
2019-10-06 09:20:29 -05:00
Ruben Di Battista
ba72114ba2 unrar: Add package (#12908) 2019-10-06 09:16:25 -05:00
Oliver Breitwieser
f34162a5b8 Add missing py-contextlib2 (#13056)
Change-Id: I8e0a90d4aa2c9f46230a6fe35ce5f4fa44672faf
2019-10-06 09:15:29 -05:00
Denis Davydov
070a536e49 qt: help pick up dependencies (#11172)
* qt: help pick up dependencies

* qt: add 5.12.5
2019-10-05 21:13:38 -05:00
Pariksheet Nanda
19e6f55647 doc: fix #12245 non-functional libdwarf dependency (#12515)
Applying accepted fix from spack/spack.io#4
2019-10-05 21:07:18 -05:00
Michael Kuhn
bdb92f2d91 Consistently support pkg-config files in share subdirectory (#12838)
While the build environment already takes share/pkgconfig into account,
the generated module files etc. only consider lib/pkgconfig and
lib64/pkgconfig.
2019-10-05 21:03:35 -05:00
t-karatsu
c6b8d79ea6 Package/fujitsu mpi (#12807)
* fujitsu-mpi: commit new package

* Add homepage.

* * Modified the MPI commands to a simple form.
* Unnecessary processing has been deleted.

* Add conflict for all compilers except the Fujitsu compiler.

* Fix typo.

* Delete versions.

* Delete conditions for specifying the Fujitsu compiler.
2019-10-05 20:58:43 -05:00
Adam J. Stewart
608f732101 expect: fix darwin install name (#13042)
* expect: fix darwin install name

* Fix expect binary as well
2019-10-05 20:37:44 -05:00
Teodor Nikolov
e78ca66087 New package: cxxopts (#13035)
* New package: cxxopts

* Use +unicode instead of unicode=True

- Make the unicode option more explicit

* [cxxopts] Fix white space warnings
2019-10-05 20:36:59 -05:00
Adam J. Stewart
c45ecafd71 procps: new package (#13043) 2019-10-05 11:39:55 +02:00
Massimiliano Culpo
6a1021b81c bugfix: issue with custom dotkit root in config.yaml (#13046)
When removing support for dotkit in #11986 the code trying to set the
paths of the various module files was not updated to skip it. This
results in a failure because of a key error after the deprecation
warning is displayed to user.

This commit fixes the issue and adds a unit test for regression.
Note that code for Spack chains has been updated accordingly but
no unit test has been added for that case.
2019-10-04 23:42:21 -07:00
Federico Ficarelli
a362cf5ff6 grpc: new package (#13054)
* Add grpc@1.23.1

* Let version in url match actual one
2019-10-04 18:42:09 -05:00
Andreas Baumbach
e366f6ba39 llvm: update link to the document explaining codesign (#13047)
Change-Id: I01242cbb43b0c62a659739a5d7e9d998dd27e794
2019-10-04 13:31:43 -07:00
Robert Maynard
b1cdf8bd57 Update the VTK-m package with better defaults and cuda corrections (#12850) 2019-10-04 15:12:58 -04:00
Cody Balos
3cb4547348 superlu-dist: add openmp variant (#13052) 2019-10-04 13:48:56 -05:00
Toyohisa Kameyama
cb89949018 migrate: add zlib dependency. (#13039)
* migrate: add zlib dependency.

* flake8.

* autotools related tools change to build.
2019-10-04 13:14:09 -05:00
Felix Thaler
437236781d LLVM 9.0.0 (#13050) 2019-10-04 09:56:12 -07:00
Massimiliano Culpo
2cd800306d fftw: simplify the recipe and make use of specific targets (#12889)
* fftw: grouped precisions in a single variant

* fftw: simd options are now based on target features and not on variants

* fftw: simplified computing the selected precisions
2019-10-03 22:32:42 -05:00
t-karatsu
46e319ecd4 boost: Use gcc toolset for bootstrap with Fujitsu compiler. (#12876) 2019-10-03 22:20:55 -05:00
Toyohisa Kameyama
938bae1ab6 graphmap: add zlib dependency. (#13031) 2019-10-03 22:20:13 -05:00
Toyohisa Kameyama
b89fa3e01a fastqvalidator: add zlib dependency and Removes erroneous deletes in Chromosome (#13030) 2019-10-03 22:19:58 -05:00
Toyohisa Kameyama
4046e10b95 hapcut2: add zlib dependency. (#13032) 2019-10-03 22:19:43 -05:00
Toyohisa Kameyama
2233a7b493 liblbxutil: Add zlib dependency. (#13033) 2019-10-03 22:19:22 -05:00
Toyohisa Kameyama
bb1d0ff6fb metabat: Add zlib and ncurses dependency. (#13034) 2019-10-03 22:18:55 -05:00
Toyohisa Kameyama
58a64f69e7 muse: add zlib dependency. (#13040) 2019-10-03 22:18:27 -05:00
Toyohisa Kameyama
c97be22ff5 ngmlr: add zlib dependency. (#13041) 2019-10-03 22:18:12 -05:00
Andreas Baumbach
4e7ea627c8 fix ipykernel dependency, newer versions are python3-only (#13019)
* fix ipykernel dependency, newer versions are python3-only

* Update var/spack/repos/builtin/packages/py-ipykernel/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/py-ipykernel/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-03 22:17:16 -05:00
George Hartzell
882843974b Update cctools to v7.0.18 (#13037)
- add version/checksum info for v7.0.18
- update checksum for v6.1.1 to use sha256, while I have the editor
  open...
2019-10-03 18:57:20 -05:00
Owen Solberg
bef702d0f3 updated manta checksum (#13038) 2019-10-03 18:23:47 -05:00
Adam J. Stewart
69acb024a5 Add py-flye 2.6 (#13025) 2019-10-03 10:32:00 -05:00
Adam J. Stewart
24f8d1042b Update compilers.yaml location in Getting Started docs (#13029) 2019-10-03 10:31:32 -05:00
Adam J. Stewart
dac34147c0 Add EasyBuild 4.0.0 (#13024)
* Add EasyBuild 4.0.0

* Update homepage, remove no longer required deps

* Replace version ranges with fixed versions
2019-10-03 16:48:42 +02:00
Chuck Atkins
b973f038fd Update ECP Data & Vis SDK packages (#13027)
* ecp-io-sdk: Add faodel and sort variants

* ecp-viz-sdk: Re-enable catalyst, sort variants, turn on by default

* ecp-io-sdk and ecp-viz-sdk: Fix dependency variants
2019-10-03 10:05:02 -04:00
Massimiliano Culpo
78577c0a90 Generic x86_64 code compiled with GCC uses non deprecated mtune flags (#13022)
fixes #12928
2019-10-03 10:31:03 +02:00
Massimiliano Culpo
76b9c56110 Remove support for generating dotkit files (#11986)
Dotkit is being used only at a few sites and has been deprecated on new
machines. This commit removes all the code that provide support for the
generation of dotkit module files.

A new validator named "deprecatedProperties" has been added to the
jsonschema validators. It permits to prompt a warning message or exit
with an error if a property that has been marked as deprecated is
encountered.

* Removed references to dotkit in the docs
* Removed references to dotkit in setup-env-test.sh
* Added a unit test for the 'deprecatedProperties' schema validator
2019-10-02 22:15:01 -07:00
Miroslav Stoyanov
b11984767b added tasmanian version 7.0 to spack (#13003) 2019-10-02 18:35:49 -05:00
Sinan
b084d095bc New package: mapnik (#12708) 2019-10-02 13:50:57 -07:00
Tiziano Müller
d99b92febd libint + cp2k: 2-stage build with 'tune' and 'fortran' variants (#12475)
* libint: switch to 2-stage build for 2.6.0+

* libint: add tune and fortran variants

* cp2k: add support for libint >= 2.0

* cp2k: use pkg-config for linking libxc
2019-10-02 21:31:19 +02:00
Toyohisa Kameyama
da18ac3a0f cdhit: add zlib dependency. (#13015)
* cdhit: add zlib dependency.

* Add zlib variant.
2019-10-02 12:55:05 -05:00
Toyohisa Kameyama
b85ff04681 denovogear: Add missing zlib depenbdency and fix open handling error. (#13017) 2019-10-02 12:54:50 -05:00
Toyohisa Kameyama
58c01792ef cnpy: add zlib dependency. (#13016) 2019-10-02 12:54:31 -05:00
Dan Lipsa
210dd594a1 Add cuda to paraview build. (#12996) 2019-10-02 12:00:03 -05:00
George Hartzell
21e95e4141 Singularity 3.4.1 still needs the makefile patch (#13008)
* Singularity 3.4.1 still needs the makefile patch

* Constrain build patch to 3.4.0:3.4.1
2019-10-02 11:59:11 -05:00
Sinan
afca223b3d new package: openldap (#12748)
* new package: openldap

* fix mistake

* remove template text

* fix build error involving perl

* flake8

* improvements

* introduce multi valued variant for tls support

* improve tls variant

* overwrite build phase as opposed install

* improve style
2019-10-02 11:58:46 -05:00
Toyohisa Kameyama
1550d5cae6 ants: missing zlib dependency and fix working directory in install. (#13010) 2019-10-02 11:58:25 -05:00
Toyohisa Kameyama
7d9514d3fa breakdancer: missing ncurses dependency. (#13011) 2019-10-02 11:57:05 -05:00
Toyohisa Kameyama
d238b9d394 breseq: fix dependency and limit compiler version. (#13013) 2019-10-02 11:56:37 -05:00
t-karatsu
a3a0e1cd2e fujitsu compiler: Add 'required_libs'. (#13014) 2019-10-02 11:55:08 -05:00
Andreas Baumbach
64ff27626e update py-jupyter-notebook to use the real releases (#13020)
* github releases are not released versions, but from-source
  releases
* they lack the mimification of the JS/CSS components and as
  such require node-js and npm, this conflicts with python@3:
* this commit
  * drops the from-source dependencies on node-js and npm and
  * updates the checksums to the correct sha256 hashes of the
    pypi releases. The pypi-tarballs are different
2019-10-02 11:39:55 -05:00
Patrick Gartung
2a739ed03e Replace expensive store.reindex() call with db.add() call. (#13021) 2019-10-02 11:30:28 -05:00
Axel Huebl
bec2830802 ZFP: CMake Package (#12999)
* ZFP: CMake Package

ZFP is primarily build via CMake, which will have all install logic
and configuration files generated.
The 0.5.0 release did not support this yet, so we toss it.

* Patch ADIOS1: ZFP 0.5.1+ support

* ZFP: Expose all CMake variants
2019-10-01 23:28:36 -07:00
Patrick Gartung
9dfec4a57c 'spack buildcache list' should show all buildaches available. (#13002)
* binary cache: show all packages for compatible differing targets

* Don't restrict spack buildcache list to arch or os

* Fix from merge conflict
2019-10-01 22:54:22 -05:00
George Hartzell
22e75b77e3 direnv: add info for version 2.20.0 (#13007) 2019-10-01 22:34:14 -05:00
Massimiliano Culpo
1b18ec90ab Add all compatible system types directory to module paths
fixes #12915
closes #12916

Since Spack has support for specific targets it might happen that
software is built for targets that are not exactly the host because
it was either an explicit user request or the compiler being used is
too old to support the host.

Modules for different targets are written into different directories
and by default Spack was adding to MODULEPATH only the directory
corresponding to the current host. This PR modifies this behavior to
add all the directories that are **compatible** with the current host.
2019-10-01 19:18:27 -07:00
Sinan
d20e3517c2 new package: py-python-ldap (#12599)
* new package: py-python-ldap

* fix dependency types

* improvements

* Update var/spack/repos/builtin/packages/py-python-ldap/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/py-python-ldap/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* add openldap dependency
2019-10-01 20:59:53 -05:00
Sinan
91488ed8f5 New package: py-python-mapnik (#12786) 2019-10-01 18:37:34 -07:00
codeandkey
5c2b01ebcf picard: add 2.20.8 2019-10-01 18:19:37 -07:00
Daryl W. Grunau
248bc17bb0 go-md2man: disable module-mode (#12985)
* go-md2man: disable module-mode

* Update var/spack/repos/builtin/packages/go-md2man/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-01 19:17:10 -05:00
Eduardo Arango
c1ecd037d7 add singularity 3.4.1 (#12995)
* add singularity 3.4.1

Signed-off-by: ArangoGutierrez <eduardo@sylabs.io>

* revert some changes

Signed-off-by: ArangoGutierrez <eduardo@sylabs.io>

* add maintainers list to pkg singularity

Add @alalazo and me to the Singularity maintainers list

* Update var/spack/repos/builtin/packages/singularity/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/singularity/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/singularity/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-01 19:16:20 -05:00
Greg Becker
b92977492d binary cache: show all packages for compatible differing targets (#12943) 2019-10-01 17:03:28 -05:00
Axel Huebl
436afdd2a8 Dataspaces: Fix Fetch URL, Savanna Spec (#13001) 2019-10-01 14:52:44 -07:00
Peter Scheibel
3575f9b382 GCC package: don't set CC etc. based on bin dir if it doesn't exist (#13000)
7bcb306 updated setup_environment in the GCC package to examine the
bin/ directory to find alternatively-named instances of CC, but this
failed to account for when GCC was being installed and failed when
it attempted to list the not-yet-existing installation prefix. This
commit updates the logic to skip this search if the bin/ directory
doesn't exist.
2019-10-01 14:29:01 -07:00
Massimiliano Culpo
245c1bb208 libaio: fixed a condition that checks whether we are running on OS X (#12976)
* libaio: fixed a condition that checks whether we are running on OS X

* libaio: simplified package by adding an explicit conflict for darwin

* libaio: added information to the docstring

* fio: added version 3.16, added conflict when using libaio, docstring

* lvm2: conflict due to libaio dep, improved docstring, simpler install

* mariadb: conflict due to libaio dep, improved docstring, version 10.4.7

* mariadb: the dependency on libaio is now conditional, removed conflict

* mariadb: fixed a typo in previous commit

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* libaio: turned into a MakefilePackage
2019-10-01 15:35:50 -05:00
Jeffrey Salmond
76178f31ca When removing a file from a view, don't fail if it doesn't exist (#12960)
Sometimes when remove_file is called on a link, that link is missing
(perhaps ctrl-C happened halfway through a previous action). As
removing a non-existent file is no problem, this patch changes the
behavior so Spack continues rather than stopping with an error.

Currently you would see

  ValueError: /path/to/dir is not a link tree!

and now it continues with a warning.
2019-10-01 10:29:10 -07:00
Jimmy Tang
a7e64e5396 Kaldi package: add version 7637de7 and egs (#12911) 2019-10-01 10:24:03 -07:00
Jeffrey Salmond
5868e0f5f2 add new mercurial versions (#12997) 2019-10-01 12:08:28 -05:00
Christopher Edsall
82a3ee0868 Update chapel to current (1.19 -> 1.20) (#12991) 2019-10-01 11:47:57 -05:00
Axel Huebl
10e4d611a5 ADIOS2: 2.5.0 (#12987)
Add the latest ADIOS2 release, v2.5.0 .
2019-10-01 10:49:52 -05:00
Satish Balay
b9a860820a hypre: add version 2.18.0 (#12992) 2019-10-01 10:48:40 -05:00
Mark Olesen
f939697863 add adios2 dependency and configuration for newest OpenFOAM (#12993) 2019-10-01 10:48:14 -05:00
noguchi-k
5b4040ea36 libcerf:add CFLAGS for fujitsu compiler (#12990)
* libcerf:add CFLAGS for fujitsu compiler

* fix for flake8
2019-10-01 08:54:01 -05:00
egreen77
cfc17e9506 Update nano (#12980) 2019-09-30 16:27:29 -05:00
Adam J. Stewart
5b2b0ee9a3 Revert "update neovim (#12965)" (#12978)
This reverts commit 86a85b7eb2.
2019-09-30 13:18:27 -05:00
Satish Balay
c70f9bffe2 petsc, slepc: add new versions - 3.12.0 (#12979) 2019-09-30 13:18:11 -05:00
Seth R. Johnson
7bcb306d4a Fix GCC environment variables for external installations (#12454)
Unlike the compiler binary name search logic, the `setup_environment` in
GCC's package assumes the compiler names are *exactly* `gcc`, `g++`,
etc. In many external installations (Homebrew, Macports) the
installation includes only *suffixed* versions such as `gcc-9`.

This patch uses the GCC compiler search suffixes to actually locate the
correct filenames for the installed compilers, allowing the
Spack-generated module file to have useful definitions of CC, CXX, etc.

It also allows for the possibility that the user's external installation
of GCC is compiled without Fortran support, in which case the `FC`
environment variables are not defined.
2019-09-30 11:02:32 -07:00
t-karatsu
139eaa1306 otf2: add configure args to specify compiler commands. (#12711)
* otf2: add configure args to specify compiler commands.

* Modify the reference of the compile commands.
2019-09-30 08:18:09 -05:00
Todd Gamblin
a12c032509 make license check slightly more lenient
bin/spack now needs to have a "-*- python -*-" line after the shebang, so
that emacs will interpret it as a python file instead of as a shell
script.  Add one line to the license check limit to accommodate this.
2019-09-29 09:32:04 -07:00
Todd Gamblin
97980a8f94 prefer Python 3 to Python 2 for running Spack
The Python landscape is going to be changing in 2020, and Python 2 will
be end of life. Spack should *prefer* Python 3 to Python 2 by default,
but we still need to run on systems that only have Python2 available.

This is trickier than it sounds, as on some systems, the `python` command
is `python2`; on others it's `python3`, and RHEL8 doesn't even have the
`python` command.  Instead, it makes you choose `python3` or
`python2`. You can thus no longer make a simple shebang to handle all the
cases.

This commit makes the `spack` script bilingual.  It is still valid
Python, but its shebang is `#!/bin/sh`, and it has a tiny bit of shell
code at the beginning to pick the right python and execute itself with
what it finds.

This has a lot of advantages.  I think this will help ensure that Spack
works well in Python3 -- there are cases where we've missed things
because Python2 is still the default `python` on most systems.  Also,
with this change, you do not lose the ability to execute the `spack`
script directly with a python interpreter.  This is useful for forcing
your own version of python, running coverage tools, and running profiling
tools.  i.e., these will not break with this change:

```console
$ python2 $(which spack) <args>
$ coverage run $(which spack) <args>
$ pyinstrument $(which spack) <args>
```

These would not work if we split `spack` into a python file and a shell
script (see #11783).  So, this gives us the best of both worlds.  We get
to control our interpreter *and* remain a mostly pure python executable.
2019-09-29 09:32:04 -07:00
Glenn Johnson
c56f03a3ba The perl-uri-escape package duplicates perl-uri (#12971)
* The perl-uri-escape package duplicates perl-uri

The Perl URI::Escape module is in the Perl URI package so the Spack
perl-uri-escape package is a duplicate of the perl-uri package. This PR
does the following:

- replace `depends_on('perl-uri-escape')` with `depends_on('perl-uri')`
  in packages that dependend on perl-uri-escape
- add the version from perl-uri-escape to perl-uri
- remove the unneeded dependency from perl-uri
- remove the perl-uri-escape package

* Reinstated perl-test-needs dependency

Put the perl-test-needs dependency for perl-uri back in but set it to
type='test'.

* For tests to succeed the type must be ('build', 'test')
2019-09-29 09:27:42 -05:00
Massimiliano Culpo
9117dfd118 Add all the 'generic' architectures that are mentioned in recipes (#12958)
LLVM, mesa and other packages check for these generic
microarchitectures. One solution is to let Spack know they exist.
2019-09-28 21:47:05 -07:00
Massimiliano Culpo
467261803f raxml: simplified recipe by removing SIMD variants (#12952)
Now the support for SSE3 or AVX is tested on the selected target
2019-09-28 13:45:01 -05:00
t-karatsu
c065c25a4c bowtie: fix for aarch64, and bugfix about c++11-narrowing. (#12953) 2019-09-28 13:44:02 -05:00
Massimiliano Culpo
4cebc68f06 vdt: simplified recipe by removing SIMD variants (#12954)
Now the support for SSE3 or AVX is tested on the selected target
2019-09-28 13:41:57 -05:00
Jaroslav Hron
7e9365036f correct with-xxx-lib= options (#12964) 2019-09-28 13:39:45 -05:00
Patrick Schratz
86a85b7eb2 update neovim (#12965) 2019-09-28 13:28:27 -05:00
Shintaro Iwasaki
3776eccc4b bolt: add a new version, 1.0rc2 (#12966) 2019-09-28 13:27:33 -05:00
Daryl W. Grunau
8db94bcc86 eospac: laws.lanl.gov -> laws-green.lanl.gov (#12970) 2019-09-27 17:28:38 -07:00
Ross Miller
c49c37af9b py-adios package: restrict python dependency to <=3.6.x (#12932)
The adios code (currently) won't compile against the Python 3.7 C API.
This change adds a dependency on 3.6 or less.
2019-09-27 17:19:36 -07:00
Kevin Huck
b4c28182dc Tau package: turn off unsupported variants by default on OSX (#12890) 2019-09-27 17:16:44 -07:00
G-Ragghianti
61d41eea7f New package: libibumad (#12886) 2019-09-27 17:02:34 -07:00
Glenn Johnson
fc99eddb12 New package: maker and dependencies (#12904) 2019-09-27 14:59:58 -07:00
Glenn P Johnson
08a6577861 Fix perl build when using Build.PL
This fixes #12852 where perl builds that use Build.PL will fail when the
shebang of the Build script produced from the configure step is too
long.
2019-09-26 13:38:13 -07:00
Seth R. Johnson
5201d2615e qt4: fix 'arch' string due to microarchitecture change (#12957)
qt4 fails to build because it's expecting something like 'x86_64' rather 
than 'broadwell'.
2019-09-26 21:15:17 +02:00
Patrick Gartung
7dae058f91 Relocate mach-o binaries using macholib on linux. (#12946)
Changes deps and rpaths for bins and libs, changes id for libs.
2019-09-26 13:04:58 -05:00
eugeneswalker
950338aa92 add --no-deps opt to buildcache-create (#12956) 2019-09-26 12:23:59 -05:00
Patrick Gartung
321e956fa9 External: add macholib and altgraph needed to relocate Mach-o binaries on Linux (#12909) 2019-09-26 11:48:22 -05:00
Massimiliano Culpo
90236bc9f5 Update target comparison semantic for a few packages (#12947)
Use spec.target.family instead of spec.architecture.target
2019-09-26 10:25:12 +02:00
Massimiliano Culpo
31e5318c24 Removed references to '(-march|-mtune|-mcpu)=native' (#12948)
Now that Spack injects microarchitecture specific optimizations for
the selected target, packages should avoid adding flags that could
step over those.
2019-09-26 10:02:08 +02:00
Massimiliano Culpo
78d051b534 parsimonator: simplified recipe by removing SIMD variants (#12949)
Now the support for SSE3 or AVX is tested on the selected target
2019-09-26 09:33:18 +02:00
Seth R. Johnson
f2967b6c16 New package: flibcpp (Fortran bindings to C++ standard library) (#12926) 2019-09-25 19:25:24 -07:00
liuyangzhuan
b384504218 butterflypack package: add version 1.0.3 (#12927) 2019-09-25 19:16:47 -07:00
Glenn Johnson
dd626a0f07 interproscan package: add version 4.8, patch for version 5 (#12897)
This PR adds interproscan-4.8, which has a completely different build
system than version 5. Note that this builds for running on a host as
opposed to a queue system. I am fairly certain that a queue system can
be configured later.

This PR also adds a patch for intrproscan-5 to build when the user
building the packages has a large GID by setting posix mode for tar.
2019-09-25 19:04:57 -07:00
Sinan
c5860d89b7 libspatialite package: add version 3.0.1 and missing dependencies (#12843) 2019-09-25 18:48:48 -07:00
Sinan
507b28de18 py-imageio package: add versions 2.4.1 and 2.5.0 (#12884) 2019-09-25 18:44:57 -07:00
Matthieu Dorier
e6cae978b8 llvm, mesa: update target comparison semantics (#12914)
* llvm: fixed issues with syntax and formatting
  * use spec.architecture.target.family
  * use spec.target instead of spec.architecture.target
* mesa: use == instead of __contains__
2019-09-25 16:41:02 -07:00
Adam J. Stewart
4e858e24b0 libflame: fix macOS build (#12950) 2019-09-25 18:37:33 -05:00
Matthieu Dorier
71cc29691b openblas: fixed a query to target family (#12910) 2019-09-25 22:15:23 +02:00
Christoph Junghans
ccfe8aaf76 portage: fix RelWithDebInfo build (#12944) 2019-09-25 11:29:43 -06:00
Christoph Junghans
e123058721 kokkos-kernels: initial commit (#12934) 2019-09-25 09:00:01 -06:00
Mathias Jacquelin
7a11a2ccdb Upcxx package: remove warning, add version 2019.9.0 (#12880)
A function added to this package ran as part of importing it and
printed a warning for most Spack invocations, this removes the
warning message.

Also:

* Use compilers directly instead of Spack compiler wrappers (since
  references to the compiler are embedded in text and binary files
  of the installation)
* Add 'cross' variant for setting CROSS environment variable for
  build
* Set UPCXX_INSTALL for generated module files
* Set UPCXX_GASNET_CONDUIT/UPCXX_NETWORK in generated module files
  on Cray systems
* Also set UPCXX_NETWORK in build environment for Cray systems
2019-09-24 13:25:05 -07:00
Adam J. Stewart
065cbe89fe Fix "specific target" detection in Python 3 (#12906)
The output of subprocess.check_output is a byte string in Python 3. This causes dictionary lookup to fail later on.

A try-except around this function prevented this error from being noticed. Removed this so that more errors can propagate out.
2019-09-24 09:47:54 -07:00
Simo Tuomisto
6cd5edacca heaptrack: added new package at version 1.1.0 (#12844) 2019-09-24 15:54:23 +02:00
Patrick Gartung
6dd9dbc071 Change get_patchelf to immediately return patchelf path if found (#12925) 2019-09-24 08:38:19 -05:00
Glenn Johnson
10d5e90e65 Add missing dependency to perl-xml-parser (#12903)
This PR adds the following dependency:

+    depends_on('perl-libwww-perl', type=('build', 'run'))
2019-09-24 12:51:55 +02:00
Glenn Johnson
fa5a9cd878 Added missing dependencies for perl-list-moreutils (#12900)
The following dependencies were added:

+    depends_on('perl-exporter-tiny', type=('build', 'run'))
+    depends_on('perl-list-moreutils-xs', type=('build', 'run'))
2019-09-24 12:45:39 +02:00
Glenn Johnson
b508eaa806 Added depencies to perl-libwww-perl (#12899)
The following dependencies are needed for perl-libwww-perl according to
https://metacpan.org:

+    depends_on('perl-encode-locale', type=('build', 'run'))
+    depends_on('perl-file-listing', type=('build', 'run'))
+    depends_on('perl-html-parser', type=('build', 'run'))
+    depends_on('perl-http-cookies', type=('build', 'run'))
+    depends_on('perl-http-daemon', type=('build', 'run'))
+    depends_on('perl-http-date', type=('build', 'run'))
+    depends_on('perl-http-message', type=('build', 'run'))
+    depends_on('perl-http-negotiate', type=('build', 'run'))
+    depends_on('perl-lwp-mediatypes', type=('build', 'run'))
+    depends_on('perl-net-http', type=('build', 'run'))
+    depends_on('perl-try-tiny', type=('build', 'run'))
+    depends_on('perl-uri', type=('build', 'run'))
+    depends_on('perl-www-robotrules', type=('build', 'run'))
2019-09-24 12:45:02 +02:00
Glenn Johnson
ca11ce06b8 Add missing dependencies to perl-http-daemon (#12898)
Added the following dependencies:

+    depends_on('perl-http-date', type=('build', 'run'))
+    depends_on('perl-module-build-tiny', type='build')
2019-09-24 12:44:28 +02:00
Axel Huebl
1d316c4eb3 spdlog: added version 1.4.1 (#12917)
Add newest release with ability to pre-build as shared or static
library.
2019-09-24 12:19:19 +02:00
t-karatsu
9aca0a17f4 Fujitsu compilers: added 'verbose_flag' method (#12922) 2019-09-24 11:17:29 +02:00
Todd Gamblin
18d63a239f bugfix: use string keys to set preferred targets (#12921)
Preferred targets were failing because we were looking them up by
Microarchitecture object, not by string.

- [x] Add a call to `str()` to fix target lookup.
- [x] Add a test to exercise this part of concretization.
- [x] Add documentation for setting `target` in `packages.yaml`
2019-09-24 10:18:48 +02:00
Massimiliano Culpo
2468ccee58 AMD: fix architecture hierarchy (zen) (#12913)
* microarchitectures: zen starts from x86_64, not from excavator
* Unit tests: fixed a test that is wrong with the new modeling
* microarchitectures: fixed features and inheritance for 15h family

bulldozer doesn't inherit from barcelona (10h) + added xop, lwp and tbm
instruction sets to the 15h family (it distinguish the family from 17h)
2019-09-23 21:54:13 -07:00
Adam J. Stewart
53db1eafb9 Fix installation permissions on BLIS and libflame libs (#12919)
* Fix installation permissions on BLIS and libflame libs

* Fix undefined symbols
2019-09-23 18:54:47 -05:00
Adam J. Stewart
d6555f64b0 Fix detection of Apple Clang 11.0.0 (#12912) 2019-09-23 17:25:33 -05:00
Jed Brown
958b81a564 libceed package: add version 0.5 (#12875)
Also enable vectorization via -O3 for gcc/clang
2019-09-23 10:38:44 -07:00
Tamara Dahlgren
08e77e1b41 tests: more template creation tests (#12882)
Addresses #12804 

This PR adds the creation of the remaining (16) templates to ensure we can create them with expected content. The goal is to facilitate catching during testing.
2019-09-23 10:18:50 -07:00
Seth R. Johnson
27d4e9a1d1 QT package: only enable fontconfig when freetype is enabled (#12574)
The 'fontconfig' option is only valid when freetype is enabled.
2019-09-23 10:04:29 -07:00
Todd Gamblin
b4e148b562 externals: add note to jsonschema about modifications (#12895) 2019-09-22 09:43:57 -05:00
Xavier Delaruelle
53ab298e88 environment-modules: add version 4.3.1 (#12893) 2019-09-21 21:32:27 -05:00
Todd Gamblin
7a1dd517b8 externals: avoid importing requests in jsonschema
Spack doesn't need `requests`, and neither does `jsonschema`, but
`jsonschema` tries to import it, and it'll succeed if `requests` is on
your machine (which is likely, given how popular it is).  This commit
removes the import to improve Spack's startup time a bit.

On a mac with SSD, the import of requests is ~28% of Spack's startup time
when run as `spack --print-shell-vars sh,modules` (.069 / .25 seconds),
which is what `setup-env.sh` runs.

On a Linux cluster where Python is mounted from NFS, this reduces
`setup-env.sh` source time from ~1s to .75s.

Note: This issue will be eliminated if we upgrade to a newer `jsonschema`
(we'd need to drop Python 2.6 for that).  See
https://github.com/Julian/jsonschema/pull/388.
2019-09-21 17:57:36 -07:00
Paul
ef652ee42a czmq package: add autoreconf stage (#12846) 2019-09-20 18:14:41 -07:00
Jordan Ogas
d9c22e3f9c charliecloud package: add version 0.11 and test dependency (#12861) 2019-09-20 18:01:40 -07:00
Sinan
326c2718d5 New package: py-gast (#12874) 2019-09-20 17:59:50 -07:00
t-karatsu
e26b23e980 intel-tbb: fix typo. 2019-09-20 17:53:23 -07:00
Sinan
af8f245f48 py-protobuf package: fix import error for Python 2.x (#12873) 2019-09-20 17:52:11 -07:00
Glenn Johnson
5397606b34 Add --known-targets to bash completion for arch command (#12887)
This PR adds the new --known-targets flag to the `spack arch` command.
2019-09-20 20:09:44 +02:00
Scott Wittenburg
db4d52d923 Fix how 'gpg --list-secret-keys ...' output is parsed 2019-09-20 11:33:58 -06:00
Gregory Becker
c43f105359 targets: add mic_knl target to microarchitectures.json
- This is needed to support Cray machines -- we need an architecture
  mic_knl > x86_64

- We used Cray's naming scheme for this target to make it work seamlessly
  with the module-based detection sccheme on Cray.  mic_knl is pretty
  much dead, so this will be the last succh target.  We will need to work
  wtih Cray and other vendors in the future.
2019-09-20 00:51:37 -07:00
Massimiliano Culpo
7daf860991 targets: adjust packages to use new specific targets semantics
Seamless translation from 'target=<generic>' to either
- target.family == <generic> (in methods)
- 'target=<generic>:' (in directives)

Also updated docs to show ranges in directives.
2019-09-20 00:51:37 -07:00
Massimiliano Culpo
3c4322bf1a targets: Spack targets can now be fine-grained microarchitectures
Spack can now:

- label ppc64, ppc64le, x86_64, etc. builds with specific
  microarchitecture-specific names, like 'haswell', 'skylake' or
  'icelake'.

- detect the host architecture of a machine from /proc/cpuinfo or similar
  tools.

- Understand which microarchitectures are compatible with which (for
  binary reuse)

- Understand which compiler flags are needed (for GCC, so far) to build
  binaries for particular microarchitectures.

All of this is managed through a JSON file (microarchitectures.json) that
contains detailed auto-detection, compiler flag, and compatibility
information for specific microarchitecture targets.  The `llnl.util.cpu`
module implements a library that allows detection and comparison of
microarchitectures based on the data in this file.

The `target` part of Spack specs is now essentially a Microarchitecture
object, and Specs' targets can be compared for compatibility as well.
This allows us to label optimized binary packages at a granularity that
enables them to be reused on compatible machines.  Previously, we only
knew that a package was built for x86_64, NOT which x86_64 machines it
was usable on.

Currently this feature supports Intel, Power, and AMD chips. Support for
ARM is forthcoming.

Specifics:

- Add microarchitectures.json with descriptions of architectures

- Relaxed semantic of compiler's "target" attribute.  Before this change
  the semantic to check if a compiler could be viable for a given target
  was exact match. This made sense as the finest granularity of targets
  was architecture families.  As now we can target micro-architectures,
  this commit changes the semantic by interpreting as the architecture
  family what is stored in the compiler's "target" attribute. A compiler
  is then a viable choice if the target being concretized belongs to the
  same family. Similarly when a new compiler is detected the architecture
  family is stored in the "target" attribute.

- Make Spack's `cc` compiler wrapper inject target-specific flags on the
  command line

- Architecture concretization updated to use the same algorithm as
  compiler concretization

- Micro-architecture features, vendor, generation etc. are included in
  the package hash.  Generic architectures, such as x86_64 or ppc64, are
  still dumped using the name only.

- If the compiler for a target is not supported exit with an intelligible
  error message. If the compiler support is unknown don't try to use
  optimization flags.

- Support and define feature aliases (e.g., sse3 -> ssse3) in
  microarchitectures.json and on Microarchitecture objects. Feature
  aliases are defined in targets.json and map a name (the "alias") to a
  list of rules that must be met for the test to be successful. The rules
  that are available can be extended later using a decorator.

- Implement subset semantics for comparing microarchitectures (treat
  microarchitectures as a partial order, i.e. (a < b), (a == b) and (b <
  a) can all be false.

- Implement logic to automatically demote the default target if the
  compiler being used is too old to optimize for it. Updated docs to make
  this behavior explicit.  This avoids surprising the user if the default
  compiler is older than the host architecture.

This commit adds unit tests to verify the semantics of target ranges and
target lists in constraints. The implementation to allow target ranges
and lists is minimal and doesn't add any new type.  A more careful
refactor that takes into account the type system might be due later.

Co-authored-by: Gregory Becker <becker33.llnl.gov>
2019-09-20 00:51:37 -07:00
Gregory Becker
dfabf5d6b1 targets: first pass at target detection for linux
Add llnl.util.cpu_name, with initial support for detecting different
microarchitectures on Linux.  This also adds preliminary changes for
compiler support and variants to control the optimizatoin levels by
target.

This does not yet include translations of targets to particular
compilers; that is left to another PR.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2019-09-20 00:51:37 -07:00
Patrick Gartung
a940ff34d7 Put back the use of otool and install_name_tool when running on macOS. Only use machotools on linux. (#12867)
Move verbose messages to debug level

get_patchelf should return None for test platform as well because create_buildinfo invokes patchelf to get rpaths.
2019-09-19 17:16:26 -05:00
Valentin Clement (バレンタイン クレメン)
83bea039cf CLAW Compiler: added version 2.0.1 (#12878) 2019-09-19 18:27:22 +02:00
Gregory Becker
754ef8796e Ignore git *.orig files and emacs backup files 2019-09-18 23:51:27 -07:00
Adam J. Stewart
cbbd384628 blis: fix darwin install name (#12869) 2019-09-18 22:46:34 -05:00
Adam J. Stewart
a4e585bad5 googletest: fix darwin install name (#12871) 2019-09-18 22:46:16 -05:00
Adam J. Stewart
964500399b libkml: fix darwin install name (#12872) 2019-09-18 22:44:57 -05:00
Adam J. Stewart
b33d005267 wcslib: fix darwin install name (#12868) 2019-09-18 22:44:38 -05:00
Adam J. Stewart
1fe94748d2 diffutils: add missing libiconv dependency (#12866) 2019-09-18 15:36:41 -05:00
Julien Loiseau
cacbb4ff7a Correcting branch used for FleCSPH (#12865) 2019-09-18 14:00:47 -06:00
Adam J. Stewart
ec11574a02 Add SQLite 3.29.0 (#12862) 2019-09-18 14:36:41 -05:00
Adam J. Stewart
6d7e543cef GDAL: Add support for MKL driver (#12837) 2019-09-18 13:47:31 -05:00
Adam J. Stewart
680430df0f Add libkml package (#12836)
* Add libkml package

* googletest needs to be linked to RPATH
2019-09-18 13:46:45 -05:00
Adam J. Stewart
9a7b5ac7cb libunistring: add missing dependency on libiconv (#12863) 2019-09-18 13:37:19 -05:00
Adam J. Stewart
9d67ac2407 Add minizip package (#12835) 2019-09-18 12:53:01 -05:00
Adam J. Stewart
3eb0bcf4a1 Add uriparser package (#12834)
* Add uriparser package

* googletest needs to be linked to RPATH
2019-09-18 12:52:40 -05:00
Patrick Gartung
7c0c31361a Update buildcache creation and installation to allow mach-o binary relocation using py-machotools on linux or macos. (#12858)
Update py-machotools dependencies and versions.
2019-09-18 07:24:45 -05:00
Sinan
9807bb5d03 add a version (#12856) 2019-09-17 22:54:18 -05:00
Scott Wittenburg
56894b8805 Support yaml paths anywhere specs are handled on CLI (#12561)
Update command-line (CLI) parsing to understand references to yaml
files that store Spack specs. Where a file reference is encountered,
the full Spec in the file will be read in. A file reference may
appear anywhere that a spec could appear before. For example, if you
write "spack spec -y openmpi > openmpi.yaml" you may then install the
spec using the yaml file by running "spack install ./openmpi.yaml";
you can also refer to dependencies in this way (e.g.
"spack install foo^./openmpi.yaml").

There are two requirements for file references:

* A file path entered on the CLI must include a "/" even if the file
  exists in your current working directory. For example, if you
  create an openmpi.yaml file as above and run
  "spack install openmpi.yaml" from the same directory, it will
  report an error.
* A file path entered on the CLI must end with ".yaml"

This commit adds error messages to clearly inform the user of both
violations.
2019-09-17 19:45:37 -07:00
Greg Becker
eb4dd4a51a Boost: add libs property (#12849) 2019-09-17 20:30:29 -05:00
Sinan
02ae944c74 fix typo in version number (#12855) 2019-09-17 20:28:57 -05:00
Peter Scheibel
141a1648e6 implicit rpaths filtering (#12789)
* implicit_rpaths are now removed from compilers.yaml config and are always instantiated dynamically, this occurs one time in the build_environment module

* per-compiler list required libraries (e.g. libstdc++, libgfortran) and whitelist directories from rpaths including those libraries. Remove non-whitelisted implicit rpaths. Some libraries default for all compilers.

* reintroduce 'implicit_rpaths' as a config variable that can be used to disable Spack insertion of compiler RPATHs generated at build time.
2019-09-17 17:45:21 -05:00
Christoph Junghans
b11a98abf0 cmake: add v3.15.{2,3} (#12847) 2019-09-17 13:13:39 -06:00
George Hartzell
ae37896800 cryptsetup package: dont vendor libuuid in util-linux (#12839)
Fixes #12829

This adds a variant to the util-linux package that controls whether it
builds its own libuuid.  Variant defaults to True.  It enables other
packages to choose to get libuuid from the libuuid package instead.

This also changes the cryptsetup package to build util-linux with
~libuuid (so it uses an explicitly-Spack-built instance of libuuid
instead).
2019-09-17 11:22:10 -07:00
Adam J. Stewart
21e4b1752e Fix generic body during package creation (#12804)
Fixes incomplete change in #11981 

Use the proper variable (`body_def`) during package creation for package subclasses.
2019-09-17 09:37:46 -07:00
Adam J. Stewart
dce45aa299 Allow build to proceed with failed compiler lib detection (#12756)
Fixes #12732
Fixes #12767

c22a145 added automatic detection and RPATHing of compiler libraries
to Spack builds. However, in cases where the parsing/detection logic
fails this was terminating the build. This makes the compiler library
detection "best-effort" and reports an issue when the detection fails
rather than terminating the build.
2019-09-16 19:09:28 -07:00
Adam J. Stewart
5eac8130b3 Quote shell variable values (#12759)
This updates logic which sets shell variables to quote the values,
which is necessary when the value contains a space (e.g. PATH).
2019-09-16 11:10:36 -07:00
Adam J. Stewart
14ef0c238e Add py-pycbc package (#12823) 2019-09-16 13:10:02 -05:00
Adam J. Stewart
269f34c310 Add py-astropy 2.0.14 (#12816) 2019-09-16 13:09:30 -05:00
Adam J. Stewart
98eb8ef0af Add py-beautifulsoup4 4.8.0 (#12815) 2019-09-16 13:08:36 -05:00
Adam J. Stewart
94291ebd1a Add py-mpld3 package (#12822) 2019-09-16 13:08:17 -05:00
Adam J. Stewart
a08a7da413 Add py-asdf package (#12817) 2019-09-16 13:07:48 -05:00
Adam J. Stewart
fea315e274 Add py-bintrees package (#12818) 2019-09-16 13:07:21 -05:00
Adam J. Stewart
0885615e22 Add py-lscsoft-glue package (#12821) 2019-09-16 13:06:59 -05:00
Adam J. Stewart
3b11dfdca0 Add py-jplephem package (#12819) 2019-09-16 13:06:33 -05:00
Adam J. Stewart
947413236b Add py-ligo-segments package (#12820) 2019-09-16 13:06:09 -05:00
Adam J. Stewart
4cce23d1d3 Add py-pyopenssl package (#12824) 2019-09-16 13:05:37 -05:00
Adam J. Stewart
0d64b12c58 Add py-semantic-version package (#12825) 2019-09-16 13:05:12 -05:00
Adam J. Stewart
b8481d7913 Add py-sortedcontainers package (#12826) 2019-09-16 13:04:50 -05:00
Adam J. Stewart
09e3d6514b Add py-weave package (#12828) 2019-09-16 12:57:18 -05:00
Adam J. Stewart
321c857d4c Add py-soupsieve package (#12827) 2019-09-16 12:56:53 -05:00
Adam J. Stewart
e3969e33fd Relax Python version constraints on py-html5lib (#12811) 2019-09-16 12:56:21 -05:00
Chuck Atkins
76b79c125a xdmf3: new package (#12778) 2019-09-16 12:02:07 -04:00
Ruben Di Battista
9675db4e7f qt: Fix build with GCC9 for version 4 (#12832)
* qt: Fix build w/ GCC9 for @4:

* qt: Fix patch filename and qt version

* Fix typo in patch name
2019-09-14 14:00:46 -05:00
Toyohisa Kameyama
c26a3ff894 flang: build on arm. (#12808) 2019-09-14 11:15:06 -05:00
Scott Wittenburg
1050fa5546 Fixes identified in ecp facilities hackathon fixes:
- improve mirror git repo management
- minio s3 implementation needs endpoint_url
- Remove image key from rebuild-index job
- Remove image, rely on tags instead
2019-09-13 22:57:15 -07:00
Scott Wittenburg
6d745a56fd Implement an optional compiler bootstrapping phase 2019-09-13 22:57:15 -07:00
Scott Wittenburg
5323a5cff9 Remove CombinatorialSpecSet in favor of environments + stacks 2019-09-13 22:57:15 -07:00
Scott Wittenburg
0b67f30e21 Add pre-ci job generation for a multi-repo setup 2019-09-13 22:57:15 -07:00
Scott Wittenburg
fabbb3d58a Refactor release-jobs cmd based on use of environments (no docker either) 2019-09-13 22:57:15 -07:00
Scott Wittenburg
73c161b7de Add schema for new gitlab-ci and cdash additions to environment 2019-09-13 22:57:15 -07:00
Adam J. Stewart
5f18696169 py-bleach package: add version 3.1.0 (#12814) 2019-09-13 19:15:54 -07:00
Adam J. Stewart
3a47a6196f py-cython package: fix --test (#12813)
Fix bug in string conversion of "make_jobs"
2019-09-13 19:15:06 -07:00
Adam J. Stewart
a3c6b07c96 py-emcee package: add version 2.2.1 (#12812) 2019-09-13 19:13:45 -07:00
Adam J. Stewart
f9b8442e1b wcslib package: add version 6.4 (#12810) 2019-09-13 19:09:54 -07:00
Glenn P Johnson
6937416a65 Add diamond dependency 2019-09-13 19:08:57 -07:00
Glenn P Johnson
09047d76e9 Update braker package
- add version 2.1.4
- change url to github
- add perl dependencies
- new version has a new source layout
- filter shebang to use spack perl
2019-09-13 19:08:57 -07:00
Glenn P Johnson
b046ee20f5 Fixes for augustus package
- add missing perl dependency
- only filter Makefile if referred to dependency is in the spec
- rewrite the shebang line of scripts to use spack perl
- remove tabix dependency as tabix and bgzip are part of htslib
2019-09-13 19:07:35 -07:00
Glenn P Johnson
2256890d4e Update genemark-et package
- add version 4.46
- add missing perl dependencies
- new version has different source layout
- filter shebang to use spack perl
2019-09-13 19:05:02 -07:00
Sinan
6df57bb2d0 New package: py-pykwalify (#12540) 2019-09-13 12:22:08 -07:00
Frédéric Simonis
3f06d5c12a preCICE: added versions 1.6.0 and 1.6.1 (#12809) 2019-09-13 16:04:50 +02:00
Glenn Johnson
3cc95c6427 diamond: added version 0.9.25 (#12805) 2019-09-13 07:37:52 +02:00
Sinan
48e9090252 New package: py-ruamel-yaml (#12543) 2019-09-12 15:46:39 -07:00
Owen Solberg
78f3f4c309 Singularity package: add version 3.4.0 (#12785)
This version in combination with the included patch can install
without root.
2019-09-12 13:45:00 -07:00
Owen Solberg
6608876747 New package: cryptsetup (#12762)
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-09-12 13:41:53 -07:00
Sinan
b95b4bb9e0 add compilation option to sqlite (#12794)
* add compilation option to sqlite

* rename variant

* fix bug

* re-rename variant
2019-09-12 15:31:03 -05:00
ktsai7
96ba5a1265 Update legion gasnet config (#12523) 2019-09-12 13:46:37 -06:00
Tyler Reddy
25dbc9fb8e BUG: recursively load modules with tcsh (#12664)
* for tcsh and csh, spack load -r package
should now correctly load recursively instead
of only loading the target package without any
dependencies
2019-09-12 11:11:27 -06:00
Simo Tuomisto
5a6d060b52 py-gpaw: Fixed broken fftw linking in newer versions of py-gpaw (#12795) 2019-09-12 09:36:45 -05:00
brietzke
3269f712f0 fgsl: new version + fix for recent spack commit (#12790) 2019-09-11 20:15:50 -05:00
Greg Becker
b1868f35ec module parsing: make heuristic to get paths from modules more robust (#12693)
* module parsing: make heuristic to get paths from modules more robust

* refactor module parsing
2019-09-11 10:51:44 -07:00
Chris Green
e727e79b73 jsoncpp: new versions, support cxxstd variant. (#12780) 2019-09-11 12:32:49 +02:00
Owen Solberg
e3d06dc0d7 create package popt (#12783) 2019-09-10 21:33:33 -05:00
Jonas Lippuner
97641aab63 fix bug in p4est (don't use MPI spec if not compiling with MPI) (#12784) 2019-09-10 19:39:42 -05:00
Hironori-Yamaji
9962696128 openmx: new package (#12768)
* openmx: new package

* openmx: use copy method
2019-09-10 12:59:13 -05:00
Janne Blomqvist
3f1762bcc2 cuda: New version 10.1.243 (#12777)
* cuda: New version 10.1.243

Adds CUDA 10.1.243. The installer command-line arguments have slightly
changed, hence in the install method the version needs to be inspected
in order to give the correct arguments for the new installer.

* cuda: Combine common command-line arguments

The CUDA 10.1+ installer has slightly different command-line arguments
than previous versions.  Keep the common parts together and only split
where they are different.

* Make flake8 happy
2019-09-10 10:52:55 -07:00
Owen Solberg
c23bea80bd py-atropos: new package (#12745)
* create new package py-atropos

* remove whitespace

* make tqdm and pysam dependencies optional, exposed as variants
2019-09-10 12:18:31 -05:00
Hironori-Yamaji
fefd998509 ccs-qcd: disable parallel builds (#12775) 2019-09-10 14:19:09 +02:00
Axel Huebl
113365744e packages service: fix docker build again (#12774)
CD is hard.
2019-09-09 18:24:16 -07:00
Axel Huebl
0d270e0d2a packages service: fix docker build (#12773)
The build instructions I cloned from did not work ;)
2019-09-09 16:41:04 -07:00
Axel Huebl
221acadc7d packages build: fix path to spack (#12772)
Fix docker build for packages.spack.io
2019-09-09 14:52:36 -07:00
Axel Huebl
8ea358d849 Fix CD: Packages Service First (#12764)
* Fix CD: Packages Service First

Build the packages.spack.io service images first, so they are
guaranteed to be pushed even if further images fail to build.

Fix the query to the `spack` script executed in later builds.

* CD: Remove Spack Images

Now done on Dockerhub.
2019-09-09 13:22:47 -07:00
xfzhao
c30f9c6833 update bbmap (#12721)
* update bbmap

* remove one extra comment line
2019-09-09 12:55:06 -05:00
Michael Kuhn
62f0286f5e Fix pkgconfig dependencies (#12714)
pkgconfig is the virtual dependency, pkg-config is an implementation.
2019-09-09 12:54:46 -05:00
brietzke
4de32033b1 Update py-bokeh: new version & dependencies" (#12724)
* update py-bokeh: new version & dependencies

* Revert "update py-bokeh: new version & dependencies"

This reverts commit 5e191a0b20.

* update py-bokeh: new version & dependencies

* trigger travis-ci

* adjust python dependency-type to br
2019-09-09 11:59:27 -05:00
brietzke
155a667b7a New package: py-fsspec (#12725)
* update py-bokeh: new version & dependencies

* Revert "update py-bokeh: new version & dependencies"

This reverts commit 5e191a0b20.

* new package: py-fsspec: add package.py

* trigger travis-ci

* adjust python dependency-type to br
2019-09-09 11:58:49 -05:00
Dan Lipsa
1a8c572316 Paraview version (#12766)
* Update paraview

* Paraview 5.6.2 provides only .xz (no .gz)

* Add list_url and list_depth
2019-09-09 11:57:53 -05:00
Massimiliano Culpo
bd0fed7090 clang: add another regex for version detection (#12769)
This is similar to #10191. The Ubuntu package for clang 8.0.0 displays
a very unusual version string, and we need this new regex to detect it
as just 8.0.0

Unit test have been complemented by the output that was failing
detection.
2019-09-09 11:37:04 -05:00
viniciusvgp
7849dbb529 binutils: fix undefined symbol libintl_dgettext (#12770) 2019-09-09 11:05:04 -05:00
Axel Huebl
02931a82fd Add CORS for spack.packages.io
Add the HTTP header `Access-Control-Allow-Origin: *` for our NGINX
service that is serving static JSON content on
https://spack.packages.io .
2019-09-08 17:19:37 -07:00
Greg Sjaardema
db1fb16840 CGNS: Add setting of RPATH on Darwin (#9984)
* CGNS: Add setting of RPATH on Darwin

This should go in the CGNS CMakeLists.txt, but it isn't there yet and won't be in previous versions, so best to handle it here.  
If building on darwin/MacOSX, need to set the RPATH so applications can find shared library correctly.

* Restrict MACOSX_RPATH setting

This has now been added to the CGNS distribution, so the setting of `CMAKE_MACOSX_RPATH` should be restricted to current and previous releases and not upcoming releases.
2019-09-08 17:14:56 -05:00
Geoffrey Oxberry
983e6b4a4a fribidi@1.0.5: new package (#12386) 2019-09-08 17:10:39 -05:00
Sinan
4a18d40a66 new package: py-iniparse (#12638)
* new package: py-iniparse

* add git version supporting python3

* redo python dependency
2019-09-08 17:09:24 -05:00
Sinan
d66caf7a66 Package/py configobj (#12639)
* new package: py-configojb

* add version 4.7.2

* improve dependencies

* fix url for versions > 5.0.0

* Update var/spack/repos/builtin/packages/py-configobj/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/py-configobj/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* use format to create url strings

* fix typo

* improve style

* Update var/spack/repos/builtin/packages/py-configobj/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-09-08 17:08:59 -05:00
Owen Solberg
2ad6bed77c for fakeroot support, add "shadow" dependency (#12754)
* adding checksum for singularity 3.4, adding dep for shadow

* make v3.4 a TODO for now -- needs cryptsetup package first
2019-09-08 13:55:15 -05:00
Adam J. Stewart
bff667051b Fix PyQt installation (#12479)
* Fix PyQt installation

* Switch dependency type

* Replace SIP dependency with resource

* Relax py-pyqt4 Qt dependency
2019-09-08 10:48:50 -05:00
Simo Tuomisto
5a21c781f3 py-gpaw: Fixing missing numpy include path, adding newer version of p… (#12737)
* py-gpaw: Fixing missing numpy include path, adding newer version of py-gpaw and fixing a bug with libxc.c in older py-gpaw

* py-gpaw: Fix Python and ASE version dependencies

- GPAW 19.8.1 requires Python 3.x, add dependency on python@3.5:

- GPAW releases are associated with a corresponding ASE release, add
  matching ASE version dependencies.

* py-gpaw: Enable the scalapack variant by default

GPAW installation instructions say scalapack is optional but "highly
recommended". Thus enable it by default.
2019-09-08 10:46:47 -05:00
Owen Solberg
8fd8b54e97 py-cutadapt: Updated version checksum (#12741)
* add new cutadapt release 2.5, and adjust dependencies conditional on version

* use https, not ssh, for git url

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-09-08 10:46:08 -05:00
Owen Solberg
fe26678299 new package: py-bz2file (#12761)
* update py-xopen (add 0.8.2 checksum)

* refine version specific dependencies

add py-bz2file, which needs to be created

* create py-bz2file

* Revert "refine version specific dependencies"

This reverts commit 70649da988.

* Revert "update py-xopen (add 0.8.2 checksum)"

This reverts commit 7400f44caa.
2019-09-08 10:38:37 -05:00
Owen Solberg
b83fa3909e py-xopen: update release 0.8.2 checksum (#12742)
* update py-xopen (add 0.8.2 checksum)

* refine version specific dependencies

add py-bz2file, which needs to be created

* py-bz2file needed when built with python 2.7

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* space after comma
2019-09-08 10:38:19 -05:00
Owen Solberg
4468ee2437 py-dnaio: new package need by py-cutadapt (#12743)
* add new package py-dnaio

* provide git url with https, not ssh, protocol

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-09-08 10:37:49 -05:00
Todd Gamblin
a2220f3150 flake8: make entire repository pass spack flake8 -a
- Fix trailing whitespace missed by the bug described in #12755.

- Fix other style issues that have crept in over time (this can happen
  when flake8 adds new checks with new versions)
2019-09-07 23:59:10 -07:00
Todd Gamblin
0ec80e8f16 flake8: only add E501 exemptions when absolutely necessary (#12755)
E501 (line too long) exemptions are probably our most common ones -- we
add them for directives, URLs, hashes, etc. in packages.  But we
currently add them even when a line *doesn't* need them, which can mask
trailing whitespace errors.

This changes `spack flake8` so that it will only add E501 exemptions if
the line is *actually* too long.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-09-07 23:58:12 -07:00
Owen Solberg
48c3c833e8 patch boost version 1.54-1.55 when being built with ANY gcc version after 5.0 (#12718) 2019-09-07 22:45:53 -05:00
Kevin Huck
35221c127e Updating TAU package. Fixing compiler specification for OSX (#12720)
and making Fortran an option that can be disabled.  Also added
support for the POSIX I/O wrapper and OMPT for OpenMP.
2019-09-07 22:44:40 -05:00
Howard Pritchard
1a38285be9 mesa: disable use of libunwind for arm arch (#12735)
There are problems with libunwind for arm and trying to use it with mesa.
See for example:

https://github.com/grate-driver/mesa/issues/6

disabling use of libunwind for arm, allows the package to be built

Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
2019-09-07 22:33:30 -05:00
Jonas Lippuner
c3a2528022 add mpi variant to p4est package to allow turning off MPI (#12739) 2019-09-07 22:29:53 -05:00
Axel Huebl
331e4e32be ncurses: improve build time (#12621)
Apply configure options to skip manpage generation
and test builds for both wide and non-wide builts.
2019-09-07 22:27:07 -05:00
Ruben Di Battista
ac7a17754f luarocks: Use make command instead of install (#12703)
This way luarocks does not attempt to pull stuff from the internet.

Fix #3909
2019-09-07 21:06:52 -05:00
Adam J. Stewart
faa3d6a2a5 Add py-numpy 1.17.2 (#12753) 2019-09-07 20:44:46 -05:00
Piotr Luszczek
bbdb033e5f Add patches to work around CMake versions (#12744)
- Use of symbol testing macro requires explicit include()
- CMake policies are not version-portable and the support has to queried
  based on CMake version
2019-09-07 19:04:20 -05:00
Owen Solberg
c4da66be4c font-util 1.3.2 (#12728) 2019-09-07 18:57:22 -05:00
Adam J. Stewart
a4aa1b5a05 Update docs on module loads command (#12702) 2019-09-07 18:32:02 -05:00
Sinan
754ce972a3 new package: py-pygdal (#12747) 2019-09-07 18:23:38 -05:00
Vanessasaurus
25bbc27716 adding shadow-uidmap (#12750)
Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>
2019-09-07 17:36:45 -05:00
Mathias Jacquelin
696e12da98 upcxx: new package
Adding a UPC++ spack package pointing to the default 2019.3.2 UPC++
version, and allowing to build UPC++ with the experimental CUDA variant.
2019-09-06 16:04:33 -07:00
Toyohisa Kameyama
5def1dd39d openspeedshop: fixed build on arm. (#11861)
* openspeedshop: fixed build on arm.

* remove patch comment.
2019-09-06 13:26:24 -07:00
Geoffrey Oxberry
8fe5405e1b libpeas@1.22.0: new package (#12385)
* libpeas@1.22.0: new package

* libpeas: note more build dependencies

Build and link dependencies were obtained through a combination of
examining the `config.log` file from `configure` and looking at the
pkg-config files of `libpeas`.

* libpeas: add search path for GIR/typelib files
2019-09-06 12:53:12 -05:00
Geoffrey Oxberry
071fb3dd6a iso-codes: new package (#12389) 2019-09-06 12:48:08 -05:00
Greg Becker
3f1c78128e make env view loading unconditional (#12719) 2019-09-05 18:15:36 -07:00
Toyohisa Kameyama
34647913be fftw: change default value of simd variant for other than x86_64 (#11627)
* Use spec.architecture.target insted of platform.

* remove default in simd variant value.
simd variant change to archtecture independent values.

* Add check simd values.

* rewrite check simd values.

* * flake8
* change aarch64 to arm (neon support only 32 bit arm.)
2019-09-05 11:42:04 -07:00
Matthieu Dorier
1dbf3c208b FIX Catalyst: corrected catalyst package for aarch64 targets (#12707)
* corrected catalyst package for aarch64 targets

* corrected syntax

* corrected undefined variable
2019-09-05 12:44:38 -05:00
Ruben Di Battista
6ef95481ef Add pixz package (#12698) 2019-09-05 09:40:29 -05:00
Jennifer Herting
ca8db06e37 [jemalloc] added version 5.2.1 (#12706) 2019-09-05 09:39:42 -05:00
Hironori-Yamaji
ed6a2f0ef9 textparser: new package (#12713)
* textparser: new package

* textparser: use 'parallel = False'
2019-09-05 09:37:21 -05:00
Michael Kuhn
ad93f47c8f mariadb: Add missing dependencies (#12715)
Found while building mariadb in a minimal build environment.
2019-09-05 09:34:44 -05:00
Janne Blomqvist
30756a643b py-ase: New version 3.18 (#12697)
* py-ase: New version 3.18

Add ASE version 3.18. ASE 3.18 has dropped support for python 2.x,
hence add a dependency on python@3.5: for it.

* Add more ASE dependencies

Address review comments, add dependencies on py-scipy, py-matplotlib,
py-flask, and also add type=('build', 'run') dependency specifiers.
2019-09-05 09:09:37 -05:00
Toyohisa Kameyama
e50dbe6f76 cctools: fixed to build on ARM. (#11862) 2019-09-04 16:45:41 -07:00
Paul Bryant
cb2d18c1e6 Add Go 1.13 2019-09-04 15:04:51 -07:00
t-karatsu
e08f527004 openblas: Add route to f_check for Fujitsu compiler. (#11804) 2019-09-04 15:01:58 -07:00
Chris Green
7f8fe11e4d Improve mock_archive versatility; Remove unwanted ALLOWED_ARCHIVE_TYPES. (#12513)
mock_archive can now take multiple extension / tar option pairs (default matches old behavior).

url_fetch.test_fetch tests more archive types.

compression.EXTS split into EXTS and NOTAR_EXTS to avoid unwanted, non-meaningful combinatoric extensions such as .tar.tbz2.
2019-09-04 13:49:00 -05:00
asmaahassan90
00b02fd234 Add gams recipe (#12700)
* Add gams recipe

* Break down lines to pass lint
2019-09-04 10:13:58 -05:00
t-karatsu
fc9e17289a boost: add -c option to C/C++ compile commands for clang. (#12694) 2019-09-04 10:07:31 -05:00
Mario Melara
407834fffa cppflags point to ncurses headers (#12691)
While debugging this package on our Cray machine, tmux was throwing an
error involving the ncurses headers. Tmux would look for headers in
system locations rather than where spack installed ncurses. Tested only
on a Cray.
2019-09-04 10:06:35 -05:00
asmaahassan90
5953336c3e Add tecplot recipe (#12688)
* Add tecplot recipe

* break down description to pass lint

* fix format to match python 2.6 requiremnets

* importing os
2019-09-04 09:25:43 -05:00
Matthieu Dorier
3181021c11 Boost: fixed problem when requesting ~signals for boost >= 1.69 (#12627)
* fixed problem when requesting ~signals for boost >= 1.69

* added checks for all libs in with_libs
2019-09-04 09:25:00 -05:00
Sinan
d7ef97392c new package: liblas (#12619)
* new package: liblas

* explicitly disable build options

* fix indentation
2019-09-04 09:20:38 -05:00
Todd Gamblin
6b619daef3 specs: better lookup by hash; allow references to missing dependency hashes
- previously spec parsing didn't allow you to look up missing (but still
  known) specs by hash

- This allows you to reference and potentially reinstall
  force-uninstalled dependencies

- add testing for force uninstall and for reference by spec

- cmd/install tests now use mutable_database
2019-09-04 00:25:36 -07:00
Tamara Dahlgren
c141e99e06 Use spack/user-specific stage root by default; stage cleaning (#12516)
* When cleaning the stage root, only remove directories that appear
  to be used for staging Spack packages. Previously Spack was clearing
  all directories in the stage root, which could remove content not
  related to Spack if the user chose a staging root which contains
  files/directories not managed by Spack.
* The documentation is updated with warnings about choosing a stage
  directory that is only managed by Spack (although generally the
  check added in this PR for "spack clean" should avoid removing
  content that was not created by Spack)
* The default stage directory (in config.yaml) is now
  $tempdir/$user/spack-stage and the logic is updated to omit the
  $user portion of this path if $tempdir already contains a $user
  directory.
* When creating stage root assign user read/write permissions to all
  directories in the path under $user. Previously Spack was assigning
  the permissions of the first existing parent directory
2019-09-03 16:31:27 -07:00
Peter Scheibel
868f7869e0 py-chardet package: add py-pytest-runner dependency (#12692)
This required dependency was missing
2019-09-03 14:56:53 -07:00
Sinan
c14b7379f9 new package: protobuf-c (#12634)
* new package: protobuf-c

* Update var/spack/repos/builtin/packages/protobuf-c/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-09-03 16:16:50 -05:00
Todd Gamblin
d79f85d763 perf: spack find -p now does only one DB transaction
`spec.prefix` reads from Spack's database, and if you do this with
multiple consecutive read transactions, it can take a long time.  Or, at
least, you can see the paths get written out one by one.

This uses an outer read transaction to ensure that actual disk locks are
acquired only once for the whole `spack find` operation, and that each
transaction inside `spec.prefix` is an in-memory operation. This speeds
up `spack find -p` a lot.
2019-09-03 07:41:38 -07:00
t-karatsu
ae41ef9146 Boost/Change the method for analysis version (#12676)
* boost:Change the method for analysis version when using Fujitsu compiler.

* Change version to apply patch for Fujitsu.

* fix typo
2019-09-03 09:27:48 -05:00
Hironori-Yamaji
9e1800d81c pmlib: new package (#12625)
* pmlib: new package

* pmlib: fix options and add patch

* pmlib: fix the patch file
2019-09-03 09:26:47 -05:00
Hironori-Yamaji
6ea27cabd6 ccs-qcd: new package (#12681)
* ccs-qcd: new package

* ccs-qcd: fix variant and replacement string
2019-09-03 09:15:34 -05:00
Todd Gamblin
da7fed86a8 tests: add tests for spack extensions command
- add tests for `spack extensions`
- refactor `test_activations` test to use real extensions.
2019-09-02 19:24:48 -07:00
Todd Gamblin
1b877e8e0f tests and completions for spack find --json and spack find --format 2019-09-02 19:24:48 -07:00
Todd Gamblin
2dc7467760 tests: remove extraneous print statement 2019-09-02 19:24:48 -07:00
Todd Gamblin
d4bad06202 refactor: clean up spack find, make spack find -dp work properly
Refactor `spack.cmd.display_specs()` and `spack find` so that any options
can be used together with -d. This cleans up the display logic
considerably, as there are no longer multiple "modes".
2019-09-02 19:24:48 -07:00
Todd Gamblin
987d8cbaaa docs: add docs for spack find --format and spack find --json
- add docs for `spack find --format`
- add docs for `spack find --json`
- update references to Spec.format() docs and add links
2019-09-02 19:24:48 -07:00
Todd Gamblin
1a1f5674df command: add spack find --json
This is another machine-readable version of `spack find`.  Supplying the
`--json` argument causes specs to be written out as json records,
easily filered with tools like jq.

e.g.:

    $ spack find --json python | jq -C ".[] | { name, version } "
    [
      {
        "name": "python",
        "version": "2.7.16"
      },
      {
        "name": "bzip2",
        "version": "1.0.8"
      }
    ]
2019-09-02 19:24:48 -07:00
Todd Gamblin
64af0a9874 command: add spack find --format
- spack find --format allows you to supply a format string and have specs
  output in a more machine-readable way, without dedcoration

e.g.:

    spack find --format "{name}-{version}-{hash}"
    autoconf-2.69-icynozk7ti6h4ezzgonqe6jgw5f3ulx4
    automake-1.16.1-o5v3tc77kesgonxjbmeqlwfmb5qzj7zy
    bzip2-1.0.6-syohzw57v2jfag5du2x4bowziw3m5p67
    ...

or:

    spack find --format "{hash}"
    icynozk7ti6h4ezzgonqe6jgw5f3ulx4
    o5v3tc77kesgonxjbmeqlwfmb5qzj7zy
    syohzw57v2jfag5du2x4bowziw3m5p67
    ...

This is intended to make it much easier to script with `spack find`
2019-09-02 19:24:48 -07:00
Michael Kuhn
9b8f1fdc40 esmf: Fix build with gcc@8: (#12678) 2019-09-02 10:02:17 -05:00
asmaahassan90
6a791db72d Add XSSP recipe (#12679) 2019-09-02 10:00:57 -05:00
Michael Kuhn
d7a92adb93 icu4c: Add missing python dependency (#12683) 2019-09-02 09:52:51 -05:00
asmaahassan90
c184e79b91 Add fpocket (#12675)
* Add fpocket

* fix recipe

break down the description to pass lint

* update license

* make changes as per maintainer's review
2019-09-02 09:51:53 -05:00
asmaahassan90
4e487bf308 Install the newest version of ncbi-rmblastn (#12580)
* Install the newest version of ncbi-rmblastn

Version ncbi-rmblastn 2.2.28 coonfiguration fails for gcc compiler on ubuntu 16.04 due to some compatibility issues that requires manual intervention to keep the installation going. However you still stumble upon other issues while compiling it.
Using Intel compiler passes the configuration step but fails for the compilation process as well.

Here I'm using the latest version and patch, and the recommended configuration option as mention in http://www.repeatmasker.org/RMBlast.html

* uploading ncbi-blast patch
2019-09-01 11:11:15 -05:00
Kevin Manalo
421310a037 IDBA: package does not need conflicts with other compilers (#12674) 2019-09-01 11:08:05 -05:00
asmaahassan90
d3b89083f3 Add Vesta recipe (#12581)
* Add Vesta recipe

* Break down description to pass lint

* Make changes as maintainers' review

* remove whitespaces
2019-09-01 10:41:57 -05:00
健美猞猁
8c9e14486b A new package: fastp. (#12671)
* A new package: fastp.

* Flake8.

* Flake8.
2019-09-01 00:01:35 -05:00
Sinan
bb28028608 new package: py-requests-oauthlib (#12548)
* new package: py-requests-oauthlib

* add a version

* fix typo
2019-08-31 15:13:04 -05:00
Sinan
6723032440 new package: py-systemd-python (#12595) 2019-08-31 14:57:03 -05:00
Glenn Johnson
1a8ece4504 Add MKL variant to Julia (#12602)
This PR provides an option to build Julia with Intel MKL.
2019-08-31 14:48:40 -05:00
Sinan
6ec5cf4bf0 new package: optipng (#12608) 2019-08-31 14:41:06 -05:00
Sinan
ed59a94d04 new package: pngquant (#12609) 2019-08-31 14:40:26 -05:00
Sinan
da48112812 new package: pktools (#12611)
* new package: pktools

* rename and enable utilities

* enable build with FANN

* add variants, dependencies

* expcitly turn off options when not in use
2019-08-31 14:39:51 -05:00
Sinan
1461c90bd1 new package: FANN (#12614) 2019-08-31 14:38:46 -05:00
Cameron Smith
9ce9d45aa7 Add int64 variant to pumi and zoltan (#12630)
* pumi and zoltan: add int64 variant

* typo
2019-08-31 14:28:56 -05:00
Sinan
7a60be5154 add variant for building RTREE module (#12668) 2019-08-31 14:12:20 -05:00
Sinan
392e790884 new package: libwebp (#12669) 2019-08-31 14:10:30 -05:00
Glenn Johnson
ed6c9e8ed8 Add conflicts statement to mariadb (#12670)
The mariadb-5.5 series can not be compiled with gcc-9.1.0 and above. Add
a conflicts statement to reflect that.

The error is due to -Werror=address-of-packed-member, a warning that is
new in gcc-9.
2019-08-31 14:09:51 -05:00
健美猞猁
4a5d740eaf A new package: py-gdc-client. (#12672)
* A new package: py-gdc-client.

* Flake8.
2019-08-31 14:08:05 -05:00
Ruben Di Battista
bc56f87b09 p4est package: add version 2.2 (#12603) 2019-08-30 18:44:35 -07:00
Sinan81
2a27f50d14 new package: attr 2019-08-30 18:27:46 -07:00
Justin S
ce15a28f7d salmon package: add version 0.14.1 (#12646) 2019-08-30 18:22:59 -07:00
Glenn Johnson
661a894c85 Update R CRAN packages (#12019)
* Update R CRAN packages

This PR update R CRAN packages. It also ensures that spack built
packages that correspond to R recommended packages are specified in the
dependency list. This is needed for #12015.

* Add more updates to packages

* Updated dependencies of CRAN R packages

Also, use cloud.r-project.org rather than cran.r-project.org to use
automatic redirection to mirrors. This minimizes the load on the cran
server.

* Update to latest versions of CRAN R packages

* Fix flake8 issues

Some blank lines at the end of a coupple of package files crept in.

* Adjust r-animation dependencies

The r-magick package depends on image-magick, so r-animation should as
well. Also, add in texlive for LaTeX support.

* New package: r-magick

* Adjust line spaces in r-magick

* Add swftools dependenct to r-animation

* New package: swftools

This is needed bt r-animation

* Add 'when' clause to some package dependencies

- r-animation
- r-coin
- r-dt
- r-openssl

* New package: r-ellipsis

* New package: r-vctrs

* New package: r-zeallot

* New package: r-generics

* New package: r-cardata

* Add r-progress dependency to r-readxl

* New package: r-askpass

* New package: r-openxlsx

* New package: r-rio

* New package: r-sys

* New package: r-zip

* Add more updated packages

These are updates that have happened while working on this PR as well as
catching the ones from the cran.rstudio.com URL that were missed before.

* New package: r-gower

* New package: r-recipes

* New package: r-squarem

* New package: r-libcoin

* New package: r-rcmdcheck

* New package: r-remotes

* New package: r-sessioninfo

* New package: r-xopen

* New package: r-rgexf

* New package: r-rook

* New package: r-later

* New package: r-promises

* New package: r-xfun

* New package: r-urca

* New package: r-ggsignif

* New package: r-polynom

* New package: r-ucminf

* New package: r-ordinal

* New package: r-inum

* New package: r-debugme

* New package: r-fs

* New package: r-shinyfiles

* New package: r-gsa

* New package: r-nmof

* New package: r-dosnow

* New package: r-rann

* New package: r-reticulate

* New package: r-future

* New package: r-globals

* New package: r-listenv

* New package: r-future-apply

* New package: r-rsvd

* New package: r-sctransform

* New package: r-mitools

* Remove a stray FIXME line

* Fix typo in dependency for r-rcmdcheck

* Remove the dependency on r-splines

The r-splines package never existed in spack, but it does not exist on
CRAN either. There is an archive version from 1999 but it does not have
the proper extension format for modern R packages. The latest version
does not depend on r-splines, and apparently previous versions at least
built without it. Also, bump the required R version.

* Fix typo in r-rcpp dependency

* Fix typos in dependencies

- r-diagrammer
- r-janitor
- r-seurat

Also, bump minimum R version for r-rngtools.

* New package: r-clisymbols

* New package: r-fitdistrplus

* New package: r-gbrd

* New package: r-gh

* New package: r-ini

* New package: r-metap

* New package: r-npsurv

* New package: r-rdpack

* New package: r-snakecase

* New package: r-tinytex

* New package: r-usethis

* Make recommended changes

Made the changes that were recommended in the initial review.

- change cran.rstudio.com to cloud.r-project.org
- change R-project to r-project
- for packages with no listed homepage use the canonical link to the
  package page
- for packages with a dependency constraint on R itself, specify the
  dependency type
- add `list_url` where missing from package

* New package: r-hdf5r

This is needed for some older versions of r-seurat.

* Set R versions in packages

If the R version is specified in the DESCRIPTION file then set it in the
respective spack package.py file.

* Update var/spack/repos/builtin/packages/r-aer/package.py

Change dependency version of r-car.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Set constraint of mlbench dependency of r-adabag

* Set constraint on r-rcpp dependency of r-ape

* Removed "suggested" r-testthat from r-bibtex

* Update var/spack/repos/builtin/packages/r-bindrcpp/package.py

Fix dependency spec of r-bindr in r-bindrcpp.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/r-blob/package.py

Add r-vctrs version constraint.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Remove r-base64enc dependency from r-callr

* Update var/spack/repos/builtin/packages/r-car/package.py

Set constraint on r-cardata dependency.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Remove unneeded dependencies from r-clipr

* Add gmake dependency to r-construct

* Set the proper homepage for r-crayon

* Add r-jsonlite as a dependency for r-crul

The jsonlite package moved from "suggests" to "imports" with 0.8.4.

* Remove accidental colon after package name

* Add version constraint to r-fpc dependency in r-dendextend

* Additional constraints for R version with r-digest

* Add r-jsonlite dependency for latest verion of r-dt

* Add r-htmltools dependency in r-dygraphs package

* Removed unneeded dependencies from r-fnn

* Remove unneeded dependencies from r-formatr

* Add version constraint for r-mvtnorm dependency in r-fpc

* Added gmake dependency to r-fs

* Add r-globals dependency in r-future-apply

* Add perl dependency to r-gdata

* Add openssl dependency for r-ggally

* Removed unneeded dependencies from r-globaloptions

* Update r-haven

- Add version constraint on r-forcats
- Add gmake build dependency

* Fixed gmake dependency

Gmake is a build only dependency.

* Apply suggestions from code review

Apply a batch of suggestions from Adam Stewart.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Remove unneeded dependencies from r-hoardr

* Fix r-htmlwidgets homepage

* Add gmake build dependency to r-httpuv

* Remove unneeded dependency from r-log4r

* Remove unneeded dependency from r-maldiquant

* Add gmake build dependency to r-minqa

* Remove unneeded dependency from r-mlbench

* Set constraint on R6 dependenvy of r-pbdzmq

* Set constraints on r-callr dependency of r-pkgbuild

* Remove unneeded dependency from r-nloptr

* Remove unneeded dependencies from r-pkgmaker

* Set R version constraint for r-raster

* Set version constraint on rcpp for r-rcppprorgess

* Added gmake build dependency

* Remove unneeded dependencies from r-rematch

* Remove unneeded dependency from r-plogr

* Add gmake build dependency for r-rcurl

* Apply suggestions from code review

Bring in more suggestions from Adam Stewart.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Remove cnpy dependency from r-rcppcnpy

The r-rcppcnpy package has its own modified copy of the cnpy source and
will build from that internal source. The cnpy dependency is therefore
unnecessary.

* Add comment to reconcile dependencies

The CRAN site lists Perl, Getopt::Long as a dependency. The Spack Perl
will have the Getopt::Long package installed so just depend on Perl.

* Add dependency on udunits2 with newer versions of r-units

* Set additional proj constraint for r-sf

Support for PROJ6 was added in r-sf-0.7-4.

* New package: pandoc

This package installs the pandoc and pandoc-citeproc binaries in order
to satisfy dependencies on pandoc until the Haskell framework is in
Spack.

* Add pandoc dependency to r-bookdown

* Add comment about MPI in r-ergm

* Add pandoc dependency for r-reprex

* Add proj constraints to r-rgdal dependencies

Support for PROJ6 was added in version 1.4-2.

* Modifications to r-rgl

- Rearranged the dependencies to be more consistent with other packages
- put the type last on the depends_on lines to be consistent with other
  packages
- Added version constraints for some dependencies
- Added pandoc build dependency

* Be more accurate with rjsonio constraint for r-rgooglemaps

* Remove unneeded dependencies from r-rhmmer

* Tweak constraints for r-rjava

- Set java version constraint
- add gmake build dependency

* Add pandoc dependency to r-markdown

* Remove unneeded dependencies from r-rrcov

* Tweak r-rstan package

- remove duplicate specifications
- remove unneeded when conditions
- add version constraints
- arrange to follow order on CRAN page more closely
- add gmake build dependency
- add pandoc build dependency

* Add pandoc build dependency for r-rstantools

* Remove unneeded dependency from r-runit

* Remove unneeded dependencies from r-selectr

* Remove example R code from description

The example would module loading to break, at least in the case of Lmod
using TCL module files. It could be during the TCL to Lua conversion but
the module fails due to interpreting ipart of the example as a command.

* Update r-seurat

New version of r-seurat with new dependencies.

* New package: r-dqrng

* New package: r-leiden

* New package: r-rcppannoy

* New package: r-rcppparallel

* New package: r-rspectra

* New package: r-sitmo

* New package: r-uwot

* Remove unneeded dependency from r-snow

* Remove unneeded dependency from r-sourcetools

* Added pandoc build dependency for r-stanheaders

* Remove unneeded dependencies from r-taxizedb

* Remove unneeded dependencies from r-tclust

* Add dependency constraints for r-threejs

The following are needed for version 0.2.2:
- r-matrix
- r-jsonlite

* Remove unneeded dependencies from r-vfs

* Remove unneeded dependencies from r-vgam

* Remove unneeded dependency from r-xlconnectjars

* Remove unneeded dependency from r-xlsxjars

* Remove unneeded dependency from r-xnomial

* Remove ~mpi from fftw dependency of swftools

* Apply suggestions from code review

Add latest round of suggestions from Adam Stewart.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Fix rjsonio spec for r-rgooglemaps

The r-rjsonio spec is a when conditional.

* Rename 3 R.* packages

- r-utils --> r-r-utils (R.utils)
- r-oo --> r-r-oo (R.oo)
- r-methodss3 --> r-r-methodss3 (R.methodsS3)

Also, renamed dependencies in packages that depend on these three.

* Loosen version constraint on mariadb for r-rmysql

Make the mariadb constraint on mariadb-5.5 rather than the more
specific, and limiting, mariadb-5.5.56. This will allow an external
mariadb, such as mariadb-5.5.60 on CentOS-7.5 to be used. It also allows
for r-rmysql to be built against newer versions of the mariadb-5.5
series that might be added to spack.
2019-08-30 18:22:13 -05:00
Adam J. Stewart
9c98323080 Add athena package (#12663)
* Add athena package

* Flake8 fix

* Fix missing separator error

* Add master branch
2019-08-30 18:18:33 -05:00
brietzke
7e7e0723b5 gtkplus package: add variant for CUPS support (#12566)
Default is ~cups (no CUPS support). Before this option, gtkplus would
potentially use a system-installed version of CUPS.
2019-08-30 15:03:44 -07:00
Phil Tooley
f759eda3ae extrae package: add 3.7.1, optionalise dyninst, papi (#11978)
* Convert to Autotools package
* dyninst and papi are now optional (off by default)
* limit dyninst version to < 10 (see
  https://github.com/bsc-performance-tools/extrae/issues/30)
* Add numactl dependency
* Enable parallel installs for 3.7 and later
* Set EXTRAE_HOME in module files and for dependent package installs
* Generalize cxx11 support flag (previously it was using a specific
  syntax and this updates it to use the cxx11 support flag for the
  compiler in use).
2019-08-30 11:28:14 -07:00
Jimmy Tang
517846003f kaldi package: fix installation of libraries (#12177)
* The install for kaldi was copying library symlinks but not the
  actual library files, this makes sure to copy the libraries
* All libraries are installed to 'prefix.lib' (the original
  library directory structure is no longer maintained)
* The install step for executables did not account for the different
  dynamic library suffix on MacOS
2019-08-30 11:11:06 -07:00
Sinan
f635a376bd New package: py-oauthlib (#12528) 2019-08-30 10:57:59 -07:00
George Hartzell
36933901ba gtkplus: package cairo dependency must be +gobject (#12655)
e891cc4 updated the cairo package to make gobject support optional
and disabled it by default. gtkplus requires gobject support so this
explicitly enables +gobject on the cairo dependency of gtkplus.
2019-08-30 10:47:53 -07:00
Adam J. Stewart
19ed010b0c Add py-pytest 5.1.1 (#12660) 2019-08-30 12:45:18 -05:00
Adam J. Stewart
0819a29fe2 Add py-packaging 19.1 (#12659) 2019-08-30 12:44:59 -05:00
Adam J. Stewart
d58a2a704d Add py-pluggy 0.12.0 (#12658) 2019-08-30 12:44:15 -05:00
Adam J. Stewart
81a514c2e6 Add py-importlib-metadata package (#12657) 2019-08-30 12:43:55 -05:00
Adam J. Stewart
cdcf814003 Add py-zipp package (#12656) 2019-08-30 12:43:37 -05:00
Peter Scheibel
9432d4c7ee Archive all patches in a package after install (#12653)
When Spack installs a package it writes the package.py file and
patches to a separate repository (which reflects the state of the
package at the time it was installed). Previously, Spack only wrote
patches that were used at installation time. This updates the
archiving step to include all patch files that are relevant to the
package (in case that repository is used in another context).
2019-08-30 10:33:18 -07:00
t-karatsu
0c421589e6 Fujitsu compiler: Add flags for c11/c99 (#12622)
* Fujitsu compiler: Add flags for c11/c99

* Add unit tests about supported flags
2019-08-30 11:25:34 -05:00
Sinan
4483473483 OpenSceneGraph package: add version 3.6.4; update URL and checksums (#12626)
Replace old checksums with sha256 checksums
2019-08-29 15:38:49 -07:00
Mark W. Krentel
f8e2dbc488 hpctoolkit: tighten some dependencies
Change the depends_on type from default (build + link) to just 'link'
for binutils and a few other packages.  We don't use the binutils
utilities (only libs).  On cori at NERSC (Cray), this was breaking the
build by covering up the system ld.
2019-08-29 14:07:16 -07:00
Janne Blomqvist
f5948fa5e9 elpa package: add version 2018.11.001 (#12645)
Remove designation of 2017.11.001 as preferred version
2019-08-29 14:06:42 -07:00
brietzke
a9e6d75230 emacs package: add version 26.2, jpeg dependency (#12632) 2019-08-29 14:04:09 -07:00
健美猞猁
152a840cff Scalpel package: remove CMake dependency (#12631)
Scalpel does not depend on CMake
2019-08-29 14:03:12 -07:00
Kevin Manalo
5de29a5130 NAMD package: add version 2.13 (#12616) 2019-08-29 14:00:06 -07:00
Kevin Manalo
ff6c00e9ba ABINIT package: add version 8.10.3 (#12615) 2019-08-29 13:59:26 -07:00
Matthias Diener
4ef4877a6f mc package: add version 4.8.23 (#12605) 2019-08-29 13:58:10 -07:00
Sinan
64364260ef New package: py-ecdsa (#12598) 2019-08-29 13:57:36 -07:00
Sinan81
d882785c9e new package: py-python-jenkins 2019-08-29 13:56:10 -07:00
Sinan
1f56c1e647 New package: py-mysqlclient (#12594) 2019-08-29 13:49:50 -07:00
Howard Pritchard
292baab069 paraview: use Spack-built libpng (#12587) 2019-08-29 13:18:37 -07:00
Sinan
7badb818cd qjson package: enable building with qt4 (#12577) 2019-08-29 11:56:08 -07:00
Sinan
f03a9e8ac6 qtkeychain package: enable building with qt4 (#12578) 2019-08-29 11:55:11 -07:00
Sinan
972759896e QCA package: add version 2.2.1 and update CMake args (#12576)
* Version 2.1.3 requires QT version 5.10.0 or earlier
* Add CMAKE_CXX_STANDARD=11 argument
* Add CMake argument when building against qt@4
2019-08-29 11:47:46 -07:00
Geoffrey M Oxberry
53e9e4d7de bugfix: atk build requires libffi to detect glib 2019-08-29 11:00:01 -07:00
Sinan81
c9a3cfee58 new package: py-repoze-lru 2019-08-29 10:59:05 -07:00
Sinan
60afca9f3c New package: py-pyudev (#12554) 2019-08-29 10:55:37 -07:00
Sinan
9bd9be037a New package: py-pytest-cache (#12552) 2019-08-29 10:49:56 -07:00
Sinan
12dc64159f New package: py-pydotplus (#12537) 2019-08-29 10:33:03 -07:00
Sinan
55099d89c1 Qt@4.8.7: fix build issue due to +phonon variant, disable phonon backend (#12579)
* fix build issue that shows up with +phonon variant, disable phonon backend gstreamer until it is setup

* provide in code explanation
2019-08-29 12:24:17 -05:00
Greg Becker
c8b613d261 fix packaging_guide variant table (#12296) 2019-08-29 09:35:48 -06:00
Christoph Junghans
ae70c75e3c portage: fix linkage against openblas (#12641) 2019-08-29 07:14:13 -06:00
Pariksheet Nanda
300d9d5a62 hdf5: patch out mpicxx lib when +mpi~cxx fixes #12586 (#12640) 2019-08-28 21:49:52 -05:00
健美猞猁
85e13ebc03 bowtie package: add version 1.2.3 (#12593)
* Only apply issue-87.patch for versions before 1.2.3
* 1.2.3 builds fine with gcc@8:, but 1.2.2 and 1.2.2_p1 both fail
  (with or without the patch) so the conflict is updated to exclude
  only these two versions.
2019-08-28 18:46:22 -07:00
Julien Loiseau
eee07522fa Correcting FleCSI package (#12629)
* Adding flecsph package

* Correcting header

* Boost version update

* Correcting Flake8 errors

* Correcting headers

* Develop preferred in FleCSI
2019-08-28 19:44:45 -06:00
Sinan
e0aa439d3b New package: py-pycuda (#12592) 2019-08-28 18:36:25 -07:00
Sinan81
5bf5a58116 new package: py-pyglet 2019-08-28 18:32:51 -07:00
Sinan
4aa5928311 New package: py-wand (#12590) 2019-08-28 18:32:08 -07:00
Sinan
bd1a837bee New package: py-planar (#12589) 2019-08-28 18:25:49 -07:00
Adam J. Stewart
9b7ccbab86 Add py-numpy 1.17.1 (#12618) 2019-08-28 10:32:56 -05:00
Adam J. Stewart
91f05dd599 Add py-scipy 1.3.1 (#12620) 2019-08-28 10:32:23 -05:00
Sinan
1ccd7e5a89 New package: py-nose2 (#12522) 2019-08-27 18:18:14 -07:00
Geoffrey M Oxberry
56fd9bc7b6 AutotoolsPackage: remove redundant libtoolize call
This commit removes redundant calls to `libtoolize` and `aclocal`.

Some configurations, such as a Spack user using macOS with a
Homebrew-installed `libtool` added to their `packages.yaml`, have
`autoreconf` and GNU libtoolize installed as `glibtoolize`, but not
`libtoolize`. While Spack installations of `libtool` built from source
would install `glibtoolize` and symlink `libtoolize` to `glibtoolize`,
an external installation of GNU libtoolize as `glibtoolize` will not
have such a symlink, and thus the call `m.libtoolize()` will throw an
error because `libtoolize` does not exist at the path referenced by
`m.libtoolize()` (i.e.,
`self.spec['libtool'].prefix.bin.join('libtoolize')).

However, on these same systems, `autoreconf` runs correctly, and calls
`glibtoolize` instead of `libtoolize`, when appropriate. Thus,
removing the call to `libtoolize` should resolve the error mentioned
above.

The redundant call to `aclocal` is also removed in this commit because
the maintainers of GNU Automake state that "`aclocal` is expected to
disappear" and suggest that downstream users never call `aclocal`
directly -- rather, they suggest calling `autoreconf` instead.
2019-08-27 18:03:56 -07:00
Sinan
953f2a3f5d New package: py-liblzma (#12549) 2019-08-27 17:29:10 -07:00
Stephen Hudson
cd5b97f3fd libensemble package: add version 0.5.2 (#12514)
* Make mpi, scipy, petsc4py, and nlopt support optional
* Later versions depend on python@3.5:
* Versions before 0.4.1 must build with MPI: add a conflict for
  @:0.4.1~mpi
2019-08-27 16:39:43 -07:00
Hironori-Yamaji
bf7cb3dca9 New package: openfdtd (#12498) 2019-08-27 16:32:18 -07:00
Julien Loiseau
02bb1d5ec6 Adding FleCSPH package. (#12525)
* Adding flecsph package

* Correcting header

* Boost version update

* Correcting Flake8 errors

* Correcting headers
2019-08-27 14:50:31 -06:00
Geoffrey Oxberry
72ad072422 cuda: add conflict with macOS Mojave (#12570) 2019-08-27 10:36:07 -07:00
Massimiliano Culpo
2e8aa6cb24 Configuration schema are checked against jsonschema draft 4 meta-schema (#10247)
fixes #10246
2019-08-27 09:31:18 -06:00
Greg Becker
dce9fc4d63 libxml2: pass location for libiconv to build system (#12588) 2019-08-27 09:29:01 -06:00
Geoffrey Oxberry
4b767b83a9 raja~openmp: explicitly disable OpenMP in CMake (#12572)
Before this commit, CMake would still attempt to detect OpenMP, even
if RAJA were being installed with `spack install raja~openmp`, because
the option `ENABLE_OPENMP` is set to "On" by default. This commit
explicitly disables OpenMP when the Spack install spec contains
'~openmp`, ensuring that CMake does not attempt to detect and link
with OpenMP.
2019-08-27 14:00:40 +02:00
Geoffrey Oxberry
59486ad072 gtksourceview: add GIR file search path (#12569) 2019-08-27 10:32:44 +02:00
Geoffrey Oxberry
ee710fd170 librsvg: new package (#12567) 2019-08-27 10:30:45 +02:00
Geoffrey Oxberry
e891cc49d5 cairo: add gobject variant (#12568) 2019-08-27 10:29:50 +02:00
Sinan
b1d24d5673 New package: py-pytools (#12553) 2019-08-26 19:00:06 -07:00
Sinan81
b74b36901e new package: py-scp 2019-08-26 18:54:32 -07:00
Sinan81
85cafffec4 new package: py-ratelim 2019-08-26 18:53:49 -07:00
brietzke
f540afeed7 Motif package: add jpeg dependency (#12559) 2019-08-26 18:52:22 -07:00
Sinan
9a54139a2d New package: py-sgp4 (#12557) 2019-08-26 18:51:33 -07:00
brietzke
8f771acc1e json-fortran: add new version 7.1.0 2019-08-26 18:47:56 -07:00
Sinan
411b011578 New package: py-pyjwt (#12532) 2019-08-26 15:45:56 -07:00
Sinan
0ec55b093e New package: py-overpy (#12533) 2019-08-26 15:44:57 -07:00
Adam J. Stewart
f31e87935e RPackage docs: use cloud.r-project.org (#12471) 2019-08-25 12:34:58 -05:00
Geoffrey Oxberry
01783789a0 gobject-introspection: add GIR file search path (#12564) 2019-08-24 09:44:20 -07:00
Geoffrey Oxberry
16e54646ea hypre@2.17.0: new version (#12562) 2019-08-24 09:43:57 -07:00
Ben Boeckel
c22a145344 Add implicit rpaths to compiler detection (#7153)
Uses code from CMake to detect implicit link paths from compilers
System paths are filtered out of implicit link paths
Implicit link paths added to compiler config and object under `implicit_rpaths`
Implicit link paths added as rpaths to compile line through env/cc wrapper

Authored by: "Ben Boeckel <ben.boeckel@kitware.com>"
Co-authored by: "Peter Scheibel <scheibel1@llnl.gov>"
Co-authored by: "Gregory Becker <becker33@llnl.gov>"
2019-08-24 06:21:45 -07:00
Sinan
a7e9f477fc New package: py-morph (#12550) 2019-08-23 18:08:26 -07:00
Sinan
e9d8071086 New package: py-pydot2 (#12535) 2019-08-23 17:49:44 -07:00
Sinan
a9cd44cc2e New package: py-pykml (#12539) 2019-08-23 17:27:36 -07:00
Axel Huebl
24c052de39 openPMD-api package: require newer nlohmann-json (#12546)
Update minimal required version of the `nlohmann-json`
dependency.
2019-08-23 17:26:54 -07:00
Sinan
cdcc05db0a New package: py-cov-core (#12526) 2019-08-23 17:21:08 -07:00
Kevin Manalo
fd4eed117d ESMF & NCL packages: Bug fixes for Intel Compilers (#11923)
* esmf: add patch when building with intel for 7.0.x
* esmf: set Makefile variables required to propagate CXX/F90 flags
* ncl: add ymake patch for @6.4.0:
* ncl: add pixman, bzip2, freetype dependencies
2019-08-23 17:16:09 -07:00
Toyohisa Kameyama
6a730d7059 Julia package: add ARM support and versions 1.1.1, 1.0.0 (#12300)
* Add patch when building with GCC on ARM
* Update syntax for adding Julia packages based on version (newer
  versions use a different syntax)
2019-08-23 16:29:14 -07:00
Sinan
c7c8f60617 New package: py-fastcache (#12451) 2019-08-23 15:54:50 -07:00
Sinan
15c64d93b7 New package: py-filemagic (#12452) 2019-08-23 15:53:09 -07:00
Tiziano Müller
c0cb92b2f6 SIRIUS package: add v6.3.2 + Python/MKL support (#12472)
* Add version 6.3.2 (which does not require patches like 6.1.5)
* Add +python variant to build Python bindings
* Option to build shared libraries does not exist for newer
  versions including 6.3.2
* Update 'libs' property (library names are different for newer
  versions)
* Add support to detect and build with MKL as blas provider
2019-08-23 15:51:51 -07:00
Sinan
a38edff0c8 New package: py-kitchen (#12464) 2019-08-23 15:24:10 -07:00
Kelly (KT) Thompson
fdd7314cd1 New package: py-opppy (#12483) 2019-08-23 15:22:31 -07:00
brietzke
c900cd64c3 eccodes package: apply cmake-patch only when @:2.10 (#12512) 2019-08-23 15:09:28 -07:00
Greg Sjaardema
b8175e3fae SEACAS package: add fixed versions and adios2 variant (#12503)
SEACAS is now using versions instead of just relying on always
installing master. There are now tagged versions.

The most recent version is the first that can be used with a
non-patched develop version of the CGNS package; previously, seacas
required that the CGNS library have some internally-developed patch
applied, but this is no longer needed.

Also, added support for adios2 package with the adios2 variant.
This currently defaults to off.
2019-08-23 15:08:02 -07:00
Greg Sjaardema
4ff95dbd85 parallel-netcdf package: add version 1.11.2 (#12502) 2019-08-23 15:03:25 -07:00
Paul
6a417fc35c Go package: add version 1.12.9 (#12496) 2019-08-23 15:00:44 -07:00
sameershende
b1a9edbc7c tau package: add version 2.28.2 (#12524) 2019-08-23 14:41:28 -07:00
Chuck Atkins
052b62153e ecp-io-sdk: add UnifyFS and VeloC (#12486)
* ecp-io-sdk: Update UnifyFS

* ecp-io-sdk: Enable VeloC
2019-08-23 14:14:11 -04:00
Tamara Dahlgren
b42324c23b bugfix: template create constructor args (#12536)
c9e214f updated template creation by passing **kwargs to package
template classes but the template classes were not updated to accept
them; this adds **kwargs to package template initializers where they
are needed.
2019-08-23 10:45:17 -07:00
Sinan
f199b2d42e new package: py-blinker (#12531) 2019-08-23 11:03:16 -05:00
Sinan
e8f0e6936c new package: py-path-py (#12534) 2019-08-23 10:49:14 -05:00
Hironori-Yamaji
00bb6a0b37 openstf: new package (#12538) 2019-08-23 10:40:09 -05:00
Sinan
dd8efee17e new package: py-simplekml (#12541)
* new package: py-simplekml

* add python dependency version info
2019-08-23 10:33:54 -05:00
Sinan
54d561a443 new package: py-pytailf (#12542) 2019-08-23 10:32:50 -05:00
Sinan
74ad9ff70c new package: py-termcolor (#12544) 2019-08-23 10:31:49 -05:00
Valentin Clement (バレンタイン クレメン)
edae707b9c Add version 2.0 (#12545) 2019-08-23 10:30:39 -05:00
Seth R. Johnson
c86006e948 Skip invisible non-packages in package directory. (#12467)
Having a non-directory invisible file causes `spack find` to die. This
fixes the logic to ignore invalid module names but only warn if they're
visible.
```
NotADirectoryError: [Errno 20] Not a directory: '/spack/var/spack/repos/builtin/packages/.DS_Store/package.py'
```
2019-08-23 06:42:17 +02:00
Phil Carns
a707c5bd2b libfabric package: add kdreg variant (off by default) (#12521)
This variant (off by default) adds support for the kdreg option in
the GNI provider. It is disabled by default in order to avoid
potential runtime conflicts with the cray-mpich library. Only one
library at a time can use this feature.

This patch allows the libfabric package to work correctly out of
the box on systems like Cori at NERSC (since it's CLE7 update).
Otherwise the spack build may autodetect kdreg headers on the system
and enable this problematic feature.
2019-08-22 17:02:56 -07:00
Jennifer Herting
21f2a1ef83 py-cloudpickle package: add version 1.2.1 (#12518) 2019-08-22 16:56:47 -07:00
Greg
d5c3cc0a85 esmf: add v7.1.0r, with a gcc patch for macOS (#12509) 2019-08-22 16:55:56 -07:00
Sinan
0e907326f5 New package: py-multi-key-dict (#12508) 2019-08-22 16:55:11 -07:00
Hironori-Yamaji
3607aa486f New package: EEM (#12321) 2019-08-22 16:05:22 -07:00
Axel Huebl
7b2470236e nlohmann-json: v3.7.0 (#12517)
* nlohmann-json: 3.7.0

The version 3.6.0 fix compile issues with GCC 9.0.

* nlohmann-json: proper test handling

tests are controlled via `spack install --test root|all ...`
instead of a variant.
2019-08-22 20:32:06 +02:00
Tamara Dahlgren
c9e214f6d3 Spack BundlePackage: a group of other packages (#11981)
This adds a special package type to Spack which is used to aggregate
a set of packages that a user might commonly install together; it
does not include any source code itself and does not require a
download URL like other Spack packages. It may include an 'install'
method to generate scripts, and Spack will run post-install hooks
(including module generation).

* Add new BundlePackage type
* Update the Xsdk package to be a BundlePackage and remove the
  'install' method (previously it had a noop install method)
* "spack create --template" now takes "bundle" as an option
* Rename cmd_create_repo fixture to "mock_test_repo" and relocate it
  to shared pytest fixtures
* Add unit tests for BundlePackage behavior
2019-08-22 11:08:23 -07:00
Omar Padron
47238b9714 new package: libglvnd (#12183)
* new package: libglvnd

* remove virtual provides from libglvnd

libglvnd does not provide them directly, but
through implementations that depend on it.

* fix flake8 errors

* libglvnd: fix style/remove unecessary variants

* remove older libglvnd version

* explicitly enable all libglvnd stubs

* libglvnd: conflict with non-linux platform
2019-08-22 14:08:07 -04:00
Satish Balay
892a552495 petsc: update url to gitlab (#12506) 2019-08-22 12:40:47 -05:00
Greg Becker
5af2378ece compiler install: fix bug in construction of compiler spec (#12507) 2019-08-22 09:57:53 -07:00
Derick Huth
fadba727d3 Chill package: build fixes (#12249)
* Specify rose/boost dependencies separately
* Replace custom bootstrap phase with autoreconf phase and fix typo
  when locating bash exe
* Add bison/flex dependencies
* Fix configure args typo
2019-08-21 18:39:06 -07:00
Peter Scheibel
661b1da5d0 'spack spec --yaml' command now writes build deps to yaml (#12317)
This allows "spack spec --yaml" to generate a spec YAML file that can
be used with "spack install -f". Before, this would fail in cases
where the spec had build dependencies.
2019-08-21 18:32:31 -07:00
Chris Green
2499c047f0 Emacs directives for fill-column setting. 2019-08-21 18:21:05 -07:00
Chris Green
ad4309b782 Fetch strategies: new global option no_cache, new git option get_full_repo.
* All fetch strategies now accept the Boolean version keyword option `no_cache` in order to allow per-version control of cache-ability.
* New git-specific version keyword option `get_full_repo` (Boolean). When true, disables the default `--depth 1` and `--single-branch` optimizations that are applied if supported by the git version and (in the former case) transport protocol.
* The try / catch blog attempting `--depth 1` and retrying on failure has been removed in favor of more accurately ascertaining when the `--depth` option should work based on git version and protocol choice. Any failure is now treated as a real problem, and the clone is only attempted once.
* Test improvements:
  * `mock_git_repository.checks[type_of_test].args['git']` is now specified as the URL (with leading `file://`) in order to avoid complaints when using `--depth`.
  * New type_of_test `tag-branch`.
  * mock_git_repository now provides `git_exe`.
  * Improved the action of the `git_version` fixture, which was previously hard-wired.
  * New tests of `--single-branch` and `--depth 1` behavior.
* Add documentation of new options to the packaging guide.
2019-08-21 18:21:05 -07:00
Jon Rood
1b8e0c36cb Percept package: add version (#12434)
* Choose a specific commit as a version (before, the only version was
  the master branch)
* Add CMake patch which allows for building the version added here
  (this replaces the existing patches for percept in Spack)
* Update trilinos dependency
2019-08-21 18:00:41 -07:00
Axel Huebl
7770372100 New package: c-blosc2 (#12430) 2019-08-21 17:52:05 -07:00
Sinan81
63f5054140 new package: py-grequests 2019-08-21 17:50:17 -07:00
liuyangzhuan
7303b6cdc9 ButterflyPACK package: add URL, versions 1.0.0 and 1.0.1 (#12428) 2019-08-21 17:23:18 -07:00
Mark Olesen
e47b65a2a7 Remove package: of-adios-write (#12443)
old (adios1) integration is not supported, maintained, or recommended
for openfoam. The of-adios-write package serves no purpose any more.
2019-08-21 17:14:13 -07:00
Chris Green
ccb688f575 Fix to option text for help command. (#12444) 2019-08-21 17:11:24 -07:00
Sinan81@github
9ae6a07fe8 new package: py-empy 2019-08-21 17:07:08 -07:00
Sinan
be302cac1f New package: py-fallocate (#12450) 2019-08-21 16:51:25 -07:00
Sinan81
82080f0bc9 new package: Exiv2 2019-08-21 16:47:13 -07:00
Mark Olesen
bec358941d re2c package: add version 1.2.1 (#12455) 2019-08-21 16:45:19 -07:00
Pariksheet Nanda
105da8de02 py-deeptools: add 3.3.0 (#12456)
Also update dependencies to build latest py-deeptools versions and
add a patch to run tests:

* Replace pypi URL with github URL to download tests
* Update dependency versions of py-pysam, py-matplotlib
* Add new py-deeptoolsintervals package as a dependency
* Add py-plotly and py-nose dependencies
* Patch setup.py to collect and run tests
2019-08-21 16:43:44 -07:00
Mark W. Krentel
918da9aa55 hpcviewer: add version 2019.08 2019-08-21 16:30:15 -07:00
Sinan
886ecb97e3 New package: py-fortranformat (#12459) 2019-08-21 16:24:34 -07:00
Sinan81
d8d506e39a new package: py-geoalchemy2 2019-08-21 16:22:34 -07:00
Sinan
f1b377b3d5 New package: libsecret (#12461) 2019-08-21 16:20:26 -07:00
Sinan
fd6485efac new package: py-mechanize (#12468) 2019-08-21 16:17:51 -07:00
Sinan81
17ee9c7229 new package: QtKeychain 2019-08-21 16:12:33 -07:00
Sinan81
08e389cb7d new package: py-humanize 2019-08-21 16:10:51 -07:00
Peter Scheibel
5127d95b2e properly format message with all paths that could not be used. also report canonicalized paths vs. Spack config variables like 'tempdir' (#12492) 2019-08-21 15:46:12 -07:00
Chuck Atkins
77e4e3d87e mercury: Fix CMake 3.15 configure error (#12504) 2019-08-21 13:28:20 -04:00
Chris Green
2441c0bad7 pkg command uses a working directory for git invocations rather than -C. (#12491) 2019-08-21 09:31:27 -07:00
Greg Becker
3b115fffb1 permissions: fix file permissions on intermediate install directories (#12399)
- mkdirp now takes arguments to allow it to properly set permissions on created directories.
- Two arguments (group and mode) set permissions for the leaf directory.
- Intermediate directories can inherit permissions from either the topmost existing directory (the parent) or the leaf.
2019-08-20 23:08:02 -07:00
Todd Gamblin
368bf2d69c stage: avoid using group name in _first_accessible_path()
On machines where $TMP is owned by a gid with no name, this avoids the
following error when the default spack stage does not exist:

    (spackbook):spack$ spack clean
    ==> Removing all temporary build stages
    ==> Error: 'getgrgid(): gid not found: 57095'

Spack needs to deal with gids directly unless users pass them in.
2019-08-20 14:52:53 -07:00
Jeffrey Salmond
a41014ed9e mvapich2 depends on slurm when built with process_managers=slurm (#12489) 2019-08-20 16:43:28 -05:00
Daryl W. Grunau
dbbccd1303 prefix -> self.prefix (#12487) 2019-08-20 16:41:41 -05:00
Cameron Stanavige
11c0a7882d UnifyFS: new package - rename from UnifyCR (#12439)
UnifyCR has been renamed to UnifyFS. Renaming the Spack package is
the last step in this process.

This renames the package and changes any UnifyCRs to UnifyFS within
the package.
2019-08-20 11:13:22 -05:00
Ryan S. Elliott
7737d623b0 kim-api: added version 2.1.3 (#12457) 2019-08-20 16:29:17 +02:00
Teodor Nikolov
118e20a087 Add Kokkos 2.9.0 (#12466) 2019-08-20 13:07:11 +02:00
健美猞猁
6d959494d4 r: added version 3.6.1. (#12470) 2019-08-20 11:13:18 +02:00
Tamara Dahlgren
aed204e409 cleanup: remove extraneous prints (#12474)
Removes messages accidentally introduced in #12072 .
2019-08-19 14:49:09 -07:00
Peter Scheibel
31ff791180 features: Update compiler caching (#7675)
Compiler caching was using the `id()` function to refer to configuration dictionary objects. If these objects are garbage-collected, this can produce incorrect results (false positive cache hits). This change replaces `id()` with an object that keeps a reference to the config dictionary so that it is not garbage-collected.
2019-08-19 11:24:05 -07:00
Tamara Dahlgren
0ea6e0f817 features: Remove stage symlinks (#12072)
Fixes #11163

The goal of this work is to simplify stage directory structures by eliminating use of symbolic links. This means, among other things, that` $spack/var/spack/stage` will no longer be the core staging directory. Instead, the first accessible `config:build_stage` path will be used.

Spack will no longer automatically append `spack-stage` (or the like) to configured build stage directories so the onus of distinguishing the directory from other work -- so the other work is not automatically removed with a `spack clean` operation -- falls on the user.
2019-08-19 10:31:24 -07:00
Pariksheet Nanda
64de824cf6 py-pyfaidx: tweak dependencies; fixes #12445 (#12446)
* py-pyfaidx: tweak dependencies; fixes #12445

* py-pyfaidx: add suggestions for #12446
2019-08-16 22:41:32 -05:00
Dan Lipsa
39ad0efb9a Solve compilation error on summit. (#12305)
* This constexpr does not compile on summit.

I tried gcc6.4 and gcc7.4

* Add link the the llvm bug report.
2019-08-16 15:27:35 -04:00
Zack Galbreath
cef1e4e0b4 Do not report on packages installed from the cache (#12336)
Skip generating reports for any packages that were found in the binary cache.
2019-08-16 10:19:11 -07:00
Frédéric Simonis
7bb08b6ecb preCICE: Fix Eigen include directory (#12441) 2019-08-16 09:00:01 -05:00
Greg Becker
0307b5a3dc mirrors: make spack mirror environment aware (#12345)
Allow "spack mirror" with no spec arguments to create a mirror for the
active environment (download all concretized specs in the environment)
2019-08-15 18:45:17 -07:00
Sinan
46e8de914a new package: laszip (#12432) 2019-08-15 19:07:40 -05:00
Pariksheet Nanda
862b3b00df camx: add version 6.50 (#12437)
* camx: add version 6.50

* camx: remove unpredictable download URL

* camx: install manual and data files
2019-08-15 19:07:22 -05:00
Adam J. Stewart
f568f19b13 Overhaul PyTorch package (#12420)
* Overhaul PyTorch package

* Flake8

* Distributed requires MPI, NCCL not specified correctly

* Binary was being specified incorrectly

* Run tests at install time

* Disable GLOO in addition to GLOO_IBVERBS
2019-08-15 17:54:09 -05:00
Mark W. Krentel
3a78f0e0fd hpctoolkit: add version 2019.08.14 (#12435)
Add version 2019.08.14 and rename 'develop' to 'master' to match the
git branch name (now that master is also a special name).
2019-08-15 17:53:41 -05:00
Michael Kuhn
0cdcee92fb go: Add 1.12.8 and 1.11.13 (#12433)
Both address security issues:
https://groups.google.com/forum/#!topic/golang-nuts/fCQWxqxP8aA
2019-08-15 17:01:43 -05:00
Seth R. Johnson
4b400d5032 Update VisIt to version 3.0.1 and fix on mac (#12396)
* Add option to disable QTDesigner plugin for qwt

Qt designer shouldn't be necessary to build downstream GUI code.
Currently `qwt^qt~tools` fails to build:

(darwin clang@10.0.1)
```
compiling qwt_designer_plugin.cpp
compiling qwt_designer_plotdialog.cpp
moc qwt_designer_plugin.h
moc qwt_designer_plotdialog.h
rcc qwt_designer_plugin.qrc
qwt_designer_plugin.h:23: Error: Undefined interface
make[1]: *** [moc/moc_qwt_designer_plugin.cpp] Error 1
make[1]: *** Waiting for unfinished jobs....
qwt_designer_plugin.cpp:17:10: fatal error: 'QDesignerFormEditorInterface' file not found
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[1]: *** [obj/qwt_designer_plugin.o] Error 1
make: *** [sub-designer-make_default-ordered] Error 2
```

* Update VTK for newer VisIt and compiler versions

Several changes/enhancements to VTK package

---

Add version 8.1.0 (default version for VisIt 3.x)

---

Tweak VTK options for version 8 and VisIt:

- only add mpi4py version option when mpi4py is enabled
- Require object factory for downstream packages
- Remove OpenGL preference for VTK 8

---

Combine +python3 into +python

The spec for using python3 should just be `+python^python@3:`.

---

Remove unused VTK cmake argument on newer version

---

Patch for Python 3 fails on VTK 6.1 (needed for VisIt 2.x):
```
==> Patch /rnsdhpc/code/spack/var/spack/repos/builtin/packages/vtk/python3.7-const-char.patch failed.
==> Error: ProcessError: Command exited with status 1:
    '/usr/bin/patch' '-s' '-p' '1' '-i' '/rnsdhpc/code/spack/var/spack/repos/builtin/packages/vtk/python3.7-const-char.patch' '-d' '.'
```

and as it happens, VisIt 2.13 is incompatible with Python 3 anyway.

---

Fix compiler error:

As spack's configuration warning says, double-quotes can cause trouble:
```
==> [2019-07-29-11:47:55.269653] Warning: Quotes in command arguments can confuse scripts like configure.
  The following arguments may cause problems when executed:
      -DVTK_REQUIRED_OBJCXX_FLAGS=""
  Quotes aren't needed because spack doesn't use a shell.
  Consider removing them
```
They were being added to the compile line, causing clang to think it was
asked to compile an empty file:
```
cd /private/var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/s3j/spack-stage/spack-stage-3nk9bwe_/spack-build/Rendering/OpenGL && /rnsdhpc/code/spack/lib/spack/env/clang/clang++  -DVTK_IN_VTK -DvtkRenderingOpenGL_EXPORTS -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks  -DGLX_GLXEXT_LEGACY  -O2 -g -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fPIC   -fvisibility=hidden -fvisibility-inlines-hidden "" -o CMakeFiles/vtkRenderingOpenGL.dir/vtkCocoaGLView.mm.o -c /rnsdhpc/code/spack/var/spack/stage/vtk-6.1.0-b2mj276iz77fadisv2me365qe27t3gxt/spack-src/Rendering/OpenGL/vtkCocoaGLView.mm
clang: error: no input files
make[2]: *** [Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/vtkCocoaGLView.mm.o] Error 1
```

* Modernize/PEP-8 visit package statements

* Add new VisIt version and patches for building on Mac

- VisIt's cmake assumes a 'vtk(tiff|jpeg|png)' *library* target exported by
  VTK, but VTK 8.1.x on my configuration seems to have these as header-only
  targets with library dependencies.
- Explicitly add QT path to visit configure: Without this, somehow
  `${VISIT_QT_DIR}` was being set to empty, so that the build failed with
  `missing /bin/moc`.
- VisIt assumes that if it isn't being built statically, QWT has been built as
  a mac Framework. QWT actually is built as a framework based on whether QT
  itself is.

Error message:
```
-- Looking for QWT
CMake Error at CMake/SetUpThirdParty.cmake:131 (MESSAGE):
    Include Directory for QWT (/rnsdhpc/code/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/qwt-6.1.3-bmfxirweplzhjoiil4rw632evkyteuwk/lib/qwt.framework/Versions/Current/Headers) does not exist.
Call Stack (most recent call first):
  CMake/FindQwt.cmake:57 (SET_UP_THIRD_PARTY)
  CMakeLists.txt:1251 (INCLUDE)
```
2019-08-15 10:13:45 -05:00
Axel Huebl
ce15510566 ADIOS 2.4.0: Add new Deps (#12414)
* ADIOS 2.4.0: Add new Deps

Version 2.4.0 of ADIOS2 added new dependencies that are not
yet listed as `depends_on` and/or disabled otherwise. Add them
now to avoid picking them up from system paths, e.g. `libpng`.

* ADIOS2: Variant Defaults Change

* Python: False by default
* ADIOS1: only used prior to 2.3.0
2019-08-15 10:11:35 -05:00
Seth R. Johnson
283f355b10 Update icu4c to version 64.1 (#12429)
Version 60.1 fails to build on linux with clang@7.0.1 and clang@8.0.0:

```
digitlst.cpp:508:9: error: use of undeclared identifier 'freelocale'
        freelocale(gCLocale);
        ^
   clang++     ...  coll.cpp
digitlst.cpp:520:26: error: use of undeclared identifier 'LC_ALL_MASK'
    gCLocale = newlocale(LC_ALL_MASK, "C", (locale_t)0);
                         ^
   clang++     ...  sortkey.cpp
   clang++     ...  bocsu.cpp
   clang++     ...  ucoleitr.cpp
   clang++     ...  ucol.cpp
   clang++     ...  ucol_res.cpp
2 errors generated.
   clang++     ...  ucol_sit.cpp
   clang++     ...  collation.cpp
*** Failed compilation command follows:
----------------------------------------------------------
/projects/spack/lib/spack/env/clang/clang++ -D_REENTRANT
-DU_HAVE_ELF_H=1 -DU_HAVE_ATOMIC=1 -DU_HAVE_STRTOD_L=1
-DU_HAVE_XLOCALE_H=1 -I. -I../common -DU_ATTRIBUTE_DEPRECATED=
-DU_I18N_IMPLEMENTATION -std=c++11 -W -Wall -pedantic -Wpointer-arith
-Wwrite-strings -Wno-long-long -c -DPIC -fPIC -o digitlst.o digitlst.cpp
--- ( rebuild with "make VERBOSE=1 all" to show all parameters )
--------
make[1]: *** [digitlst.o] Error 1
make[1]: *** Waiting for unfinished jobs....
   clang++     ...  collationsettings.cpp
make[1]: Leaving directory
`/build/s3j-spack/spack-stage/spack-stage-k9ba3gqo/spack-src/source/i18n'
make: *** [all-recursive] Error 2
```
2019-08-14 22:54:37 -05:00
Shintaro Iwasaki
ae2ab920fb Update BOLT package (#12423)
* bolt: add new versions

* bolt: add argobots dependency

From this version, BOLT uses an external Argobots, not a builtin one.
2019-08-14 21:40:51 -05:00
Daryl W. Grunau
5346d5e966 Fix skopeo dependencies (#12425) 2019-08-14 19:14:33 -05:00
Daryl W. Grunau
b8ffb1cf7f Fix charliecloud dependencies (#12427) 2019-08-14 19:14:00 -05:00
Cameron Stanavige
226f23bc43 UnifyCR: update dependencies and build options (#12216)
* UnifyCR: update dependencies and build options

This adds some specifics about dependencies and conflicts and adds
additional build options and variants. UnifyCR now also has limited
fortran support.

* Remove debug statements condition on Spack debug

Change debug print statements to now be turned on when the -g cflag
is found in the flags the user sets.
2019-08-14 15:50:10 -07:00
Daryl W. Grunau
9e08c7ff47 Package umoci dependency (#12422)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* umoci depends on go-md2man
2019-08-14 17:35:52 -05:00
Christoph Junghans
41c917b6e6 lammps: add version 20190807 (#12424) 2019-08-14 17:35:24 -05:00
Daryl W. Grunau
0c5f5d4d0d New package: device-mapper (#12406)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* new package: device-mapper

* address comments by @hartzell

* extraneous whitespace

* capitalization

* device-mapper -> lvm2

* unprovide device-mapper

* address comments by @adamjstewart

* address comments by @adamjstewart
2019-08-14 14:54:15 -05:00
Justin S
da21d27712 r-rmutil: new package at 1.1.3 (#12417)
* r-rmutil: new package at 1.1.3

* r-rmutil: use cloud.r-project.org
2019-08-14 14:53:57 -05:00
Daryl W. Grunau
a9845da15f New package: go-md2man (#12397)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* new package: go-md2man

* address comments by @adamjstewart
2019-08-14 12:56:51 -05:00
Adam J. Stewart
0f075b0cc8 NCCL: fix build on older Linux systems (#12415) 2019-08-14 12:34:00 -05:00
Toyohisa Kameyama
e620883a3c masurca: build on arm. (#12416)
* remove -minline-all-stringops when target is arm.
* change int3 to raise(SIGTRAP) when target is arm.
2019-08-14 10:38:50 -05:00
Sinan
3a4a513bed add new package: py-python-magic (#12409)
* add new package: py-python-magic

* tidy up

* Update var/spack/repos/builtin/packages/py-python-magic/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-08-14 10:37:06 -05:00
Adam J. Stewart
2e6b44328a zstd: fix build linking error (#12413) 2019-08-13 21:09:25 -05:00
Toyohisa Kameyama
c52f8478b2 starce: new version and build on ARM. (#12401)
1. souce URL change to github.
2. Add version 5.1 and 5.2
3. enable build on ARM.
2019-08-13 19:38:45 -05:00
Jordan Ogas
4119886cbc add charliecloud master branch; add dependencies (#12327)
* add master and dependencies

* remove gcc and make

* add variants, make doc and ch-grow dependencies optional

* capitalize description sentence

* move dependencies and variants below version block

* fix typos
2019-08-13 19:37:58 -05:00
Daryl W. Grunau
2c68b7f006 packages/umoci (#12346)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* new package: umoci

* Package -> MakefilePackage

* add missing build phase

* relax expand=False requirement
2019-08-13 19:37:34 -05:00
Sinan
fcf6bb8f45 add new versions (#12393) 2019-08-13 19:35:02 -05:00
Sinan
53e12f66cf add new version (#12394) 2019-08-13 19:34:34 -05:00
Sinan
bb5663701e add new version (#12395) 2019-08-13 19:33:12 -05:00
Toyohisa Kameyama
d752ef38c9 subread: build on ARM. (#12400) 2019-08-13 19:23:52 -05:00
Ricardo Silva
5116312ca2 package/gromacs: simd optimizations autodetection for more versions (#12402)
* gromacs: fix simd detection for pre 2018 versions

* pre 2018 the cmake file was named differently
* fixed up post 2018 patch file which was non pretty

* Trim patch
2019-08-13 19:21:59 -05:00
健美猞猁
5429713eef Add version 2.4.0 for cantera. (#12405) 2019-08-13 19:18:38 -05:00
Gregory Lee
aabdeb9b63 patch opa-psm2 to build with spack wrappers (#12407) 2019-08-13 19:13:21 -05:00
Daryl W. Grunau
c931757d02 Fix package gpgme dependency (#12410)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* build depends on gnupg which provides gpgsm binary
2019-08-13 19:08:50 -05:00
Michael Kuhn
384281bf94 gcc: Add 9.2.0 (#12411) 2019-08-13 19:08:12 -05:00
Peter Scheibel
1f6befabb1 Fix "spack loads" when retrieving upstream modules (#12203)
Fixes #12062

406c791 addressed "spack module load" for upstream modules but not
the "spack module loads" command. This applies the same fixes from
406c791 to "spack module loads".
2019-08-13 11:09:40 -07:00
Tiziano Müller
95fec7adfc CP2K/SIRIUS: add support for building with CUDA, fix CP2K build with MKL (#11418)
* cp2k/sirius: add CUDA support

* cp2k: fix building with MKL

* sirius: make sure to link against Spacks blas/lapack/scalapack
2019-08-13 19:59:08 +02:00
brietzke
68c176998a new package: asagi: create package.py (#11931)
* Create package.py

* applied reviewer suggestions

* Update package.py

* remove CamelCase from variant names

* add comment on why fetching package via git

* found typo in variant to cmake-argumentlist translation

* rename variants to ~nonuma ~nompi to be in sync with cmake-args, refine mpi@3-dependency definition

* Revert "rename variants to ~nonuma ~nompi to be in sync with cmake-args, refine mpi@3-dependency definition"

This reverts commit 58e8cf7d93.

* remove version-preference
2019-08-13 11:13:41 -05:00
Sinan
bb6ec7fb40 Package/grass: fix iconv linking issue (#12165)
* fix iconv linking issue, package_grass fix linking iconv, add more comments
2019-08-12 13:45:05 -07:00
Owen Solberg
230678367c singularity: update version to 3.3.0 (#12295)
* add checksum for singularity release 3.3.0

* update singularity doc URL

URL at the lbl.gov domain has message saying:
"This website is going away soon! Update your bookmarks!"

* add note about build log file for post-install step

* provide links to both 2.x and 3.x security docs

* remove whitespace.  Passing flake8 confirmed locally this time :)

* add TODO comment for fakeroot support
2019-08-12 15:38:15 -05:00
Jean-Paul Pelteret
2cc89fbf69 New package: TexStudio (#12301)
* Poppler library: Add new versions

* Poppler library: Allow building with QT4

* Poppler library: Install header files

* Add patch to Poppler package

* Add new package: TexStudio
2019-08-12 14:48:28 -05:00
Russell J. Hewett
31f9135cbc blaze: converted to CMakePackage (#12357)
The previous version does not properly install the required cmake
configuration files for blaze-lib, so find_package does not work
correctly.

This patch converts the blaze-lib package to use CMakePackage,
adds the required cmake dependency, and removes the install()
member function, which is not working correctly and is no longer
needed.
2019-08-12 14:47:54 -05:00
Geoffrey Oxberry
6de750d860 gtksourceview: new package (#12387) 2019-08-12 14:44:54 -05:00
Janne Blomqvist
490168be4d openblas: fix target detection for cross-compiling (#12390)
In a review of a previous pull request (
https://github.com/spack/spack/pull/10713 ) it was mentioned that the
proper way to figure out the target architecture is via
spec.architecture.target.  This patch fixes this for the openblas
package.

Signed-off-by: Janne Blomqvist <janne.blomqvist@aalto.fi>
2019-08-12 14:43:04 -05:00
Janne Blomqvist
820b220b22 openblas@0.3.7: New version (#12391)
This adds OpenBLAS 0.3.7 (released 2019-08-11).
2019-08-12 14:41:26 -05:00
Kelly (KT) Thompson
5b84d6dff1 Apply xl patch for cce@9: to fix cmake. (#12392) 2019-08-12 14:41:00 -05:00
Daryl W. Grunau
9538889f1c packages/skopeo (#12348)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* new package: skopeo

* address flake8 issues

* address adamjstewart's comments

* use the Executable class and undocumented 'str' feature for output

* Package -> MakefilePackage

* add missing build phase

* patch -> edit phase
2019-08-12 11:28:05 -05:00
Massimiliano Culpo
ab4b5deb97 bugfix: Python 2.6 parsing error (#11867)
Apparently shlex.split can't deal with unicode encoded characters in
Python2.6. The solution is to convert to str before calling the
function.
2019-08-11 13:00:36 -07:00
Seth R. Johnson
172fcb0225 Update SWIG versions and add Fortran fork (#12185)
* Add git repositories for SWIG and SWIG-Fortran

* Fix typo in documentation

* Move 'master' to top of SWIG version list
2019-08-11 12:58:12 -05:00
Glenn Johnson
30cf665d16 Fix py-matplotlib build with Intel compiler (#12144)
Not sure what happened between #5321 and now but the CC=CXX fix now
prevents py-matplotlib from building with the Intel compiler. I verified
with versions of py-matplotlib from 2.0.2 to 3.0.2 and intel-17.0.4 and
19.0.4 that py-matplotlib successfully builds with the Intel compiler
without that code.
2019-08-11 12:57:31 -05:00
Seth R. Johnson
52a737affe Use correct GCC installation when installing clang with GCC (#12381) 2019-08-11 12:40:12 -05:00
Sinan
5532b8e617 new package: qwtpolar (#12382)
* create qwtpolar package

* patch config files so that qwtpolar successfully builds

* make flake8 happy
2019-08-11 12:39:58 -05:00
Frédéric Simonis
33bec18cc2 Add preCICE xSDK support (#12356)
* Add preCICE xSDK support

* Cleanup generation of cmake arguments

* Generalize numpy include

* Fix python spec

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Fix numpy spec

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-08-11 12:19:44 -05:00
Adam J. Stewart
0d4114b095 Add NCCL 2.4.8-1 (#12362) 2019-08-10 11:53:29 -05:00
Adam J. Stewart
c5c1d1db43 Port py-poster to Python 3 (#12363)
* Port py-poster to Python 3

* Forgot the patch
2019-08-10 11:53:15 -05:00
Adam J. Stewart
e69456bde2 Add py-clipboard package (#12364) 2019-08-10 11:52:52 -05:00
Adam J. Stewart
6e14e74014 Add py-gee-asset-manager package (#12365) 2019-08-10 11:52:38 -05:00
Adam J. Stewart
889b625452 Add py-geeadd package (#12366) 2019-08-10 11:52:24 -05:00
Adam J. Stewart
8e4d60645f Add py-geeup package (#12367) 2019-08-10 11:52:10 -05:00
Adam J. Stewart
706d57bd23 Add py-google-api-core package (#12368) 2019-08-10 11:51:56 -05:00
Adam J. Stewart
09e0f1ad4e Add py-google-cloud-core package (#12369) 2019-08-10 11:51:41 -05:00
Adam J. Stewart
3c54e55546 Add py-google-cloud-storage package (#12370) 2019-08-10 11:51:27 -05:00
Adam J. Stewart
a3cc7eb4f7 Add py-google-resumable-media package (#12371) 2019-08-10 11:51:12 -05:00
Adam J. Stewart
b329d5f27f Add py-googleapis-common-protos package (#12372) 2019-08-10 11:50:58 -05:00
Adam J. Stewart
fbf386328c Add py-oauth2client package (#12373) 2019-08-10 11:50:43 -05:00
Adam J. Stewart
1d0f61816a Add py-pathlib package (#12374) 2019-08-10 11:50:24 -05:00
Adam J. Stewart
37e59cbd7e Add py-pyperclip package (#12375) 2019-08-10 11:50:10 -05:00
Adam J. Stewart
572bc5cc77 Add py-pysmartdl package (#12376) 2019-08-10 11:49:55 -05:00
Adam J. Stewart
3601f1c825 Add py-retrying package (#12377) 2019-08-10 11:49:41 -05:00
Adam J. Stewart
25b3946e0b Add py-selenium package (#12378) 2019-08-10 11:49:25 -05:00
Sajid Ali
48016366c8 modified: var/spack/repos/builtin/packages/libflame/package.py (#12379) 2019-08-10 11:48:58 -05:00
Cameron Smith
a4a30de8a1 libconfig: add version 1.7.1 (#12324)
* libconfig: add version 1.7.1

* move 1.7.1 above 1.6, latest version is preferred
2019-08-10 11:08:53 -05:00
Seth R. Johnson
54018b488a Fix build for moab 4.9.2 on gcc8 (#12328)
```
5 errors found in build log:
     609      CXX      mbpart.o
     610      CXX      quality.o
     611      CXX      umr.o
     612      CXX      merge.o
     613      CXX      parread.o
     614    mbpart.cpp: In function 'int main(int, char**)':
  >> 615    mbpart.cpp:494:19: error: no match for 'operator<<' (operand types
            are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'std::ostri
            ngstream' {aka 'std::__cxx11::basic_ostringstream<char>'})
     616             std::cerr << tmp_output_file << " : failed to write file."
             << std::endl;
     617             ~~~~~~~~~~^~~~~~~~~~~~~~~~~~
     618    mbpart.cpp:494:19: note: candidate: 'operator<<(int, int)' <built-i
            n>
     619    mbpart.cpp:494:19: note:   no known conversion for argument 2 from
            'std::ostringstream' {aka 'std::__cxx11::basic_ostringstream<char>'
            } to 'int'
     620    In file included from /software/user_tools/centos-7.2.1511/cades-ns
            ed-spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-8.2.0-uc6sbum
            ioobdbkw4rwfyn2givi4nyvwq/include/c++/8.2.0/iterator:64,
     621                     from /software/user_tools/centos-7.2.1511/cades-ns
            ed-spack/var/spack/stage/moab-4.9.2-77uuzmj4ofb7z7vz6m25sftyks7p5do
            7/spack-src/src/moab/Range.hpp:167,

     ...

     886    /software/user_tools/centos-7.2.1511/cades-nsed-spack/opt/spack/lin
            ux-centos7-x86_64/gcc-4.8.5/gcc-8.2.0-uc6sbumioobdbkw4rwfyn2givi4ny
            vwq/include/c++/8.2.0/ostream:682:5: note: candidate: 'template<cla
            ss _Ostream, class _Tp> typename std::enable_if<std::__and_<std::__
            not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basi
            c_ostream<_Ostream>, std::__is_insertable<typename std::__is_conver
            tible_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::v
            alue, typename std::__is_convertible_to_basic_ostream<_Tp>::__ostre
            am_type>::type std::operator<<(_Ostream&&, const _Tp&)'
     887         operator<<(_Ostream&& __os, const _Tp& __x)
     888         ^~~~~~~~
     889    /software/user_tools/centos-7.2.1511/cades-nsed-spack/opt/spack/lin
            ux-centos7-x86_64/gcc-4.8.5/gcc-8.2.0-uc6sbumioobdbkw4rwfyn2givi4ny
            vwq/include/c++/8.2.0/ostream:682:5: note:   template argument dedu
            ction/substitution failed:
     890    /software/user_tools/centos-7.2.1511/cades-nsed-spack/opt/spack/lin
            ux-centos7-x86_64/gcc-4.8.5/gcc-8.2.0-uc6sbumioobdbkw4rwfyn2givi4ny
            vwq/include/c++/8.2.0/ostream: In substitution of 'template<class _
            Ostream, class _Tp> typename std::enable_if<std::__and_<std::__not_
            <std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_os
            tream<_Ostream>, std::__is_insertable<typename std::__is_convertibl
            e_to_basic_ostream<_Tp>::__ostream_type, const _Tp&, void> >::value
            , typename std::__is_convertible_to_basic_ostream<_Tp>::__ostream_t
            ype>::type std::operator<<(_Ostream&&, const _Tp&) [with _Ostream =
             std::basic_ostream<char>&; _Tp = std::__cxx11::basic_ostringstream
            <char>]':
     891    mbpart.cpp:494:22:   required from here
  >> 892    /software/user_tools/centos-7.2.1511/cades-nsed-spack/opt/spack/lin
            ux-centos7-x86_64/gcc-4.8.5/gcc-8.2.0-uc6sbumioobdbkw4rwfyn2givi4ny
            vwq/include/c++/8.2.0/ostream:682:5: error: no type named 'type' in
             'struct std::enable_if<false, std::basic_ostream<char>&>'
     893      CXXLD    mbdepth
     894      CXXLD    hexmodops
  >> 895    make[2]: *** [mbpart.o] Error 1
     896    make[2]: *** Waiting for unfinished jobs....
     897    make[2]: Leaving directory `/localscratch/tmp/s3j-spack/spack-stage
            /spack-stage-NT13kT/spack-src/tools'
  >> 898    make[1]: *** [all-recursive] Error 1
     899    make[1]: Leaving directory `/localscratch/tmp/s3j-spack/spack-stage
            /spack-stage-NT13kT/spack-src/tools'
  >> 900    make: *** [all-recursive] Error 1
```
2019-08-10 11:08:13 -05:00
Adam J. Stewart
f9e6f0fb62 py-numexpr: switch from PyPI to GitHub download (#12360) 2019-08-09 22:27:34 -05:00
Ricardo Silva
c5849ce04f gromacs: fix CPU optimizations detection (simd=auto) (#12354)
* SL-637
* https://redmine.gromacs.org/issues/2927
* tested with cmake 3.14.4 and 3.15.1
2019-08-09 21:38:16 -05:00
Russell J. Hewett
7cc57d74e4 Updated Blaze version 3.5 and added access to master branch (#12341)
* blaze: added version 3.5

* blaze: added access to bleeding edge
2019-08-09 21:32:54 -05:00
Cameron Stanavige
13112d6b1c flatcc: add version 0.5.3 (#12358)
This updates the flatcc package to have the latest version.
2019-08-09 21:32:10 -05:00
Geoffrey Oxberry
28ffc1a4b9 gnome-common: new package (#12359) 2019-08-09 21:31:47 -05:00
Geoffrey Oxberry
92c65f3150 Add new package: libfive@master (#12334) 2019-08-09 18:10:00 -05:00
Toyohisa Kameyama
b54576abaf sdl2: fix dependency for libxext and build on ARM (#12351)
1. add dependency for libxext2.
2. SSEMATH is off is aarch64.
3. reformat comment for flake8.
2019-08-09 10:24:16 -05:00
Sean McGrath
74fe729be2 New Plink beta version (#12352)
* Plink 1.9 Beta 6.10 added

* Typo Fix
2019-08-09 10:22:18 -05:00
Sinan
a999092a93 newpackage/tippecanoe (#12319)
* newpackage/tippecanoe

* make flake8 happy

* add "r" for raw text
2019-08-09 10:18:26 -05:00
Geoffrey Oxberry
7b47178a53 bugfix: hunspell: add missing gettext dependency (#12347)
* hunspell: write autoreconf method to triage error

This commit fixes the error described in GitHub issue
`AutotoolsPackage` class attempts to call `libtoolize`, which doesn't
exist on macOS systems that externally install `libtool` in Spack via
Homebrew -- Homebrew installzes GNU libtoolize as `glibtoolize`.

The fix is to call `autoreconf` only, and GitHub pull request #12344
makes this change in
AutotoolsPackage (https://github.com/spack/spack/pull/12344). However,
while waiting for that pull request to be merged, overriding the
`autoreconf` method achieves the same result for a self-contained
fix. This self-contained fix is necessary to fix a dependency bug in
the `hunspell` package.

* hunspell: add missing gettext dependency

* hunspell: add version 1.7.0
2019-08-09 10:17:57 -05:00
Derick Huth
850b2ad42e Fixed broken iegenlib package (#12229)
* Fixed broken iegenlib package

* [IEGenLib] fixed for style

* [IEGenLib] style fixes

* [IEGenLib] removed CMAKE_BUILD_TYPE option from config_args
2019-08-09 10:14:17 -05:00
angel-devicente
e203068125 Added checksum for binutils@2.32 (#12350) 2019-08-08 23:56:41 -05:00
Greg Becker
be6ac6ce6d bugfix: nested matrices in spec lists (#12320)
* stack concretization: fix handling of variant names with dashes
* spec_list: bugfix for handling nested matrices
2019-08-08 20:53:31 -07:00
Geoffrey Oxberry
9336a8be38 enchant@2.2.5: new package (#12349) 2019-08-08 22:50:06 -05:00
Toyohisa Kameyama
14bdd56004 hisea: build on ARM. (#12302) 2019-08-08 22:45:23 -05:00
Marc-Andre Hermanns
606246572a Add new releases of Cube Tools, Opari2, OTF2, and Score-P (#12303) 2019-08-08 22:44:33 -05:00
Owen Solberg
178476d8c8 new package: Cromwell (#12309)
* add new package cromwell

* fix flake8 errors, add cromwell-womtool package

* change name of cromwell to cromwell-server

* renamed cromwell-server to just cromwell

* update description to what is in the project docs

* fixing format call for python2.6 compatibility
2019-08-08 22:39:00 -05:00
Sinan
d1e8ea302f new package: aria2 (#12318)
* new package: aria2

* tidy up
2019-08-08 22:36:13 -05:00
Cameron Smith
51adb6a4ef netcdf-cxx4: add m4 dep for call to autoreconf (#12325) 2019-08-08 22:29:42 -05:00
Geoffrey Oxberry
1a432fb213 guile: add versions 2.2.1 through 2.2.6 (#12333) 2019-08-08 22:22:17 -05:00
Adam J. Stewart
89af88aa02 Re-add py-cython dependency to py-tables (#12338) 2019-08-08 21:57:16 -05:00
Adam J. Stewart
b409283ad5 Add py-certifi 2019.6.16 (#12339) 2019-08-08 21:57:01 -05:00
Adam J. Stewart
44f4ad7bbf Allow Spack to uninstall external extensions without permissions (#11991)
* Allow Spack to uninstall external extensions without permissions

Raise when self.projections is not empty
2019-08-08 17:46:14 -07:00
Adam J. Stewart
0b4e13c034 openssl package: add versions including 1.1.1c (#12342)
* Add comment that 1.0.1 versions are no longer supported
* Add comment that 1.0.2 versions are only supported up to
  December 2019
* Add versions 1.0.2s, 1.0.2r, and 1.0.2p
* Add versions 1.1.0k, 1.1.0j, and 1.1.0i
* Add version 1.1.1c
* Add comment that 1.1.0 versions are only supported up to
  September 2019
2019-08-08 17:04:53 -07:00
Pariksheet Nanda
72bb7646fe docs: fix compiler config (#12330)
It's no longer possible to set compiler flags under as an entry under
"paths" in compilers.yaml; instead the user must list these under the
"flags" section. This updates the docs accordingly.
2019-08-08 16:47:24 -07:00
Adam J. Stewart
b4862be875 Fix typo in yaml config docs (#12312) 2019-08-08 10:56:11 +02:00
Greg Becker
36fbd6cf4c bugfix: spack stacks mixed dependency and non-dep constraints (#12315)
Spack stacks drop invalid dependencies applied to packages by a
spec_list matrix operation

Without this fix, Spack would raise an error if orthogonal dependency
constraints and non-dependency constraints were applied to the same
package by a matrix and the dependency constraint was invalid for
that package. This is an error, fixed by this PR.

An example failing configuration:

spack:
  definitions:
  - packages: [libelf, hdf5+mpi]
  - compilers: ['%gcc']
  - mpis: [^openmpi]

  specs:
  - matrix:
    - $packages
    - $compilers
    - $mpis
2019-08-07 18:34:41 -07:00
Peter Scheibel
a791234676 Revert "add maintainer review action to main.workflow" (#12316)
This reverts commit 54e3bc31f9.
2019-08-07 17:23:47 -07:00
Peter Scheibel
92ec732f9a compiler bootstrapping: enable both single-node and multi-node DAGS(#12310)
5f74f22 enabled installing compilers for dependencies but not for the root package (and in particular not for DAGs which consist of one package)

this enables bootstrapping compilers for both types of DAGs
2019-08-07 14:43:25 -07:00
Jon Rood
941eb5d756 Generalize STK package settings in Trilinos (#11917)
* Making STK package in Trilinos more general.

* Remove comment about seacas exodus settings.
2019-08-07 16:11:15 -05:00
Pariksheet Nanda
0c9bc8da86 ncbi-toolkit: add version 22_0_0 (#12278)
* ncbi-toolkit: fix compiler+version restriction (spack/spack#12276)

* ncbi-toolkit: update urls for current and archive releases

* ncbi-toolkit: add compatibility for boost@1.69:

* ncbi-toolkit: add compatibility for boost@1.70:

* ENH: Add debug variant to significantly reduce install size

* ncbi-toolkit: add archive url for 22_0_0 (spack/spack#12278)
2019-08-07 14:18:36 -05:00
Piotr Luszczek
f7026a058b Version 19.8.1 of PLASMA (#12299)
* Remove unnecessary setting with buggy prefix

Spack adds installation prefix by default and the "self." is missing

* Add version 19.8.1 of PLASMA
2019-08-07 00:08:59 -05:00
Daryl W. Grunau
4f6916261c new package: py-exodus (#12291) 2019-08-06 23:11:56 -05:00
Mark W. Krentel
2f84db881b ncurses: fix pic and opt flags (#12272)
Resolves #11932.

Move the PIC flags from CFLAGS on the configure line to the spack
compiler wrapper for ncurses.  The problem with the configure line for
autotools is that specifying CFLAGS sets the entire flags, thus
deleting the flags that configure would add itself.

By default, if CFLAGS is unspecified, then configure picks a sensible
default of `-g -O2`.  But adding `-fPIC` erases these and it ends up
building unoptimized.
2019-08-06 22:21:25 -05:00
Cameron Smith
e077532baf pumi: new version 2.2.1 (#12282) 2019-08-06 22:09:46 -05:00
Tamara Dahlgren
951d42596b tests: explain and test dependency flattening routines (#11993)
- Add comments to explain that `install_dependency_symlinks` and `flatten_dependencies` are actually used.
- Add a test that exercises the routines.
2019-08-06 17:11:23 -07:00
Seth R. Johnson
09d4fcc6ad graphviz package: add MacOS fixes and quartz support (#11128)
* Add patch to detect newer versions of MacOS and to fix a typo in
  configure.ac (AM_LIBTOOLSFLAGS should be AM_LIBTOOLFLAGS)
* Remove variant declarations for unsupported languages
* Add support for quartz on MacOS
* Add optional X Window support
* Specifically build against qt@4 when building QT support
* Point to appropriate C++ standard libraries when building with
  Clang on MacOS
* Disable parallel build (for all platforms)
* Increase verbosity of configure script by adding
  --disable-silent-rules
2019-08-06 16:26:45 -07:00
Adam J. Stewart
66e9b1279a Overhaul numpy package (#12170)
* Add numpy 1.17.0

* Overhaul numpy package

* Flake8 fixes

* Undefined reference fix

* HeaderList and LibraryList need an arg

* veclibfort has no headers

* Add patch for older versions of py-numpy

* Remove py-meep hack from py-numpy package

* libflame: always add max arg hack flag

* Fix build with GCC 4.8

* Compiler flags come from self.compiler

* Only apply -std=c99 to cflags

* Try to fix libflame package

* Fix ATLAS build on macOS

* --force-clang flag added in 3.10.3
2019-08-06 18:20:23 -05:00
Greg Becker
15884a679b mirrors: mirror config should use spack variable expansions (#9027)
- ensure that `$spack` and other variables are substituted into mirror
  paths
2019-08-06 13:54:50 -07:00
Greg Becker
3b4d6ddc03 stacks: fix reference handling in env.write() (#12096)
* stacks: Fix env.write to properly write references
* stacks: regression test for 12095
2019-08-06 12:53:41 -07:00
t-karatsu
d488d04ed3 fltk: fix about variable types (#12292)
* fltk: fix about variable types
2019-08-06 11:07:27 -07:00
Massimiliano Culpo
ae975c48ac Avoid sending empty reports to codecov (#12293)
Before this commit we were sending reports also for unit tests that
were not collecting coverage data.
2019-08-06 10:35:23 -07:00
Daryl W. Grunau
cb7e9c155e Packages/musl (#12288)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* fix-up musl-gcc wrapper script

* address adamjstewart's comments
2019-08-05 20:16:14 -05:00
Toyohisa Kameyama
567cef7ae3 c-blosc package: Add -std=gnu99 flag for gcc (#11959)
When building with GCC, c-blosc requires the -std=gnu99 flag.
Before this patch, the build would only add -std=gnu99 for GCC when
building on specific architectures; this adds -std=gnu99 in all cases
when using GCC.
2019-08-05 18:04:16 -07:00
Adam J. Stewart
2e14cdb8fd Move new packages from tutorial to builtin (#12289)
* Move new packages from tutorial to builtin

* Remove unicode character from docstring
2019-08-05 19:55:39 -05:00
Satish Balay
0db3d6ca37 Balay/amrex 19.08 (#12287)
* amrex: add version 19.08

* amrex: update sundials dependency for @19.08
2019-08-05 17:34:01 -05:00
Axel Huebl
3457dffdca openPMD-api: pre-load depend libs (#12279)
When loading `openpmd-api` as a lib to build outside of
spack or to build depending spack packages, the "CMake-PUBLIC"
header-only library MPark.Variant must be available. Also,
the `*Config.cmake` package must be able to find dependent
libs if used.
2019-08-05 14:02:23 -05:00
Satish Balay
5560d5b601 Add version 19.8.0 of PLASMA (#12275) 2019-08-04 20:37:46 -05:00
Satish Balay
480cd9344f Add version 2.5.1 of MAGMA released today (#12274) 2019-08-04 20:36:48 -05:00
Satish Balay
47aa08081a ginkgo: add maintainers (#12273) 2019-08-04 20:36:04 -05:00
Sinan
3ad61441f1 new package: py-backports-tempfile (#12261)
* new package: py-backports-tempfile

* Update var/spack/repos/builtin/packages/py-backports-tempfile/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* remove rc version

* fix single quote
2019-08-04 16:10:24 -05:00
Todd Gamblin
54e3bc31f9 add maintainer review action to main.workflow 2019-08-04 10:14:44 -07:00
Todd Gamblin
3179d98e12 actions: add maintainers as PR reviewers for their packages (#12269)
Use `spack pkg changed` and `spack maintainers` to figure out which
packages changed and who their maintainers are in a PR.

Add any maintainers to the PR as reviewers.
2019-08-03 21:48:19 -07:00
Pariksheet Nanda
f68cdd1ad0 Fix typo in config (#12267)
Using "compilers" with the "s" is an invalid config section and throws an error.

Traceback (most recent call last):
  File "spack/bin/spack", line 48, in <module>
    sys.exit(spack.main.main())
  File "/home/omsai/src/libkmap/spack/lib/spack/spack/main.py", line 633, in main
    env = ev.find_environment(args)
  File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 263, in find_environment
    return Environment(env)
  File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 534, in __init__
    self._read_manifest(f)
  File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 561, in _read_manifest
    self.yaml = _read_yaml(f)
  File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 402, in _read_yaml
    validate(data, filename)
  File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 395, in validate
    e, data, filename, e.instance.lc.line + 1)
spack.config.ConfigFormatError: /home/omsai/src/libkmap/spack.yaml:15: Additional properties are not allowed ('compilers' was unexpected)
2019-08-03 20:18:44 -05:00
Sinan
7ee56c2f36 package/py-apipkg add new version, add sha256 sums (#12260)
* add new version, add sha256 sums

* Update var/spack/repos/builtin/packages/py-apipkg/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* add python dependencies
2019-08-03 18:38:34 -05:00
Sinan
0b606f7c46 new package: py-backports-weakref (#12262)
* new package: py-backports-weakref

* use the version at pypi.org
2019-08-03 18:37:10 -05:00
Sinan
fcfdfb86c7 new package: py-usgs (#12263)
* new package: py-usgs

* Update var/spack/repos/builtin/packages/py-usgs/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/py-usgs/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-08-03 18:36:55 -05:00
Sinan
cc54d910a6 new package: py-requests-futures (#12264)
* new package: py-requests-futures

* Update var/spack/repos/builtin/packages/py-requests-futures/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-08-03 18:36:42 -05:00
Sinan
9432b1f789 new package: py-colorlog (#12265)
* new package: py-colorlog

* improve styling.

* remove spaces
2019-08-03 18:36:29 -05:00
Sinan
5bb73d4ad3 new package: py-colorpy (#12266)
* new package: py-colorpy

* remove incorrect dependency
2019-08-03 18:36:17 -05:00
Adam J. Stewart
98605bba0d Fix CNL version detection (#12207) 2019-08-03 12:00:30 -07:00
Adam J. Stewart
36558dc262 Add py-uritemplate package (#12259) 2019-08-03 10:44:13 -05:00
Adam J. Stewart
5e2af206d3 Add py-earthengine-api package (#12253) 2019-08-02 23:37:59 -05:00
Adam J. Stewart
c36c7f2bab Add py-google-api-python-client package (#12254) 2019-08-02 23:35:21 -05:00
Adam J. Stewart
ccfaeecfeb Add py-google-auth-httplib2 package (#12255) 2019-08-02 23:35:00 -05:00
Adam J. Stewart
ccc4af4bec Add py-google-auth package (#12256) 2019-08-02 23:34:32 -05:00
Adam J. Stewart
8b270290c4 Add py-httplib2 package (#12257) 2019-08-02 23:34:04 -05:00
Adam J. Stewart
958d385e09 Add py-pyasn1-modules package (#12258) 2019-08-02 23:33:37 -05:00
Adam J. Stewart
0de42519cf Add py-cachetools package (#12252) 2019-08-02 20:47:46 -05:00
Adam J. Stewart
eb528f89a7 Add py-pyasn1 0.4.6 (#12251) 2019-08-02 20:09:15 -05:00
Reinhard Prix
7845d91fda swig: add latest version, 4.0.0 (#12243) 2019-08-02 20:08:26 -05:00
Satish Balay
8010965a3d slepc: update python dependencies to be in sync with petsc (#12250) 2019-08-02 20:07:29 -05:00
Daryl W. Grunau
b4f8294408 packages/musl (#12247)
* new musl package
2019-08-02 20:06:59 -05:00
Massimiliano Culpo
90756d0428 Refactor UI logic out of Environment.concretize (#12213)
Environment.concretize returns newly-concretized specs rather than
printing them; as a result, the _display argument is removed from
Environment.concretize (originally only used to avoid printing specs
during unit testing). Command logic which invokes
Environment.concretize prints these explicitly.
2019-08-02 17:27:51 -07:00
Marc-Andre Hermanns
0290170935 Set default resource manager to 'none' (#12092) 2019-08-02 19:23:14 -05:00
Toyohisa Kameyama
50b90ed2bf minimap2, py-mappy: change dependency and build on ARM (#12127)
* minimap2: remove py-mappy dependency and build on ARM
py-mappy: Change URL and new version.

* merge py-mappy to minimap2.

* 1. add type in depends_on.
2. remove unneeded which.
2019-08-02 19:21:33 -05:00
Chris Green
0c1496896d Resolves #11487. (#12136)
* Incorporate as a patch upstream commit 0c20dbf059 (diff-acb9169b4ccbac494ced5140d285a015) resolving problems with `-Wno-...` options not being understood by GCC.
* Incorporate as a patch upstream PR https://github.com/ericniebler/range-v3/pull/1202 fixing upstream issue https://github.com/ericniebler/range-v3/issues/1196.
* Compile tests only if we actually want to run them.
* Optionally compile documentation with a `+doc` variant.
* Add `+examples` and `+perf` variants to avoid unnecessary compilation of components usually not required for install.
* Add conditional build-only dependency on Boost when appropriate.
* Install docs, examples and performance tests if built (not part of upstream build instructions).
* Add @chissg as a maintainer.
2019-08-02 19:19:39 -05:00
Toyohisa Kameyama
b6789b2ba3 py-flye: change to build ARM. (#12176) 2019-08-02 19:15:49 -05:00
Todd Kordenbrock
a54687ead9 FAODEL: Add 1.1906.1 (#12180) 2019-08-02 19:14:21 -05:00
Toyohisa Kameyama
dbeee34829 vdt: add simd variant (#12188)
1. add simd variant and check target.
2. build on source directory before 0.3.8.
2019-08-02 19:10:39 -05:00
TiffanyAnn
ff15f61443 py-mpi4py: Added build argument for mpicc path (#12191)
* added build arguments to resolve error with Cray-MPICH

* fixed indentation
2019-08-02 19:09:37 -05:00
Hironori-Yamaji
53bd964a59 ermod: new package (#12192) 2019-08-02 19:08:35 -05:00
Toyohisa Kameyama
53b1a92f69 parsimonator: Enable build on non x86_64 hosts. (#12194) 2019-08-02 19:07:43 -05:00
Glenn Johnson
6278ba43e9 Update c-blosc and fix building tests with icc (#12204)
- Update c-blosc to 1.17.0
- Add patch to build test_forksafe for versions 1.15.0 through 1.17.0
  when compiled with the Intel compiler.
- Remove code that turned off building the test with the Intel compiler
2019-08-02 19:05:43 -05:00
Toyohisa Kameyama
93f6833990 raxml: compile n non-x86 hosts. (#12208)
1. xmmintrrin.h is included x86 only.
2. Add makefiles for non-x86 hosts.
3. mpicc in Makefiles is replaced spacks mpi compile command.
4. variant check is rewite with satisfies.
2019-08-02 19:04:25 -05:00
Toyohisa Kameyama
3fc5a08f5b dialign-tx: build on ARM. (#12210) 2019-08-02 19:02:36 -05:00
liuyangzhuan
474bf18853 added a package butterflypack (#12222)
* added a package butterflypack

* remove one line in the python script
2019-08-02 18:58:30 -05:00
Mark W. Krentel
45d852b87d hpcviewer: update sha sums for version 2019.07 (#12236)
We (Rice HPCToolkit) issued a re-release of hpcviewer 2019.07 due to
some serious bugs.
2019-08-02 18:55:46 -05:00
Satish Balay
4ee260d3e3 ginkgo: fix branch -> commit for @1.0.0. Also add variant: develtools (#12248)
This fixes error with multiple builds - when they use the cached tarball.
2019-08-02 18:54:15 -05:00
dbs8842
2529b753da liggghts: added version 3.8.0 (#12242) 2019-08-02 18:53:06 -05:00
Gregory Lee
214b67066e glib: fix glib dependency build fixes #9992 (#12153)
add rpaths for glib config and py-pygobject build
2019-08-02 15:18:04 -05:00
wspear
9dd61f5313 Fixed arch setting variants. Activate cray arch automatically. (#11203) 2019-08-02 15:14:43 -05:00
Chuck Atkins
0e532d324c adios2: Fix backwards compatibility version logic for FindMPI (#12241) 2019-08-02 15:27:47 -04:00
Tamara Dahlgren
574c13837f packages: Add autotools dependencies to bolt (#12246)
Fixes #12060 (per wspear).

This change is needed for minimal container environments.
2019-08-02 12:22:51 -07:00
Patrick Gartung
9cf6aece85 Geant4 data packages: Set the install path name explicitly. (#12244)
* Geant4 data packages: Set the install path name explicitly.

* Use the correct directory name for g4photonevaporation,g4radioactivedecay,g4realsurface
2019-08-02 13:48:35 -05:00
Chris Green
023de09134 mysql package: New versions, add conflicts, cope with use of dtrace. (#11356)
* Add versions 8.0.16, 5.7.26, and 5.6.44
* Update boost dependency for versions 8.0.16, 8.0.15, and 8.0.14
* Update dtrace script when building for versions before 8 as is done
  for the glib package
* Set perl as a build dependency for versions before 8
* cxxstd=17 conflicts with version 8 when server code is built
  (~client_only)
* Add -Wno-deprecated-declarations for cxxstd > 11
* Add -Wno-error=register for cxxstd > 14
2019-08-02 10:51:02 -07:00
Axel Huebl
46f03074ef openPMD-api: Increase ADIOS2 Minimum (#12169)
The minimum required version of ADIOS2 is v2.4.0 .
2019-08-02 15:31:29 +02:00
MikeG
d384025df7 valgrind: added version 3.15.0 (#12239) 2019-08-02 15:10:37 +02:00
Seth R. Johnson
68d78c0dbe Fix py-matplotlib build (#12230) (#12234) 2019-08-01 17:58:06 -05:00
Seth R. Johnson
46027bea13 Fix QT4 build for mac (#10944)
This updates the Spack QT package to enable building qt version 4 on
MacOS. 

This includes the following changes to the qt package:

* add version 4.8.7
* add option to build with or without shared libs
* add options to disable tools, ssl, sql, and freetype support
* add qt4-tools patch when building qt@4+tools
* add option to build as a framework (only available on MacOS)
* replace qt4-el-capitan patch with qt4-mac patch (which includes the
  edits from qt4-el-capitan)
* apply qt4-pcre-include-conflict.patch only for version 4.8.6
  (rather than all 4.x versions)
* apply qt4-gcc-and-webkit.patch for 4.x versions before 4.8.7 and
  create a separate qt4-gcc-and-webkit-487.patch for version 4.8.7
* update patch function for qt@4 on MacOS to update configure
  variables relevant to Spack (e.g. PREFIX)
* add option to build freetype with Spack, as a vendored dependency
  of QT, or not at all (default is to build with Spack)

This includes the following edits outside of the qt package:

* Update MacOS version utility function to return all parts of the
  Mac version (rather than just the first two)
* gettext package: implement "libs"
* python package: add gettext as a dependency
2019-08-01 10:22:35 -07:00
Patrick Gartung
4ff14bd0b2 Buildcache: skip binary string replacement with padding when the new install path is longer than the old install path. (#12227)
* Raise an exception and exit with a meaningful message when binary path substitution fails.

* Skip binary text replacement with padding and issue a warning when the new install path is longer than the old install path.
2019-08-01 12:07:04 -05:00
Ben Bergen
8922c1f666 Add HDF5 variant to Legion package (#12221) 2019-08-01 10:33:29 -06:00
Sajid Ali
e21e10837f modified: var/spack/repos/builtin/packages/blis/package.py (#12225) 2019-08-01 09:37:23 -05:00
Sajid Ali
f30b717744 Add libflame (#12193)
* Add libflame

	new file:   var/spack/repos/builtin/packages/libflame/Makefile_5.1.0.patch
	new file:   var/spack/repos/builtin/packages/libflame/package.py

* 	modified:   var/spack/repos/builtin/packages/libflame/package.py
2019-08-01 09:33:24 -05:00
Adam J. Stewart
61b824580e py-pyqt5: add missing py-enum34 dependency (#12224) 2019-08-01 13:30:35 +02:00
t-karatsu
9b03ab43ed bdw-gc: add variant for Multithreading (#12223) 2019-08-01 13:29:41 +02:00
Mark W. Krentel
e628f1b4eb unzip: fix build for cray back-end
Fixes #12007.

The Cray cc wrappers don't handle the -s flag (strip) cleanly, It's
not essential to strip the binary, so just remove the flag on Cray.

Note: the default build on Cray is for the back end and the unzip
binary won't run on the front end.  To build for FE, use something
like arch=cray-fe-x86_64.
2019-07-31 20:44:40 -07:00
Gregory Lee
2c2abb454c fix mpa package build error with a patch (#12217) 2019-07-31 16:48:06 -05:00
Gregory Lee
162f1338d9 patch launchmon to fix char * conversion error (#12219) 2019-07-31 16:47:35 -05:00
Rémi Lacroix
5c970613b6 Magma: fix prefix (#12220)
`prefix` is not available in `cmake_args` method, use `self.prefix`.
Fixes #12214.
2019-07-31 16:43:47 -05:00
Levi Baber
8ec9ebc92f should not need bin prefix on spack command (#12215) 2019-07-31 12:58:01 -05:00
Todd Gamblin
33701cc355 docs: update tutorial slides for PEARC19 2019-07-31 12:55:59 -05:00
Adam J. Stewart
f7d1df4d3a Update Package Creation Tutorial for PEARC19 (#12209)
* Update Package Creation Tutorial for PEARC19

* A few remaining fixes

* Fix section link
2019-07-31 12:54:09 -05:00
Matthieu Dorier
65a1db87f8 Preventing jsoncpp from building tests (#11948)
* Preventing jsoncpp from building tests
jsoncpp: making -DJSONCPP_WITH_TESTS=OFF conditioned by self.run_tests
2019-07-31 12:18:25 -05:00
Christoph Junghans
4ea5e177cd CMake: make ninja verbose as well (#12200) 2019-07-31 08:41:58 -06:00
Ondřej Čertík
7e61527f9e F18: Fix the location to the f18 binary (#12186) 2019-07-31 15:43:08 +02:00
jthies
ae1524821e phist: added version 1.8.0 (#12201) 2019-07-31 15:35:59 +02:00
t-karatsu
b744accaf6 igvtools: fixed query on jdk instead of java (#12195) 2019-07-31 14:49:51 +02:00
Javier Cervantes
a948954886 Print environment name when removing active env (#12198) 2019-07-31 14:40:11 +02:00
Adam J. Stewart
d973fca00e Fix Sphinx deprecation warning when building docs (#12205)
* Fix Sphinx deprecation warning when building docs

* Set minimum required version of Sphinx
2019-07-31 10:23:56 +02:00
Ryan S. Elliott
86ff5baed7 kim-api: added version 2.1.2 (#12189) 2019-07-31 09:13:13 +02:00
t-karatsu
268c806111 genomefinisher: fixed query on jdk instead of java (#12196) 2019-07-31 08:55:56 +02:00
Adam J. Stewart
db2bbbcecf Add pandas 0.25.0 (#12173) 2019-07-30 17:16:32 -05:00
Adam J. Stewart
59e9541386 Add tables 3.5.2 (#12172) 2019-07-30 17:16:15 -05:00
Adam J. Stewart
60da9303c6 Update numexpr dependency version (#12168) 2019-07-30 17:15:38 -05:00
Adam J. Stewart
70512b8ba2 Add py-matplotlib 3.1.1 (#12164) 2019-07-30 17:15:20 -05:00
Adam J. Stewart
482152e092 Add py-wxpython package (#12163) 2019-07-30 17:13:32 -05:00
Adam J. Stewart
c1c5f58d12 Add py-cairocffi package (#12161) 2019-07-30 17:13:02 -05:00
Adam J. Stewart
b34da4e108 Add SIPPackage base class (#12157) 2019-07-30 17:12:48 -05:00
Adam J. Stewart
f487f87e3e Add Magics 4.1.0 (#12078) 2019-07-30 17:11:47 -05:00
Adam J. Stewart
e728883c71 Add eccodes 2.13.0 (#12077) 2019-07-30 17:11:29 -05:00
Adam J. Stewart
354ef2f9ca Allow bsseeker to build with Python 3 (#12075) 2019-07-30 17:11:14 -05:00
Adam J. Stewart
e13bc0212c Add py-pipits 2.4 (#12074)
* Add py-pipits 2.4

* Flake8 fix
2019-07-30 17:10:57 -05:00
Justin S
175abecc0b mii: new package at 1.0.2 (#12184)
* mii: new package at 1.0.2

* mii: fix improper formatting in description

* mii: add 1.0.3
2019-07-30 16:16:41 -05:00
健美猞猁
544914f34b gromacs: added version 4.5.5 (#12197) 2019-07-30 16:07:07 +02:00
Ben Bergen
73a9d6556e New package: cgdb (#12154) 2019-07-29 17:19:53 -07:00
Hans Pabst
6db873532c LIBXSMM package: add version 1.13 and optional shared libs (#11998)
* Add +shared variant, which builds shared library in addition to the
  static library.
* Install libraries even when specifying the header-only option
  (header-only is just about installing an additional folder).
* An additional make call is not required to build generator
  executables (they are built by default).
* Streamlined help-line of each variant.
2019-07-29 17:14:41 -07:00
Toyohisa Kameyama
5f716b7ffa hpgmp package: Don't add cpu=native on ARM when using gcc 5.x or before (#12034) 2019-07-29 16:53:59 -07:00
Adam J. Stewart
b8b2fa226e CMOR package: add version 3.4.0 (Python3-compatible) (#12076) 2019-07-29 16:12:37 -07:00
Nick Forrington
6e9f51d1d2 Quantum Espresso package: Specify F90 compiler (#12119) 2019-07-29 15:53:39 -07:00
Adam J. Stewart
c9e5de85fd SimulationIO package: add version 9.0.1 (#12079) 2019-07-29 15:40:57 -07:00
Chuck Atkins
f18c9e0ba5 catalyst package: Fix paths used for intermediate code generation (#12082)
Fixes #12065
2019-07-29 15:31:07 -07:00
Adam J. Stewart
f88636b090 PISM package: add version 1.1.4 (#12083) 2019-07-29 15:26:03 -07:00
Adam J. Stewart
23420a6524 Typo fixes in Environments Tutorial (#12107) 2019-07-29 17:13:56 -05:00
Adam J. Stewart
9af155f0f6 Fix some Mac constraint checks (#12138)
* Fix Mac platform check for dependency in py-ipython package: 'when'
  constraints in Spack directives must be Specs (either a Spec
  object or a Spec in string format)
* Fix Mac version check in py-numpy: platform.mac_ver() returns a
  3-part string as its first tuple item so the check as written would
  never pass; use Spack Version object to simplify check.
* Fix Mac version check in qt package (the check was incorrectly
  comparing ints and strings) and use Spack version object to
  simplify check.
2019-07-29 15:05:02 -07:00
Glenn P Johnson
e7d9a6f426 Add conflicts statement for Python-3.6.7+ and Intel compiler
Python-3.6.7 and up do not build with the Intel compiler

- https://bugs.python.org/issue35473
- https://bugs.python.org/issue37415
2019-07-29 14:38:05 -07:00
Federico Ficarelli
dbd294c204 zeromq package: choose URL based on version; add versions (#12149)
* Add versions 4.3.0, 4.3.1, and 4.3.2
* The URL format changed after 4.1.4, so this adds a url_for_version
  function to choose the URL format based on the version
2019-07-29 14:36:33 -07:00
Hironori-Yamaji
43dd6b3418 Gromacs package: add openmp, mdrun_only, double_precision options (#12150) 2019-07-29 14:29:04 -07:00
Adam J. Stewart
c3dc63ce8f New package: py-pytest-isort (#12160) 2019-07-29 14:02:06 -07:00
Jon Rood
3e02dc258b LLVM package: add optional libomp_tsan support (#11793)
This is only available for LLVM version 6 or greater. So this also
adds a conflict statement for earlier versions of LLVM.
2019-07-29 12:23:15 -07:00
Owen Solberg
ee1c36a2b0 update cmake 3.15.1 checksum (#12182) 2019-07-29 15:13:52 -04:00
Adam J. Stewart
0d0a02b230 OpenGL package: always provides gl (#12158)
With this PR, a user can designate older versions of OpenGL as an
external Spack package, and dependents can use that installation
as long as they do not have version requirements.

MacOS currently comes with OpenGL 2.1; there is currently no
'provides' directive in the OpenGL Spack package which specifies a
gl version provided for versions earlier than OpenGL 3.3, so earlier
versions of OpenGL are not considered to provide any version of gl.
This PR records that any version of OpenGL provides 'gl' (which is
sufficient for any package that does not require a specific version
of gl).
2019-07-29 12:11:53 -07:00
Greg Becker
f78fc30032 intel: Add mpicc wrapper bindir to dependent env (#12132) 2019-07-29 12:04:15 -07:00
Adam J. Stewart
d1752d8640 py-scipy package: add version 1.3.0 (#12171)
* Version 1.3.0 requires python 3.5 or later (no Python 2 support)
* Remove test of scipy.weave import (not available since 1.0)
* Add more-sensitive py-numpy constraints based on py-scipy version
* Replace py-nose dependency with py-pytest
* Add adamjstewart as maintainer
2019-07-29 11:57:59 -07:00
Adam J. Stewart
249f571556 New package: py-torchvision (#12175) 2019-07-29 11:42:08 -07:00
Adam J. Stewart
18bd189876 PyTorch package: add version 1.1.0 (#12174)
* Rename py-pytorch to py-torch
* Add versions 1.1.0 and 1.0.1
* Define modules to test import of after installation (import_modules)
* py-typing dependency is only needed for older versions of Python
  (3.4 or before)
* Newer versions of py-torch depend on newer versions of CUDA
* Add adamjstewart as maintainer
2019-07-29 11:39:05 -07:00
Seth R. Johnson
3d0b5bd541 Change dependencies to use virtual jpeg package (#12179)
This prevents conflicts between descendents that depend on an unintentional
arbitrary jpeg implementation.
2019-07-29 12:08:55 -05:00
Kelly (KT) Thompson
a3f6f52622 Add a new version (7.2) of draco. (#11852)
This change also
+ Makes the `build_type` user settable and
+ Adds support for running tests.
+ Provide depends_on('cmake') for versions prior to 7.0.
2019-07-28 22:15:21 -05:00
Jeongseok Lee
e23d613ee6 Update checksum of fmt 5.3.0 (#12037) 2019-07-28 22:07:51 -05:00
Seth R. Johnson
95985e0798 Prevent conflicts between libuuid and Apple Cocoa Framework on Mac (#12166)
* Remove libuuid dependency for python on Darwin

Python 2.7 includes Carbon, which requires a proprietary typedef defined in
the system `/usr/include/uuid/uuid.h`:
```
In file included from /rnsdhpc/code/spack/var/spack/stage/python-2.7.16-chgwvgls4ezgujsknn27vlmkhwbzpqik/Python-2.7.16/Python/mactoolboxglue.c:27:
In file included from /rnsdhpc/code/spack/var/spack/stage/python-2.7.16-chgwvgls4ezgujsknn27vlmkhwbzpqik/Python-2.7.16/Include/pymactoolbox.h:10:
In file included from /System/Library/Frameworks/Carbon.framework/Headers/Carbon.h:20:
In file included from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:23:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/usr/include/hfs/hfs_format.h:794:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
```

Similarly, even with Python 3, having Spack's libuuid in the toolchain
causes matplotlib to fail to build downstream because its `osx` backend
links against Carbon:
```
building 'matplotlib.backends._macosx' extension
/rnsdhpc/code/spack/lib/spack/env/clang/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include -I/usr/X11/include -I/opt/X11/include -I. -I/rnsdhpc/code/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/python-3.7.2-bipx24oyxqxowqc75o5vfih7dljiaohz/include/python3.7m -c src/_macosx.m -o build/temp.macosx-10.14.5-x86_64-3.7/src/_macosx.o
In file included from src/_macosx.m:1:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:87:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:15:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:24:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/hfs/hfs_format.h:794:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
        uuid_string_t   ext_jnl_uuid;
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/device/device_types.h:89:33: note: 'io_string_t' declared here
typedef char                    io_string_t[512];
```

MacOS version 10.14.5
Xcode 10.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)

* Mark libuuid as conflicting with Darwin due to framework

If Spack's libuuid is included by any other package that tests for or
requires the Cocoa or Carbon frameworks, the build will *fail* becuse it
appears that Apple's libraries require a special version of libuuid and
uuid.h.

```
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:87:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:15:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:24:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/hfs/hfs_format.h:794:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
        uuid_string_t   ext_jnl_uuid;
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/device/device_types.h:89:33: note: 'io_string_t' declared here
typedef char                    io_string_t[512];
```

* Revert "Mark libuuid as conflicting with Darwin due to framework"

This reverts commit 9a68b75202.

* Document libuuid exception in python package
2019-07-28 14:58:09 -05:00
Sajid Ali
9afd5113bc Bump version for BLIS (#12162)
modified:   var/spack/repos/builtin/packages/blis/package.py
2019-07-27 18:32:06 -05:00
Chuck Atkins
8d0c3e482f cmake: Bump to 3.15.1 (#12151) 2019-07-27 12:21:03 -05:00
Xavier Delaruelle
398c53eaa2 environment-modules package: add version 4.3.0 (#12155) 2019-07-27 12:20:39 -05:00
Chuck Atkins
18e41f9959 adios2: Patch findmpi for downstream issues. (#12152) 2019-07-26 13:17:31 -07:00
Sinan
511f84dd8c kealib: fix incorrect md5sum for v1.4.11 (#12126)
* fix incorrect md5sum for v1.4.11

* fix url and replace md5 with sha256

* add mainter
2019-07-26 15:14:46 -05:00
Ryan S. Elliott
12055acccc update to kim-api-2.1.1 and openkim-models-2019-07-25 (#12137)
* update to kim-api-2.1.1 and openkim-models-2019-07-25

* openkim-models provide needed dependency constraints and settings

* add maintainers and fixup flake8 errors
2019-07-26 13:06:10 -05:00
Adam J. Stewart
fbb04ece43 Add flake8 3.7.8 (#12141) 2019-07-26 12:11:07 -05:00
t-karatsu
21daa41dd6 libxc: Make configure recognize Fujitsu compiler (#12147) 2019-07-26 12:09:52 -05:00
Justin S
e2d16429ae py-pyomo: new package at 5.6.6 (#12134)
* py-pyomo: new package at 5.6.6

* py-pyomo: add missing deps, python constraint
2019-07-26 10:38:25 -05:00
Rémi Lacroix
9caba3e072 Small fixes for font-util package (#12148)
* font-util: Remove duplicated dependencies.

* font-util: Fix path handling for font resources.

The "join_path" call made no sense but still managed to work somehow most of the times.
2019-07-26 10:32:39 -05:00
Adam J. Stewart
0babdab8f0 Add GDAL 3.0.1 (#12140) 2019-07-26 09:25:35 +02:00
Adam J. Stewart
07fefea52d Add Python 3.7.4 (#12142) 2019-07-26 09:18:46 +02:00
Oliver Breitwieser
867ba9d7fe googletest: Fix reversed +pthreads option (#12128)
If +pthreads is specified, googletest actually gets build without
pthreads support and vice versa.

If pthreads is not available, googletest should detect it itself which
is why "enabling" pthreads in case of ~pthreads does not seem to cause
any error.

Change-Id: I29de8c4a23dc3901124b27a1ead3354949b7e65b
2019-07-25 19:50:23 -05:00
Justin S
94af6cad5f interproscan: new package at 5.36-75.0 (#12130) 2019-07-25 19:49:42 -05:00
Matthias Diener
7cc1292202 git-lfs: add version 2.8.0 (#12131) 2019-07-25 19:46:03 -05:00
Glenn Johnson
7ad8061cbb Patches for graphviz (#12133)
- patch to build with qt5, enabling gvedit to build
- two patches to compile graphviz with icc
2019-07-25 19:45:10 -05:00
Satish Balay
7bd3b66f6e xsdk: phist has a conflict with gcc version <= gcc-4.9.1 (#11946)
* xsdk: phist has a conflict with gcc version <= gcc-4.9.1 - so add a variant to disable it on older compiler builds

This is triggered by #11677

* fix typo
2019-07-25 14:01:00 -05:00
Gregory Lee
e8a71089a6 use Excecutable instead of exec for editing licenses (#11968)
* fix defunct editor exit in #11691
2019-07-25 11:48:32 -07:00
Elizabeth Fischer
fff99a8a3a Make OpenJDK the default (#12106) 2019-07-25 10:25:26 -07:00
Chuck Atkins
e614d4b481 cmake: Add a patch to revert a findmpi regression (#12129) 2019-07-25 10:23:01 -07:00
Chris Green
c20c153d16 catch: more versions, new and older. (#12123)
New versions 2.9.0, 2.9.1, older versions 2.2.2, 2.2.3, 2.4.1, 2.4.2, 2.7.0, 2.7.1, 2.7.2.
2019-07-25 11:33:03 -05:00
simo-tuomisto
4c7ee8b7c8 lame & libmad: Added two new packages for sox mp3 support. (#11964)
* Added a new package for LAME and a variant in sox for it.

* Fixed download url for LAME

* libmad: Added new package libmad for mp3 decoding. Changed sox variant from lame to mp3.

* libmad: Added m4 as a requirement

* libmad: Added comment on patch origins

* libmad: Added a list_url for alternate download location

* libmad: Fixing libmad download url
2019-07-25 10:40:50 -05:00
Sinan
9ace419aa5 gdal: added versions 2.4.2 and 3.0.1 (#12125) 2019-07-25 17:14:37 +02:00
Chris Green
4190f302e5 geant4: improvements with respect to building against CLHEP. (#12124) 2019-07-25 08:58:13 -05:00
Todd Gamblin
b0abbfecb8 new command: spack maintainers queries package maintainers
- We don't currently make enough use of the maintainers field on
  packages, though we could use it to assign reviews.

- add a command that allows maintainers to be queried
  - can ask who is maintaining a package or packages
  - can ask what packages users are maintaining
  - can list all maintained or unmaintained packages

- add tests for the command
2019-07-24 14:10:08 -07:00
Tamara Dahlgren
7411347a29 tests: Test install of unconcretized spec (#12099) 2019-07-24 13:30:27 -05:00
Glenn Johnson
8bb745325d Add py-setuptools as a build dependency for py-absl-py (#12109)
I needed to add py-setuptools to get py-absl-py to build.
2019-07-24 12:33:45 -05:00
Glenn Johnson
642d3345f6 Add conflicts statement to freetype for icc (#12111)
Freetype-2.8 and above use __builtin_shuffle which is not supported by
icc.
2019-07-24 12:33:24 -05:00
t-karatsu
0f98cf0398 Perl take in flags (#12112)
* perl: perl package takes in spack cflags.

* fix for flake8 test.
2019-07-24 12:32:49 -05:00
Toyohisa Kameyama
bbc689ae38 nnvm: cmake bug is fixed. (#12113) 2019-07-24 12:31:49 -05:00
Toyohisa Kameyama
cb62b1ff85 rapidjson: Don't add -march=native on ARM and gcc 5.x or before. (#12117) 2019-07-24 12:30:32 -05:00
Nichols A. Romero
63813fa9c0 QMCPACK Update July 2019 (#12097)
* Add QMCPACK v. 3.8.0

* Remove QE variant conflict for serial QMCPACK installations.

* Add support for QE 6.4.1 converter.

* FindLibxml2QMC patch function only needed prior to QMCPACK 3.8.0
2019-07-24 12:28:35 -05:00
Glenn Johnson
42c3782f7e Do not build c-blosc test if intel in spec (#12110)
While the c-blosc library compiles with icc some of the c-blosc tests do
not. Disable the tests so that the spack build can continue.
2019-07-24 11:17:11 -05:00
t-karatsu
0d690edfb2 cmake: fix cxx98flag's name (#12114) 2019-07-24 11:28:22 -04:00
Massimiliano Culpo
6fac0ae687 Fixed a name clash in the 'from_environment_diff' function (#12116)
* Added a unit test reproducing the failure in 12085

* Fixed name clash in the 'from_environment_diff' function

The bug reported in #12085 stemmed from a name clash among variables,
introduced during the refactor in #10753 and not caught by unit tests
and reviews.
2019-07-24 10:25:24 -05:00
Toyohisa Kameyama
a8b12f0cb6 rocksdb: Don't add -march=native on ARM and gcc 5.x or before. (#12108) 2019-07-23 22:33:05 -05:00
Douglas Duckworth
ec29461632 added relion 3.0.7 - removed deprecated versions (#12101)
* relion - added v 3.0.7 and removed deprecated versions that have inferior performance

* relion 3.0.7 does require cuda 9 or above
2019-07-23 18:13:00 -05:00
Adam J. Stewart
58427a7102 Typo fixes in Spack Environments docs (#12100) 2019-07-23 17:42:16 -05:00
Toyohisa Kameyama
6b07407cd0 isaac-server: Don't add -march=native on ARM and gcc 5.x or before. (#12042) 2019-07-23 16:48:25 -05:00
Toyohisa Kameyama
39139b9db8 nanoflann: Don't add -mtune=native on ARM and gcc 5.x (#12093) 2019-07-23 16:47:28 -05:00
Nichols A. Romero
2b35ad7b22 Quantum Espresso Update 2019 (#12098)
* Add support for QE 6.4.1

* QE 6.3. backports branch no longer relevant.

* List QE develop first.
2019-07-23 16:44:08 -05:00
Jimmie Lin
8095e26ffa Add EFA fabric to libfabric 2019-07-23 12:08:33 -07:00
Greg Becker
daac376862 error messages: include whole spec for "no externals found" message (#12070)
* Provide better error message when matching externals are found for package marked not buildable
2019-07-23 13:58:07 -05:00
Pariksheet Nanda
5878b418c5 ioapi: add version 3.2 (#12088)
* ioapi: add version 3.2

* ioapi: unwrap version checksum; it's exempt from line length QA

* ioapi: drop overridden build(); it's the same as the default
2019-07-23 12:10:01 -05:00
Gregory Becker
a086dda82f hashing: fix caching of dependency hashes in to_node_dict 2019-07-23 08:58:49 -07:00
Greg Becker
4ff2773704 ncurses: remove TERMINFO from build env (#12086) 2019-07-23 10:13:41 -05:00
Marco Comparato
7ea4e50587 font-util: add missing autoconf automake dependencies (#12053) 2019-07-23 09:41:04 -05:00
Todd Gamblin
3cb40e1c02 commands: add tests for all subcommands of spack pkg 2019-07-22 23:01:45 -07:00
Todd Gamblin
0b17bccdce commands: add spack pkg changed subcommand, better test support
- Add `spack pkg changed` to show changed and added packages for a
  commit.

- Make `spack pkg` support tests better.
2019-07-22 23:01:45 -07:00
Daniel Topa
07f3921838 Add UCX 1.6.0 (#12089)
https://github.com/openucx/ucx/releases/tag/v1.6.0
Released 2019-07-17

Verification builds on LANL Darwin x86_64 and Power9:

dantopa@cn2037:pr-update-ucx.spack $ date
Mon Jul 22 17:04:14 MDT 2019

dantopa@cn2037:pr-update-ucx.spack $ pwd
/scratch/users/dantopa/repos/spack/pr-update-ucx.spack

dantopa@cn2037:pr-update-ucx.spack $ spack find -ldf ucx

==> 2 installed packages
-- linux-centos7-x86_64 / gcc@4.8.5 -----------------------------
w7fp4n6    ucx@1.6.0%gcc
tt2hkol        ^numactl@2.0.12%gcc
srhy7ry        ^rdma-core@20%gcc
kvgvhpv            ^libnl@3.3.0%gcc

-- linux-rhel7-ppc64le / gcc@4.8.5 ------------------------------
cji3ce7    ucx@1.6.0%gcc
pmgndwh        ^numactl@2.0.12%gcc
qymrwx6        ^rdma-core@20%gcc
2263pm5            ^libnl@3.3.0%gcc

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2019-07-22 21:43:35 -05:00
Matthias Diener
19968a0035 scons: add version 3.1.0 (#12084) 2019-07-22 17:35:40 -05:00
Chuck Atkins
69c302f455 cmake: Move cxx11 flags for fujitsu into the flag_handler method (#12056)
* cmake: Move cxx11 flags for fujitsu into the flag_handler method

* cmake: sanitization and error checking in flag_handler

* cmake: Fix fujitsu flag check from 'fc' to 'fj'
2019-07-22 17:33:40 -05:00
Denis Davydov
8cef81363c gcc: support without command line tools (#11040) 2019-07-22 16:53:50 -05:00
Adam J. Stewart
2d144316a8 Fix version scraping for CRAN packages (#12021)
* Fix version scraping for CRAN packages
* Remove set literals
2019-07-22 13:05:55 -07:00
Todd Gamblin
cc4094bb9b bugfix: env.write() should stringify Spec lists.
- Setting specs from lockfiles was not correctly stringifying concretized
  user specs.

- Fix `_set_user_specs_from_lockfile`

- Add some validation code to `SpecList` constructor
2019-07-22 13:45:34 -05:00
Peter Josef Scheibel
7ec1d320a8 hashes: consolidate and make hashing logic more consistent
Spack has evolved to have three types of hash functions, and it's
becoming hard to tell when each one is called. Whlie we aren't yet ready
to get rid of them, we can refactor them so that the code is clearer and
easier to track.

- Add a `hash_types` module with concise descriptors for hashes.

- Consolidate hashing logic in a private `Spec._spec_hash()` function.

- `dag_hash()`, `build_hash()`, and `full_hash()` all call `_spec_hash()`

- `to_node_dict()`, `to_dict()`, `to_yaml()` and `to_json()` now take a
  `hash` parameter consistent with the one that `_spec_hash()` requires.

Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2019-07-22 13:45:34 -05:00
Peter Josef Scheibel
0715b512a1 env: environments index specs by full DAG w/build deps
- ensure that Spec._build_hash attr is defined
- add logic to compute _build_hash when it is not already computed (e.g. for specs prior to this PR)
- add test to ensure that different instance of a build dep are preserved
- test conversion of old env lockfile format to new format
- tests: avoid view creation, DAG display in tests using MockPackage
- add regression test for more-general bug also fixed by this PR
- update lockfile version since the way we are maintaining hashes has changed
- write out backup for version-1 lockfiles and test that
2019-07-22 13:45:34 -05:00
zschulte
db7127c56d openjdk (#10446)
* openjdk

* Removing preferred from latest and adding a few lines for readability.

* Remove bad whitesapce

* removing formatting changes

* stable url for openjdk 1.8

* remove extra blank line

* actual binary
2019-07-22 13:11:45 -05:00
Toyohisa Kameyama
58c84423b1 tealeaf: Don't add -march=native on ARM and gcc 5.x or before. (#12080) 2019-07-22 13:03:43 -05:00
Hironori-Yamaji
8e92409263 jdk: Add JDK 12.0.2_10 (#12081) 2019-07-22 12:40:11 -05:00
Mark W. Krentel
6111758b48 hpctoolkit: add version gpu and variant cuda (#12068)
Add version for 'gpu' and variant for 'cuda'.  These are currently available from the 'master-gpu' branch.

* hpctoolkit: add version gpu and variant cuda
* The gcc >= 4.8.x requirement only applies for dyninst >= 10.x.
2019-07-21 22:29:08 -07:00
Toyohisa Kameyama
8ca90e26d9 libsharp: Don't add -march=native on ARM (#12064)
* libsharp: Don't add -march=native on ARM

* Add preferred=True to version 1.0.0.
2019-07-21 21:56:14 -05:00
Omar Padron
1d5ab13be8 docker: fix builds, remove extra distros, add ci builds (#11621)
* fix docker builds/remove extra builds/add ci builds
* preinstall vim in CI builder images
* simplify & streamline docker resources
* restore os-container-mapping.yaml file
2019-07-20 14:46:06 -07:00
Adam J. Stewart
7d954720ff Add OpenMP flag for Apple Clang (#12049) 2019-07-20 13:40:36 -07:00
Massimiliano Culpo
a2cb26f520 tests: speed up tests that rely on the database fixture (#12031)
The database and mutable_database fixtures were installing and uninstalling the same specs multiple times to ensure the database for tests has the correct state.

This commit optimizes the procedure by caching the state in an external directory, and copying it in instead of going through the installation or uninstallation again.

The database fixture is meant not to be modified by tests. This commit enforces this invariant by making the database read-only before starting the test.

* Added missing db markers to tests
* Added test for uninstall_by_spec
* `database` fixture now returns a read-only database
* Tests that modify the DB now use `mutable_database` fixture
2019-07-20 10:18:50 -07:00
Mark W. Krentel
930011c124 hpcviewer: add version 2019.07 (#12067)
ibm-java: fix the URL to only use a machine type that ibm-java
supports so that 'spack info' doesn't report a non-existent URL on
platforms that it doesn't support.
2019-07-20 10:07:15 -07:00
Greg Becker
67cd524e93 environment views: refactor stripping build deps (#12069) 2019-07-20 09:45:20 -07:00
Greg Becker
8ec098716b compilers: don't raise errors for duplicate compiler definitions (#11910)
Summary:
- Allow multiple definitions of compiler in compilers.yaml (use first instance)
- Still print debug messages when there are duplicates, to assist users in finding this issue.

Merging configs from different scopes can result in multiple compiler being present in the same configuration list.  Instead of raising when there are duplicates, take the one with highest precedence.

Print a debug message instead of raising, so that we can still diagnose this.  We don't have a good way of warning the user about inconsistent configuration *in the same file* -- we'd need to dig into YAML file/line info for that.
2019-07-20 00:42:12 -07:00
Todd Gamblin
993ee7f199 environments: add activate/deactivate tests, work wtih set -u
- [x] Add shell tests to ensure that `spack env activate`, `spack env
  deactivate`, and `despacktivate` continue to work.

- [x] Also ensure that activate and deactivate both work with `set -u`
2019-07-20 00:36:56 -07:00
Greg Becker
4f9131fdc2 Package inheritance: Find patch files defined in parent classes using MRO (#12051)
Fixes #8908, 11844

Use Python MRO to find patch files from parent classes.
2019-07-19 18:08:05 -07:00
Peter Scheibel
4b6de78062 font-util package: add autoconf/automake build deps (#12071)
Fixes #12026

These are required on some systems
2019-07-19 17:45:22 -07:00
albestro
3a026f1412 Fix #11240 (#11995)
* extends mkdirs with permissions for intermediate folders

Does not use os.makedirs mode parameter because its behavior is changed
with Python 3.7 (it ignores it for intermediate dirs), and moreover it
was not possible to set different modes for newly-created folders
and leaf folder.

reference:
- https://bugs.python.org/issue19930
- https://docs.python.org/3.7/library/os.html#os.makedirs

* comment mkdirp step easing code understanding

* revert mkdir to default for package metapath

since metapath is nested in package folder, there is no need
to specify permissions for intermediate folders because the prefix
already exists.

* comment create_install_directory package modes
2019-07-19 10:13:29 -05:00
Michael Kuhn
cadff917c7 leveldb: add 1.22 (#12044) 2019-07-19 09:26:09 -05:00
Chris Green
9b763980b6 libxpm: cope with system gettext if configured. (#10881)
* If gettext is installed in the system it won't be in the spec tree.
2019-07-19 08:36:58 -05:00
Gregory Becker
ba0cd4d912 concretization: fix transient hang in python 3.5
Bug relates to the interplay between:
1. random dict orders in python 3.5
2. bugfix in initial implementation of stacks for `_concretize_dependencies`
   when `self._dependencies` is empty
3. bug in coconcretization algorithm computation of split specs

Result was transient hang in coconcretization.
Fixed #3 (bug in coconcretization) to resolve.
2019-07-18 19:28:50 -07:00
Gregory Becker
ec6e5b0fd3 stacks: add option to link only roots or all specs, default to all 2019-07-18 19:28:50 -07:00
Gregory Becker
7ec89aa036 stacks: refactor view descriptors into a separate object 2019-07-18 19:28:50 -07:00
Gregory Becker
6661cb1926 refactor: clean up Environment class
- remove redundant code in Environment.__init__
- use socket.gethostname() instead of which('hostname')
- refactor updating SpecList references
- refactor 'specs' literals to a single variable for default list name
- use six.string_types for python 2/3 compatibility
2019-07-18 19:28:50 -07:00
Gregory Becker
88295d927e bugfix: spec lists can now include multiple references 2019-07-18 19:28:50 -07:00
Gregory Becker
9577ade3ce stacks: use new format string syntax in environments code
- Change old spec expressions to use Spack's new spec formatting sytnax.
2019-07-18 19:28:50 -07:00
Gregory Becker
2f6af64157 docs: Add documentation for views in environments 2019-07-18 19:28:50 -07:00
Gregory Becker
cebf1fd668 stacks: update view management for multiple/combinatorial views
This adds notion of a default view, other views in environments
2019-07-18 19:28:50 -07:00
Gregory Becker
d0bfe0d6a8 stacks: environment add/remove respect multiply-defined lists 2019-07-18 19:28:50 -07:00
Gregory Becker
f9e6de5474 stacks: allow force-removing from a speclist used in a matrix 2019-07-18 19:28:50 -07:00
Gregory Becker
533a8d7c82 stacks: update environment add/remove algorithms 2019-07-18 19:28:50 -07:00
Gregory Becker
6cfbfcc967 concretization: regression test for constrain() with deps
- ensure that `Spec('foo').constrain('foo ^bar')` works
- prior to stacks implementation, this constraint would have done nothing.
2019-07-18 19:28:50 -07:00
Gregory Becker
12c8996294 docs: initial documentation for environments 2019-07-18 19:28:50 -07:00
Gregory Becker
d450a2fce2 stacks: initial implementation of stacks on environments
- stack syntax in env schema
- switch environment specs over to SpecList object
- add stack functionality to environments
- handle definition extensions through stack.yaml and SpecList
- implement conditional definitions
- tests
2019-07-18 19:28:50 -07:00
Matthias Diener
5be1ff83d1 cmake: add version 3.15.0 (#12058) 2019-07-18 18:28:21 -05:00
Adam J. Stewart
032075af74 Add master version to sklearn (#12057) 2019-07-18 15:56:48 -05:00
Matthieu Dorier
6eba9febaa pkg PRRTE: added version 1.0.0 (#12054) 2019-07-18 13:59:39 -05:00
Matthieu Dorier
3120e06359 added version 3.1.3 of PMIx (#12055) 2019-07-18 13:59:02 -05:00
Adam J. Stewart
c96d687c7c Workaround for #9149 (#12050) 2019-07-18 13:57:37 -05:00
Justin S
620d728aa5 py-mlxtend: new package at 0.16.0 (#12039)
* py-mlxtend: new package at 0.16.0

* py-mlxtend: fix dependencies
2019-07-18 12:25:41 -05:00
Phil Carns
7428fc66f7 update web site and git url for BMI package (#12036) 2019-07-17 21:28:39 -05:00
Jordan Ogas
ada50b968a add charliecloud v0.10 (#12046) 2019-07-17 21:28:02 -05:00
Adam J. Stewart
5d1f965e59 Fix scikit-learn build with Apple clang (#11496)
* Fix scikit-learn build with Apple clang

* Update compiler unit tests

* Fix unit tests

* Fix OpenMP dep

* recursive=True no longer necessary

* Add myself as a maintainer

* Specify which versions require OpenMP

* Typo fixes

* LLVM-OpenMP is the correct dependency, no OMPT

* Flake8 fix

* Undo Apple Clang OpenMP flag change, split into a separate PR
2019-07-17 21:27:16 -05:00
t-karatsu
1269256e25 libjpeg-turbo: set compiler flags with CMake args (#11938)
Later versions of libjpeg-turbo build with CMake; to build with
user-specified cflags, the user must supply these to CMake as
-DCMAKE_C_FLAGS (Spack's typical approach of injecting these flags
into the compiler wrapper invocation is insufficient in this case).

Currently libjpeg-turbo cannot be implemented as a CMakePackage
(and thereby take advantage of the flag_handler implementation it
provides) because not all versions of libjpeg-turbo use CMake, so
this adds a custom implementation of flag_handler and
flags_to_build_system_args to libjpeg-turbo.
2019-07-17 15:37:18 -07:00
Adam J. Stewart
7f3048c8af Add support for .txz and .tbz2 file extensions (#12048) 2019-07-17 16:23:23 -05:00
Tamara Dahlgren
b856e24444 tests: uninstall_by_spec error and rpath_args tests (#11971)
* tests: Add uninstall_by_spec error tests.

These tests were originally included in PR #11797.
2019-07-17 15:08:08 -05:00
Greg Becker
5cf8878185 feature: Allow developers to use Spack for partial builds (#12006)
Added new diy option.
2019-07-17 11:46:56 -07:00
Ryan S. Elliott
c9b6c78d3a kim-api 2.1.0 (#12041) 2019-07-17 12:11:34 -05:00
brietzke
0c5ed467ce package opencoarrays: add new version: 2.7.1 (#12043) 2019-07-17 12:11:02 -05:00
t-karatsu
5d9e67d953 Cmake/add option for fujitsu compiler (#11839)
* cmake: change c++ spec when building with Fujitsu compiler.

* cmake: define cxxflags using a Fujitsu compiler's method.

* cmake: Add condition of whether to add cxx11 option.
2019-07-17 12:49:36 -04:00
Shane R. Spencer
1b16be538e Added url_for_version to python/package.py (#12040) 2019-07-16 20:50:43 -05:00
Justin S
267d07e4b9 py-pandas: add 0.24.2 (#12038) 2019-07-16 20:46:17 -05:00
Hironori-Yamaji
c44afdcc80 r: set FPICFLAGS for compilers except 'gcc' (#12033) 2019-07-16 11:56:34 -05:00
brietzke
29d968bd84 package mutationpp: add new version: 1.0.0 (#12035) 2019-07-16 11:55:53 -05:00
Massimiliano Culpo
2fe1ecbaa2 Ignore Modules v4 environment variables in from_sourcing_file (#10753)
* from_sourcing_file: fixed a bug + added a few ignored variables

closes #7536

Credits for this change goes to mgsternberg (original author of #7536)

The new variables being ignored are specific to Modules v4.

* Use Spack Executable in 'EnvironmentModifications.from_sourcing_file'

Using this class avoids duplicating lower level logic to decode
stdout and handle non-zero return codes

* Extracted a function that returns the environment after sourcing files

The logic in `EnvironmentModifications.from_sourcing_file` has been
simplified by extracting a function that returns a dictionary with the
environment one would have after sourcing the files passed as argument.

* Further refactoring of EnvironmentModifications.from_sourcing_file

Extracted a function that sanitizes a dictionary removing keys that are
blacklisted, but keeping those that are whitelisted. Blacklisting and
whitelisting can be done on literals or regex.

Extracted a new factory that creates an instance of
EnvironmentModifications from a diff of two environments.

* Added unit tests

* PS1 is blacklisted + more readable names for some variables
2019-07-16 10:54:33 -05:00
Todd Gamblin
5ed68d31a2 coverage: restore status updates on PRs (#12032)
Codecov is not updating PRs with status anymore. Fix .codecov.yaml to
make this happen.
2019-07-15 22:45:00 -07:00
Todd Gamblin
3f47c5967d bugfix: fix module() function in setup-env.sh (#12030)
Modify `setup-env.sh` to export fewer variables but to still set the module() function correctly.
2019-07-15 22:43:53 -07:00
Michael Kuhn
ce88cc75ef qt: fix patch checksum (#12024)
It seems that GitHub's output changed slightly for this patch (one more
letter for both short hashes on the index line), probably due to the
number of objects in the repository.
2019-07-15 23:43:02 -05:00
Brian Homerding
36919ba859 binutils: Adding Clang to narrowing conversion error workaround (#12029) 2019-07-15 23:42:02 -05:00
Marc-Andre Hermanns
2cfbde1737 Add JUBE package definition (#12023)
* Add JUBE package definition

* Fixing flake8 errors
2019-07-15 20:58:57 -05:00
Severin Strobl
0ed7204c74 Added HPX version 1.3.0. (#12025) 2019-07-15 20:54:54 -05:00
Adam J. Stewart
41f5b09a98 Fix typo in module template (#12028) 2019-07-15 20:54:20 -05:00
t-karatsu
e3b513874b boost: use clang toolset when building with Fujitsu compiler. (#11827) 2019-07-15 15:13:04 -07:00
Michael Kuhn
a7e915d38b Fix build_jobs exceeding number of cores
All documentation mentions that `build_jobs` is limited by the number of
cores available in the system. This is also enforced when setting it via
`--jobs`. However, when setting it via `config.yaml`, it can exceed the
number of cores available, making builds run out of memory.
2019-07-15 11:40:49 -07:00
Glenn Johnson
3f83a2a7d8 Add auto-dispatch specification to Intel packages (#11697)
This PR adds the ability to specify the auto-dispatch targets that can
be used by the Intel compilers. The `-ax` flag will be written to the
respective compiler configuration files. This ability is very handy when
wanting to build optimized builds for various architectures. This PR
does not set any optimization flags, however.
2019-07-15 11:37:54 -07:00
Massimiliano Culpo
5acbe449e5 spack uninstall can uninstall specs with multiple roots (#11977)
Fixes #3690
Fixes #5637

Uninstalling dependents of a spec was relying on a traversal of the
parents done by inspecting spec._dependents. This is in turn a
DependencyMap that maps a package name to a single DependencySpec object
(an edge in the DAG) and cannot thus model the case where a spec has
multiple configurations of the same parent package installed (for
example if different versions of the same Python library depend on
the same Python installation).

This commit works around this issue by constructing the list of specs to
be uninstalled in an alternative way, and adds tests to verify the
behavior. The core issue with DependencyMap is not resolved here.
2019-07-15 10:30:01 -07:00
Hironori-Yamaji
68ad4caf30 binutils: added '-Wno-narrowing' to CXXFLAGS when using fj compiler via flag_handler (#11922)
FJ compiler fails for older versions w/o '-Wno-narrowing' flag.
2019-07-15 08:50:26 -07:00
Todd Gamblin
a3caf52cac packages: computation.llnl.gov is now computing.llnl.gov (#12013) 2019-07-15 07:32:51 -07:00
Milton Woods
af74c291ed py-basemap: install without egg (#11961)
* py-basemap: avoid creating egg during build, for compatibility with mpl_toolkits

* py-basemap: not ready for py-pyproj@2 onwards
2019-07-15 10:26:13 -04:00
Matthias Diener
9be127890f gdb: add version 8.3 (#12018) 2019-07-14 16:45:55 -05:00
Reinhard Prix
9e7eae0e2f make cfitsio explicitly depend on curl (#12016)
- currently would revert to using system-curl instead, pulling in
  unwanted system dependencies and lib-paths
2019-07-14 14:40:09 -05:00
Michael Kuhn
d7b76df5ac bzip2: Add 1.0.8 (#12017)
Update URLs to official ones.
2019-07-14 14:25:20 -05:00
Adam J. Stewart
0bff0c2d0d Make JDK version more specific (#12008) 2019-07-13 09:05:48 -05:00
Adam J. Stewart
452021398a Add py-jsonschema 2.6.0 (#12009) 2019-07-13 09:05:17 -05:00
Tim Fuller
5bc15b2d9a find_libraries searches lib and lib64 before prefix (#11958)
The default library search for a package checks the lib/ and lib64/
directories for libraries before the root prefix, in order to save
time when searching for libraries provided by externals (which e.g.
may have '/usr/' as their root).

This moves that logic into the "find_libraries" utility method so
packages implementing their own custom library search logic can
benefit from it.

This also updates packages which appear to be replicating this logic
exactly, replacing it with a single call to "find_libraries".
2019-07-12 17:46:47 -07:00
xfzhao
f1ce1dd163 New package: Nim (#11649) 2019-07-12 17:03:26 -07:00
Justin S
9b361bea5a r package: add rmath variant for standalone rmath library (#11693) 2019-07-12 16:50:04 -07:00
Oliver Breitwieser
d1af7ae5ab Copy --{use,no}-cache from install to bootstrap (#11786) 2019-07-12 16:30:12 -07:00
Carson Woods
76f1ee5f32 'spack compiler add' resolves relative path to absolute path (#11792)
Fixes #11782

Spack was not properly resolving relative paths to absolute paths
when a relative path was passed to "spack compiler add [PATH]".
Now, if provided a relative path, the absolute path is written to
compilers.yaml rather than the relative path.
2019-07-12 16:06:26 -07:00
egreen77
d01d79eb5d new package: umap (#12000) 2019-07-12 15:26:24 -05:00
Tamara Dahlgren
d615d0a1ec Add template creation test, --skip-editor option (#11970)
* Add template creation test
* Added --skip-editor option to "spack create": normally
  "spack create" opens an editor for the user after generating a
  package file; when the --skip-editor option is used, "spack create"
  only generates the package file and does not open an editor
* Added --skip-editor option to bash completion
2019-07-12 11:22:09 -07:00
Hironori-Yamaji
505ad8960e jdk: Add the 'provides' call (#11997) 2019-07-12 09:45:19 -07:00
Stephen Hudson
cdc72963d1 Update libensemble (#11990) 2019-07-12 10:36:44 -05:00
t-karatsu
adbb9e2d8e Fix pic_flag and test contents about Fujitsu compiler. (#11996) 2019-07-12 10:34:08 -05:00
Todd Gamblin
e8e030a518 bugfix: setup-env.sh detects bash even when bash is run as sh (#11994)
- `setup-env.sh` was not properly detecting a bash shell when bash was run
  as /bin/sh.

- Detection routine now always reports bash when bash is run as sh, and
  no longer parses the path to the executable indicated in `$BASH`.
2019-07-12 08:33:23 -07:00
Todd Gamblin
91e35541ee bugfix: show dot after namespaces in spack find -N (#11945)
- Namepsaces were shown without dots after the new format strings were
  added.

- Add a test for `spack find` to ensure that find -N shows the right
  output.
2019-07-12 08:32:47 -07:00
Phil Tooley
52e0f47a3f update scalasca to latest version, simplify recipe (#11999)
add list_url for use with spack checksum
2019-07-12 10:30:07 -05:00
Glenn Johnson
42c7d24075 Modifications to r package (#11957)
This PR has several modifications for the r package.

- The tk package is always depended on but this pulls in X11, making the
  'X' variant non-functional. This PR sets a dependency of tk on '+X'.
- There is a missing dependency on libxmu when '+X' is set.
- The libraries for R wind up in a non-standard location and are thus
  left out of the RPATH settings. This PR adds that directory to RPATH.
- The MKL integer interface for gfortran is not in the BLAS libs. This
  PR replaces the intel interface with the gfortran interface if needed.
- Use the `LibraryList` `ld_flags` method for blas as that is more in
  line with th R Installation and Administration manual.

Note that this PR depends on PR #11956. This PR closes #8642.
2019-07-11 22:22:37 -05:00
Glenn Johnson
909c5f5019 Add variants for tk package (#11956)
TK can be built with support for libXft and X Screensaver. Both of these
are turned on in the Tk configure script. That means the system
libraries will get picked up if they are on the system and nothing is
specified in the package. Since the default for both of them is 'True' I
set the default value for the variants to 'True'.
2019-07-11 22:21:17 -05:00
Toyohisa Kameyama
4288dac35b bowtie2: Add version 2.5.3.1 and fix to build on ARM (#11974)
* bowtie2: Add version 2.5.3.1 and fix to build on ARM

1. Add version 2.5.3.1.
2. Add simde for ARM.
3. Disable -fopenmp-simd when gcc 4.8.X or before for ARM.
4. Add Makefile option POPCNT_CAPABILITY=0 for ARM.

* flake8.
2019-07-11 22:04:22 -05:00
Toyohisa Kameyama
ea9ac3ee52 velvet: remove -m64 on aarch64. (#11984) 2019-07-11 21:59:24 -05:00
Nick Forrington
ff728bd06c Boost: Compile with toolset=clang for Arm compiler (#11992)
Bootstraps with gcc, but compiles with clang
2019-07-11 21:53:54 -05:00
Toyohisa Kameyama
0dfa5a467c megahit package: add patch to build on ARM. (#11963) 2019-07-11 17:40:00 -07:00
Tamara Dahlgren
05b6a5e53d test: Extra possible-dependencies coverage check (#11988) 2019-07-11 17:15:21 -07:00
Phil Tooley
14271331f9 New package: dimemas (#11979) 2019-07-11 13:55:43 -07:00
Mark Olesen
138226e038 OpenFOAM package: update download url (#11973) 2019-07-11 13:45:38 -07:00
Phil Carns
3a4d37d6d6 libfabric package: add support for tcp provider (#11965) 2019-07-11 13:43:38 -07:00
Toyohisa Kameyama
6a731b4d8f luit package: use autotools. (#11962) 2019-07-11 13:34:50 -07:00
Tamara Dahlgren
e3299e6923 Rename build logs and make names consistent (#11806)
Fixes #11781

* Rename build log to spack-build-log.txt
* Rename environment variables file to spack-build-env.txt
* The name of the log and env files is now the same during the build
  and after the build completes
* Update packages which referred to the build log/env files
* For packages installed before this commit using older names for the
  build and env files, search for the older names
2019-07-11 13:32:06 -07:00
Michael Kuhn
d3be42fcca mpich: Add 3.3.1 (#11976) 2019-07-10 20:41:23 -05:00
Michael Kuhn
975b9a611a bzip2: Add 1.0.7 (#11975) 2019-07-10 18:37:16 -05:00
Todd Gamblin
c2de2558b6 tutorial: correct image link on tutorial page 2019-07-10 00:56:25 -07:00
Todd Gamblin
0cd64d7b6e tutorial: updates slides for DOE/NSF workshop. 2019-07-10 00:50:59 -07:00
Reinhard
ea431be4b0 py-astropy: added latest version 3.2.1 (#11967)
- correctly installs under python@3.5:3.7.3
- (partially) fixes https://github.com/spack/spack/issues/11966
2019-07-09 21:19:38 -04:00
Carson Woods
2838aa772d package: Add powerapi package (#11845)
* Add powerapi package

* Fix flake8 formatting

* Fix download URL

* Update powerapi version line

* Fix how configure arguments are selected to improve readability

* Bug Fixes

* Fix trailing whitespace

* Bug fixes

* Remove incorrect configure flag
2019-07-09 09:57:53 -04:00
Milton Woods
d0b2c77cd1 Ferret: add version 7.2 and adjust dependencies (#11921)
* ferret: use libx11 from spack

* ferret: use mpi library with or without fortran support

* ferret: add version 7.2

* ferret: no need to specify ~mpi

* ferret: creating symlinks may fail for external packages; set include/lib paths instead
2019-07-09 09:33:07 -04:00
Toyohisa Kameyama
dab3026f2f diffsplice package: remove -m64 on ARM. (#11899) 2019-07-08 17:13:49 -07:00
Toyohisa Kameyama
a718d8af08 zoltan: use autotools for new architecture host (#11924)
* use autoreconf to regenerate configure script and config.guess for
  newer architectures
* Add perl build dependency for older versions. The required perl
  version is constrained because the perl script uses syntax that
  is deprecated in older versions
2019-07-08 16:57:17 -07:00
Hironori-Yamaji
68dd327d62 motif package: fix the download url (#11939) 2019-07-08 16:20:01 -07:00
Frédéric Simonis
1fe3d6367e preCICE package: add version 1.5.2 (#11949) 2019-07-08 13:59:08 -07:00
Xavier Delaruelle
a9067821b3 environment-modules package: add version 4.2.5 (#11953) 2019-07-08 13:58:38 -07:00
Justin S
36ee7ef456 New package: r-grbase (starting at 1.8-3.4) (#11937) 2019-07-08 12:01:58 -07:00
Justin S
897cd340d8 r-graph: update R constraint to reflect DESCRIPTION (#11934) 2019-07-08 12:01:17 -07:00
Justin S
60a827daff r-rbgl: add 1.60.0 (#11936) 2019-07-08 12:00:16 -07:00
Justin S
242bdef6e8 r-biocgenerics: add 0.30.0 (#11935) 2019-07-08 11:59:54 -07:00
Todd Gamblin
51b58f1478 bugfix: conflicts should print out the spec that has the conflict (#11947)
- Fix a bug introdcued by removing parse_anonymous_spec()

- Conflicts' when specs are now *actually* anonymous, and the name of the
  package is implicit, so we need to remember to add it back to error
  messages.
2019-07-08 08:00:43 -07:00
cclauss
e8506994b1 travis: the sudo tag is now deprecated (#11933)
* Travis CI: The sudo tag is now deprecated in Travis

__sudo: required__ no longer is.

* Remove obsolete comment

__travis_wait__ can help with long-running processes.
* https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received
2019-07-05 22:25:25 -07:00
Todd Gamblin
d2e5b8474a bugfix: always generate a stack trace when spack is run with --debug (#11940)
- We weren't previously printing stack traces on SystemExit or
  KeyboardInterrupts.

- Either raise or print the stacktrace in these cases.
2019-07-05 19:57:00 -07:00
Kevin Huck
f21073d231 tau: add conflicts for libelf/libdwarf variants (#11944)
Declare a conflict for TAU versions older than 2.28.1, that they
can't depend on libelf or libdwarf.  The user can still install it
by specifying tau@2.24~libelf~libdwarf.
2019-07-05 19:08:43 -07:00
Christoph Junghans
e392bf0412 cmake: add v3.14.5 2019-07-05 17:02:34 -07:00
Todd Gamblin
5686c2a544 setup-env.sh: make setup scripts work with set -u
- Add set -u to the setup-env.sh test script

- Refactor lines in setup-env.sh that tested potentially undefined
  variables to use the `[ -z ${var+x} ]` construct
2019-07-05 12:54:17 -07:00
Todd Gamblin
47e9f7aac9 tests: add tests for setup-env.sh
- tests use a shell-script harness and test all Spack commands that
  require special shell support.

- tests work in bash, zsh, and dash

- run setup-env.sh tests on macos and linux builds.
  - we run them on macos and linux
2019-07-05 12:54:17 -07:00
Todd Gamblin
e625ee3ffd setup-env.sh: now compatible with bash, zsh, and dash
- replace use of [[ with [

- replace function foo { .. } with foo() { .. }

- wrap some long lines

- add lsof and /proc/fd magic so that we can find the sourced file even in dash

- only do the complicated shell checks in one place; test $_sp_shell
  elsewhere.
2019-07-05 12:54:17 -07:00
Milton Woods
a7da5dcb19 py-stratify: vertical interpolation/stratification of atmos/ocean data (#11911)
* py-stratify: vertical interpolation/stratification of atmos/ocean data

* py-stratify: download from pypi.io
2019-07-04 10:38:48 -04:00
Milton Woods
d88c657f79 py-scikit-image: include more dependencies (#11912)
* py-scikit-image: include more dependencies

* py-scikit-image: limit some dependencies to recent versions
2019-07-04 10:38:02 -04:00
Hironori-Yamaji
cd18dadf92 jdk: Add JDK 12.0.1 (#11903) 2019-07-04 10:36:21 -04:00
Paul
1ce6490132 Added latest version, 0.7.1 (#11927) 2019-07-04 10:26:59 -04:00
Milton Woods
e7a3f703be py-antlr4-python3-runtime: new package (#11890)
* py-antlr4-python3-runtime: new package

* py-antlr4-python3-runtime: fix for flake8

* py-antlr4-python3-runtime: indent docstring

* py-antlr4-python3-runtime: clarify role of this package vs ANTLR in docstring

* py-antlr4-python3-runtime: remove whitespace at end of line
2019-07-04 10:12:54 -04:00
Glenn Johnson
54e87c8da0 Set ignore files for py-reportlab (#11928)
The py-reportlab package includes binaries for easy_install and pip.
That blocks activation if py-setuptools and/or py-pip are installed.
This PR block the binaries from py-reportlab as easy_install and pip
should be installed with their respective packages.
2019-07-03 19:15:01 -07:00
t-karatsu
adffb2bff4 libtool: execute autoreconf at ver.2.4.2 (#11913)
Version 2.4.6 did not require running autoreconf, so this only does
autoreconf for 2.4.2
2019-07-03 18:04:29 -07:00
shanedsnyder
902dcfd194 libfabric package: add version 1.8.0 (#11918) 2019-07-03 17:30:25 -07:00
Todd Gamblin
c45afb7578 coverage: remove sub-reports; only show project/patch on PRs (#11926)
- There's too much information on our PRs, and the Travis test results
  (which are arguably more important than coverage) get buried in
  coverage information

- Remove coverage sub-categories, as you can browse codecov's file view
  to see roughly the same thing

- show only project/patch on GitHub PRs.
2019-07-03 17:11:07 -07:00
Milton Woods
fae14bff21 py-cf-units: new package (#11891)
* py-cf-units: new package

* py-cf-units: download from pypi.io

* py-cf-units: include py-pytest-runner as build dep

* py-cf-units: remove empty build_args function

* py-cf-units: fix for flake8

* py-cf-units: indent docstring

* py-cf-units: remove excess spaces

* py-cf-units: list master branch ahead of numeric versions

* py-cf-units: remove extension keyword from version
2019-07-03 19:20:34 -04:00
Alberto Chiusole
f3bf89ebfe OpenMPI: add support for pbs/tm at configure. (#10620) 2019-07-03 14:07:51 -07:00
Justin M Wozniak
28949787e9 turbine: Better auto-detection of R location (#11711)
If R is provided by the system with a module (i.e. registered in
packages.yaml with a "module" entry) and has no discernible prefix,
this allows turbine to still make use of R.
2019-07-03 11:24:20 -07:00
Milton Woods
ea1df6a9b4 py-pyke: new package (#11894)
* py-pyke: automatic python program generator

* py-pyke: expand the package docstring
2019-07-02 15:58:14 -04:00
Milton Woods
48bfece55e py-pyugrid: unstructured grids in netcdf files (#11900) 2019-07-02 15:56:18 -04:00
ktsai7
229ba28ad5 Add llvm as deps when static analyzer is enabled (#11888)
* dep llvm if static analyzer
dep caliper if caliper

* fix typo

* adding variants for toggles
2019-07-02 11:45:13 -06:00
Toyohisa Kameyama
f1592e339d portcullis package: remove -m64 on aarch64. (#11905)
GCC on aarch64 dose not support -m64. This patch removes the -m64
flag if target is aarch64.
2019-07-02 10:42:06 -07:00
Phil Carns
2709f948fa opa-psm2 package: correct installation prefixes and add 11.2.77 (#11658)
This PR corrects a problem with the opa-psm2 package. It was
installing headers into <prefix>/usr/include and libraries into
<prefix>/usr/lib instead of <prefix>/include and <prefix>/lib.
The extra level of usr/ subdirectories causes dependent packages
like libfabric to fail to build.
2019-07-02 10:34:58 -07:00
Mark Olesen
5fd3b5acda openfoam: rename openfoam-com to openfoam (#11876)
The original packaging, with openfoam as a virtual and with
openfoam-com, openfoam-org and openfoam-extend as
providers, adds an obfuscation layer without any benefit.

- Rename `openfoam-com` to `openfoam`, and remove the 
  `openfoam` virtual package.
2019-07-01 22:54:36 -07:00
Todd Gamblin
515b4045e9 specs: remove parse_anonymous_spec(); use Spec() instead
- `parse_anonymous_spec()` is a vestige of the days when Spack didn't
  support nameless specs.  We don't need it anymore because now we can
  write Spec() for a spec that will match anything, and satisfies()
  semantics work properly for anonymous specs.

- Delete `parse_anonymous_spec()` and replace its uses with simple calls
  to the Spec() constructor.

- make then handling of when='...' specs in directives more consistent.

- clean up Spec.__contains__()

- refactor directives and tests slightly to accommodate the change.
2019-07-01 18:45:44 -07:00
Todd Gamblin
12b9fad7b6 cray: use the cle-release file to determine CNL version
- CNL OS previously used the *Cray PE* version to determine the OS
  version.  Cray does not synchronize PE and CLE releases; you can run
  CLE7 with PrgEnv 6 (and NERSC currently does).

- Fix Spack's OS detection by using the cle-release file to detect the OS
  version.  This file is updated with every CLE OS release.

- Add some tests for our parsing logic
2019-07-01 18:36:02 -07:00
Milton Woods
1ad9f6268b New packages: libmo-unpack and py-mo-pack (#11895)
* libmo-unpack: package to encode and decode UM fields
* py-mo-pack: python interface for libmo-unpack
2019-07-01 18:24:45 -07:00
Justin S
781a115656 New package: r-gwmodel (starting at 2.0-9) (#11887) 2019-07-01 18:14:29 -07:00
Justin S
196886e708 New package: r-spatialreg (starting at 1.1-3) (#11886) 2019-07-01 18:13:06 -07:00
Justin S
a7cd7fdcd4 New package: r-spdata (starting at version 0.3.0) (#11883) 2019-07-01 18:11:16 -07:00
Milton Woods
711a80832a New package: py-nc-time-axis (#11898) 2019-07-01 18:07:57 -07:00
Glenn Johnson
b66c296562 py-markdown package: update dependency version range (#11908)
The python dependency specifies that 2.7 or 2.8 are allowed when in
fact it should specify a version range (anything between 2.7 and 2.8,
inclusive).
2019-07-01 17:52:41 -07:00
Sameer Shende
4d0926464c mpich: wrapperrpath variant allows disablement of RPATH usage in mpicc
Added a wrapperrpath variant to mpich that defaults to `True`.

Users can set this to `False` (e.g., spack install mpich~wrapperrpath) to
disable the wrapper RPATHs.  This makes it easier to replacing an MPICH
installation in a container with an MPICH for the host system,
e.g., Cray MPICH with Shifter on Cori, Intel MPI, MVAPICH2, etc.

Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2019-07-01 15:09:40 -07:00
Toyohisa Kameyama
54de03548b planck-likelihood: remove -m64 on ARM (#11902) 2019-07-01 10:48:45 -07:00
Axel Huebl
1b3c11e793 ADIOS2: v2.4.0 (#11904)
Add the latest release of ADIOS2.
2019-07-01 13:47:31 -04:00
Milton Woods
6856972745 tk: avoid search for X headers and libraries (#11892) 2019-07-01 13:47:04 -04:00
t-karatsu
8ca5c3685a camellia: fix hdf5 dependency (#11810)
* camellia: fix hdf5 dependency

* camellia: Add comment
2019-07-01 13:40:53 -04:00
Justin S
b517be2c68 r-spacetime: new package at 1.2-2 (#11885) 2019-07-01 13:39:15 -04:00
Patrick Gartung
9bf9c0cec3 buildcache: add replace_prefix_bin function to deal with hard coded paths in libraries and executables. (#11882) 2019-07-01 10:16:23 -05:00
Milton Woods
0f703b7e81 py-netcdf4: depend on hdf5+hl (#11893) 2019-07-01 15:38:35 +02:00
Todd Gamblin
f51c4c5e77 readme: make list of links even tighter. 2019-06-30 23:15:37 -07:00
Todd Gamblin
af39390578 README: Tighten up text, mention the Code of Conduct in the README. 2019-06-30 23:08:33 -07:00
Todd Gamblin
9c37a4c948 meta: move CODE_OF_CONDUCT.md and CONTRIBUTING.md to .github
- Trying to reduce the number of top-level files in Spack.

- CODE_OF_CONDUCT.md can be referenced from the README.

- CONTRIBUTING.md is only used to display a message on pull requests, and
  it still does that when in .github.
2019-06-30 23:08:33 -07:00
Dr Owain Kenway
441401bb8b llvm: don't build CppBackend for flang versions of llvm (#11841)
The version of LLVM used by flang is new enough that CppBackend doesn't exist.  Unfortunately, `flang-xxxxxxxx` is seen as < `3.9.0` by the version check.  

* add a special case for `flang` versions.
2019-06-30 17:04:29 -07:00
Oliver Breitwieser
cf76a143a2 libtomlc99: Update version
The PR for shared libraries has been merged upstream -> add new version.
2019-06-30 16:02:08 -07:00
Todd Gamblin
4189640ee8 style: remove unnecessary NOQA exceptions 2019-06-30 16:01:23 -07:00
Todd Gamblin
600f3c1104 setup-env.sh: send cd output to /dev/null when it affects Spack
- We've seen this a few times now where users have set up `cd` to echo
  the new directory, and it screws up `setup-env.sh`

- In the past we've said this is user error.

- Here, we just fix it by sending `cd` output to /dev/null where needed.
  - this works in bash, zsh, and dash
2019-06-29 19:01:44 -07:00
Peter Scheibel
9c16b4a7f6 Allow uninstalling missing packages (#11874)
Remove package access from directory_layout; add regression test to ensure
that specs can be uninstalled without a package being known
2019-06-29 16:04:15 -07:00
Christoph Junghans
7f2e364fa1 legion: added recent releases (#11889) 2019-06-29 07:12:24 -06:00
Justin S
7f6266eef6 r-intervals: new package at 0.15.1 (#11884) 2019-06-28 19:42:55 -04:00
Mark W. Krentel
8aa8b50f91 docs: add example for an external module in packages.yaml
Add an example of a 'modules:' entry for an external package in
packages.yaml.  The 'External Packages' section of 'Build
Customization' mentions 'paths:' and 'modules:' and gives an
example of paths, but not modules.
2019-06-28 11:59:10 -07:00
Carson Woods
5873beb83f qthreads package: make hwloc dependency optional and add version 1.14 (#11780) 2019-06-28 11:43:06 -07:00
Andreas Baumbach
5e9437866b New package: libtomlc99 (#11811) 2019-06-28 11:16:34 -07:00
Hironori-Yamaji
d5402147f0 bib2xhtml: replace version and change the download url (#11837)
The old version was no longer available for download
2019-06-28 11:03:54 -07:00
Matthieu Dorier
46c1513296 PMDK package: requires ncurses dependency (#11868) 2019-06-28 10:15:06 -07:00
Toyohisa Kameyama
d8f4e0a565 OTF package: use autotools. (#11873) 2019-06-28 10:13:21 -07:00
Toyohisa Kameyama
ae8710fa36 blast-plus package: remove --with-64 on ARM. (#11877)
This configure option is not supported on ARM
2019-06-28 10:11:04 -07:00
Michael Kuhn
ac76e4692f likwid package: Fix build with version 4.3.4 (#11878) 2019-06-28 10:05:38 -07:00
ktsai7
d48226b260 Update package.py (#11872) 2019-06-28 09:39:59 -06:00
Michael Kuhn
d2de78ab00 fenics, llvm: Fix package names being overriden (#11879)
Setting name within the package class allows overriding the package
name, which both packages do using several for loops.

Fixes #11789
2019-06-28 15:59:19 +02:00
Christoph Junghans
d6ecc29e4b portage: add v1.2.2 (#11842)
* portage: add v1.2.2

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* flake8
2019-06-28 06:39:26 -06:00
Toyohisa Kameyama
ff877a567e Gotcha package: fixed to build on ARM. (#11840)
Apply patch to current version which has not yet been merged in the
upstream package repo.
2019-06-27 15:34:11 -07:00
Derick Huth
81db89b5e7 New packages: Chill and IEGenLib (#11406)
* Add Chill package
* Add IEGenLib package, a dependency of Chill
2019-06-27 13:41:06 -07:00
Michael Kuhn
f5f2b05c5b pkgconf: Add 1.6.1 (#11863) 2019-06-27 22:15:04 +02:00
Christoph Junghans
8a51215c36 bml: add v1.3.1 (#11856) 2019-06-27 10:57:09 -06:00
Hironori-Yamaji
c48b67ccd7 f90cache: change the download url (#11838)
* f90cache: change the download url

* f90cache: added the download url for ver 0.99
2019-06-27 12:55:48 -04:00
Hironori-Yamaji
9ed4db6eea tcsh: change the download url, add version 6.21.00 (#11836)
* tcsh: change the download url, add version 6.21.00

* tcsh: change the download url

* tcsh: Fix checksum for 6.20.00
2019-06-27 12:53:43 -04:00
Mark Olesen
0119812781 Update openfoam (#11866)
* OpenFOAM: rationalize architecture options

- older versions of OpenFOAM had WM_ARCH_OPTION to choose a 32-bit
  build on 64-bit architectures. This is not exactly relevant anymore
  and has now been largely removed from OpenFOAM.

- simultaneously the newest version of OpenFOAM has rationalized the
  handling of special settings for KNL by rolling these into the
  compiler options. We now do the same thing here in spack.

  1. Reuse the internal variable arch_option to convey processor-specific
     optimizations and add these into the C++OPT=... statement.
  2. Drop spack support for configuring a 32-bit build on 64-bit
     hardware.

These changes can also be applied to older OpenFOAM versions, and to
various OpenFOAM forks without issue.

* update openfoam versions. New release 1906, patched 1812 version.
2019-06-27 11:14:33 -05:00
Michael Kuhn
eb00436ec8 font-util: Add missing mkfontdir build dependency (#11865)
Some of the fonts now included in font-util need mkfontdir to build.
2019-06-27 15:53:05 +02:00
Michael Kuhn
5669144d22 Fix pkgconfig dependencies (#11864)
pkgconfig is the correct virtual dependency.
2019-06-27 14:56:42 +02:00
Toyohisa Kameyama
1c779608b2 cbtf-krell: fixed to build on ARM. (#11859) 2019-06-27 11:55:15 +02:00
Toyohisa Kameyama
977b2621f9 font-util: fix fontname. (#11860) 2019-06-27 11:54:23 +02:00
Satish Balay
85372ae102 petsc: add version 3.11.3 (#11857) 2019-06-27 07:02:03 +02:00
Michael Kuhn
75adb54d51 cdo: Remove obsolete patch (#11854)
Commit ea3e1521fe removed version
1.9.7rc2, making the patch for gcc@9 obsolete.
2019-06-26 19:36:41 -05:00
Michael Kuhn
0ef3b4c578 ncl: Fix build (#11855)
ncl does not build with newer versions of gdal (or rather proj). This
also needs a small change to gdal, otherwise we end up with both proj@5
and proj@6 in the spec.
2019-06-26 19:36:29 -05:00
Greg Becker
a0f2d6a8b9 Make yaml-cpp build with libc++ (#10504)
- Separate `yaml-cpp` tests into variant
- Make conflict between `yaml-cpp` tests and `libc++` explicit
2019-06-26 14:29:09 -07:00
ktsai7
ba5530bb42 added min version for gasnet and legion (#11853)
* added min version for gasnet and legion

* Update package.py

* Update package.py

* Update package.py
2019-06-26 14:46:18 -06:00
Douglas Duckworth
27b07811dd RELION package: add version 3.0.6 (#11851) 2019-06-26 09:57:14 -07:00
Toyohisa Kameyama
e49c101f05 X11fonts: use autotools for new architecture host (#11785)
* Remove individual font-* packages and add them as resources of the
  font-util package
* Update font-util package to Autotools-based package, and call
  autoreconf to regenerate the old configure script
* Add font-adobe-utopia-type1
2019-06-26 08:26:37 -07:00
Toyohisa Kameyama
b185f87c55 Add --frontend and --backend option to spack arch command (#11746) 2019-06-26 08:19:46 -07:00
Adam J. Stewart
5c5d6cad44 Rename py-pytables -> py-tables (#11847) 2019-06-25 21:32:49 -04:00
Satish Balay
ef48219f15 remove binary file that got added inadvertently via #11828 (#11848) 2019-06-25 21:31:36 -04:00
Christoph Junghans
718af821d1 pfunit: fixed a typo (#11843) 2019-06-25 14:06:52 -04:00
Chuck Atkins
f20c97168d gnutls: workaround guile build error on macos (#11751) 2019-06-25 13:08:28 -04:00
jthies
6bbc7e8d9b phist can't be compiled with gcc older than 4.9.2 (#11677)
* phist can't be compiled with gcc older than 4.9.2
2019-06-25 12:53:21 -04:00
Ben Morgan
531114cd6c fmt: Add version 5.3.0 with cxxstd variant support (#11799)
* fmt: Add cxxstd variant, plus cmake/c++ patches

Spack supported versions of fmt default to C++11 for versions
less than 5, C++14 greater than 5, with fmt implementing
fallbacks to whatever compiler supports.

To give better ABI compatibility and use of newer standards, provide
a `cxxstd` variant defaulting to 11 with 98-17 options. Use cmake_args
to set CMAKE_CXX_STANDARD as appropriate, plus use of `FMT_USE_CPP11`
option for C++98 builds. Use `conflicts` to disable use of certain
standards in versions that don't support, or fail the build, with
those standards.

Add patches to unify use of `CMAKE_CXX_STANDARD` in 3.0 versions,
remove hard-coding of compiler flags in `fmt-config.cmake`, and
prevent use of C++11 features in 4.1.0 when in supported C++98
mode.

Default to not building documents as no dependency on Doxygen is
yet present, and they are not part of the "all" build.

* Use CMake to enforce C++ standard support

Fail configure step if fmt tries to build with a cxxstd variant
not supported by the compiler (or known to CMake).

* fmt: New version 5.3.0
2019-06-25 12:01:31 +01:00
Patrick Gartung
30ce818fc4 Fix for #10063 : install from source if buildcache with different DAG exist (#11834)
* Fix for #10063 : install from source if buildcache with different DAG exist

* Flake8
2019-06-24 21:09:24 -05:00
rvinaybharadwaj
fa563f0f55 Bumping-up miniVite to version 1.1 (#11828)
* Bumping-up miniVite to version 1.1

* Keeping both version of miniVite

* Changed to >=
2019-06-24 19:41:01 -06:00
Justin S
5b3f196bc2 New package: Rodinia (starting at 3.1) (#11650) 2019-06-24 18:32:46 -07:00
Carson Woods
ad14432e66 UCX package: add versions 1.5.1/1.5.2 (#11832) 2019-06-24 18:21:06 -07:00
Carson Woods
f10b806bde Singularity package: add version 3.2.1 (#11833) 2019-06-24 18:20:23 -07:00
Denis Davydov
8e89a82076 clamav: add new package (#11818)
* clamav: add new package

* fix flake8

* remove --dsable lines
2019-06-24 19:47:15 -04:00
Gregory Lee
16ff38b784 add glx variant to libepoxy (#11814) 2019-06-24 17:57:17 -04:00
Glenn Johnson
c575cc46db The py-pytables package depends on hdf5-blosc (#11823)
* The py-pytables package depends on hdf5-blosc

* Further modifications to py-pytables package

The 3.2.2 version of py-pytables should still build with internal blosc.
The issue with locking in a multithreaded environment has been
fixed/worked around in version 3.3.

Also, add bzip2 and lzo variants.
2019-06-24 17:56:51 -04:00
Satish Balay
1ec3d78441 hypre: superlu-dist-link-2.15.0.patch is now in hypre@develop (#11829) 2019-06-24 17:55:04 -04:00
Andreas Baumbach
b39a992528 add new package py-absl-py (#11812)
* add new package py-absl-py

Change-Id: I248d30e0a3e5e05d9ea4027d97a85545c63d1125

* Update package.py

* Update package.py

* Update package.py

* Update package.py
2019-06-23 17:33:36 -04:00
Andreas Baumbach
2687af2c53 New package py-astor (and test dependency py-astunparse) (#11813)
* add package py-astor

Change-Id: I2f6becfb5e9771170bf2df5eb629920e1c0998d7

* add new package py-astunparse

Change-Id: Id2d3e8dec28e720ed1cb121dad0d1a405c27ca29

* Update package.py

* Update package.py

* Update package.py
2019-06-23 17:33:22 -04:00
Christoph Junghans
d65e6ad7e3 hypre: add v2.16.0 (#11821)
* hypre: add v2.16.0

* update checksums

* hypre: xsdk-0.2.0 tag is missing on the new repo
2019-06-23 17:33:05 -04:00
Neil Flood
681245c7ed awscli: new package (#11796)
* awscli: new package

* More precise py-pyyaml version dep, as per setup.py
2019-06-23 14:54:48 -04:00
Adam J. Stewart
9c54d8ef6c r-sf may not support PROJ.6 (#11767)
* r-sf may not support PROJ.6

* Add comment explaining dep
2019-06-23 11:35:33 -05:00
Sinan
c83f8a425d new package/py-blessed (#11656)
* new package/py-blessed

* make flake8 happy

* fix docstring

* tab to spaces

* Update var/spack/repos/builtin/packages/py-blessed/package.py

specify dependency version.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/py-blessed/package.py

specify dependency version

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* add setuptools as depedency
2019-06-22 17:05:03 -05:00
Peter Scheibel
1ae03b327c Use Stage.archive_file to access non-expanded download (#11817)
Fixes #11816

Allow packages to refer to non-expanded downloads (e.g. a single
script) using Stage.archive_file. This addresses a regression from
#11688 and adds a unit test for it.
2019-06-21 16:56:38 -07:00
Gerasimos Chourdakis
98d21193ff precice: add version 1.5.1 (#11809) 2019-06-21 07:56:35 -04:00
Toyohisa Kameyama
e19d7b9a49 exonerate use autotools. (#11805) 2019-06-21 07:55:29 -04:00
Toyohisa Kameyama
1827b4c5cb mpileaks: use autotools. (#11808) 2019-06-21 07:55:04 -04:00
Toyohisa Kameyama
9955b15f4e mpe2 use autotools and add libx11 dependency. (#11807) 2019-06-21 07:54:51 -04:00
Gregory Lee
894d01e482 converting to launchmon to autotools package (#11794) 2019-06-21 07:47:42 -04:00
Valentin Reis
e6264030d7 New packages: nrm and libnrm (#11777)
Also add new py-warlock, py-jsonpatch, and py-jsonpointer packages as
dependencies of nrm.
2019-06-20 19:21:44 -07:00
Adam J. Stewart
9b8215ce9d Ignore pgcc-llvm and friends, default to pgcc (#11703)
This change reverts to the previous behavior of only looking for pgcc
and friends, not pgcc-llvm and friends.

The llvm variant doesn't support all the same features as the
traditional variant of the pgi code generator; this change avoids
treating the llvm variant as a default pgi compiler.

This retains the changes in #10704 which accept the "LLVM" suffix of
the version string of the PGI compiler, which allows users to
explicitly add the llvm-pgi compiler if desired.
2019-06-20 19:07:29 -07:00
Mark W. Krentel
a76bacd594 boost: add variant for symbol visibility (#11801)
Starting with 1.69.0, boost added a bjam option for the default symbol
visibility.  Up to 1.68.0, the value was always 'global'.  1.69.0
changed the default to 'hidden' but added an option.

Most packages will work with hidden and won't notice.  But some
packages may discover that an interface that they rely on is now
hidden and inaccessible.

https://boostorg.github.io/build/manual/develop/index.html#bbv2.builtin.features.visibility
2019-06-20 17:43:25 -04:00
Justin S
686eaff30c subread: add 1.6.4 (#11800) 2019-06-20 13:54:20 -05:00
Peter Scheibel
284ae9d1cc Resources: use expanded archive name by default (#11688)
For resources, it is desirable to use the expanded archive name of
the resource as the name of the directory when adding it to the root
staging area.

#11528 established 'spack-src' as the universal directory where
source files are placed, which also affected the behavior of
resources managed with Stages.

This adds a new property ('srcdir') to Stage to remember the name of
the expanded source directory, and uses this as the default name when
placing a resource directory in the root staging area.

This also:

* Ensures that downloaded sources are archived using the expanded
  archive name (otherwise Spack will not be able to determine the
  original directory name when using a cached archive).
* Updates working_dir context manager to guarantee restoration of
  original working directory when an exception occurs
* Adds a "temp_cwd" context manager which creates a temporary
  directory and sets it as the working directory
2019-06-20 11:09:31 -07:00
Adam J. Stewart
4858d8c275 Add GDL 0.9.9 (#11760)
* Add GDL 0.9.9

* Add comment on PROJ dependency
2019-06-20 13:36:10 -04:00
Neil Flood
0cec7c6590 py-python-dateutil: Version 2.7.0 acquired dependency on setuptools-scm (#11795) 2019-06-20 09:18:04 -05:00
Carson Woods
e7eb9ce1af Bump netcdf-fortran version to 4.4.5 (#11790) 2019-06-19 17:38:17 -05:00
Oliver Breitwieser
8b1575fa0a py-matplotlib: Fix dependencies in [2.1.0:3.0.0) (#11787)
Starting with 2.1.0, backports.functools_lru_cache replaces functools32
when using python 2.7.x until python2 support is dropped in 3.0.0.

Change-Id: I8db61eac975da0042f6f5babe0f5f0c92807200e
2019-06-19 17:38:04 -05:00
Kevin Manalo
6e4ed3e84a osu-micro-benchmarks: add version 5.6.1 (#11779)
Also add mpi osu-micro-benchmarks to runtime PATH
2019-06-19 11:04:03 -07:00
brietzke
4f9116dae2 New package: fgsl: fortran interface to GSL (#11775) 2019-06-19 10:59:11 -07:00
Chuck Atkins
a60ffdd5a2 vtk, paraview, catalyst packages: Add maintainers (#11774) 2019-06-19 10:57:19 -07:00
Mark W. Krentel
d29f8d0598 xfd package: use Spack-installed libintl (#11545)
Fixes #11526

The xfd configure script tests for libintl but incorrectly concludes
that no additional library is needed because gettext is provided in
libc. So we add '-lintl' to ldlibs to point to the Spack-installed
gettext. Note that the xfd configure script does not have a
--with-gettext option to do this for us.

Also add version 1.1.3
2019-06-19 10:54:50 -07:00
Daniel Topa
06342923fc eospac package: replace md5 checksums with sha256 (#11757) 2019-06-18 19:20:35 -07:00
Andrey Prokopenko
d1c9367446 New package: ArborX (#11474) 2019-06-18 19:14:05 -07:00
Gregory Lee
8706ac1479 fixed spec dependence attribute writing. Fixes #11686 (#11776) 2019-06-19 04:13:12 +02:00
Justin S
2287dd6165 New package: amber (starting at v16) (#11619) 2019-06-18 19:01:03 -07:00
dorier
da800c21bd New package: PRRTE (#11614) 2019-06-18 18:47:24 -07:00
william-dawson
de2e088d43 New Package: ELSI (#11605) 2019-06-18 18:30:57 -07:00
Greg Becker
9a4917644a Remove test dependency on /usr/bin/gcc (#11769)
The regression test for #11678 fails on at least some Mac OS systems
because they have a /usr/bin/gcc that is secretly clang.

This PR replaces the dependency on a system gcc executable with a
test-generated script that generates the expected output for the
compiler logic.
2019-06-18 18:23:02 -07:00
Greg Becker
1ea3d29110 Ensure brew update is run before using brew in test environment (#11784)
All macos tests are failing because brew cannot install ccache
without updating brew. This ensures that brew update is run
before using brew in test environment.
2019-06-18 17:50:45 -07:00
Axel Huebl
e925589fc7 xtensor package: add version 0.20.7 and update dependencies (#11574)
* xtensor-python: add version 0.23.1
* xtensor-python: update xtensor/xtl dependency version constraints
  for 0.23.1
* xtensor-python: remove xtensor/xtl dependency version constraints
  for the develop version to favor the latest (develop) version of
  these dependencies
* xsimd: add version 7.2.3
* xtensor: add tbb variant to enable TBB parallelization
* xtensor: add version 0.20.7
* xtensor: update CMake args enable xsimd/tbb support based on
  variant settings
* xtl: add version 0.6.4
2019-06-18 17:05:47 -07:00
Robert Pavel
2eee507914 Added Cinch Spackage (#11759)
* Added Cinch Spackage and updated Flecsi to Use It

Added spackage for Cinch build system and updated flecsi spackage to use
the external version of cinch

* Flake8 compliance for Cinch and Flecsi

* Fixed Cinch Issue and Requested PR Changes

Swapped cinch back to master branch rather than test branch and style
issues for PR
2019-06-18 16:45:58 -05:00
Adam J. Stewart
d21bec996e Restrict gplates to proj@:5 (#11761)
* Restrict gplates to proj@:5

* Add comment on PROJ dependency
2019-06-18 15:15:14 -04:00
Adam J. Stewart
6d8c69848b Add py-rasterio 1.0.24 (#11738)
* Add py-rasterio 1.0.24

* Python 3 required in the next release
2019-06-18 15:14:27 -04:00
Adam J. Stewart
ff6dfe3c00 Add py-shapely 1.6.4.post2 (#11739) 2019-06-18 14:24:56 -04:00
Adam J. Stewart
ea3e1521fe Add CDO 1.9.7.1 (#11758) 2019-06-18 14:22:22 -04:00
Justin S
d82f8cd405 repeatmasker: perl and HMMER dependency fixes (#11660)
repeatmasker depended on HMMER but was never actually configured to
use it. The package also had many shebangs pointing to random perl
locations, now patched to use Spack's perl installation.
2019-06-18 11:11:00 -07:00
Hadrien G
e35355f040 ACTS package: add versions including 0.10.1 (#11606)
* Also add version 0.10.0
* Add leading '0' to 0.9.x versions (e.g. 0.09.1) and 0.8.x versions
* Don't mention acts-framework, that package isn't in Spack yet
2019-06-18 11:00:02 -07:00
Tamara Dahlgren
2a919c8851 Ensure proper gopath set for rclone (#11755)
Fixes #11745

Set the GOPATH environment variable to the stage path to avoid
creation of a $HOME/go directory.
2019-06-18 10:49:07 -07:00
Elizabeth Fischer
f886c7e59d Rename build.out to build.txt (#11749)
Rename build.out to build.txt; makes it easier when people post log files to the Spack mailing list.
2019-06-18 10:32:00 -07:00
Gabriel Rockefeller
003f670ef9 r3d: add version 2018-01-07 (#11770) 2019-06-18 09:36:49 -05:00
Adam J. Stewart
7c3137a203 Restrict libspatialite to proj@:5' (#11752) 2019-06-17 23:48:16 -04:00
Adam J. Stewart
7dc6b609d5 r-rgdal does not yet support PROJ.6 (#11766) 2019-06-17 23:47:52 -04:00
Adam J. Stewart
6422130709 Add PROJ.6 (#11730)
* Add PROJ.6

* Add back comment about newer PROJ API
2019-06-17 23:46:42 -04:00
Adam J. Stewart
1891734195 PROJ.6 not yet supported in SAGA-GIS (#11768) 2019-06-17 21:39:05 -04:00
Adam J. Stewart
a239ba33af py-cartopy does not yet support PROJ.6 (#11765) 2019-06-17 21:35:14 -04:00
Adam J. Stewart
a896a33b3b Specify which versions of PROJ work with MapServer (#11764) 2019-06-17 21:34:54 -04:00
Adam J. Stewart
349844a5fd Restrict magics to proj@:5 (#11763) 2019-06-17 21:33:25 -04:00
Adam J. Stewart
3018c64537 GRASS GIS does not yet support PROJ.6 (#11762) 2019-06-17 20:59:12 -04:00
Adam J. Stewart
b0cf2b5855 Add GEOS 3.7.2 (#11734) 2019-06-17 20:58:43 -04:00
Adam J. Stewart
de51be45b9 Add GDAL 3.0.0 (#11733)
* Add GDAL 3.0.0

* Clarify PROJ version requirements
2019-06-17 20:57:48 -04:00
Adam J. Stewart
17f20d0f32 Add py-fiona 1.8.6 (#11736)
* Add py-fiona 1.8.6

* Remove commented code

* Python 3 will be required in the next release
2019-06-17 20:54:58 -04:00
Adam J. Stewart
ee20b4826f Add libgeotiff 1.5.1 (#11731) 2019-06-17 20:46:46 -04:00
Manav Bhatia
0e34cc8a8e Libmesh updates (#11750)
* Updates to libMesh: added v1.3.1 checksum, added vtk variant, bugfix for enabling petsc when slepc variant is specified

* fixed indentation issues identified by Travis CI

* - updates version number
- added master as a version
- added new variant options for perflog, metaphysicl and blocked storage
-- bug-fix for metis

* fixes for spack indentation errors

* renaming develop to master following review comment of PR.
2019-06-17 19:38:19 -05:00
Adam J. Stewart
e23adbd4a9 Add py-pyproj 2.2.0 (#11735)
* Add py-pyproj 2.2.0

* PR review requests

* Make Python requirements more explicit
2019-06-17 20:23:40 -04:00
Adam J. Stewart
10d5008ef5 Restrict pism to proj@:4 (#11754)
* Restrict pism to proj@:5

* PROJ.5 is not yet supported either :(
2019-06-17 18:35:03 -04:00
Paul
93e1336de8 Added newer GoLang versions (#11756) 2019-06-17 17:23:09 -05:00
Adam J. Stewart
a558de117a Restrict ibmisc to proj@:4 (#11753)
* Restrict ibmisc to proj@:5

* Restrict ibmisc to proj@:4
2019-06-17 18:02:09 -04:00
Dan Lipsa
cdf4ba81e5 Remove version from py-mpi4py. (#11587) 2019-06-17 10:59:34 -04:00
Valentin Clement (バレンタイン クレメン)
f4d8b1ee60 Add version 1.2.2 and 1.2.3 to the package (#11748) 2019-06-17 16:03:26 +02:00
Dan Lipsa
83c7959580 Fix condition to enable mpi4py. (#11707)
* Fix condition to enable mpi4py.

* flake8

* Catalyst as paraview for mpi4py.

* Catalyst needs numpy and mpi4py.

* Remove leftover enable python.
2019-06-17 09:30:29 -04:00
Tamara Dahlgren
6e067a05c7 bugfix: use config fixture for stage tests (#11701)
Some tests introduced in #11528 temporarily set the user's `config:build_stage`, which affected (or created) a config.yaml file in the user's `$HOME/.spack` directory that could leave entries behind if the tests fail.

This change ensures only temporary configuration files are used/affected by these tests.
2019-06-17 11:38:34 +02:00
Tamara Dahlgren
a551e4329e docs: updates for stage.source_path (#11702) 2019-06-17 11:36:22 +02:00
Axel Huebl
b57ba6289c openPMD-api: pybind11>=2.3.0 (#11744)
Update the dependency on pybind11 to the latest version
(constexpr signature support for all C++11 compilers + fixes).
2019-06-16 17:47:55 +02:00
Todd Gamblin
ce3a3507a4 cowsay: new package (#11743)
- A program that generates ASCII pictures of a cow with a message.

- This is used by the ISC19 Singularity tutorial, so we should probably
  have it in Spack.
2019-06-16 17:29:25 +02:00
Todd Gamblin
45c65a255a docs: update tutorial page for ISC19 tutorial (#11742) 2019-06-16 12:35:12 +02:00
Adam J. Stewart
3192318f36 Add py-geopandas 0.5.0 (#11737) 2019-06-16 08:57:13 +02:00
Adam J. Stewart
4965e9be53 Add libtiff 4.0.10 (#11732) 2019-06-16 08:52:16 +02:00
Adam J. Stewart
830964c2fb Add nasm 2.14.02 (#11729) 2019-06-16 08:50:05 +02:00
Adam J. Stewart
e259932a1e Add openjpeg 2.3.1 (#11728) 2019-06-16 08:49:36 +02:00
Adam J. Stewart
76490dcdbc Add py-cligj 0.5.0 (#11727) 2019-06-16 08:48:42 +02:00
Adam J. Stewart
69a746e941 Add py-numpy 1.16.4 (#11726) 2019-06-16 08:47:38 +02:00
Adam J. Stewart
7bb44f4620 Add libjpeg-turbo 2.0.2 (#11725) 2019-06-16 08:47:14 +02:00
Adam J. Stewart
92ab46b9ed Update URL for older version of jackcess (#11724) 2019-06-16 08:46:13 +02:00
Adam J. Stewart
53a4ea43c8 Add HDF 4.2.14 (#11723) 2019-06-16 08:45:23 +02:00
Adam J. Stewart
ffb7e83e65 Add new package py-boto3 (#11722) 2019-06-16 08:44:41 +02:00
Adam J. Stewart
0de9d15a49 Add new package py-s3transfer (#11721) 2019-06-16 08:43:41 +02:00
Adam J. Stewart
9a400d13a9 Add new package py-botocore (#11720) 2019-06-16 08:43:06 +02:00
Adam J. Stewart
2a15ab42fe Add new package py-jmespath (#11719) 2019-06-16 08:42:35 +02:00
Adam J. Stewart
07a90b214b Add new package py-freezegun (#11718) 2019-06-16 08:41:27 +02:00
Adam J. Stewart
639cb17322 Rename py-dateutil -> py-python-dateutil (#11717) 2019-06-16 08:40:56 +02:00
Adam J. Stewart
954a36c499 Add py-aenum package (#11716) 2019-06-16 08:39:54 +02:00
Kevin Manalo
91ef079511 intel: add version 19.0.4 (#11741) 2019-06-15 23:19:58 -05:00
Adam J. Stewart
3bad45fedf Updates to poppler to get pdf2svg working (#11681) 2019-06-15 17:32:39 -05:00
Glenn Johnson
6592b4d46d Fix latest HPL for MKL use (#11712)
The 2.3 version of HPL needs LDFLAGS set for use of MKL libraries.
2019-06-15 15:46:59 -05:00
Michael Kuhn
f3671244e4 docs: fix config tutorial (#11715)
This fixes a few typos, adds a hint to `spack config blame` and brings
the variant specification in line with other docs sections.
2019-06-15 21:34:32 +02:00
Axel Huebl
bccfb622e5 pybind11: v2.3.0 (#11713)
Add the latest 2.3.0 release and me as package maintainer.
2019-06-15 10:30:04 -05:00
brietzke
ef55319a9c new package: mutationpp (#11705)
* new package: mutationpp

* Update package.py

* flake8: correct package.py for flake8-python-style

* Update package.py

* modifications as requested by reviewer for #11705
2019-06-15 10:29:36 -05:00
Gabriel Rockefeller
537fa81c5d r3d: add version 2019-04-24 (#11710) 2019-06-15 14:27:03 +02:00
Justin S
9d6f37dc15 montage: new package at 6.0 (#11696) 2019-06-14 16:40:50 -05:00
Matthias Diener
f3eab78b80 scons: add version 3.0.5 (#11709) 2019-06-14 16:39:58 -05:00
Satish Balay
030f0951d4 dtk@develop now requires 'submodules=True' flag (#11694) 2019-06-14 11:04:48 -05:00
Justin M Wozniak
8afae13369 swift-t: New release packages for 1.4.3 (#11684) 2019-06-14 09:49:51 -05:00
Tamara Dahlgren
1b8f641016 Ensure mock configuration directory is cleaned up on session exit. (#11700) 2019-06-13 16:41:00 -07:00
Jordan Ogas
e275ddc169 add charliecloud-0.9.10 (#11471)
* add charliecloud-0.9.10; remove obsolete version

* revert older version changes; add version function

* fix space issue

* remove url declaration

* revert url removal

* remove self reference

* fix url; removed preferred tag; use newer package url
2019-06-13 16:50:55 -05:00
Tamara Dahlgren
25b21c093a Add tests for "spack location" command (#11661)
The "spack location" command was previously untested. This also adds
a check to ensure that composite Stages can report whether they were
expanded (this property was previously only recorded in Stage but not
in CompositeStage).
2019-06-13 12:20:13 -07:00
Tamara Dahlgren
5cf62e69ce Always treat DIYStage as expanded (#11663)
DIYStage, used to treat a user-managed directory as a staging area,
should always be considered expanded (i.e. the source has been
decompressed if it was stored in an archive).

This also:

* Adds checks to ensure that the path used to instantiate a
  DIYStage refers to an existing directory.
* Adds tests to check the behavior of DIYStage (including behavior
  added here, but it was generally untested before).
2019-06-13 11:14:35 -07:00
Mark W. Krentel
aca1bfdb6a intel-xed and hpcviewer: adapt to new resource placement (#11676)
Change 'destination' to 'placement' in the use of resource() for
intel-xed and hpcviewer.  Recent commits (1842873f and eb584d89)
changed the directory path for a resource and thus broke the build
for these packages.
2019-06-13 09:53:30 +02:00
marvinbernhardt
4f2144a68e added jpeg,png,ffmpeg variants to lammps (#10404) 2019-06-12 21:02:20 -06:00
Tamara Dahlgren
16530f84be Update remaining packages to use Stage.source_path (#11662)
#11528 updated Stage to always store a Package's source in a fixed
directory accessible via `Stage.source_path` This left behind a
number of packages which were expecting to access the source code
via `Stage.path`. This Updates those packages to use
`Stage.source_path` instead.

This also updates the name of the fixed directory: The original name
of the fixed directory was "src", so if an expanded archive created a
"src" directory, then users inspecting the directory structure could
see paths like "src/src" (which wasn't wrong but could be confusing).
Therefore this also updates the name of the fixed directory to
"spack-src".
2019-06-12 17:07:47 -07:00
Massimiliano Culpo
3ce90741a3 Make "spack compiler find" check PATH by default (#11683)
Fixes #11678

`spack compiler find` was not searching `PATH` when provided with no
arguments. ea7910a updated the API for the search function and the
command logic did not update how it called this function. This also
adds a test to ensure that `spack compiler find` will collect
compilers from `PATH`.
2019-06-12 15:28:16 -07:00
Dave
fe8297da74 warpx: only allow master branch, and fix build on darwin (#11667)
* warpx: only allow master branch, and fix build on darwin

* warpx: Added CXXFLAGS=-std=c++11 for clang

* warpx: further clean up of openmp and c++11 flags

* warpx: Get around the problem with resources

The update uses placement instead of destination
2019-06-12 23:57:20 +02:00
Robert Pavel
a32382e787 Fixed Flecsi Backend Dependencies (#11679)
Fixed logic behind flecsi backends to not require legion for an mpi
build and to better support required combinations.
Also made graphviz support and tutorial building optional
2019-06-12 15:46:14 -06:00
Adam J. Stewart
4e812090c0 Add additional common C++ and Fortran header file extensions (#11600)
* Add additional common C++ and Fortran header file extensions

* Add .hxx extension

* Add .txx and .tcc extensions

* Add .icc extension
2019-06-11 20:13:55 -04:00
Sinan
6ae5f38f26 new python package/py-typesentry (#11657)
* new python package/py-typesentry

* add proper version
2019-06-11 14:33:43 -04:00
Dan Lipsa
667e2f20fe Add support for using python3 in new verison of VTK. (#11673)
* Add support for python3 in new versions of VTK.
2019-06-11 12:50:22 -04:00
Chuck Atkins
91205545f0 Add extra logic for C std flags on PGI, XL, and Cray (#11635) 2019-06-11 14:15:55 +02:00
psakievich
a998fa25b0 Paraview: Add motionfx Intel workaround (#11608)
* Paraview/VTK: Fix failure on intel builds

Paraview@5.6.0 fails to build with intel compilers on certain platforms.
Error messages have been traced to the optional MotionFX lib.
(see https://discourse.paraview.org/t/error-build-5-6-0-rc1/572)
Turning off motionfx allows for succesful builds on these platforms.
2019-06-11 08:15:41 -04:00
Peter Scheibel
406c791b88 Fix recursive module find for upstream dependencies (#11304)
"spack module tcl find -r <spec>" (and equivalents for other module
systems) was failing when a dependency was installed in an upstream
Spack instance. This updates the module index to handle locating
module files for upstream Spack installations (encapsulating the
logic in a new class called UpstreamModuleIndex); the updated index
handles the case where a Spack installation has multiple upstream
instances.

Note that if a module is not available locally but we are using the
local package, then we shouldn't use a module (i.e. if the package is
also installed upstream, and there is a module file for it, Spack
should not use that module). Likewise, if we are instance X using
upstreams Y and Z like X->Y->Z, and if we are using a package from
instance Y, then we should only use a module from instance Y. This
commit includes tests to check that this is handled properly.
2019-06-10 16:56:11 -07:00
Daniel Topa
35b1b81129 Add latest releases for pFUnit (#11642)
* Add latest releases for pFUnit
  - 3.2.10, 3.3.0, 3.3.1, 3.3.2, 3.3.3
  - 3.2.9 now with sha256
  - 4.0.0 is added, but commented out (build fails, see errors)

Verification builds

Darwin x86_64:
dantopa@cn100:pr-pfunit-darwin-general.spack $ spack find pfunit
==> 5 installed packages
-- linux-centos7-x86_64 / gcc@4.8.5 -----------------------------
pfunit@3.2.9  pfunit@3.2.10  pfunit@3.3.0  pfunit@3.3.1  pfunit@3.3.2  pfunit@3.3.3

Darwin Power9:
-- linux-rhel7-ppc64le / gcc@4.8.5 ------------------------------
pfunit@3.2.9  pfunit@3.2.10  pfunit@3.3.0  pfunit@3.3.1  pfunit@3.3.2  pfunit@3.3.3

Darwin ARM:
dantopa@cn805:pr-pfunit-darwin-arm.spack $ spack find pfunit
==> 5 installed packages
-- linux-rhel7-aarch64 / gcc@4.8.5 ------------------------------
pfunit@3.2.9  pfunit@3.2.10  pfunit@3.3.0  pfunit@3.3.1  pfunit@3.3.2  pfunit@3.3.3

2019-05-05

Signed-off-by: Daniel Topa <dantopa@lanl.gov>

* answer @citibeth comments

Signed-off-by: Daniel Topa <dantopa@lanl.gov>

* shortened offending comment to comply with flake8; suppressed error message on entry for v4.0.0

Signed-off-by: Daniel Topa <dantopa@lanl.gov>

* removed tailing space qt 20:55

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2019-06-10 18:19:52 -04:00
Geoffrey Oxberry
a52ed34fa4 ninja{-fortran}: make pkgs nonvirtual (fix #11628) (#11629) 2019-06-10 12:53:30 -04:00
Dan Lipsa
c98190a6ec ParaView and Catalyst use python3. (#11485)
Use python3 for latest paraview and catalyst versions.
2019-06-10 12:48:49 -04:00
Axel Huebl
d4008db75d CD: Package Index (#11665)
Build the docker image for the new package index REST API on each
merge/push to develop and master.
2019-06-10 18:21:33 +02:00
Chuck Atkins
0953cd3a2e Remove gnutls dependency and disable openssl when appropriate (#11646) 2019-06-10 11:19:26 -04:00
t-karatsu
7178ee3b63 Define LDFLAGS when using fujitsu compiler (#11669) 2019-06-10 11:01:32 -04:00
Quinn
58b797632e dateutils: new package (#11623)
* Adding the dateutils package
* Removing superfluous dependencies
2019-06-08 13:32:57 -07:00
Todd Gamblin
20e5f81653 tests: restore spack spec mpileaks in test output for Python 2 (#11664)
- also remove coverage calls of these commands
- we JUST want coverage to tell us what is in the test suite.
2019-06-08 13:04:44 -07:00
Peter Scheibel
f31711b84e concretization: don't apply build-dep constraints for installed packages (#11594)
Spack currently tries to unify everything in the DAG, but this is too strict for build dependencies, where it is fine to build a dependency with a tool that conflicts with a version fo that tool for a dependent's build.

To enable a workaround for conflicts among build dependencies, so that users can install in multiple steps to avoid these conflicts, make the following changes:

* Dont apply package dependency constraints for build deps of installed packages
* Avoid applying constraints for installed packages vs. concrete packages
* Mark all dependencies of installed packages as visited in normalization method
* don't remove dependency links for concrete specs in flat_dependencies

Also add tests:
* Update test to ensure that link dependencies of installed packages have constraints applied
* Add test to check for proper handling of transitive dependencies (which is currently not the case)
2019-06-08 11:43:26 -07:00
Omar Padron
bdf831469a fix qt build on gcc8.3 (#11633)
* fix qt build on gcc8.3

* source patches from upstream

* remove old code adding the same patch
2019-06-08 13:09:16 -04:00
Francois Budin
163ff9f1b6 Add ADIOS2 option to Trilinos (#11609)
ADIOS2 is the latest implementation of the ADaptable Input Output System,
ADIOS. This brand new architecture was designed to continue supporting the
performance legacy of ADIOS, and extend its current capabilities to address
current and future input/output (IO) challenges in the scientific data
lifecycle through effective research and development (R&D) activities.

ADIOS2 was recently added as a Third Party Library of Trilinos when it
was integrated to IOSS, a library inside the SEACAS package.
2019-06-08 16:34:34 +02:00
Axel Huebl
61333dc606 spack list: latest version (JSON) (#11652)
List the latest version of each package in JSON encoding.
Preparation for consumption for a "spack badge" service.
2019-06-07 14:14:08 -07:00
Massimiliano Culpo
6d56d45454 Compiler search uses a pool of workers (#10190)
- spack.compilers.find_compilers now uses a multiprocess.pool.ThreadPool to execute
  system commands for the detection of compiler versions.

- A few memoized functions have been introduced to avoid poking the filesystem multiple
  times for the same results.

- Performance is much improved, and Spack no longer fork-bombs the system when doing a `compiler find`
2019-06-07 09:57:26 -07:00
Jeffrey Salmond
9c1c50fb76 add openmp variant to lammps (#11643)
* add openmp variant to lammps

* add conflict for %gcc@9: and +openmp
2019-06-07 06:43:13 -06:00
Todd Gamblin
06cc799fd3 commands: remove unused spack list --format=rst (#11651)
- We use `spack list --foramt=html` now, as it is much faster and doesn't
  make the docs build take forever.

- Remove `spack list --format=rst` as it is no longer used.
2019-06-06 18:26:43 -07:00
Gregory Lee
7c8e9ab406 added tix package and python variant for tix (#11599)
* added tix package and python variant for tix

* addressing tix review requests

* python +tix requires +tkinter
2019-06-06 17:19:24 -04:00
Todd Gamblin
0c13c3f91f bugfix: StageComposite must include the expanded property` (#11647) 2019-06-06 14:09:19 -07:00
Todd Gamblin
89b891d264 bugfix: lua-luafilesystem package should use stage.source_path (#11648) 2019-06-06 14:07:46 -07:00
Jennifer Herting
541578a456 tests: package_sanity now checks packages in 3rd-party repos (#11637) 2019-06-06 09:18:43 -07:00
Todd Gamblin
3bd854f991 travis: disable spack spec for python 2.7 as well as 2.6
- keep this disabled until the `compiler find` fork bomb is fixed.
2019-06-05 22:41:28 -07:00
Tamara Dahlgren
b76fc827ec tests: add extra coverage for fetch strategy tests 2019-06-05 22:41:28 -07:00
Tamara Dahlgren
1842873f85 stage: make source_path available before stage is built
- `stage.source_path` was previously overloaded; it returned `None` if it
  didn't exist and this was used by client code
  - we want to be able to know the `source_path` before it's created

- make stage.source_path available before it exists.
  - use a well-known stage source path name, `$stage_path/src` that is
    available when `Stage` is instantiated but does not exist until it's
    "expanded"
  - client code can now use the variable before the stage is created.
  - client code can test whether the tarball is expanded by using the new
    `stage.expanded` property instead of testing whether `source_path` is
    `None`

- add tests for the new source_path semantics
2019-06-05 22:41:28 -07:00
Tamara Dahlgren
eb584d895b refactor: remove unused spack.stage._get_mirrors() function 2019-06-05 22:41:28 -07:00
Tamara Dahlgren
8e3fd3f7c2 tty: make tty.* print exception types
- make tty.msg, tty.info, etc. print the exception type and stringified
  message if the message argument is an exception.

- simplify parts of the code that call tty.debug(str(e))

- add extra tty.debug statements in places where exceptions were
  previously ignored
2019-06-05 22:41:28 -07:00
Justin S
8c173da4b7 nettle: fix broken build (#11611)
* nettle: force C99 build

* nettle: update to use c99_flag

from @alalazo

Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2019-06-05 19:09:01 -05:00
Christoph Junghans
8fd64dfa08 lammps: added v20190605 (#11638) 2019-06-05 19:07:33 -05:00
Justin S
f4e7786786 clang: fix error messages in c11_flag, cxx17_flag (#11632) 2019-06-05 23:51:38 +02:00
Patrick Gartung
3c0b746f44 libxpm: revert change made in unrelated PR (#11634) 2019-06-05 15:13:19 -05:00
Gregory Lee
cfcf3996d8 set GUILE env var when building gnutls, fixes issue #11601 (#11607) 2019-06-05 10:14:06 -07:00
Todd Gamblin
dc8af3023e graph: refactor static graphs
- `spack graph --static` (and `spack.graph.dot_graph`) now do the "right
  thing" and print the possible dependency graph of provided packages.

- `spack graph --static` no longer concretizes specs, as it only relies
  on class level metadata

- Previously the behavior was not consistent -- `spack graph --static`
  would graph possible dependencies of concrete specs, but would only
  include some of them.  The new code properly pursues all possible
  dependencies, and allows traversing by different dependency types.
2019-06-05 06:11:18 -07:00
Todd Gamblin
2e22fc1090 spack dependencies: support --deptype argument
- `spack dependencies` can now take a --deptype argument to only traverse
  particular deptypes

- add a new "common" argument for deptype in spack.cmd.common.arguments

- Database.installed_relatives() can now also take a deptype argument
  - this is used by `spack dependencies --installed`
2019-06-05 06:11:18 -07:00
Todd Gamblin
3dac78fc19 package: make possible_dependencies consider deptypes
- `PackageBase.possible_dependencies` now:
  - accepts a deptype param that controls dependency types traversed
  - returns a dict mapping possible depnames to their immediate possible
    dependencies (this lets you build a graph easily)

- Add tests for PackageBaes
2019-06-05 06:11:18 -07:00
Todd Gamblin
087a511da7 refactor: remove vestigial ALLOWED_URL_SCHEMES from package.py 2019-06-05 06:11:18 -07:00
Todd Gamblin
87e6cb9f72 refactor: make Package.name consistent with other class attributes
- The 'name' attribute for packages was being set in DirectiveMeta, which
  wasn't consistent with other class properties (like fullname, etc.)

- Move it to be a class property of `PackageMeta`, and add the
  corresponding property method wrapper on `PackageBase`
2019-06-05 06:11:18 -07:00
Todd Gamblin
3f5141d629 refactor: make PackageBase.possible_dependencies() a class method. 2019-06-05 06:11:18 -07:00
Justin S
4ac64e6cd8 add C standard flags to compiler classes (#11618)
* add c99_flag, c11_flag to compiler class

* implement c99_flag, c11_flag for gcc

* implement c99_flag, c11_flag for arm

* implement c99_flag for cce

* implement c99_flag, c11_flag for clang

* implement c99_flag, c11_flag for intel

* implement c99_flag, c11_flag for xl
2019-06-05 11:43:11 +02:00
Andrew Gaspar
b3379a8890 Add Google Benchmark version 1.5.0 (#11626) 2019-06-04 22:53:07 -05:00
Patrick Gartung
efa45125fb Revert "Git: patch to make git relocatable with buildcache. (#11596)" (#11625)
This reverts commit 30ec13f375.
2019-06-04 21:09:05 -05:00
Greg Becker
0990f12dd9 modules: set permissions based on package configuration (#11337)
Previously, module files were not set with the same permissions as the package installation.  For world-readable packages, this would not cause a problem.  For group readable packages, it does:

```
packages:
  mypackage:
    permissions:
      group: mygroup
      read: group
      write: group
```

In this case, the modulefile is unreadable by members of the group other than the one who installed it.  Add logic to the modulefile writers to set the permissions based on the configuration in `packages.yaml`
2019-06-04 19:15:47 -04:00
Patrick Gartung
964a1d5997 Buildcache relocate.py error fix (#11616)
* Add a trailing / if file --mime does not return a mimetype with a / in it

* Flake8
2019-06-04 14:39:04 -05:00
Justin S
a7776972ad hotspot: new package at 6.0 (#11610) 2019-06-04 09:35:54 +02:00
Chuck Atkins
e4f0726927 mesa: Revert updated meson build and restore autotools build (#11595)
Due to the large number of issues this migration has caused, this rolls back
to the older autotools build.  However, it still keeps the updates wrt
variants and virtual packages.
2019-06-03 10:55:36 -04:00
Patrick Gartung
30ec13f375 Git: patch to make git relocatable with buildcache. (#11596)
* Apply patch to git to make it search for config files from its current location instead of the locations hard coded at install.

* Add provenance info for patch

* Pass needed flags to make

* Environment variables need because of relocation
2019-05-31 15:38:40 -05:00
Patrick Gartung
88473a8da3 Build cache: relocate path to spack/bin/sbang in text files. (#11592)
* Build cache: relocate path to spack/bin/sbang in text files.

* Found in testing.

* update packaging test

* Make sbang replacement including #!/bin/bash. Add an additional spack prefix replacement to fix stage directory references.

* flake8

* Use buildinfo.get() so old buildcaches without buildinfo['spackprefix'] can be read.
2019-05-31 11:33:29 -05:00
sameershende
f5a2d7698d Package/tau/tau 2.28.1 update (#11591)
* Updating the TAU package with 2.28 and public repo

* Cleaning up TAU package and fixing binutils to install extras
The extras variant will install the extra ELF headers needed
by the TAU package.  The TAU package has been cleaned up and
extended.

* Adding some comments to the changes in binutils

* Adding correct python support, finding include and lib paths.

* Added PDT 3.25.1.

* Added TAU v2.28.1 with libdwarf and libelf.

* When +libdwarf is activated, +libelf is not automatically activated. It checks separately for libelf.
2019-05-31 10:01:19 -05:00
Justin S
a441fcbe69 alan: new package at 2.1.1 (#11593) 2019-05-30 17:50:14 -05:00
Valentin Reis
0b5ccd22da Adds the aml memory management library. (#11590)
AML is a collection of building blocks for explicit memory management on
complex architectures.

https://xgitlab.cels.anl.gov/argo/aml
https://argo-aml.readthedocs.io/en/latest/
2019-05-30 16:01:28 -05:00
Justin S
f089b9b053 r-randomglm: new package at 1.02-1 (#11589) 2019-05-30 13:35:01 -05:00
Nick Booher
786b59633d Revbayes update (#11559)
* revbayes: new version

* revbayes: pep8
2019-05-30 13:23:32 -04:00
Justin S
9b88f1b851 mathematica: new package at 12.0.0 (#11509)
* mathematica: new package at 12.0.0

* mathematica: add missing os import

* mathematica: fix url format
2019-05-30 13:21:16 -04:00
Frédéric Simonis
8b81f82156 precice: add version 1.5.0 (#11577) 2019-05-29 15:41:48 -05:00
Patrick Gartung
deab45e7c8 Xrootd: set PYTHON_EXECUTABLE with +python variant (#11581)
* Xrootd: set PYTHON_EXECUTABLE with +python variant

When building with python3 PYTHON_EXECUTABLE needs to be set for deprecated FindPythonInterp to work as expected.

* Add comment

* Flake8

* More flake8

* Update package.py

* typo
2019-05-29 15:41:30 -05:00
Patrick Gartung
7438bb7f45 ROOT: set PYTHON_EXECUTABLE (#11583)
Per @adamjstewart  use spec['python'].command.path
2019-05-29 15:41:13 -05:00
Justin S
ca05c2cbd8 py-flye: new package at 2.4.2 (#11584)
* py-flye: new package at 2.4.2

* py-flye: better python version constraint
2019-05-29 15:37:52 -05:00
Justin Too
a49ce3fc32 ROSE: add version 0.9.10.0, update to Autotools, add variants (#9484)
* Also add versions 0.9.9.104, 0.9.9.52, 0.9.9.0, and 'develop'
* Replace version 0.9.7 with 0.9.7.0
* Update Rose to be an Autotools package
* Update boost dependency to 1.60.0 or later (previously 1.47.0)
* Add EDG binary identifiers for ROSE versions installing from
  archives (rather than git)
* Add variants for mvapich2 backend, c++11, debug symbols,
  optimization, and ROSE-based projects (codethorn, autopar, and
  polyopt)
* Remove patch add_spack_compiler_recognition
2019-05-29 12:00:50 -07:00
Hadrien G
ca71f8b044 New versions and bugfixes for the ACTS package (#11578)
* Improve C++ standard computation in ACTS package

* Use a more clever strategy for aligning ACTS cxxstd with ROOT cxxstd

* Add new ACTS releases

* ACTS is not compatible with the new Boost CMake build system yet

* Explain why Boost 1.70 does not work currently
2019-05-29 13:45:09 -05:00
Dustin Wheeler
8804fbd891 Add LSF dependency for OpenMPI (#11532)
* Add LSF package, which cannot be installed by Spack and must be
  system-installed. The package install will fail if no external
  LSF is registered in packages.yaml (LSF may not be installed in a
  well-known location and the external entry helps Spack locate it
  for dependents).
* Add LSF dependency to OpenMPI when schedulers=lsf is chosen
2019-05-29 10:38:55 -07:00
Patrick Gartung
58a4959b1a Add newer Google Benchmark version (#11580) 2019-05-29 12:02:41 -05:00
Patrick Gartung
3a20a93bfa ROOT: Set PYTHON_EXECUTABLE with +python variant (#11579)
* ROOT: Set PYTHON_EXECUTABLE with +python variant

After cmake v3.12 FindPythonInterp used by llvm subsystem is deprecated. Setting -DPYTHON_EXECUTABLE=path_to_python fixes this error:

1 error found in build log:
     118    -- Doxygen disabled.
     119    -- Go bindings disabled.
     120    -- LLVM host triple: x86_64-unknown-linux-gnu
     121    -- LLVM default target triple: x86_64-unknown-linux-gnu
     122    -- Building with -fPIC
     123    -- Found PythonInterp: /usr/bin/python2.7
  >> 124    CMake Error at interpreter/llvm/src/CMakeLists.txt:613 (if):
     125      if given arguments:
     126    
     127        "VERSION_LESS" "2.7"
     128    
     129      Unknown arguments specified
     130

* Flake8

* Update var/spack/repos/builtin/packages/root/package.py

Co-Authored-By: Javier Cervantes <javiercvilla@gmail.com>
2019-05-29 12:02:21 -05:00
Kenneth Moreland
a7ffccfc97 vtkm: fix the directory cmake looks for the source code (#11576)
Previously, the vtkm package was adding a "../" option to the
cmake command line. I suppose this was supposed to be pointing
to the source code, but did not. Rather, Spack correctly adds
the source directory as the first argument to cmake. However,
because ../ was added, it used that as the source directory
instead.

Simply remove this argument to make CMake work correctly.
2019-05-29 11:10:12 -04:00
Axel Huebl
643e7806e0 Catch: 2.8.0 (#11570)
Add the latest Catch2 release.
2019-05-28 15:24:18 -05:00
mathsen
9c9a39538e GnuTLS by default depends on Guile, added a guile variant. Updated GnuTLS to 3.6.8 (#11571) 2019-05-28 15:23:59 -05:00
Satish Balay
0b57c3b8e5 petsc: add version 3.11.2 (#11572) 2019-05-28 15:23:00 -05:00
Denis Davydov
e094e19224 dealii: add 9.1.1 (#11573) 2019-05-28 15:22:39 -05:00
Daryl W. Grunau
6698d1dddb Add support for new unittest-cpp package (#11575)
* bump eospac version

* Revert "bump eospac version"

This reverts commit 835b1f822d.

* Add support for new package: unittest-cpp
2019-05-28 15:21:24 -05:00
Massimiliano Culpo
01ece824e1 Cap the maximum number of build jobs (#11373)
* config:build_jobs now controls the number of parallel jobs to spawn during
builds, but cannot ever exceed the number of cores on the machine.

* The default is set to 16 or the number of available cores, whatever
is lowest.

* Updated docs to reflect the changes done to limit parallel builds
2019-05-28 06:42:04 -07:00
Todd Gamblin
2a51e07fde commands: completion for new --update and --header options (#11566) 2019-05-27 14:13:58 -07:00
Todd Gamblin
3ae5262182 docs: set gettext_uuid to False to reduce churn (#11567)
- `gettext_uuid=True` makes every commit update every .pot file in spack/localized-docs,
  and speeds up the internationalized doc build slightly.

- Optimize for less repository churn, and use `python-levenshtein` to accelerate 
  the build instead.
2019-05-27 13:42:27 -07:00
Axel Huebl
6d54212b94 mirror create: non-zero return code (#8585)
`mirror create` should return a non-zero return code if errors
occured.
2019-05-27 13:01:01 +02:00
Levi Baber
36fda22ed9 r-geomorph: new version (#11556) 2019-05-26 23:34:17 -05:00
健美猞猁
47538a21ec Add a new version for gnutls. (#11546)
* Update URL and add a new version.

* Fix flake8 issues.

* Remove newly-added duplicate url_for_version.
2019-05-26 20:45:16 -05:00
Levi Baber
1efaaad344 py-markdown: new version (#11548) 2019-05-26 20:45:01 -05:00
健美猞猁
7433f9d2cc Add new versions for intel-mkl-dnn. (#11549)
* Add new versions for intel-mkl-dnn.

* Remove the last trailing line.

* Update url and set 0.19 as preferred.
2019-05-26 20:44:34 -05:00
Levi Baber
829bbd7884 r-emmli: new package (#11557) 2019-05-26 20:43:22 -05:00
Olaf Mersmann
af2de9eb2a Update GnuPG and associated packages (#11564)
* libassuan: Update to v2.5.3

* gnupg: Update to v2.2.15

* libgpg-error: Update to v1.36

* libgcrypt: Update to v1.8.4
2019-05-26 20:41:37 -05:00
Axel Huebl
86b2156921 New Package: sl (#11565)
Add the sl program.
2019-05-26 20:40:55 -05:00
Todd Gamblin
d6f2ff1426 link_tree: add option to merge link trees with relative targets
- previous version of link trees would only do absolute symlinks

- this version can do relative links using merge(relative=True)
2019-05-26 18:23:44 -07:00
Todd Gamblin
f32843528e docs: make docs build relocatable for localized builds
- make all Spack paths relative to a `_spack_root` symlink, so that we
  can easily relocate the docs build *outside* lib/spack/docs

- set some useful defaults for gettext translation variables in conf.py

- update `relativeinclude` and other references to the spack root in the
  RST files to use _spack_root
2019-05-26 18:23:44 -07:00
Todd Gamblin
8bf1bd4637 docs: remove legacy import for Sphinx 1.7 2019-05-26 18:23:44 -07:00
Todd Gamblin
e1c5d1378b docs: match ReadTheDocs; use -W (warnings as errors) with Sphinx 2019-05-26 18:23:44 -07:00
Todd Gamblin
3340d586c4 commands: add --update option to spack list
- Add a `--update FILE` option to `spack list`
- Output is written to the file only if any package is newer than the file
- Simplify the code in docs/conf.py using this new option
2019-05-26 18:23:44 -07:00
Todd Gamblin
6380f1917a commands: Add --header and --update options to spack commands
The Spack documentation currently hard-codes some functionality in
`conf.py`, which makes the doc build less "pluggable" for things like
localized doc builds.

In particular, we unconditionally generate an index of commands and a
package list as part of the docs, but those should really only be done if
things are not up to date.

This commit does the following:

- Add `--header` option to `spack commands` so that it can do the work of
  prepending text to its output.

- Add `--update FILE` option to `spack commands` that makes it generate a
  new command index *only* if FILE is out of date w.r.t. commands in the
  Spack source.

- Simplify code in `conf.py` to use these options and only update the
  command index when needed.
2019-05-26 18:23:44 -07:00
Todd Gamblin
43aaf8c404 docs: Use HDF5 as the example package for spack graph 2019-05-26 18:23:44 -07:00
Satish Balay
727089c4ef xsdk@0.4.0: update dealii defaults wrt changes in a973ab475 (#11562)
wrt xsdk@develop - ginkgo requires openmp - so disable until we can add openmp dependencies consistantly
2019-05-26 10:43:06 -05:00
Mark W. Krentel
7c32a4c399 mbedtls: add pic variant (#11558)
Add variant 'pic' for including in shared libraries.

Add build dependency on perl.  Compiling mbedtls runs several perl
scripts.

Add versions 2.7.10 and 2.16.1, the heads of the two main stable
branches.
2019-05-24 21:50:13 -05:00
Stephen Hudson
bb09bdedc6 Update libensemble to v0.5.0 (#11544) 2019-05-24 15:11:56 -05:00
健美猞猁
137cad2915 Add nettle@3.4.1 (#11547) 2019-05-24 15:08:02 -05:00
Massimiliano Culpo
c291866b9a build env: simplify handling of parallel jobs (#11524)
This PR implements several refactors requested in #11373, specifically:

- Config scopes are used to handle builtin defaults, command line overrides 
  and package overrides (`parallel=False`)
- `Package.make_jobs` attribute has been removed; `make_jobs` remains
  as a module-scope variable in the build environment.
- The use of the argument `-j` has been rationalized across commands
  - move '-j'/'--jobs' argument into `spack.cmd.common.arguments`
- Add unit tests to check that setting parallel jobs works as expected
  - add new test to ensure that build job setting is isolated to each build
- Fix packages that used `Package.make_jobs` (i.e. `bazel`)
2019-05-24 11:45:22 -07:00
Massimiliano Culpo
1bd4521f72 Updated lmod (to version 8.1.5) and associated dependencies (#11552)
Lmod version 8.1.5
Lua version 5.3.5
Lua Filesystem 1.7.0.2

Turned tcl to a link dependency so that Lmod's configure can find it.
2019-05-24 12:45:52 -05:00
Adam J. Stewart
6212e0d9b2 Add latest version of py-cython (#11494)
* Add latest version of py-cython

* Fix cython unit tests
2019-05-23 20:01:45 -05:00
Todd Gamblin
ab21b3d194 docs: truncate spack list output in basic usage
`spack list` output is very long and takes up a lot of space in the docs.
Truncate it to just 10 lines and link to the package list page.
2019-05-23 12:40:01 -07:00
Hans Pabst
d6cf3b6718 LIBXSMM 1.12.1 (#11538) 2019-05-23 10:16:32 -05:00
Jon Rood
4c465d2602 Add cppcheck version 1.87. (#11536) 2019-05-22 18:52:48 -05:00
Jon Rood
e57edebb50 Add CMake 3.14.3 and 3.14.4. (#11534) 2019-05-22 15:46:52 -05:00
Omar Padron
a37efefd3d package vtk - improve gl handling (#11530)
* package vtk - improve gl handling

* package vtk - minor cleanup
2019-05-22 12:04:29 -04:00
Dustin Wheeler
c2e087c411 Fix typo in openmpi@2.1.6 libmpi.so comment. (#11529) 2019-05-22 10:37:33 -05:00
t-karatsu
1e9bb8c512 Add Fujitsu compiler to Spack. (#11287)
* Add Fujitsu compiler to Spack.

* Fixes for flake8

* Chenges location of FCC to subdirectory called case-insensitive

* Add compiler tests for Fujitsu compiler

* Modify the logic of taking compiler version for new version of Fujitsu compiler
2019-05-21 20:31:14 -05:00
Denis Davydov
a973ab4751 dealii: add 9.1.0 (#11527) 2019-05-21 16:23:03 -05:00
Levi Baber
b13665d065 py-htseq: new version (#11525) 2019-05-21 12:08:31 -05:00
Elizabeth Fischer
a45c4ef33d Add version (#10594) 2019-05-21 10:03:50 -04:00
Michael Kuhn
1f828ce5b8 Update scorep and friends (#11523) 2019-05-21 12:28:12 +02:00
Denis Davydov
5d6461b895 dealii: fix symengine constraints (#11517)
disable symengine constraints due to limitations of Spack
2019-05-21 07:38:58 +02:00
Chuck Atkins
a34142ed30 mesa: Patch missing gl symbols in OSMesa (#11518) 2019-05-20 22:41:41 -04:00
Glenn Johnson
d1ea5ba2cd OpenMPI: update behavior for fabrics/schedulers=auto (#11431)
* When fabrics=auto or schedulers=auto, the intent is to defer to the
  OpenMPI configure and let it determine and use what it finds
  available on the system. The current behavior for 'with_or_without'
  in the case of 'auto' explicitly disables all possible values.
  This updates the logic to call 'with_or_without' only when the
  value of fabrics/schedulers is not 'auto'.
* To allow explicitly disabling all fabrics/schedulers, each of these
  variants has added support for 'none' (which is also the default
  value).
* Add a conflict for the loadleveler scheduler for openmpi-3 and
  above as it is no longer a valid configure option.
2019-05-20 17:52:17 -07:00
Adam J. Stewart
e2065fad72 Make flake8 check spack script as well as .py files (#11513)
* Make flake8 check bin/spack
2019-05-20 13:39:25 -07:00
Mario Melara
4d71117080 Get Cray OS version from PrgEnv-cray (#10774)
The regex used for finding the Cray OS version from the PrgEnv-cray
module was not exact and was at times pulling the version from other
PrgEnv modules. This updates the regular expression to be more exact.
2019-05-20 11:06:02 -07:00
Andrew Gaspar
2168c08ac5 Update optional-lite and span-lite to use CMakePackage (#11407)
* Update optional-lite and span-lite to use CMakePackage

These packages only have CMake installs on their most recent versions.
Therefore, we overload all of the CMake stages to fallback to the old
versions (no-op for most, copytree for install), and use CMakePackage on
the new versions.

* Add new string-view-lite version with CMake install support

* Only override phases for old versions of *-lite packages
2019-05-20 13:04:06 -05:00
Adam J. Stewart
7fe0230492 Add py-kmodes package (#11497) 2019-05-19 14:17:30 -05:00
Adam J. Stewart
5b6445e519 Add latest version of joblib (#11495) 2019-05-19 14:17:03 -05:00
Adam J. Stewart
ac358a1b4d Add latest version of setuptools (#11493) 2019-05-19 14:16:37 -05:00
David Beckingsale
866b9b5d13 Update Umpire package with new versions (#11441)
* Update Umpire package with new versions

* Fix version ordering
2019-05-18 23:04:12 -05:00
Denis Davydov
a66cc59bb0 trilinos: add variant to disable chaco from seacas (#11482)
* trilinos: add variant to disable chaco from seacas

keep it OFF by default due to the presence of the global symbol "divide"
that can lead to symbol clash with other libraries, for example see
https://github.com/dealii/dealii/issues/8170#issuecomment-492700787

* dealii: add conflict statement for adol-c and Trilinos SEACAS Chaco
2019-05-18 23:01:44 -05:00
Mark W. Krentel
e1bb6821aa dyninst: rework the cmake args for version 10.1 and later (#11484)
* dyninst: rework the cmake args for version 10.1 and later

Add a separate when() case for the cmake args for Dyninst 10.1.0 and
later.  The prereq args have changed enough that this makes things
easier going forward.  (My previous commit 26b9369c was inaccurate and
temporary.)

Dyninst 10.1.0 accepts boost 1.70, but earlier dyninst are restricted
to <= 1.69 (not worth back porting every boost change).

Change all the dyninst versions to 3 digits for clarity and
consistency.

* Add version 10.1.0.
2019-05-18 23:00:48 -05:00
Nichols A. Romero
6ba6c84de5 QMCPACK Update May 2019 (#11492)
* Add QMCPACK 3.7.0

* SOA is now the default.

* Add QMCPACK converter based on QE 6.4
2019-05-18 22:57:52 -05:00
Jean-Paul Pelteret
517212b8a3 Add conflicts in deal.II package between SymEngine and Trilinos variants (#11499) 2019-05-18 22:56:56 -05:00
Adam J. Stewart
6b068a855e Fix typo in spack executable (#11512) 2019-05-18 21:00:46 -05:00
Owen Solberg
92604ed576 intel-tbb: fix patch for old compilers (#11371)
* added patch for intel-tbb@2019.1: with old compilers

* sparately specify when @:2018 and @2019

the reason we can't say @:2019 is that would include @2019.1 where the
patch doesn't work.

* should be possible to list when constraint as @:2019

According to my reading of ["Version ranges" in the Spack
docs](https://spack.readthedocs.io/en/latest/packaging_guide.html#version-ranges),
this should apply to up to `2019` but not `2019.1:`

* @:2019.0 appears to be necessary to specify 2019 but not 2019.1

* specifying 2019.1 2019.2 2019.3 2019.4 separately and explcitly

* flake8 fixes for long lines.

* add comments to explain why so many different patch directives

* remove blank like for flake8

* revert spec %gcc@4.8.0:4.99999 -> %gcc@4.8.0:
2019-05-18 21:00:32 -05:00
George Hartzell
e592262da8 Typos: funciton, woudl, hm,... (#11511) 2019-05-18 11:39:23 -05:00
Mario Melara
9957093e53 Execute modulecmd in bash shell (#11510)
Adds executable=/bin/bash into Popen. We discovered this bug while
working in a csh/tsch environment. By executing with /bin/bash we ensure
that the module command works.
2019-05-18 01:49:19 +02:00
Justin S
c595883195 r-popvar: new package at 1.2.1 (#11490) 2019-05-17 14:45:21 -05:00
Justin S
cc6f822cb1 smof: new package at 2.13.1 (#11502) 2019-05-17 14:44:35 -05:00
Justin S
c7a28ec1d4 r-bglr: new package at 1.0.8 (#11489) 2019-05-17 14:35:38 -05:00
Justin S
719cd6741d r-rrblup: new package at 4.6 (#11488) 2019-05-17 14:34:33 -05:00
Justin S
8c5b41793c r-qtl: new package at 1.44-9 (#11487) 2019-05-17 14:33:42 -05:00
Justin S
c00ed0d942 py-metasv: new package at 0.5.4 (#11476) 2019-05-17 14:33:04 -05:00
Justin S
7a459857e7 py-pybedtools: new package at 0.6.9 (#11475)
* py-pybedtools: new package at 0.6.9

* py-pybedtools: add bedtools2 dep
2019-05-17 14:32:21 -05:00
Justin S
79a0da6098 repeatmodeler: new package at 1.0.11 (#11472) 2019-05-17 14:31:26 -05:00
Sriram Swaminarayan
0557d93080 added branch multisplice to the parsplice package (#11504) 2019-05-17 12:08:40 -06:00
Christoph Junghans
b7f2923607 gasnet: 2019.3.0 (#11503) 2019-05-17 12:02:43 -06:00
Christoph Junghans
2af7688c55 parsplice: needs LAMMPS_EXCEPTIONS (#11500) 2019-05-17 08:57:35 -06:00
Piotr Luszczek
900f8f0806 Add version 2.5.1-alpha1 of MAGMA (#11486) 2019-05-17 08:19:32 -05:00
Todd Gamblin
23c48d94d3 cmake: default to +ownlibs to improve build times (#11483)
- CMake is built *very* frequently, and the number of dependencies it has
  accumulated can take a very long time on some systems.

- Use +ownlibs by default to avoid the build overhead. This won't
  interfere with other packages by introducing conflicting libraries, as
  CMake is nearly always a build dependency.
2019-05-17 08:47:58 +02:00
Jim Galarowicz
c7f23dcd8d OpenSpeedShop/CBTF package updates and fixes (#11470)
This avoids using Boost 1.70.0, fixes library access in OpenSpeedShop
packages, adds new versions, and updates QT dependency constraints
in CBTF and OpenSpeedShop packages

- Constrain Boost dependency to 1.69.0 or earlier to avoid issues
  with 1.70.0 for Open|SpeedShop and CBTF packages
- Update DYNINSTAPI_RT_LIB environment variable to use single library
  from "find_libraries" (which returns a list) in OpenSpeedShop
  packages
  Fixes #11443
- Add version 1.9.3 for CBTF Argo Navis, CBTF Krell, CBTF LANL, and
  CBTF packages
- Add version 2.4.1 for OpenSpeedShop Utils and OpenSpeedShop
  packages
- Update QT dependency to 5.10.0 or greater for QtGraph and CBTF Argo
  Navis packages
2019-05-16 18:19:55 -07:00
Michael Kuhn
e90b4ce6fb CDO package: Fix build with gcc@9 (#11464)
This makes several changes to make CDO work with gcc@9:

- Add version 1.9.7rc2
- Add a patch to make version 1.9.7rc2 build with gcc@9:
- Add a conflict with GCC 9 for earlier versions of CDO

It also adds a pkgconfig build dependency as configure checks for it.
2019-05-16 17:53:38 -07:00
Andrew Gaspar
8675f44d45 Kokkos package: add debug variant (#11469) 2019-05-16 17:35:23 -07:00
Massimiliano Culpo
c03be0d65a Command extensions can import code from modules in root or cmd folder (#11209)
#8612 added command extensions to Spack: a command implemented in a
separate directory. This improves the implementation by allowing
the command to import additional utility code stored within the
established directory structure for commands.

This also:

* Adds tests for command extensions
* Documents command extensions (including the expected directory
  layout)
2019-05-16 17:27:42 -07:00
Chris Green
b9370bf20b Allow command access to dump/pickle_environment from #8476 (#11434)
* Allow command access to dump/pickle_environment from #8476
2019-05-17 09:15:32 +09:00
Chris Green
f90507a227 numpy: new version 1.16.3; update historical versions. (#11364) 2019-05-16 11:44:43 -05:00
Chuck Atkins
c2d6095cf3 paraview: fix several dependency issues (#11432)
* Use externally provided mpi4py
* Make mpi4py and numpy both build deps instead of only run deps
* libxt is only on ~osmesa platform=linux
2019-05-16 09:04:44 -04:00
Matthias Wolf
7fcf534b25 junit: escape remaining inputs. (#11382) 2019-05-16 14:40:07 +02:00
David Beckingsale
5ccc695bfb Fix CMake versions dependencies in RAJA package (#11440) 2019-05-16 13:54:52 +02:00
Thomas Gruber
0337170d34 Likwid: added versions 4.3.3 and 4.3.4 (#11479) 2019-05-16 13:35:25 +02:00
Denis Davydov
38a59e6e37 symengine: add 0.4.0, fix dependency in dealii (#11473) 2019-05-16 12:23:21 +02:00
Todd Gamblin
a750237532 flake8: add exceptions for overly pedantic camelcase rules from pep8-naming (#11477)
Rules N813 and N814 prevented import statements like this:

  xml.etree.ElementTree as et
  xml.etree.ElementTree as ET

But both of those seem pretty reasonable.  We see no reason to require any camelcase import to be imported "as" a camelcase word.
2019-05-16 09:47:02 +02:00
ktsai7
f68f5e3014 Update flecsi package.py (#11442)
* Update flecsi package.py

* Update package.py

* Update package.py

* Update package.py
2019-05-15 15:29:08 -06:00
Justin S
bfb0f57492 r-geonames: new package at 0.999 (#11455) 2019-05-15 16:04:50 -05:00
Justin S
11bd795ca8 repeatscout: new package at 1.0.5 (#11409)
* repeatscout: new package at 1.0.5

* repeatscout: add trf runtime dependency

* repeatscout: add nseg runtime dependency
2019-05-15 16:04:17 -05:00
Justin S
19355cafae r-phylostratr: new package (#11053) 2019-05-15 16:03:36 -05:00
Justin S
5f5616d6a2 r-taxizedb: new package at 0.1.4 (#11052) 2019-05-15 16:02:54 -05:00
Justin S
b19429159f r-rmysql: add 0.10.17, mariadb-connector-c dependency (#11044)
* r-rmysql: add 0.10.17, mariadb-connector-c dependency

* r-rmysql: add dbi, mariadb version constraints
2019-05-15 15:58:15 -05:00
Justin S
62fa813678 recon: new package at 1.08 (#11408)
* recon: new package at 1.08

* recon: add period

* recon: use proper decorators, better documentation

* recon: fix incorrect os import

* recon: add repeatmasker patch as variant
2019-05-15 15:55:10 -05:00
Justin S
80d7573df8 r-rnoaa: new package at 0.8.4 (#11461) 2019-05-15 15:52:17 -05:00
Justin S
a99454ec6d r-isdparser: new package at 0.3.0 (#11460) 2019-05-15 15:51:50 -05:00
Justin S
cdd8da7251 r-crul: new package at 0.7.4 (#11459) 2019-05-15 15:51:11 -05:00
Justin S
cfad3cd06c r-httpcode: new package at 0.2.0 (#11454) 2019-05-15 15:50:32 -05:00
Justin S
f3dd933e3f r-urltools: new package at 1.7.3 (#11458) 2019-05-15 15:48:54 -05:00
Justin S
c49017a4c5 r-triebeard: new package at 0.3.0 (#11457) 2019-05-15 15:48:17 -05:00
Justin S
230db7c880 r-curl: add 3.3 (#11456) 2019-05-15 15:47:45 -05:00
Denis Davydov
9d34326992 fix suite-sparse built with tbb from intel-parallel-studio (#11134)
* fix suite-sparse built with tbb from intel-parallel-studio

* intel: add tbb_headers, strip newline from cxx_lib

* use property
2019-05-15 11:03:19 -07:00
Justin S
5c021f5416 New package: NSEG (starting at version 1.0) (#11410)
The source is managed as a set of files in an FTP URL. Since there
are no FetchStrategy's implemented for this setup, the files are
managed as a set of Resource's
2019-05-15 10:35:38 -07:00
Leonhard Reichenbach
eae9b0908a CMake package: add dependencies (#11257)
Add dependencies to CMake and GnuTLS which would otherwise be
picked up from the system

* Add gnutls as explicit dependency of CMake
* Add new package libidn2 as explicit dependency for gnutls
2019-05-15 10:07:31 -07:00
Christoph Junghans
0226a95232 parsplice: fix build (#11462) 2019-05-15 08:18:35 -06:00
Todd Gamblin
1dc8f952a5 Use svn info --xml instead of svn info to get svn revisions (#11466)
- `svn info` prints different results depending on the system locale
  - in particular, Japanese output doesn't contain "Revision:"

- Change Spack code to use XML output instead of using the human output
2019-05-15 13:37:02 +02:00
Brian Van Essen
821b7d3b93 Added setuptools to receipe (#11463) 2019-05-15 12:19:04 +02:00
Michael Kuhn
58c5442d62 kitty: Fix pkgconfig dependency (#11465)
pkgconfig is the correct virtual dependency while pkg-config is a
specific implementation.
2019-05-15 12:18:16 +02:00
Sinan
54d56db1f1 New package: py-pyrosar (#11428) 2019-05-15 10:53:30 +09:00
Sinan
733c2a2554 New package: py-spatialist (#11427) 2019-05-15 10:52:31 +09:00
Sinan
63af41c0c6 New package: py-tblib (#11425) 2019-05-15 10:51:37 +09:00
Sinan
e2ce4386e2 New package: py-scoop (#11423) 2019-05-15 10:50:41 +09:00
Sinan
249845e80b New package: py-progressbar2 (#11421) 2019-05-15 10:49:28 +09:00
Sinan
544cf085b4 New package: py-python-utils (#11422) 2019-05-15 10:47:28 +09:00
Christoph Junghans
6083de3baa nut: add v0.1.1 (#11444) 2019-05-14 16:36:31 -06:00
Justin S
723eea00f3 r-construct: new package at 1.0.3 (#11452) 2019-05-14 16:24:01 -05:00
Justin S
1ceeac8603 r-rstan: add 2.18.2 (#11447) 2019-05-14 16:23:14 -05:00
Justin S
fc890c80fb r-loo: new package at 2.1.0 (#11448) 2019-05-14 16:22:29 -05:00
Brian Van Essen
92040a475f LBANN: add support for new python front end (#11395)
* LBANN: add python dependency and required python library dependencies
* LBANN: add version 0.99 as alias for develop branch
* LBANN: build Conduit library by default
* LBANN: CUB is included with Hydrogen for later versions
* New package: py-graphviz (dependency for LBANN)
* New package: py-texttable (dependency for LBANN)
* New package: py-onnx (dependency for LBANN)
* New package: py-typing-extensions (dependency for py-onnx)
* Conduit: add version 0.4.0
* NCCL: Add versions 2.4.6-1 and 2.4.2-1
* Protobuf: Add versions 3.7.1 and 3.7.0
* py-protobuf: add version 3.7.1
* py-typing: add version 3.6.4
* cuDNN: add versions. The source differs depending on the
  architecture, so the versions include a suffix to encode this.
  For example this adds 7.5.1-10.1-x86_64 as well as
  7.5.1-10.1-ppc64le
* cuDNN: Newer versions require newer versions of CUDA
* Hydrogen: add configure options for CUB and Aluminum
2019-05-15 06:20:00 +09:00
Justin S
7ff4105ab5 gmap-gsnap: add 2019-05-12 (#11453) 2019-05-14 15:58:48 -05:00
Justin S
f726e14a0a r-rstantools: new package at 1.5.1 (#11451) 2019-05-14 15:57:54 -05:00
Justin S
ea49b64c44 r-caroline: new package at 0.7.6 (#11450) 2019-05-14 15:57:33 -05:00
Justin S
a4ceffa4ff r-stanheaders: add 2.18.1 (#11446) 2019-05-14 15:18:03 -05:00
Justin S
4f1717998a r-withr: add 2.1.2 (#11445) 2019-05-14 15:17:25 -05:00
Justin S
c6d34076dc repeatmasker: add 4.0.9, refactor interactive config (#11385) 2019-05-14 15:16:32 -05:00
Jon Rood
5cd593743e PNetCDF package: enable option required by NetCDF (#11420)
The --enable-relax-coord-bound option was added in 1.8.0. NetCDF
4.6.3 enabled relax coords by default and required it from PNetCDF.
PNetCDF 1.10.0 enabled it by default but for versions between 1.8.0
and 1.10.0 it should be enabled explicitly.
2019-05-15 05:15:38 +09:00
Peter Scheibel
c54f23d405 CUDA package: exclude compat libs (#11449)
CUDA 10.0 provides Compatability libraries for running newer versions
of CUDA with older drivers. These do not work with newer drivers.
2019-05-15 04:59:12 +09:00
Justin S
a5cf50df2e megadock: new package at 4.0.3 (#10537)
* megadock: new package at 4.0.3

* megadock: remove CudaPackage redundancies

* megadock: move env vars to build targets, use cuda_arch variant

* megadock: flake8 fixes, more flexible mathlib
2019-05-14 14:47:19 -05:00
Jon Rood
f7a778af3c Fix py-yt for Python 2 by requesting older py-ipython version (#11416)
* Fix py-yt for Python 2 by requesting older py-ipython version.
* Add conflicts statement to py-ipython because version 7: is not
  compatible with python@2.7
2019-05-15 04:24:52 +09:00
william-dawson
76dd7a92e1 New Package: NTPoly (#11412) 2019-05-15 04:06:10 +09:00
Greg Becker
b5316c31af Remove vestigial print statement in module logic (#11438)
Remove a vestigial print statement introduced in #8570
2019-05-14 09:03:34 +09:00
Jon Rood
4a013adc3e Add new versions of metaphysicl and change masa to use branch instead of tag. (#11436) 2019-05-14 08:56:52 +09:00
Justin S
4fcd70cc29 r-bh: add 1.69.0-1 (#11435) 2019-05-14 08:56:14 +09:00
Levi Baber
71d8b8a9b6 rename py-pauvr to py-pauvre (#11437)
* rename py-pauvr to py-pauvre
2019-05-14 08:55:53 +09:00
George Zagaris
a27f2978b9 m4 package: fix OS version check (#11290)
f242f5f removed spec.architecture.platform_os, which was used to test
an option in the 'm4' package. The attribute is now accessed as
'spec.architecture.os'.
2019-05-14 04:53:23 +09:00
Adam J. Stewart
f283487670 Add master branch of leveldb (#11405) 2019-05-13 14:35:15 -04:00
Todd Gamblin
3c2e4b9558 tests: stop testing Python 3.4 2019-05-11 16:39:53 -07:00
Todd Gamblin
963eb98979 tests: require Python 2.6 tests to pass 2019-05-11 16:20:36 -07:00
Todd Gamblin
dda90a5666 bugfix: Do not run spack spec in the test environment for Python 2.6
- Trying to get our Python 2.6 tests working again.
- This seems to crash travis in the 2.6 environment, for whatever reason.
2019-05-10 13:13:44 -07:00
Todd Gamblin
54920d100a enable coverage for python 2.6 unit tests 2019-05-10 13:13:44 -07:00
Shane R. Spencer
dcbe798ca7 New package: py-pycares (starting at 3.0.0) (#11340) 2019-05-11 03:48:37 +09:00
Chuck Atkins
418d9f07dc mesa: Add 19.0.4 (#11415) 2019-05-10 13:25:26 -05:00
Hans Pabst
8f0fe5939f LIBXSMM 1.12 (#11414) 2019-05-10 13:11:47 -05:00
Jon Rood
feac68d248 Add new version of PGI compiler. (#11417) 2019-05-10 13:11:23 -05:00
Chris Green
7467a46c2c sqlite: add versions; restore old versions; variant resolves security issues. (#11336)
* Add versions 3.27.{0,1,2} and 3.28.0
* Add url_for_version: the URL format includes the year so this
  function maps version ranges to years
* Restore patches for versions removed in 84c547c: this commit
  removed versions before 3.26.0 due to a security issue with FTS
  support. Add a +fts variant (default true) that enables FTS
  support along with a conflict for +fts with earlier versions.
2019-05-11 02:58:23 +09:00
Todd Gamblin
3903658bfc coverage: only run coverage for subset of unit tests
- Codecov cannot handle as many coverage reports as we are generating

- as a result, our PR coverage pages have been broken for a while, and
  it's hard to tell people where to enhance their testing in PR reviews.

- Scale back to only running coverage for 3.7 and 2.7 unit tests

- This is *probably* better.  We run the build tests for good measure,
  but we do not need to evaluate them for coverage.  The coverage reports
  are about unit tests.
2019-05-11 02:23:22 +09:00
Chuck Atkins
85fa2dbe36 paraview: Fix OpenGL search to ignore glvnd (#11400) 2019-05-10 09:47:20 -04:00
xfzhao
d0bfe753be py-pauvr:new package (#11292)
* py-pauvr:new package

* py-pauvr: using url and Releases

* py-pauvr: remove extra comments
2019-05-10 08:29:45 -05:00
Greg Becker
f67a59fabc permissions: preserve suid and sgid bits (#10727)
* Don't overwrite suid/sgid bits when setting permissions
* add tests for permission setting
2019-05-10 00:38:13 -07:00
Glenn Johnson
c752af098d Intel packages: multiple installs and optional scalapack libs (#11384)
Add fixes to support multiple installs and dependents using a subset
of IntelPackage functionality.

* Update IntelPackage to only return scalapack libraries if the root
  spec depends on MPI: scalapack requires MPI to be mentioned as a
  dependency in the DAG. Package builds using intel-mkl for its
  blas/lapack implementations but not for scalapack were failing to
  build.

  Ideally it would be possible to ask if any of the packages in the
  DAG are actually requesting the scalapack functionality provided by
  the IntelPackage and only return scalapack libs in that case, but
  that is not easily done at this time.

  Fixes #11314
  Fixes #11289

* set HOME when the intel silent installer is run. This prevents the
  installer from using the ~/intel directory (which can cause
  conflicts for multiple installs of the same IntelPackage)

  Fixes #9713
2019-05-10 10:54:05 +09:00
Greg Becker
3d3cea1c87 modules: use new module function instead of get_module_cmd (#8570)
Use new `module` function instead of `get_module_cmd`

Previously, Spack relied on either examining the bash `module()` function or using the `which` command to find the underlying executable for modules. More complicated module systems do not allow for the sort of simple analysis we were doing (see #6451).

Spack now uses the `module` function directly and copies environment changes from the resulting subprocess back into Spack. This should provide a future-proof implementation for changes to the logic underlying the module system on various HPC systems.
2019-05-09 15:04:24 -07:00
Peter Josef Scheibel
53ec16c9e5 make license check more-strict
The license text is now expected to match almost exactly (not
accounting for formatting in different file types (e.g. rst vs.
bash script vs. python)
2019-05-10 04:37:56 +09:00
Peter Josef Scheibel
7e94774214 update aom package license 2019-05-10 04:37:56 +09:00
Peter Josef Scheibel
57a65acedc update license date range for simgrid 2019-05-10 04:37:56 +09:00
Mark W. Krentel
26b9369c57 dyninst: update cmake args and boost dependency (#11378)
* Starting with the upcoming 10.1 release, Dyninst changed the names of
  some cmake args to camel case: LIBELF_* to LibElf_* and LIBDWARF_* to
  LibDwarf_*.  This change is needed now for @develop and will be used
  for 10.1 when it is released.
* New versions of Dyninst now requires cmake version 3.4.0 or later.
* Restrict boost dependency version to < 1.70.0 to avoid build error
2019-05-10 03:58:41 +09:00
David Gardner
ac3cbfd69a update to texlive 2019 (#11365) 2019-05-09 13:47:43 -05:00
Tiziano Müller
92c4567404 elpa: override headers prop for common include-dir localization
... and apply this in SIRIUS, CP2K & QE.

Thanks to @scheibelp for the idea.
2019-05-10 03:43:02 +09:00
Tiziano Müller
f87722b74d packages/cp2k: require libxsmm 1.11+ 2019-05-10 03:43:02 +09:00
Tiziano Müller
4b3e43cc64 packages/cp2k: build with -ggdb with GNU for backtraces 2019-05-10 03:43:02 +09:00
Tiziano Müller
f343d6fc68 packages/cp2k: add support for sirius 2019-05-10 03:43:02 +09:00
Tiziano Müller
844a993605 packages/json-fortran: initial commit, required by CP2K+sirius 2019-05-10 03:43:02 +09:00
Tiziano Müller
a3341bbdf3 packages/sirius: initial commit 2019-05-10 03:43:02 +09:00
Tiziano Müller
3b72d71d9c packages/libvdwxc: initial commit, required for SIRIUS 2019-05-10 03:43:02 +09:00
Jerome Soumagne
a5f88d6ec8 Clean up mercury package and add boostsys, shared variants (#11368)
Use tarballs instead of git tags

Fix openpa dependency on gcc < 4.9

Fix boost dependency

Change sm variant default to true
2019-05-09 12:56:10 -05:00
Michael Kuhn
d284ea39a1 nco: Add 4.7.9 (#11389)
Earlier versions do not compile with gcc@9.
2019-05-09 12:33:36 -05:00
Michael Kuhn
ebc32319f6 netcdf: Fix build if curl is not installed (#11387)
For 4.7.0, configure fails if curl is not installed.
2019-05-09 13:23:49 -04:00
Michael Kuhn
4e0c909d0a qt: Fix build with gcc@9 (#11391) 2019-05-09 11:28:56 -05:00
Michael Kuhn
2b378f27a2 papi: Add 5.7.0 (#11390)
This also fixes the GCC patch to be applied for versions 8 and up.
2019-05-09 11:26:05 -05:00
Michael Kuhn
220cf08f82 gcc: Add 9.1.0 (#11386) 2019-05-09 11:25:29 -05:00
Michael Kuhn
a9febea40f mesa: Add missing dependencies (#11394) 2019-05-09 07:56:37 -04:00
Todd Gamblin
d95bef06e5 Make CODE_OF_CONDUCT.md more Spack-specific (#11403) 2019-05-08 17:49:03 -07:00
Chuck Atkins
5ac0172b33 qt: sqlite needs to be a run dep because of the qt plugin infrastructure (#11399) 2019-05-08 18:41:25 -04:00
Chuck Atkins
a0dc4dc94d mesa: Add 19.0.{1,2,3} (#11401) 2019-05-08 18:40:26 -04:00
Christoph Junghans
5445e17089 nut: fix nut build (#11393) 2019-05-08 11:34:48 -06:00
Kelly (KT) Thompson
bcdf9572e5 Provide a patched version of random123 that will work on ARM platforms (#11388)
+ The additional patch enables a non-optimized random123 code path that will
  work on ARM architectures. This solution is provided only for version 1.09 to
  allow the most current version of Random123 to function on ARM architectures.
+ A more complete, long term solution will be the addition of a native ARM
  intrinsics-based implementation of random123.  This solution is being worked
  on but it is several weeks or months away.  Once the full implementation is
  available it will be provided to the author/maintainer of Random123.
2019-05-08 08:38:47 -06:00
Seth R Johnson
6cdbc33c90 Hide some variables in spack-build.env file
Don't arbitrarily reset PWD and OLDPWD when sourcing, as well as other
session-specific IDs
2019-05-08 06:36:52 +09:00
Chuck Atkins
e4ce4e5c2c llvm: Adjust default supported targets
The default install for llvm should just be the common typical case, i.e.
support for local host and cpu architectures.  Enablingsupport for the wide
array of auxiliary architectures should be explicit rather than implicit.
2019-05-08 04:36:43 +09:00
Janne Blomqvist
4a83b4710c Add OpenBLAS 0.3.6 (#11375)
Signed-off-by: Janne Blomqvist <janne.blomqvist@aalto.fi>
2019-05-07 13:36:38 -05:00
Levi Baber
43204049aa py-scikit-learn: needs setuptools (#11379) 2019-05-07 13:35:32 -05:00
Mark W. Krentel
119d04d53f hpcviewer: add version 2019.04 (#11380) 2019-05-07 13:34:05 -05:00
Chuck Atkins
251f3f5058 ninja: drop python as a run dep (#11347)
* ninja: Make python a build-only dependency

* ninja, ninja-fortran: allow the packages to provide eachother
2019-05-07 13:07:24 -04:00
xfzhao
65ff6ed8f6 py-pysam: update (#11377) 2019-05-07 08:29:05 -05:00
Chris Green
01eaca607f Environment path sanitization and sourcing (#8476)
Add two functions to the EnvironmentModifications object to help
users sanitize environment variables in their package definitions:

* deprioritize_system_paths: this keeps system paths in the
  environment variable but moves them to the end.
* prune_duplicate_paths: remove any duplicate paths from the
  variable

This includes testing for the new functions as well as for
(previously-untested) old convenience functions for environment
variable manipulation.

This also adds special handling for bash functions so they
will be defined when the exported environment file is sourced.
2019-05-07 11:29:18 +09:00
Felix Niederwanger
6de3e1c7b6 New package: CCfits (#11262) 2019-05-07 03:58:29 +09:00
George Hartzell
96a95bb5bf Mesa should depend_on('glproto') (#11360)
* Mesa should depend_on('glproto')

The mesa package refers to `GL/glproto.h`.  On systems that don't have
the OS packages installed, this leads to failures during the build
[e.g. this comment in
01482](https://github.com/spack/spack/pull/10482#issuecomment-488786745).

This fixes it.  Tested on a minimally provisioned CentOS 7.

* Constrain glproto prereq to when +glx

* mesa: make glproto a build only dep
2019-05-06 14:37:13 -04:00
G-Ragghianti
b64a286820 SLATE package: fix variant/header errors (#11353)
* The 'mkl' variant implementation was not complete and was
  preventing the package from building, so remove it.
* The slate.hh file has moved in the 'develop' version (which is
  currently the only version of SLATE listed)
2019-05-07 02:52:40 +09:00
Todd Kordenbrock
dd3573b78d FAODEL: Add FAODEL package to spack (#11323)
* FAODEL: Add FAODEL package to spack

FAODEL (Flexible, Asynchronous, Object Data-Exchange Libraries) is a collection
of software libraries that are used to implement different data management
services on high-performance computing (HPC) platforms. This project is part of
the Advanced Technology Development and Mitigation (ATDM) effort for NNSA's ASC
program at Sandia National Laboratories.

(cherry picked from commit 6afe045d25)

* FAODEL: Update FAODEL package

  Dependencies: set minimum versions for boost, cmake and libfabric
  Dependencies: add conflict for boost v1.59.0
  Patch: add a patch for v1.1803.1
  Patch: add a when= for the v1.1811.1 specific patches
  Compiler: check for C++11 support in gcc

(cherry picked from commit fb6ed2b3cf20d7e4fff647cba5a70887a78f627f)

* FAODEL: Update FAODEL package

  * replace previous maintainers with @tkordenbrock and @craigulmer
  * default to shared libs to meet Spack policy
  * increase min boost version to 1.60.0 and remove boost 1.59.0 conflict
  * replace complex version check with conflict for gcc <= 4.8.0 (C++11 support required)
  * set type=build for cmake
  * enable googletest for all versions with type=build
  * enable tests for for all versions except when MPI is disabled

* FAODEL: Update FAODEL package

  * add version v1.1811.2
  * limit comment line length
2019-05-06 13:44:32 -04:00
Justin M Wozniak
4c6fb4cefe Turbine package: add m4 dependency (#10948)
m4 is a build and run dependency for Turbine: it is used at run time
to generate scheduler job files for the workflows.
2019-05-07 02:36:32 +09:00
Cameron Smith
78ade980d4 omega-h package: add version 9.27.0 (#11366) 2019-05-04 06:59:26 +09:00
Bili Dong
74295a1217 py-yt package: add versions 3.5.0, 3.5.1, 4.0 development branch (#11350) 2019-05-04 06:49:11 +09:00
Patrick Gartung
9a85a7a5aa Binary caches on MacOS - allow expanded RPATHs (#11345)
Fixes #11335

Update the Spack compiler wrappers to add the headerpad_max_install_names
linker flag on MacOS. This allows the install_name_tool to rewrite
the RPATH entry of the binary to be longer if needed. This is
primarily useful for creating and distributing binary caches of
packages (i.e. using the "spack buildcache" command); binary caches
created on MacOS before this commit may not successfully relocate
(if the target root path is larger).
2019-05-04 06:41:57 +09:00
cedricchevalier19
328a3f97fd cURL package: add gssapi option (#11344)
This option allows curl and its dependents (git, ...) to work with
proxy using Kerberos authentification.
2019-05-04 05:43:56 +09:00
Sinan
ddf485ee6d New package: GMTSAR (#11315) 2019-05-04 05:40:14 +09:00
Thilina Rathnayake
c2f9061a3c Nek5000: Fix CFLAGS and FFLAGS handling (#11339) 2019-05-04 03:52:45 +09:00
Justin S
9b0000d04f New package: PASTA (#11338) 2019-05-04 03:50:54 +09:00
Sinan
df15969a7d rJava package: add version 0.9-11 (#11334) 2019-05-04 03:45:35 +09:00
Owen Solberg
c031cff2bc BLAST-Plus package: add versions 2.9.0 and 2.8.1 (#11333) 2019-05-04 03:33:35 +09:00
Greg Sjaardema
74fe12bb4e NETCDF: add version 4.7.0 (#11330) 2019-05-04 03:31:36 +09:00
Greg Sjaardema
5d9d8171bb PARALLEL-NETCDF: add version 1.11.1 (#11329) 2019-05-04 03:30:35 +09:00
Sinan
ba58b2f43a GDAL package: add version 2.4.1 (#11328) 2019-05-04 03:30:10 +09:00
Leonhard Reichenbach
edac053cf5 libunistring: added newer versions and patch older ones (#11255)
* Add versions 0.9.10, 0.9.9, and 0.9.8
* Port a change in 0.9.10 to earlier versions as a patch
2019-05-04 03:21:43 +09:00
Massimiliano Culpo
5ffb270714 Added a function that concretizes specs together (#11158)
* Added a function that concretizes specs together

* Specs concretized together are copied instead of being referenced

This makes the specs different objects and removes any reference to the
fake root package that is needed currently for concretization.

* Factored creating a repository for concretization into its own function

* Added a test on overlapping dependencies
2019-05-04 03:04:38 +09:00
Federico Ficarelli
0425670942 arm-forge: add all available versions (#11198)
* arm-forge: add all available versions

* Add TODO for the version hell

* Fix linting

Looks like 'black' formatter isn't Spack friendly

* Fix versions ordering

* Remove obsolete package (allinea-forge → arm-forge)
2019-05-03 08:14:25 -07:00
Chris Green
2d8708e542 range-v3: New versions 0.3.7, 0.4.0, 0.5.0. (#11358) 2019-05-03 09:13:50 +02:00
Chris Green
2155d611df libxml2: New version 2.9.9. (#11357) 2019-05-03 09:13:22 +02:00
Chris Green
fe7e85e6d9 cppunit: New version 1.14.0. (#11359) 2019-05-03 09:12:22 +02:00
Phil Carns
2c2228df59 add BMI package (#11310)
- also enable optional dependency in Mercury
2019-05-03 09:11:31 +02:00
Nichols A. Romero
42b01c02b1 QMCPACK: compiler flags and mpi wrapper updates (#11326)
* Set mpi compiler wrappers using CC/etc. variables as recommended
  at https://spack.readthedocs.io/en/latest/packaging_guide.html#compiler-wrappers
  rather than setting CMake variables like -DCMAKE_C_COMPILER
* Use convenience functionality provided by inherited CMakePackage to
  export all compiler flags as CMake options
2019-05-03 11:13:19 +09:00
Christoph Junghans
54c19ce16c py-espresso: added v4.0.2 2019-05-03 10:40:54 +09:00
Patrick Schratz
dd668cb00c grass package: use url_for_version, add versions (#11324) 2019-05-03 10:40:23 +09:00
Vanessasaurus
4aeb0d19bd Singularity package: new version, legacy builds, and root permissions (#11094)
* Remove old Singularity versions, add version 3.1.1
* Recent versions of Singularity build with go rather than autotools:
  update dependencies and build logic
* Move old Singularity versions to new singularity-legacy package
  which uses the autotools build system
* Some binaries built by Singularity need to be run as root: include
  a script that the user can run after the Spack Singularity install
  to change these permissions.
* The Singularity go build expects to work with a custom stage
  directory relative to GOPATH: override the stage phase to create
  this expected path.
* Update Singularity install config to point to Spack-installed
  makesquashfs dependency
2019-05-03 10:27:13 +09:00
Chuck Atkins
f44443ed3a llvm: depend on python only when +python (#11348)
Based on the LLVM documentation [1], Python is used to run the automated
test suite. Therefore is it always a dependency for LLVM. However, if
build without Python (~python), we limit it to a build time dependency.

Note that py-lit is not added as a spack dependency even though it is
available as a spack package. This is because it is already included
in llvm and llvm is difficult to configure using an external py-lit
(several CMake variables to set correctly). Additionally, having
py-lit as a spack dependency adds Python as a runtime dependency
for llvm even though it is not required at runtime.

[1] https://llvm.org/docs/GettingStarted.html#requirements
2019-05-02 16:21:06 -04:00
Denis Davydov
5b82bf47af extend Version class so that 2.0 > 1.develop > 1.1 and develop > master > head > trunk > 9999 (#1983)
* extend Version class so that 2.0 > 1.develop > 1.1

* add concretization tests, with preferences and preferred version.

* add master, head, trunk as develop-like versions, develop > master > head > trunk

* update documentation on version comparison
2019-05-03 03:32:40 +09:00
Omar Padron
0bbd41c7f7 install spack under /opt/spack in docker images (#10969)
* install spack under /opt/spack
2019-05-02 12:05:42 -04:00
Levi Baber
9e72fc48c8 fix error when adding package to env in container (#11321) 2019-05-02 11:04:21 -05:00
Patrick Gartung
309122c329 Don't use buildcache to install patchelf (#11343) 2019-05-02 10:02:25 -05:00
Hans Pabst
0e9513be97 LIBXSMM: add version 1.11, update wrapper settings (#11317)
Remove makefile editing to set compiler wrappers (which was not
working) and instead set them as arguments to 'make'.
2019-05-02 08:45:00 +09:00
Simon Flood
ff2be5e866 R: add version 3.6.0 2019-05-02 08:34:00 +09:00
Daryl W. Grunau
7a3be1bf15 New package: py-pydv (#11313) 2019-05-02 08:28:21 +09:00
tcojean
68c4849f77 Ginkgo package: update to release 1.0.0 (#11312)
* Version 1.0.0 was released and the master branch tracks the
  latest release.
* Multiple issues with MacOS have been fixed. The static patch is
  now unneeded.
* Add support for building Ginkgo with the full Block Jacobi
  performance (compilation takes a long time).
* Do not build anything which is not useful for the installation.
  Namely, documentation, benchmarks, examples and tests.
2019-05-02 08:25:39 +09:00
Phil Carns
396955b9ba New package: libpmemobj-cpp (#11309) 2019-05-02 08:12:01 +09:00
Felix Mayr
c2e280b794 python: add versions 3.7.3, 3.5.7, and 3.4.10 (#11300) 2019-05-02 08:01:30 +09:00
Chuck Atkins
9f848205e4 mesa: re-written to new meson build system (#10482)
* mesa: re-writen to new meson build system

* xorg-server: Remove unneeded mesa dependency

* glx: provide the virtual GLX package

* Convert most "mesa" dependencies to use virtual gl and glx dependencies

* mesa: Switch to always building from the git repo instead of a tarball

* Use gl and glx version ranges instead of exact versions

* glx: provide a default package

* add auto to swr variant

* Revert "add auto to swr variant"

This reverts commit 2e7cd8a8ac.

* update mesa package to version 19.0

* set +glx by default only when running on linux

* fix style issues in geant4 package

* remove virtual package "egl"
2019-05-01 17:57:33 -05:00
Phil Carns
a698ac9711 add PMDK 1.6
- also remove superflous ncurses dependency for PMDK 1.5
2019-05-02 03:37:22 +09:00
Kelly (KT) Thompson
2e6eaa2c0a trilinos: add variant for ShyLU support (#11294) 2019-05-02 03:36:00 +09:00
Sean McGrath
a605fc7e06 ffmpeg package: add aom support (#11210)
* Add Aom package
* Add aom variant to ffmpeg package which controls whether to build
  with the Aom dependency
2019-05-02 03:33:03 +09:00
xfzhao
2a1ba0e142 Supernova package: add version 2.1.1 (#11285) 2019-05-01 09:56:53 +09:00
Francois Budin
b56e418dfe Add margo package and add rc1 tag for argobots package (#11281)
margo package is a required dependency for unifycr but the package
was not available in spack. margo requires a recent version of argobots
that has the ABT_SCHED_BASIC_WAIT scheduler (rc1 does while previously
available versions of this package in spack did not have it).
2019-05-01 09:47:34 +09:00
Francois Budin
52752efa4d veloc package: add version 1.1 and update master dependencies (#11270)
* Add version 1.1 and set it as preferred
* Add pdsh as a dependency for `master`
2019-05-01 09:44:51 +09:00
Francois Budin
e2825d0ad4 Darshan 3.1.7 and develop versions fpr darshan-runtime and darshan-util (#11269)
* Add version 3.1.7
* Add develop branch (git master)
2019-05-01 09:42:32 +09:00
Thomas Gruber
06ed77bdfa Lua: Fix unresolved symbols in shared library by linking with libdl.so (#11260)
The current lua package.py does not link with libdl.so, so you get
unresolved symbols while linking with lua. This PR adds libdl to fix
the issue.
2019-05-01 08:41:08 +09:00
Greg Becker
7b715564d0 openfoam-com package: build without kahip by default (#11259)
Kahip does not build with clang (conflicts('%clang') in kahip package.
Because of this, openfoam-com %clang fails concretization. Therefore,
this changes the default openfoam-com variant for kahip to False.
2019-05-01 08:26:54 +09:00
Tiziano Müller
d2786ec064 CP2K package: add versions and tests, adjust optimization flags (#11263)
* Remove -ffast-math optimization flag
* Add 'develop' version which points to git repo
* Depend on libint for all versions >= 3.0
* Build directory is different for versions >= 7 (including develop)
* Add "make test" as post install check
2019-05-01 04:52:13 +09:00
Todd Gamblin
8e5e36dc0b Fix spack flake8 to use Travis's target as base when needed 2019-05-01 04:44:02 +09:00
Jannek Squar
f41103770d OpenCV: New versions, adjust protobuf dependency (#11243)
* Add versions 3.4.4 through 4.1.0 and 4.1.0-openvino
* Add conflict for gcc version >= 7 when building with +cuda
* Later version of protobuf is required for later versions of OpenCV
* Explicitly remove protobuf dependency with CMake option when not
  building with +dnn
2019-05-01 03:37:47 +09:00
xfzhao
e10dd6f779 Masurca (#11286)
* py-pauvr:new package

* falcon-unzip: new package

* supernova: updating

* masurca: updating

* rm extra files

* modifying available versions and adding url

* fixing deleted supernova
2019-04-30 08:24:12 -05:00
Matthias Diener
c43296e00d git-lfs: add version 2.7.2 (#11311) 2019-04-30 10:20:03 +02:00
Denis Davydov
a11b252a1b remove myself from maintainers of some packages (#11319) 2019-04-30 10:16:53 +02:00
Chuck Atkins
d2a5a10f08 vtk: Use the vendored libharu (#11293)
VTK requires a patched libharu that is not maintained upstream
See https://github.com/libharu/libharu/pull/157
2019-04-30 10:07:29 +02:00
Xavier Delaruelle
1a920ee64f environment-modules: add version 4.2.4 (#11307) 2019-04-27 20:32:57 +02:00
Daryl W. Grunau
c860d743f9 py-dateutil: add missing dependency on py-setuptools-scm (#11282)
Confirmed that versions before 2.7.5 do not require this dependency.
2019-04-26 20:28:35 +09:00
Felix Mayr
a195ffada2 QuantumEspresso package: add version 6.4 (#11302) 2019-04-26 20:25:40 +09:00
Frédéric Simonis
c951d1cb98 precice: add version 1.4.1 (#11276) 2019-04-26 09:49:11 +02:00
Chris Green
1b2817ee0a root: new versions, variants and patches (#11215)
* root: new versions, variants and patches to bring in to line with FNAL's use.

* Support MySQL.
* Patches:
    * Bigger stringbuf.
    * Find MySQL even when it's called mariadb-c-client.
    * Honor external provision of unuran.
    * Properly handle the ROOT7 web GUI for 6.16/00.
* `memstat` variant is now default-OFF due to version-related constraints.
* Add missing dependencies.
* Propagate `python` to `libxml2`.
* Handle external FTGL dependency with X / OpenGL: depends on PR ####
* Force `SPACK_INCLUDE_DIRS` to avoid warning.
* New `gminimal` variant default ON per discussion with Javier Cervantes.

* Style fixes per flake8.

* Remove redundant `PATH_SUFFIX` per https://github.com/root-project/root/pull/1993#discussion_r276840329

* Comment patches per https://github.com/spack/spack/pull/11215#discussion_r276887199.

* Reflect the fact that MariaDB support patch is now upstream.

* Restore ncurses dependency for libtinfo.
2019-04-24 08:48:52 +02:00
Toyohisa Kameyama
ac7f9ef93d Fix handling of MODULEPATH in setup-env.sh (#11274)
Usage of double quotes was preventing word-splitting when parsing
module roots in setup-env.sh, which lead to an error when multiple
module roots are used (in particular when Spack is pointed to use
an upstream module root in addition to its own).
2019-04-24 11:53:25 +09:00
Toyohisa Kameyama
3d46dcd6f0 nest: change cmake_options to args. (#11273) 2019-04-24 11:09:49 +09:00
Eric Martin
e6bd4d27ea py-pandas: Add version 0.20.0 (#11264) 2019-04-24 09:01:56 +09:00
George Hartzell
b0080c705c squashfs should depend_on('zlib') (#11265)
Add zlib dependency to squashfs

On my CentOS system it was getting linked in (from Spack, no less)
fortuitously.

On a minimal Ubuntu system it failed until it was added as an explicit
dependency.
2019-04-24 09:01:36 +09:00
Daryl W. Grunau
edca0cde1c _valid_tokens list is missing intended comma (#11271)
* _valid_tokens list is missing a needed comma
2019-04-24 08:55:20 +09:00
Chris Green
597037c9ff ftgl: update to 2.1.3-rc5. (#11214)
* ftgl: update to 2.1.3-rc5.

This updates to the last release (from 2008) with patches required to work with Spack and Root.

* Working 2.1.2 with/without docs, 2.1.3-rc5 without.
2019-04-23 09:42:10 -05:00
Eric Martin
bc080d753c py-umi-tools: Add latest versions (#11256) 2019-04-23 18:23:44 +09:00
George Hartzell
efe62b7d6d Install squashfs exe's into prefix.bin, not prefix (#11246)
The squashfs Makefile's `INSTALL_DIR` args is the path to the `bin` directory, not the top of the install tree.

Adjust accordingly.
2019-04-22 20:16:57 +02:00
Todd Gamblin
552c9c57fd Update tutorial page with RIKEN tutorial slides. (#11254)
- Add link to container image, as well as a description of VMs
- Update slide link to point to latest RIKEN tutorial
2019-04-23 01:53:47 +09:00
Greg Becker
5aa4edb939 Fix transitions between tutorial sections (#11251) 2019-04-22 17:14:26 +09:00
Todd Gamblin
0aed3bcea6 spack edit: use execv instead of Executable (#11245)
- `spack edit` previously used `spack.util.executable` `Executable` objects,
  and didn't `exec` the editor like you'd expect it to

- This meant that Spack was still running while your editor was, and
 stdout/stdin were being set up in weird ways

- e.g. on macOS, if you call `spack edit` with `EDITOR` set to the
  builtin `emacs` command, then type `Ctrl-g`, the whole thing dies with
  a `==> Error: Keyboard interrupt`

- Fix all this by changing spack.util.editor to use `os.execv` instead of
  Spack's `Executable` object
2019-04-20 20:51:45 -07:00
Janne Blomqvist
5fb6145f6f OpenBLAS: Allow enabling/disabling AVX2/512 support
Allow specifying whether AVX2 or AVX512 should be enabled or disabled
on x86 targets.

As AVX2 hardware and toolchain support is quite ubiquitous by now,
AVX2 is enabled by default.  Also AVX2 support is not disabled when
building the +virtual_machine variant.

AVX512 is not supported in older but still supported toolchains,
hardware is still expensive, and OpenBLAS AVX512 kernels still have
bugs. Thus AVX512 is disabled by default.
2019-04-20 16:43:11 -07:00
Adam J. Stewart
7255d5ee3c Fix detection of LLVM-enabled PGI compilers (#10704)
* Fix detection of LLVM-enabled PGI compilers

* Add unit tests for LLVM-enabled PGI compiler version detection
2019-04-20 17:52:55 -05:00
Matthias Diener
a40492172f hdf5: add symbols (#10991) 2019-04-20 15:09:46 -07:00
Adam J. Stewart
f8dc385392 Mercury package: add version 1.0.1 and update dependencies (#10906)
* Add Mercury version 1.0.1
* Remove cci and bmi dependency requirements: these are not currently
  defined in Spack. If +bmi is enabled, the effect is that it may
  use a system install of bmi
* Add a note that fabtests is deprecated and has been folded into the
  libfabric package. Add the fabtests resource to the libfabric
  package
* Add CMake option settings to Mercury based on variant settings
* Mercury: Set OFI testing protocol depending on how libfabric was
  built
* Mercury: add version constraints to dependencies
2019-04-20 15:03:18 -07:00
Denis Davydov
95fafb4e44 Move NoLibrariesError/NoHeadersError into error.py (#10997)
Also add constructor to NoLibrariesError which can either take an
error message (like other SpackErrors) or a name and prefix (in
which case the error message is constructed).
2019-04-20 14:08:05 -07:00
Satish Balay
39855fbcf8 dealii: add patch for build with boost@1.70.0 (#11239)
Ref: https://github.com/dealii/dealii/issues/7934
2019-04-20 14:00:34 +02:00
Sajid Ali
4a2ec792a6 miniconda 2 and 3 packages: add version 4.6.14 (#11232) 2019-04-19 17:42:02 -07:00
Justin S
6f1fe3904c Fix outdated R packages failing to fetch (#11039)
PR #10758 made a slight change to find_versions_of_archive() which included
archive_url in the search process. While this fixed `spack create` and
`spack checksum` missing command-line arguments, it caused `spack
install` to prefer those URLs over those it found in the scrape process.

As a result, the package url was treated as a list_url causing all R
packages to stop fetching once the package was updated on CRAN.

This patch is more selective about including the archive_url in the
remote versions, explicitly overriding it with matching versions found
by the scraper.
2019-04-19 17:39:13 -07:00
Chris Green
3b34931f68 mysql: 5.7.X versions link boost (#11237)
Fixes #11226

MySQL 5.7.X and Boost 1.59.0 have a closer relationship than
MySQL >= 8.0 and their corresponding Boost versions: 5.7.X needs to
link against boost libraries which is indicated by marking boost as
a link dependency (removing the 'type' reverts to the default, which
includes link and build).
2019-04-19 15:34:55 -07:00
Oliver Breitwieser
56c233b0b7 jdk package: Fix fetching with curl 7.64.0+ (#11108)
Starting with version 7.64.0, curl skips cookies specified with "-H"
(generic custom header specification) when following redirects, which
causes the "accept-license"-cookie for jdk to disappear. The result
is that jdk fails to download. This uses the "-b" option (which is
used specifically for configuring cookies) instead, which is more
permissive.
2019-04-19 14:43:45 -07:00
Satish Balay
e86027d1f8 MUMPS: add version 5.2.0 (#11234) 2019-04-19 15:55:56 -05:00
Satish Balay
1746150f58 hypre: add @osborn9 to maintainers (#11233) 2019-04-19 15:55:35 -05:00
Greg Becker
141e8b8de3 Fix backwards compatibility for module naming (#11236)
f242f5f8 changed the format strings but maintained backwards
compatibility in all cases except one: The list of valid tokens for
the module naming schemes was not updated properly to contain both
the new and old styles for compilers and package names.

This PR re-adds the old tokens into the list of valid tokens.
2019-04-19 13:20:41 -07:00
kustowski1
7ee9953dec added libsodium 1.0.16 and 1.0.17 (#11231) 2019-04-19 12:19:51 -07:00
Satish Balay
1eb01e7be5 petsc: fix suitesparse configure options. (#11188)
spec['dep'].libs.ld_flags can return system paths in some cases.
This is a targeted fix for the petsc package when retrieving
suite-sparse dependency libraries.
2019-04-19 11:44:05 -07:00
Massimiliano Culpo
3892b57244 hpx: overhaul of the package recipe (#11194)
* added latest versions + malloc variant
* added a variant to activate different instrumentations
* added a variant to activate or not networking
* added a variant to activate or not cuda and tools
* enforce c++ standard and make it consistent with boost
2019-04-19 16:58:46 +02:00
Harsh Bhatia
3f50dcf6d9 memsurfer: add new package 2019-04-18 19:31:08 -07:00
Harsh Bhatia
1842f9fbd5 vtk: add version 8.1.2 2019-04-18 19:31:08 -07:00
Harsh Bhatia
81f7238743 cgal: add version 4.13 2019-04-18 19:31:08 -07:00
Peter Scheibel
8a23154755 Spack chain docs: config should go in upstreams.yaml (#11225)
#11152 added documentation for #8772 but some details were based on
an earlier implementation that had changed by the time #8772 was
merged. In particular, #11152 mentioned that upstream Spack instances
were configured in config.yaml, when in fact they should be placed in
a separate upstreams.yaml config file; this PR updates the
documentation accordingly.
2019-04-18 18:57:10 -07:00
Massimiliano Culpo
9cf650d2ab Moved cleanup before raising (the code couldn't be reached before) 2019-04-18 18:41:22 -07:00
Massimiliano Culpo
400aa5fe51 Cleaned get methods of Repo and RepoPath 2019-04-18 18:41:22 -07:00
Massimiliano Culpo
76b5af6bf3 Used functools.wrap for the decorator + reordered imports 2019-04-18 18:41:22 -07:00
Massimiliano Culpo
bbb5d61662 Removed 'namespace' argument from Repo and RepoPath
fixes #11159

The 'namespace' argument to both Repo and RepoPath were used to set the
"super namespace". Currently it seems to be vestigial as the only
"super namespace" allowed for packages is 'spack.pkg' since 39c9bbf
2019-04-18 18:41:22 -07:00
Nichols A. Romero
eb7c79720d QMCPACK CMake fix (#11212)
* cflags and cxxflags from packages.yaml need to be passed into QMCPACK's CMake explictly for now.

* You need the ifcore library from the Intel compler to be manually linked in when you linked against a LAPACK provider that is not MKL.
2019-04-18 20:00:24 +02:00
Daniel Topa
c7725e9ff8 Add Open MPI v3.0.4 (#11221)
tarball posted 2019-04-15
https://www.open-mpi.org/software/ompi/v3.0/

dantopa@cn209:openmpi-3.0.4-5ienfvwpcxky3nz5jt3rygxzxzltkwm4 $ cd lib/

dantopa@cn209:lib $ ls -alh
total 27M
...
lrwxrwxrwx 1 dantopa dantopa   16 Apr 17 10:01 libmpi.so -> libmpi.so.40.0.5

confirmation builds Darwin (LANL):

x86_64
-- linux-centos7-x86_64 / gcc@4.8.5 -----------------------------
5ienfvw    openmpi@3.0.4%gcc
bkkhvej        ^hwloc@1.11.11%gcc
5chyfxo            ^libpciaccess@0.13.5%gcc
bcnjbc3            ^libxml2@2.9.8%gcc
tt2hkol            ^numactl@2.0.12%gcc
64vg6e4        ^zlib@1.2.11%gcc

ARM
-- linux-rhel7-aarch64 / gcc@4.8.5 ------------------------------
cq2y6b3    openmpi@3.0.4%gcc
7gqvelc        ^hwloc@1.11.11%gcc
6a4he35            ^libpciaccess@0.13.5%gcc
6a5uzd6            ^libxml2@2.9.8%gcc
m5neuus            ^numactl@2.0.12%gcc
67s2oqn        ^zlib@1.2.11%gcc

Power9
-- linux-rhel7-ppc64le / gcc@4.8.5 ------------------------------
otirvfn    openmpi@3.0.4%gcc
r6cylpu        ^hwloc@1.11.11%gcc
uzm3xdv            ^libpciaccess@0.13.5%gcc
trik6hj            ^libxml2@2.9.8%gcc
pmgndwh            ^numactl@2.0.12%gcc
4v3ticy        ^zlib@1.2.11%gcc

2019-04-18

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2019-04-18 12:33:26 -05:00
Zack Galbreath
7febb88c2a improvements to our CDash reporter (#11168)
* Make a separate CDash report for each package installed

Previously, we generated a single CDash report ("build") for the complete results
of running a `spack install` command. Now we create a separate CDash build for
each package that was installed.

This commit also changes some of the tests related to CDash reporting.
Now only one of the tests exercises the code path of uploading to a
(nonexistent) CDash server. The rest of the related tests write their reports
to disk without trying to upload them.

* Don't report errors to CDash for successful packages

Convert errors detected by our log scraper into warnings when the package
being installed reports that it was successful.

* Report a maximum of 50 errors/warnings to CDash

This is in line with what CTest does. The idea is that if you have more than
50 errors/warnings you probably aren't going to read through them all anyway.
This change reduces the amount of data that we need to transfer and store.
2019-04-18 09:39:35 -07:00
Federico Ficarelli
e64ee7e1be Prevent building llvm@8: with an incompatilble gcc (#11220) 2019-04-18 16:58:41 +02:00
Satish Balay
4571a96a43 xsdk: add/update maintainers to xsdk packages (#11146)
pumi
  slepc
  plasma
  magma
  trilinos
  alquimia
  pflotran
  strumpack
  tasmanian
  amrex
  hypre
  omega-h
  superlu-dist
2019-04-18 08:20:22 -05:00
Stephen Herbein
1dc3744d2c new package: kitty terminal (#9621) 2019-04-18 08:53:52 +02:00
Greg Becker
f242f5f8a9 Features: Improve Spec format strings (#10556)
* Update spec format to simpler syntax, maintain backwards compatibility
* Switch to new spec.format method throughout internals
* update package files for new format strings
* documentation and minor code cleanup. removed nonsensical variant sigils
2019-04-17 18:21:40 -07:00
Veselin Dobrev
49334f006d [WIP] CEED 2.0 (#10903)
* Initial commit for v2.0 of the CEED software suite.

* Update Nek packages and gslib

* Help spack concretize the hypre version for ceed-2.0.

* Fix nekcem install error

* Add support for gfortran v8 in nek5000 and nekcem.

* Split Nek5000 into Nek5000 and Nektools

* Get Nektools to build fine in Theta

* Fix travis failure: remove unused 'import numbers' from nek5000.

* Check for gfortran if it is wrapped

* Tweak the detection of gfortran in nek5000.

* Fix Nek packages to add -std=legacy when FC=gcc

* spack install ceed~petsc works fine on Theta

* Fix flake8 errors

* Fix more flake8 tests

* Fix an import issue

* Tweak the suite-sparse package to avoid interaction with existing system
installations of suite-sparse.

* petsc: update superlu-dist dependency

* Updates in the packages: occa, libceed, and ceed.

* In the libceed package, explicitly tell nvcc which host compiler to use.

* Fix python formatting.

* Simplify the test for gfortran in nek* packages.

* ceed: 2.0 uses petsc@3.11.0

* hpgmg-0.4; use from ceed@2.0.0

* Update the hypre dependency for ceed 2.0.

* Disable the superlu-dist dependency (through hypre) when using a
+quickbuild of ceed 2.0.

* petsc-3.11.0: add xlf fix

* nekcem: has a build dependency on Python 2.7+

* hpgmg: better setting of compiler options and use python for configure

* libceed: use v0.4 tag

* libceed: fix 0.4 release oops (pkgconfig version)

* Add a patch for magma-2.5.0 that brings it up the current 'master'.

* In the mfem package, install the examples, miniapps, and data under
$prefix/share/mfem.

* In the magma package, apply a patch to v2.5.0 that disables
magma_sparse - for testing purposes.

* In the magma package, link the 'magma' library with the
'nvToolsExt' library.

* In the magma package, update the 'magma-2.5.0.patch' with the latest
commits from the magma source repository. Also, remove the library
'nvToolsExt' from the 'magma-2.5.0-cmake.patch' - now it is not
needed.

* In the magma package, disable OpenMP when using v2.5.0 with the
IBM XL compiler.

 Please enter the commit message for your changes. Lines starting

* In the mfem package, add version for the 'laghos-v2.0' tag; also,
prefix the versions `laghos-v*` with their respective development
version numbers -- this way they are properly ordered within spack
relative to the official numbered versions.

* petsc: add version 3.11.1 (#11179)


(cherry picked from commit 1eab6e3c86)

* ceed-2.0: use petsc-3.11.1

* this-is-so-dumb.f -> empty.f
2019-04-17 17:37:41 -07:00
Elsa Gonsiorowski, PhD
a26aec520b mpifileutils v0.9.1 (#11216)
* mpifileutils v0.9.1

* mpifileutils v0.9.1 for realz
2019-04-17 18:11:14 -05:00
Michael Kuhn
b61dd57fdc sublime-text: Miscellaneous improvements (#11154)
- Add 3.2.1
- Reformat versions to include proper upstream version tags
- Add gtk dependency
- Add prefix to PATH so sublime_text can be found
2019-04-17 13:44:34 -07:00
Satish Balay
7280f21397 Add ftn to lib/spack/env (#11180)
Fixes #11070 #11010

Spack attempts to intercede on behalf of all compiler invocations for
a build. This involves adding its wrappers to PATH. Cray systems
include a "ftn" executable and Spack was only redirecting this call
when the Spec was built with cce. This updates the compiler wrappers
to add "ftn" in all cases.
2019-04-17 13:12:25 -07:00
Oliver Breitwieser
f276b3ffa0 ruby: Install certificate for +openssl only (#11184)
If specifying ~openssl, the post-install step will still try to install
the non-existent certificate, leading to an IOError.
2019-04-17 13:03:58 -05:00
Christoph Junghans
c628ca99cf gromacs: added 2019 patch releases (#11211) 2019-04-17 12:48:06 -05:00
Satish Balay
4731041f88 strumpack@3.1.1: add patch for Intel-19 build failure on cori (#11204)
Ref: https://github.com/spack/spack/issues/11202
2019-04-17 12:10:05 -05:00
Justin S
01ada1a3de astral: add 5.6.1 (#11195) 2019-04-17 09:32:50 -05:00
sknigh
e372464611 Add llvm 8.0.0 (#11197) 2019-04-17 09:31:42 -05:00
Michael Kuhn
ea2a85dbd3 lz4: Add 1.9.0 (#11207) 2019-04-17 09:30:23 -05:00
Michael Kuhn
3028f5674c zstd: Add 1.4.0 (#11208) 2019-04-17 09:29:52 -05:00
Peter Scheibel
ef8b5c73ce don't record 'view: True' in environment config (#11182)
The default (implied) behavior for all environments, as of ea1de6b,
is that an environment will maintain a view in a location of its
choosing. ea1de6b explicitly recorded all three possible states of
maintaining a view:

 1. Maintain a view, and let the environment decide where to put it
    (default)
 2. Maintain a view, and let the user decide
 3. Don't maintain a view

This commit updates the config writer so that for case [1], nothing
will be written to the config.yaml. This will not change any existing
behavior, it just serves to keep the config more compact.
2019-04-16 19:08:10 -07:00
sknigh
308805cd54 Added rust 1.34.0 (#11200) 2019-04-16 18:32:11 -05:00
sknigh
a287ad6edd Added openmpi 3.1.4 (#11201)
* Added openmpi 3.1.4

* fix suffix comment
2019-04-16 18:31:54 -05:00
Matthias Mayr
e07cf4d661 New package: CLN library (#11167) 2019-04-16 16:03:51 -07:00
Frédéric Simonis
2ef7287a3b precice package: add versions and dependencies (#11176)
* Add versions 1.4.0, 1.3.0, and 1.2.0
* Add dependencies and update constraints (e.g. version 1.4.0 of
  precice requires a later version of boost)
* Add maintainers
2019-04-16 12:38:08 -07:00
paulanda
88cc895a70 setup-env.sh: fix zsh compatibility error (#11153)
Still look for BASH_SOURCE[0] first, but if it's not set,
_sp_source_file is initialized to an empty value addressing the
unset parameter error (line 217).
2019-04-16 12:33:02 -07:00
Nichols A. Romero
9a79a2345d QMCPACK package: Remove Spack MKL hack for older version (#11127)
A Spack hack for MKL usage was needed in QMCPACK prior to version 3.5
when non-Intel compilers were used. This Spack hack could have
undesirable side-effects and led to ugly code that was extra work to
maintain. For older versions of QMCPACK, we throw a conflict if you
want to use Intel MKL with the other compilers commonly found on x86.

Note that there is no impact to version of QMCPACK since 3.5.
2019-04-16 12:04:40 -07:00
Satish Balay
c25d162b3c superlu-dist: fix issue with adding system blas/lapack - when MKL is explicitly specified (#11187)
Version 6 added dependency on LAPACK - so additional -DTPL_LAPACK_LIBRARIES option is required

Ref: https://github.com/xiaoyeli/superlu_dist/issues/36
Ref: https://github.com/spack/spack/issues/10173
2019-04-16 08:52:48 -05:00
Adam J. Stewart
dbfa928cdb Add unit tests for Cray compiler detection (#11191) 2019-04-16 10:01:42 +02:00
Greg Becker
5f74f22dc6 Bugfix: Install missing compilers for dependency packages (#11175)
Compilers are treated separately from other dependencies in Spack.
#10761 added the option to automatically install compilers when a
package specifies using a compiler that is not available in Spack.
However, this did not work correctly for dependency packages (it
would only build a compiler for the root of an install DAG). This
commit enables the building of compilers for dependency packages.
2019-04-15 17:41:15 -07:00
Jordan Ogas
a49de9eb09 add charliecloud 0.9.9 (#11190) 2019-04-15 17:59:10 -05:00
Matthias Diener
dd97cf9315 cmake: add version 3.14.2 (#11192) 2019-04-15 17:17:24 -05:00
Denis Davydov
06a17ef052 pixman: fix patch (#11173) 2019-04-15 14:49:02 +02:00
Denis Davydov
0341e19540 boost: add 1.70.0 (#11183) 2019-04-15 09:59:04 +02:00
Oliver Breitwieser
dadbd723a3 verilator: Fix FlexLexer.h not found (#11185)
Similar to #10956 flex needs to be a link-dependency for verilator in
order for FlexLexer.h to be found during install.
2019-04-15 09:56:07 +02:00
Satish Balay
5b5e00aaa9 petsc4py: add verson 3.11.0 (#11186)
Also added maintainers
2019-04-15 09:54:40 +02:00
Mark C. Miller
1ae7477d20 Update FASTMath metapackage (#11171)
* Limit to FASTMath-only packages
* Replace boxlib with amrex

As requested by @asalmgren
2019-04-12 16:54:19 -05:00
Satish Balay
832a1ddbaa petsc: add fftw variant (#11178) 2019-04-12 09:46:23 -05:00
Satish Balay
1eab6e3c86 petsc: add version 3.11.1 (#11179) 2019-04-12 09:45:43 -05:00
Owen Solberg
227f9c9026 py-deeptools: adding release 3.2.1 sha256 sum (#11174) 2019-04-12 09:45:04 +02:00
Massimiliano Culpo
263d8a818a Updated Sphinx configuration (#11165) 2019-04-11 14:38:52 -07:00
Denis Davydov
177b7f111a intel: optionally take gcc executable from cflags (#11136) 2019-04-11 12:33:59 -07:00
Satish Balay
6b09781936 xsdk@develop: enable amrex@develop+sundials (#11169) 2019-04-11 12:16:23 -05:00
Cody Balos
0d0358733d amrex: add sundials variant (#11147) 2019-04-11 10:43:11 -05:00
brietzke
d0e281e201 libxsmm package: add variant to build generator executables (#11114) 2019-04-10 16:34:38 -07:00
clellsolomon
7ec12c59ab fzf package: change mirror and add vim plugin (#10920)
This commit edits the Makefile to use github.com mirrors rather than the
default mirrors of the dependency packages installed by GO.
2019-04-10 16:23:37 -07:00
Chuck Atkins
f1bdaa11d4 New Packages: ecp-io-sdk and ecp-viz-sdk (#11073) 2019-04-10 16:18:05 -07:00
Peter Scheibel
ea1de6b941 Maintain a view for an environment (#10017)
Environments are nowm by default, created with views.  When activated, if an environment includes a view, this view will be added to `PATH`, `CPATH`, and other shell variables to expose the Spack environment in the user's shell.

Example:

```
spack env create e1 #by default this will maintain a view in the directory Spack maintains for the env
spack env create e1 --with-view=/abs/path/to/anywhere
spack env create e1 --without-view
```

The `spack.yaml` manifest file now looks like this:

```
spack:
  specs:
  - python
  view: true #or false, or a string
```

These commands can be used to control the view configuration for the active environment, without hand-editing the `spack.yaml` file:

```
spack env view enable
spack env view envable /abs/path/to/anywhere
spack env view disable
```

Views are automatically updated when specs are installed to an environment. A view only maintains one copy of any package. An environment may refer to a package multiple times, in particular if it appears as a dependency. This PR establishes a prioritization for which environment specs are added to views: a spec has higher priority if it was concretized first. This does not necessarily exactly match the order in which specs were added, for example, given `X->Z` and `Y->Z'`:

```
spack env activate e1
spack add X
spack install Y # immediately concretizes and installs Y and Z'
spack install # concretizes X and Z
```

In this case `Z'` will be favored over `Z`. 

Specs in the environment must be concrete and installed to be added to the view, so there is another minor ordering effect: by default the view maintained for the environment ignores file conflicts between packages. If packages are not installed in order, and there are file conflicts, then the version chosen depends on the order.

Both ordering issues are avoided if `spack install`/`spack add` and `spack install <spec>` are not mixed.
2019-04-10 16:00:12 -07:00
Eric Martin
8f1ebfc73c py-requests: Add missing dependencies for versions 2.16.0 and up (#10996) 2019-04-10 15:38:28 -07:00
Mario Melara
a1db22ba1a Unload altd and darshan (#11162) 2019-04-10 13:19:41 -07:00
Peter Scheibel
c1f8fdd5df Add documentation for chaining Spack instances (#11152)
Add documentation for the Spack chain feature added in #8772
2019-04-10 11:54:13 -07:00
Patrick Gartung
a5315f3878 Fix bug when system perl is used. (#11034)
* Fix bug when system perl is used.

If system perl is being used through packages.yaml there cannot be dependent modules.
The  setup_dependent_packages function should not do anything in that case.
2019-04-10 08:44:27 -05:00
Denis Davydov
1e9748a3c8 dealii: fix build with tbb from intel parallel studio (#11138) 2019-04-10 14:51:38 +02:00
Denis Davydov
b2611c8086 suite-sparse: fix tbb patching (#11155) 2019-04-10 09:21:54 +02:00
Michael Kuhn
1ac576923f libfabric: Add 1.7.1 (#11141) 2019-04-09 18:38:15 -05:00
Matthias Diener
687a7db73f wget: add version 1.20.3 (#11148) 2019-04-09 18:37:04 -05:00
George Hartzell
0256766ab9 Typo: Unkown -> Unknown (#11150) 2019-04-09 18:36:45 -05:00
Denis Davydov
1f1ea2c859 intel: consolidate libs() in the base class (#11143)
* intel: consolidate libs() in the base class

* white space

* flake8
2019-04-09 13:54:21 -07:00
Denis Davydov
82455a30d0 openmpi: add 4.0.1 (#11126)
* openmpi: add 4.0.1

* openmpi: enable-mpi1-compatibility for 4.0.1 and above

* remove preferred

* make 3.1.3 preferred
2019-04-09 21:41:14 +02:00
Satish Balay
a9bf3bdd6a xsdk@develop: enable hypre shared (even on OSX) and superlu-dist variant (#11131) 2019-04-09 08:42:44 -05:00
Owen Solberg
c6a7d0db03 cdhit - add new release 4.8.1 checksum (#11130) 2019-04-09 10:33:07 +02:00
Satish Balay
6e78730a97 mumps: add version 5.1.2 (#11132)
Add patch for gfortran-8 runtime errors
2019-04-09 10:28:41 +02:00
Patrick Gartung
aac3799d2c Unset SPACK_INCLUDE_DIRS so the compiler wrapper does not prepend any -I flags. The assumption is that cmake will set the correct include flags. (#11129) 2019-04-08 14:30:22 -05:00
Michael Kuhn
db98f16382 zfp: Add 0.5.4 (#11016) 2019-04-08 09:11:28 +02:00
thelfer
3b5d7bfa99 Add new TFEL' versions (3.0.4, 3.1.4 and 3.2.1). Add new MGIS version (1.0.1). (#11109) 2019-04-08 09:09:14 +02:00
Cameron Smith
0e04410044 kokkos: update cuda conflict (#11110)
see https://github.com/spack/spack/pull/10943#issuecomment-475303870
2019-04-08 08:58:35 +02:00
Levi Baber
6e4b234d13 sra-toolkit new version (#11111) 2019-04-08 08:56:49 +02:00
Satish Balay
d11b1b18f0 netlib-scalapack: fix compatibility with mpi2 i.e openmpi-4 (#11124) 2019-04-07 10:01:54 -05:00
Abhinav Bhatele
ed66ccb6f2 ecp-proxy-apps: update version (#11119) 2019-04-06 15:33:29 -07:00
Scott Wittenburg
3616617804 Allow spack install to take either cdash stamp or track (#11106)
When providing a track, the cdash reporter will format the stamp
itself, as it has always done, and register the build during the
package installation process.  When providing a stamp, it should
first be formatted as cdash expects, and then cdash will be sure
to report results to same build id which was registered manually
elsewhere.
2019-04-06 15:30:34 -07:00
Satish Balay
90c7c74334 hypre: disable variant superlu-dist default (#11097) 2019-04-05 21:11:36 -05:00
Greg Becker
8a17282001 Fix reading externals from old databases (#11118)
* Update Spec.prefix to have special case for 'None' in database path; regression test
* Update in database reader rather than spec
* Change assertion to conditional + raise
* Added test for concrete check in Spec.prefix
2019-04-05 14:58:57 -07:00
Gregory Lee
af3e91926a fixes py-basemap package (#11104)
* fixes py-basemap package
* remove basemap mpl_toolkit __init__.py
2019-04-05 11:27:23 -07:00
Michael Kuhn
320e00276f Fix module_parsing test (#11087)
The module_parsing test checks whether the module function is available
by looking for the string 'not found'. If the user has set a different
locale, the test can assume that the module function is available when
it actually is not.
2019-04-05 11:26:40 -07:00
Patrick Gartung
f1f582714c Set Geant4 cmake module path environment variable in dependents. (#11112) 2019-04-04 13:09:13 -05:00
Marco Comparato
553acbbe3d xcb-util-wm: add m4 build system dependency (#11056) 2019-04-04 13:11:02 +02:00
Abhinav Bhatele
8da6593e43 miniamr: add develop version and update release (#11101)
* miniamr: add develop version and update release

* change from url to git

* add url back
2019-04-03 16:17:04 -06:00
Abhinav Bhatele
5f3620f7ac raja: add newer versions (#11102) 2019-04-03 12:09:45 -06:00
Abhinav Bhatele
b2a2c31883 laghos: update dependencies (#11100) 2019-04-03 11:22:40 -06:00
Abhinav Bhatele
af2d166adf AMG: update version (#11099) 2019-04-03 11:11:06 -06:00
Phil Carns
03bb6500f3 fio package: add optional libaio dependency (#11083) 2019-04-02 18:21:45 -07:00
Neil Flood
c3e5c9981a proj package: add versions 5.2.0 and 5.1.0 (#11079)
* Add versions 5.2.0 and 5.1.0
* Avoid adding version 6.0.0: this version has a new API that is
  not compatible with older versions (and dependents may break with
  it)
* Added comment block explaining the problems with version 6.x
* Replace old datumgrid resource (1.7) with new (1.8)
* Add speculative sqlite dependency for when a 6.x version is added
2019-04-02 18:18:56 -07:00
Elsa Gonsiorowski, PhD
9b5ce67f1e ross package: add version 7.0.1 (#11078)
* add version 7.0.1
* replace md5 with sha256 for various versions.
* v7.0.1 fixes some environment hacking to properly find MPI and
  system architecture
2019-04-02 17:50:41 -07:00
Tim Fuller
a9ae507152 Fix directory layout using namespace (#11076)
Directory layouts using ${NAMESPACE} were broken. This addresses that
and adds a test to prevent regression.
2019-04-02 17:47:57 -07:00
Ryan S. Elliott
3c641f47cd kim-api and openkim-models: version update and rename (#11065) 2019-04-02 17:44:24 -07:00
Jon Rood
0cb08e42f5 Trilinos: Add Tpetra_INST_INT_LONG_LONG to explicit template instantiation (#11060) 2019-04-02 17:38:52 -07:00
Seth R. Johnson
f237c81060 openmpi: Add stub mpirun script for openmpi~legacylaunchers+slurm (#11059)
This adds a stub script for mpirun and other standard executables
when installing OpenMPI with slurm. The purpose is to make the
removal less of a surprise to administrators/users: it explains why
they were removed and how to restore them.
2019-04-02 17:34:25 -07:00
Justin Stanley
3988732ef4 r-hoardr: new package at 0.5.2 (#11051) 2019-04-02 17:28:05 -07:00
Justin Stanley
6500310b08 r-roxygen2 package: added 6.1.1, more dependencies (#11045) 2019-04-02 17:27:04 -07:00
Justin Stanley
f459bba322 r-rhmmer: new package at 0.1.0 (#11050) 2019-04-02 17:25:55 -07:00
Justin Stanley
f5d61f8f58 r-commonmark: new package at 1.7 (#11049) 2019-04-02 17:22:42 -07:00
Justin Stanley
8710203e08 r-pkgload: new package at 1.0.2 (#11047) 2019-04-02 17:21:55 -07:00
Justin Stanley
6ac99f6275 r-desc: new package at 1.2.0 (#11048) 2019-04-02 17:10:24 -07:00
Justin Stanley
e094821a54 r-pkgbuild: new package at 1.0.3 (#11046) 2019-04-02 17:09:59 -07:00
Denis Davydov
ecde4502f2 arpack-ng package: add version 3.7.0 (#11041) 2019-04-02 17:08:16 -07:00
Gregory Lee
8625faefc9 mvapich2 package: add version 2.3.1 (#11037) 2019-04-02 17:07:06 -07:00
Tristan Carel
4793242158 spack repo add: fix error message when `packages' directory is missing (#11031) 2019-04-02 17:05:57 -07:00
Dustin Lagoy
229ed5c228 netcdf-cxx package: set ldflags for hdf5 and netcdf (#11026)
Ensure that netcdf-cxx uses the Spack-installed hdf5 and netcdf4
rather than system-installed versions.
2019-04-02 17:04:09 -07:00
Jon Rood
bc4c372ebd nalu-wind package: require hypre without superlu-dist. (#11022) 2019-04-02 17:02:22 -07:00
Eric Martin
6d6bc8010f picard package: Add version 2.19.0 (#11018) 2019-04-02 17:01:17 -07:00
Matthias Wolf
9fc4489ee1 py-arrow and arrow: add version 0.12.1 (#11004)
Also constrain the py-arrow version to depend on the same version
of arrow (e.g. 0.12.1 of py-arrow depends on 0.12.1 of arrow)
2019-04-02 17:00:04 -07:00
Christoph Junghans
27a72cf7fe branson: fix install (#11093) 2019-04-02 16:44:46 -06:00
Christoph Junghans
81f1bd7732 nut: fix install (#11092) 2019-04-02 16:38:03 -06:00
Christoph Junghans
7a28a61a59 miniqmc: fix install (#11091) 2019-04-02 16:23:37 -06:00
Christoph Junghans
356b5df715 kripke: fix install (#11090) 2019-04-02 16:05:21 -06:00
Christoph Junghans
82be3a4668 hacckernels: fix install (#11089) 2019-04-02 15:58:40 -06:00
Christoph Junghans
4ff3ce494a macsio: fix install (#11088) 2019-04-02 15:58:21 -06:00
Massimiliano Culpo
a1255b61c0 Added tests on compiler's version detection (#10931)
* Split get_compiler_version into two functions:
  get_compiler_version_output runs the compiler with the relevant
  option to print the version; extract_version_from_output determines
  the version by examining this output. This makes it easier to test
  the customized version detection for each compiler. Users can
  customize this by overriding the following:
  * version_argument: this is the argument that tells the compiler to
    print its version. It assumes that the compiler will report its
	version if invoked with a single option (like "--version")
  * version_regex: the regular expression used to extract the version
    from the compiler argument. This assumes that a regular
	expression is sufficient to extract the version, and that the
	version can be extracted from a single capture group (Spack uses
	the first capture group)
  * default_version: allows you to completely override all version
    detection logic
  * get_compiler_version_output: if getting the compiler to report
    its version is more complex than invoking it with a single arg
  * extract_version_from_output: if it is difficult to define a regex
    that can be used to extract the version from the output
* Added tests for version detection of most compilers
* Removed redundant code from xl_r compiler class (by inheriting
  from xl compiler definition)
2019-04-02 12:52:47 -07:00
Vanessasaurus
b08518dadd adding package to install squashfs for singularity (#11077)
* adding package to install squashfs for singularity

* dont need os import

Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>

* updating md5 to sha1 for squashfs package

Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>

* two blank lines

Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>
2019-04-02 12:33:23 -05:00
Gregory Lee
007e168b9e add pkgconfig as dependence for flux packages (#11036) 2019-04-01 18:33:55 +02:00
Nichols A. Romero
0ccc69411b QMCPACK MKL buglet. Now you are able to use the Intel compiler with other BLAS and LAPACK providers, no longer forced to use MKL. (#11019) 2019-03-31 19:31:59 -05:00
Matthias Diener
6034ddfed8 cmake: add version 3.14.1 (#11063) 2019-03-31 19:22:59 -05:00
Satish Balay
4946e1d0a2 petsc: update superlu-dist dependency (#11068) 2019-03-31 12:20:15 -05:00
Satish Balay
7eb734c4d9 slepc: add versions 3.10.2 and 3.11 (#11067) 2019-03-31 12:19:58 -05:00
Satish Balay
650a15436b superlu-dist: add version 6.1.1 (#11066) 2019-03-31 12:19:43 -05:00
Massimiliano Culpo
e3f00750e8 Update llnl.util.lang.memoized so that Sphinx can extract signature (#11055)
Replace the original implementation of the "memoized" decorator with
an implementation that exposes the docstring and arguments of the
wrapped function. This is achieved using functools.wraps.
2019-03-29 17:11:44 -07:00
Denis Davydov
def5b23763 add libs property to IntelMkl and IntelParallelStudio (#10993)
* add libs property to IntelMkl and IntelParallelStudio
* fix scalapack_libs when MPI is provided by intel-parallel-studio
2019-03-29 13:01:43 -07:00
Satish Balay
03d39ed34c petsc: add versions 3.10.5, 3.11.0 (#11058) 2019-03-29 11:54:23 -05:00
Massimiliano Culpo
0a006351c8 Spack can be extended with external commands (#8612)
This provides a mechanism to implement a new Spack command in a
separate directory, and with a small configuration change point Spack
to the new command.

To register the command, the directory must be added to the
"extensions" section of config.yaml. The command directory name must
have the prefix "spack-", and have the following layout:

  spack-X/
    pytest.ini #optional, for testing
    X/
	  cmd/
	    name-of-command1.py
	    name-of-command2.py
	    ...
    tests/ #optional
      conftest.py
	  test_name-of-command1.py
    templates/ #optional jinja templates, if needed

And in config.yaml:

  config:
    extensions:
      - /path/to/spack-X

If the extension includes tests, you can run them via spack by adding
the --extension option, like "spack test --extension=X"
2019-03-28 16:56:36 -07:00
Kelly (KT) Thompson
b2b91a1f00 Random123 - provide a patch to fix compiles with IBM XL (#11028)
* Newer versions of IBM XL no longer define `__xlC__`, but define `__ibmxl__`
  instead.  This one-line patch fixes this problem in Random123.
* This patch was also provided to the Random123 maintiners
  (Random123@DEShawResearch.com). I don't expect a new release from them for a
  while, so I believe that this patch is the correct path forward (for now).
2019-03-28 17:20:28 -05:00
Satish Balay
06e82edf15 hypre: add a modified superlu-dist patch for @:2.14.0 (#11032) 2019-03-28 14:57:51 -05:00
Peter Scheibel
a6511fbafc Consistent patch ordering (#10879)
* preserve the order in which patches are applied by packages (in spite of grouping them by 'when')

* add tests confirming patch order
2019-03-28 11:25:44 -07:00
Peter Scheibel
99f35c3338 spack chain (#8772)
* initial work to make use of an 'upstream' spack installation: this uses the DB of the upstream installation to check if a package is installed

* need to query upstream dbs when adding new record to local db

* prevent reindexing upstream DBs

* set prefix on specs read from DB based on path stored in install record

* check that Spack does not install packages that are recorded as installed in an upstream db

* externals do not add their path to install records - need to use 'external_path' to get path of upstream externals

* views need to check for upstream installations when linking metadata

* package and spec now calculate upstream installation properties on-demand themselves rather than depending on concretization to set these properties up-front. The added tests for upstream installations don't work with this new strategy so they need to be updated

* only refresh modules for local specs (not those in upstream packages); optionally generate local module files for packages installed upstream

* when a user tries to locate a module file for a package installed upstream, tell them to use the upstream spack instance to locate it

* support recursive upstream databases (allow upstream databases to use their own upstream databases)

* separate upstream config into separate file with its own schema; each entry now also includes a name

* metadata_dir is no longer customizable on a per-instance basis for YamlDirectoryLayout

* treat metadata_dir as an instance variable but dont set it from kwargs; this follows several other hardcoded variables which must be consistent between upstream and downstream DBs. Also update DirectoryLayout.metadata_path to work entirely with Spec.prefix, since Spec.prefix is set from the DB when available (so metadata_path was duplicating that logic)
2019-03-27 13:06:46 -07:00
Mario Melara
298a55b28f Replace previous bash command to new one (#7005)
Prevents infinite recursion caused by sourcing `setup-env.sh` in bashrc
2019-03-27 10:26:52 -07:00
Elsa Gonsiorowski, PhD
8a4e762bec libyogrt package: add versions, scheduler support (#10884)
* Add latest libyogrt versions
* Add url_for_version to handle differing url formats for different
  versions
* Add 'scheduler' variant to configure scheduler. Currently only
  slurm can be installed with Spack. A value of 'system' indicates
  to use the scheduler installed on the system
2019-03-27 10:25:31 -07:00
Chris Green
e88c1d585c Move CMakePackage build directory to base stage directory (#8431)
Change the location of the CMake build area from the staged source
directory to the stage base directory.

This change allows CMake packages to refer to the build directory in
setup_environment (e.g. if tests need to have a directory in PATH):
Staging happens after the call to setup_environment(), and if the
stage area does not exist, then spec.stage.source_path returns None.

To accommodate this change, archived files (like config.log for
Autotools packages) are archived relative to the stage base directory
rather than the expanded source directory.

Other packages (those not using CMake) will still use the staged
source directory as the default working directory for builds (and
will still be unable to reference this directory in
setup_environment())
2019-03-26 17:40:49 -05:00
Michael Kuhn
7df70154dd lzo package: add version 2.10 (#11015) 2019-03-26 15:40:48 -05:00
Michael Kuhn
44311da0de c-blosc package: add version 1.16.3 (#11014) 2019-03-26 15:40:24 -05:00
Justin Stanley
35d439b1f7 beast1 package: add version 1.10.4, use url_for_version (#11009) 2019-03-26 15:39:42 -05:00
Gregory Lee
d2bd4f86dd py-netcdf package: add py-cftime dependency (#11005) 2019-03-26 15:39:10 -05:00
Eric Martin
69bd67385c py-xopen: Add version 0.5.0 (#10995) 2019-03-26 15:32:09 -05:00
Mark W. Krentel
675bb23431 intel-xed package: add versions 2019.03.01 and develop (#10987)
Also add conflicts for PPC
2019-03-26 15:31:28 -05:00
ajw1980
e5b86c5527 Retrieve environment-modules prefix based on architecture (#10975)
When multiple instances of environment-modules were installed with
different architectures, Spack was not retrieving the installation
appropriate for the current architecture when finding the module
prefix.
2019-03-26 15:23:17 -05:00
ajw1980
7a4712b90a New package: py-scikit-optimize (#10973) 2019-03-26 15:10:35 -05:00
ajw1980
48a8ee0363 New package: py-pyodbc (#10972) 2019-03-26 15:09:55 -05:00
ajw1980
99a51e7ed1 New package: py-luigi (#10970) 2019-03-26 15:08:20 -05:00
ajw1980
40121eddd9 Py-jupyter package: dependency fixes (#10966)
* py-prompt-toolkit: Add newer version for required for newer
  py-ipython versions
* py-ipykernel:
  * Add newer py-ipykernel version
  * Depend on py-setuptools so a python egg isn't attempted to be
    built
  * Update dependency for newer py-ipykernel versions
* py-jupyter-console: Remove py-prompt-toolkit dependency since it is
  picked up in py-ipython
* py-ipython:
  * Add missing py-backcall dependency
  * Adjust py-prompt-toolkit dependencies for newer versions of
    ipython
* py-jupyter-notebook: Require newer version of py-ipykernel since
  jupyter is broken with previous versions
2019-03-26 15:05:39 -05:00
ajw1980
9437cf88f0 node-js package: Depend on zlib when +zlib (#10965) 2019-03-26 14:43:30 -05:00
ajw1980
994b8afedc py-numba package: Depend on py-setuptools so an egg isn't built (#10964) 2019-03-26 14:42:57 -05:00
ajw1980
4b76602914 py-dateutil package: add version 2.7.5 (#10961) 2019-03-26 14:42:31 -05:00
ajw1980
6a6a51922f py-pytz package: add version 2018.4 (#10959) 2019-03-26 14:41:09 -05:00
Justin M Wozniak
4719bf25dd r-rinside package: add version 0.2.15 (#10949) 2019-03-26 14:37:49 -05:00
Brian Spilner
308a39eca3 ruby package: add version 2.6.2 (#10945) 2019-03-26 14:34:33 -05:00
Andrew Gaspar
1e6da47b4e Kokkos package: pthreads feature and new kokkos versions (#10943) 2019-03-26 14:31:48 -05:00
Seth R. Johnson
844ca31894 Use 'shlex' to split default Executable arguments (#10929)
This allows shell commands for `spack edit` to be executed correctly if
they have quoted arguments.
2019-03-26 14:02:32 -05:00
Chris Green
670ef9bd7c nix package: improve dependencies based on prerequisites from manual. (#10927) 2019-03-26 13:39:40 -05:00
Michael Kuhn
63ddc44db6 ior package: Add patch to fix 3.2.0 with hdf5 (#10923) 2019-03-26 13:36:54 -05:00
fcannini
f08c9aa601 quantum-espresso: Enable EPW installation (#10637) 2019-03-26 13:33:10 -05:00
Chris Green
763549fe7c mysql: Support client-only, cxxstd and more versions (#10911)
* add cxxstd variant
* add CMake constraints based on platform/version
* add older versions
* update boost dependency version constraints (which are closely
  tied to mysql version) and update boost cxxstd choice to be
  the same as the cxxstd chosen for mysql
* add client-only support (including a patch for 5.5.x)
* record the mysql package as a provider of the mysql-client virtual
2019-03-26 13:19:06 -05:00
Chris Green
1bd8c0c460 boost: Fix build of versions < 1.62.0 (#10910)
Improve management of the Fiber library and C++ standard support:

* Remove Fiber from list of libraries to build
* Improve variant management for Fiber; add variants for Context and
  Coroutine libraries.
* Add known conflict with C++17 for boost < 1.63.0
* Remove C++ standard "default" option, which left the choice of
  C++ standard to the compiler used to build boost
2019-03-26 12:50:06 -05:00
Massimiliano Culpo
89b9880719 Add regression marker to pytest.ini (#11011) 2019-03-26 12:04:36 -05:00
Michael Kuhn
8434e7803d lz4: Add 1.8.3 (#11013) 2019-03-26 15:34:25 +01:00
Michael Kuhn
58d186fc00 zstd: Add 1.3.8 (#11012) 2019-03-26 15:33:26 +01:00
Nichols A. Romero
66172f80f3 Fixed some issues with CUDA-Intel compiler conflicts. (#10924)
* Fixed some issues with CUDA-Intel compiler conflicts.

* Comment about expressing CUDA-compiler conflicts.

* More precise conflicts and also add support for Intel 19.0
2019-03-26 15:31:56 +01:00
clellsolomon
31d7df7860 ninja-fortran package: add newer versions (#10921) 2019-03-25 20:38:45 -05:00
bfovet
cc2ff82027 New package: MMG (#10902) 2019-03-25 20:24:40 -05:00
Dustin Lagoy
14acfb65c4 netcdf-cxx package: Add optional netCDF4 support (#10899) 2019-03-25 20:22:15 -05:00
Omar Padron
57523c3f0b explicitly install unzip in all docker images (#10891) 2019-03-25 20:10:42 -05:00
Chris Green
17da285cfb range-v3 package: Add notes, conflicts and doc dependencies. (#10887)
* record conflicts with compiler versions which don't provide
  required c++ standard support
* add doxygen (build) dependency
* add note that range-v3 is header-only as of 0.3.6 and update
  package description
2019-03-25 20:10:01 -05:00
Chris Green
a4bf8de09b gl2ps: add missing dependencies and doc variant. (#10886)
Makes building of documentation optional.
2019-03-25 20:04:33 -05:00
Dustin Lagoy
4c68d2e14e py-netcdf4: avoid using system installs of dependencies (#10885)
Use environment variables to point setup.py to Spack installations
of hdf5/netcdf
2019-03-25 20:03:02 -05:00
Chris Green
c124b1f471 postgresql package: build enhancements. (#10877)
We add new variants to handle readline vs libedit, a client-only
build and install, and bindings to TCL, Python and Perl. We also add
new versions and the ability to detect remote versions not otherwise
dealt with.
2019-03-25 19:51:51 -05:00
simo-tuomisto
6478a32598 New package: elmer-fem (#10860)
Elmer finite element method solver; builds Elmer, ElmerICE and
contributed solvers with MPI support.
2019-03-25 19:47:15 -05:00
Omar Padron
bf03edb51b LLVM package: disable CUDA (#10858)
This avoids using a system-installed CUDA package. In the future a
variant can be added to allow using Spack-installed CUDA, but for
now CUDA support is always disabled.
2019-03-25 19:43:18 -05:00
Brian Van Essen
a88b540723 Conduit package: add option to build with hdf5 versions > 1.8 (#10913)
Added a variant to allow conduit to build with newer versions of
HDF5.  Set the default for the variant to prefer compatibility mode
with HDF5 v1.8
2019-03-25 12:26:30 -05:00
Satish Balay
365c17a3d5 xsdk: enable sundials@4.1.0 for xsdk@develop (#10989)
- disable sundials varaiant for dealii and mfem - as they are incomatible with sundials@4.1.0
2019-03-24 22:17:20 -05:00
Satish Balay
8c165494f2 hypre: add superlu-dist variant (#10985)
- add a patch to fix build error with superlu-dist
2019-03-24 22:16:47 -05:00
Satish Balay
d7e984bcf8 amrex: current @develop - and future releases require cmake@3.13 or higher (#10953) 2019-03-24 22:15:49 -05:00
Navdeep Rana
fb946e51a4 Added a package for chapel. (#11002)
* Added a package for chapel.

* flake8 compliance.
2019-03-24 17:18:19 -05:00
Xavier Delaruelle
95a0e9c693 environment-modules: add version 4.2.3 (#11003) 2019-03-24 17:17:50 -05:00
Denis Davydov
64acce557d petsc: workaround xcode stub-out-of-sync issue (#10999) 2019-03-24 10:38:40 -05:00
Daryl W. Grunau
7081dba9ee Packages/zoltan (#10432)
* serialize the F90 interface build

* serialize the F90 interface build
2019-03-23 13:38:29 +01:00
Stephen McDowell
878b122f45 add ninja v1.9.0 (#10994) 2019-03-22 10:05:14 -05:00
Eric Martin
ec45c22808 netgen: update broken URL (#10882)
* netgen: update broken URL

* netgen: fix url_for_version URL
2019-03-22 10:01:07 -05:00
Michael Kuhn
b6185d4ad7 openfoam-com: Fix flex dependency (#10956)
openfoam-com needs flex's FlexLexer.h, which can only be found if flex
is also a link dependency.
2019-03-22 12:46:53 +01:00
Eric Martin
ba5f37ee26 vdt: Add version 0.4.3 (#10982) 2019-03-22 11:57:30 +01:00
Michael Kuhn
ea227b9974 py-hpccm: New package (#10957) 2019-03-22 11:39:10 +01:00
Eric Martin
1599dce2ae canu: Add versions 1.8 and 1.7 (#10978) 2019-03-22 11:27:36 +01:00
Eric Martin
563e573b13 megahit: Add version 1.1.4 (#10979) 2019-03-22 11:19:28 +01:00
Eric Martin
d9eaad80c3 racon: Add versions 1.3.2 and 1.3.1 (#10980) 2019-03-22 11:19:13 +01:00
Eric Martin
487fa5713c trimgalore: Add versions 0.6.0 and 0.6.1 (#10981) 2019-03-22 11:18:45 +01:00
Eric Martin
46e0ad3269 bowtie: Add missing zlib dependency (#10984) 2019-03-22 11:17:16 +01:00
Matthias Diener
133d4ca9ce gdb: add version 8.2.1 (#10988) 2019-03-22 11:00:28 +01:00
Hadrien G
cc8a086082 ACTS: add version 0.8.2 (#10974) 2019-03-22 10:59:45 +01:00
Denis Davydov
6d971c4493 add ginkgo package, use it in dealii along with symengine (#10917) 2019-03-22 10:58:48 +01:00
Shahzeb Siddiqui
724acb6421 typo in documentation (#10976) 2019-03-21 14:29:40 -05:00
Stephen McDowell
7bc899d9ca add eigen v3.3.7 (#10955) 2019-03-21 12:16:26 -05:00
George Hartzell
aa1e70aab1 Minor commentary correction, TCL -> lmod (#10951) 2019-03-21 11:17:41 +01:00
Stephen McDowell
70e436e932 prevent UnboundLocalError when sourcing files (#10950)
Patch extracted from #7536 courtesy of @mgsternberg
2019-03-21 11:08:29 +01:00
Patrick Schratz
bffe3a605f update R to v3.5.3 (#10928)
* update R to v3.5.3
2019-03-20 13:06:57 -05:00
Michael Kuhn
e02eb3633e mpich: Do not use libfabric@1.7: with ch3 ofi netmod (#10919) 2019-03-20 10:01:39 -07:00
Michael Kuhn
c66a24f22d pkgconf: add 1.6.0 (#10942) 2019-03-20 14:10:11 +01:00
bfovet
81f699eca3 Update GMSH to 4.2.2 with OpenMP variant (#10914) 2019-03-20 05:12:57 +01:00
Patrick Schratz
f51bce5636 saga-gis: new versions up to 7.3.0 (#10922) 2019-03-20 05:03:14 +01:00
Denis Davydov
de3ff1a96b gettext: fix dependency type of xz (#10935) 2019-03-20 04:57:08 +01:00
sknigh
e717230bf8 added yara (#10901) 2019-03-20 04:55:02 +01:00
fcannini
9a8c4cf071 gromacs: make sure cuda support is disabled when cuda=False (#10936)
* abinit: Fix building with hdf5/netcdf.

* gromacs: Fix attempt to build with cuda support when 'cuda=False'

If for some reason there's a cuda toolkit installed by other means,
(i.e. not by spack) cmake will still try to build with cuda support,
even though 'cuda=False' is the default of the spec.

* Revert "abinit: Fix building with hdf5/netcdf."

This reverts commit e16f725e37.

This should not be here.
2019-03-20 04:54:03 +01:00
Michael Kuhn
1db5a3e0a3 libfabric: add 1.6.2 (#10918) 2019-03-20 04:52:50 +01:00
Matthias Diener
d935048982 git: add version 2.21.0 (#10937) 2019-03-20 04:49:47 +01:00
Michael Kuhn
b48a6f22be strace: add 5.0 (#10940) 2019-03-20 04:48:13 +01:00
Michael Kuhn
09d57d8cee libeatmydata: new package (#10941) 2019-03-20 04:47:45 +01:00
Chris Green
9ad02685d9 Fix help text for --no-checksum. (#10932) 2019-03-19 15:02:06 -05:00
Kelly (KT) Thompson
a1eeeadfd8 Branson: provide new versions. (#10926)
* Branson: provide new versions.

+ Also update dependencies (newer version have fewer dependencies).

* fix style issue
2019-03-19 08:49:58 -06:00
Kelly (KT) Thompson
29ce8eb892 Draco: add variants (#10925)
* Draco: add variants

+ This package has many optional build dependencies that were not registered in
  older versions of this recipe.  I've added (and tested) this more complete
  list of optional dependencies: parmetis, superlu-dist, qt.

* fix style issues
2019-03-19 08:49:30 -06:00
Owen Solberg
3618d405b1 added checksum for new bowtie2 version (#10930) 2019-03-19 15:14:25 +01:00
Christoph Junghans
a6ccd99054 cabana: cuda backend (#10660) 2019-03-18 14:02:28 -06:00
Massimiliano Culpo
4aead5e35b redis: new package (#10915)
Added versions from 4.0.11 to 5.0.3

closes #9180
2019-03-16 14:47:11 +01:00
Mark W. Krentel
e811e23f2e hpcviewer: new package (#10878)
* hpcviewer: new package

Add binary package for hpcviewer and hpctraceviewer for the Rice
hpctoolkit on Linux x86_64, ppc64 and ppc64le.

* ibm-java: add property 'home' so that spec['java'].home will work.

* Flake

* More flake.

* Test that the version, machine type pair exists before using it in the
sha dictionaries so that 'spack info' doesn't crash on unsupported
configurations.
2019-03-15 15:47:22 -05:00
Chris Green
6de6d5396c New package: mariadb-c-client (#7729)
* mariadb-c-client is a new package using the distinct, LGPL,
  MySQL-compatible client library from mariadb.com. It provides the
  virtual package mariadb-client
* mariadb is recorded as a provider of the mariadb-client virtual
* The mysql-client virtual package is also added, and mariadb-c-client
  is recorded as a provider for it
2019-03-15 14:12:30 -05:00
Adam J. Stewart
82e3380049 Add latest version and missing dependencies of MySQL (#10904)
* Add latest version and missing dependencies of MySQL

* m4 only needed on solaris
2019-03-15 14:01:54 -05:00
Christoph Junghans
4baf3d9d02 py-espressopp: add v2.0.2 (#10909) 2019-03-15 12:59:23 -05:00
Matthias Diener
dd09ab697b cmake: add version 3.14.0 (#10908) 2019-03-15 11:49:59 -05:00
Adam J. Stewart
cba5a8058e Add ladot package (#10905) 2019-03-15 01:13:25 -05:00
Adam J. Stewart
4e6285a19b Ensure that every package has a description (#10896) 2019-03-14 20:49:07 -05:00
Chris Green
9b51fb09f1 Support VISUAL environment variable for editing. (#10898)
If the user has set the environment variable VISUAL, it will be used
in preference to EDITOR for all Spack editing activities. If VISUAL
is not set or fails (perhaps due to a lack of graphical editing
capabilities),EDITOR will be used instead. We fall back to one of
several common editors if neither bears fruit.

This feature has been tailored to:

* Provide identical behavior to the previous implementation in the
  case that VISUAL is not set.
* Not require any change to code utilizing the editor feature.
* Follow usual UNIX behavior concerning VISUAL and EDITOR.
2019-03-14 16:16:26 -05:00
Jordan Ogas
1d73868333 charliecloud: added version 0.9.8 (#10900) 2019-03-14 20:36:53 +01:00
Chris Green
6a9f02c96f cppunit: support cxxstd. (#10888) 2019-03-14 16:17:31 +01:00
Elizabeth Fischer
f15f3076db libxaw: added version 1.0.12 (#10591) 2019-03-14 12:55:56 +01:00
Levi Baber
a71664a42d py-pybigwig: needs curl at link time (#10892) 2019-03-14 11:07:50 +01:00
Cody Balos
4025ec9508 sundials: add new version (4.1.0) (#10890) 2019-03-14 11:00:22 +01:00
Nichols A. Romero
ec5bf38245 QMCPACK More CUDA Fixes (#10864)
* Throw InstallError if more than one GPU architecture is passed to cuda_arch. Previous cuda_arch test was not actually working because comparison with none string was on the cuda_arch list instead of the first entry of the list.

* Removing redundant cuda_arch statement.
2019-03-13 16:03:28 -05:00
Eric Martin
2bca687605 py-treehash: Create new package (#10872) 2019-03-13 16:03:09 -05:00
Levi Baber
39c40ee3fc revbayes: new version (#10873) 2019-03-13 21:36:13 +01:00
Michael Kuhn
d3365e4356 libplist, libusbmuxd: Fix pkgconfig dependency (#10876)
pkgconfig is the correct virtual provider.
2019-03-13 14:55:23 -05:00
Michael Kuhn
db79317eb9 cubelib, cubew: Add missing pkgconfig dependency (#10875) 2019-03-13 20:15:02 +01:00
Michael Kuhn
3019068e0c mpich: Add patch to fix node list parsing (#10870)
mpich@3.3 introduced a new regex-based function for node list parsing
that does not recognize hostnames without a dash properly.
2019-03-13 10:58:05 -07:00
Eric Martin
358226b946 py-biomine: new package (#10868) 2019-03-13 15:17:06 +01:00
Eric Martin
6a87b6215f help2man: Add version 1.47.8 and perl runtime dependency (#10862) 2019-03-13 15:11:45 +01:00
Eric Martin
7d50567423 py-advancedhtmlparser: new package (#10867) 2019-03-13 15:06:01 +01:00
Eric Martin
ffbc4f199e fqtrim: Create new package (#10861) 2019-03-12 21:30:30 -05:00
David Hows
c629a6f780 Fix mysqldb1 (#9978)
* Update package.py

* Add MYSQL Package file

* Fixes for linter
2019-03-12 20:57:29 -05:00
Elizabeth Fischer
82e9c01b5c New package: py-mysql-connector (#10327)
* New package: py-mysql-connector

* Fixed docstring

* 1. Determined that py-setuptools was not needed at all, so removed.
2. Added py-protobuf.  Docs seem to imply that only C protobuf library is required; however, the Python setup.py says differently, and some Python code seems to reference protobuf too.  I don't know why this worked for me, but it looks like including py-protobuf is the right thing to do.

* Applied solution detailed in:

https://github.com/mysql/mysql-connector-python/pull/9

Uncommenting this patch will make `error: option --single-version-externally-managed not recognized`  reappear.

* Clean up / reorder lines

* flake8
2019-03-12 20:52:43 -05:00
Tristan Carel
c3662492de Do not use string module to be compatible with python 3 (#248) (#10667)
`string.find` is not part of Python 3 anymore.
2019-03-12 20:34:47 -05:00
Eric Martin
3d7164c13f varscan: set VARSCAN_HOME variable to jar file location (#10744) 2019-03-12 20:29:48 -05:00
Eric Martin
0ebd81bd15 py-pytables: Add hdf5 1.10.x support for versions above 3.4.0 (#10746) 2019-03-12 20:29:24 -05:00
David Poliakoff
d5c3ce790f Update caliper package (#10750)
* Updating Caliper package with a shared lib option

* Tightened version bounds on Caliper package

* Removed testing. Loosened version constraints

* Add Caliper 2.0.1, cleanup dependency specs
2019-03-12 20:28:13 -05:00
Justin Stanley
2bea940e43 find_versions_of_archive: expand link search (#10758) 2019-03-12 20:19:46 -05:00
Nick Forrington
6bda37f542 Fix clearing EnvironmentModifications with python2 (#10791)
* Fix clearing EnvironmentModifications with python2

* Add EnvironmentModifications::clear unit test

Use re-assignment rather than del to clear array

* Fix flake issues
2019-03-12 20:12:51 -05:00
Rob Latham
da28b592fc "Werror" too strict for recent compilers (#10802)
rapidjson gives warnings with gcc-7.3 and branch fall through
2019-03-12 20:10:51 -05:00
Michael Kuhn
65f37746af qt: Use more system dependencies and fix build with new gcc versions (#10817)
qt currently falls back to bundled versions of sqlite, harfbuzz, pcre,
double-conversion and xcb. This adds the appropriate dependencies and
configure arguments. A new variant adds multibyte support to pcre and
pcre2, which is required by qt.

Additionally, newer versions of gcc (starting with @8.3.0) cause build
failures. This adds a patch to fix the problem.

The changes have been tested with all versions of qt currently available
in Spack. 5.2 and 5.3 do not build for reasons that seem to be unrelated
to these changes, though.
2019-03-12 20:04:11 -05:00
健美猞猁
a79230c832 casacore does not support fftw+mpi . (#10839) 2019-03-12 19:59:48 -05:00
健美猞猁
d32a342fc6 Aoflagger: a new package. (#10840)
* A new package: aoflagger.

* aoflagger does not support boost>1.66.0 .

* Add fftw~mpi dependency.

* flake8.

* Flake8.

* Update package heder.

* md5 -> sha256.
2019-03-12 19:59:24 -05:00
Axel Huebl
fd6d3f6b8c openPMD-api: shared variant (#10847)
Add a variant to control shared/static builds (one at a time) and
make shared the default.
2019-03-12 19:58:44 -05:00
Alberto Chiusole
46fb6ed5b6 Revert to manual flag enabling, due to RegCM bug in configure. (#10863)
The configure of RegCM treats --disable-FEATURE as --enable-FEATURE,
so we cannot use enable_or_disable.
2019-03-12 19:48:45 -05:00
Owen Solberg
dc5b16a8e9 added checksum for 20190222 release of gnu parallel (#10865) 2019-03-12 19:40:29 -05:00
Eric Martin
50193229ea py-llvmlite: Add versions 0.26.0 and 0.27.1 (#10866) 2019-03-12 19:40:01 -05:00
Mark W. Krentel
3ed6e78338 New package: ibm-java (#10777)
* Add binary package of the IBM Java SDK for big and little-endian
  powerpc (power7, 8 and 9).  The jdk and openjdk packages only install
  on x86_64.
* Add ibm-java as a java provider
* The jdk and openjdk packages only install on x86_64. Add conflicts
  for ppc64 and ppc64le to jdk and openjdk.
2019-03-12 18:05:47 -05:00
wspear
e1e5eb29d2 Elfutils package: add m4 dependency and version 0.176 (#10834)
* Elfutils requires m4 to build
* Add version 0.176
2019-03-12 17:35:59 -05:00
Robert Pavel
1450fe72fa New package: Draco (#10844) 2019-03-11 20:57:00 -05:00
Matthias Diener
5e68af5a78 scons package: add missing dependency to py-setuptools (#10856) 2019-03-11 20:30:12 -05:00
Jiawei Zhuang
74b33e9f82 OpenMPI: v4.0.0 + Slurm installation error (#10853)
shmemrun and oshrun do not exist in OpenMPI v4.0.0
(ref: https://www.open-mpi.org/doc/v4.0/)

The Spack OpenMPI package was failing the install by trying to
remove them. This guards the removal of several scripts when
using the Slurm scheduler to handle the case where they don't exist.
2019-03-11 20:18:50 -05:00
Michael Kuhn
1e6b13d335 Fix URLs for VI-HPS projects (#10821)
URLs for the opari2, otf2, and scorep packages have changed (although
the checksums are the same)
2019-03-11 20:12:44 -05:00
Stas Sergienko
9ffd508d7c mpich: add psm2 fabric support (#10814)
psm2 is only supported for versions 2.2 and up, so a conflict is
added for earlier versions
2019-03-11 20:10:02 -05:00
健美猞猁
888bb76758 New package: cotter (#10838) 2019-03-11 19:46:40 -05:00
Eric Martin
1d51cdf824 STAR: Add versions 2.7.0d and 2.7.0e (#10831) 2019-03-11 19:44:54 -05:00
Eric Martin
23b73ca982 py-chardet: Add version 3.0.2 (#10827) 2019-03-11 19:44:30 -05:00
Eric Martin
2e47b45d9f py-urllib3: Add version 1.21.1 (#10826) 2019-03-11 19:44:07 -05:00
Greg Sjaardema
204063e21a cgns package: add version 3.4.0 and update hdf5 dependency (#10803)
* Add version 3.4.0
* Update checksums for older versions to sha256
* Require hdf5~mpi when building with ~mpi
2019-03-11 19:43:16 -05:00
Eric Martin
dc0b6a0613 samtools package: Add version 1.5 and htslib 1.5 dependency (#10825) 2019-03-11 19:29:29 -05:00
Alberto Chiusole
2b591653fa hdf5 package: add version 1.10.5 (#10794) 2019-03-11 15:15:03 -05:00
Justin Stanley
46466381b8 py-crossmap: new package at 0.3.3 (#10854) 2019-03-11 15:13:02 -05:00
Michael Kuhn
9425075a23 flex: Apply 2.6.4 patch regardless of gcc version (#10841)
It seems that this is actually a glibc problem and while 2.6.4 builds
without the patch on newer versions of gcc (@8:), it still sometimes
segfaults (as observed during the doxygen build).
2019-03-11 15:12:28 -05:00
Ce Qin
43525d3445 mpich: remove libpciaccess dependency for MacOS (#10795) 2019-03-11 15:06:49 -05:00
Shahzeb Siddiqui
d20b5ce2ec format change and typo in doc (#10848) 2019-03-11 13:19:13 -05:00
Massimiliano Culpo
a42fd7f276 Improved detection of Clang versions (#10316)
Fixes #10191

* Add more regular expressions to detect clang versions that were
  not being picked up
* Add a test for parsing versions from the output of Clang (this
  does not run Clang, but rather uses example outputs from Clang)
* Separate Clang version parsing into its own method (to make it
  easier to test)
2019-03-11 13:15:34 -05:00
Gregory Lee
1fd01af773 added intel 19.0.3 packages (#10835)
* added intel 19.0.3 packages

* added intel 19.0.3 packages
2019-03-11 07:03:24 -07:00
Chris Green
1931bc8b40 Add 2019.{3,4} and patches for pedantic warnings. (#10836) 2019-03-11 09:03:19 -05:00
Chris Green
7e22fdfa21 boost: patch for problem with warnings for 1.69.0. (#10820) 2019-03-11 09:02:50 -05:00
Michael Kuhn
a1c91f3c07 Fix find_headers to also look for C++ headers and Fortran modules (#10798)
Currently, only C headers are considered, causing build failures for
packages depending on, e.g., netcdf-fortran and xerces-c. Additionally,
the regex used to look for the include path component did not consider
word boundaries, causing false matches.
2019-03-08 21:06:22 -06:00
Eric Martin
43b45f4140 breseq package: Add version 0.33.2 and zlib dependency (#10747)
For zlib, also update the `CFLAGS`/`LDFLAGS`
2019-03-08 20:57:00 -06:00
Denis Davydov
c81e68030a intel: add 2019.3 (#10843) 2019-03-08 14:50:58 -08:00
Greg Becker
f4d4322a41 Create option to build compilers as needed (#10761)
* Create option to build missing compilers and add them to config before installing packages that use them
* Clean up kwarg passing for do_install, put compiler bootstrapping in separate method
2019-03-07 17:30:48 -08:00
Christoph Junghans
0d07dea2eb snap: overwrite flags (#10832) 2019-03-07 14:53:04 -07:00
Christoph Junghans
c11e745421 cloverleaf3d: overwrite flags (#10830) 2019-03-07 14:08:52 -07:00
Christoph Junghans
2f7589adc4 cloverleaf: overwrite flags (#10829) 2019-03-07 14:08:36 -07:00
Levi Baber
016945f67a autofact: fix dependency (#10818) 2019-03-07 13:51:40 -06:00
Eric Martin
e750c5af66 trimmomatic package: restrict java dependency to version 8 (#10741) 2019-03-07 13:49:57 -06:00
Tristan Carel
dd6e91fcb6 Nix package: update dependencies (#10646)
* Add 'fiber' as a default library for boost
* Add autoconf/automake etc. dependencies to libseccomp package
* New package: brotli
* New package: editline
* Add brotli, editline, boost dependencies to Nix
2019-03-07 13:32:55 -06:00
Matthias Maiterth
23822e9717 GEOPM package: add version 1.0.0-rc2 (#10737) 2019-03-07 13:18:05 -06:00
Eric Martin
d072a1e0e3 py-sip package: Add version 4.19.3 (#10742) 2019-03-07 13:16:54 -06:00
Eric Martin
435db9d1a5 seqtk package: Add version 1.3 (#10743) 2019-03-07 13:16:20 -06:00
Michael Kuhn
3fb75e1206 flex package: patch for building 2.6.4 with gcc 7 (#10754)
Remove 2.6.3 as preferred version (but keep it available for
building). The latest version (currently 2.6.4) is now preferred
(according to Spack's defaults).
2019-03-07 13:15:47 -06:00
Eric Martin
49e307398b py-certifi: Add version 2017.4.17 (#10828) 2019-03-07 13:09:26 -06:00
Michael Kuhn
2fed84058d py-flake8: Add missing dependencies for @3.7.7 (#10796)
* Update dependencies for py-flake8 when building version 3.7.7
* Add FIXME comment for an example dependency constraint which causes
  concretization to hang
* Add py-entrypoints version 0.3
* Add py-pycodestyle version 2.5.0
2019-03-07 12:50:30 -06:00
健美猞猁
42633e34ab CMake package: update libuv dependency constraints (#10824)
* Add libuv version 1.10.0
* CMake versions before 3.12.0 do not build with libuv version
  1.25.0, so a constraint is added to build earlier versions of
  CMake with libuv version 1.10.x
2019-03-07 12:42:24 -06:00
prs513rosewood
32bbffc869 thrust: add versions 1.9.0-1.9.4 (#10823) 2019-03-07 14:36:59 +01:00
Eric Martin
efdeb860d1 transdecoder package: Add version 5.5.0 and fix up url and installation paths (#10745)
* Add version 5.5.0 and fix installation locations
* URL format has changed as of version 5.5.0
* Update paths created for installation
2019-03-06 20:58:50 -06:00
Eric Martin
45856c3660 bsseeker2 package: Add versions 2.1.8 and 2.1.5 (#10748)
As of version 2.1.8, the url format changed, so also update that
2019-03-06 20:55:06 -06:00
Jeongseok Lee
0e22a94f81 Eigen package: support Spack-external builds using Eigen (#10751)
Update CPATH in setup_environment for Eigen, so that the
Spack-generated module for Eigen will help builds outside of Spack
use the appropriate include prefix for Eigen headers 
(<install_prefix>/include/eigen3/ rather than <install_prefix>/include/)
Note that this only updates the run-time environment, rather than the
build-time environment, so Spack builds depending on Eigen that use
pkgconfig will not be confused by the presence of the Eigen include
directory in CPATH.
2019-03-06 20:48:38 -06:00
Matthias Diener
836f40e30f scons: add version 3.0.4, cleanup URLs (#10806) 2019-03-06 20:39:39 -06:00
HAOCHENG LIU
a3a8ed7234 vtk-m package: turn off mpi support by default (#10755) 2019-03-06 20:34:49 -06:00
健美猞猁
9d880b8838 New package: dysco (#10767) 2019-03-06 20:25:06 -06:00
Greg Sjaardema
c19df8be5d NetCDF package: update constraints on hdf5 mpi support (#10788)
Update NetCDF to require building hdf5 without mpi when NetCDF itself
is built without mpi support.
2019-03-06 20:20:16 -06:00
Satish Balay
35daaa440f omega-h: add version 9.22.2 and update gcc 8 conflict (#10776)
* Versions before 9.22.2 compiler with gcc 8.3 or later
* Added version 9.22.2, which compiles with all gcc 8.x versions
  (including those before 8.3)
2019-03-06 20:10:47 -06:00
Adam J. Stewart
f7223e54ed Make is a required dependency of Spack (#10386)
Update documentation on getting started to mention that a "make"
executable is required to build packages with Spack.
2019-03-06 19:46:54 -06:00
Ryan S. Elliott
39467e4d67 Update kim-api package and add openkim-models-v2 (#10780)
* Replace kim-api package with kim-api-v2, which has different
  versions and removes the 'cmake_args' method
* Add openkim-models-v2 as an extension package
2019-03-06 19:23:05 -06:00
Mark W. Krentel
edecdc3ace libelf: move url to fossies.org (#10815)
* libelf: move url to fossies.org

Libelf is no longer maintained and the original mr511.de web site no
longer exists.  The final release, 0.8.13 from Nov 2009 is still
archived at fossies.org.

Fixes #10757.

* Change the homepage to the FSF entry.
2019-03-06 11:42:44 -08:00
Gregory Lee
10b0251af0 added python 2.7.16 (#10805) 2019-03-06 11:05:32 -08:00
Gregory Lee
86a1230a60 build fixes for util-linux (#10811) 2019-03-06 11:04:53 -08:00
Cameron Stanavige
9f734e0cfd unifycr: dependency changes and new version (#10722)
New release of UnifyCR. Remove unsupported pre-1.0 versions

UnifyCR has had a few dependency changes to make the backend more
efficient. A new pre-release version has been released as well to
mark these changes. Prior versions are no longer supported.
2019-03-06 10:56:20 -08:00
Owen Solberg
ff7cd40ca1 update package rsem (#10813) 2019-03-06 14:57:54 +01:00
Isaac Whitfield
1605368148 libusbmuxd: new package (#10726) 2019-03-06 10:10:02 +01:00
健美猞猁
c5573e660c intel-parallel-studio package: add version cluster.2019.2 (#10782) 2019-03-05 18:08:00 -06:00
健美猞猁
40d66e34d3 New package: pal (#10766) 2019-03-05 17:41:54 -06:00
健美猞猁
063f5b63da New package: erfa (#10763) 2019-03-05 17:40:39 -06:00
Greg Sjaardema
4c493b065c NetCDF package: add version 4.6.3 and update naming (#10786)
* Add NetCDF version 4.6.3
* Naming scheme for artifacts >= 4.6.2 has changed. Add a
  url_for_version function to generate the appropriate URLs
2019-03-05 17:33:47 -06:00
clellsolomon
b72715ed7c Add fzf utility package (#10778)
* Add fzf utility package

* Fix "style checks" errors

- var/spack/repos/builtin/packages/fzf/package.py:32:
  [E226] missing whitespace around arithmetic operator
2019-03-05 17:17:48 -06:00
Michael Kuhn
5758e49c80 gcc package: Add 8.3.0 (#10772) 2019-03-05 17:15:57 -06:00
Gregory Lee
7bd8689f06 openss package: allow all 2.7.x versions (#10807)
Originally the version constraint range had an upper bound of 2.7.15
This allows all 2.7.x versions
2019-03-05 17:14:32 -06:00
Alberto Chiusole
63e172d2ac RegCM: intel FC 'hint', 4.7.0 intel warning, fcflags, fix extensions. (#10797)
This should fix and improve #9934, which was messed up by a fetch from develop
2019-03-05 21:30:53 +01:00
Gregory Lee
bad485a221 various package version updates and build fixes (#10775)
* various package version updates and build fixes
2019-03-05 11:59:47 -08:00
Matthias Diener
c939e36ed9 cantera: make sundials dependency optional (#10764) 2019-03-05 19:58:00 +01:00
Michael Kuhn
c717f56359 ncl: Add 6.6.2 (#10800) 2019-03-05 17:13:51 +01:00
Michael Kuhn
21fb7dadb3 openssl: Add 1.1.1b, 1.1.0j and 1.0.2r (#10779) 2019-03-05 16:26:18 +01:00
Matthias Diener
9ba4d4e2af git-lfs: add version 2.7.1 (#10770) 2019-03-05 16:25:20 +01:00
Greg Sjaardema
d580d2a033 seacas: Update NetCDF version requirement (#10787)
Modified NetCDF requirement to allow NetCDF-4.6.2 and subsequent versions.
2019-03-05 14:05:52 +01:00
Justin Stanley
f19a214a19 libbeagle: add 3.1.2 (#10789) 2019-03-05 14:02:52 +01:00
Peter Scheibel
af4a36c4d9 Header subdirectories for Python and Eigen (#10773)
Fixes #10769 

This updates the .headers property to include header subdirectories
for Python and Eigen (as is recommended by these packages).

#10623 updated the default behavior of .headers.directories to
exclude subdirectories (since this can cause clashes with system
headers). This broke some packages which depended on the old behavior
of .headers.directories: for example if you had
<package-prefix>/include/subdir/ex1.h, .headers.directories would
include <package-prefix>/include/subdir.
2019-03-04 12:36:51 -06:00
Brian Van Essen
0ce1500376 Package Updates for ECP CANDLE Supervisor (#10760)
* Add EQ-R package
* Add Fansi, Pillar, UTF8 (R) packages
* Add new versions for py-mdanalysis, r-cli, r-dplyr, r-pkgconfig,
  r-rlang, r-tibble, stc, and turbine packages
* Add hdf5 support for turbine
* Specify configure directory for stc package
2019-03-01 14:46:13 -06:00
Justin Stanley
c8557ba7d8 blast2go: new package at 5.2.5 (#10725)
* blast2go: new package at 5.2.5

* blast2go: remove redundant url
2019-03-01 12:36:00 -06:00
Matthias Diener
ee5e5ce3c6 new package: intel-pin (#10546) 2019-03-01 12:29:01 -06:00
Justin Stanley
1a8161a982 r-bfastspatial: new package at 0.6.2 (#10734) 2019-03-01 10:18:14 -06:00
Justin Stanley
cbc6a2070a r-bfast: new package at 1.5.7 (#10733) 2019-03-01 10:17:37 -06:00
Justin Stanley
94357a274c bedops: avoid static linking with glibc (#10456) 2019-03-01 10:17:01 -06:00
Justin Stanley
165d8da0c2 blast-legacy: new package at 2.2.26 (#10610)
* blast-legacy: new package at 2.2.26

* blast-legacy: compile from source

* blast-legacy: add missing os.symlink import

* blast-legacy: fix build script interpreter
2019-03-01 10:14:37 -06:00
Justin Stanley
f9947333ca bridger: new package at 2014-12-01 (#10611) 2019-03-01 10:09:23 -06:00
Justin Stanley
c4aba6a204 r-spatial: new package at 7.3-11 (#10728) 2019-03-01 09:57:59 -06:00
Justin Stanley
16af5f31d9 r-nortest: new package at 1.0-4 (#10729) 2019-03-01 09:55:30 -06:00
Justin Stanley
4f1044a072 r-xts: add 0.11-2 (#10730) 2019-03-01 09:54:26 -06:00
Justin Stanley
104a8a1422 r-gdalutils: new package at 2.0.1.14 (#10731) 2019-03-01 09:53:30 -06:00
Justin Stanley
0766e7fbbb r-rgdal: add 1.3-9 (#10732) 2019-03-01 09:52:07 -06:00
Justin Stanley
89f59f7ab0 hyphy: new package at 2.3.14 (#10759) 2019-03-01 09:31:46 -06:00
Patrick Gartung
1d4289afdd This fixes a problem where the placeholder path was not in the first rpath entry.
* Rework of buildcache creation and install prefix checking using the functions introduced in
https://github.com/spack/spack/pull/9199

Instead of replacing rpaths with placeholder and then checking strings, make use of the functions
relocate.is_recocatable and relocate.is_file_relocatable to decide if a package needs the allow-root option.

This fixes a problem where the placeholder path was not in the first rpath entry. This was seen in c++ libraries and binaries because the compiler was outside the spack install base path and always appears first in the rpath.

Instead of checking the first rpath entry, all rpaths have the placeholder path and the old install path (if it exists) replaced with the new install path.

* flake8
2019-03-01 07:47:26 -06:00
Jiawei Zhuang
433cc4a972 Fix sha256 sum for IOR (#10765) 2019-03-01 09:59:36 +01:00
Massimiliano Culpo
e3af8ed454 Added a sub-command to show if packages are relocatable (#9199)
* Added the `spack buildcache preview` sub-command

This is similar to `spack spec -I` but highlights which nodes in a DAG
are relocatable and which are not.

spec.tree has been generalized a little to accept a status function,
instead of always showing the install status

The current implementation works only for ELF, and needs to be
generalized to other platforms.

* Added a test to check if an executable is relocatable or not

This test requires a few commands to be present in the environment.
Currently it will run only under python 3.7 (which uses Xenial instead
of Trusty).

* Added tests for the 'buildcache preview' command.

* Fixed codebase after rebase

* Fixed the list of apt addons for Python 3.7 in travis.yaml

* Only check ELF executables and shared libraries. Skip checking virtual or external packages. (#229)

* Fixed flake8 issues

* Add handling for macOS mach binaries (#231)
2019-02-28 15:36:47 -06:00
Sajid Ali
6d20e938da petsc: add +knl variant 2019-02-28 11:07:04 -06:00
Satish Balay
f8da8dbd0e Trilinos: add release 12.14.1 (#10740)
xsdk: switch from 12.14.0-rc1 to 12.14.1
2019-02-28 11:05:05 -06:00
Michael Kuhn
617c1a3706 Fix shell integration with environment-modules@4 (#10736) 2019-02-28 13:22:44 +01:00
Eric Martin
4e80977506 py-tetoolkit: Add version 2.0.3 (#10749) 2019-02-28 12:59:30 +01:00
Owen Solberg
fac2dbda07 git-lfs: patch Makefile for v2.7.0 (#10720)
Fixes #10702

Same fix merged upstream in git-lfs/git-lfs#3545 -- it may appear
in future release v2.7.2 according to package maintainer.
2019-02-27 16:02:25 -06:00
Adam J. Stewart
a25edb51a9 Fix 'make test' detection when LANG is not in English (#10499) 2019-02-27 14:01:50 -06:00
Justin Stanley
2f4f828b45 wtdbg2: new package (#10639)
* wtdbg2: new package at 2.3

* wtdbg2: flake8 fix
2019-02-27 13:27:45 -06:00
Michael Kuhn
b1a04b7699 mpich: Improve package (#10643)
- Add missing pkg-config, libpciaccess and libxml2 dependencies
- Add slurm variant for nodelist parsing
- Add missing configure flag for libfabric
- Unset F90 and F90FLAGS
- Allow selecting different PMI interfaces
2019-02-27 13:13:44 -06:00
Paschalis Korosoglou
ab499a958d otf2 package: fix download URL (#10735) 2019-02-27 12:47:56 -06:00
Gregory Lee
d60106a3f6 Add newer versions for 51 Python packages (#10738) 2019-02-27 12:45:28 -06:00
Massimiliano Culpo
7eec038690 Update environment-modules package (#10717)
The environment modules package has been updated to include 
versions up to 4.0.0. The url of the package and the homepage
have been updated accordingly.

The `spack bootstrap` command now builds version 3.2.10 of
the environment-modules package, and will do until #10708 
is fixed.
2019-02-27 14:00:46 +01:00
Isaac Whitfield
5efff5d2fc new package: libusb (#10682) 2019-02-26 20:52:47 -06:00
Isaac Whitfield
938939b7e4 new package: libtasn1 (#10681) 2019-02-26 20:52:04 -06:00
Nichols A. Romero
d9b7c1faea QMCPACK package: cuda/hdf5 fixes (#10701)
* Make use of new QE multi-valued HDF5 variant interface
* Remove explicit CUDA dependency (which is handled by inheriting
  from CudaPackage)
* Update cuda_arch unset variant check
2019-02-26 20:50:32 -06:00
Satish Balay
c11f598e0b petsc: add version 3.10.4 (#10724) 2019-02-26 20:41:33 -06:00
Justin Stanley
cbecf9f555 new package: phred (#10700)
Part of the software collection introduced in #10529. Developers must
be contacted via email to receive the source code.
2019-02-26 19:14:58 -06:00
Isaac Whitfield
fbdbed1180 new package: libplist (#10680)
Dependency of Google's Flutter toolchain.
2019-02-26 19:12:41 -06:00
Justin Stanley
df4b77f120 libbeagle package: add cuda support (#10650)
libbeagle compiles against CUDA by default but no there is no mention
of it in the package recipe. This PR adds explicit cuda paths and
variants, and fixes the target architecture as well (for those who
don't have compute_13)
2019-02-26 18:50:08 -06:00
Michael Kuhn
0adf1b5405 vampirtrace: patch for new mpich and openmpi versions (#10665) 2019-02-26 18:48:14 -06:00
Phil Tooley
018ae371d6 new package: routino (#10679) 2019-02-26 18:41:44 -06:00
Janne Blomqvist
312122f169 Don't try to build TARGET=PILEDRIVER on aarch64
Piledriver is a codename for an AMD x86-64 processor, it can't
possibly make sense to compile for that if the architecture is
aarch64.
2019-02-26 18:40:39 -06:00
Neil Flood
2831184e41 kealib package: add version 1.4.11 (#10706) 2019-02-26 18:39:27 -06:00
Daryl W. Grunau
ecd98d1953 eospac package: add version 6.4.0 (#10718) 2019-02-26 18:38:52 -06:00
Justin Stanley
ba2ed96513 beast2 package: add version 2.5.2 (#10723) 2019-02-26 18:38:21 -06:00
Nichols A. Romero
5aa6cbf437 Quantum ESPRESSO package: Serial HDF5 Bug Fix (#10689)
Serial HDF5 in serial QE only works in develop version. This adds
a conflict to the QE package to prevent Spack from trying to build
specs which don't satisfy this constraint.
2019-02-26 18:36:50 -06:00
Massimiliano Culpo
42386dbe94 Use Package.headers for -I options (#10623)
This restores the use of Package.headers when computing -I options
for building a package that was added in #8136 and reverted in
#10604. #8136 used utility logic that located all header files in
an installation prefix, and calculated the -I options as the
immediate roots containing those header files.

In some cases, for a package containing a directory structure like

  prefix/
    include/
	  ex1.h
	  subdir/
	    ex2.h

dependents may expect to include ex2.h relative to 'include', and
adding 'prefix/include/subdir' as a -I was causing errors,
in particular if ex2.h has the same name as a system header.

This updates header utility logic to by default return the base
"include" directory when it exists, rather than subdirectories.
It also makes it possible for package implementers to override
Package.headers to return the subdirectory when it is required
(for example with libxml2).
2019-02-26 12:42:30 -06:00
Justin Stanley
ad25e7f3b0 r-vfs: new package at 1.0.2 (#10697) 2019-02-26 12:21:12 -06:00
Justin Stanley
68318ab076 r-nleqslv: new package at 3.3.2 (#10696) 2019-02-26 12:19:48 -06:00
Daniel Topa
c832479c65 Add libhio v1.4.1.3, 1.4.1.1 (#10699)
- Switch all libhio tarball listings to sha256 checksums
- Correct typo in alert message in /lib/spack/spack/util/module_cmd.py: fucntion -> function

https://github.com/hpc/libhio/releases
Released 2019-02-01

Verification builds on LANL Darwin:

**Intel Xeon**
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                40
On-line CPU(s) list:   0-39
Thread(s) per core:    2
Core(s) per socket:    10
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Model name:            Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz
Stepping:              2
CPU MHz:               1198.779
CPU max MHz:           3300.0000
CPU min MHz:           1200.0000
BogoMIPS:              5193.70
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              25600K
NUMA node0 CPU(s):     0-9,20-29
NUMA node1 CPU(s):     10-19,30-39
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti intel_ppin tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts
`
[+] /scratch/users/dantopa/new-spack/strawman.pr.libhio/opt/spack/linux-centos7-x86_64/gcc-4.8.5/libhio-1.4.1.3-s4fnmesfp65trhks5qi3it5p73ssfpsp
[+] /scratch/users/dantopa/new-spack/strawman.pr.libhio/opt/spack/linux-centos7-x86_64/gcc-4.8.5/libhio-1.4.1.2-fkgh5vqpijvwqywffmokgmsglqxwfrtl
`

**Arm**
Architecture:          aarch64
Byte Order:            Little Endian
CPU(s):                256
On-line CPU(s) list:   0-255
Thread(s) per core:    4
Core(s) per socket:    32
Socket(s):             2
NUMA node(s):          2
Model:                 0
BogoMIPS:              400.00
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              32768K
NUMA node0 CPU(s):     0-127
NUMA node1 CPU(s):     128-255
Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm
`
[+] /scratch/users/dantopa/new-spack/strawman.pr.libhio/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/libhio-1.4.1.3-q6nnwiy6bi7ktnghdsngwamom23zpmgy
[+] /scratch/users/dantopa/new-spack/strawman.pr.libhio/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/libhio-1.4.1.2-y6nwovff3qbdy242zc4x2toloz6xpcvm
`

2019-02-25

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2019-02-26 09:56:20 +01:00
Adam J. Stewart
a75a6ee1b7 Add /hash to spack help --spec (#10691)
* Add /hash to spack help --spec
* Make /hash gray, add ^/hash
2019-02-25 16:20:28 -08:00
Stephen Hudson
7c38dc06dc libEnsemble package: add v0.4.1 (#10688)
Also add v0.4.0 and remove version lower bound on petsc4py
2019-02-25 14:37:51 -06:00
Michael Kuhn
385d108b5d slurm: Add PMI support (#10683)
- Add support for pmix (optional)
- Install pmi2 header and library
2019-02-25 13:05:31 -06:00
Elsa Gonsiorowski, PhD
d85a0bae8f mpiFileUtils v0.9 (#10676)
* working on updating to cmake

* generic package, any ver of cmake

* install for autotools or cmake
2019-02-25 09:24:52 -08:00
Hadrien G
236180c109 ACTS: new package (#10600) 2019-02-25 11:11:01 +01:00
Sinan
691a2f4b71 py-unicycler: new package (#7727) 2019-02-25 09:44:05 +01:00
Denis Davydov
2851b3f57c dealii: fix default of cuda_arch (#10690) 2019-02-24 08:53:13 +01:00
Adam J. Stewart
b43e8fcaa7 Python: optional dependencies and post-installation tests (#10335)
* Add post-installation tests to Python package

* libbsd does not build on macOS

* Make Python dependencies optional

* Add readline dep, remove ncurses patch, fix autoreconf
2019-02-23 12:36:26 -06:00
Justin Stanley
68af6148d1 beast-tracer: new package at 1.7.1 (#10652) 2019-02-22 19:22:30 -06:00
Levi Baber
0e7b19adf4 stacks package: add version 2.3b (#10653) 2019-02-22 19:16:44 -06:00
Brian Spilner
ba70d6e706 cdo package: add version 1.9.6 (#10654) 2019-02-22 18:38:35 -06:00
Geoffrey Oxberry
219c17a340 automake package: add version 1.13.4 (#10662)
Also replace MD5 hashes with SHA256 hashes for older versions
2019-02-22 18:38:00 -06:00
Eric Martin
49f56cb49c gmap-gsnap package: Add version 2019-02-15 (#10677) 2019-02-22 18:36:40 -06:00
Axel Huebl
7bd960ba86 ADIOS package: add version 2.3.1 (#10666)
Update older md5 checksums to sha256. Require CMake >= 3.6.0 (updated
from 3.5.0). Remove some third-party depends_on statements (which
were commented out before).
2019-02-22 18:36:04 -06:00
Hadrien G
510a28d156 Gaudi package: new version + xenv bugfix (#10668)
Extract implicit xenv dependency into a new package and add it as an
explicit dependency. Update Gaudi to explicitly depend on older
versions of xenv rather than the latest develop because that
conflicts with Spack's compiler wrappers.
2019-02-21 19:04:03 -06:00
cedricchevalier19
3b10e450d2 mono package: add new versions (#10670) 2019-02-21 18:52:30 -06:00
Daniel Topa
e230b0a00f UCX package: add version 1.5.0 (#10678) 2019-02-21 18:22:32 -06:00
Peter Scheibel
98f1c9a291 CPATH warning: downgrade to debug message (#10675)
Spack warns users when a dependency package updates CPATH. This
warning message is generating bug reports and alarm in cases where
there is no problem. For now this downgrades the warning message to
the debug level, so it only shows up if something goes wrong for the
user and they ask for more information from Spack.
2019-02-21 17:26:38 -06:00
Daryl W. Grunau
4f5be841d4 gcc package: skip nvptx_install for gcc~nvptx (#10672)
The nvptx installation support phase (added in 040b658) was always
running for gcc regardless of whether +nvptx was enabled. This
removes the "@when" syntax (which apparently is not working) and
adds a check inside of the "nvptx_install" function to bail out if
+nvptx is not enabled.
2019-02-21 15:43:29 -06:00
Scott Wittenburg
5600c9f0d9 release workflow: Add build scripts for jobs and means to upload pkgs 2019-02-21 15:37:35 -06:00
Scott Wittenburg
a6e8e889b2 release workflow: Add spack command for generating the .gitlab-ci.yml
This spack command adds a new schema for a file which describes the
builder containers available, along with the compilers availabe on
each builder.  The release-jobs command then generates the .gitlab-ci.yml
file by first expanding the release spec set, concretizing each spec
(in an appropriate docker container if --this-machine-only argument is
not provided on command line), and then combining and staging all the
concrete specs as jobs to be run by gitlab.
2019-02-21 15:37:35 -06:00
Scott Wittenburg
05cdb5a0bb docker: Add Dockerfiles for images needed by AWS gitlab-runners
The built images are set up with fairly recent versions of gcc and
clang:

  - centos_7:     [ gcc@5.5.0 (built from src), clang@6.0.0 (spack-built from src) ]
  - ubuntu_18.04: [ gcc@5.5.0 (system), clang@6.0.0-1ubuntu2 (system) ]
2019-02-21 15:37:35 -06:00
Scott Wittenburg
fce1c4133f buildcache: Add sub-commands needed by release workflow
Adds four new sub-commands to the buildcache command:

1. save-yaml: Takes a root spec and a list of dependent spec names,
along with a directory in which to save yaml files, and writes out
the full spec.yaml for each of the dependent specs.  This only needs
to concretize the root spec once, then indexes it with the names of
the dependent specs.

2. check: Checks a spec (via either an abstract spec or via a full
spec.yaml) against remote mirror to see if it needs to be rebuilt.
Comparies full_hash stored on remote mirror with full_hash computed
locally to determine whether spec needs to be rebuilt.  Can also
generate list of specs to check against remote mirror by expanding
the set of release specs expressed in etc/spack/defaults/release.yaml.

3. get-buildcache-name: Makes it possible to attempt to read directly
the spec.yaml file on a remote or local mirror by providing the path
where the file should live based on concretizing the spec.

4. download: Downloads all buildcache files associated with a spec
on a remote mirror, including any .spack, .spec, and .cdashid files
that might exist.  Puts the files into the local path provided on
the command line, and organizes them in the same hierarchy found on
the remote mirror

This commit also refactors lib/spack/spack/util/web.py to expose
functionality allowing other modules to read data from a url.
2019-02-21 15:37:35 -06:00
Todd Gamblin
be4b95ee30 add CombinatorialSpecSet class for taking cross-products of Specs.
- add CombinatorialSpecSet in spack.util.spec_set module.
  - class is iterable and encaspulated YAML parsing and validation.

- Adjust YAML format to be more generic
  - YAML spec-set format now has a `matrix` section, which can contain
    multiple lists of specs, generated different ways. Including:
    - specs: a raw list of specs.
    - packages: a list of package names and versions
    - compilers: a list of compiler names and versions

  - All of the elements of `matrix` are dimensions for the build matrix;
    we take the cartesian product of these lists of specs to generate a
    build matrix.  This means we can add things like [^mpich, ^openmpi]
    to get builds with different MPI versions.  It also means we can
    multiply the build matrix out with lots of different parameters.

- Add a schema format for spec-sets
2019-02-21 15:37:35 -06:00
Jordan Ogas
ad8036e5a2 add charliecloud 0.9.7 (#10661) 2019-02-21 09:58:37 +01:00
Levi Baber
040b65876b gcc: add nvptx offload capability (#9406)
Add optional support for Nvidia PTX
2019-02-20 20:52:15 -06:00
Adam J. Stewart
af8d84197d Download GNU packages from mirrors (Part 2) (#10555) 2019-02-20 09:08:42 -06:00
Massimiliano Culpo
0a252eccc4 uvw: new package (#10645) 2019-02-20 13:53:07 +01:00
Ben Morgan
fb6a2b5cab xxhash: edit prefix in Makefile for macOS (#10606)
On macOS, the build of libxxhash is performed by a bare `make`
launched by `MakePackage`s default `build` phase. As `prefix`
is not set at this point, the library gets compiled with a hard-coded
install name of `/usr/local/libxxhash.dylib`. Downstream clients,
in the tested case Root, will then fail to build as the install name
is incorrect.

Move setting of `prefix` from `install` to `edit` so that it
propagates to subsequent `build` and `install` phases.
2019-02-20 10:55:09 +01:00
Isaac Whitfield
286da7f47b new package: libyaml (#10634) 2019-02-19 12:45:31 -06:00
Nichols A. Romero
7dd5bdcfa4 Quantum ESPRESSO: HDF5 update (#10607)
* QE hdf5 is now a multi-valued variant. Update conflicts accordingly.

* Update dependencies for hdf5 multi-valued variant. Bug fix:  high-level hdf5 library needs to be a hard dependecy.

* Support for HDF5 serial interface. Note that this is not supported in QE autoconf, but will be fixed in the next official release.
2019-02-19 17:07:27 +01:00
Tristan Carel
efc3406900 nix: new package added (#9171) 2019-02-19 15:27:39 +01:00
Rob Latham
2242b9f338 update IOR package (#10595)
- new GitHub home
- new 3.2 release
2019-02-19 12:10:17 +01:00
Andreas Baumbach
66bfad8d44 cquery: new package (#10636) 2019-02-19 11:30:41 +01:00
Andreas Baumbach
9e3d92692d connect-proxy: new package (#10635) 2019-02-19 11:30:09 +01:00
Michael Kuhn
bcee3efecd mvapich2: Improve package (#10642)
- Add support for nemesis:ofi netmod
- Add missing pkg-config and libxml2 dependencies
2019-02-19 11:02:02 +01:00
Elizabeth Fischer
ec4da14e2c Add comments and version (#10592) 2019-02-18 21:48:01 -06:00
Matthias Diener
aabd2be31a git-lfs: add version 2.7.0 (#10631) 2019-02-18 08:59:11 +01:00
Axel Huebl
899c83c215 openPMD-api: mpi4py support (#10616)
Refactor dependencies, increase new min versions, add
mpi4py variant.
2019-02-18 08:54:27 +01:00
Axel Huebl
e5dc5c173e NLohmann-JSON: v3.5.0 (#10615)
Add the latest bugfix release.
2019-02-18 08:53:50 +01:00
Axel Huebl
a4f9501a56 Catch2: v2.6.1 (#10613)
add the lastest bugfix release of Catch2
2019-02-18 08:53:33 +01:00
Nichols A. Romero
05269ad392 Update CUDA support in QMCPACK (#10587)
* Support in QMCPACK for CUDA_ARCH flag.

* No need to have explicit CUDA variant anymore.

* Internal QMCPACK CMake assumes a minimum GPU architecture if none is provided.
2019-02-17 08:17:58 -05:00
Hadrien G
a93581e8de Fix plural typo in ROOT package (#10614) 2019-02-16 21:22:23 +01:00
Omar Padron
67415a1875 [Docker] more base images (#10560)
* Revert "work around an issue with docker/dockerhub (#10547)"

This reverts commit 0ef139ac4d.

* Add more docker base image configurations.

 - Renamed configs

   - "centos" -> "centos-7"
   - "fedora" -> "fedora-24"
   - "opensuse" -> "opensuse-tumbleweed"
   - "scilinux" -> "scilinux-7"
   - "ubuntu" -> "ubuntu-1804"

 - Added configs

   - "centos-6"
   - "fedora-29"
   - "opensuse-leap"
   - "scilinux-6"
   - "ubuntu-1604"

With these changes, our docker hub image
collection will consist of the following:

 - "spack/archlinux"
   - "latest"
 - "spack/centos"
   - "latest", "centos7", "7"
   - "centos6", "6"
 - "spack/fedora"
   - "latest", "29"
   - "24"
 - "spack/opensuse"
   - "latest", "tumbleweed"
   - "leap"
 - "spack/scilinux"
   - "latest", "7"
   - "6"
 - "spack/ubuntu"
   - "latest", "bionic", "18.04"
   - "xenial", "16.04"
2019-02-16 10:20:25 -05:00
Peter Scheibel
32ba471816 Dependency libs: filter system paths and always add lib dir (#10622)
Fixes #10617
Fixes #10624
Closes: #10619

#8136 dependended entirely on spec.libs to retrieve library directories
from dependencies. By default this function only retrieves libraries if
their name is something like lib<package> (e.g. "libfoo.so" for a
package called "Foo"). This unconditionally adds lib/lib64 directories
for each dependency as link/rpath directories. 

This also filters system paths from link/rpaths/include directories and
removes duplicated paths that #8136 could add.
2019-02-15 17:21:35 -06:00
Javier Cervantes
9b1690641b Fix bug getting specs from build caches (#9600) 2019-02-15 13:33:49 -06:00
Scott Wittenburg
75487dca44 CDash: allow installing from spec.yaml (#10565)
If the -f <specyamlfile> argument to install is used (rather than
providing package specs on the command line), CDash throws an exception
due to missing the installation command (the packages targeted for
install).  This fixes that behavior so CDash reporting succeeds in
either case.
2019-02-14 17:43:53 -06:00
Cameron Smith
a06bf21610 new variant: simmodsuite for pumi (#8775) 2019-02-14 21:36:56 +01:00
Massimiliano Culpo
1ec0d4feb3 Removed pkg.headers.directories from the include list (#10604)
fixes #10601

Due to a bug this attribute is wrong for packages that use directories
as namespaces. For instance it will add "<boost-prefix>/include/boost"
instead of "<boost-prefix>/include" to the include path.

As a minor addition a few loops in the compiler wrappers have been
simplified.
2019-02-14 08:35:41 -08:00
Massimiliano Culpo
b3dd95bd62 cp2k is now a MakefilePackage (#10570)
* cp2k: archive the Makefile after a successful installation

* cp2k: all checksums are now sha256

* libint: all checksums are now sha256 + added versions 2.4.X

* libxc: all checksums are now sha256 + added version 4.3.2

* cp2k: os.path.join instead of join_path + simplified openmp flags

* cp2k: turned into a MakefilePackage

* cp2k: refactored edit method so that Makefile writing happens last
2019-02-14 07:11:20 +01:00
Chris Green
051c66335f pythia6: fix input verification issue and example data checksum. (#10563)
* pythia6: fix issue validating integer input.

* pythia6: account for apparent update of example data file.
2019-02-13 23:17:46 -06:00
Chris Green
24d7f0f0af xrootd: allow specification of C++ standard. (#10577)
* xrootd: add cxxstd variant.

* xrootd: support for recent and upcoming versions.
2019-02-13 23:17:10 -06:00
Ben Morgan
7e8b8d61a1 icu4c: Add cxxstd variant (#10552)
* icu4c: Add cxxstd variant

For versions supported in Spack, ICU4C defaults to the C++11.
Provide a variant to default to this, plus options for C++14
and 17 if dependees require for ABI compatibility.

* icu4c: cxxstd variant cannot be multi
2019-02-13 23:05:39 -06:00
Hadrien G
6e95e06bda Add Gaudi and RELAX packages (#9194)
* Add a RELAX package

* Add a Gaudi package
2019-02-13 23:04:38 -06:00
Hadrien G
54f94e5828 Add a DD4hep package (#9208) 2019-02-13 22:58:27 -06:00
Hadrien G
0e0e7d4137 Add new ROOT release, move to SHA-256 checksums (#10583) 2019-02-13 22:54:45 -06:00
Patrick Gartung
0748a32b2d Updated Geant4 and dependencies clhep and vecgeom to use cxxstd= variant (#10518)
* Updated Geant4 and dependencies clhep and vecgeom to use cxxstd= variant so that it is applied consistently.

* Make standalone geant4 data packages that are used when data is not installed with geant4. This allows installing the data files are externals that can be common to many compiler version.

* move geant4 data package dependencies to umbrella package geant4-data
2019-02-13 22:51:26 -06:00
Phil Carns
6971f8ae32 make SPACK_SHELL detection more robust (#9712)
Spack shell detection in setup-env.sh was originally based on
examining the executable name of $$ (from "ps"). In some cases this
does not actually give the name of the shell used, for example when
setup-env.sh was invoked from a script using "#!". To make shell
detection more robust, this adds a preliminary check for shell
variables which indicate that the shell is bash or zsh; the
executable name of $$ is retained as a fallback if those variables
are not defined.
2019-02-13 19:52:18 -06:00
Peter Scheibel
8ca384875e Dynamic library/include paths (#8136)
Fixes #7855
Closes #8070
Closes #2645

When searching for library directories (e.g. to add "-L" arguments to
the compiler wrapper) Spack was only trying the "lib/" and "lib64/"
directories for each dependency install prefix; this missed cases
where packages would install libraries to subdirectories and also was
not customizable. This PR makes use of the ".headers" and ".libs"
properties for more-advanced location of header/library directories.
Since packages can override the default behavior of ".headers" and
".libs", it also allows package writers to customize.

The following environment variables which used to be set by Spack
for a package build have been removed:

* Remove SPACK_PREFIX and SPACK_DEPENDENCIES environment variables as
  they are no-longer used
* Remove SPACK_INSTALL environment variable: it was not used before
  this PR
2019-02-13 17:38:14 -06:00
Peter Doak
1bf86292e1 add latest version of pixman (#10580) 2019-02-13 21:26:51 +01:00
Hadrien G
9374adb455 Eigen package: deactivate some dependencies (#10572)
Set defaults in eigen package to omit typically-unused dependencies
2019-02-13 13:33:01 -06:00
Brian Van Essen
406a242847 Update lbann sw stack dependencies (#10579)
* Added a package for the MDAnalysis toolkit.

* Updated LBANN, Hydrogen, and Aluminum to not require CUDA-aware MPI
even when using CUDA.  Fixed small bugs within both LBANN and Hydrogen
packages.  Added requirements for breathe and cereal to LBANN.

* Update use case for doc dependencies.

* Cleaning up some of the LBANN software stack dependencies.
2019-02-13 11:19:15 -08:00
abernede
89727ba4e7 Bug Fix in permission setter (#10584)
* fix permission setter

Fix a typo in islink test when applied to files.

* os.walk explicitly set not to follow links

The algorithm strongly rely on not following links.
2019-02-13 11:18:36 -08:00
sknigh
a76c50d1ee Allow tty output to be timestamped (#10554)
* Spack debug output now includes microsecond-granularity timestamps.
* Timestamps can also be enabled with the `--timestamp` command line argument.
2019-02-13 10:14:35 -08:00
健美猞猁
2202579685 Cnvnator: a new package. (#8959) 2019-02-13 11:15:00 +01:00
Matthias Wolf
861dd06bd1 enh: allow time like HH:MM in date strings. (#10034) 2019-02-13 11:05:00 +01:00
George Hartzell
f65a1155e1 Enhancement to module autoload documentation (#10310)
* Note that `none` is the default for lmod autoload

Save a bit of confusion by *explicitly* pointing out that `none` is
the default value for autoload in the lmod module file generator.

* Add a tip re building software externally

Add a tip about using `autoload: all` when building packages outside
of the tree that use artifacts (e.g. libraries, includes) within the
tree.
2019-02-12 22:02:13 +01:00
Chris Green
05f565356f Allow secondary generators when building with CMake. (#9324)
CMake supports the notion of secondary generators which provide extra
information to (e.g.) IDEs over and above that normally provided by
the primary generator. Spack only supports the 'Unix Makefiles' and
'Ninja' primary generators but was not parsing out the primary
generator when a secondary generator was also included (e.g. for
a generator attribute like 'Codeblocks - Ninja'). This adds a regex
for extracting the primary generator for validation.

Since the secondary generator is irrelevant to a Spack build, it is
passed on to CMake without further validation.
2019-02-12 12:39:19 -06:00
健美猞猁
f9c27f52bd casacore: new package (#7471) 2019-02-12 17:22:48 +01:00
Ben Morgan
8fd4e9a9fa xerces-c: Add cxxstd variant (#10561)
Add variant to support compiling against main C++ standards if needed
for ABI compatibility. Use 'default' value as Xerces-C autoconf system
does not enforce a minimum, or set a default, C++ standard.
2019-02-12 09:40:59 +01:00
Brian Van Essen
dc12ca5c76 lbann: updated versions (#10568) 2019-02-12 09:05:32 +01:00
Matthias Diener
068eefb4f5 remove remaining lzma dependencies (#10553) 2019-02-12 09:03:50 +01:00
Matthias Diener
6e38423d1c openssl: add version 1.1.1a (#10562) 2019-02-12 08:58:50 +01:00
Omar Padron
0ef139ac4d work around an issue with docker/dockerhub (#10547)
* try to workaround an issue with docker/dockerhub
* apply workaround only when running in travis
2019-02-08 16:39:40 -08:00
Javier Cervantes
36ebd7462c root package major update (#8428)
* Extend current recipe for root package
* Add removed old version
* Add dependency type for Python and R packages
* Add compiler variants
* Adding new root version: 6.14.00
* Add back the minimum cmake version required
* LZ4 and xxhash support for old (using builtin options) and new versions (external packages)
* Set PYTHONPATH in setup_environment
* Address typos and issues pointed by HadrienG2
* Add newer ROOT versions
* Solve support for asimage
* Define incompatible variants
* Organize old dependencies
* Add support for minuit
* Add support for pythia6
* Remove unneeded list_url
* Update license header
* Remove block of commented old dependencies
* Contrain Qt version
* Comment pythia8 variant/dependency, not supported by spack
* Force not to build pythia8
2019-02-08 09:17:07 -08:00
Matthias Diener
ff67009161 libarchive: remove lzma dependency (#10517)
lzma was last updated in 2008 and has compilation
issues on some platforms. The format has been superceded
by xz (see e.g. https://tukaani.org/xz/).
2019-02-08 16:33:13 +01:00
Denis Davydov
5623ac3d6b CudaPackage: fix wrong version range (#10551) 2019-02-08 16:32:43 +01:00
Robert Blake
a55fc5b963 Adding a package for cardioid. (#10448)
* Adding a package for cardioid.

* Changing package to pass flake8

* Removing template leftovers per @ax3l 's advice

* Adding a homepage so tests pass.

* Removing whitespace for flake8

* Changing the name of master branch to match spack standards.
2019-02-08 11:17:26 +01:00
Michael Kuhn
84bc2a4215 meson: add 0.49.1 and disable rpath stripping (#10463)
rpath stripping breaks (at least) the gtkplus build because at-spi2-atk's
dependencies can not be found.
2019-02-08 11:15:49 +01:00
Peter Scheibel
d8746d596e bug report template: suggest --stacktrace instead of -s (#10548)
1137b18 removed the -s option from spack such that to see a stack
trace you must pass the --stacktrace option. The bug report templates
were not updated accordingly.
2019-02-07 21:06:57 -06:00
Piotr Luszczek
f093515002 netlib-scalapack package: add CMake test patch (#10452)
Add patch to fix Fortran mangling in CMake test

This is a fix for builds with GCC 6/7/8 and CMake 2/3. It includes
a link to the issue where this is reported. For now, the Spack
package applies the patch to all releases >= 2.0.2
2019-02-07 20:58:27 -06:00
Justin Stanley
ec6de8326e repeatmasker package: add variant for cross_match engine (#10534) 2019-02-07 16:53:30 -06:00
wspear
76feb0205d New package: py-jupyterhub (#10461)
This package depends on both python 3.5+ and node-js which depends on
python 2.7/2.8 to build. Currently it can only be installed if the
node-js package's python dependency is manually removed, so node-js
will build with python found on the system rather than provided by
spack. Upcoming commits may allow spack to reconcile this
automatically.
2019-02-07 16:47:46 -06:00
Justin Stanley
ef89ae03bc mirdeep2 package: make sure bins are executable (#10515) 2019-02-07 13:05:19 -06:00
mathsen
570af0c313 Trilinos package: update superlu-dist dependency (#10511)
Trilinos master branch gets the latest superlu-dist (currently 6.1.0)
2019-02-07 12:58:45 -06:00
Massimiliano Culpo
58f1dc037a log-parse: fix error message when no error lines are found (#10543) 2019-02-07 12:19:19 -06:00
Satish Balay
b8684b318c petsc: petscvariables is used from user makefiles - so it should not have spack compilers listed (#10365) 2019-02-07 09:09:23 -06:00
Satish Balay
1d71a5ea57 petsc4py and libensemble: add @develop dependencies (#10539)
* py-petsc4py: add @develop

* py-libensemble: add @develop dependency on py-petsc4py@develop
2019-02-07 09:06:31 -06:00
Satish Balay
0ad1b2a2c8 petsc@xsdk-0.2.0: fix sowing dependency (#10535) 2019-02-07 09:05:43 -06:00
Satish Balay
753fec39ae xsdk@develop fixes (#10521)
* xsdk@develop: switch trilinos from @master to @develop

* xsdk@develop: dtk - fix trilinos dependency on dtk.
 - dkt-3.0 should be used with trilinos-12.4*
 - dtk/master should be used with trilinos@develop
2019-02-07 09:05:14 -06:00
Justin Stanley
09a884322f orthofiller: new package at 1.1.4 (#10373) 2019-02-07 10:22:36 +01:00
Gregory Lee
f0cb4580d1 fixed checksum (#10393) 2019-02-07 10:20:45 +01:00
Levi Baber
af7f1bb3ca new package: perl logger simple (#10509) 2019-02-07 10:19:07 +01:00
Levi Baber
07b5a6a512 perl-file-homedir: new package (#10533) 2019-02-07 10:09:20 +01:00
Levi Baber
4679c11098 py-biopython: new version (#10532) 2019-02-07 10:08:45 +01:00
Matthias Diener
d4d402586c cmake: add version 3.13.4 (#10538) 2019-02-07 09:15:32 +01:00
Justin Stanley
401d305f4e phrap-crossmatch-swat: new package at 1.090518 (#10529) 2019-02-06 19:13:44 -06:00
Mario Melara
5bc71f07dd Add x86_64 as target to cray platform (#10369)
Add x86_64 as a target for the Cray platform, and also designate it
as the default front_end target.
2019-02-06 17:49:00 -06:00
Owen Solberg
cdbaf8dfc5 mafft package: add version 7.407 (#10488) 2019-02-06 13:55:16 -06:00
Matthias Diener
6dbc1afe45 jdk package: add version 1.8.0_202 (#10536) 2019-02-06 13:54:02 -06:00
Levi Baber
0cf0fd47c8 New package: perl-object-insideout (#10508) 2019-02-06 13:53:33 -06:00
Matthias Wolf
5281403fb2 fmt package: fix cmake arguments (#10500) 2019-02-06 13:52:49 -06:00
Stephen Herbein
b028e99cac py-black: add new package 2019-02-06 13:50:04 -06:00
Stephen Herbein
4e92974ed1 py-toml: add latest version and update checksums to sha256
A version >= 0.9.4 required for py-black.  Added latest, which is
0.10.0.  Manually verified that the .tar.gz for v0.9.3 used to generate
the sha256 matched the previous md5.
2019-02-06 13:50:04 -06:00
Matthias Diener
bdabdb85ed curl package: add version 7.63.0 (#10516) 2019-02-06 13:48:36 -06:00
Douglas Duckworth
d053eac538 py-multiqc: add version 1.7 (#10520)
Added sha256 for py-multiqc as well as require py-matplotlib < v 3.0
2019-02-06 13:47:59 -06:00
Levi Baber
1a34bebe79 genemark et package: add version 4.38 (#10519)
Also add heu_dir to bin/
2019-02-06 13:46:35 -06:00
Jon Rood
11c52c3bf7 Paraview package: update PYTHONPATH for dependents (#10501)
Add vtkmodules directory to PYTHONPATH in Paraview for Trilinos
2019-02-06 12:45:14 -06:00
Daniel Topa
d9d75635c7 Add Python 3.7.2 updated (#10531)
Also add versions 3.7.1, 3.6.8, 3.6.7, 3.6.6. Does NOT alter preferred version (2.7.15).

Supplants PR 10491 "Add Python 3.7.2" (https://github.com/spack/spack/pull/10491).

Verification builds on LANL Darwin:

**Intel Xeon**
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/general/opt/spack/linux-centos7-x86_64/gcc-4.8.5/python-3.7.2-d3p7vg6w2r563cpmwsmbgjbsiqc4j4fq
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/general/opt/spack/linux-centos7-x86_64/gcc-4.8.5/python-3.7.1-ibom6qj2z64egyaqz5htkwp5tr362il6
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/general/opt/spack/linux-centos7-x86_64/gcc-4.8.5/python-3.6.8-rkifc3c7mjgdglw27upiap767ut4wpkz
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/general/opt/spack/linux-centos7-x86_64/gcc-4.8.5/python-3.6.7-meuesn43twttt756exyzqgdhohjgipjq
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/general/opt/spack/linux-centos7-x86_64/gcc-4.8.5/python-3.6.6-qwnwme7otyuoqqudcglfmfy75t5npywl

**Arm**
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/arm/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/python-3.7.2-qj27kzs4ttdqudm3hsi3pt57kv7lshco
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/arm/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/python-3.7.1-io5eneirgvpegy3tosvp6wq5ndf7yjis
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/arm/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/python-3.6.8-ej3vnvta2hbtrh7p5hokfqkuewxeqgsa
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/arm/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/python-3.6.7-l3qnue72ewppn2wxza3w6l62l7ijlque
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/arm/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/python-3.6.6-b55pdoqsr5bie4k5djd4vokm3nywhm45

**Power9**
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/power9/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/python-3.7.2-cicayvl7ki4tswoqlljsmcetwqcnoh3x
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/power9/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/python-3.7.1-7vej3zvnvyj2jvz5lnxhnts3ok2fcxbp
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/power9/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/python-3.6.8-xijljmdanyrybcx2rv65qshycmbrfv6c
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/power9/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/python-3.6.7-vqdhzg7c3xxxregqmzxsqqfzxt2hajvq
[+] /scratch/users/dantopa/new-spack/pr.new.python-3.7.2/power9/opt/spack/linux-rhel7-ppc64le/gcc-4.8.5/python-3.6.6-jf4bnsdwk3qjhtmvjjhblnrcz5dztfdq

2019-02-05
Signed-off-by: Daniel Topa <dantopa@lanl.gov>

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2019-02-06 12:03:25 -06:00
Nichols A. Romero
5394f0016a CUDA compiler conflicts for Linux (#10460)
* CUDA compiler conflicts for Linux.

* Add Volta and Turing GPUs.

* Add mandatory conflict for Volta and Turing GPUs.

* Revert "CUDA compiler conflicts for Linux."

This reverts commit 7d4ff654ac.

* Compiler conflicts introduced from previous commit into CUDA packaged moved and integrated into CUDA build system.

* More conversative with compiler conflicts for cuda 10.0.130, since I don't know what will happen with future cuda 10.x releases.

* Correct off-by-one errors in clang conflicts for x86_64 Linux.

* No restrictions on Apple Clang compiler until we are able to distinguish Xcode clang from github clang more easily. Note to fix this in the future.

* Change comment to clarify that github clang refers to LLVM clang.

* Fix and simplify index range.

* Fix overlapping conflicts for CUDA 10.0.130

* Removed extra ^cuda from conflict.
2019-02-06 17:09:52 +01:00
Valentin Clement (バレンタイン クレメン)
548e6736c4 Update CLAW package with version 1.2.1 (#10528) 2019-02-06 15:51:52 +01:00
Levi Baber
881ce3a5c2 perl-yaml: new package (#10514) 2019-02-06 15:47:54 +01:00
simo-tuomisto
1be258a587 wordnet: new package (#10526) 2019-02-06 15:38:48 +01:00
Denis Davydov
871e7f525c xsdk: enable slepc in deal.ii (used to be a concretization error) (#10218) 2019-02-06 07:59:36 -06:00
Phil Carns
0b4a7dd04a New package: PMDK (#10453) 2019-02-05 16:53:16 -06:00
Justin Stanley
003ebf8bab r-wgcna: new package at 1.64-1 (#10392) 2019-02-05 09:00:25 -06:00
Axel Huebl
293e5c0781 MPark: Variant v1.4.0 (#10512)
Add the latest release of Michael Park's C++ Variant lib.
2019-02-05 15:18:19 +01:00
Phil Carns
de91d0badc mercury package: add 'udreg' variant (#10415)
Faster and/or more robust in some cases on Cray platforms
2019-02-04 19:51:04 -06:00
Levi Baber
c7ecb66a2f New package: perl-hash-merge (#10506) 2019-02-04 18:05:36 -06:00
Levi Baber
736a317e0c New package: perl-clone-choose (#10507) 2019-02-04 18:04:55 -06:00
Christoph Junghans
514cf0c1f4 votca*: add v1.5 (#10495)
* votca-tools: add v1.5

* votca-csg: add v1.5

* votca-xtp: add v1.5

* votca-ctp: add v1.5
2019-02-04 12:57:19 -07:00
Justin Stanley
478c3f5e8b augustus: fix bam2wig auxprog build (#10362)
* augustus: fix bam2wig auxprog build

* augustus: few more changes to make new versions work
2019-02-04 10:36:10 -06:00
Matthias Diener
bca72036a8 tar: add version 1.31 (#10485) 2019-02-04 11:02:13 +01:00
Axel Huebl
17cc4f208f Catch2: v2.6.0 (#10490)
Add the latest Catch2 release.
2019-02-04 10:52:47 +01:00
wspear
43fae5b807 New package: py-alembic (#10436) 2019-02-01 16:24:44 -06:00
wspear
ec7c7332c0 New package: py-prometheus-client (#10440) 2019-02-01 16:23:59 -06:00
Nicholas Labello
8c87a937e1 plumed package: add versions 2.4.4 and 2.5.0 (#10496) 2019-02-01 16:21:55 -06:00
Mark W. Krentel
a1969d9eec dyninst: add patch to work with new boost (#10454)
Add tribool.patch to add explicit casts from tribool to bool in two
places.  Boost, starting with version 1.69, turned on explicit
conversions for tribool, which breaks the build for dyninst.

This is merged into the current dyninst develop and is expected to be
part of the next release, so the version range uses the current
release as an upper bound.
2019-02-01 16:18:16 -06:00
wspear
c2b06c27ac New package: py-async-generator (#10439) 2019-02-01 12:40:19 -06:00
zschulte
a701c412bc gatk package: new versions, updated helper script (#10459)
Closes #10168

* Add versions 4.1.0.0 and 4.0.12.0
* Replace md5 checksums with sha256
* Logic to generate a helper script for versions earlier than 4 was
  not running. This corrects the branch which controls whether this
  script is generated.
* Constrain Java dependency to version 8 (GATK does not work with
  Java 11)
* Avoid adding scripts that have dependencies not handled by Spack
  such as gcloud and google-chrome. These scripts are good candidates
  for later extensions.
2019-01-31 16:10:06 -06:00
Ricardo Silva
cf754245fd py-pybigwig: fix build with python3, add numpy variant (#10444)
* added patch to correctly pick up non-system curl when building
  with Python 3
* added numpy variant
* add version 0.3.12
* update checksums to sha256
2019-01-31 14:50:10 -06:00
snehring
21afd258a4 New package: openjdk (#9861)
Closes #2622

This retrieves and installs the binary of Oracle's OpenJDK (an
open-source JDK implementation). The logic is largely based on the
Spack JDK package (Oracle's closed-source JDK implementation).

For now this is only supports Linux. If the download could be
customized based on OS (for the same version), binaries are also
available for MacOS and Windows.
2019-01-31 12:54:28 -06:00
Matthias Diener
ec78d362d2 git-lfs: add version 2.6.1, update build system (#10405)
Build system was changed to use a Makefile. Therefore older versions
(which don't support this) are removed. The new build system also
supports testing by default.
2019-01-30 21:21:08 -06:00
Tom Payerle
c42528fac2 fftw: fix include error for 2.x versions (#10039)
Fixes #7372

Added patch method which renames config.h in the fftw subdir of the
source tree. fftw 2.1.5 appears to ship with a copy of this file
with all defines commented out. This gets read by the #include
directives instead of the version in the build directory with the
correct defines. As a result, many C preprocessor macros left
undefined, including F77_FUNC_ which causes the bulk of fttwf77.c
to be skipped due to an #ifdef, so fftw_reverse_int_array et al
not included in library. Fixes #7372

Also fixed some inconsistencies with the handling of quad and
long_double in specs between the configure method and the build,
check, and install methods.
2019-01-30 21:18:10 -06:00
Axel Huebl
2aad75d98f HDF5: Add develop Version (#10382) 2019-01-30 21:04:24 -06:00
Phil Carns
36c46a7daf Mercury package: update libfabric dependency on Cray (#10408)
The Mercury package previously depended on libfabric@develop on
Cray platforms in order to pick up a fix for the GNI provider that
was only available in git. This is no longer needed now that the
libfabric package is at 1.7.0.
2019-01-30 20:57:31 -06:00
Justin Stanley
5a431eb408 r-pkgmaker: add 0.27, new dependencies (#10419) 2019-01-30 20:54:24 -06:00
Michael Kuhn
b1af6b43dc gobject-introspection: add 1.56.1 and fix download (#10462)
Define url_for_version, since Spack's default substitution is
not sufficient
2019-01-30 20:53:08 -06:00
Matthias Diener
3ce0fba036 go: fix directory structure issue for 1.11.5 (#10484) 2019-01-30 20:30:05 -06:00
Chuck Atkins
be38fded9b cmake: Fix linker errors on Darwin when using external dependencies (#10467)
Adds upstream patch for a missing framework. This is anticipated
to be fixed by CMake 3.13.4 so is only applied up to version 3.13.3
2019-01-30 20:24:20 -06:00
Matt Belhorn
2b6bf06150 libsodium: Updates source URL. (#10483)
The source URL for versions 1.0.15 and older is updated to reflect where
those archives are now hosted by the upstream libsodium developers.
2019-01-30 20:14:41 -06:00
Jon Rood
86747b39d4 ninja: Add kitware version with fortran capability (#10470) 2019-01-30 20:06:09 -06:00
G-Ragghianti
9630d732d6 New package: SLATE (#10434) 2019-01-30 19:59:26 -06:00
Jason Lee
c698384216 jemalloc: Add variant to prepend public api with "je_" prefix (#10356) 2019-01-30 19:16:33 -06:00
Justin Stanley
993745b919 redundans: add 0.14a (#10006)
Also update install to use globbing
2019-01-30 18:55:59 -06:00
Samuel Thibault
9bfcbcc155 New package: simgrid (#10076) 2019-01-30 18:39:59 -06:00
Cameron Smith
9d7f215e47 zoltan: detect metis int64 variant (#10051)
Configure zoltan depending on metis int64 support
2019-01-30 15:19:38 -06:00
dorier
477d3fb479 Package py-keras: add new versions and dependencies (#10353)
Add new versions for py-keras. Versions of py-keras at or after
2.2.0 require keras-processing and keras-applications packages.
Add these packages to Spack and add dependencies to the py-keras
package.
2019-01-30 14:32:37 -06:00
Jimmy Tang
47887499bf cudnn package: add version 7.2 (#10481) 2019-01-30 13:44:24 -06:00
sknigh
d4fbaa054f Update opa-psm2 package (#10344)
* Add version 11.2.68
* Add variant to disable AVX2 for older hardware
* Change the makefile so libraries and includes are not placed
  under $PREFIX/usr
* Updated URL and homepage
2019-01-30 13:38:48 -06:00
Justin Stanley
a3926620ee r-preprocesscore: add version 1.44.0 (#10389) 2019-01-30 13:30:06 -06:00
Justin Stanley
65429026af r-impute: add version 1.56.0 (#10390) 2019-01-30 13:29:09 -06:00
Abhinav Bhatele
5c99716160 codes package: add version 1.1.0 (#10414) 2019-01-30 13:27:56 -06:00
Justin Stanley
25d2ccfcc5 r-runit: new package at 0.4.32 (#10416) 2019-01-30 13:26:34 -06:00
Justin Stanley
2a28e6e6bb r-bibtex: new package at 0.4.2 (#10417) 2019-01-30 13:25:43 -06:00
Justin Stanley
9efeff6b1f r-rngtools: add 1.3.1 (#10418) 2019-01-30 13:25:10 -06:00
Abhinav Bhatele
16819a5b18 ROSS package: update homepage and git url (#10429) 2019-01-30 13:24:14 -06:00
Adam J. Stewart
f011c9976f Add JDK 11.0.2_9 (#10413)
Also add 11.0.1_13; remove 11.0.1, which is no longer available for
download.
2019-01-30 13:20:30 -06:00
Michael Kuhn
e338f2c2c1 ncl package: require cairo with pdf support (#10465)
Needed after #10135
2019-01-30 13:10:08 -06:00
Michael Kuhn
5ada4d9956 gtkplus: add gettext dependency (#10464) 2019-01-30 13:08:43 -06:00
G-Ragghianti
b114ec4e77 New package: lm-sensors (#10443) 2019-01-30 13:04:52 -06:00
Matthias Diener
28de435584 go: add version 1.11.5 (#10451) 2019-01-30 12:57:45 -06:00
Satish Balay
d8e9d7acbd py-petsc4py: add version 3.10.1 (#10457)
Also update dependency version ranges
2019-01-30 12:54:45 -06:00
Christoph Junghans
ccb3face64 py-espresso package: add version 4.0.1 (#10469) 2019-01-30 12:53:24 -06:00
Sajid Ali
a67995d66a py-dask package: add version 1.1.0 (#10475) 2019-01-30 12:51:56 -06:00
Sajid Ali
b34e2b8973 neovim package: add version 0.3.4 (#10472) 2019-01-30 12:51:17 -06:00
Matthias Maiterth
f50e91776d geopm package: new versions, dependency updates (#10480)
Added versions 1.0.0-rc1, 0.6.1, 0.6.0, 0.5.1

hwloc dependency was removed after 0.5.1, so the related configure
option is not specified after 0.5.1

Require py-matplotlib dependency version 2.2.3 (version was not
specified before)
2019-01-30 12:50:38 -06:00
Daniel Topa
1d4d2cff50 Add Open MPI 2.1.6 (#10478) 2019-01-30 12:45:46 -06:00
Sajid Ali
5992f508d3 py-numexpr package: add version 2.6.9 (#10477) 2019-01-30 12:45:19 -06:00
Sajid Ali
e0387ab1a1 modified: var/spack/repos/builtin/packages/libx11/package.py (#10473) 2019-01-30 12:44:03 -06:00
Sajid Ali
627ef75bb8 py-pyfftw package: add version 0.11.1 (#10474) 2019-01-30 12:43:23 -06:00
George Hartzell
f878c0cb5b Add configparser v3.5.1, fixes backports namespace (#10433)
Fixes #8343 #4154 #7370
Closes #4155 

All but one of the backports packages were using "pkgutil-style"
namespacing, but configparser was using "pkg_resource-style".
A namespace needs to be one style or another. This adds a new
configparser version which switches to using the pkgutil-style
namespace approach.

With this update, one can now install flake8 with Spack and use
it by loading modules.
2019-01-29 17:58:56 -06:00
Peter Scheibel
b2c2cbadcd debug output includes modulecmd output (#9476)
Debug output now includes the output of modulecmd executions. Only
output module content when a failure occurs; always report when a
module is loaded/unloaded.
2019-01-29 17:41:15 -06:00
Chuck Atkins
b7c31cb561 rhash: Fix broken RPATH info on darwin
The PREFIX variable in the makefiles is directly used to construct the
install name on the library metadata on darwin.  If not passed, the
default /usr/local is used and the resulting librhash.dylib contains
usage informaiton of /usr/local/lib/librhash.0.dylib.  This adds the
PREFIX= variable directly to the make command so the resulting usage
metadata contains the correct valid library path.
2019-01-29 16:31:15 -06:00
Stephen Herbein
67a1e56e4d add flux-core@0.11.0 and flux-sched@0.7.0 (#10447)
* flux-core: add v0.11.0 and updated dependencies

libuuid hasn't been a direct dependency of flux-core since 2015 (well
before any of the versions listed in the package).

The yaml-cpp dependency moved to flux-sched when we moved the jobpsec
library from core to sched.

Some python3 incompatibilities were found in 0.11.0, so bump the python3
support back a version.

* flux-sched: add v0.7.0 and make boost dependency more precise
2019-01-28 21:20:01 -07:00
Chuck Atkins
6535eae5c7 llvm: various updates (#10427)
* llvm: Bump version to 7.0.1

* llvm: Added perl-data-dumper build dependency for openmp

* llvm: Enable exception handling and RTTI

Useful to have turned on in general with RTTI but also necessary
to workaround some lldb stability issues with some versions of
libstdc++.
2019-01-29 00:32:30 +01:00
Ralph Castain
3b1fb7d9ff Update the PMIx package (#10442)
* Update the PMIx package

- Add latest releases to the list.
- Add dependency on hwloc for versions >= 3.0
- Flag preferred versions for libevent and hwloc
- Improve the description
- Point the project URL to the correct site

Signed-off-by: Ralph Castain <rhc@pmix.org>

* Only install the hwloc dependency for versions >= 3.0.0

Thanks to @ax3l for the suggestion

Signed-off-by: Ralph Castain <rhc@pmix.org>

* Add myself as a listed maintainer

Signed-off-by: Ralph Castain <rhc@pmix.org>
2019-01-26 21:25:18 +01:00
Cameron Smith
4e14752dd6 add variant for a debug build (#10409) 2019-01-26 18:42:24 +01:00
Nichols A. Romero
4ab89f4de1 QMCPACK Update - Jan 2019 (#10252)
* Add warnings for existing conflicts. New versions of QMCPACK require a compiler with C++14 support.

* QMCPACK now requires a newer release of CMake.

* Switch QMCPACK to using FFTW-api provider.

* Relax dependencies on QMCPACK +da variant.

* Add QMCPACK 3.6.0 release.

* QMCPACK compiler-CUDA conflicts.

* QMCPACK fix typo in expressing conflict.

* Conditional needed since these variables are only used when FFTW is a dependency to QMCPACK.

* QMCPACK QE variant dependency was underspecified. Must include MPI as a hard dependency on QE.

* Update QMCPACK dependencies for HDF5, CMake and Boost.

* QMCPACK clean-up, more consistent use of spec vs. self.spec.

* Add support for collective I/O variant of QMCPACK.

* Update QMCPACK conflicts for QE and PHDF5 variants.

* Use built-in install method for QMCPACK starting with 3.6.0

* QMCPACK compiler C++14 conflicts were off by one version.

* QMCPACK package needs to setup_environment method.

* In support of PR#10252, get rid of slashes in string.

* Migrate these to the CUDA package and make a seperate PR.

* In support of PR#10252, get rid of join_path for nexus.

* In support of PR#10252, work around concretizer limitation.

* In support of PR#10252, convert to conditionals to if-else clauses for compactness.

* In support of PR#10252, get rid of extra space and new line in warning messages.
2019-01-26 10:13:51 -06:00
Abhinav Bhatele
a307822fd9 laghos: update version (#10420) 2019-01-26 16:29:32 +01:00
Satish Balay
d071c6d341 petsc: configure works with python3 in current petsc@develop - and will work in future releases [3.11+] (#10380) 2019-01-26 16:28:20 +01:00
Matthias Diener
f299507fa9 diffutils: add version 3.7 (#10406) 2019-01-26 16:26:47 +01:00
Matthias Diener
2826d37a45 rust: add version 1.32.0 (#10407) 2019-01-26 16:26:16 +01:00
Ricardo Silva
3fc8203b93 bcftools: do not use bundled htslib (#10445)
* if the path to htslib is not specified the bundled one is built instead
* additionally this fixes the build with the intel compiler
2019-01-26 16:21:04 +01:00
Chuck Atkins
e867319ac3 perl-data-dumper: New package (#10425)
This package is added to satisfy a build time dependency for llvm-openmp
2019-01-26 16:16:03 +01:00
Chuck Atkins
76c757de22 libuv: Bump version to 1.25.0 (#10423) 2019-01-26 16:11:45 +01:00
Chuck Atkins
3266c69352 cmake: Use system libs by default (#10424)
This also fixes the libuv version dependency for 3.11+
2019-01-26 16:11:32 +01:00
wspear
68eb2a1418 Added the py-send2trash package as a pre-req for py-jupyterhub (#10441) 2019-01-26 16:10:02 +01:00
Piotr Luszczek
b94c8c2d53 magma: add version 2.5.0 (#10438) 2019-01-26 16:03:05 +01:00
Levi Baber
248452df4f capstone: new package (#10449) 2019-01-26 15:52:39 +01:00
Peter Scheibel
5abf29c971 Environments: fix bug for install of external packages (#10437)
"spack install" will install all packages added to the current
environment. When this included external packages, the environment
update would fail because it would attempt to copy log files that
were only generated if Spack handled the install itself. This skips
that step for external packages.
2019-01-24 21:29:21 -06:00
Greg Becker
98e0b5b0db Allow spack install --overwrite for nonexistent or multiple packages (#9201)
* Allow overwrite nonexistent and multiple packages

initial implementation
give one prompt to users instead of a prompt per spec
testing

* flake

* bugfix: install overwrite check each spec against installed

* python3 compliance for filter/map
2019-01-24 12:10:32 -08:00
Omar Padron
7d64994cbd fix issue where docker images were being pushed without login (#10379) 2019-01-24 10:08:38 -08:00
sameershende
7d12ff6e16 Update ecp st tau pdt (#8192)
* Updated MPI and TAU versions in the TAU package
* Updated PDT versions
* Added support for Python (+python), default to `False`
* Cleaned up binutils, python, mpi usage.
* Updated binutils install to add additional header files to the include/extra directory.
* Resolving review problems with TAU and binutils packages.
  The binutils package was updated to include support for installing
  the ELF headers as a +headers variant.  The TAU package was updated
  to use all known Spack dependencies.
2019-01-23 20:40:58 -08:00
Justin Stanley
9252f7f957 trinotate: remove perl-dbd-mysql, move runtime files to HOME (#9850) 2019-01-22 14:26:31 -06:00
Justin Stanley
7baea68278 r-gamlss: new package (and data) at 5.1-2 (#10360)
* r-gamlss-data: new package at 5.1-0

* r-gamlss-dist: new package at 5.1-1

* r-gamlss: new package at 5.1-2

* r-gamlss: add mass, survival, nlme imports
2019-01-22 14:25:57 -06:00
Justin Stanley
bb942e1fc5 entrezdirect: new package (#10374) 2019-01-22 14:25:10 -06:00
Justin Stanley
4b7510ec38 py-whatshap: new package at 0.17 (#10377)
* py-whatshap: new package at 0.17

* py-whatshap: remove unused build_args
2019-01-22 14:24:45 -06:00
Justin Stanley
c1a1415e90 r-rrcov: new package at 1.4-7 (#10387) 2019-01-22 14:22:37 -06:00
Justin Stanley
e8014be017 r-robust: new package at 0.4-18 (#10391) 2019-01-22 14:22:24 -06:00
Justin Stanley
1bcc6e4d9c r-dynamictreecut: new package at 1.63-1 (#10388) 2019-01-22 14:22:09 -06:00
Peter Scheibel
c0972a3260 Exclude system mkl installs from numpy (#10383)
Fixes #10361
Fixes #6634

When mkl isnt in the spec, still write an explicit mkl entry to
prevent numpy from looking in system dirs and using a system install
of mkl. Do the same for openblas and atlas (although mkl was the only
system install reported to interfere with Spack's choice).
2019-01-22 12:18:54 -06:00
Justin Stanley
636d6007ba py-pyvcf: new package at 0.6.0 (#10375) 2019-01-22 17:11:19 +01:00
Adam J. Stewart
39725e0784 Typo fixes in .flake8 comments (#10399) 2019-01-21 12:35:11 +01:00
Justin Stanley
bb1f8b0e3e py-pyfaidx: new package at 0.5.5.2 (#10376) 2019-01-20 14:16:43 +01:00
Matthias Diener
ab00de9e81 cmake: add version 3.13.3 (#10397) 2019-01-20 14:14:37 +01:00
Jon Rood
e896ce7457 Update Nalu-Wind and dependencies (#10204)
* Updating nalu-wind, nalu, openfast, and tioga packages. Includes
  improved handling of +shared variant.
* Add fftw and catalyst support to nalu-wind.
* Restrict ParaView to use matplotlib versions before 3 (which
  require Python 3)
2019-01-18 18:43:59 -06:00
Owen Solberg
7a2315aa38 adding checksum for latest lmod release (#10381) 2019-01-18 08:49:26 +01:00
Hadrien G
3497098978 Update templight pseudo-release to remove need for patching (#10290)
* Update templight+LLVM combo

* Bring back old pseudo-release
2019-01-16 10:36:34 -06:00
Massimiliano Culpo
4bc3936004 Openblas: added version 0.3.5 (#10364) 2019-01-16 08:11:07 -06:00
sknigh
b31ecb0342 Added latest version of singularity 2.x (#10354) 2019-01-16 13:14:32 +01:00
George Hartzell
1f9fe02309 Add package for Hugo (static website generator) (#10358) 2019-01-16 13:11:15 +01:00
Tom Payerle
01bd67eb43 py-modred: New package (#10309)
* py-modred: New package

Parallelized python module for finding modal decompositions and
reduced order models.

* fix license
I think?

* Add dependency on py-numpy

and remove commented out code
2019-01-15 16:42:20 -06:00
sknigh
eaa340eba7 Added hpl 2.3 (#10345)
* Added hpl 2.3

* Added requested build fixes, added step to copy HPL.dat in 2.3+
2019-01-15 16:41:33 -06:00
Adam J. Stewart
d7fb3fd88e r requires cairo+pdf (#10350) 2019-01-15 09:58:53 -06:00
Owen Solberg
2585c04b50 explicitly depend_on cairo with X **and** pdf variants (#10351) 2019-01-15 09:58:39 -06:00
Elizabeth Fischer
0628ebefd8 Add useful comment explaining why this is not needed for Python3. (#10326) 2019-01-15 07:31:20 -08:00
Axel Huebl
89a493522c openPMD-api: Dependency Update (#10314)
openPMD-api now only supports Python 3, needs a newer CMake and
ADIOS1 and also learned to read & write JSON :-)
2019-01-15 09:28:13 -06:00
Neil Flood
49dedb2443 vigra: new package (#10337)
* vigra: new package

* Better constraints and types on some depends_on. Use site_packages_dir variable for Python install dir. Explicit switch-offs where available. Change some local variables to suit style checks.

* Take care of lines too long

* Explicit WITH_HDF5=ON
2019-01-14 20:39:34 -06:00
Andrew Gaspar
04d4b07636 Add span-lite version (#10347) 2019-01-14 18:22:29 -06:00
sknigh
a1994d883c Added latest rust releases and develop branch (#10341)
* Added latest rust releases and develop branch

* Fixed spacing
2019-01-14 17:22:38 -06:00
Levi Baber
d1b7e560bd namd: fixing to reflect renamed charmpp per #9216 (#10342) 2019-01-14 17:22:03 -06:00
sknigh
43e6114db7 Added latest version of libfabric (#10343) 2019-01-14 17:21:33 -06:00
Geoffrey Oxberry
baf595351e feature: py-invoke: new python package (#10225) 2019-01-14 17:13:17 -06:00
Todd Gamblin
618741fce2 tutorial: update tutorial materials for ECP19 2019-01-14 01:03:38 -06:00
Gregory Becker
dc005f3ff1 version bump: v0.12.1 2019-01-13 14:26:39 -08:00
George Hartzell
7abc2fb26d bugfix/gdk-pixbuf (#10312)
* docbook processing works correctly for gdk-pixbuf

1. The various bits of documentation in gdk-pixbuf include hardcoded
   references to dtd's and stuff at their canonical, Internet,
   locations.  BUT, gdk-pixbuf runs xslt-proc with the `--nonet`
   option, which forbids it from using the network.  Sadness ensues.

   Traditionally folks use XML Catalogs to map these to local copies.
   Our docbook-xsl package wasn't setting the appropriate env var in
   its dependents environments to use our catalog.

   Now it does.  Less sadness ensues.

2. If we're going to use these things, we should depend on them.

* Add gdk-pixbuf's bin to build environment

The "post-install.sh" script uses gdk-pixbuf-query-loaders, which was
installed earlier.

If py-psyclone can set its own bin on its PATH, so can we...

* Make gdk-pixbuf use recognizable docbook location

Our docbook-xsl package assumes that the canonical location is
`http://cdn.docbook.org/release/xsl/current/manpages/docbook.xsl`, but
the gdk-pixbuf's meson build script uses
`http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl`.

This means that our XML Catalog doesn't fix the reference and sadness
happens.

Just patch the build that we see what we want to see, then we can make
it all go away.

* Add commentary re docbook patch

* Make catalog helper a property

Thanks @adamjstewart!

* Run tests if/when run_tests is true

Thanks @adamjstewart!

* Tune up dependencies

Thanks @adamjstewart!

* Wordsmit commentary
2019-01-13 14:40:20 -06:00
Cyrus Harrison
9350db5665 update alpine ascent and friends (#10320)
This adds a lot of fixes and updates for alpine ascent and its dependencies:

* add support for static (via ~shared) and use vtk-m 1.2
* update vtkh package to output cmake configure file and pinning it to vtkm 1.2
* make conduit respect ~python
* fix ascent python logic
* consistant cmake usage
* conditionally add tbb in ascent if vtkh
* enable openmp
* more robust handling of variants
* update ascent and conduit for static builds
* add optional support for mfem in ascent
* enable mfem conduit support for ascent
* add optional adios dep to conduit
* remove ver req from conduit
* ascent: remove confusing comment
* tweaks to conduit and ascent pkg recipes
* fix typo in conduit package
* pref conduit master
* changing mfem to depend on conduit@master to get updated relay
* restore use of conduit 0.3.1 or greater for mfem
* set master as preferred conduit version
* allow mfem to use conduit master
* adding rover package and editing ascent
* updating vtkm cmake dep
* guard ascent python support on +shared
* removing rover to simply ascent package
* add fortran variant to conduit, to allow us to turn off conduit support even when a fortran compiler is specified
* fix fortran compiler check so it can work on cray systems
* working towards cuda fix for vtkm lagrange filter
* update ascent package with more variants, and patch to avoid nvcc issue
* hdf5 flags fix for BGQ
* add post install test
* add testing to ascent
* add testing of the using-with-make example
* add ctest output on error for run_tests
2019-01-12 17:43:39 -08:00
Adam J. Stewart
dc6dca3c36 cc: clean up cray compilers, fix issues with case-insensitive filesystems (#10323)
* Remove Cray CC compilers causing problems on case-insensitive filesystems
* cray -> cce
* Ensure that compiler-specific directory comes first in build-env
* Point to compiler-specific symlinks
2019-01-12 17:37:20 -08:00
Jiawei Zhuang
07d9d444ea Added osu-micro-benchmarks@5.5 (#10333) 2019-01-12 17:31:13 -08:00
Omar Padron
8e71ba8aa0 fix typo in docker test script (#10334) 2019-01-12 17:30:35 -08:00
George Hartzell
6c638600d7 Add libxslt v1.1.33 info (#10328) 2019-01-12 17:36:53 -06:00
Denis Davydov
09033e991e dealii: does not support sundials 4.x (#10324) 2019-01-12 15:28:57 -06:00
Neil Flood
04c1af0ee2 gdal: Add variant for GRIB driver (#10322) 2019-01-12 10:33:18 -06:00
Omar Padron
c2529358f2 fix archlinux docker build (#10289) 2019-01-12 00:52:50 -08:00
Greg Becker
c63c4a048c Binary caching bugfix: symlink relocation (#10073)
Binary caches of packages with absolute symlinks had broken symlinks.
As a stopgap measure, #9747 addressed this by replacing symlinks with
copies of files when creating binary cached packages.

This reverts #9747 and instead, either relative-izes the symlink or
rewrites the target. If the binary cache is created using '--rel' (as
in "spack buildcache create --rel...") then absolute symlinks will be
replaced with relative symlinks (in addition to making RPATHs relative
as before); otherwise they are rewritten (when the binary cache is
unpacked and installed).
2019-01-11 14:52:01 -08:00
Matthias Wolf
3c6d484150 enh: buildcache list should behave similar to find (#10052)
The current output of buildcache list is very verbose and I feel like
some details are getting lost. By making the output similar to find, I
think users will be able to get a better overview of what is stored in
the cache.
2019-01-11 13:57:10 -08:00
Dan Ibanez
f9967d2f6f Omega_h changed its URL (#10315)
From https://github.com/ibaned/omega_h
To https://github.com/SNLComputation/omega_h
2019-01-11 13:29:56 -06:00
Satish Balay
4cbeec07a0 omega-h: fix CMAKE_BUILD_TYPE: breaks with spack deafult 'RelWithDebInfo' (#10297) 2019-01-11 10:08:28 -08:00
Denis Davydov
f4bda74b30 dealii: fix concretization of xsdk package (#10288)
* dealii: fix concretization of xsdk package

* tests: add concretization tests for deal.II and xSDK, which are often broken due to limitations in the concretizer

* use pytest.mark.parametrize
2019-01-11 10:07:28 -08:00
Brian Van Essen
9102cd5790 Updating LBANN and related packages (#10305)
Updated LBANN, Hydrogen, and Aluminum to not require CUDA-aware MPI
even when using CUDA.  Fixed small bugs within both LBANN and Hydrogen
packages.  Added requirements for breathe and cereal to LBANN.
2019-01-10 17:10:11 -08:00
Mark W. Krentel
08c4b9d47a boost: fix the bjam build for Cray (#10295)
Fixes issues #9613 and #3209.

Remove the spack wrapper directories from PATH for the bootstrap step.
This was breaking the build for Cray (and other cross-compile) because
bjam was built for the BE and died on SIGILL on the FE.

This only affects building bjam.  The boost libraries are still built
the normal spack way with the spack wrappers.
2019-01-10 16:34:05 -08:00
Mark W. Krentel
7e8b17b177 hpctoolkit: variants to build for cray and blue gene (#10223)
Add variants 'cray' and 'bgq' to build for Cray and Blue Gene compute
nodes.  These systems need separate options to find the MPI compiler
for hpcprof-mpi.
2019-01-10 12:50:58 -08:00
Cody Balos
60a44d5155 sundials: add version 4.0.1 and remove 4.0.0-dev series (#10306)
The 4.0.1 release is the culmination of the SUNDIALS 4.0.0 preview releases,
i.e. the 4.0.0-dev versions. As such, the 4.0.0-dev releases are now
being removed.
2019-01-10 14:47:48 -06:00
Eric
b25f27d442 py-checkm-genome: Add version 1.0.13 (#10304)
* py-checkm-genome: Add version 1.0.13

* py-checkm-genome: Add missing py-backports-functools-lru-cache dependency

* py-checkm-genome: Fix missing whitespace
2019-01-10 12:28:07 -06:00
Jon Rood
12cf4eb734 Explicitly listing blas and lapack sections in site.cfg for numpy (#8708)
* Explicitly listing blas and lapack sections in site.cfg for numpy when using netlib-lapack so that scipy can find them as well.

* Reducing code to use a function call instead of copying and pasting.

* Fixing flake8 errors.

* Fixing python 3.6 error when site.cfg lists library_dirs multiple times.

* Formatting.

* Verifying blas and lapack are enabled before writing to site.cfg.

* Fixing flake8 errors.

* Fixing conflicts since this package file has been updated.

* Fixing flake8 stuff.

* Handling blas and lapack variants for netlib-lapack in site.cfg for py-numpy.

* Don't write netlib-lapack site.cfg file if no blas or lapack variants enabled in py-numpy.

* Removing redundant if statement.

* Fixing mistake in py-numpy site.cfg generation.

* Separating blas and lapack further in site.cfg for netlib-lapack in py-numpy.
2019-01-10 11:14:24 -06:00
Owen Solberg
586fe32166 update r-rcpp package with new versions (#10301) 2019-01-10 09:07:09 -06:00
Adam J. Stewart
72a41a4918 spack versions: only list safe versions (#10004)
* spack versions: only list safe versions
* Add unit tests for spack versions -s
2019-01-10 00:32:47 -08:00
Greg Becker
450b0e3059 Allow combinatorial projections in views (#9679)
Allow customizing views with Spec-formatted directory structure

Allow views to specify projections that are more complicated than
merging every package into a single shared prefix. This will allow
sites to configure a view for the way they want to present packages
to their users; for example this can be used to create a prefix for
each package but omit the DAG hash from the path.

This includes a new YAML format file for specifying the simplified
prefix for a spec in a view. This configuration allows the use of
different prefix formats for different specs (i.e. specs depending
on MPI can include the MPI implementation in the prefix).
Documentation on usage of the view projection configuration is
included.

Depending on the projection configuration, paths are not guaranteed
to be unique and it may not be possible to add multiple installs of
a package to a view.
2019-01-09 17:39:35 -08:00
Greg Becker
f5bb93c75b tutorial basics section: fix gcc install version (#10298) 2019-01-09 17:37:37 -06:00
Satish Balay
8ca674a574 petsc: fix petsc+debug to not reset COPTFLAGS - i.e use configure defaults '-g' (#10296) 2019-01-09 17:36:28 -06:00
Daryl W. Grunau
d1bb9caba4 eospac version bump to 6.4.0beta.4 (#10294) 2019-01-09 15:57:05 -06:00
Mark W. Krentel
1b991f9385 elfutils: option to install elf.h header file (#10185)
* elfutils: option to install elf.h header file

Add variant 'elfh' (default False) to install the elf.h header file to
the include directory.  This provides access to a newer version of
elf.h and allows an elf application to build with the same elf.h that
libelf.so was built with.

Add version 0.175.

* Drop the variant 'elfh' and always install elf.h instead.
2019-01-09 14:40:15 -06:00
Eric
b4dc73bed4 py-pyyaml: Add version 3.13 (#10293) 2019-01-09 13:39:34 -06:00
Simon Flood
0b2314bbc4 R: add version 3.5.2 (#10292) 2019-01-09 12:19:58 -06:00
Andreas Baumbach
730c629b09 New package: git-fat-git (#10266)
* new package: git-fat

* backport of rsync -> older versions no longer available

Change-Id: I3a41f17df0f88ca11e08ea6fd2f2d381435e0f09

* fix legal stuff and use new git attribute

Change-Id: Ice156dfe8ad4137a861f7b2938ee92f4024142be

* use date as version number rather than hash

Change-Id: Ib537659e368f69124895306d6a6ac0c5e36061a7

* only use the date once

Change-Id: I2592fa28aaa53fed949ddc82959d712ff3f6f752
2019-01-09 09:07:12 -06:00
marvinbernhardt
7571787a3a gromacs: added simd and rdtscp variants + version 2019 (#9931) 2019-01-09 10:39:05 +01:00
Axel Huebl
efe3e905a3 OpenMPI: Add Development Version (#10257)
Add the development version of OpenMPI from the git repo
in `master`.
2019-01-08 20:48:55 -06:00
sknigh
e3a2c94d60 Updated fish to 3.0.0 (#10286) 2019-01-08 20:47:52 -06:00
Owen Solberg
c48b0a13b9 bug fix: copy permissions when staging (#10285)
Fixes #10284

#10152 replaced shutil.move with llnl's copy and copy_tree for
resources. This did not copy permissions so led to later failures
if an executable was copied (e.g. a configure script). This uses
install/install_tree instead, which preserve permissions.
2019-01-08 17:56:16 -08:00
Srinath Vadlamani
4fdd3b6794 Armcompiler (#9840)
* Initial compiler support

* added arm.py

* Changed licence to Arm suggested header

* Changed licence to the same as clang.py
Main author of file is Nick Forrington <Nick.Forrington@arm.com>
Minor changes by Srinath Vadlamani <srinath.vadlamani@arm.com>

* compilers: add arm compiler detection to Spack

- added arm.py with support for detecting `armclang` and `armflang`

Co-authored-by: Srinath Vadlamani <srinath.vadlamani@arm.com>

* Changed to using get get_compiler_version

* linking to general cc for arm compiler

* For arm compiler add CFLAGS to use compiler-rt rtlib.

* Escape for special characters in rexep

* Cleaned up for Flake8 to pass.

* libcompiler-rt should be part of the LDFLAGS not CFLAGS

* fixed m4 when using clang to used LDFLAGS.  Fixed comments for arm.py to display compiler --version output with # NOAQ for flakes pass.

* added arm compilers

* proper linked names
2019-01-08 16:31:25 -08:00
Owen Solberg
ee64db4764 r-ape: new versions (#10258)
* updated versions for r-ape

* added type=('build', 'run') to r dependency
2019-01-08 18:15:03 -06:00
Owen Solberg
aa20724519 r-cowplot: new versions, more specific dependencies (#10259)
* updated versions for r-cowplot

* depends_on: added type=('build', 'run') to r, and added r-scales
2019-01-08 18:14:50 -06:00
Owen Solberg
7a816b9a66 r-data-table: new versions (#10260)
* updated versions for r-data-table

* added type=('build', 'run') to r dependency
2019-01-08 18:14:34 -06:00
Owen Solberg
2bd054adff r-dbplyr: new versions (#10262)
* added new versions, and tightened up depends_on() specs

* added type=('build', 'run') to r dependency
2019-01-08 18:14:19 -06:00
thelfer
d3caad4cd7 New package: MGIS (#10273)
* add the tfel package

* fix the tfel package

* fix the tfel package

* fix the tfel package

* Taking Adam J. Steward' remarks into account

* fixes trailing white spaces

* Update description

* Update dependencies following @adamjstewart adices

* Style fixes

* Style fixes

* Add java optional support

* add the maintainers attribute (following @alalazo advice), disable interface not selected (following @adamjstewart advice)

* flake8 fixes

* Fix Cast3M and python-bindings support. Python detection is made compatible with cmake'FindPythonLibs module (at least how it is used in TFEL)

* Style fixes

* Style fixes

* Fix test on python version

* Follow @adamjstewart advices: code is much cleaner and readable

* Small fix

* Small fix

* Add comment

* Small fix in cmake option

* try again (trying to overcome Travis CI unstable build process)

* Add support for the MFrontGenericInterfaceSupport project (MGIS)

* Style fixes

* Package documentation update

* Package documentation update

* Fix a typo thanks to Andreas Baumbach review

* Follow Adam J. Stewart advices

* Fix type
2019-01-08 15:07:47 -06:00
Eric
45882e1b6f usearch: Make installed binary executable (#10269)
* usearch: Make binary executable

* usearch: remove join_path
2019-01-08 14:20:13 -06:00
sknigh
d9c8d2f27b Added bash 5.0 (#10282) 2019-01-08 13:20:30 -06:00
Owen Solberg
0e50ff7339 r-dt: new versions (#10261)
* updated release and checksums, also tightened depends_on()

* remove blank line at end of file

* removing new version 0.5
2019-01-08 13:06:36 -06:00
Owen Solberg
76dd4ca9ae updated versions (#10263) 2019-01-08 13:00:12 -06:00
Owen Solberg
5c4156cd39 updated versions and depends_on() (#10264) 2019-01-08 12:54:55 -06:00
dorier
0a60cae516 added openpa package (#10265) 2019-01-08 12:53:37 -06:00
Eric
6ce6c79beb libzip: Add zlib dependency (#10270)
* libzip: Add zlib dependency

* libzip: Add version limit
2019-01-08 12:49:03 -06:00
Andreas Baumbach
a33d167c72 new version 1.0.1 for py-html5lib (#10278)
Change-Id: I2837dc098fce142b152d2969687d1873e182bbc8
2019-01-08 12:43:33 -06:00
Ross Miller
2934eda311 Check for ARM compiler in addition to clang (#10280)
Add "-rtlib=compiler-rt" to CFLAGS when building with either Clang or
the ARM compiler.

Refs #10279
2019-01-08 12:41:05 -06:00
Eric
dabf4f17d3 salmon: Add version 0.12.0 (#10271) 2019-01-08 14:01:02 +01:00
Michael Kuhn
48db757be1 go: add 1.11.4 (#10272) 2019-01-08 13:57:25 +01:00
Andreas Baumbach
12b52baf7b new package: py-webencodings (#10277)
Change-Id: Icf20035367a34fa88acfef2d3fa3742c3f3901ac
2019-01-08 13:55:41 +01:00
Peter Josef Scheibel
9f79995718 For spec-file-based installs, store the initial spec read from the file as the abstract spec 2019-01-07 20:40:34 -08:00
George Hartzell
b984adb386 bowtie: new versions and %gcc@8.0.0: fix (#10232)
* bowtie: new versions and %gcc@8.0.0: fix

Bowtie development shifted from Sourceforge to GitHub.

This commit adds several versions from GitHub, using the archive
tarballs.  Note that the URL for 1.2.2 tarball is actually an '_p1'
tag....

It leaves the old 1.2 release download info in place.

Versions 1.2.0 and newer come from GitHub (I'm unsure if the 1.2 and
1.2.0 are equivalent).

Include a fix that enables %gcc@8.0.0: from:

  https://github.com/BenLangmead/bowtie/issues/87

But, v1.2.2 has trouble with "newer" gcc's, so it only adds v1.2.2 for
%gcc@6.0.0:.

Feel free to tighten this.  I know that:

- 1.2 -> 1.2.2 work with %gcc@5.5.0;
- 1.2 -> 1.2.1.1 work with %gcc@8.2.0; and
- 1.2.2 fails with %gcc@8.2.0

* Tighten to `conflicts('%gcc@8:', when='@1.2.2')`

* Point 1.2.2 and 1.2.2_p1 at the 1.2.2_p1 tarball
2019-01-07 11:30:59 -06:00
Chad Wood
3b59f70751 doxygen: URL and version hashes updated to project's GitHub home (#10250)
* Update package.py

Doxygen has migrated from a private SVN to GitHub. This PR updates the URLs and adds versioned commit hashes from GitHub. It also includes version 1.8.15 as the latest option.

* Update package.py
2019-01-07 10:38:32 +01:00
Massimiliano Culpo
c4521535e7 Multi-valued variants: better support for combinations (#9481)
This enforces conventions that allow for correct handling of
multi-valued variants where specifying no value is an option,
and adds convenience functionality for specifying multi-valued
variants with conflicting sets of values. This also adds a notion
of "feature values" for variants, which are those that are understood
by the build system (e.g. those that would appear as configure
options). In more detail:

* Add documentation on variants to the packaging guide
* Forbid usage of '' or None as a possible variant value, in
  particular as a default. To indicate choosing no value, the user
  must explicitly define an option like 'none'. Without this,
  multi-valued variants with default set to None were not parsable
  from the command line (Fixes #6314)
* Add "disjoint_sets" function to support the declaration of
  multi-valued variants with conflicting sets of options. For example
  a variant "foo" with possible values "a", "b", and "c" where "c"
  is exclusive of the other values ("foo=a,b" and "foo=c" are
  valid but "foo=a,c" is not).
* Add "any_combination_of" function to support the declaration of
  multi-valued variants where it is valid to choose none of the
  values. This automatically defines "none" as an option (exclusive
  with all other choices); this value does not appear when iterating
  over the variant's values, for example in "with_or_without" (which
  constructs autotools option strings from variant values).
* The "disjoint_sets" and "any_combination_of" methods return an
  object which tracks the possible values. It is also possible to
  indicate that some of these values do not correspond to options
  understood by the package's build system, such that methods like
  "with_or_without" will not define options for those values (this
  occurs automatically for "none")
* Add documentation for usage of new functions for specifying
  multi-valued variants
2019-01-04 19:02:34 -08:00
Michael Kuhn
051057caa3 mvapich2: add missing zlib dependency (#10254) 2019-01-04 20:52:00 -06:00
Elizabeth Fischer
f7b78412b1 Added package osmctools (#10249)
* Added package osmctools

* Simplified

Removed functions that did the same as existing defaults

* flake8
2019-01-04 20:51:44 -06:00
Peter Josef Scheibel
64deda1b0c Add tests for expanding/non-expanding resources 2019-01-04 17:04:28 -08:00
Michael Kuhn
41ef02ee10 stage: fix resources being deleted from local cache (#10152)
Non-expanded resources were being deleted from the cache on account
of two behaviors:

* ResourceStage was moving files rather than copying them, and uses
  "os.path.realpath" to resolve symlinks
* CacheFetchStrategy creates a symlink to a cached resource rather
  than copying it

This alters the first behavior: ResourceStage now copies the file
rather than moving it.
2019-01-04 17:04:28 -08:00
Jimmy Tang
5450303c97 Fix download path, the existing one has been removed from nvidia's site (#10253) 2019-01-04 18:13:11 -06:00
Neil Flood
3477d33751 openssl: add location of system certificates for SUSE Linux (#10242) 2019-01-03 10:02:25 -06:00
Ben Zwick
7d9dbc5fd2 Add missing code block (#10243)
Otherwise the `--` in `--dot` is rendered as a single en-dash.
2019-01-03 09:41:14 -06:00
Michael Kuhn
802dc4a03a patch: split up fetch and clean into separate methods (#10150)
"mirror create" was invoking a package's do_patch method in order to
retrieve and archive URL patches. If a package implements a "patch"
method, this is also called as part of do_patch; this failed when the
package-specific implementation referred to environment variables
that are only available at the time the package is built
(e.g. "spack_cc").

This change introduces fetch and clean methods for patches. They are
no-ops for FilePatch but perform the appropriate actions for
UrlPatch. This allows "mirror create" to invoke do_fetch, which does
not call the package's patch method.
2019-01-02 11:44:50 -08:00
Axel Huebl
63e75c3972 Catch2: v2.5.0 (#10237)
Add the 2.5.0 release of catch2.
2019-01-02 08:59:36 -06:00
Ben Zwick
0c8fd8734d petsc4py: new versions (up to 3.10.0) and update website (#10238) 2019-01-02 08:59:14 -06:00
Ben Zwick
2577a5e686 slepc4py: new versions (up to 3.10.1) and update website (#10239) 2019-01-02 08:58:45 -06:00
Greg Sjaardema
9f40813004 PARALLEL-NETCDF: Update new version and location (#10172)
* PARALLEL-NETCDF: Update new version and location

PnetCDF-1.11.0 is released.

Also, the canonical download area has been changed and they are now using git, so can also provide a develop and master checkout.
One issue is that they changed the name of the tar files, so 1.11.0 needs special handling (and future versions will also).

All checksums at new location match the checksums from the old location.

* Address concerns in review

Added a `url_for_version` function to handle the name change in the tar files at version 1.11.0 and later.  Updated description to match current shown on website.  Updated `homepage` setting since it has recently moved.

* Address issues in second review
2019-01-01 19:55:29 -06:00
Massimiliano Culpo
8540d5390e Removed an extra comma after a dict literal (#10236)
The extra comma was turning a dict into a tuple, and caused errors
during validation of the schema.
2019-01-02 01:15:15 +01:00
Ben Zwick
aca195367e FEniCS: workaround concretization issue with PETSc (#10235) 2019-01-01 10:39:07 -06:00
George Hartzell
60968a3fbf Add list_url for r-readr, finding old versions (#10231)
r-tidyverse needs r-readr@1.1.1, r-reardr needs a list_url so that it
can find it.
2019-01-01 08:05:53 -06:00
Todd Gamblin
4ecb465a36 README: LLNL release number and SPDX id don't need to be monospaced. 2019-01-01 00:44:28 -08:00
Todd Gamblin
5425a3dad4 flake8: fix flake8 issues with invalid escapes
- in many files, regular strings were used in places where raw strings
  should've been used.

- convert these to raw strings and get rid of new flake8 errors
2019-01-01 00:44:28 -08:00
Todd Gamblin
6f50cd52ed copyright: update license headers for 2013-2019 copyright. 2019-01-01 00:44:28 -08:00
Todd Gamblin
e82992ae32 license: license command prints sorted, non-redundant results
- spack license command now ignores symlinks

- spack license list-files now prints sorted output, and checks for files
  we've already seen.
2019-01-01 00:44:28 -08:00
Massimiliano Culpo
3b8b13809e Improve validation of modules.yaml (#9878)
This PR improves the validation of `modules.yaml` by introducing a custom validator that checks if an attribute listed in `properties` or `patternProperties` is a valid spec. This new check applied to the test case in #9857 gives:

```console
$ spack install szip
==> Error: /home/mculpo/.spack/linux/modules.yaml:5: "^python@2.7@" is an invalid spec [Invalid version specifier]
```

Details: 
* Moved the set-up of a custom validator class to spack.schema
  * In Spack we use `jsonschema` to validate configuration files 
    against a schema. We also need custom validators to enforce
    writing default values within "properties" or "patternProperties"
    attributes.

  * Currently, validators were customized at the place of use and with the
    recent introduction of environments that meant we were setting-up and
    using 2 different validator classes in two different modules.

  * This commit moves the set-up of a custom validator class in the
    `spack.schema` module and refactors the code in `spack.config` and
    `spack.environments` to use it.

* Added a custom validator to check if an attribute is a valid spec
  * Added a custom validator that can be used on objects, which yields an
    error if the attribute is not a valid spec.

* Updated the schema for modules.yaml

* Updated modules.yaml to fix a few inconsistencies:
  - a few attributes were not tested properly using 'anyOf'
  - suffixes has been updated to also check that the attribute is a spec
  - hierarchical_scheme has been updated to hierarchy

* Removed $ref from every schema
  * $ref is not composable or particularly legible
  * Use python dicts and regular old variables instead.
2019-01-01 00:11:49 -08:00
George Hartzell
e6b2f0c179 express: new version, use tags and fix gcc@6.0.0: (#10230)
* express: new version, use tags and fix gcc@6.0.0:

Express fails to build with gcc@6.0.0:.

The debian project [has a
fix](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811859) but
they don't seem to have pushed it upstream.

I've opened an issue and a PR in eXpress repo, but eXpress isn't
actively developed, so I'm fixing it here too.

Since the Spack package was created, the eXpress team tagged their
releases.  I've updated the package to use the tags.

Version 1.5.1 used to be known as 2015-11-29 (same commit).  1.5.2 is
new(er).

* Make flake8 happ{y,ier}
2018-12-31 20:28:15 -06:00
George Hartzell
fb52eb2a18 aspell builds with newer gcc's (#10227)
Apply fix from aspell issue (519) for a pointer dereference bug that
newer versions of gcc won't let slip past.

There hasn't been a release that includes the fix, this applies the
change to the latest release.
2018-12-31 16:13:03 -06:00
George Hartzell
51fbd315e9 fastx-toolkit builds with newer gcc's (#10228)
There's a missing break in a switch statement that newer gcc's
dislike.

Our #4696 simply disallowed newer gcc's.

This fixes the problem instead.

It's been [PR'ed upstream](https://github.com/agordon/fastx_toolkit/pull/22).

Tested with gcc@5.5.0 and gcc@8.2.0 on CentOS.
2018-12-31 16:12:51 -06:00
George Hartzell
7aeff18b6f bamutil builds with newer gcc's (#10229)
The most recent release of bamutil that we support uses an embedded
copy of libStatGen that has several issues that keep it from building
with newer releases of gcc.

They've all been fixed upstream and the latest release of bamutil
would pick them up if/when we support it.  The build process has
changed though, plus my team needs *this* version.

This commit backports those fixes.
2018-12-31 16:12:14 -06:00
Justin Stanley
7f528a5ed2 ds: new package at 9.8.0 (#9852)
* ds: new package at 9.8.0rc6

* ds: move patches to patch func

* ds: use built-in configure phase, remove autoreconf skip

* ds: revert to stable 9.8.0

* ds: remove unnecessary dep types

* ds: make url consistent with versions
2018-12-31 16:11:20 -06:00
Gary Klimowicz
a1d651e80f flang, llvm, pgmath: Add release for 2018-09-21 (#10224) 2018-12-31 11:50:04 -06:00
Geoffrey Oxberry
88417492f7 py-sphinxautomodapi: new python package (#10226) 2018-12-31 11:47:48 -06:00
Nichols A. Romero
54f76f7c51 Over specifying Quantum Espresso compiler variables causes problems in some corner cases. (#10216) 2018-12-30 11:29:28 -06:00
Sinan
70c5088a4c xgboost: make sure "libxgboost.so" is provided under prefix/lib (#10208) 2018-12-30 08:15:08 -08:00
Denis Davydov
309f70758b dealii: workaround concretization issue with PETSc (#10217) 2018-12-30 08:43:25 -06:00
Todd Gamblin
365387e929 stopgap: allow travis to fail for Python 2.6 again
- Travis still fails on `spack spec` in Python 2.6.
- Allow the failure until we get to the bottom of it.
2018-12-30 00:19:08 -08:00
Todd Gamblin
2e3303abd0 bugfix: nested directives were broken in python 3
- The nested directive implementation was broken for python 3

- directive results were not properly removed from the directive list
  when it was processed in the DirectiveMeta metaclass.

- the issue was that remove_directives only descended into a list or
  tuple, but in Python3, the initial value passed to the function is a
  view of dictionary values.

- make it a list to fix things, and add a regression test.
2018-12-30 00:19:08 -08:00
Todd Gamblin
d763e92141 commands: add spack resource command to inspect downloadable files
- currently just looks at patches
  - allows you to find out which package applied a patch to a spec

- intended to work with tarballs and resources in the future.

- add tab completion for `spack resource` and subcommands
2018-12-30 00:19:08 -08:00
Todd Gamblin
d2db978c7f tests: add a test to make sure that patched specs can be round-tripped
- previously, if a concrete sub-DAG with patched specs was written out
  and read back in, its patches would not be found because the dependent
  that patched it was no longer in the DAG.

- Add a test to ensure that the PatchCache handles this case.

- Also add tests to ensure that patch objects are properly created from
  Specs -- previously we only checked that the patches were on the Spec.
2018-12-30 00:19:08 -08:00
Todd Gamblin
d3ee6c977b patches: add a per-repository patch index
- this fixes a bug where if we save a concretized sug-DAG where a package
  had been patched by a dependent, and the dependent was not in the DAG,
  we would not read in all patches correctly.

- Rather than looking up patches in the DAG, we look them up globally
  from an index created from the entire repository.

- The patch cache is a bit tricky for several reasons:

  - we have to cache information from packages, specifically, the patch
    level and working directory.

  - FilePatches need to know which package owns them, so that they can
    figure out where the patch lives.  The repo can change locations from
    run to run, so we have to store relative paths and restore them when
    the cache is reloaded.

  - Patch files can change underneath the cache, because repo indexes
    only update on package changes.  We currently punt on this -- there
    are stub methods for needs_update() that will need to check patch
    files when packages are loaded.  There isn't an easy way to do this
    at global indexing time without making the FastPackageChecker a lot
    slower.  This is TBD for a future commit.

  - Currently, the same patch can only be used one way in a package. That
    is, if it appears twice with different level/working_dir settings,
    bad things will happen.  There's no package that current uses the
    same patch two different ways, so we've punted on this as well, but
    we may need to fix this in the future by moving a lot of the metdata
    (level, working dir) to the spec, and *only* caching sha256sums in
    the PatchCache.  That would require some much more complicated tweaks
    to the Spec, so we're holding off on that til later.

- This required patches to be refactored somewhat -- the difference
  between a UrlPatch and a FilePatch is still not particularly clean.
2018-12-30 00:19:08 -08:00
Todd Gamblin
a9b69fa902 ProviderIndex uses json instead of YAML
- indexes should use json, not YAML, to optimize for speed
- only use YAML in human-editable files
- this makes ProviderIndex consistent with other indexes
2018-12-30 00:19:08 -08:00
Todd Gamblin
c1d7adaaac repo: refactor indexes to be more extensible
- virtual provider cache and tags were previously generated by nearly
  identical but separate methods.

- factor out an Indexer interface for updating repository caches, and
  provide implementations for each type of index (TagIndex,
  ProviderIndex) so that more can be added if needed.

- Among other things, this allows all indexes to be updated at once.
  This is an advantage because loading package files is the real
  overhead, and building the indexes once the packages are loaded is
  trivial. We avoid extra bulk read-ins by generating all package indexes
  at once.

- This can be extended for dependents (reverse dependencies) and patches
  later.
2018-12-30 00:19:08 -08:00
Todd Gamblin
527ff860f0 patches: clean up patch.py, directives, and package class properties
- cleanup patch.py:
  - make patch.py constructors more understandable
  - loosen coupling of patch.py with package

- in Package: make package_dir, module, and namespace class properties

  - These were previously instance properties and couldn't be called from
    directives, e.g. in patch.create()

  - make them class properties so that they can be used in class definition

  - also add some instance properties to delegate to class properties so
    that prior usage on Package objects still works
2018-12-30 00:19:08 -08:00
Todd Gamblin
19b7b15929 coverage: use kcov to get coverage for our cc script 2018-12-29 23:47:29 -08:00
George Hartzell
51cbc278aa Always build glib with iconv (#10219)
* Always build glib with iconv

My early PR, #10165, which added a variant to configure glib to use
libiconv and defaulted to false, seems to be causing more trouble than
the knob is worth.

This changes the glib package to always depend on and use libiconv.

* libiconv depends_on is no longer conditional
2018-12-29 16:01:08 -06:00
Todd Gamblin
c92ac70c72 bugfix: add codecov upload back to travis.yml (#10220)
Codecov upload was accidentally removed in #9805
2018-12-29 12:09:42 -08:00
Todd Gamblin
d65c6ba9b2 Use homebrew addon instead of manually invoking brew (#10213) 2018-12-29 06:12:02 +01:00
Adam J. Stewart
5f957920c4 Add GDAL 2.4.0 (#10215) 2018-12-28 21:20:13 -06:00
Eric
2c76e8feef salmon: Add version 0.12.0 (#10211) 2018-12-28 13:02:36 -06:00
Eric
ada8d5ce5c velvet: Add missing zlib dependency to fix installation errors (#10212) 2018-12-28 13:02:16 -06:00
Eric
722e7058f8 py-testinfra: Add version 1.18.0 (#10210) 2018-12-28 18:24:58 +01:00
Andrew Gaspar
69f1199c55 Add new versions of optional-lite and string-view-lite (#10179) 2018-12-27 17:03:21 +01:00
Justin Stanley
c451733f9a xgboost: new package at 0.81 (#9854) 2018-12-27 07:42:44 +01:00
Lukasz
25129d4a3b fix moab installation for version 5.0.2 removed from ftp (#10201)
* moab install from git repository, fix version 5.0.2 removed from ftp server

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

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

* Flake8 cleanup

* Another Flake8

* Update license header

* Various improvements

A lot of improvements as suggested by @adamjstewart

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

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

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

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

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

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

* Added dependency on py-setuptools, and version range for py-cython, thanks to the ever-vigilant @adamjstewart
2018-12-23 14:56:08 -06:00
Simone Bnà
e7e32cc2d6 openFOAM-paraview-catalyst (#10129)
* paraview: adding variants to use external packages as internal do not compile

* paraview: add latest paraview version

* catalyst: fixed libvtkexpat undefined reference linking error in Catalyst 5.5

* catalyst: add latest catalyst version

* catalyst: added ParaView_DIR env variable to catalyst module

* add paraview, catalyst patches

- https://gitlab.kitware.com/vtk/vtk-m/merge_requests/1166
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2433
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2436

* - Handle updated library paths for catalyst.

  Versions 5.4 and old places libraries under a paraview subdirectory.
  Eg, "lib/paraview-5.4", they are now placed directly under "lib"

- Minor code style cleanup

* Handle update library and python paths for ParaView-5.5

* catalyst: added ParaView_DIR path to spack_env

* BUG: applied the patch to the extracted catalyst source files

* paraview: added missing self to a member variable

* paraview: added Paraview_DIR to env

* catalyst: added osmesa variant

* of-catalyst: added new package

* add (FOAM,WM)_PROJECT_DIR  also to spack_env environment

* depends on first openfoam release supporting catalyst

* openfoam-com: added missing env variables to module generation

* openfoam: fixed flake8 errors

* of-catalyst: added full variant and openfoam version dependency

* paraview: adding variants to use external packages as internal do not compile

* catalyst: fixed libvtkexpat undefined reference linking error in Catalyst 5.5

* catalyst: added ParaView_DIR env variable to catalyst module

* add paraview, catalyst patches

- https://gitlab.kitware.com/vtk/vtk-m/merge_requests/1166
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2433
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2436

* - Handle updated library paths for catalyst.

  Versions 5.4 and old places libraries under a paraview subdirectory.
  Eg, "lib/paraview-5.4", they are now placed directly under "lib"

- Minor code style cleanup

* Handle update library and python paths for ParaView-5.5

* catalyst: added ParaView_DIR path to spack_env

* BUG: applied the patch to the extracted catalyst source files

* of-catalyst: added new package

* add (FOAM,WM)_PROJECT_DIR  also to spack_env environment

* depends on first openfoam release supporting catalyst

* paraview: added missing self to a member variable

* openfoam-com: added missing env variables to module generation

* openfoam: fixed flake8 errors

* paraview: added Paraview_DIR to env

* catalyst: added osmesa variant

* of-catalyst: added full variant and openfoam version dependency

* paraview-catalyst: use always external expat and netcdf

* of-catalyst: reformatted package description

* paraview-catalyst: removed duplicated function

* catalyst: fixed flake8 error

* of-catalyst: fixed license header

* of-catalyst: minor changes

* of-catalyst: renamed gitrepo with git

* of-catalyst: removed useless gitrepo parameter
2018-12-23 13:40:25 -06:00
Brian Van Essen
bdc9804078 Feature add breathe and m2r (#10180)
* Added a package for the MDAnalysis toolkit.

* Added python packages for breathe and m2r.  Updated versions and URL
for the sphinx package.

* Fixed flake8 error

* Updated package requirements based on feedback.

* Updated with requirements from the setup.py

* Switched it back to pypi.
2018-12-23 13:39:21 -06:00
Neil Flood
451bfbd1ab py-pynio: new package (#10074)
* py-pynio: new package

* Major re-working to add some of the optional dependencies, and make it conform to the approach described in the pynio setup.py comments. Much of it turned out to be too complicated, and I have added some notes in comments to explain this to future adventurers.

* Added variants for the hdf5 and gdal dependencies, which do seem to be genuinely optional. Also added absolute dependencies for jpeg and zlib, which setup.py says it wants, but were being found as the os-installed versions.

* Added descriptions for the new variants, and moved them to above the dependencies
2018-12-23 09:50:41 -06:00
Jim Galarowicz
93d9139ff6 Add missing module env variable setting causing OSS to fail. (#10182) 2018-12-22 17:24:44 -06:00
Justin Stanley
90dce26db9 r-corhmm: new package at 1.22 (#9859) 2018-12-22 19:09:20 +01:00
Satish Balay
fad4ecc90b petsc-3.10.3: syncs with superlu-dist-6.1. (#10166) 2018-12-22 10:40:08 -06:00
Levi Baber
ec2c5e5b0d gpgme: new package (#10174) 2018-12-21 12:17:45 -06:00
Jordan Ogas
b1944d4cbf add charliecloud 0.9.6 (#10176) 2018-12-21 12:17:33 -06:00
Matthias Wolf
a3ecdf1f41 py-numba: fix py-llvmlite version (#10175) 2018-12-21 11:34:32 -06:00
George Hartzell
7f095cee48 Add libiconv variant to glib (#10165)
Enable explicitly building glib with or without libiconv.

Heads up: if you build with ~iconv but there is something else in the
spec that includes libiconv then glib will *still* automagically
discover it and the build will fail.
2018-12-21 11:33:28 -06:00
Elsa Gonsiorowski, PhD
74a5d92f07 Remove /nfs/tmp2 from default build_stage locations (#10170)
* Remove /nfs/tmp2 from default configuration
* /nfs/tmp2 is going away from LC... and doesn’t exist for the rest of the world.
* update documentation to remove /nfs/tmp2 as well
2018-12-21 02:03:54 -08:00
Daryl W. Grunau
36ab7be406 R3D spackage (#10164)
* r3d spackage

* address Adam's review comments

* fix flake8: too many blank lines
2018-12-20 17:23:38 -06:00
Sajid Ali
e57ddda4cc update h5py to 2.9.0 (#10169)
* 	modified:   var/spack/repos/builtin/packages/py-h5py/package.py

* Update package.py

* Update package.py
2018-12-20 17:23:17 -06:00
thelfer
00d84b1978 Update TFEL package (#9995)
* add the tfel package

* fix the tfel package

* fix the tfel package

* fix the tfel package

* Taking Adam J. Steward' remarks into account

* fixes trailing white spaces

* Update description

* Update dependencies following @adamjstewart adices

* Style fixes

* Style fixes

* Add java optional support

* add the maintainers attribute (following @alalazo advice), disable interface not selected (following @adamjstewart advice)

* flake8 fixes

* Fix Cast3M and python-bindings support. Python detection is made compatible with cmake'FindPythonLibs module (at least how it is used in TFEL)

* Style fixes

* Style fixes

* Fix test on python version

* Follow @adamjstewart advices: code is much cleaner and readable

* Small fix

* Small fix

* Add comment

* Small fix in cmake option

* try again (trying to overcome Travis CI unstable build process)
2018-12-20 15:47:24 -06:00
Mark Olesen
7ded7fdbda OpenFOAM-v1812 - new version (#10167) 2018-12-20 13:18:51 -06:00
Omar Padron
60298787e4 Fix docker builds (#9805)
* move docker test logic to share/spack/qa
* update Dockerfile for archlinux
2018-12-20 11:17:46 -08:00
Omar Padron
56cb691fcc fix multiple issues with the docker images (#9718)
- fixed an issue where some undesirable parts of
   the spack source tree were being copied into
   the image context.

 - added a workaround for a tty ioctl warning on
   ubuntu

 - adjusted how the main images are built so that
   `RUN spack ...` works automatically for child
   images that base themselves on them.
2018-12-20 11:11:55 -08:00
Zack Galbreath
b90f619037 Performance improvements for CDash reporter
* Record build output as an array of lines rather than concatenating to a
  single large string.
* Use string.find to avoid running re.search on every line of output.
2018-12-20 09:23:08 -08:00
Zack Galbreath
6355ee208c Include accurate build time in CDash report 2018-12-20 09:23:08 -08:00
Zack Galbreath
8d0872083c Report current git commit of Spack to CDash
When using the CDash reporter, upload a Update.xml file that
indicates the hash of Spack's current git commit.
2018-12-20 09:23:08 -08:00
Scott Wittenburg
7217b4a4b9 Make sure to urlencode cdash submit parameters 2018-12-20 09:23:08 -08:00
Zack Galbreath
aed9a532c6 Get buildId from CDash at submit time
Pass extra data when submitting to CDash.  If CDash responds with a buildId,
construct and display helpful URL that links to the uploaded report.
2018-12-20 09:23:08 -08:00
Zack Galbreath
738d2bd77a Allow more customization for CDash reporter
Add new command line arguments to `spack install` that allow users
to set the build name, site name, and track in their CDash report.
2018-12-20 09:23:08 -08:00
Zack Galbreath
0bae6626a4 Avoid UnboundLocalError
Make sure cdash_phase is defined before referring to it.
2018-12-20 09:23:08 -08:00
jthies
9110c727bb packages/phist: add maintainer (#10162) 2018-12-20 13:23:35 +01:00
Greg Sjaardema
93c491f729 CGNS: Allow use of git branch versions (#10156)
* CGNS: Allow use of git branch versions

Add ability to use git `master` and `develop` branches of the CGNS library.  The `seacas` package sometimes needs to use the `master` or `develop` branch due to some new changes to the parallel I/O implementation in CGNS which has not yet been released.

* CGNS: Reorder to put newest version on top

Based on review comments, place newest version (develop) first in list.
2018-12-19 20:02:24 -06:00
Todd Gamblin
207c37759c env: all commands that disambiguate specs should be env-aware
- some commands were missed in the rollout of spack environments

- this makes all commands that need to disambiguate specs restrict the
  disambiguation to installed packages in the active environment, as
  users would expect
2018-12-19 17:49:51 -08:00
Mark W. Krentel
84b33523ec dyninst: patch to build dyninst with older gcc (#10160)
* dyninst: patch to build dyninst with older gcc

Add 'v9.3.2-auto.patch'.  This patch changes some 'auto t: type' usage
to the older but equivalent 'type.begin()'.  This allows building
dyninst 9.3.2 with gcc 4.4 which doesn't support the newer syntax.
This patch is harmless with newer gcc.

* Fix typo in patch.  (My bad for sloppy cut-and-paste.)

* Restrict the patch to gcc 4.7 and earlier.  gcc 4.8 supports the newer
usage and thus doesn't need the patch.
2018-12-19 17:24:43 -08:00
Michael Kuhn
84c547cf6e sqlite: add 3.26.0 (#10138) 2018-12-19 17:07:03 -06:00
Owen Solberg
6b1b9031ea updated checksum for kallisto (#10158) 2018-12-19 17:06:33 -06:00
Michael Kuhn
67ab73d381 fetch_strategy: improve GitFetchStrategy (#10153)
Currently, only the Git repsository's URL shows up in the `spack info`
output, which makes it hard to distinguish different versions:
```
Safe versions:
    develop    [git] https://github.com/LLNL/H5Z-ZFP.git
    0.8.0      [git] https://github.com/LLNL/H5Z-ZFP.git
    0.7.0      [git] https://github.com/LLNL/H5Z-ZFP.git
```

This change adds additional information as shown when cloning a Git
repository:
```
Safe versions:
    develop    [git] https://github.com/LLNL/H5Z-ZFP.git on branch master
    0.8.0      [git] https://github.com/LLNL/H5Z-ZFP.git at commit af165c4
    0.7.0      [git] https://github.com/LLNL/H5Z-ZFP.git at commit 58ac811
```
2018-12-19 14:33:58 -08:00
jthies
5f3d9a4076 phist tag 1.7.5 was moved (#10155) 2018-12-19 13:36:49 -06:00
sknigh
5adec7e491 Updated Dakota to 6.9 (#10157)
* Updated Dakota to 6.9

* Change comment wording
2018-12-19 13:03:14 -06:00
Adam J. Stewart
adfbe71b1b Add python bindings to libxslt (#10149) 2018-12-19 11:39:19 -06:00
Adam J. Stewart
654360d2ad Add missing libiconv dependency to libxml2 (#10148) 2018-12-19 11:38:14 -06:00
Adam J. Stewart
0fcca9f422 Add list_url to docbook-xml (#10146) 2018-12-19 11:37:54 -06:00
Adam J. Stewart
e19e176e67 Add latest version of docbook-xsl (#10147) 2018-12-19 11:37:35 -06:00
Adam J. Stewart
ed0ca18c3c Restrict patch to oldest version of libbsd (#10145) 2018-12-19 11:37:11 -06:00
Satish Balay
c1e562f333 PETSc: add version 3.10.3 (#10154) 2018-12-19 10:46:02 -06:00
Neil Flood
a6e2f1a96a mapserver: new package (#10067) 2018-12-19 10:04:25 +01:00
Massimiliano Culpo
e057500009 Added labels in github issue templates (#10128) 2018-12-19 09:56:26 +01:00
Adam J. Stewart
c1a99bf8ec Add additional info to MesonPackage docs (#10133)
* Add additional info to MesonPackage docs

* No Pygments lexer for Meson code, default to none
2018-12-18 21:51:42 -06:00
Elsa Gonsiorowski, PhD
b091fcdb8e fix for mpifileutils package (#10142)
* proper include & linking of libarchive

* due to linux headers, mfu can't build on mac

* hard code deps in configure line

rather than relying on pkg-config

* +xattr during config

* must also link the lib

* find mfu.h

* long lines
2018-12-18 21:51:24 -06:00
Dave
b27f81ac00 WarpX: Added dependency on fftw when +psatd (#10144) 2018-12-18 20:11:08 -06:00
Matthias Wolf
22d9938560 flatbuffers: add 1.10.0 (#10137)
Also unpin the version from the arrow package.
2018-12-18 10:53:02 -06:00
Adam J. Stewart
f8c650b9c4 Add pdf variant to cairo (#10135) 2018-12-18 16:39:36 +01:00
Justin Stanley
59d7854b89 clp: add build_directory, remove old hack (#10112)
* clp: add build_directory, remove old hack

* clp: use spack-build for building
2018-12-18 08:36:40 -06:00
Adam J. Stewart
d4b5fc141c Add latest version of libxkbcommon (#10134) 2018-12-17 19:27:58 -06:00
Alberto Chiusole
a41571a1b6 Add variant to ecflow to choose whether to use static boost libraries. (#9933)
When this variant is set, it requires boost to be built with the +pic variant.
2018-12-17 19:23:53 -06:00
David Hows
c70ea22c6f Add thread count variant to atlas (#9999)
* Add thread count variant

Atlas automatically configures itself and optimizes to run with a fixed number of threads. This can be overridden during compile by setting a flag and atlas will tune itself to use the specified number, rather than all system CPUs. 

Default value is the existing logic, autoconfigure.

* Fix Linting

* Another lint for longline
2018-12-17 19:12:00 -06:00
Jannek Squar
09d2df690a Add spack package for saga-gis (#10018)
* Add spack package for saga-gis

* Adjusted license header

* Adjust saga-gis package, added fixme comments

* Removed version constraint

* Fixed fixme comment
2018-12-17 19:10:50 -06:00
Matthias Diener
776f99a414 git: add version 2.20.1 (#10130) 2018-12-17 17:36:57 -06:00
Omar Awile
d313291c2d Added RocksDB package (#10084)
* Added rocksdb package

* Fixes based on @tristan0x and @pramodk comments

* Cleanup

* A couple minor fixes based on @adamjstewart 's advice

* Fixed flake8 errors
2018-12-17 17:36:45 -06:00
Adam J. Stewart
c2b546fa97 Add missing gettext dependency to at-spi2-core (#10124) 2018-12-17 14:00:53 -06:00
Todd Gamblin
37954a78ff Revert "mark: Create new package. (#7069)" (#10131)
This reverts commit 90b34c96d6.
2018-12-17 11:15:32 -08:00
Adam J. Stewart
bcd65906c9 Add latest version of gdk-pixbuf (#10126) 2018-12-17 13:04:40 -06:00
Adam J. Stewart
5964d14936 Add latest version of ghostscript (#10123) 2018-12-17 13:04:16 -06:00
Adam J. Stewart
fe73043170 Add missing libbsd dependency to libxdmcp (#10122) 2018-12-17 13:04:00 -06:00
Adam J. Stewart
9913b3b846 Add latest version of libbsd (#10121) 2018-12-17 13:03:43 -06:00
Adam J. Stewart
2d0ddd5d11 Add help messages to spack gpg subcommands (#10117) 2018-12-17 13:02:51 -06:00
Adam J. Stewart
d5d64bdf3b spack buildcache: --allow_root -> --allow-root (#10115) 2018-12-17 13:02:28 -06:00
Adam J. Stewart
29f26da04d Update Spack's Bash completion script (#10114)
* Update Spack's Bash completion script

* spack mirror create options changed
2018-12-17 13:02:09 -06:00
Adam J. Stewart
a8a0aee3f3 Add patch to fix windows.h include in freetype (#10075)
* Add patch to fix windows.h include in freetype

* Fix patch
2018-12-17 13:00:43 -06:00
Mark Olesen
cbedd507cf ENH: fixes and updates for openfoam-com build (#10065)
- previous removal of FOAM_EXT_LIBBIN (ThirdParty) from the environment
  during the build could lead to the system scotch library being found
  instead of the spack installation.

  Avoid this largely cosmetic change to the setting in favour of
  improved build robustness. These modifications will be largely
  superfluous in the 1812 release anyhow.

- Split the patching algorithm into 'regular' and '@:1806' since the
  next versions of openfoam will again need fewer patches.

- Add hook into foamCreateManpage to be used where available
2018-12-17 12:58:09 -06:00
Greg Sjaardema
ccce3b79ab SEACAS: Add preliminary support for seacas package (#9972)
* SEACAS: Add preliminary support for seacas package

* Eliminate leftover from package I copied from.

* And remove another stray line

Sorry, thought I had checked this better...

* SEACAS: Shorten long lines; fixup indentation

* SEACAS: Remove unused os import

* Add PLASMA version 18.11.0 and Lua variant (#9689)

* Add PLASMA 18.11.1 with optional Lua and test for headers

* New versions for a few python modules (#9969)

* py-jupyter-console: Add version 5.2.0

* py-jupyter-core: add version 4.4.0

* py-lxml: add version 4.2.5

* py-zmq: add version 17.1.2

* py-terminado: add version 0.8.1

* py-pexpect: add version 4.6.0

* py-pytables: add version 3.4.4

* SEACAS: Default to mpi on

* SEACAS: Modify to reduce variants

Instead of using an `allpkgs` or explicitly specifying each individual subset,
changed to minimize variants:
 * By default, the exodus and IOSS libraries are built and a few
   executables directly related to the IOSS library.
 * variant `common` defaults to True and builds the "common" seacas
   applications.  This is based on my definition, so there may be
   could be some discussion on what belongs here.
 * variant `legacy` defaults to True and builds the remainder of the
   seacas applications.  These are still used, but mainly in more
   esoteric areas.  Might be better to default to False, but I wanted
   default to just build everything which is what other SEACAS builds
   always do...

Removed the `kokkos` variants for now as I need to do some more
thinking on how best to support this.  Not often used currently,
so shouldn't be an issue.

Cleaned up other issues raised by Adam and found by me.

* SEACAS: Address flake8 issues

* SEACAS: Clean up variant package logic

Fixed package variant logic.
Consolidated some other variant handling logic
Other minor refactors for hopefully better readability

* SEACAS: Fix flake8 error

Missing whitespace around operator fixed.
2018-12-17 12:57:31 -06:00
Ricardo Silva
f979b974a5 GDL: python integration fixes (#9936)
* GDL: python integration fixes

* renamed python-related variants to follow the convention
* building the Python module requires patches currently targetting 0.9.8 othwerwise asking for the Python module *only* builds the Pyhton module
* building the python module also requires patching the vendored (with the GDL) antlr to be built as a shared library

* Typo

Co-Authored-By: rmsds <ricardo.d.silva@gmail.com>

* Rename embed-python variant to embed_python
2018-12-17 12:47:16 -06:00
TZ
a02cf107b5 zoltan: rely on MPI wrappers instead of guessing MPI libraries (#8986)
* zoltan: only add gussed MPI libs if no MPI wrappers are used

- if MPI-wrappers are used for compilation, we can assume that
  linking works without manually specifying MPI libs
  (guessing may result in wrong libs, cf. #8979)
- thus, only guess the NPI libs and add them explicitly if no
  MPI-wrappers are used
- use llnl.util.filesystem.find_libraries instead of a locally
  defined routine to guess the MPI libs if needed
  (cf. #8979)

* zoltan: rely on MPI-wrappers to know the required MPI libs
2018-12-17 12:45:49 -06:00
lingnanyuan
90b34c96d6 mark: Create new package. (#7069)
* mark: Create new package.

* mark: change description.

* mark: change description.

* mark: Delete set_up environment.

* mark: replace join_path(prefix.bin, mark) with prefix.bin.mark
2018-12-17 12:34:16 -06:00
Adam J. Stewart
ae307f5b0f Add latest version of atk (#10125) 2018-12-17 08:48:31 +01:00
jthies
17c77533ee packages/phist: new version 1.7.5 (#10120) 2018-12-16 13:35:44 -06:00
Peter Scheibel
0217a651c8 mirrors: patches are now properly added to mirrors (#8993)
* This fixes a number of bugs:

  * Patches were not properly downloaded and added to mirrors.

  * Mirror create didn't respect `list_url` in packages

  * Update the `spack mirror` command to add all packages in the
    concretized DAG (where originally it only added the package specified
    by the user). This is required in order to collect patches that are specified
    by dependents. Example:
      * if X->Y and X requires a patch on Y called Pxy, then Pxy will only
        be discovered if you create a mirror with X.

  * replace confusing --one-version-per-spec option for `spack mirror create`
    with --versions-per-spec; support retrieving multiple versions for 
    concrete specs

* Implementation details:

  * `spack mirror create` now uses regular staging logic to download files 
    into a mirror, instead of reimplementing it in `add_single_spec`.

  * use a separate resource caching object to keep track of new
    resources and already-existing resources; also accepts storing
    resources retrieved from a cache (unlike the local cache)

  * mirror cache object now stores resources that are considered
    non-cachable, like (e.g. the tip of a branch);

  * the 'create' function of the mirror module no longer traverses
    dependencies since this was already handled by the 'mirror' command; 

  * Change handling of `--no-checksum`:

    * now that 'mirror create' uses stages, the mirror tests disable
      checksums when creating the mirror

    * remove `no_checksum` argument from library functions - this is now
      handled at the Spack-command-level (like for 'spack install')
2018-12-16 10:15:22 -08:00
Matthias Diener
9f528ccba0 env setup: support --help for cd/env commands (#10069) 2018-12-15 17:47:05 -08:00
Justin Stanley
87615d54cc r-multitaper: new package at 1.0-14 (#10110) 2018-12-15 20:08:33 +01:00
Massimiliano Culpo
61239257f9 Store ccache directory explicitly in Travis. (#10119)
* Store ccache directory explicitly in Travis.

Despite we started using ccache on `develop`, it seems the cache itself
is not stored from one CI build to the next. This might be du to the
fact that our language on Travis is Python and not C nor C++.

Hence here we store the ccache directory explicitly.
2018-12-15 17:53:51 +01:00
Justin Stanley
c973d761e9 r-popgenome: new package at 2.6.1 (#10108) 2018-12-15 08:44:20 -06:00
Justin Stanley
3b59bf9efa r-xnomial: new package at 1.0.4 (#10111)
* r-xnomial: new package at 1.0.4

* r-xnomial: add list_url
2018-12-15 08:43:08 -06:00
Adam J. Stewart
1424830378 spack pkg add: add help message (#10116) 2018-12-15 11:44:37 +01:00
Christoph Junghans
71a86bb840 .travis.yml: enable ccache (#6370) 2018-12-15 10:52:31 +01:00
Adam J. Stewart
caf94253e0 Add latest version of libsigcpp (#10103) 2018-12-14 21:09:33 -06:00
Adam J. Stewart
a55976747e Add latest version of bdw-gc (#10100) 2018-12-14 21:09:19 -06:00
Adam J. Stewart
316df3cd37 Add latest version of libatomic-ops (#10099) 2018-12-14 21:09:04 -06:00
Levi Baber
7a0c334d81 pbsuite: pythonpath should be prepended not set (#10113) 2018-12-14 18:12:51 -08:00
Justin Stanley
6469f8953d clp: add explicit datadir (#10109) 2018-12-14 16:20:47 -06:00
Andrew Gaspar
e9281cc436 Updates to Google Test: (#10079)
- Add version 1.8.1
- Change to sha256 checksums
2018-12-14 13:23:08 -06:00
Michael Kuhn
f224f4a57e qt: fix openssl dependency for older versions (#10106) 2018-12-14 11:11:31 -06:00
Adam J. Stewart
34499c9b82 Add latest version of libxslt (#10098) 2018-12-14 10:47:23 -06:00
Adam J. Stewart
d7b4160e67 Add latest version of poppler (#10101) 2018-12-14 10:47:07 -06:00
Adam J. Stewart
bfdbadf2bb Add latest version of cairo (#10102) 2018-12-14 10:46:52 -06:00
Massimiliano Culpo
020a01b18f Updated the Travis environment to xenial (#10090)
* Updated the Travis environment to xenial.
* Python 2.6 needs to remain on Trusty (can't be installed from Xenial)
2018-12-14 08:43:58 -08:00
Massimiliano Culpo
488e513e84 Turn on verbose output for MPICH builds in Travis (#10105)
Lately many CI runs for PRs are failing due to the `mpich` build that
times out on Travis (10 mins. without output). As the timeout seems to
happen consistently during the build phase, increasing the verbosity of
that test can help working around the issue.
2018-12-14 08:43:04 -08:00
Greg Becker
d2d0ab06b7 Fix spack package inheritance for module variables (#10097)
* we weren't properly setting module variables for the root package in a DAG -- just for transitive dependencies.
2018-12-14 08:37:22 -08:00
Adam J. Stewart
05f9c68c30 Add latest version of meson (#10104) 2018-12-14 09:10:55 -06:00
Elsa Gonsiorowski, PhD
76bfdd65fc make dtcmp an autotools spackage (#10095)
* make dtcmp an autotools spackage

* better code
2018-12-14 09:08:57 -06:00
Adam J. Stewart
3432a71430 Add new packages for ELSD and ELSDc (#10072) 2018-12-13 22:05:24 -06:00
Matthias Diener
289ad8f375 cmake: add version 3.13.2 (#10092) 2018-12-13 17:35:58 -06:00
Miles Perry
b7a2192f91 Feature/spm (#10053)
* extract spm12.ctf to get binaries and libraries

* flake8 edits

* flake8 edits

* spm: updates

* spm: previous version
2018-12-13 12:43:45 -06:00
Eric
7f60226662 trf: add version 4.07b and install fixes (#10093)
* trf: add version 4.07 and install fixes

* suggested fixes
2018-12-13 12:42:26 -06:00
Satish Balay
e87d394038 superlu-dist: update v6.1.0 checksum (#10078) 2018-12-13 09:05:47 -06:00
Jon Rood
5dd9a321a4 Add CUDA_HOME variable to cuda module file. (#10088) 2018-12-13 08:05:13 +01:00
Christoph Junghans
0b42cf4d96 lammps: add new stable version (#10086) 2018-12-12 11:08:59 -06:00
Denis Davydov
7d5058ebe4 boost: add 1.69.0 (#10083)
signals (v1) was removed in 1.69.0
2018-12-12 10:14:47 -06:00
Eric
ce00c13297 LEMON: Create new package (#10077) 2018-12-11 23:08:45 -06:00
Elsa Gonsiorowski, PhD
2b483f24f1 added sha256 for scr v1.2.0-2 (#10082) 2018-12-11 22:56:23 -06:00
Mark W. Krentel
ab8870fd51 gcc: fix sys_ustat.h patch for gcc 4.8 and 4.9 (#10081)
The sys_ustat.h.patch to file sanitizer_platform_limits_posix.cc from
PR #10046 does not apply cleanly to gcc 4.8 or 4.9 (or earlier).

GCC up to 4.8.x either don't have libsanitizer or else don't include
ustat.h in sanitizer_platform_limits_posix.cc.

GCC 4.9.x includes ustat.h, but needs a slightly different patch.

The patch applies to GCC 5.x up to 6.4, and 7.x up to 7.3 and also
8.1.0.

The patch is already included in the tar files for gcc 6.5.0, 7.4.0
and 8.2.0.
2018-12-11 22:54:12 -06:00
Stephen Herbein
92229e46e3 flux-core & flux-sched: fix compilation and dependencies (#10049)
* flux-sched: fix compilation errors

configure was being run twice becuase the staging symlinks were
confusing autotools

mirror flux-core in building in a subdirectory to avoid other common
compilation problems, like the one in PR #3543

* flux-core: update dependencies

munge is no longer a dependency

provide hints for lua version so that `spack install flux-core` works
"out-of-the-box". Currently, when no explicity version is provided, the
concretizer attempts to use lua@5.3, which is invalid. Closes #10000
2018-12-11 22:34:58 -06:00
Brian Van Essen
abd575f273 Update LBANN generator and bug fix (#9906)
* Added a package for the MDAnalysis toolkit.

* Added Ninja as the generator for LBANN, Hydrogen, and Aluminum.  Also
fixed a bug in how the Conduit variant is included in LBANN.  Added
new versions for Hydrogen and LBANN.

* Updated lbann package so that the CMAKE parameters are set when the
variant is on and off.
2018-12-10 15:12:43 -08:00
Adam J. Stewart
ad046402b6 Make downloads from list_url deterministic (#10047) 2018-12-10 14:36:55 +01:00
Lukasz
22446d7303 mofem: add new releases and minor changes (#9138) 2018-12-10 14:33:31 +01:00
Matthias Diener
2670823c1e cloc: URLs are now consistent (#10068)
Fixed in upstream:
https://github.com/AlDanial/cloc/issues/352
2018-12-10 14:28:52 +01:00
Tom Payerle
8f0fc259c8 metis: Fix issues with gcc6 and misleading indentation (#10058)
Added patch to GKlibSystem.cmake to disable warnings (which get
promoted to errors) due to -Wmisleading-indentation being added
to -Wall in gcc 6
2018-12-09 13:08:38 -06:00
Matthias Diener
f0326c0ccf gcc: add versions 7.4, 6.5 (#10061) 2018-12-08 09:22:28 -06:00
Jon Rood
2f80432f62 OpenMPI: adding static libraries with slurm support for latest versions. (#10055) 2018-12-08 13:49:09 +01:00
Abhinav Bhatele
05155cbc59 TraceR: add release tag/version (#10054) 2018-12-08 01:09:48 -06:00
Cameron Smith
130706d1b8 pumi: shared variant (#10057) 2018-12-08 01:08:58 -06:00
Matthias Diener
718379eea1 eztrace: add new package (#10060) 2018-12-08 01:06:28 -06:00
Justin Stanley
3955f7cba5 r-expint: new package at 0.1-5 (#10043) 2018-12-07 18:21:40 -08:00
Axel Huebl
892ae2043f Fix Catch2 Single Header (#10022)
Fix the install of the single header amalgate in catch2.

The public API for catch < 2.3.0 was "#include <catch.hpp>".
For 2.3.0+ it is "#include <catch2/catch.hpp>"
2018-12-07 18:13:40 -08:00
James Clark
1650e9c0b2 gcc: Add patch to build GCC with glibc 2.28 and later (#10046) 2018-12-07 18:06:07 -08:00
Justin Stanley
4471f9ea32 pbsuite: new package at 15.8.24 (#10059) 2018-12-07 18:01:44 -08:00
Justin Stanley
4d5b136270 scallop: new package at 0.10.3 (#10041) 2018-12-07 17:39:07 -08:00
Justin Stanley
76ab54caec r-sseq: new package at 1.20.0 (#10042) 2018-12-07 11:24:55 -06:00
Justin Stanley
d72ba01a71 r-blockmodeling: new package at 0.3.1 (#10044) 2018-12-07 11:24:43 -06:00
Mario Melara
138d74f40c Spades: Add version 3.13.0 (#10033)
* Spades: Add version 3.13.0

In version 3.13.0 the CmakeLists.txt dir is at a different location than
in other versions. Versions up to 3.12.0 are located in "src" whereas
3.13.0 is a level deeper at "assemblers/src".

* Remove git and add new version hash
2018-12-07 11:24:17 -06:00
Justin Stanley
fb5880ab14 clp: new package at 1.16.11 (#10040) 2018-12-06 19:31:33 -08:00
Michael Kuhn
6ec8e4146f cdo: fix URLs (#10025) 2018-12-06 18:04:50 -06:00
Gregory Becker
b072c9b457 multimethod: slight refactoring, documentation for code review 2018-12-06 15:48:23 -08:00
Gregory Becker
2621af41d1 fix MRO for multimethod.__call__ using iterative algorithm.
Add tests MRO for inherited multimethods with multiple inheritance
Add tests for inherited and overridden multimethods
2018-12-06 15:48:23 -08:00
Todd Gamblin
43d94d4a30 tests: fully parametrize multimethod test
- all multimethod tests are now run for both `multimethod` and
  `multimethod-inheritor`

- do this with a parameterized fixture (pkg_name) that runs the same
  tests on both
2018-12-06 15:48:23 -08:00
Todd Gamblin
61b859193d multimethod uses Spec() instead of parse_anonymous_spec()
- simplify logic in multimethod
- remove the requirement of multimethod invocations to walk up the stack.
2018-12-06 15:48:23 -08:00
Todd Gamblin
88cb11758b spec: refactor and clean up Spec initialization
- Since early Spack versions, the SpecParser has (weirdly) been
  responsible for initializing Spec fields.

- This refactors initialization to take place in Spec.__init__, as it
  probably should have originally.

- This makes the code easier to read, the parser easier to understand,
  and removes the use of __new__ in the parser to initialize the Spec.

- This also makes it possible to make a completely empty Spec with
  `Spec()` -- this is an abstract Spec that will match anything.
2018-12-06 15:48:23 -08:00
Todd Gamblin
e0d22519cd remove spurious print in zlib patch method 2018-12-06 15:48:23 -08:00
Gregory Becker
7bb7b94666 Added test for multimethod inheritance 2018-12-06 15:48:23 -08:00
Satish Balay
f35a91a88a superlu-dist: update to version 6.1.0 (#10037) 2018-12-06 09:46:17 -06:00
Jon Rood
bba6df4a1f Adding patch to remove unicode character from pyrope readme file (#9988)
* Adding new versions of py-rope.
2018-12-06 11:11:23 +01:00
Nichols A. Romero
298da8e2c4 Quantum ESPRESSO update - Nov 2018 (#9853)
* Add mising QE releases.

* Update QE dependencies and conflicts.

* QE 6.3 install method requires a patch to work properly.

* include QE git develop branch

* QE HDF5 needs Fortran support. HDF5 versions prior to 1.8.16 leads to QE runtime errors.

* Number of MKL related conflicts for QE.

* Flake8 fixes for QE for hdf5 lines.

* Pass in all compilers properly to QE configure

* Fixed external BLAS/LAPACK linkage in QE.

* Library search was problematic in QE.

* Add section headings to QE package.

* External FFTW compatible libraries properly detected in QE.

* Flake8 fixes for QE

* QE configure defaults to False for ELPA, thus Spack package should as well.

* QE depends on FFTW3 provider instead of FFTW explictly.

* Primary QE repo is gitlab.com, not github.com. Github mirror lags behind gitlab site.

* Support both 6.3-backports branch and develop branch in QE.

* QE patch needed for proper MKL detection. MKL_ROOT is detected and preferred, still falls back to finding first MKL installation in /opt/intel.

* Use FFTW-API provider versioned interface for specify QE FFT dependency.

* QE FFTW conflicts no longer need thanks to FFTW-API provider versioned interface.

* Flake8 3.6.0 fix in support of https://github.com/spack/spack/pull/9853

* Fix QE conflict with ilp64 variant in support of https://github.com/spack/spack/pull/9853

* Remove custom url_for_version for QE package and use builtin url instead. In support of https://github.com/spack/spack/pull/9853

* Use FFTW builtin flags for QE instead of custom Python code. In support of https://github.com/spack/spack/pull/9853

* Fix typo in QE package comments. In support of https://github.com/spack/spack/pull/9853

* Future proof QE package patches in anticipation of QE >= 6.3.1. In support of https://github.com/spack/spack/pull/9853
2018-12-06 10:57:52 +01:00
Eric
dcb27c008a DIAMOND: Add version 0.9.23 (#10030) 2018-12-05 19:16:51 -06:00
Jannek Squar
8951cc5d77 Fix doxygen package (#10021) 2018-12-05 19:02:38 -06:00
Matthias Diener
0009854e33 cloc: add version 1.80 (#10029) 2018-12-05 18:55:27 -06:00
sknigh
060d1944d4 Rewrite Rust package (#9998) 2018-12-05 20:15:45 +01:00
Matthias Diener
5434a25076 openblas: add version 0.3.4 (#10016) 2018-12-05 08:41:58 -06:00
Christoph Junghans
d149ab63a9 pfunit: add mpi-test patch (#9387) 2018-12-05 06:15:16 -07:00
Jon Rood
583617ed67 Hwloc and numactl updates (#9987)
* Adding version 2.0.12 of numactl.

* Adding new versions of hwloc.

* Adding NVML variant to hwloc.

* Adding gl variant to hwloc.

* Updating hwloc numactl dependency and gl dependency.

* Using gl virtual package in hwloc.
2018-12-05 10:26:53 +01:00
Justin Stanley
87bf5296c3 biobloom: new package at 2.2.0 (#10014) 2018-12-04 17:20:24 -06:00
Justin Stanley
68a0305e13 sdsl-lite: new package at 2.1.1 (#10013) 2018-12-04 17:20:10 -06:00
Miles Perry
6020123a0b added bwa runtime dep (#10012) 2018-12-04 17:19:56 -06:00
Matthias Diener
deda7fdd60 ffmpeg: add version 4.1 (#10015) 2018-12-04 17:19:40 -06:00
Denis Davydov
121362383b dealii: do not hardcode prefix.include for BLAS/LAPACK (#10008)
* dealii: do not hardcode prefix.include for BLAS/LAPACK

* dealii: rename lapack_blas -> lapack_blas_libs
2018-12-04 16:55:41 -06:00
HAOCHENG LIU
ce485731bb Remove openmp version guard in vtkm and add precision options (#10005)
Clang 8.0 now supports openmp 4.5 and many commerical compilers also support
openmp >= 4.0. This commit removes the openmp version guard and rely on CMake
to throw errors out when openmp version requirement is not satisified.

It also add options for precision control.
2018-12-04 11:53:17 -08:00
Greg Sjaardema
9f8e445510 CGNS: Add option for 64-bit integers (#9990)
* CGNS: Add option for 64-bit integers

Added the `int64` variant which will build the library using 64-bit integers for certain values.  This gives the capability to have models with more than 2 billion cells and/or nodes.  

Beginning with CGNS-3.1.0, two new typedef variables have been introduced to support 64-bit mode. The `cglong_t` typedef is always a 64-bit integer, and `cgsize_t` will be either a 32-bit or 64-bit integer depending on how the library was built. Many of the C functions in the MLL have been changed to to use `cgsize_t` instead of `int` in the arguments. These functions include any that may exceed the 2Gb limit of an` int`, e.g. zone dimensions, element data, boundary conditions, and connectivity. In Fortran, all integer data is taken to be `integer*4` for 32-bit and `integer*8` for 64-bit builds.
2018-12-04 18:13:49 +01:00
Greg Sjaardema
ec67bbec2f EXODUS: Update version and dependencies (#9971)
* EXODUS: Update version and dependencies

Allow pulling master version from git.  Note that I hope to have better versioning "soon"

Add requirement to use Netcdf-4.6.1 or later as those versions no longer require changing the `maxdims` or `maxvars` defines in the netcdf.h include file.  With these versions, Exodus can use an unmodified NetCDF.  These versions of NetCDF are also better than previous versions (code quality, performance, robustness).

It is still possible to run exodusII with previous NetCDF versions, but I don't know how to specify that the dependency where maxdims/maxvars variants are only needed for versions prior to 4.6.0.  

I also removed the explicit dependency on HDF5 as that dependency should be applied through the NetCDF dependency.

* Remove white-space on blank line
2018-12-04 09:48:15 -06:00
Axel Huebl
427993b951 c-blosc: 1.15.0 (#10009)
Add latest version of c-blosc.
2018-12-04 09:10:08 -06:00
Kelly (KT) Thompson
4d26faac81 Provide a new spackage for py-pint. (#9991)
* Provide a new spackage for py-pint.

Pint is a Python package to define, operate and manipulate physical quantities:
the product of a numerical value and a unit of measurement. It allows arithmetic
operations between them and conversions from and to different
units. https://pint.readthedocs.io/en/latest/

* Switch hash from md5 to sha256.
2018-12-04 08:58:11 -06:00
Greg Sjaardema
b471e2768b MATIO: New versions (#9993)
Add several new versions so that current functionality can be accessed.  Current version is now 1.5.13.

Update `url`, `list_url`, and `list_depth` so spack can find available versions
2018-12-04 08:53:15 -06:00
Oliver Breitwieser
3cf998a5db Add tmux@2.8 (#10010) 2018-12-04 08:37:09 -06:00
Greg Sjaardema
231888f3e9 PNETCDF: Update with current versions (#9982)
* PNETCDF: Update with current versions

Added latest versions. (1.10.0, 1.9.0, 1.8.1)

* PNETCDF: Revert version change in url

Reverted the change in the url variable version since not required.
2018-12-04 08:31:41 -06:00
Greg Sjaardema
6e3b016aa2 NETCDF: Add new versions and update url (#9970)
* NETCDF: Add new versions and update url

Added the 4.6.2 version which was recently released.
Changed the url to point to the official Unidata site and added option to retrieve master version from git.

* NETCDF: checksum and version updates

Reverted back to use of previous URL.  The `https://github.com/Unidata/netcdf-c/archive/v4.6.2.tar.gz` location is newer, but spack does not seem to be able to access all of the versions at that location -- only goes back to 4.5.0.  Since several installations are still providing 4.4.0, thought it best to go back to previous url.  However, it looks like the naming convention has changed since 4.6.2, so need to provide explicit url for 4.6.2.  Probably best to go to a `url_for_version()` scheme if that naming convention stays in place?
2018-12-04 15:03:25 +01:00
Bert Wesarg
262b3f859e boost: 1.68 also needs boost_1.67.0_pgi.patch (#9980)
Its in upstream with the upcoming 1.69 release though.
2018-12-04 14:49:20 +01:00
Peter Scheibel
34f64f1f3f improved constraint conflict error message (#9975) 2018-12-04 14:19:57 +01:00
Matthias Wolf
e3aa36f4cb fix: adapt junit template to escape std{out,err} (#9935) 2018-12-04 14:05:45 +01:00
George Hartzell
0c3f220fb1 Disallow bcl2fastq2 on OS X (#9966)
* Disallow bcl2fastq2 on OS X

[Illumina's computing requirements][reqs] claim support for RHEL/CentOS and
go on to say:

> May be possible to install and run on other 64-bit Linux distributions or Unix variants.

The sufficient issue is its reliance of malloc.h.  There may be more.

[reqs]: https://support.illumina.com/sequencing/sequencing_software/bcl2fastq-conversion-software/computing-requirements.html

* Add an informative msg for the user
2018-12-04 13:44:15 +01:00
Neil Flood
e3d204cb8f Expand dependency on qt to allow qt4 (#9964) 2018-12-04 13:37:37 +01:00
Satish Balay
808c2ea5ce petsc: when petsc is built with fortran [default in spack] its best to use hdf5+fortran (#9986) 2018-12-04 13:32:30 +01:00
Neil Flood
47b7016ea7 r-optparse: new package (#9967) 2018-12-04 13:20:08 +01:00
Nick Forrington
9551b34cb5 pgi: Add checksum for PGI 18.10 (#9985) 2018-12-04 13:12:20 +01:00
Matthias Diener
dfb02fd078 cmake: add version 3.13.1 (#9983) 2018-12-04 13:09:49 +01:00
Levi Baber
27e8fcb945 abyss: new version (#9981) 2018-12-04 13:02:36 +01:00
sknigh
a9695bac50 Added missing libtool dependencies to libvterm and unibilium (#10007) 2018-12-04 13:01:37 +01:00
Robert Maynard
0d033a042c Download CMake sources from the Github releases (#10003)
Now that CMake is providing CMake release artifacts on github,
we should prefer those as they have better download speeds and
uptime.
2018-12-03 12:35:51 -06:00
jthies
3a2045b7c0 Phist 1.7.4 (#9996)
* packages/phist: new version 1.7.4 with new variant 'host' to enable/disable host-specific optimizations.
2018-12-03 09:40:51 -06:00
HAOCHENG LIU
66a62d82c4 Bump vtkm to version 1.3 and add new features (#9968)
This commit allows users to enable openmp, rendering, logging and mpi
in vtkm. Meanwhile, it adds support for cuda architecture selection.

[VTK-m 1.3 Release notes](https://gitlab.kitware.com/vtk/vtk-m/tags/v1.3.0)
2018-11-30 19:48:22 -08:00
Mark W. Krentel
cc5446f25c hpctoolkit: overhaul to use spack dependencies (#9946)
Overhaul hpctoolkit to AutotoolsPackage and to build its dependencies
directly from spack instead of using hpctoolkit-externals.

Remove hpctoolkit-externals since it's no longer needed.
2018-11-30 18:11:12 -08:00
jwallior
930debcf35 New versions for a few python modules (#9969)
* py-jupyter-console: Add version 5.2.0

* py-jupyter-core: add version 4.4.0

* py-lxml: add version 4.2.5

* py-zmq: add version 17.1.2

* py-terminado: add version 0.8.1

* py-pexpect: add version 4.6.0

* py-pytables: add version 3.4.4
2018-11-28 21:44:15 -06:00
Piotr Luszczek
8375b5b571 Add PLASMA version 18.11.0 and Lua variant (#9689)
* Add PLASMA 18.11.1 with optional Lua and test for headers
2018-11-28 16:59:05 -06:00
Ondřej Čertík
62f1cf3678 Add f18 package (#9183)
* Add f18 package

* Fix flake8 errors

* Install the f18 binary into prefix.bin by hand

* Add spack-build into the path

* Fix the license header
2018-11-28 14:13:30 -06:00
Massimiliano Culpo
e998a399da Injected flags have a consistent order (#9960)
Fixes #9908

Spack was assembling flags in a manner that could in different
orderings for repeated concretizations of the same spec and config
2018-11-28 10:23:38 -08:00
Michael Kuhn
5cea4a75d7 glib: disable SELinux explicitly (#9956) 2018-11-28 10:06:17 +01:00
George Hartzell
e4e980ee97 bcl2fastq2 package: recursively delete after copy (#9959)
Fixes #9944

73c978d replaced a move with a copy, which cased rmdir to fail (as
it expects an empty directory). This switches to use `shutil.rmtree`
instead.
2018-11-27 17:22:14 -08:00
Scott Wittenburg
33b112a60d Expose option to save all dependencies when writing spec.yaml (#9965) 2018-11-27 17:13:39 -08:00
Jon Rood
4c3091b05e Fixing problems with lammps dependencies voropp and latte (#9909)
* Fixing problems with lammps dependencies voropp and latte.

* Always replacing CFLAGS in voropp and specifying voropp+pic dependency in lammps.
2018-11-27 16:55:21 -07:00
Matthias Diener
2164181d0a git: add version 2.19.2 (#9961)
Also fixes instructions for new releases
2018-11-27 16:32:22 -06:00
Neil Flood
8a78c9c6bc Rename py-proj to py-pyproj, consistent with Spack's current naming conventions (#9962) 2018-11-27 16:31:30 -06:00
thelfer
2e04f3daab new package: add support for the tfel package (#9930) 2018-11-27 07:16:55 +01:00
Michael Kuhn
16d3e44515 py-pygobject: add missing pkgconfig dependency (#9955) 2018-11-26 21:41:44 -06:00
Axel Huebl
b26c85301d OpenMPI: Prefer Last 3.X (#9945)
The latest OpenMPI release, v4.0.0, does not build with many GCC
variants. Since this is our default, a lot of users get hit.

Let's wait for some point releases.
2018-11-26 16:46:04 -06:00
Eric
20a6dde10b GATK: Add version 4.0.11.0 (#9953) 2018-11-26 14:54:05 -06:00
Eric
d9046e70c1 minced: Add version 0.1.6 (#9951) 2018-11-26 14:22:17 -06:00
Matthias Diener
bab3d7734a hdf5: add version 1.8.21 (#9952) 2018-11-26 12:56:44 -06:00
Michael Kuhn
7df14134c1 go: add 1.11.2 (#9948) 2018-11-26 11:33:55 -06:00
Eric
5cd8233139 metabat: Add version 2.11.2 (#9950) 2018-11-26 11:32:14 -06:00
Miles Perry
28e93a7a79 Feature/gatk (#9872)
* added 3.8-1 version

* fixed flake8 stuff
2018-11-26 11:30:21 -06:00
Adam J. Stewart
06dcf72f14 Uncomment dependencies previously disallowed by concretizer (#9942) 2018-11-26 09:11:16 +01:00
Sinan
096922c39d Package/py scikit learn (#9843)
* add v0.20 specific dependency versions, also add cython and py-test as dependencies

* make flake8 happy

* make cython a build-only dependency
2018-11-24 19:03:30 -06:00
Neil Flood
4c1733bff4 py-pygresql: new package (#9922)
* py-pygresql: new package

* Added dependency on py-setuptools, as the build will use it if present
2018-11-24 17:45:27 -06:00
Neil Flood
e3e01ab3d7 py-psycopg2: new package (#9926)
* py-psycopg2: new package

* Added dependency on py-setuptools, as the build will use it if present
2018-11-24 17:45:16 -06:00
Denis Davydov
058a772a52 p4est: fix a typo (#9932) 2018-11-24 17:45:04 -06:00
Matthias Diener
9d2ea84112 mc: add version 4.8.21 (#9943) 2018-11-24 17:42:46 -06:00
Matthias Diener
e86a28aff7 intel-parallel-studio: add missing updates to 2019.1 (#9941) 2018-11-24 15:44:57 -06:00
Neil Flood
9945a59c47 py-geopandas: New package. (#9919)
* py-geopandas: New package, including packages for its dependencies

* Trailing whitespace removed, etc

* One more trailing whitespace

* Removed some extraneous dependencies. No idea why I thought I needed them, but it now builds fine without them.

* Added a variant +plotting, to include the dependencies required for plotting, as these are large-ish if not being used.

* Added explicit dependency on py-matplotlib
2018-11-24 15:44:44 -06:00
Matthias Diener
25b9938ad1 cmake: add version 3.13.0 (#9940) 2018-11-24 14:23:10 -06:00
Neil Flood
a0fc573ff4 r-geor: new package, and a couple of its dependencies (#9920)
* r-geor: new package, and a couple of its dependencies

* Update to new copyright header

* Include the list_url for the R package archive dir

* Added explicit version ranges on dependencies, as per the relevant CRAN pages

* Correct dependency types in r-splancs.
2018-11-24 14:21:54 -06:00
Andreas Baumbach
862d1799fb new version 18.1 for py-pip (#9938)
Change-Id: Ie462e802049dd6150767dc555fb5708999e081ec
2018-11-23 18:09:20 -06:00
Neil Flood
2e510413c3 r-compositions: new package, including its dependencies (#9921)
* r-compositions: new package, including its dependencies

* Include the list_url for the R package archive dir

* Added explicit version ranges on dependencies, as per the relevant CRAN pages
2018-11-23 18:06:57 -06:00
Neil Flood
3557b6e149 libspatialite: new package (#9923) 2018-11-22 13:54:52 -06:00
Nicholas Labello
13f2e68688 munge: update versions and url format to reflect switch to .xz format… (#9916)
* munge: update versions and url format to reflect switch to .xz format in recent releases

* package:munge remove unneeded version-specific urls
2018-11-22 13:13:40 -06:00
Eric
be92d46962 minced: add version 0.3.2 and fix install paths (#9918) 2018-11-22 13:13:06 -06:00
Neil Flood
c42ceb886c qca: new package (#9924) 2018-11-22 12:45:42 -06:00
Neil Flood
b6e664846a qjson: new package (#9925) 2018-11-22 12:45:17 -06:00
Denis Davydov
0f6f3ece95 p4est: apply patches to 2.0 only (#9928) 2018-11-22 12:40:22 -06:00
Michael Kuhn
f7a445e4b0 multitime: new package (#9929) 2018-11-22 12:39:51 -06:00
Michael Kuhn
ffaf617e74 flecsale: add missing dependencies and fix flecsi runtime model (#9774) 2018-11-22 12:38:59 -06:00
Ken Raffenetti
0eb8cd9a8f Add MPICH version 3.3 (#9915) 2018-11-21 14:42:52 -06:00
Mark W. Krentel
27ad0f1269 dyninst: overhaul package.py to CMakePackage (#9871)
Drop versions 8.1.x.  These were > 5 years old, no other spack package
uses them, and they used autotools.  Packages 'stat' and 'mitos' still
use 8.2.1, so we keep that.

Switch class Dyninst to CMakePackage.

Clean up how the versions depend on various packages.  For example,
Dyninst used libelf up to 9.2, and then elfutils starting with 9.3.
This makes things easier going forward.

Add variant 'openmp' (default True) to enable openmp support for
ParseAPI.  This was added in 10.0.0.

Add variant 'static' (default False) to also build static libraries.
This goes back to 9.1.0.

Disable cotire for the 9.3.x versions.  Cotire has no real use in a
one-time build and can break parallel builds with both static and
shared libs.
2018-11-21 10:47:19 -08:00
Elsa Gonsiorowski, PhD
1c5688fcbc correct sha for axl v1.1 (#9907) 2018-11-20 19:28:47 -06:00
Tom Scogland
ba5a251896 package: add asciidoctor gem (#9905)
* package: add asciidoctor gem

Faster, easier to use, less impossible to install correctly
implementation of asciidoc.

* ritual sacrifice of EOF whitespace to flake8
2018-11-20 14:32:44 -06:00
Tiziano Müller
84bc1d6654 CP2K related fixes and update (#9308)
* openblas: enable parallel builds

* cp2k: enable parallel builds

* cp2k: fix building on multilib/Suse distros

use the actual directory path where files where installed to instead of
the default prefix+'/lib'

* cp2k: ensure we have a non-header-only libxsmm

* openblas: disable max num CPU detection on virtualized build

* cp2k: install data and set compiled-in DATA_DIR

* cp2k: make libxc an optional dependency (enabled by default)

* cp2k: link libint statically

* cp2k: declare statically linked library deps as type=build

* cp2k: add support for PGI compiler

* cp2k: rename smm=none to smm=blas for clarification

* cp2k: blacklist unsupported compilers

* cp2k: mark wannier90 a build-time dep since statically linked

* cp2k: make pexsi and elpa optional

* cp2k: add support for v6.1

* libxc: add version 4.2.3

* cp2k: use pkg-config to link properly to libxsmm

* cp2k: fix OpenMP support by making it explicit

Previously, CP2K accepted threaded ELPA or BLAS, leading to #(CPU) processes
being spawned even though no explicit OpenMP was requested. Now the
`popt` variant should truly be thread free while the `psmp` variant uses
threads also internally.

* cp2k: source tarballs moved to GitHub
2018-11-20 09:23:01 -08:00
dorier
13b95b8ae6 Package: Mercury (#9903)
* added mercury package

* updating mercury package to satisfy flake8

* improved mercury package
2018-11-20 11:14:30 -06:00
Jon Rood
128af27c21 Add 2019.1 and 2018.4 version of the Intel performance libraries. (#9899)
* Add 2019.1 and 2018.4 version of the Intel performance libraries.

* Fixing typo.
2018-11-20 09:30:53 -06:00
Adam Moody
5127bb590f mpifileutils: add v0.8.1 (#9346) 2018-11-19 20:48:50 -06:00
Michael Kuhn
44d1d928e8 openssl: make 1.1.1 the default version (#9836)
* openssl: add 1.0.2p, 1.1.0i and 1.1.1

* openssl: make 1.1.1 the default version
2018-11-19 20:46:38 -06:00
Justin Stanley
7bb9020227 added several new perl modules (#9760) 2018-11-19 20:44:44 -06:00
Justin Stanley
9dfea8ee17 circos: new package starting at 0.69-6 (#9761)
* circos: new package starting at 0.69-6

* circos: add homepage, simplify paths

* circos: simplified more paths
2018-11-19 20:44:01 -06:00
Sinan
0a0e5642df gdk-pixbuf: explicitly disable building of gtk-docs (#9882) 2018-11-19 20:42:56 -06:00
Levi Baber
535035b223 r-rrpp: new package (#9887) 2018-11-19 20:42:45 -06:00
Jon Rood
1972376865 Adding openmpi version 4.0.0 (#9888) 2018-11-19 20:42:34 -06:00
Eric
177c5f3c6d breseq: Add version 0.33.1 (#9889) 2018-11-19 20:42:21 -06:00
Sinan
47a641f13b package/harfbuzz: disable building of gtk-docs, add new version (#9891) 2018-11-19 20:42:08 -06:00
Levi Baber
561a561d23 r-crosstalk: remove unnecessary constraint (#9892) 2018-11-19 20:41:41 -06:00
Levi Baber
71943703f2 r-geomorph: new version (#9890)
* r-geomorph: new version

* r-geomorph: min r version
2018-11-19 20:41:19 -06:00
Levi Baber
43a26d0850 r-diversitree: new package (#9893)
* r-diversitree: new package

* r-diversitree: system reqs
2018-11-19 20:41:01 -06:00
Levi Baber
7e1f96c0aa r-paleotree: new package (#9895) 2018-11-19 20:39:42 -06:00
Sinan
000bb8ca39 package/pango: disable gtk-docs (#9896) 2018-11-19 20:38:52 -06:00
Sinan
71464a8b0a package/gtkplus: disable gtk-docs (#9897) 2018-11-19 20:38:34 -06:00
Mark C. Miller
a6efd22e60 Explicitly set FC= empty for non-fortran builds (#9898) 2018-11-19 20:38:06 -06:00
Eric
0c1988ffdf Trimmomatic: Add version 0.38 (#9883) 2018-11-19 15:56:49 -06:00
Jon Rood
c8a1a81a87 Adding intel-parallel-studio cluster 2019.1 version (#9884) 2018-11-19 15:56:31 -06:00
Daniel Topa
7402112b1f Add UCX v1.4.0 (#9881)
Verification build
dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ spack install ucx % gcc @ 4.8.5
==> Installing libsigsegv
==> Installing m4
==> Installing pkgconf
==> Installing ncurses
==> Installing readline
==> Installing gdbm
==> Installing perl
==> Installing autoconf
==> Installing automake
==> Installing libtool
==> Installing numactl
==> Installing zlib
==> Installing openssl
==> Installing diffutils
==> Installing bzip2
==> Installing xz
==> Installing libxml2
==> Installing tar
==> Installing gettext
==> Installing help2man
==> Installing bison
==> Installing flex
==> Installing libnl
==> Installing rdma-core
==> Installing ucx
==> Successfully installed ucx
  Fetch: 1.17s.  Build: 40.59s.  Total: 41.76s.
[+] /scratch/users/dantopa/new-spack/pr.ucx.spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/ucx-1.4.0-ilfonxj2f5my4ur65li3sr7kuvfg3kim

dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ spack spec ucx
Input spec
--------------------------------
ucx

Concretized
--------------------------------
ucx@1.4.0%gcc@4.8.5 arch=linux-centos7-x86_64
    ^numactl@2.0.11%gcc@4.8.5 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-centos7-x86_64
        ^autoconf@2.69%gcc@4.8.5 arch=linux-centos7-x86_64
            ^m4@1.4.18%gcc@4.8.5 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-centos7-x86_64
                ^libsigsegv@2.11%gcc@4.8.5 arch=linux-centos7-x86_64
            ^perl@5.26.2%gcc@4.8.5+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-centos7-x86_64
                ^gdbm@1.18.1%gcc@4.8.5 arch=linux-centos7-x86_64
                    ^readline@7.0%gcc@4.8.5 arch=linux-centos7-x86_64
                        ^ncurses@6.1%gcc@4.8.5~symlinks~termlib arch=linux-centos7-x86_64
                            ^pkgconf@1.5.4%gcc@4.8.5 arch=linux-centos7-x86_64
        ^automake@1.16.1%gcc@4.8.5 arch=linux-centos7-x86_64
        ^libtool@2.4.6%gcc@4.8.5 arch=linux-centos7-x86_64
    ^rdma-core@20%gcc@4.8.5 build_type=RelWithDebInfo arch=linux-centos7-x86_64
        ^cmake@3.12.4%gcc@4.8.5~doc+ncurses+openssl+ownlibs patches=dd3a40d4d92f6b2158b87d6fb354c277947c776424aa03f6dc8096cf3135f5d0 ~qt arch=linux-centos7-x86_64
            ^openssl@1.0.2o%gcc@4.8.5+systemcerts arch=linux-centos7-x86_64
                ^zlib@1.2.11%gcc@4.8.5+optimize+pic+shared arch=linux-centos7-x86_64
        ^libnl@3.3.0%gcc@4.8.5 arch=linux-centos7-x86_64
            ^bison@3.0.5%gcc@4.8.5 arch=linux-centos7-x86_64
                ^diffutils@3.6%gcc@4.8.5 arch=linux-centos7-x86_64
                ^help2man@1.47.4%gcc@4.8.5 arch=linux-centos7-x86_64
                    ^gettext@0.19.8.1%gcc@4.8.5+bzip2+curses+git~libunistring+libxml2 patches=9acdb4e73f67c241b5ef32505c9ddf7cf6884ca8ea661692f21dca28483b04b8 +tar+xz arch=linux-centos7-x86_64
                        ^bzip2@1.0.6%gcc@4.8.5+shared arch=linux-centos7-x86_64
                        ^libxml2@2.9.8%gcc@4.8.5~python arch=linux-centos7-x86_64
                            ^xz@5.2.4%gcc@4.8.5 arch=linux-centos7-x86_64
                        ^tar@1.30%gcc@4.8.5 arch=linux-centos7-x86_64
            ^flex@2.6.3%gcc@4.8.5+lex arch=linux-centos7-x86_64

Environment:
dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ echo $HOSTNAME
darwin-fe2.lanl.gov

dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ grep -i 'model name' /proc/cpuinfo | sort | uniq
model name      : Intel(R) Xeon(R) CPU E5-2695 v3 @ 2.30GHz

dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ lsb_release -d
-bash: lsb_release: command not found

dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ uname -a
Linux darwin-fe2.lanl.gov 4.18.8-1.el7.elrepo.x86_64 #1 SMP Sat Sep 15 10:10:09 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux

dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ date
Mon Nov 19 10:47:47 MST 2018

dantopa@darwin-fe2.lanl.gov:pr.ucx.spack $ pwd
/scratch/users/dantopa/new-spack/pr.ucx.spack

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2018-11-19 13:20:22 -06:00
Andrea Negri
494d48f012 new package: mongo-cxx-driver (#9880)
* new package: mongo-cxx-driver

* fixed url
2018-11-19 13:19:19 -06:00
Eric
36b4758a97 samtools: make zlib/bzip2 dependencies unconditional (#9866) 2018-11-19 10:36:48 -08:00
Andrea Negri
9aa9359604 libmongoc: updated versions (#9877) 2018-11-18 20:35:24 -06:00
Alberto Chiusole
c61250e2ef New package: ecFlow, a work flow manager. (#9867)
* New package: ecFlow, a work flow manager.

* Fix pep8 style issues.
2018-11-18 10:13:31 -06:00
Sajid Ali
c45080398c Add +x variant to petsc. (#9830)
* 	modified:   var/spack/repos/builtin/packages/petsc/package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py
2018-11-17 21:35:37 -06:00
simo-tuomisto
93879e575d mixcr: Added a new package for MiXCR. (#9864)
* mixcr: Added a new package for MiXCR.

* mixcr: Fixed spack license string.
2018-11-17 21:19:04 -06:00
Christoph Junghans
26e51ff170 lammps package: added new versions (#9868) 2018-11-16 14:52:26 -08:00
Sinan
22cd6494be py-cython: add new versions (#9846) 2018-11-16 13:20:34 -08:00
Justin Stanley
9dff444570 new package: r-gensa (starting at 1.1.7) (#9858) 2018-11-16 13:13:48 -08:00
Eric
dc2911208f py-ply: fix download url (#9862) 2018-11-16 13:12:05 -08:00
Eric
61adf39fe1 vt package: add zlib dependency (#9870) 2018-11-16 12:52:15 -08:00
Denis Davydov
abd7b185f7 intel-mkl: fix usage of openmp_libs and tbb_libs (#9863)
* intel-mkl: fix usage of openmp_libs and tbb_libs
* intel-mkl: remove trailing whitespace from openmp lib
2018-11-16 10:25:15 -08:00
Levi Baber
0a57f90d75 r-rgl: update url, add new version (#9796) 2018-11-16 15:26:09 +01:00
Michael Kuhn
c645c8e2a6 py-cffi: add missing pkgconfig dependency (#9784) 2018-11-15 19:38:52 +01:00
Michael Kuhn
d4f8bd5b8d py-cryptography: add 2.3.1 (#9785)
Required for openssl@1.1 compatibility.
2018-11-15 18:27:29 +01:00
Michael Kuhn
480951c231 krb5: add missing bison dependency for yacc (#9778) 2018-11-15 17:54:51 +01:00
Michael Kuhn
4d426e63f0 globus-toolkit: add missing pkgconfig dependency (#9775) 2018-11-15 17:54:22 +01:00
Justin Stanley
5be2169c9b hybpiper: add 1.3.1 (#9762) 2018-11-15 17:41:56 +01:00
Hadrien G
d7983e2aa4 Fix and update verrou (#9847)
* Fix verrou-python integration

* Add verrou 2.1.0

* Patch level changed in v2.1.0
2018-11-15 10:22:13 -06:00
Denis Davydov
32884dbc03 dbcsr: minor fixes due to upstream changes (#9799) 2018-11-15 17:10:50 +01:00
Leonhard Reichenbach
2b64047e07 Updated protobuf and py-protobuf to version 3.6.1 (#9536)
* Updated protobuf and py-protobuf to version 3.6.1

also updated the download link as the repository has moved

* protobuf: modified conflict
2018-11-15 16:59:04 +01:00
Adam J. Stewart
2723db9f73 Add GMT, CitcomS, and fstrack packages (#9768)
* Add initial packages for citcoms and dependencies

* Ignore Pythia imports

* Add py-merlin package

* Add GMT package

* Fixes to get GMT working

* Get hc package building

* Get CitcomS 3.2.0 working

* Add fstrack package

* Fix hash
2018-11-14 23:30:44 -06:00
Levi Baber
b9c50249cf r-cairo: new package (#9794)
* r-cairo: new package

* Update var/spack/repos/builtin/packages/r-cairo/package.py

Co-Authored-By: baberlevi <baberlevi@gmail.com>
2018-11-14 21:44:55 -06:00
dorier
8a41cbf813 Argobots: added @develop version and +valgrind variant (#9664)
* added develop version in argobots package and added valgrind variant

* made autotools required only for develop version

* corrected style

* Added --disable-valgrind

Added --disable-valgrind to explicitly disable it when +valgrind isn't provided.
2018-11-14 21:39:35 -06:00
Justin Stanley
12177e41f0 r-phytools: new package at 0.6-60 (#9766)
* r-phytools: new package at 0.6-60

* r-phytools: add list_url

* r-phytools: add deps, dep versions
2018-11-14 21:39:05 -06:00
Geoffrey Oxberry
605dc8bf85 openblas: add headers property (#9831)
This commit adds only the public headers from the full list of headers
installed by OpenBLAS; this list of headers is the same as in
netlib-lapack.
2018-11-14 21:35:42 -06:00
Mark W. Krentel
b53eb2026a elfutils: add version 0.174. (#9812)
Pass cflags to configure so that configure gets the values from the
spack install line.

Disable -Werror so that we don't fail the build over a stray warning.
2018-11-14 19:05:08 -06:00
Mark W. Krentel
2554e24d09 libunwind: add version for current snapshot (#9770)
Libunwind releases are few and far between, so we need access to
recent snapshots from the git repository.

Pass cflags to configure so that make will respect the value from the
spack install line.
2018-11-14 18:56:52 -06:00
Sergey Kosukhin
75e86a61fe netcdf-fortran: add LDFLAGS to fix contents of libnetcdff.la. (#9647) 2018-11-14 09:40:16 -06:00
Levi Baber
6a08eb88b1 new package: time (#9842) 2018-11-14 09:38:37 -06:00
Michael Kuhn
9a7a532084 node-js: add 10.13.0 and 11.1.0 (#9781)
Required for openssl@1.1 compatibility.
2018-11-13 11:39:52 -06:00
Michael Kuhn
e20efb3f8f cmake: add 3.12.4 (#9758) 2018-11-13 11:34:09 -06:00
Michael Kuhn
eddba22e1c perl-net-ssleay: fix build (#9783)
- Add 1.85
- OPENSSL_PREFIX has to be set in the environment, otherwise Spack's
  openssl will not be found
2018-11-13 11:30:04 -06:00
Justin Stanley
e1f9ddd574 erne: new package starting at 2.1.1 (#9676)
* erne: new package starting at 2.1.1

* erne: remove unused configure args

* erne: remove unused prefix arg

* erne: add explicit mpi disable
2018-11-13 11:02:39 -06:00
Luigi Calori
4f27bb4f4e Fix #9673 : build fonts on powerpc architecture (#9683)
* use AutotoolsPackage so config.guess get updated by autoreconf step, fix build problem on ppc #9673

* same error, same fix under ppc arch
2018-11-13 11:01:46 -06:00
Douglas Duckworth
ab48a96149 added r-bindr v 0.1.1 (#9717) 2018-11-13 10:58:31 -06:00
Levi Baber
b668e66b81 r-genomeinfodbdata: url fix (#9732) 2018-11-13 10:57:04 -06:00
Matthias Diener
8b1a5a8e6c intel-parallel-studio: add missing updates (#9742)
* intel-parallel-studio: add missing updates

* add 2018.4
2018-11-13 10:56:31 -06:00
Levi Baber
25d71e68f2 Packages/trinotate fix (#9745)
* trinotate: fix perl location

* trinotate: not where that is

* trinotate: glob

* trinotate: needs perl-dbd-sqlite
2018-11-13 10:55:59 -06:00
Alberto Chiusole
7938ff9653 Add pic variant to cflags in boost. (#9750)
* Add pic variant to cflags in boost.

* Improve description in pic variant of boost, see #9750.
2018-11-13 10:55:01 -06:00
Miles Perry
63535542a1 new version (#9752) 2018-11-13 10:53:47 -06:00
Michael Kuhn
05a4d5a0c6 glib: add 2.56.3 (#9754) 2018-11-13 10:52:56 -06:00
Michael Kuhn
55f8dbbba0 sqlite: add 3.25.3 (#9756) 2018-11-13 10:50:54 -06:00
Michael Kuhn
c7f2c819a1 gdbm: add 1.18.1 (#9757) 2018-11-13 10:50:30 -06:00
Michael Kuhn
52e990dfa1 lmdb: add 0.9.22 (#9759) 2018-11-13 10:49:24 -06:00
Daryl W. Grunau
ff30ab462b eospac version bump (#9763) 2018-11-13 10:47:11 -06:00
Justin Stanley
c26a965c3b r-combinat: new package at 0.0-8 (#9764)
* r-combinat: new package at 0.0-8

* r-combinat: add list_url
2018-11-13 10:41:54 -06:00
Michael Kuhn
a852028b02 glib: explicitly disable gtk-doc (#9771)
glib should not use the globally installed gtk-doc. Otherwise, gtk-doc
can fail with Python errors such as `ImportError: No module named site`.

This is due to the fact that Spack sets `PYTHONHOME`, which can confuse
the global Python installation that is used by gtk-doc.
2018-11-13 10:37:19 -06:00
Michael Kuhn
fe8c287036 nginx: add 1.15.6 (#9780)
Needed to compile with gcc@8 and recent versions of glibc.
2018-11-13 10:25:00 -06:00
Eric
3cd3631fb6 DIAMOND: add version 0.9.22 (#9790) 2018-11-13 10:20:53 -06:00
Eric
4b63b93485 stringtie: add version 1.3.4d (#9791) 2018-11-13 10:20:30 -06:00
Hans Pabst
23c2d5af38 LIBXSMM 1.10 (#9813)
* LIBXSMM 1.10

* Accurately replaced MD5 with SHA256 sums (libxsmm).
2018-11-13 10:09:47 -06:00
Eric
fea0722daa aragorn: add version 1.2.36 (#9817) 2018-11-13 10:09:14 -06:00
Eric
5ba76cf908 minimap2: Add versions 2.10 and 2.14 (#9818)
* Also add missing zlib dependency
2018-11-13 10:08:42 -06:00
Quinn
2f454c5317 New Package: Nyancat (#9819)
* nyancat: adding the most important piece of software ever written

* nyancat: some formatting updates

* nyancat: flake8 error fix
2018-11-13 10:07:54 -06:00
Matthias Diener
6743aef554 charm++: add version 6.9.0 (#9827) 2018-11-13 10:03:22 -06:00
Christoph Junghans
78c7a8218c gromacs: added 2018.[34] (#9828) 2018-11-13 10:02:59 -06:00
Geoffrey Oxberry
f1e5f8e37b hypre: patch only @2.13.0 and @2.14.0 on darwin (#9832) 2018-11-13 09:54:09 -06:00
Michael Kuhn
3f0fc98062 wt: add missing pkgconfig dependency and fix boost version range (#9835)
wt does not build with newer versions of boost.
2018-11-13 09:53:44 -06:00
Michael Kuhn
59a6eada53 libssh: fix fetching and add 0.8.5 (#9779)
Required for openssl@1.1 compatibility.
2018-11-13 09:51:57 -06:00
Michael Kuhn
68222f2639 libevent: add 2.1.8 and 2.0.22 (#9777)
- 2.1.8 is required for openssl@1.1 compatibility
- Introduce url_for_version since the URL has changed starting with
  version 2.0.22
2018-11-13 09:51:26 -06:00
Valentin Clement (バレンタイン クレメン)
1388f6e907 Add new version 1.2.0 to the package (#9837) 2018-11-13 09:49:08 -06:00
Matthias Diener
86b7e6abc3 man-db: add missing gdbm dependency (#9751) 2018-11-13 09:41:43 -06:00
Michael Kuhn
cc928481f8 openssh: add 7.9p1 (#9782)
- Required for openssl@1.1 compatibility
- Fix openssh's privilege separation path to be below the prefix
2018-11-13 09:41:17 -06:00
Jon Rood
b4c7ffd424 Adding Paraview version 5.6. (#9788) 2018-11-13 09:36:18 -06:00
Michael Kuhn
86e00e7294 ruby: add 2.5.3 (#9793)
Required for openssl@1.1 compatibility.
2018-11-13 09:35:47 -06:00
Michael Kuhn
66ef3c2b18 thrift: add missing pkgconfig dependency (#9834)
Without pkgconfig, Spack's openssl cannot be found.
2018-11-13 09:34:51 -06:00
Eric
f48820a71e barrnap package: Add versions 0.6 and 0.7 (#9820) 2018-11-13 09:33:56 -06:00
Adam J. Stewart
b771b4015a Fix bugs in Modules Tutorial (#9821)
Found a couple bugs while trying to copy and paste the exact
tutorial content.
2018-11-13 09:31:09 -06:00
Phil Tooley
16aa37bdfe New package: openimageio (#9715) 2018-11-13 00:14:29 -06:00
Phil Tooley
ff09fd5a85 New package: dcmtk (#9716) 2018-11-13 00:08:29 -06:00
Michael Kuhn
f56f6d4e38 Fix pkg-config dependencies (#9738)
Replace dependencies on specific pkgconfig implementation (e.g. pkgconf)
with dependency on pkgconfig virtual package
2018-11-13 00:01:41 -06:00
Michael Kuhn
077e509dda gplates package: improvements (#9735)
- Add version 2.1.0
- Now that #9264 has been merged, gplates seems to build fine with newer
  versions of gcc (tested with gcc@8)
- When using the ninja generator, gplates can be built in parallel
2018-11-12 23:56:59 -06:00
Alberto Chiusole
c7c3fab744 Add 'pic' variant to netcdf packages (#9605) 2018-11-12 23:54:11 -06:00
Peer-Timo Bremer
91302f89e4 TALASS package: replace old version with new version (#9703)
New version has bug fixes
2018-11-12 23:38:03 -06:00
Manav Bhatia
0b86675879 libMesh: new version and dependency updates (#9709)
* added v1.3.1 checksum
* added vtk and petsc variants
* bugfix: enable petsc when slepc variant is specified
2018-11-12 23:29:58 -06:00
Daniel Topa
79ad078f78 Open MPI: add versions 3.1.3, 3.0.3, update checksums (#9734)
All checksums are now sha256
2018-11-12 23:26:39 -06:00
Michael Kuhn
47d74f3bca pkgconf: Add 1.5.4 (#9737) 2018-11-12 23:22:34 -06:00
Matthias Diener
dbdee8e542 chrpath: add new package (#9708) 2018-11-12 23:21:56 -06:00
Phil Tooley
02cdfd654e version/dependency updates for ilmbase and openexr (#9714)
* include zlib dependency for openexr, fixes #7274
* version bump to openexr/ilmbase 2.3.0
2018-11-12 23:18:54 -06:00
Cameron Stanavige
230bdce34e new package: flatcc (#9695) 2018-11-12 23:11:52 -06:00
Axel Huebl
152346f275 nlohmann-json: add new version 3.4.0 (#9692) 2018-11-12 23:08:40 -06:00
Ross Miller
7c267e8534 py-numba: update dependencies and versions (#9706)
The latest version of py-numba (0.40.1) wants a newer version of
py-llvmlite.  Had to add that version to py-llvmlite/package.py.
2018-11-12 23:07:40 -06:00
Justin Stanley
87df41e0ca migrate: new package starting at 3.6.11 (#9707) 2018-11-12 23:05:54 -06:00
Sinan
9e67216593 new package: PyH5glance (#9700) 2018-11-12 18:55:49 -06:00
Sinan
ec7e5d3b8b new package: python htmlgen (#9699) 2018-11-12 18:47:04 -06:00
Denis Davydov
e04adbca66 gnuplot: add X11 dependency and QT terminal (#9722) 2018-11-12 18:45:27 -06:00
Justin Stanley
553cecaade r-manipulatewidget: new package at 0.10.0 (#9826) 2018-11-12 18:41:03 -06:00
Justin Stanley
2ee0d98be1 r-webshot: new package at 0.5.1 (#9824) 2018-11-12 18:38:48 -06:00
Levi Baber
dcb696bd3f r-callr: adding new dependencies (#9730) 2018-11-12 18:38:03 -06:00
Justin Stanley
5ed3873f2f r-convevol: new package at 1.3 (#9767) 2018-11-12 18:36:31 -06:00
Justin Stanley
8357c1e0bc r-miniui: new package at 0.1.1.1 (#9823) 2018-11-12 18:34:56 -06:00
Justin Stanley
407bfbc2cb r-clustergeneration: new package at 1.3.4 (#9765) 2018-11-12 18:34:03 -06:00
4552 changed files with 103891 additions and 33712 deletions

View File

@@ -4,33 +4,13 @@ coverage:
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"
default: yes
ignore:
- lib/spack/spack/test/.*
- lib/spack/env/.*
- lib/spack/docs/.*
- lib/spack/external/.*
- share/spack/qa/.*
- share/spack/spack-completion.bash
comment: off

View File

@@ -7,7 +7,6 @@ branch = True
source = lib
omit =
lib/spack/spack/test/*
lib/spack/env/*
lib/spack/docs/*
lib/spack/external/*

View File

@@ -1,6 +1,11 @@
.git
opt/spack
share/spack/docker/Dockerfile
share/spack/docker/build-image.sh
share/spack/docker/run-image.sh
share/spack/docker/push-image.sh
.git/*
opt/spack/*
/etc/spack/*
!/etc/spack/defaults
share/spack/dotkit/*
share/spack/lmod/*
share/spack/modules/*
lib/spack/spack/test/*

22
.flake8
View File

@@ -1,24 +1,32 @@
# -*- conf -*-
# flake8 settings for Spack core files.
#
# These exceptions ar for Spack core files. We're slightly more lenient
# These exceptions are for Spack core files. We're slightly more lenient
# with packages. See .flake8_packages for that.
#
# Let people line things up nicely:
# E1: Indentation
# - E129: visually indented line with same indent as next logical line
#
# E2: Whitespace
# - E221: multiple spaces before operator
# - E241: multiple spaces after ','
# - E272: multiple spaces before keyword
#
# Let people use terse Python features:
# - E731: lambda expressions
# E7: Statement
# - E731: do not assign a lambda expression, use a def
#
# W5: Line break warning
# - W503: line break before binary operator
# - W504: line break after binary operator
#
# These are required to get the package.py files to test clean:
# - F999: syntax error in doctest
#
# Exempt to allow decorator classes to be lowercase, but follow otherwise:
# - N801: CapWords for class names.
# N8: PEP8-naming
# - N801: class names should use CapWords convention
# - N813: camelcase imported as lowercase
# - N814: camelcase imported as constant
#
[flake8]
ignore = E129,E221,E241,E272,E731,F999,N801,W503,W504
ignore = E129,E221,E241,E272,E731,W503,W504,F999,N801,N813,N814
max-line-length = 79

View File

@@ -7,16 +7,18 @@
# 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
# Note that we also add *per-line* exemptions for certain patterns 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:
# F4: Import
# - F405: `name` may be undefined, or undefined from star imports: `module`
# - F821: undefined name `name` (needed for cmake, configure, etc.)
#
# F8: Name
# - F821: undefined name `name`
#
[flake8]
ignore = E129,E221,E241,E272,E731,F999,F405,F821,W503,W504
ignore = E129,E221,E241,E272,E731,W503,W504,F405,F821,F999,N801,N813,N814
max-line-length = 79

View File

@@ -1,4 +1,4 @@
# Contributor Covenant Code of Conduct
# Spack Community Code of Conduct
## Our Pledge
@@ -30,7 +30,7 @@ Project maintainers have the right and responsibility to remove, edit, or reject
## 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.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the Spack project or its community. Examples of representing the 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 the project may be further defined and clarified by Spack maintainers.
## Enforcement

View File

@@ -1,7 +1,7 @@
---
name: Bug report
about: Report a bug in the core of Spack (command not working as expected, etc.)
labels: bug
---
@@ -24,10 +24,10 @@ If Spack reported an error, provide the error message. If it did not report an e
but the output appears incorrect, provide the incorrect output. If there was no error
message and no output but the result is incorrect, describe how it does not match
what you expect. To provide more information you might re-run the commands with
the additional -sd flags:
the additional -d/--stacktrace flags:
```console
$ spack -sd <command1> <spec>
$ spack -sd <command2> <spec>
$ spack -d --stacktrace <command1> <spec>
$ spack -d --stacktrace <command2> <spec>
...
```
that activate the full debug output.
@@ -46,4 +46,4 @@ We encourage you to try, as much as possible, to reduce your problem to the mini
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!
Other than that, thanks for taking the time to contribute to Spack!

View File

@@ -1,7 +1,7 @@
---
name: Build error
about: Some package in Spack didn't build correctly
labels: "build-error"
---
*Thanks for taking the time to report this build failure. To proceed with the

View File

@@ -1,6 +1,7 @@
---
name: Feature request
about: Suggest adding a feature that is not yet in Spack
labels: feature
---

View File

@@ -0,0 +1,6 @@
FROM python:3.7-alpine
RUN pip install pygithub
ADD entrypoint.py /entrypoint.py
ENTRYPOINT ["/entrypoint.py"]

View File

@@ -0,0 +1,85 @@
#!/usr/bin/env python
#
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
"""Maintainer review action.
This action checks which packages have changed in a PR, and adds their
maintainers to the pull request for review.
"""
import json
import os
import re
import subprocess
from github import Github
def spack(*args):
"""Run the spack executable with arguments, and return the output split.
This does just enough to run `spack pkg` and `spack maintainers`, the
two commands used by this action.
"""
github_workspace = os.environ['GITHUB_WORKSPACE']
spack = os.path.join(github_workspace, 'bin', 'spack')
output = subprocess.check_output([spack] + list(args))
split = re.split(r'\s*', output.decode('utf-8').strip())
return [s for s in split if s]
def main():
# get these first so that we'll fail early
token = os.environ['GITHUB_TOKEN']
event_path = os.environ['GITHUB_EVENT_PATH']
with open(event_path) as file:
data = json.load(file)
# make sure it's a pull_request event
assert 'pull_request' in data
# only request reviews on open, edit, or reopen
action = data['action']
if action not in ('opened', 'edited', 'reopened'):
return
# get data from the event payload
pr_data = data['pull_request']
base_branch_name = pr_data['base']['ref']
full_repo_name = pr_data['base']['repo']['full_name']
pr_number = pr_data['number']
requested_reviewers = pr_data['requested_reviewers']
author = pr_data['user']['login']
# get a list of packages that this PR modified
changed_pkgs = spack(
'pkg', 'changed', '--type', 'ac', '%s...' % base_branch_name)
# get maintainers for all modified packages
maintainers = set()
for pkg in changed_pkgs:
pkg_maintainers = set(spack('maintainers', pkg))
maintainers |= pkg_maintainers
# remove any maintainers who are already on the PR, and the author,
# as you can't review your own PR)
maintainers -= set(requested_reviewers)
maintainers -= set([author])
if not maintainers:
return
# request reviews from each maintainer
gh = Github(token)
repo = gh.get_repo(full_repo_name)
pr = repo.get_pull(pr_number)
pr.create_review_request(list(maintainers))
if __name__ == "__main__":
main()

3
.gitignore vendored
View File

@@ -20,9 +20,10 @@
*.swp
/htmlcov
.coverage
#*
\#*
.#*
lib/spack/spack/test/.cache
/bin/spackc
*.in.log
*.out.log
*.orig

14
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,14 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
generate ci jobs:
script:
- "./bin/generate-gitlab-ci-yml.sh"
tags:
- "spack-pre-ci"
artifacts:
paths:
- ci-generation
when: always

9
.readthedocs.yml Normal file
View File

@@ -0,0 +1,9 @@
version: 2
sphinx:
configuration: lib/spack/docs/conf.py
python:
version: 3.7
install:
- requirements: lib/spack/docs/requirements.txt

View File

@@ -12,66 +12,55 @@ branches:
# Build matrix
#=============================================================================
# Adding the keyword dist to permit an `allow_failures` section
# under `matrix.include`. More information here:
#
# https://docs.travis-ci.com/user/customizing-the-build/#Rows-that-are-Allowed-to-Fail
dist: trusty
dist: xenial
jobs:
fast_finish: true
include:
- stage: 'style checks'
python: '2.7'
sudo: required
python: '3.8'
os: linux
language: python
env: TEST_SUITE=flake8
- stage: 'flake8 + documentation'
python: '2.7'
# Shell integration with module files
- python: '3.8'
os: linux
language: python
env: TEST_SUITE=doc
- stage: 'unit tests'
env: [ TEST_SUITE=bootstrap ]
- stage: 'unit tests + documentation'
python: '2.6'
sudo: required
dist: trusty
os: linux
language: python
env: TEST_SUITE=unit
env: [ TEST_SUITE=unit, COVERAGE=true ]
- python: '2.7'
sudo: required
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.4'
sudo: required
os: linux
language: python
env: TEST_SUITE=unit
env: [ TEST_SUITE=unit, COVERAGE=true ]
- python: '3.5'
sudo: required
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.6'
sudo: required
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.7'
sudo: required
os: linux
dist: xenial
language: python
env: TEST_SUITE=unit
- python: '3.6'
sudo: required
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=unit, COVERAGE=true ]
- python: '3.8'
os: linux
language: python
env: TEST_SUITE=doc
- os: osx
language: generic
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7 ]
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ]
if: type != pull_request
# mpich (AutotoolsPackage)
- stage: 'build tests'
python: '2.7'
@@ -79,50 +68,47 @@ jobs:
language: python
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
# astyle (MakefilePackage)
- python: '2.7'
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=astyle' ]
# tut (WafPackage)
- python: '2.7'
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=tut' ]
# py-setuptools (PythonPackage)
- python: '2.7'
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=py-setuptools' ]
# perl-dbi (PerlPackage)
# - python: '2.7'
# - python: '3.8'
# os: linux
# language: python
# env: [ TEST_SUITE=build, 'SPEC=perl-dbi' ]
# openjpeg (CMakePackage + external cmake)
- python: '2.7'
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=openjpeg' ]
# r-rcpp (RPackage + external R)
- python: '2.7'
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=r-rcpp' ]
# mpich (AutotoolsPackage)
- python: '3.6'
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
- stage: 'docker build'
sudo: required
- python: '3.8'
stage: 'docker build'
os: linux
language: generic
language: python
env: TEST_SUITE=docker
allow_failures:
- dist: xenial
- env: TEST_SUITE=docker
# temporary Python 2.6 exception while we figure out why Travis is hanging
- python: '2.6'
stages:
- 'style checks'
@@ -132,62 +118,66 @@ stages:
if: type = push AND branch IN (develop, master)
stages:
- 'flake8 + documentation'
- 'unit tests'
- 'build tests'
- name: 'unit tests - osx'
if: type IN (cron)
#=============================================================================
# Environment
#=============================================================================
# Use new Travis infrastructure (Docker can't sudo yet)
sudo: false
# Docs need graphviz to build
addons:
# for Linux builds, we use APT
apt:
packages:
- ccache
- cmake
- gfortran
- mercurial
- graphviz
- gnupg2
- cmake
- kcov
- mercurial
- ninja-build
- perl
- perl-base
- realpath
- r-base
- r-base-core
- r-base-dev
- perl
- perl-base
- zsh
# for Mac builds, we use Homebrew
homebrew:
packages:
- python@2
- gcc
- gnupg2
- ccache
- dash
- kcov
update: true
# ~/.ccache needs to be cached directly as Travis is not taking care of it
# (possibly because we use 'language: python' and not 'language: c')
cache:
pip: true
ccache: true
directories:
- ~/.mirror
- ~/.ccache
# Work around Travis's lack of support for Python on OSX
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update;
export HOMEBREW_NO_AUTO_UPDATE=1;
rm /usr/local/include/c++ ;
brew ls --versions python@2 > /dev/null || brew install python@2;
brew ls --versions gcc > /dev/null || brew install gcc;
brew ls --versions gnupg2 > /dev/null || brew install gnupg2;
pip2 install --upgrade pip;
pip2 install virtualenv;
virtualenv venv;
source venv/bin/activate;
fi
- ccache -M 2G && ccache -z
# Install various dependencies
install:
- pip install --upgrade pip
- pip install --upgrade six
- pip install --upgrade setuptools
- pip install --upgrade codecov
- pip install --upgrade codecov coverage==4.5.4
- pip install --upgrade flake8
- pip install --upgrade pep8-naming
- if [[ "$TEST_SUITE" == "doc" ]]; then
@@ -200,11 +190,11 @@ before_script:
- git config --global user.name "Test User"
# Need this to be able to compute the list of changed files
- git fetch origin develop:develop
- git fetch origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}
# Set up external deps for build tests, b/c they take too long to compile
- if [[ "$TEST_SUITE" == "build" ]]; then cp
share/spack/qa/configuration/packages.yaml etc/spack/packages.yaml;
- if [[ "$TEST_SUITE" == "build" ]]; then
cp share/spack/qa/configuration/*.yaml etc/spack/;
fi
#=============================================================================
@@ -215,28 +205,18 @@ services:
script:
- share/spack/qa/run-$TEST_SUITE-tests
- if [[ "$TEST_SUITE" == "docker build" ]]; then
login_attempted=0; login_success=0;
for config in share/spack/docker/config/* ; do
source "$config" ;
./share/spack/docker/build-image.sh;
if [ "$TRAVIS_EVENT_TYPE" != "pull_request" ]; then
if [ "$login_attempted" '=' '0' ]; then
if echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin; then
login_success=1;
fi;
login_attempted=1;
fi;
if [ "$login_success" '=' '1' ]; then
./share/spack/docker/push-image.sh;
fi
after_success:
- ccache -s
- case "$TEST_SUITE" in
unit)
if [[ "$COVERAGE" == "true" ]]; then
codecov --env PYTHON_VERSION
--required
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
fi
done;
fi
- if [[ "$TEST_SUITE" == "unit" || "$TEST_SUITE" == "build" ]]; then
codecov --env PYTHON_VERSION
--required --flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
fi
;;
esac
#=============================================================================
# Notifications

327
CHANGELOG.md Normal file
View File

@@ -0,0 +1,327 @@
# v0.13.4 (2020-02-07)
This release contains several bugfixes:
* bugfixes for invoking python in various environments (#14349, #14496, #14569)
* brought tab completion up to date (#14392)
* bugfix for removing extensions from views in order (#12961)
* bugfix for nondeterministic hashing for specs with externals (#14390)
# v0.13.3 (2019-12-23)
This release contains more major performance improvements for Spack
environments, as well as bugfixes for mirrors and a `python` issue with
RHEL8.
* mirror bugfixes: symlinks, duplicate patches, and exception handling (#13789)
* don't try to fetch `BundlePackages` (#13908)
* avoid re-fetching patches already added to a mirror (#13908)
* avoid re-fetching alread added patches (#13908)
* avoid re-fetching alread added patches (#13908)
* allow repeated invocations of `spack mirror create` on the same dir (#13908)
* bugfix for RHEL8 when `python` is unavailable (#14252)
* improve concretization performance in environments (#14190)
* improve installation performance in environments (#14263)
# v0.13.2 (2019-12-04)
This release contains major performance improvements for Spack environments, as
well as some bugfixes and minor changes.
* allow missing modules if they are blacklisted (#13540)
* speed up environment activation (#13557)
* mirror path works for unknown versions (#13626)
* environments: don't try to modify run-env if a spec is not installed (#13589)
* use semicolons instead of newlines in module/python command (#13904)
* verify.py: os.path.exists exception handling (#13656)
* Document use of the maintainers field (#13479)
* bugfix with config caching (#13755)
* hwloc: added 'master' version pointing at the HEAD of the master branch (#13734)
* config option to allow gpg warning suppression (#13744)
* fix for relative symlinks when relocating binary packages (#13727)
* allow binary relocation of strings in relative binaries (#13724)
# v0.13.1 (2019-11-05)
This is a bugfix release on top of `v0.13.0`. Specific fixes include:
* `spack find` now displays variants and other spec constraints
* bugfix: uninstall should find concrete specs by DAG hash (#13598)
* environments: make shell modifications partially unconditional (#13523)
* binary distribution: relocate text files properly in relative binaries (#13578)
* bugfix: fetch prefers to fetch local mirrors over remote resources (#13545)
* environments: only write when necessary (#13546)
* bugfix: spack.util.url.join() now handles absolute paths correctly (#13488)
* sbang: use utf-8 for encoding when patching (#13490)
* Specs with quoted flags containing spaces are parsed correctly (#13521)
* targets: print a warning message before downgrading (#13513)
* Travis CI: Test Python 3.8 (#13347)
* Documentation: Database.query methods share docstrings (#13515)
* cuda: fix conflict statements for x86-64 targets (#13472)
* cpu: fix clang flags for generic x86_64 (#13491)
* syaml_int type should use int.__repr__ rather than str.__repr__ (#13487)
* elpa: prefer 2016.05.004 until sse/avx/avx2 issues are resolved (#13530)
* trilinos: temporarily constrain netcdf@:4.7.1 (#13526)
# v0.13.0 (2019-10-25)
`v0.13.0` is our biggest Spack release yet, with *many* new major features.
From facility deployment to improved environments, microarchitecture
support, and auto-generated build farms, this release has features for all of
our users.
Spack grew by over 700 packages in the past year, and the project now has
over 450 contributors. Thanks to all of you for making this release possible.
## Major new core features
- Chaining: use dependencies from external "upstream" Spack instances
- Environments now behave more like virtualenv/conda
- Each env has a *view*: a directory with all packages symlinked in
- Activating an environment sets `PATH`, `LD_LIBRARY_PATH`, `CPATH`,
`CMAKE_PREFIX_PATH`, `PKG_CONFIG_PATH`, etc. to point to this view.
- Spack detects and builds specifically for your microarchitecture
- named, understandable targets like `skylake`, `broadwell`, `power9`, `zen2`
- Spack knows which compilers can build for which architectures
- Packages can easily query support for features like `avx512` and `sse3`
- You can pick a target with, e.g. `spack install foo target=icelake`
- Spack stacks: combinatorial environments for facility deployment
- Environments can now build cartesian products of specs (with `matrix:`)
- Conditional syntax support to exclude certain builds from the stack
- Projections: ability to build easily navigable symlink trees environments
- Support no-source packages (BundlePackage) to aggregate related packages
- Extensions: users can write custom commands that live outside of Spack repo
- Support ARM and Fujitsu compilers
## CI/build farm support
- `spack release-jobs` can detect `package.py` changes and generate
`.gitlab-ci.yml` to create binaries for an environment or stack
in parallel (initial support -- will change in future release).
- Results of build pipelines can be uploaded to a CDash server.
- Spack can now upload/fetch from package mirrors in Amazon S3
## New commands/options
- `spack mirror create --all` downloads *all* package sources/resources/patches
- `spack dev-build` runs phases of the install pipeline on the working directory
- `spack deprecate` permanently symlinks an old, unwanted package to a new one
- `spack verify` chcecks that packages' files match what was originally installed
- `spack find --json` prints `JSON` that is easy to parse with, e.g. `jq`
- `spack find --format FORMAT` allows you to flexibly print package metadata
- `spack spec --json` prints JSON version of `spec.yaml`
## Selected improvements
- Auto-build requested compilers if they do not exist
- Spack automatically adds `RPATHs` needed to make executables find compiler
runtime libraries (e.g., path to newer `libstdc++` in `icpc` or `g++`)
- setup-env.sh is now compatible with Bash, Dash, and Zsh
- Spack now caps build jobs at min(16, ncores) by default
- `spack compiler find` now also throttles number of spawned processes
- Spack now writes stage directories directly to `$TMPDIR` instead of
symlinking stages within `$spack/var/spack/cache`.
- Improved and more powerful `spec` format strings
- You can pass a `spec.yaml` file anywhere in the CLI you can type a spec.
- Many improvements to binary caching
- Gradually supporting new features from Environment Modules v4
- `spack edit` respects `VISUAL` environment variable
- Simplified package syntax for specifying build/run environment modifications
- Numerous improvements to support for environments across Spack commands
- Concretization improvements
## Documentation
- Multi-lingual documentation (Started a Japanese translation)
- Tutorial now has its own site at spack-tutorial.readthedocs.io
- This enables us to keep multiple versions of the tutorial around
## Deprecations
- Spack no longer supports dotkit (LLNL's homegrown, now deprecated module tool)
- `spack build`, `spack configure`, `spack diy` deprecated in favor of
`spack dev-build` and `spack install`
## Important package changes
- 3,563 total packages (718 added since 0.12.1)
- Spack now defaults to Python 3 (previously preferred 2.7 by default)
- Much improved ARM support thanks to Fugaku (RIKEN) and SNL teams
- Support new special versions: master, trunk, and head (in addition to develop)
- Better finding logic for libraries and headers
# v0.12.1 (2018-11-13)
This is a minor bugfix release, with a minor fix in the tutorial and a `flake8` fix.
Bugfixes
* Add `r` back to regex strings in binary distribution
* Fix gcc install version in the tutorial
# v0.12.0 (2018-11-13)
## Major new features
- Spack environments
- `spack.yaml` and `spack.lock` files for tracking dependencies
- Custom configurations via command line
- Better support for linking Python packages into view directories
- Packages have more control over compiler flags via flag handlers
- Better support for module file generation
- Better support for Intel compilers, Intel MPI, etc.
- Many performance improvements, improved startup time
## License
- As of this release, all of Spack is permissively licensed under Apache-2.0 or MIT, at the user's option.
- Consents from over 300 contributors were obtained to make this relicense possible.
- Previous versions were distributed under the LGPL license, version 2.1.
## New packages
Over 2,900 packages (800 added since last year)
Spack would not be possible without our community. Thanks to all of our
[contributors](https://github.com/spack/spack/graphs/contributors) for the
new features and packages in this release!
# v0.11.2 (2018-02-07)
This release contains the following fixes:
* Fixes for `gfortran` 7 compiler detection (#7017)
* Fixes for exceptions thrown during module generation (#7173)
# v0.11.1 (2018-01-19)
This release contains bugfixes for compiler flag handling. There were issues in `v0.11.0` that caused some packages to be built without proper optimization.
Fixes:
* Issue #6999: FFTW installed with Spack 0.11.0 gets built without optimisations
Includes:
* PR #6415: Fixes for flag handling behavior
* PR #6960: Fix type issues with setting flag handlers
* 880e319: Upstream fixes to `list_url` in various R packages
# v0.11.0 (2018-01-17)
Spack v0.11.0 contains many improvements since v0.10.0.
Below is a summary of the major features, broken down by category.
## New packages
- Spack now has 2,178 packages (from 1,114 in v0.10.0)
- Many more Python packages (356) and R packages (471)
- 48 Exascale Proxy Apps (try `spack list -t proxy-app`)
## Core features for users
- Relocatable binary packages (`spack buildcache`, #4854)
- Spack now fully supports Python 3 (#3395)
- Packages can be tagged and searched by tags (#4786)
- Custom module file templates using Jinja (#3183)
- `spack bootstrap` command now sets up a basic module environment (#3057)
- Simplified and better organized help output (#3033)
- Improved, less redundant `spack install` output (#5714, #5950)
- Reworked `spack dependents` and `spack dependencies` commands (#4478)
## Major new features for packagers
- Multi-valued variants (#2386)
- New `conflicts()` directive (#3125)
- New dependency type: `test` dependencies (#5132)
- Packages can require their own patches on dependencies (#5476)
- `depends_on(..., patches=<patch list>)`
- Build interface for passing linker information through Specs (#1875)
- Major packages that use blas/lapack now use this interface
- Flag handlers allow packages more control over compiler flags (#6415)
- Package subclasses support many more build systems:
- autotools, perl, qmake, scons, cmake, makefile, python, R, WAF
- package-level support for installing Intel HPC products (#4300)
- `spack blame` command shows contributors to packages (#5522)
- `spack create` now guesses many more build systems (#2707)
- Better URL parsing to guess package version URLs (#2972)
- Much improved `PythonPackage` support (#3367)
## Core
- Much faster concretization (#5716, #5783)
- Improved output redirection (redirecting build output works properly #5084)
- Numerous improvements to internal structure and APIs
## Tutorials & Documentation
- Many updates to documentation
- [New tutorial material from SC17](https://spack.readthedocs.io/en/latest/tutorial.html)
- configuration
- build systems
- build interface
- working with module generation
- Documentation on docker workflows and best practices
## Selected improvements and bug fixes
- No longer build Python eggs -- installations are plain directories (#3587)
- Improved filtering of system paths from build PATHs and RPATHs (#2083, #3910)
- Git submodules are properly handled on fetch (#3956)
- Can now set default number of parallel build jobs in `config.yaml`
- Improvements to `setup-env.csh` (#4044)
- Better default compiler discovery on Mac OS X (#3427)
- clang will automatically mix with gfortran
- Improved compiler detection on Cray machines (#3075)
- Better support for IBM XL compilers
- Better tab completion
- Resume gracefully after prematurely terminated partial installs (#4331)
- Better mesa support (#5170)
Spack would not be possible without our community. Thanks to all of our
[contributors](https://github.com/spack/spack/graphs/contributors) for the
new features and packages in this release!
# v0.10.0 (2017-01-17)
This is Spack `v0.10.0`. With this release, we will start to push Spack
releases more regularly. This is the last Spack release without
automated package testing. With the next release, we will begin to run
package tests in addition to unit tests.
Spack has grown rapidly from 422 to
[1,114 packages](https://spack.readthedocs.io/en/v0.10.0/package_list.html),
thanks to the hard work of over 100 contributors. Below is a condensed
version of all the changes since `v0.9.1`.
### Packages
- Grew from 422 to 1,114 packages
- Includes major updates like X11, Qt
- Expanded HPC, R, and Python ecosystems
### Core
- Major speed improvements for spack find and concretization
- Completely reworked architecture support
- Platforms can have front-end and back-end OS/target combinations
- Much better support for Cray and BG/Q cross-compiled environments
- Downloads are now cached locally
- Support installations in deeply nested directories: patch long shebangs using `sbang`
### Basic usage
- Easier global configuration via config.yaml
- customize install, stage, and cache locations
- Hierarchical configuration scopes: default, site, user
- Platform-specific scopes allow better per-platform defaults
- Ability to set `cflags`, `cxxflags`, `fflags` on the command line
- YAML-configurable support for both Lmod and tcl modules in mainline
- `spack install` supports --dirty option for emergencies
### For developers
- Support multiple dependency types: `build`, `link`, and `run`
- Added `Package` base classes for custom build systems
- `AutotoolsPackage`, `CMakePackage`, `PythonPackage`, etc.
- `spack create` now guesses many more build systems
- Development environment integration with `spack setup`
- New interface to pass linking information via `spec` objects
- Currently used for `BLAS`/`LAPACK`/`SCALAPACK` libraries
- Polymorphic virtual dependency attributes: `spec['blas'].blas_libs`
### Testing & Documentation
- Unit tests run continuously on Travis CI for Mac and Linux
- Switched from `nose` to `pytest` for unit tests.
- Unit tests take 1 minute now instead of 8
- Massively expanded documentation
- Docs are now hosted on [spack.readthedocs.io](http://spack.readthedocs.io)

View File

@@ -83,3 +83,11 @@ PackageLicenseDeclared: MIT
PackageName: six
PackageHomePage: https://pypi.python.org/pypi/six
PackageLicenseDeclared: MIT
PackageName: macholib
PackageHomePage: https://macholib.readthedocs.io/en/latest/index.html
PackageLicenseDeclared: MIT
PackageName: altgraph
PackageHomePage: https://altgraph.readthedocs.io/en/latest/index.html
PackageLicenseDeclared: MIT

View File

@@ -1,4 +1,4 @@
Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
Permission is hereby granted, free of charge, to any person obtaining a

View File

@@ -26,55 +26,43 @@ Then:
$ git clone https://github.com/spack/spack.git
$ cd spack/bin
$ ./spack install libelf
$ ./spack install zlib
Documentation
----------------
[**Full documentation**](http://spack.readthedocs.io/) for Spack is
the first place to look.
[**Full documentation**](http://spack.readthedocs.io/) is available, or
run `spack help` or `spack help --all`.
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.
Tutorial
----------------
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.
We maintain a
[**hands-on tutorial**](http://spack.readthedocs.io/en/latest/tutorial.html).
It covers basic to advanced usage, packaging, developer features, and large HPC
deployments. You can do all of the exercises on your own laptop using a
Docker container.
Get Involved!
Feel free to use these materials to teach users at your organization
about Spack.
Community
------------------------
Spack is an open source project. Questions, discussion, and
contributions are welcome. Contributions can be anything from new
packages to bugfixes, or even new core features.
packages to bugfixes, documentation, or even new core features.
### Mailing list
Resources:
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.
### Twitter
You can follow [@spackpm](https://twitter.com/spackpm) on Twitter for
updates. Also, feel free to `@mention` us in in questions or comments
about your own experience with Spack.
### Contributions
* **Slack workspace**: [spackpm.slack.com](https://spackpm.slack.com).
To get an invitation, [**click here**](https://spackpm.herokuapp.com).
* **Mailing list**: [groups.google.com/d/forum/spack](https://groups.google.com/d/forum/spack)
* **Twitter**: [@spackpm](https://twitter.com/spackpm). Be sure to
`@mention` us!
Contributing
------------------------
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
@@ -92,6 +80,13 @@ branching model. The ``develop`` branch contains the latest
contributions, and ``master`` is always tagged and points to the latest
stable release.
Code of Conduct
------------------------
Please note that Spack has a
[**Code of Conduct**](.github/CODE_OF_CONDUCT.md). By participating in
the Spack community, you agree to abide by its rules.
Authors
----------------
Many thanks go to Spack's [contributors](https://github.com/spack/spack/graphs/contributors).
@@ -122,6 +117,6 @@ See [LICENSE-MIT](https://github.com/spack/spack/blob/develop/LICENSE-MIT),
[COPYRIGHT](https://github.com/spack/spack/blob/develop/COPYRIGHT), and
[NOTICE](https://github.com/spack/spack/blob/develop/NOTICE) for details.
`SPDX-License-Identifier: (Apache-2.0 OR MIT)`
SPDX-License-Identifier: (Apache-2.0 OR MIT)
``LLNL-CODE-647188``
LLNL-CODE-647188

91
bin/generate-gitlab-ci-yml.sh Executable file
View File

@@ -0,0 +1,91 @@
#! /usr/bin/env bash
# Remember where we are initially, it's the repo cloned by gitlab-ci
original_directory=$(pwd)
. "${original_directory}/share/spack/setup-env.sh"
# Create a temporary working directory
temp_dir=$(mktemp -d)
trap 'rm -rf "$temp_dir"' INT TERM QUIT EXIT
if [ -z "${DOWNSTREAM_CI_REPO}" ] ; then
echo "ERROR: missing variable: DOWNSTREAM_CI_REPO" >&2
exit 1
fi
if [ -z "${SPACK_RELEASE_ENVIRONMENT_PATH}" ] ; then
echo "ERROR: missing variable: SPACK_RELEASE_ENVIRONMENT_PATH" >&2
exit 1
fi
if [ -z "${CDASH_AUTH_TOKEN}" ] ; then
echo "WARNING: missing variable: CDASH_AUTH_TOKEN" >&2
else
token_file="${temp_dir}/cdash_auth_token"
echo ${CDASH_AUTH_TOKEN} > ${token_file}
fi
if [ -z "${SPACK_RELEASE_ENVIRONMENT_REPO}" ] ; then
echo "Assuming spack repo contains environment" >&2
env_repo_dir=${original_directory}
else
echo "Cloning ${SPACK_RELEASE_ENVIRONMENT_REPO} into ${temp_dir}/envrepo" >&2
cd ${temp_dir}
git clone ${SPACK_RELEASE_ENVIRONMENT_REPO} envrepo
cd envrepo
env_repo_dir=$(pwd)
fi
current_branch="$CI_COMMIT_REF_NAME"
# Because want to see generated gitlab-ci file as an artifact,
# we need to write it within the spack repo cloned by gitlab-ci.
gen_ci_dir="${original_directory}/ci-generation"
gen_ci_file="${gen_ci_dir}/.gitlab-ci.yml"
mkdir -p ${gen_ci_dir}
env_dir="${env_repo_dir}/${SPACK_RELEASE_ENVIRONMENT_PATH}"
if [ ! -f "${env_dir}/spack.yaml" ] ; then
echo "ERROR: Cannot find spack environment file in ${env_dir}"
exit 1
fi
cd $env_dir
# The next commands generates the .gitlab-ci.yml (and optionally creates a
# buildgroup in cdash)
RELEASE_JOBS_ARGS=("--output-file" "${gen_ci_file}")
if [ ! -z "${token_file}" ]; then
RELEASE_JOBS_ARGS+=("--cdash-credentials" "${token_file}")
fi
spack release-jobs "${RELEASE_JOBS_ARGS[@]}"
if [[ $? -ne 0 ]]; then
echo "spack release-jobs command failed"
exit 1
fi
cd "$original_directory"
mv .git "$temp_dir/original-git-dir"
git init .
git config user.email "robot@spack.io"
git config user.name "Spack Build Bot"
cp ${gen_ci_file} "${original_directory}/.gitlab-ci.yml"
git add .
echo "git commit"
commit_message="Auto-generated commit testing"
commit_message="${commit_message} ${current_branch} (${CI_COMMIT_SHA})"
git commit --message="${commit_message}"
echo "git push"
git remote add origin "$DOWNSTREAM_CI_REPO"
git push --force origin "master:multi-ci-${current_branch}"
rm -rf .git
mv "$temp_dir/original-git-dir" .git
git reset --hard HEAD

13
bin/rebuild-index.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
set -x
SPACK_BIN_DIR="${CI_PROJECT_DIR}/bin"
export PATH="${SPACK_BIN_DIR}:${PATH}"
spack buildcache update-index -d "$MIRROR_URL"

399
bin/rebuild-package.sh Executable file
View File

@@ -0,0 +1,399 @@
#!/bin/bash
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
###
### This script represents a gitlab-ci job, corresponding to a single release
### spec. As such this script must first decide whether or not the spec it
### has been assigned is up to date on the remote binary mirror. If it is
### not (i.e. the source code has changed in a way that caused a change in the
### full_hash of the spec), this script will build the package, create a
### binary cache for it, and then push all related files to the remote binary
### mirror. This script also optionally communicates with a remote CDash
### instance to share status on the package build process.
###
### The following environment variables are (possibly) used within this script
### in order for the various elements function properly.
###
### First are two defaults we rely on from gitlab:
###
### CI_PROJECT_DIR
### CI_JOB_NAME
###
### The following must be set up in the variables section of gitlab:
###
### AWS_ACCESS_KEY_ID
### AWS_SECRET_ACCESS_KEY
### SPACK_SIGNING_KEY
###
### SPACK_S3_UPLOAD_MIRROR_URL // only required in the short term for the cloud case
###
### The following variabes are defined by the ci generation process and are
### required:
###
### SPACK_ENABLE_CDASH
### SPACK_ROOT_SPEC
### SPACK_MIRROR_URL
### SPACK_JOB_SPEC_PKG_NAME
### SPACK_COMPILER_ACTION
###
### Finally, these variables are optionally defined by the ci generation
### process, and may or may not be present:
###
### SPACK_CDASH_BASE_URL
### SPACK_CDASH_PROJECT
### SPACK_CDASH_PROJECT_ENC
### SPACK_CDASH_BUILD_NAME
### SPACK_CDASH_SITE
### SPACK_RELATED_BUILDS
### SPACK_JOB_SPEC_BUILDGROUP
###
shopt -s expand_aliases
export FORCE_UNSAFE_CONFIGURE=1
TEMP_DIR="${CI_PROJECT_DIR}/jobs_scratch_dir"
JOB_LOG_DIR="${TEMP_DIR}/logs"
SPEC_DIR="${TEMP_DIR}/specs"
LOCAL_MIRROR="${CI_PROJECT_DIR}/local_mirror"
BUILD_CACHE_DIR="${LOCAL_MIRROR}/build_cache"
SPACK_BIN_DIR="${CI_PROJECT_DIR}/bin"
if [ "${SPACK_ENABLE_CDASH}" == "True" ] ; then
CDASH_UPLOAD_URL="${SPACK_CDASH_BASE_URL}/submit.php?project=${SPACK_CDASH_PROJECT_ENC}"
DEP_JOB_RELATEBUILDS_URL="${SPACK_CDASH_BASE_URL}/api/v1/relateBuilds.php"
declare -a JOB_DEPS_PKG_NAMES
fi
export SPACK_ROOT=${CI_PROJECT_DIR}
# export PATH="${SPACK_BIN_DIR}:${PATH}"
export GNUPGHOME="${CI_PROJECT_DIR}/opt/spack/gpg"
. "${CI_PROJECT_DIR}/share/spack/setup-env.sh"
mkdir -p ${JOB_LOG_DIR}
mkdir -p ${SPEC_DIR}
cleanup() {
set +x
if [ -z "$exit_code" ] ; then
exit_code=$1
if [ -z "$exit_code" ] ; then
exit_code=0
fi
restore_io
if [ "$( type -t finalize )" '=' 'function' ] ; then
finalize "$JOB_LOG_DIR/cdash_log.txt"
fi
# We can clean these out later on, once we have a good sense for
# how the logging infrastructure is working
# rm -rf "$JOB_LOG_DIR"
fi
\exit $exit_code
}
alias exit='cleanup'
begin_logging() {
trap "cleanup 1; \\exit \$exit_code" INT TERM QUIT
trap "cleanup 0; \\exit \$exit_code" EXIT
rm -rf "$JOB_LOG_DIR/cdash_log.txt"
# NOTE: Here, some redirects are set up
exec 3>&1 # fd 3 is now a dup of stdout
exec 4>&2 # fd 4 is now a dup of stderr
# stdout and stderr are joined and redirected to the log
exec &> "$JOB_LOG_DIR/cdash_log.txt"
set -x
}
restore_io() {
exec >&-
exec 2>&-
exec >&3
exec 2>&4
exec 3>&-
exec 4>&-
}
finalize() {
# If you define a finalize function:
# - it will always be called at the very end of the script
# - the log file will be passed in as the first argument, and
# - the code in this function will not be logged.
echo "The full log file is located at $1"
# TODO: send this log data to cdash!
}
check_error()
{
local last_exit_code=$1
local last_cmd=$2
if [[ ${last_exit_code} -ne 0 ]]; then
echo "${last_cmd} exited with code ${last_exit_code}"
echo "TERMINATING JOB"
exit 1
else
echo "${last_cmd} completed successfully"
fi
}
extract_build_id()
{
LINES_TO_SEARCH=$1
regex="buildSummary\.php\?buildid=([[:digit:]]+)"
SINGLE_LINE_OUTPUT=$(echo ${LINES_TO_SEARCH} | tr -d '\n')
if [[ ${SINGLE_LINE_OUTPUT} =~ ${regex} ]]; then
echo "${BASH_REMATCH[1]}"
else
echo "NONE"
fi
}
get_relate_builds_post_data()
{
cat <<EOF
{
"project": "${1}",
"buildid": ${2},
"relatedid": ${3},
"relationship": "depends on"
}
EOF
}
gen_full_specs_for_job_and_deps() {
SPEC_YAML_PATH="${SPEC_DIR}/${SPACK_JOB_SPEC_PKG_NAME}.yaml"
local spec_names_to_save="${SPACK_JOB_SPEC_PKG_NAME}"
if [ "${SPACK_ENABLE_CDASH}" == "True" ] ; then
IFS=';' read -ra DEPS <<< "${SPACK_RELATED_BUILDS}"
for i in "${DEPS[@]}"; do
depPkgName="${i}"
spec_names_to_save="${spec_names_to_save} ${depPkgName}"
JOB_DEPS_PKG_NAMES+=("${depPkgName}")
done
fi
if [ "${SPACK_COMPILER_ACTION}" == "FIND_ANY" ]; then
# This corresponds to a bootstrapping phase where we need to
# rely on any available compiler to build the package (i.e. the
# compiler needed to be stripped from the spec), and thus we need
# to concretize the root spec again.
spack -d buildcache save-yaml --specs "${spec_names_to_save}" --root-spec "${SPACK_ROOT_SPEC}" --yaml-dir "${SPEC_DIR}"
else
# in this case, either we're relying on Spack to install missing compiler
# bootstrapped in a previous phase, or else we only had one phase (like a
# site which already knows what compilers are available on it's runners),
# so we don't want to concretize that root spec again. The reason we need
# this in the first case (bootstrapped compiler), is that we can't concretize
# a spec at this point if we're going to ask spack to "install_missing_compilers".
tmp_dir=$(mktemp -d)
TMP_YAML_PATH="${tmp_dir}/root.yaml"
ROOT_SPEC_YAML=$(spack python -c "import base64 ; import zlib ; print(str(zlib.decompress(base64.b64decode('${SPACK_ROOT_SPEC}')).decode('utf-8')))")
echo "${ROOT_SPEC_YAML}" > "${TMP_YAML_PATH}"
spack -d buildcache save-yaml --specs "${spec_names_to_save}" --root-spec-yaml "${TMP_YAML_PATH}" --yaml-dir "${SPEC_DIR}"
rm -rf ${tmp_dir}
fi
}
begin_logging
echo "Running job for spec: ${CI_JOB_NAME}"
# This should create the directory we referred to as GNUPGHOME earlier
spack gpg list
# Importing the secret key using gpg2 directly should allow to
# sign and verify both
set +x
KEY_IMPORT_RESULT=`echo ${SPACK_SIGNING_KEY} | base64 --decode | gpg2 --import`
check_error $? "gpg2 --import"
set -x
spack gpg list --trusted
spack gpg list --signing
# To have spack install missing compilers, we need to add a custom
# configuration scope, then we pass that to the package installation
# command
CUSTOM_CONFIG_SCOPE_DIR="${TEMP_DIR}/config_scope"
mkdir -p "${CUSTOM_CONFIG_SCOPE_DIR}"
CUSTOM_CONFIG_SCOPE_ARG=""
if [ "${SPACK_COMPILER_ACTION}" == "INSTALL_MISSING" ]; then
echo "Make sure bootstrapped compiler will be installed"
custom_config_file_path="${CUSTOM_CONFIG_SCOPE_DIR}/config.yaml"
cat <<CONFIG_STUFF > "${custom_config_file_path}"
config:
install_missing_compilers: true
CONFIG_STUFF
CUSTOM_CONFIG_SCOPE_ARG="-C ${CUSTOM_CONFIG_SCOPE_DIR}"
# Configure the binary mirror where, if needed, this jobs compiler
# was installed in binary pacakge form, then tell spack to
# install_missing_compilers.
elif [ "${SPACK_COMPILER_ACTION}" == "FIND_ANY" ]; then
echo "Just find any available compiler"
spack compiler find
else
echo "No compiler action to be taken"
fi
# Finally, list the compilers spack knows about
echo "Compiler Configurations:"
spack config get compilers
# Write full-deps yamls for this job spec and its dependencies
gen_full_specs_for_job_and_deps
# Make the build_cache directory if it doesn't exist
mkdir -p "${BUILD_CACHE_DIR}"
# Get buildcache name so we can write a CDash build id file in the right place.
# If we're unable to get the buildcache name, we may have encountered a problem
# concretizing the spec, or some other issue that will eventually cause the job
# to fail.
JOB_BUILD_CACHE_ENTRY_NAME=`spack -d buildcache get-buildcache-name --spec-yaml "${SPEC_YAML_PATH}"`
if [[ $? -ne 0 ]]; then
echo "ERROR, unable to get buildcache entry name for job ${CI_JOB_NAME}"
exit 1
fi
if [ "${SPACK_ENABLE_CDASH}" == "True" ] ; then
# Whether we have to build the spec or download it pre-built, we expect to find
# the cdash build id file sitting in this location afterwards.
JOB_CDASH_ID_FILE="${BUILD_CACHE_DIR}/${JOB_BUILD_CACHE_ENTRY_NAME}.cdashid"
fi
# Finally, we can check the spec we have been tasked with build against
# the built binary on the remote mirror to see if it needs to be rebuilt
spack -d buildcache check --spec-yaml "${SPEC_YAML_PATH}" --mirror-url "${SPACK_MIRROR_URL}" --rebuild-on-error
if [[ $? -ne 0 ]]; then
# Configure mirror
spack mirror add local_artifact_mirror "file://${LOCAL_MIRROR}"
if [ "${SPACK_ENABLE_CDASH}" == "True" ] ; then
JOB_CDASH_ID="NONE"
# Install package, using the buildcache from the local mirror to
# satisfy dependencies.
BUILD_ID_LINE=`spack -d -k -v "${CUSTOM_CONFIG_SCOPE_ARG}" install --keep-stage --cdash-upload-url "${CDASH_UPLOAD_URL}" --cdash-build "${SPACK_CDASH_BUILD_NAME}" --cdash-site "${SPACK_CDASH_SITE}" --cdash-track "${SPACK_JOB_SPEC_BUILDGROUP}" -f "${SPEC_YAML_PATH}" | grep "buildSummary\\.php"`
check_error $? "spack install"
# By parsing the output of the "spack install" command, we can get the
# buildid generated for us by CDash
JOB_CDASH_ID=$(extract_build_id "${BUILD_ID_LINE}")
# Write the .cdashid file to the buildcache as well
echo "${JOB_CDASH_ID}" >> ${JOB_CDASH_ID_FILE}
else
spack -d -k -v "${CUSTOM_CONFIG_SCOPE_ARG}" install --keep-stage -f "${SPEC_YAML_PATH}"
fi
# Copy some log files into an artifact location, once we have a way
# to provide a spec.yaml file to more spack commands (e.g. "location")
# stage_dir=$(spack location --stage-dir -f "${SPEC_YAML_PATH}")
# build_log_file=$(find -L "${stage_dir}" | grep "spack-build\\.out")
# config_log_file=$(find -L "${stage_dir}" | grep "config\\.log")
# cp "${build_log_file}" "${JOB_LOG_DIR}/"
# cp "${config_log_file}" "${JOB_LOG_DIR}/"
# Create buildcache entry for this package, reading the spec from the yaml
# file.
spack -d buildcache create --spec-yaml "${SPEC_YAML_PATH}" -a -f -d "${LOCAL_MIRROR}" --no-rebuild-index
check_error $? "spack buildcache create"
# TODO: The upload-s3 command should eventually be replaced with something
# like: "spack buildcache put <mirror> <spec>", when that subcommand is
# properly implemented.
if [ ! -z "${SPACK_S3_UPLOAD_MIRROR_URL}" ] ; then
spack -d upload-s3 spec --base-dir "${LOCAL_MIRROR}" --spec-yaml "${SPEC_YAML_PATH}" --endpoint-url "${SPACK_S3_UPLOAD_MIRROR_URL}"
check_error $? "spack upload-s3 spec"
else
spack -d buildcache copy --base-dir "${LOCAL_MIRROR}" --spec-yaml "${SPEC_YAML_PATH}" --destination-url "${SPACK_MIRROR_URL}"
fi
else
echo "spec ${CI_JOB_NAME} is already up to date on remote mirror, downloading it"
# Configure remote mirror so we can download buildcache entry
spack mirror add remote_binary_mirror ${SPACK_MIRROR_URL}
# Now download it
BUILDCACHE_DL_ARGS=("--spec-yaml" "${SPEC_YAML_PATH}" "--path" "${BUILD_CACHE_DIR}/" )
if [ "${SPACK_ENABLE_CDASH}" == "True" ] ; then
BUILDCACHE_DL_ARGS+=( "--require-cdashid" )
fi
spack -d buildcache download "${BUILDCACHE_DL_ARGS[@]}"
check_error $? "spack buildcache download"
fi
# The next step is to relate this job to the jobs it depends on
if [ "${SPACK_ENABLE_CDASH}" == "True" ] ; then
if [ -f "${JOB_CDASH_ID_FILE}" ]; then
JOB_CDASH_BUILD_ID=$(<${JOB_CDASH_ID_FILE})
if [ "${JOB_CDASH_BUILD_ID}" == "NONE" ]; then
echo "ERROR: unable to read this jobs id from ${JOB_CDASH_ID_FILE}"
exit 1
fi
# Now get CDash ids for dependencies and "relate" each dependency build
# with this jobs build
for DEP_PKG_NAME in "${JOB_DEPS_PKG_NAMES[@]}"; do
echo "Getting cdash id for dependency --> ${DEP_PKG_NAME} <--"
DEP_SPEC_YAML_PATH="${SPEC_DIR}/${DEP_PKG_NAME}.yaml"
DEP_JOB_BUILDCACHE_NAME=`spack -d buildcache get-buildcache-name --spec-yaml "${DEP_SPEC_YAML_PATH}"`
if [[ $? -eq 0 ]]; then
DEP_JOB_ID_FILE="${BUILD_CACHE_DIR}/${DEP_JOB_BUILDCACHE_NAME}.cdashid"
echo "DEP_JOB_ID_FILE path = ${DEP_JOB_ID_FILE}"
if [ -f "${DEP_JOB_ID_FILE}" ]; then
DEP_JOB_CDASH_BUILD_ID=$(<${DEP_JOB_ID_FILE})
echo "File ${DEP_JOB_ID_FILE} contained value ${DEP_JOB_CDASH_BUILD_ID}"
echo "Relating builds -> ${SPACK_CDASH_BUILD_NAME} (buildid=${JOB_CDASH_BUILD_ID}) depends on ${DEP_PKG_NAME} (buildid=${DEP_JOB_CDASH_BUILD_ID})"
relateBuildsPostBody="$(get_relate_builds_post_data "${SPACK_CDASH_PROJECT}" ${JOB_CDASH_BUILD_ID} ${DEP_JOB_CDASH_BUILD_ID})"
relateBuildsResult=`curl "${DEP_JOB_RELATEBUILDS_URL}" -H "Content-Type: application/json" -H "Accept: application/json" -d "${relateBuildsPostBody}"`
echo "Result of curl request: ${relateBuildsResult}"
else
echo "ERROR: Did not find expected .cdashid file for dependency: ${DEP_JOB_ID_FILE}"
exit 1
fi
else
echo "ERROR: Unable to get buildcache entry name for ${DEP_SPEC_NAME}"
exit 1
fi
done
else
echo "ERROR: Did not find expected .cdashid file ${JOB_CDASH_ID_FILE}"
exit 1
fi
fi
# Show the size of the buildcache and a list of what's in it, directly
# in the gitlab log output
(
restore_io
du -sh ${BUILD_CACHE_DIR}
find ${BUILD_CACHE_DIR} -maxdepth 3 -type d -ls
)
echo "End of rebuild package script"

View File

@@ -1,6 +1,6 @@
#!/bin/bash
#
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,10 +1,26 @@
#!/usr/bin/env python
#!/bin/sh
# -*- python -*-
#
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
# This file is bilingual. The following shell code finds our preferred python.
# Following line is a shell no-op, and starts a multi-line Python comment.
# See https://stackoverflow.com/a/47886254
""":"
# prefer python3, then python, then python2
for cmd in python3 python python2; do
command -v > /dev/null $cmd && exec $cmd $0 "$@"
done
echo "==> Error: spack could not find a python interpreter!" >&2
exit 1
":"""
# Line above is a shell no-op, and ends a python multi-line comment.
# The code above runs this file with our preferred python interpreter.
from __future__ import print_function
import os
@@ -35,7 +51,7 @@ sys.path.insert(0, spack_external_libs)
# (see #9206 for a broader description of the issue).
#
# Briefly: ruamel.yaml produces a .pth file when installed with pip that
# makes the site installed package the preferred one, even tough sys.path
# makes the site installed package the preferred one, even though sys.path
# is modified to point to another version of ruamel.yaml.
if 'ruamel.yaml' in sys.modules:
del sys.modules['ruamel.yaml']

View File

@@ -1,6 +1,6 @@
#!/bin/sh
#
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -32,24 +32,37 @@ config:
module_roots:
tcl: $spack/share/spack/modules
lmod: $spack/share/spack/lmod
dotkit: $spack/share/spack/dotkit
# Temporary locations Spack can try to use for builds.
#
# Spack will use the first one it finds that exists and is writable.
# You can use $tempdir to refer to the system default temp directory
# (as returned by tempfile.gettempdir()).
# Recommended options are given below.
#
# A value of $spack/var/spack/stage indicates that Spack should run
# builds directly inside its install directory without staging them in
# temporary space.
# Builds can be faster in temporary directories on some (e.g., HPC) systems.
# Specifying `$tempdir` will ensure use of the default temporary directory
# (i.e., ``$TMP` or ``$TMPDIR``).
#
# The build stage can be purged with `spack clean --stage`.
# Another option that prevents conflicts and potential permission issues is
# to specify `~/.spack/stage`, which ensures each user builds in their home
# directory.
#
# A more traditional path uses the value of `$spack/var/spack/stage`, which
# builds directly inside Spack's instance without staging them in a
# temporary space. Problems with specifying a path inside a Spack instance
# are that it precludes its use as a system package and its ability to be
# pip installable.
#
# In any case, if the username is not already in the path, Spack will append
# the value of `$user` in an attempt to avoid potential conflicts between
# users in shared temporary spaces.
#
# The build stage can be purged with `spack clean --stage` and
# `spack clean -a`, so it is important that the specified directory uniquely
# identifies Spack staging to avoid accidentally wiping out non-Spack work.
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $spack/var/spack/stage
- $tempdir/$user/spack-stage
- ~/.spack/stage
# - $spack/var/spack/stage
# Cache directory for already downloaded source tarballs and archived
@@ -67,6 +80,20 @@ config:
verify_ssl: true
# Suppress gpg warnings from binary package verification
# Only suppresses warnings, gpg failure will still fail the install
# Potential rationale to set True: users have already explicitly trusted the
# gpg key they are using, and may not want to see repeated warnings that it
# is self-signed or something of the sort.
suppress_gpg_warnings: false
# If set to true, Spack will attempt to build any compiler on the spec
# that is not already available. If set to False, Spack will only use
# compilers already configured in compilers.yaml
install_missing_compilers: False
# If set to true, Spack will always check checksums after downloading
# archives. If false, Spack skips the checksum step.
checksum: true
@@ -94,10 +121,12 @@ config:
locks: true
# 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
# The maximum number of jobs to use when running `make` in parallel,
# always limited by the number of cores available. For instance:
# - If set to 16 on a 4 cores machine `spack install` will run `make -j4`
# - If set to 16 on a 18 cores machine `spack install` will run `make -j16`
# If not set, Spack will use all available cores up to 16.
# build_jobs: 16
# If set to true, Spack will use ccache to cache C compiles.
@@ -117,3 +146,8 @@ config:
# anticipates that a significant delay indicates that the lock attempt will
# never succeed.
package_lock_timeout: null
# Control whether Spack embeds RPATH or RUNPATH attributes in ELF binaries.
# Has no effect on macOS. DO NOT MIX these within the same install tree.
# See the Spack documentation for details.
shared_linking: 'rpath'

View File

@@ -16,7 +16,6 @@
modules:
enable:
- tcl
- dotkit
prefix_inspections:
bin:
- PATH
@@ -36,6 +35,8 @@ modules:
- PKG_CONFIG_PATH
lib64/pkgconfig:
- PKG_CONFIG_PATH
share/pkgconfig:
- PKG_CONFIG_PATH
'':
- CMAKE_PREFIX_PATH

View File

@@ -15,7 +15,7 @@
# -------------------------------------------------------------------------
packages:
all:
compiler: [gcc, intel, pgi, clang, xl, nag]
compiler: [gcc, intel, pgi, clang, xl, nag, fj]
providers:
D: [ldc]
awk: [gawk]
@@ -23,18 +23,20 @@ packages:
daal: [intel-daal]
elf: [elfutils]
fftw-api: [fftw]
gl: [mesa, opengl]
gl: [mesa+opengl, opengl]
glx: [mesa+glx, opengl]
glu: [mesa-glu, openglu]
golang: [gcc]
ipp: [intel-ipp]
java: [jdk]
java: [openjdk, jdk, ibm-java]
jpeg: [libjpeg-turbo, libjpeg]
lapack: [openblas]
mariadb-client: [mariadb-c-client, mariadb]
mkl: [intel-mkl]
mpe: [mpe2]
mpi: [openmpi, mpich]
mysql-client: [mysql, mariadb-c-client]
opencl: [pocl]
openfoam: [openfoam-com, openfoam-org, foam-extend]
pil: [py-pillow]
pkgconfig: [pkgconf, pkg-config]
scalapack: [netlib-scalapack]

View File

@@ -3,3 +3,5 @@ command_index.rst
spack*.rst
llnl*.rst
_build
.spack-env
spack.lock

View File

@@ -2,7 +2,7 @@
#
# You can set these variables from the command line.
SPHINXOPTS = -E
SPHINXOPTS = -W
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build

1
lib/spack/docs/_spack_root Symbolic link
View File

@@ -0,0 +1 @@
../../..

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -39,12 +39,15 @@ available. You can see a list of available package names at the
``spack list``
^^^^^^^^^^^^^^
The ``spack list`` command prints out a list of all of the packages
Spack can install:
The ``spack list`` command prints out a list of all of the packages Spack
can install:
.. command-output:: spack list
:ellipsis: 10
The packages are listed by name in alphabetical order.
There are thosands of them, so we've truncated the output above, but you
can find a :ref:`full list here <package-list>`.
Packages are listed by name in alphabetical order.
A pattern to match with no wildcards, ``*`` or ``?``,
will be treated as though it started and ended with
``*``, so ``util`` is equivalent to ``*util*``. All patterns will be treated
@@ -274,6 +277,86 @@ the tarballs in question to it (see :ref:`mirrors`):
$ spack install galahad
-----------------------------
Deprecating insecure packages
-----------------------------
``spack deprecate`` allows for the removal of insecure packages with
minimal impact to their dependents.
.. warning::
The ``spack deprecate`` command is designed for use only in
extraordinary circumstances. This is a VERY big hammer to be used
with care.
The ``spack deprecate`` command will remove one package and replace it
with another by replacing the deprecated package's prefix with a link
to the deprecator package's prefix.
.. warning::
The ``spack deprecate`` command makes no promises about binary
compatibility. It is up to the user to ensure the deprecator is
suitable for the deprecated package.
Spack tracks concrete deprecated specs and ensures that no future packages
concretize to a deprecated spec.
The first spec given to the ``spack deprecate`` command is the package
to deprecate. It is an abstract spec that must describe a single
installed package. The second spec argument is the deprecator
spec. By default it must be an abstract spec that describes a single
installed package, but with the ``-i/--install-deprecator`` it can be
any abstract spec that Spack will install and then use as the
deprecator. The ``-I/--no-install-deprecator`` option will ensure
the default behavior.
By default, ``spack deprecate`` will deprecate all dependencies of the
deprecated spec, replacing each by the dependency of the same name in
the deprecator spec. The ``-d/--dependencies`` option will ensure the
default, while the ``-D/--no-dependencies`` option will deprecate only
the root of the deprecate spec in favor of the root of the deprecator
spec.
``spack deprecate`` can use symbolic links or hard links. The default
behavior is symbolic links, but the ``-l/--link-type`` flag can take
options ``hard`` or ``soft``.
-----------------------
Verifying installations
-----------------------
The ``spack verify`` command can be used to verify the validity of
Spack-installed packages any time after installation.
At installation time, Spack creates a manifest of every file in the
installation prefix. For links, Spack tracks the mode, ownership, and
destination. For directories, Spack tracks the mode, and
ownership. For files, Spack tracks the mode, ownership, modification
time, hash, and size. The Spack verify command will check, for every
file in each package, whether any of those attributes have changed. It
will also check for newly added files or deleted files from the
installation prefix. Spack can either check all installed packages
using the `-a,--all` or accept specs listed on the command line to
verify.
The ``spack verify`` command can also verify for individual files that
they haven't been altered since installation time. If the given file
is not in a Spack installation prefix, Spack will report that it is
not owned by any package. To check individual files instead of specs,
use the ``-f,--files`` option.
Spack installation manifests are part of the tarball signed by Spack
for binary package distribution. When installed from a binary package,
Spack uses the packaged installation manifest instead of creating one
at install time.
The ``spack verify`` command also accepts the ``-l,--local`` option to
check only local packages (as opposed to those used transparently from
``upstream`` spack instances) and the ``-j,--json`` option to output
machine-readable json data for any errors.
-------------------------
Seeing installed packages
-------------------------
@@ -331,11 +414,17 @@ Packages are divided into groups according to their architecture and
compiler. Within each group, Spack tries to keep the view simple, and
only shows the version of installed packages.
``spack find`` can filter the package list based on the package name, spec, or
a number of properties of their installation status. For example, missing
dependencies of a spec can be shown with ``--missing``, packages which were
explicitly installed with ``spack install <package>`` can be singled out with
``--explicit`` and those which have been pulled in only as dependencies with
""""""""""""""""""""""""""""""""
Viewing more metadata
""""""""""""""""""""""""""""""""
``spack find`` can filter the package list based on the package name,
spec, or a number of properties of their installation status. For
example, missing dependencies of a spec can be shown with
``--missing``, deprecated packages can be included with
``--deprecated``, packages which were explicitly installed with
``spack install <package>`` can be singled out with ``--explicit`` and
those which have been pulled in only as dependencies with
``--implicit``.
In some cases, there may be different configurations of the *same*
@@ -388,8 +477,8 @@ use ``spack find --paths``:
callpath@1.0.2 ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/callpath@1.0.2-5dce4318
...
And, finally, you can restrict your search to a particular package
by supplying its name:
You can restrict your search to a particular package by supplying its
name:
.. code-block:: console
@@ -399,6 +488,10 @@ by supplying its name:
libelf@0.8.12 ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.12
libelf@0.8.13 ~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/libelf@0.8.13
""""""""""""""""""""""""""""""""
Spec queries
""""""""""""""""""""""""""""""""
``spack find`` actually does a lot more than this. You can use
*specs* to query for specific configurations and builds of each
package. If you want to find only libelf versions greater than version
@@ -426,6 +519,109 @@ with the 'debug' compile-time option enabled.
The full spec syntax is discussed in detail in :ref:`sec-specs`.
""""""""""""""""""""""""""""""""
Machine-readable output
""""""""""""""""""""""""""""""""
If you only want to see very specific things about installed packages,
Spack has some options for you. ``spack find --format`` can be used to
output only specific fields:
.. code-block:: console
$ spack find --format "{name}-{version}-{hash}"
autoconf-2.69-icynozk7ti6h4ezzgonqe6jgw5f3ulx4
automake-1.16.1-o5v3tc77kesgonxjbmeqlwfmb5qzj7zy
bzip2-1.0.6-syohzw57v2jfag5du2x4bowziw3m5p67
bzip2-1.0.8-zjny4jwfyvzbx6vii3uuekoxmtu6eyuj
cmake-3.15.1-7cf6onn52gywnddbmgp7qkil4hdoxpcb
...
or:
.. code-block:: console
$ spack find --format "{hash:7}"
icynozk
o5v3tc7
syohzw5
zjny4jw
7cf6onn
...
This uses the same syntax as described in documentation for
:meth:`~spack.spec.Spec.format` -- you can use any of the options there.
This is useful for passing metadata about packages to other command-line
tools.
Alternately, if you want something even more machine readable, you can
output each spec as JSON records using ``spack find --json``. This will
output metadata on specs and all dependencies as json:
.. code-block:: console
$ spack find --json sqlite@3.28.0
[
{
"name": "sqlite",
"hash": "3ws7bsihwbn44ghf6ep4s6h4y2o6eznv",
"version": "3.28.0",
"arch": {
"platform": "darwin",
"platform_os": "mojave",
"target": "x86_64"
},
"compiler": {
"name": "clang",
"version": "10.0.0-apple"
},
"namespace": "builtin",
"parameters": {
"fts": true,
"functions": false,
"cflags": [],
"cppflags": [],
"cxxflags": [],
"fflags": [],
"ldflags": [],
"ldlibs": []
},
"dependencies": {
"readline": {
"hash": "722dzmgymxyxd6ovjvh4742kcetkqtfs",
"type": [
"build",
"link"
]
}
}
},
...
]
You can use this with tools like `jq <https://stedolan.github.io/jq/>`_ to quickly create JSON records
structured the way you want:
.. code-block:: console
$ spack find --json sqlite@3.28.0 | jq -C '.[] | { name, version, hash }'
{
"name": "sqlite",
"version": "3.28.0",
"hash": "3ws7bsihwbn44ghf6ep4s6h4y2o6eznv"
}
{
"name": "readline",
"version": "7.0",
"hash": "722dzmgymxyxd6ovjvh4742kcetkqtfs"
}
{
"name": "ncurses",
"version": "6.1",
"hash": "zvaa4lhlhilypw5quj3akyd3apbq5gap"
}
.. _sec-specs:
--------------------
@@ -673,10 +869,10 @@ compile line.
Notice that the value of the compiler flags must be quoted if it
contains any spaces. Any of ``cppflags=-O3``, ``cppflags="-O3"``,
``cppflags='-O3'``, and ``cppflags="-O3 -fPIC"`` are acceptable, but
``cppflags=-O3 -fPIC`` is not. Additionally, if they value of the
``cppflags=-O3 -fPIC`` is not. Additionally, if the value of the
compiler flags is not the last thing on the line, it must be followed
by a space. The commmand ``spack install libelf cppflags="-O3"%intel``
will be interpreted as an attempt to set `cppflags="-O3%intel"``.
will be interpreted as an attempt to set ``cppflags="-O3%intel"``.
The six compiler flags are injected in the order of implicit make commands
in GNU Autotools. If all flags are set, the order is
@@ -734,18 +930,113 @@ that executables will run without the need to set ``LD_LIBRARY_PATH``.
Architecture specifiers
^^^^^^^^^^^^^^^^^^^^^^^
The architecture can be specified by using the reserved
words ``target`` and/or ``os`` (``target=x86-64 os=debian7``). You can also
use the triplet form of platform, operating system and processor.
Each node in the dependency graph of a spec has an architecture attribute.
This attribute is a triplet of platform, operating system and processor.
You can specify the elements either separately, by using
the reserved keywords ``platform``, ``os`` and ``target``:
.. code-block:: console
$ spack install libelf platform=linux
$ spack install libelf os=ubuntu18.04
$ spack install libelf target=broadwell
or together by using the reserved keyword ``arch``:
.. code-block:: console
$ spack install libelf arch=cray-CNL10-haswell
Users on non-Cray systems won't have to worry about specifying the architecture.
Spack will autodetect what kind of operating system is on your machine as well
as the processor. For more information on how the architecture can be
used on Cray machines, see :ref:`cray-support`
Normally users don't have to bother specifying the architecture if they
are installing software for their current host, as in that case the
values will be detected automatically. If you need fine-grained control
over which packages use which targets (or over *all* packages' default
target), see :ref:`concretization-preferences`.
.. admonition:: Cray machines
The situation is a little bit different for Cray machines and a detailed
explanation on how the architecture can be set on them can be found at :ref:`cray-support`
.. _support-for-microarchitectures:
"""""""""""""""""""""""""""""""""""""""
Support for specific microarchitectures
"""""""""""""""""""""""""""""""""""""""
Spack knows how to detect and optimize for many specific microarchitectures
(including recent Intel, AMD and IBM chips) and encodes this information in
the ``target`` portion of the architecture specification. A complete list of
the microarchitectures known to Spack can be obtained in the following way:
.. command-output:: spack arch --known-targets
When a spec is installed Spack matches the compiler being used with the
microarchitecture being targeted to inject appropriate optimization flags
at compile time. Giving a command such as the following:
.. code-block:: console
$ spack install zlib%gcc@9.0.1 target=icelake
will produce compilation lines similar to:
.. code-block:: console
$ /usr/bin/gcc-9 -march=icelake-client -mtune=icelake-client -c ztest10532.c
$ /usr/bin/gcc-9 -march=icelake-client -mtune=icelake-client -c -fPIC -O2 ztest10532.
...
where the flags ``-march=icelake-client -mtune=icelake-client`` are injected
by Spack based on the requested target and compiler.
If Spack knows that the requested compiler can't optimize for the current target
or can't build binaries for that target at all, it will exit with a meaningful error message:
.. code-block:: console
$ spack install zlib%gcc@5.5.0 target=icelake
==> Error: cannot produce optimized binary for micro-architecture "icelake" with gcc@5.5.0 [supported compiler versions are 8:]
When instead an old compiler is selected on a recent enough microarchitecture but there is
no explicit ``target`` specification, Spack will optimize for the best match it can find instead
of failing:
.. code-block:: console
$ spack arch
linux-ubuntu18.04-broadwell
$ spack spec zlib%gcc@4.8
Input spec
--------------------------------
zlib%gcc@4.8
Concretized
--------------------------------
zlib@1.2.11%gcc@4.8+optimize+pic+shared arch=linux-ubuntu18.04-haswell
$ spack spec zlib%gcc@9.0.1
Input spec
--------------------------------
zlib%gcc@9.0.1
Concretized
--------------------------------
zlib@1.2.11%gcc@9.0.1+optimize+pic+shared arch=linux-ubuntu18.04-broadwell
In the snippet above, for instance, the microarchitecture was demoted to ``haswell`` when
compiling with ``gcc@4.8`` since support to optimize for ``broadwell`` starts from ``gcc@4.9:``.
Finally if Spack has no information to match compiler and target, it will
proceed with the installation but avoid injecting any microarchitecture
specific flags.
.. warning::
Currently Spack doesn't print any warning to the user if it has no information
on which optimization flags should be used for a given compiler. This behavior
might change in the future.
.. _sec-virtual-dependencies:
@@ -981,24 +1272,15 @@ Using Extensions
^^^^^^^^^^^^^^^^
There are three ways to get ``numpy`` working in Python. The first is
to use :ref:`shell-support`. You can simply ``use`` or ``load`` the
to use :ref:`shell-support`. You can simply ``load`` the
module for the extension, and it will be added to the ``PYTHONPATH``
in your current shell.
For tcl modules:
in your current shell:
.. code-block:: console
$ spack load python
$ spack load py-numpy
or, for dotkit:
.. code-block:: console
$ spack use python
$ spack use py-numpy
Now ``import numpy`` will succeed for as long as you keep your current
session open.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -66,8 +66,18 @@ This example lists three installations of OpenMPI, one built with GCC,
one built with GCC and debug information, and another built with Intel.
If Spack is asked to build a package that uses one of these MPIs as a
dependency, it will use the pre-installed OpenMPI in
the given directory. ``packages.yaml`` can also be used to specify modules
to load instead of the installation prefixes.
the given directory. Note that the specified path is the top-level
install prefix, not the ``bin`` subdirectory.
``packages.yaml`` can also be used to specify modules to load instead
of the installation prefixes. The following example says that module
``CMake/3.7.2`` provides cmake version 3.7.2.
.. code-block:: yaml
cmake:
modules:
cmake@3.7.2: CMake/3.7.2
Each ``packages.yaml`` begins with a ``packages:`` token, followed
by a list of package names. To specify externals, add a ``paths`` or ``modules``
@@ -138,7 +148,8 @@ Here's an example ``packages.yaml`` file that sets preferred packages:
gperftools:
version: [2.2, 2.4, 2.3]
all:
compiler: [gcc@4.4.7, gcc@4.6:, intel, clang, pgi]
compiler: [gcc@4.4.7, 'gcc@4.6:', intel, clang, pgi]
target: [sandybridge]
providers:
mpi: [mvapich2, mpich, openmpi]
@@ -152,11 +163,11 @@ on the command line if explicitly requested.
Each ``packages.yaml`` file begins with the string ``packages:`` and
package names are specified on the next level. The special string ``all``
applies settings to each package. Underneath each package name is
one or more components: ``compiler``, ``variants``, ``version``,
or ``providers``. Each component has an ordered list of spec
``constraints``, with earlier entries in the list being preferred over
later entries.
applies settings to *all* packages. Underneath each package name is one
or more components: ``compiler``, ``variants``, ``version``,
``providers``, and ``target``. Each component has an ordered list of
spec ``constraints``, with earlier entries in the list being preferred
over later entries.
Sometimes a package installation may have constraints that forbid
the first concretization rule, in which case Spack will use the first

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -40,6 +40,7 @@ on these ideas for each distinct build system that Spack supports:
build_systems/cmakepackage
build_systems/mesonpackage
build_systems/qmakepackage
build_systems/sippackage
.. toctree::
:maxdepth: 1

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -120,7 +120,7 @@ version numbers seen with most other Spack packages. For example, we have:
...
Preferred version:
professional.2018.3 http:...
Safe versions:
professional.2018.3 http:...
...
@@ -728,7 +728,7 @@ For packages that contain a compiler, follow `the previous section
.. code-block:: console
$ spack install intel-mpi@2018.3.199
$ spack install intel-mpi@2018.3.199
$ spack install intel-mpi@2018.3.199 %intel@18
4. To prepare the new packages for use with client packages,
@@ -802,7 +802,7 @@ by one of the following means:
Configure the order of compilers in the appropriate ``packages.yaml`` file,
under either an ``all:`` or client-package-specific entry, in a
``compiler:`` list. Consult the Spack documentation for
:ref:`Configuring Package Preferences <configs-tutorial-package-prefs>`
`Configuring Package Preferences <https://spack-tutorial.readthedocs.io/en/latest/tutorial_configuration.html#configuring-package-preferences>`_
and
:ref:`Concretization Preferences <concretization-preferences>`.
@@ -851,7 +851,7 @@ client packages, edit the ``packages.yaml`` file. Customize, either in the
the virtual packages and whose values are the Spack specs that satisfy the
virtual package, in order of decreasing preference. To learn more about the
``providers:`` settings, see the Spack tutorial for
:ref:`Configuring Package Preferences <configs-tutorial-package-prefs>`
`Configuring Package Preferences <https://spack-tutorial.readthedocs.io/en/latest/tutorial_configuration.html#configuring-package-preferences>`_
and the section
:ref:`Concretization Preferences <concretization-preferences>`.
@@ -972,7 +972,7 @@ a *virtual* ``mkl`` package is declared in Spack.
.. code-block:: python
self.spec['blas'].headers.include_flags
and to generate linker options (``-L<dir> -llibname ...``), use the same as above,
.. code-block:: python

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -54,6 +54,28 @@ Packages that use the Meson build system can be identified by the
presence of a ``meson.build`` file. This file declares things
like build instructions and dependencies.
One thing to look for is the ``meson_version`` key that gets passed
to the ``project`` function:
.. code-block:: none
:emphasize-lines: 10
project('gtk+', 'c',
version: '3.94.0',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
# We only need c99, but glib needs GNU-specific features
# https://github.com/mesonbuild/meson/issues/2289
'c_std=gnu99',
],
meson_version: '>= 0.43.0',
license: 'LGPLv2.1+')
This means that Meson 0.43.0 is the earliest release that will work.
You should specify this in a ``depends_on`` statement.
^^^^^^^^^^^^^^^^^^^^^^^^^
Build system dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -67,6 +89,28 @@ the ``MesonPackage`` base class already contains:
depends_on('meson', type='build')
depends_on('ninja', type='build')
If you need to specify a particular version requirement, you can
override this in your package:
.. code-block:: python
depends_on('meson@0.43.0:', type='build')
depends_on('ninja', type='build')
^^^^^^^^^^^^^^^^^^^
Finding meson flags
^^^^^^^^^^^^^^^^^^^
To get a list of valid flags that can be passed to ``meson``, run the
following command in the directory that contains ``meson.build``:
.. code-block:: console
$ meson setup --help
^^^^^^^^^^^^^^^^^^^^^^^^^^
Passing arguments to meson
^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -42,7 +42,11 @@ If it isn't on CRAN, try Bioconductor, another common R repository.
For the purposes of this tutorial, we will be walking through
`r-caret <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/r-caret/package.py>`_
as an example. If you search for "CRAN caret", you will quickly find what
you are looking for at https://cran.r-project.org/web/packages/caret/index.html.
you are looking for at https://cran.r-project.org/package=caret.
https://cran.r-project.org is the main CRAN website. However, CRAN also
has a https://cloud.r-project.org site that automatically redirects to
`mirrors around the world <https://cloud.r-project.org/mirrors.html>`_.
For stability and performance reasons, we will use https://cloud.r-project.org/package=caret.
If you search for "Package source", you will find the download URL for
the latest release. Use this URL with ``spack create`` to create a new
package.
@@ -93,8 +97,8 @@ If you look at the bottom of the page, you'll see:
Please use the canonical form https://CRAN.R-project.org/package=caret to link to this page.
Please uphold the wishes of the CRAN admins and use
https://CRAN.R-project.org/package=caret as the homepage instead of
https://cran.r-project.org/web/packages/caret/index.html. The latter may
https://cloud.r-project.org/package=caret as the homepage instead of
https://cloud.r-project.org/web/packages/caret/index.html. The latter may
change without notice.
^^^
@@ -109,12 +113,12 @@ List URL
^^^^^^^^
CRAN maintains a single webpage containing the latest release of every
single package: https://cran.r-project.org/src/contrib/
single package: https://cloud.r-project.org/src/contrib/
Of course, as soon as a new release comes out, the version you were using
in your package is no longer available at that URL. It is moved to an
archive directory. If you search for "Old sources", you will find:
https://cran.r-project.org/src/contrib/Archive/caret
https://cloud.r-project.org/src/contrib/Archive/caret
If you only specify the URL for the latest release, your package will
no longer be able to fetch that version as soon as a new release comes
@@ -138,12 +142,12 @@ every R package needs this, the ``RPackage`` base class contains:
Take a close look at the homepage for ``caret``. If you look at the
"Depends" section, you'll notice that ``caret`` depends on "R (≥ 2.10)".
"Depends" section, you'll notice that ``caret`` depends on "R (≥ 3.2.0)".
You should add this to your package like so:
.. code-block:: python
depends_on('r@2.10:', type=('build', 'run'))
depends_on('r@3.2.0:', type=('build', 'run'))
^^^^^^^^^^^^^^
@@ -162,7 +166,7 @@ and list all of their dependencies in the following sections:
As far as Spack is concerned, all 3 of these dependency types
correspond to ``type=('build', 'run')``, so you don't have to worry
about them. If you are curious what they mean,
about the details. If you are curious what they mean,
https://github.com/spack/spack/issues/2951 has a pretty good summary:
``Depends`` is required and will cause those R packages to be *attached*,
@@ -193,6 +197,14 @@ R packages already have enough dependencies as it is, and adding
optional dependencies can really slow down the concretization
process. They can also introduce circular dependencies.
A fifth rarely used section is:
* Enhances
This means that the package can be used as an optional dependency
for another package. Again, these packages should **NOT** be listed
as dependencies.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Core, recommended, and non-core packages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -208,8 +220,8 @@ If you look at the ``caret`` homepage, you'll notice a few dependencies
that don't have a link to the package, like ``methods``, ``stats``, and
``utils``. These packages are part of the core R distribution and are
tied to the R version installed. You can basically consider these to be
"R itself". These are so essential to R so it would not make sense that
they could be updated via CRAN. If so, you would basically get a different
"R itself". These are so essential to R that it would not make sense for
them to be updated via CRAN. If you did, you would basically get a different
version of R. Thus, they're updated when R is updated.
You can find a list of these core libraries at:
@@ -265,7 +277,7 @@ Non-R dependencies
Some packages depend on non-R libraries for linking. Check out the
`r-stringi <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/r-stringi/package.py>`_
package for an example: https://CRAN.R-project.org/package=stringi.
package for an example: https://cloud.r-project.org/package=stringi.
If you search for the text "SystemRequirements", you will see:
ICU4C (>= 52, optional)
@@ -344,3 +356,11 @@ External documentation
For more information on installing R packages, see:
https://stat.ethz.ch/R-manual/R-devel/library/utils/html/INSTALL.html
For more information on writing R packages, see:
https://cloud.r-project.org/doc/manuals/r-release/R-exts.html
In particular,
https://cloud.r-project.org/doc/manuals/r-release/R-exts.html#Package-Dependencies
has a great explanation of the difference between Depends, Imports,
and LinkingTo.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -0,0 +1,141 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _sippackage:
----------
SIPPackage
----------
SIP is a tool that makes it very easy to create Python bindings for C and C++
libraries. It was originally developed to create PyQt, the Python bindings for
the Qt toolkit, but can be used to create bindings for any C or C++ library.
SIP comprises a code generator and a Python module. The code generator
processes a set of specification files and generates C or C++ code which is
then compiled to create the bindings extension module. The SIP Python module
provides support functions to the automatically generated code.
^^^^^^
Phases
^^^^^^
The ``SIPPackage`` base class comes with the following phases:
#. ``configure`` - configure the package
#. ``build`` - build the package
#. ``install`` - install the package
By default, these phases run:
.. code-block:: console
$ python configure.py --bindir ... --destdir ...
$ make
$ make install
^^^^^^^^^^^^^^^
Important files
^^^^^^^^^^^^^^^
Each SIP package comes with a custom ``configure.py`` build script,
written in Python. This script contains instructions to build the project.
^^^^^^^^^^^^^^^^^^^^^^^^^
Build system dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^
``SIPPackage`` requires several dependencies. Python is needed to run
the ``configure.py`` build script, and to run the resulting Python
libraries. Qt is needed to provide the ``qmake`` command. SIP is also
needed to build the package. SIP is an unusual dependency in that it
must be installed in the same installation directory as the package,
so instead of a ``depends_on``, we use a ``resource``. All of these
dependencies are automatically added via the base class
.. code-block:: python
extends('python')
depends_on('qt', type='build')
resource(name='sip',
url='https://www.riverbankcomputing.com/static/Downloads/sip/4.19.18/sip-4.19.18.tar.gz',
sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e',
destination='.')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Passing arguments to ``configure.py``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Each phase comes with a ``<phase_args>`` function that can be used to pass
arguments to that particular phase. For example, if you need to pass
arguments to the configure phase, you can use:
.. code-block:: python
def configure_args(self, spec, prefix):
return ['--no-python-dbus']
A list of valid options can be found by running ``python configure.py --help``.
^^^^^^^
Testing
^^^^^^^
Just because a package successfully built does not mean that it built
correctly. The most reliable test of whether or not the package was
correctly installed is to attempt to import all of the modules that
get installed. To get a list of modules, run the following command
in the site-packages directory:
.. code-block:: console
$ python
>>> import setuptools
>>> setuptools.find_packages()
['QtPy5']
Large, complex packages like ``QtPy5`` will return a long list of
packages, while other packages may return an empty list. These packages
only install a single ``foo.py`` file. In Python packaging lingo,
a "package" is a directory containing files like:
.. code-block:: none
foo/__init__.py
foo/bar.py
foo/baz.py
whereas a "module" is a single Python file. Since ``find_packages``
only returns packages, you'll have to determine the correct module
names yourself. You can now add these packages and modules to the
package like so:
.. code-block:: python
import_modules = ['PyQt5']
When you run ``spack install --test=root py-pyqt5``, Spack will attempt
to import the ``PyQt5`` module after installation.
These tests most often catch missing dependencies and non-RPATHed
libraries.
^^^^^^^^^^^^^^^^^^^^^^
External documentation
^^^^^^^^^^^^^^^^^^^^^^
For more information on the SIP build system, see:
* https://www.riverbankcomputing.com/software/sip/intro
* https://www.riverbankcomputing.com/static/Docs/sip/
* https://wiki.python.org/moin/SIP

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

96
lib/spack/docs/chain.rst Normal file
View File

@@ -0,0 +1,96 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. chain:
============================
Chaining Spack Installations
============================
You can point your Spack installation to another installation to use any
packages that are installed there. To register the other Spack instance,
you can add it as an entry to ``upstreams.yaml``:
.. code-block:: yaml
upstreams:
spack-instance-1:
install_tree: /path/to/other/spack/opt/spack
spack-instance-2:
install_tree: /path/to/another/spack/opt/spack
``install_tree`` must point to the ``opt/spack`` directory inside of the
Spack base directory.
Once the upstream Spack instance has been added, ``spack find`` will
automatically check the upstream instance when querying installed packages,
and new package installations for the local Spack install will use any
dependencies that are installed in the upstream instance.
This other instance of Spack has no knowledge of the local Spack instance
and may not have the same permissions or ownership as the local Spack instance.
This has the following consequences:
#. Upstream Spack instances are not locked. Therefore it is up to users to
make sure that the local instance is not using an upstream instance when it
is being modified.
#. Users should not uninstall packages from the upstream instance. Since the
upstream instance doesn't know about the local instance, it cannot prevent
the uninstallation of packages which the local instance depends on.
Other details about upstream installations:
#. If a package is installed both locally and upstream, the local installation
will always be used as a dependency. This can occur if the local Spack
installs a package which is not present in the upstream, but later on the
upstream Spack instance also installs that package.
#. If an upstream Spack instance registers and installs an external package,
the local Spack instance will treat this the same as a Spack-installed
package. This feature will only work if the upstream Spack instance
includes the upstream functionality (i.e. if its commit is after March
27, 2019).
---------------------------------------
Using Multiple Upstream Spack Instances
---------------------------------------
A single Spack instance can use multiple upstream Spack installations. Spack
will search upstream instances in the order you list them in your
configuration. If your installation refers to instances X and Y, in that order,
then instance X must list Y as an upstream in its own ``upstreams.yaml``.
-----------------------------------
Using Modules for Upstream Packages
-----------------------------------
The local Spack instance does not generate modules for packages which are
installed upstream. The local Spack instance can be configured to use the
modules generated by the upstream Spack instance.
There are two requirements to use the modules created by an upstream Spack
instance: firstly the upstream instance must do a ``spack module tcl refresh``,
which generates an index file that maps installed packages to their modules;
secondly, the local Spack instance must add a ``modules`` entry to the
configuration:
.. code-block:: yaml
upstreams:
spack-instance-1:
install_tree: /path/to/other/spack/opt/spack
modules:
tcl: /path/to/other/spack/share/spack/modules
Each time new packages are installed in the upstream Spack instance, the
upstream Spack maintainer should run ``spack module tcl refresh`` (or the
corresponding command for the type of module they intend to use).
.. note::
Spack can generate modules that :ref:`automatically load
<autoloading-dependencies>` the modules of dependency packages. Spack cannot
currently do this for modules in upstream packages.

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -20,67 +20,45 @@
import sys
import os
import re
import shutil
import subprocess
from glob import glob
# Since Sphinx 1.7, sphinx.apidoc has been moved to sphinx.ext.apidoc
# sphinx.apidoc is deprecated and will be removed in Sphinx 2.0
try:
from sphinx.ext.apidoc import main as sphinx_apidoc
except ImportError:
from sphinx.apidoc import main as sphinx_apidoc
from sphinx.ext.apidoc import main as sphinx_apidoc
# -- Spack customizations -----------------------------------------------------
# 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('../external'))
sys.path.insert(0, os.path.abspath('_spack_root/lib/spack/external'))
if sys.version_info[0] < 3:
sys.path.insert(0, os.path.abspath('../external/yaml/lib'))
sys.path.insert(
0, os.path.abspath('_spack_root/lib/spack/external/yaml/lib'))
else:
sys.path.insert(0, os.path.abspath('../external/yaml/lib3'))
sys.path.append(os.path.abspath('..'))
sys.path.insert(
0, os.path.abspath('_spack_root/lib/spack/external/yaml/lib3'))
sys.path.append(os.path.abspath('_spack_root/lib/spack/'))
# Add the Spack bin directory to the path so that we can use its output in docs.
spack_root = '../../..'
os.environ['SPACK_ROOT'] = spack_root
os.environ['PATH'] += '%s%s/bin' % (os.pathsep, spack_root)
os.environ['SPACK_ROOT'] = os.path.abspath('_spack_root')
os.environ['PATH'] += "%s%s" % (os.pathsep, os.path.abspath('_spack_root/bin'))
# Set an environment variable so that colify will print output like it would to
# a terminal.
os.environ['COLIFY_SIZE'] = '25x120'
#
# Generate package list using spack command
#
with open('package_list.html', 'w') as plist_file:
subprocess.Popen(
[spack_root + '/bin/spack', 'list', '--format=html'],
stdout=plist_file)
#
# Find all the `cmd-spack-*` references and add them to a command index
#
import spack
import spack.cmd
command_names = spack.cmd.all_commands()
documented_commands = set()
for filename in glob('*rst'):
with open(filename) as f:
for line in f:
match = re.match('.. _cmd-(spack-.*):', line)
if match:
documented_commands.add(match.group(1).strip())
os.environ['COLUMNS'] = '120'
shutil.copy('command_index.in', 'command_index.rst')
with open('command_index.rst', 'a') as index:
subprocess.Popen(
[spack_root + '/bin/spack', 'commands', '--format=rst'] + list(
documented_commands),
stdout=index)
# Generate full package list if needed
subprocess.call([
'spack', 'list', '--format=html', '--update=package_list.html'])
# Generate a command index if an update is needed
subprocess.call([
'spack', 'commands',
'--format=rst',
'--header=command_index.in',
'--update=command_index.rst'] + glob('*rst'))
#
# Run sphinx-apidoc
@@ -90,13 +68,12 @@
# 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'])
sphinx_apidoc(apidoc_args + ['_spack_root/lib/spack/spack'])
sphinx_apidoc(apidoc_args + ['_spack_root/lib/spack/llnl'])
# Enable todo items
todo_include_todos = True
@@ -113,12 +90,12 @@ def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode):
env, fromdocname, builder, typ, target, node, contnode)
def setup(sphinx):
sphinx.override_domain(PatchedPythonDomain)
sphinx.add_domain(PatchedPythonDomain, override=True)
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
needs_sphinx = '1.8'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
@@ -151,13 +128,14 @@ def setup(sphinx):
# General information about the project.
project = u'Spack'
copyright = u'2013-2018, Lawrence Livermore National Laboratory.'
copyright = u'2013-2019, 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.
import spack
version = '.'.join(str(s) for s in spack.spack_version_info[:2])
# The full version, including alpha/beta/rc tags.
release = spack.spack_version
@@ -166,6 +144,13 @@ def setup(sphinx):
# for a list of supported languages.
#language = None
# Places to look for .po/.mo files for doc translations
#locale_dirs = []
# Sphinx gettext settings
gettext_compact = True
gettext_uuid = False
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
@@ -174,7 +159,7 @@ def setup(sphinx):
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
exclude_patterns = ['_build', '_spack_root', '.spack-env']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
@@ -220,12 +205,12 @@ def setup(sphinx):
# 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.svg'
html_logo = '_spack_root/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
# pixels large.
html_favicon = '../../../share/spack/logo/favicon.ico'
html_favicon = '_spack_root/share/spack/logo/favicon.ico'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -13,7 +13,7 @@ Spack's basic configuration options are set in ``config.yaml``. You can
see the default settings by looking at
``etc/spack/defaults/config.yaml``:
.. literalinclude:: ../../../etc/spack/defaults/config.yaml
.. literalinclude:: _spack_root/etc/spack/defaults/config.yaml
:language: yaml
These settings can be overridden in ``etc/spack/config.yaml`` or
@@ -36,19 +36,18 @@ 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}``
Secondly, it is also possible to modify the entire installation
scheme. By default Spack uses
``{architecture}/{compiler.name}-{compiler.version}/{name}-{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
same as those understood by the :meth:`~spack.spec.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}'
install_path_scheme: '{name}/{version}/{hash:7}'
would install packages into sub-directories using only the package
name, version and a hash length of 7 characters.
@@ -75,7 +74,6 @@ the location for each type of module. e.g.:
module_roots:
tcl: $spack/share/spack/modules
lmod: $spack/share/spack/lmod
dotkit: $spack/share/spack/dotkit
See :ref:`modules` for details.
@@ -85,40 +83,46 @@ See :ref:`modules` for details.
Spack is designed to run out of a user home directory, and on many
systems the home directory is a (slow) network file system. On most systems,
building in a temporary file system 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
create build stages in temporary space.
building in a temporary file system is faster. Usually, there is also more
space available in the temporary location than in the home directory. If the
username is not already in the path, Spack will append the value of ``$user`` to
the selected ``build_stage`` path.
.. warning:: We highly recommend specifying ``build_stage`` paths that
distinguish between staging and other activities to ensure
``spack clean`` does not inadvertently remove unrelated files.
Spack prepends ``spack-stage-`` to temporary staging directory names to
reduce this risk. Using a combination of ``spack`` and or ``stage`` in
each specified path, as shown in the default settings and documented
examples, will add another layer of protection.
By default, Spack's ``build_stage`` is configured like this:
.. code-block:: yaml
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $spack/var/spack/stage
- $tempdir/$user/spack-stage
- ~/.spack/stage
This is an ordered list of paths that Spack should search when trying to
This can be an ordered list of paths that Spack should search when trying to
find a temporary directory for the build stage. The list is searched in
order, and Spack will use the first directory to which it has write access.
See :ref:`config-file-variables` for more on ``$tempdir`` and ``$spack``.
Specifying `~/.spack/stage` first will ensure each user builds in their home
directory. The historic Spack stage path `$spack/var/spack/stage` will build
directly inside the Spack instance. 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 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 clean --stage
``build_stage``. After the 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 clean --stage
<cmd-spack-clean>`.
.. note::
The last item in the list is ``$spack/var/spack/stage``. If this is the
only writable directory in the ``build_stage`` list, Spack will build
*directly* in ``$spack/var/spack/stage`` and will not link to temporary
space.
The build will fail if there is no writable directory in the ``build_stage``
list, where any user- and site-specific setting will be searched first.
--------------------
``source_cache``
@@ -180,16 +184,23 @@ 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:
--------------
``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.
packages in parallel. The default parallelism is equal to the number of
cores on your machine, up to 16. Parallelism cannot exceed the number of
cores available on the host. For a build system that uses Makefiles, this
means running:
- ``make -j<build_jobs>``, when ``build_jobs`` is less than the number of
cores on the machine
- ``make -j<ncores>``, when ``build_jobs`` is greater or equal to the
number of cores on the machine
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``
@@ -215,3 +226,24 @@ ccache`` to learn more about the default settings and how to change
them). Please note that we currently disable ccache's ``hash_dir``
feature to avoid an issue with the stage directory (see
https://github.com/LLNL/spack/pull/3761#issuecomment-294352232).
------------------
``shared_linking``
------------------
Control whether Spack embeds ``RPATH`` or ``RUNPATH`` attributes in ELF binaries
so that they can find their dependencies. Has no effect on macOS.
Two options are allowed:
1. ``rpath`` uses ``RPATH`` and forces the ``--disable-new-tags`` flag to be passed to the linker
2. ``runpath`` uses ``RUNPATH`` and forces the ``--enable-new-tags`` flag to be passed to the linker
``RPATH`` search paths have higher precedence than ``LD_LIBRARY_PATH``
and ld.so will search for libraries in transitive ``RPATHs`` of
parent objects.
``RUNPATH`` search paths have lower precedence than ``LD_LIBRARY_PATH``,
and ld.so will ONLY search for dependencies in the ``RUNPATH`` of
the loading object.
DO NOT MIX the two options within the same install tree.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -36,8 +36,8 @@ Here is an example ``config.yaml`` file:
module_roots:
lmod: $spack/share/spack/lmod
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $tempdir/$user/spack-stage
- ~/.spack/stage
Each Spack configuration file is nested under a top-level section
corresponding to its name. So, ``config.yaml`` starts with ``config:``,
@@ -244,8 +244,8 @@ your configurations look like this:
module_roots:
lmod: $spack/share/spack/lmod
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $tempdir/$user/spack-stage
- ~/.spack/stage
.. code-block:: yaml
@@ -269,8 +269,8 @@ command:
module_roots:
lmod: $spack/share/spack/lmod
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $tempdir/$user/spack-stage
- ~/.spack/stage
.. _config-overrides:
@@ -312,8 +312,8 @@ Let's revisit the ``config.yaml`` example one more time. The
:caption: $(prefix)/etc/spack/defaults/config.yaml
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $tempdir/$user/spack-stage
- ~/.spack/stage
Suppose the user configuration adds its *own* list of ``build_stage``
@@ -323,7 +323,7 @@ paths:
:caption: ~/.spack/config.yaml
build_stage:
- /lustre-scratch/$user
- /lustre-scratch/$user/spack
- ~/mystage
@@ -341,10 +341,10 @@ get config`` shows the result:
module_roots:
lmod: $spack/share/spack/lmod
build_stage:
- /lustre-scratch/$user
- /lustre-scratch/$user/spack
- ~/mystage
- $tempdir
- /nfs/tmp2/$user
- $tempdir/$user/spack-stage
- ~/.spack/stage
As in :ref:`config-overrides`, the higher-precedence scope can
@@ -356,7 +356,7 @@ user config looked like this:
:caption: ~/.spack/config.yaml
build_stage::
- /lustre-scratch/$user
- /lustre-scratch/$user/spack
- ~/mystage
@@ -371,7 +371,7 @@ The merged configuration would look like this:
module_roots:
lmod: $spack/share/spack/lmod
build_stage:
- /lustre-scratch/$user
- /lustre-scratch/$user/spack
- ~/mystage
@@ -459,14 +459,13 @@ account all scopes. For example, to see the fully merged
install_tree: $spack/opt/spack
template_dirs:
- $spack/templates
directory_layout: ${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}
directory_layout: {architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}
module_roots:
tcl: $spack/share/spack/modules
lmod: $spack/share/spack/lmod
dotkit: $spack/share/spack/dotkit
build_stage:
- $tempdir
- /nfs/tmp2/$user
- $tempdir/$user/spack-stage
- ~/.spack/stage
- $spack/var/spack/stage
source_cache: $spack/var/spack/cache
misc_cache: ~/.spack/cache
@@ -510,14 +509,13 @@ down the problem:
./my-scope/config.yaml:2 install_tree: /path/to/some/tree
/home/myuser/spack/etc/spack/defaults/config.yaml:23 template_dirs:
/home/myuser/spack/etc/spack/defaults/config.yaml:24 - $spack/templates
/home/myuser/spack/etc/spack/defaults/config.yaml:28 directory_layout: ${ARCHITECTURE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}
/home/myuser/spack/etc/spack/defaults/config.yaml:28 directory_layout: {architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}
/home/myuser/spack/etc/spack/defaults/config.yaml:32 module_roots:
/home/myuser/spack/etc/spack/defaults/config.yaml:33 tcl: $spack/share/spack/modules
/home/myuser/spack/etc/spack/defaults/config.yaml:34 lmod: $spack/share/spack/lmod
/home/myuser/spack/etc/spack/defaults/config.yaml:35 dotkit: $spack/share/spack/dotkit
/home/myuser/spack/etc/spack/defaults/config.yaml:49 build_stage:
/home/myuser/spack/etc/spack/defaults/config.yaml:50 - $tempdir
/home/myuser/spack/etc/spack/defaults/config.yaml:51 - /nfs/tmp2/$user
/home/myuser/spack/etc/spack/defaults/config.yaml:50 - $tempdir/$user/spack-stage
/home/myuser/spack/etc/spack/defaults/config.yaml:51 - ~/.spack/stage
/home/myuser/spack/etc/spack/defaults/config.yaml:52 - $spack/var/spack/stage
/home/myuser/spack/etc/spack/defaults/config.yaml:57 source_cache: $spack/var/spack/cache
/home/myuser/spack/etc/spack/defaults/config.yaml:62 misc_cache: ~/.spack/cache

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -488,7 +488,7 @@ supply ``--profile`` to Spack on the command line, before any subcommands.
``spack --profile`` output looks like this:
.. command-output:: spack --profile graph dyninst
.. command-output:: spack --profile graph hdf5
:ellipsis: 25
The bottom of the output shows the top most time consuming functions,

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -0,0 +1,823 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _environments:
============
Environments
============
An environment is used to group together a set of specs for the
purpose of building, rebuilding and deploying in a coherent fashion.
Environments provide a number of advantages over the *à la carte*
approach of building and loading individual Spack modules:
#. Environments separate the steps of (a) choosing what to
install, (b) concretizing, and (c) installing. This allows
Environments to remain stable and repeatable, even if Spack packages
are upgraded: specs are only re-concretized when the user
explicitly asks for it. It is even possible to reliably
transport environments between different computers running
different versions of Spack!
#. Environments allow several specs to be built at once; a more robust
solution than ad-hoc scripts making multiple calls to ``spack
install``.
#. An Environment that is built as a whole can be loaded as a whole
into the user environment. An Environment can be built to maintain
a filesystem view of its packages, and the environment can load
that view into the user environment at activation time. Spack can
also generate a script to load all modules related to an
environment.
Other packaging systems also provide environments that are similar in
some ways to Spack environments; for example, `Conda environments
<https://conda.io/docs/user-guide/tasks/manage-environments.html>`_ or
`Python Virtual Environments
<https://docs.python.org/3/tutorial/venv.html>`_. Spack environments
provide some distinctive features:
#. A spec installed "in" an environment is no different from the same
spec installed anywhere else in Spack. Environments are assembled
simply by collecting together a set of specs.
#. Spack Environments may contain more than one spec of the same
package.
Spack uses a "manifest and lock" model similar to `Bundler gemfiles
<https://bundler.io/man/gemfile.5.html>`_ and other package
managers. The user input file is named ``spack.yaml`` and the lock
file is named ``spack.lock``
------------------
Using Environments
------------------
Here we follow a typical use case of creating, concretizing,
installing and loading an environment.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creating a named Environment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
An environment is created by:
.. code-block:: console
$ spack env create myenv
Spack then creates the directory ``var/spack/environments/myenv``.
.. note::
All named environments are stored in the ``var/spack/environments`` folder.
In the ``var/spack/environments/myenv`` directory, Spack creates the
file ``spack.yaml`` and the hidden directory ``.spack-env``.
Spack stores metadata in the ``.spack-env`` directory. User
interaction will occur through the ``spack.yaml`` file and the Spack
commands that affect it. When the environment is concretized, Spack
will create a file ``spack.lock`` with the concrete information for
the environment.
In addition to being the default location for the view associated with
an Environment, the ``.spack-env`` directory also contains:
* ``repo/``: A repo consisting of the Spack packages used in this
environment. This allows the environment to build the same, in
theory, even on different versions of Spack with different
packages!
* ``logs/``: A directory containing the build logs for the packages
in this Environment.
Spack Environments can also be created from either a ``spack.yaml``
manifest or a ``spack.lock`` lockfile. To create an Environment from a
``spack.yaml`` manifest:
.. code-block:: console
$ spack env create myenv spack.yaml
To create an Environment from a ``spack.lock`` lockfile:
.. code-block:: console
$ spack env create myenv spack.lock
Either of these commands can also take a full path to the
initialization file.
A Spack Environment created from a ``spack.yaml`` manifest is
guaranteed to have the same root specs as the original Environment,
but may concretize differently. A Spack Environment created from a
``spack.lock`` lockfile is guaranteed to have the same concrete specs
as the original Environment. Either may obviously then differ as the
user modifies it.
^^^^^^^^^^^^^^^^^^^^^^^^^
Activating an Environment
^^^^^^^^^^^^^^^^^^^^^^^^^
To activate an environment, use the following command:
.. code-block:: console
$ spack env activate myenv
By default, the ``spack env activate`` will load the view associated
with the Environment into the user environment. The ``-v,
--with-view`` argument ensures this behavior, and the ``-V,
--without-vew`` argument activates the environment without changing
the user environment variables.
The ``-p`` option to the ``spack env activate`` command modifies the
user's prompt to begin with the environment name in brackets.
.. code-block:: console
$ spack env activate -p myenv
[myenv] $ ...
To deactivate an environment, use the command:
.. code-block:: console
$ spack env deactivate
or the shortcut alias
.. code-block:: console
$ despacktivate
If the environment was activated with its view, deactivating the
environment will remove the view from the user environment.
^^^^^^^^^^^^^^^^^^^^^^
Anonymous Environments
^^^^^^^^^^^^^^^^^^^^^^
Any directory can be treated as an environment if it contains a file
``spack.yaml``. To load an anonymous environment, use:
.. code-block:: console
$ spack env activate -d /path/to/directory
Spack commands that are environment sensitive will also act on the
environment any time the current working directory contains a
``spack.yaml`` file. Changing working directory to a directory
containing a ``spack.yaml`` file is equivalent to the command:
.. code-block:: console
$ spack env activate -d /path/to/dir --without-view
Anonymous specs can be created in place using the command:
.. code-block:: console
$ spack env create -d .
In this case Spack simply creates a spack.yaml file in the requested
directory.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Environment Sensitive Commands
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Spack commands are environment sensitive. For example, the ``find``
command shows only the specs in the active Environment if an
Environment has been activated. Similarly, the ``install`` and
``uninstall`` commands act on the active environment.
.. code-block:: console
$ spack find
==> 0 installed packages
$ spack install zlib@1.2.11
==> Installing zlib
==> Searching for binary cache of zlib
==> Warning: No Spack mirrors are currently configured
==> No binary for zlib found: installing from source
==> Fetching http://zlib.net/fossils/zlib-1.2.11.tar.gz
######################################################################## 100.0%
==> Staging archive: /spack/var/spack/stage/zlib-1.2.11-3r4cfkmx3wwfqeof4bc244yduu2mz4ur/zlib-1.2.11.tar.gz
==> Created stage in /spack/var/spack/stage/zlib-1.2.11-3r4cfkmx3wwfqeof4bc244yduu2mz4ur
==> No patches needed for zlib
==> Building zlib [Package]
==> Executing phase: 'install'
==> Successfully installed zlib
Fetch: 0.36s. Build: 11.58s. Total: 11.93s.
[+] /spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/zlib-1.2.11-3r4cfkmx3wwfqeof4bc244yduu2mz4ur
$ spack env activate myenv
$ spack find
==> In environment myenv
==> No root specs
==> 0 installed packages
$ spack install zlib@1.2.8
==> Installing zlib
==> Searching for binary cache of zlib
==> Warning: No Spack mirrors are currently configured
==> No binary for zlib found: installing from source
==> Fetching http://zlib.net/fossils/zlib-1.2.8.tar.gz
######################################################################## 100.0%
==> Staging archive: /spack/var/spack/stage/zlib-1.2.8-y2t6kq3s23l52yzhcyhbpovswajzi7f7/zlib-1.2.8.tar.gz
==> Created stage in /spack/var/spack/stage/zlib-1.2.8-y2t6kq3s23l52yzhcyhbpovswajzi7f7
==> No patches needed for zlib
==> Building zlib [Package]
==> Executing phase: 'install'
==> Successfully installed zlib
Fetch: 0.26s. Build: 2.08s. Total: 2.35s.
[+] /spack/opt/spack/linux-rhel7-x86_64/gcc-4.9.3/zlib-1.2.8-y2t6kq3s23l52yzhcyhbpovswajzi7f7
$ spack find
==> In environment myenv
==> Root specs
zlib@1.2.8
==> 1 installed package
-- linux-rhel7-x86_64 / gcc@4.9.3 -------------------------------
zlib@1.2.8
$ despacktivate
$ spack find
==> 2 installed packages
-- linux-rhel7-x86_64 / gcc@4.9.3 -------------------------------
zlib@1.2.8 zlib@1.2.11
Note that when we installed the abstract spec ``zlib@1.2.8``, it was
presented as a root of the Environment. All explicitly installed
packages will be listed as roots of the Environment.
All of the Spack commands that act on the list of installed specs are
Environment-sensitive in this way, including ``install``,
``uninstall``, ``activate``, ``deactivate``, ``find``, ``extensions``,
and more. In the :ref:`environment-configuration` section we will discuss
Environment-sensitive commands further.
^^^^^^^^^^^^^^^^^^^^^
Adding Abstract Specs
^^^^^^^^^^^^^^^^^^^^^
An abstract spec is the user-specified spec before Spack has applied
any defaults or dependency information.
Users can add abstract specs to an Environment using the ``spack add``
command. The most important component of an Environment is a list of
abstract specs.
Adding a spec adds to the manifest (the ``spack.yaml`` file) and to
the roots of the Environment, but does not affect the concrete specs
in the lockfile, nor does it install the spec.
The ``spack add`` command is environment aware. It adds to the
currently active environment. All environment aware commands can also
be called using the ``spack -E`` flag to specify the environment.
.. code-block:: console
$ spack activate myenv
$ spack add mpileaks
or
.. code-block:: console
$ spack -E myenv add python
.. _environments_concretization:
^^^^^^^^^^^^
Concretizing
^^^^^^^^^^^^
Once some user specs have been added to an environment, they can be
concretized. *By default specs are concretized separately*, one after
the other. This mode of operation permits to deploy a full
software stack where multiple configurations of the same package
need to be installed alongside each other. Central installations done
at HPC centers by system administrators or user support groups
are a common case that fits in this behavior.
Environments *can also be configured to concretize all
the root specs in a self-consistent way* to ensure that
each package in the environment comes with a single configuration. This
mode of operation is usually what is required by software developers that
want to deploy their development environment.
Regardless of which mode of operation has been chosen, the following
command will ensure all the root specs are concretized according to the
constraints that are prescribed in the configuration:
.. code-block:: console
[myenv]$ spack concretize
In the case of specs that are not concretized together, the command
above will concretize only the specs that were added and not yet
concretized. Forcing a re-concretization of all the specs can be done
instead with this command:
.. code-block:: console
[myenv]$ spack concretize -f
When the ``-f`` flag is not used to reconcretize all specs, Spack
guarantees that already concretized specs are unchanged in the
environment.
The ``concretize`` command does not install any packages. For packages
that have already been installed outside of the environment, the
process of adding the spec and concretizing is identical to installing
the spec assuming it concretizes to the exact spec that was installed
outside of the environment.
The ``spack find`` command can show concretized specs separately from
installed specs using the ``-c`` (``--concretized``) flag.
.. code-block:: console
[myenv]$ spack add zlib
[myenv]$ spack concretize
[myenv]$ spack find -c
==> In environment myenv
==> Root specs
zlib
==> Concretized roots
-- linux-rhel7-x86_64 / gcc@4.9.3 -------------------------------
zlib@1.2.11
==> 0 installed packages
^^^^^^^^^^^^^^^^^^^^^^^^^
Installing an Environment
^^^^^^^^^^^^^^^^^^^^^^^^^
In addition to installing individual specs into an Environment, one
can install the entire Environment at once using the command
.. code-block:: console
[myenv]$ spack install
If the Environment has been concretized, Spack will install the
concretized specs. Otherwise, ``spack install`` will first concretize
the Environment and then install the concretized specs.
As it installs, ``spack install`` creates symbolic links in the
``logs/`` directory in the Environment, allowing for easy inspection
of build logs related to that environment. The ``spack install``
command also stores a Spack repo containing the ``package.py`` file
used at install time for each package in the ``repos/`` directory in
the Environment.
^^^^^^^
Loading
^^^^^^^
Once an environment has been installed, the following creates a load script for it:
.. code-block:: console
$ spack env myenv loads -r
This creates a file called ``loads`` in the environment directory.
Sourcing that file in Bash will make the environment available to the
user; and can be included in ``.bashrc`` files, etc. The ``loads``
file may also be copied out of the environment, renamed, etc.
----------
spack.yaml
----------
Spack environments can be customized at finer granularity by editing
the ``spack.yaml`` manifest file directly.
.. _environment-configuration:
^^^^^^^^^^^^^^^^^^^^^^^^
Configuring Environments
^^^^^^^^^^^^^^^^^^^^^^^^
A variety of Spack behaviors are changed through Spack configuration
files, covered in more detail in the :ref:`configuration`
section.
Spack Environments provide an additional level of configuration scope
between the custom scope and the user scope discussed in the
configuration documentation.
There are two ways to include configuration information in a Spack Environment:
#. Inline in the ``spack.yaml`` file
#. Included in the ``spack.yaml`` file from another file.
"""""""""""""""""""""
Inline configurations
"""""""""""""""""""""
Inline Environment-scope configuration is done using the same yaml
format as standard Spack configuration scopes, covered in the
:ref:`configuration` section. Each section is contained under a
top-level yaml object with it's name. For example, a ``spack.yaml``
manifest file containing some package preference configuration (as in
a ``packages.yaml`` file) could contain:
.. code-block:: yaml
spack:
...
packages:
all:
compiler: [intel]
...
This configuration sets the default compiler for all packages to
``intel``.
"""""""""""""""""""""""
Included configurations
"""""""""""""""""""""""
Spack environments allow an ``include`` heading in their yaml
schema. This heading pulls in external configuration files and applies
them to the Environment.
.. code-block:: yaml
spack:
include:
- relative/path/to/config.yaml
- /absolute/path/to/packages.yaml
Environments can include files with either relative or absolute
paths. Inline configurations take precedence over included
configurations, so you don't have to change shared configuration files
to make small changes to an individual Environment. Included configs
listed later will have higher precedence, as the included configs are
applied in order.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Manually Editing the Specs List
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The list of abstract/root specs in the Environment is maintained in
the ``spack.yaml`` manifest under the heading ``specs``.
.. code-block:: yaml
spack:
specs:
- ncview
- netcdf
- nco
- py-sphinx
Appending to this list in the yaml is identical to using the ``spack
add`` command from the command line. However, there is more power
available from the yaml file.
"""""""""""""""""""
Spec concretization
"""""""""""""""""""
Specs can be concretized separately or together, as already
explained in :ref:`environments_concretization`. The behavior active
under any environment is determined by the ``concretization`` property:
.. code-block:: yaml
spack:
specs:
- ncview
- netcdf
- nco
- py-sphinx
concretization: together
which can currently take either one of the two allowed values ``together`` or ``separately``
(the default).
.. admonition:: Re-concretization of user specs
When concretizing specs together the entire set of specs will be
re-concretized after any addition of new user specs, to ensure that
the environment remains consistent. When instead the specs are concretized
separately only the new specs will be re-concretized after any addition.
"""""""""""""
Spec Matrices
"""""""""""""
Entries in the ``specs`` list can be individual abstract specs or a
spec matrix.
A spec matrix is a yaml object containing multiple lists of specs, and
evaluates to the cross-product of those specs. Spec matrices also
contain an ``excludes`` directive, which eliminates certain
combinations from the evaluated result.
The following two Environment manifests are identical:
.. code-block:: yaml
spack:
specs:
- zlib %gcc@7.1.0
- zlib %gcc@4.9.3
- libelf %gcc@7.1.0
- libelf %gcc@4.9.3
- libdwarf %gcc@7.1.0
- cmake
spack:
specs:
- matrix:
- [zlib, libelf, libdwarf]
- ['%gcc@7.1.0', '%gcc@4.9.3']
exclude:
- libdwarf%gcc@4.9.3
- cmake
Spec matrices can be used to install swaths of software across various
toolchains.
The concretization logic for spec matrices differs slightly from the
rest of Spack. If a variant or dependency constraint from a matrix is
invalid, Spack will reject the constraint and try again without
it. For example, the following two Environment manifests will produce
the same specs:
.. code-block:: yaml
spack:
specs:
- matrix:
- [zlib, libelf, hdf5+mpi]
- [^mvapich2@2.2, ^openmpi@3.1.0]
spack:
specs:
- zlib
- libelf
- hdf5+mpi ^mvapich2@2.2
- hdf5+mpi ^openmpi@3.1.0
This allows one to create toolchains out of combinations of
constraints and apply them somewhat indiscriminately to packages,
without regard for the applicability of the constraint.
""""""""""""""""""""
Spec List References
""""""""""""""""""""
The last type of possible entry in the specs list is a reference.
The Spack Environment manifest yaml schema contains an additional
heading ``definitions``. Under definitions is an array of yaml
objects. Each object has one or two fields. The one required field is
a name, and the optional field is a ``when`` clause.
The named field is a spec list. The spec list uses the same syntax as
the ``specs`` entry. Each entry in the spec list can be a spec, a spec
matrix, or a reference to an earlier named list. References are
specified using the ``$`` sigil, and are "splatted" into place
(i.e. the elements of the referent are at the same level as the
elements listed separately). As an example, the following two manifest
files are identical.
.. code-block:: yaml
spack:
definitions:
- first: [libelf, libdwarf]
- compilers: ['%gcc', '^intel']
- second:
- $first
- matrix:
- [zlib]
- [$compilers]
specs:
- $second
- cmake
spack:
specs:
- libelf
- libdwarf
- zlib%gcc
- zlib%intel
- cmake
.. note::
Named spec lists in the definitions section may only refer
to a named list defined above itself. Order matters.
In short files like the example, it may be easier to simply list the
included specs. However for more complicated examples involving many
packages across many toolchains, separately factored lists make
Environments substantially more manageable.
Additionally, the ``-l`` option to the ``spack add`` command allows
one to add to named lists in the definitions section of the manifest
file directly from the command line.
The ``when`` directive can be used to conditionally add specs to a
named list. The ``when`` directive takes a string of Python code
referring to a restricted set of variables, and evaluates to a
boolean. The specs listed are appended to the named list if the
``when`` string evaluates to ``True``. In the following snippet, the
named list ``compilers`` is ``['%gcc', '%clang', '%intel']`` on
``x86_64`` systems and ``['%gcc', '%clang']`` on all other systems.
.. code-block:: yaml
spack:
definitions:
- compilers: ['%gcc', '%clang']
- when: target == 'x86_64'
compilers: ['%intel']
.. note::
Any definitions with the same named list with true ``when``
clauses (or absent ``when`` clauses) will be appended together
The valid variables for a ``when`` clause are:
#. ``platform``. The platform string of the default Spack
architecture on the system.
#. ``os``. The os string of the default Spack architecture on
the system.
#. ``target``. The target string of the default Spack
architecture on the system.
#. ``architecture`` or ``arch``. The full string of the
default Spack architecture on the system.
#. ``re``. The standard regex module in Python.
#. ``env``. The user environment (usually ``os.environ`` in Python).
#. ``hostname``. The hostname of the system (if ``hostname`` is an
executable in the user's PATH).
^^^^^^^^^^^^^^^^^^^^^^^^^
Environment-managed Views
^^^^^^^^^^^^^^^^^^^^^^^^^
Spack Environments can define filesystem views of their software,
which are maintained as packages and can be installed and uninstalled from
the Environment. Filesystem views provide an access point for packages
from the filesystem for users who want to access those packages
directly. For more information on filesystem views, see the section
:ref:`filesystem-views`.
Spack Environment managed views are updated every time the environment
is written out to the lock file ``spack.lock``, so the concrete
environment and the view are always compatible.
"""""""""""""""""""""""""""""
Configuring environment views
"""""""""""""""""""""""""""""
The Spack Environment manifest file has a top-level keyword
``view``. Each entry under that heading is a view descriptor, headed
by a name. The view descriptor contains the root of the view, and
optionally the projections for the view, and ``select`` and
``exclude`` lists for the view. For example, in the following manifest
file snippet we define a view named ``mpis``, rooted at
``/path/to/view`` in which all projections use the package name,
version, and compiler name to determine the path for a given
package. This view selects all packages that depend on MPI, and
excludes those built with the PGI compiler at version 18.5.
.. code-block:: yaml
spack:
...
view:
mpis:
root: /path/to/view
select: [^mpi]
exclude: ['%pgi@18.5']
projections:
all: {name}/{version}-{compiler.name}
For more information on using view projections, see the section on
:ref:`adding_projections_to_views`. The default for the ``select`` and
``exclude`` values is to select everything and exclude nothing. The
default projection is the default view projection (``{}``).
Any number of views may be defined under the ``view`` heading in a
Spack Environment.
There are two shorthands for environments with a single view. If the
environment at ``/path/to/env`` has a single view, with a root at
``/path/to/env/.spack-env/view``, with default selection and exclusion
and the default projection, we can put ``view: True`` in the
environment manifest. Similarly, if the environment has a view with a
different root, but default selection, exclusion, and projections, the
manifest can say ``view: /path/to/view``. These views are
automatically named ``default``, so that
.. code-block:: yaml
spack:
...
view: True
is equivalent to
.. code-block:: yaml
spack:
...
view:
default:
root: .spack-env/view
and
.. code-block:: yaml
spack:
...
view: /path/to/view
is equivalent to
.. code-block:: yaml
spack:
...
view:
default:
root: /path/to/view
By default, Spack environments are configured with ``view: True`` in
the manifest. Environments can be configured without views using
``view: False``. For backwards compatibility reasons, environments
with no ``view`` key are treated the same as ``view: True``.
From the command line, the ``spack env create`` command takes an
argument ``--with-view [PATH]`` that sets the path for a single, default
view. If no path is specified, the default path is used (``view:
True``). The argument ``--without-view`` can be used to create an
environment without any view configured.
The ``spack env view`` command can be used to change the manage views
of an Environment. The subcommand ``spack env view enable`` will add a
view named ``default`` to an environment. It takes an optional
argument to specify the path for the new default view. The subcommand
``spack env view disable`` will remove the view named ``default`` from
an environment if one exists. The subcommand ``spack env view
regenerate`` will regenerate the views for the environment. This will
apply any updates in the environment configuration that have not yet
been applied.
""""""""""""""""""""""""""""
Activating environment views
""""""""""""""""""""""""""""
The ``spack env activate`` command will put the default view for the
environment into the user's path, in addition to activating the
environment for Spack commands. The arguments ``-v,--with-view`` and
``-V,--without-view`` can be used to tune this behavior. The default
behavior is to activate with the environment view if there is one.
The environment variables affected by the ``spack env activate``
command and the paths that are used to update them are in the
following table.
=================== =========
Variable Paths
=================== =========
PATH bin
MANPATH man, share/man
ACLOCAL_PATH share/aclocal
LD_LIBRARY_PATH lib, lib64
LIBRARY_PATH lib, lib64
CPATH include
PKG_CONFIG_PATH lib/pkgconfig, lib64/pkgconfig, share/pkgconfig
CMAKE_PREFIX_PATH .
=================== =========
Each of these paths are appended to the view root, and added to the
relevant variable if the path exists. For this reason, it is not
recommended to use non-default projections with the default view of an
environment.
The ``spack env deactivate`` command will remove the default view of
the environment from the user's path.

View File

@@ -0,0 +1,161 @@
spack:
definitions:
- compiler-pkgs:
- 'llvm+clang@6.0.1 os=centos7'
- 'gcc@6.5.0 os=centos7'
- 'llvm+clang@6.0.1 os=ubuntu18.04'
- 'gcc@6.5.0 os=ubuntu18.04'
- pkgs:
- readline@7.0
# - xsdk@0.4.0
- compilers:
- '%gcc@5.5.0'
- '%gcc@6.5.0'
- '%gcc@7.3.0'
- '%clang@6.0.0'
- '%clang@6.0.1'
- oses:
- os=ubuntu18.04
- os=centos7
specs:
- matrix:
- [$pkgs]
- [$compilers]
- [$oses]
exclude:
- '%gcc@7.3.0 os=centos7'
- '%gcc@5.5.0 os=ubuntu18.04'
mirrors:
cloud_gitlab: https://mirror.spack.io
compilers:
# The .gitlab-ci.yml for this project picks a Docker container which does
# not have any compilers pre-built and ready to use, so we need to fake the
# existence of those here.
- compiler:
operating_system: centos7
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: gcc@5.5.0
target: x86_64
- compiler:
operating_system: centos7
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: gcc@6.5.0
target: x86_64
- compiler:
operating_system: centos7
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: clang@6.0.0
target: x86_64
- compiler:
operating_system: centos7
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: clang@6.0.1
target: x86_64
- compiler:
operating_system: ubuntu18.04
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: clang@6.0.0
target: x86_64
- compiler:
operating_system: ubuntu18.04
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: clang@6.0.1
target: x86_64
- compiler:
operating_system: ubuntu18.04
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: gcc@6.5.0
target: x86_64
- compiler:
operating_system: ubuntu18.04
modules: []
paths:
cc: /not/used
cxx: /not/used
f77: /not/used
fc: /not/used
spec: gcc@7.3.0
target: x86_64
gitlab-ci:
bootstrap:
- name: compiler-pkgs
compiler-agnostic: true
mappings:
- # spack-cloud-ubuntu
match:
# these are specs, if *any* match the spec under consideration, this
# 'mapping' will be used to generate the CI job
- os=ubuntu18.04
runner-attributes:
# 'tags' and 'image' go directly onto the job, 'variables' will
# be added to what we already necessarily create for the job as
# a part of the CI workflow
tags:
- spack-k8s
image:
name: scottwittenburg/spack_builder_ubuntu_18.04
entrypoint: [""]
- # spack-cloud-centos
match:
# these are specs, if *any* match the spec under consideration, this
# 'mapping' will be used to generate the CI job
- 'os=centos7'
runner-attributes:
tags:
- spack-k8s
image:
name: scottwittenburg/spack_builder_centos_7
entrypoint: [""]
cdash:
build-group: Release Testing
url: http://cdash
project: Spack Testing
site: Spack Docker-Compose Workflow
repos: []
upstreams: {}
modules:
enable: []
packages: {}
config: {}

View File

@@ -0,0 +1,128 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. extensions:
=================
Custom Extensions
=================
.. warning::
The support for extending Spack with custom commands is still experimental.
Users should expect APIs or prescribed directory structures to
change at any time.
*Spack extensions* permit you to extend Spack capabilities by deploying your
own custom commands or logic in an arbitrary location on your filesystem.
This might be extremely useful e.g. to develop and maintain a command whose purpose is
too specific to be considered for reintegration into the mainline or to
evolve a command through its early stages before starting a discussion to merge
it upstream.
From Spack's point of view an extension is any path in your filesystem which
respects a prescribed naming and layout for files:
.. code-block:: console
spack-scripting/ # The top level directory must match the format 'spack-{extension_name}'
├── pytest.ini # Optional file if the extension ships its own tests
├── scripting # Folder that may contain modules that are needed for the extension commands
│   └── cmd # Folder containing extension commands
│   └── filter.py # A new command that will be available
├── tests # Tests for this extension
│ ├── conftest.py
│ └── test_filter.py
└── templates # Templates that may be needed by the extension
In the example above the extension named *scripting* adds an additional command (``filter``)
and unit tests to verify its behavior. The code for this example can be
obtained by cloning the corresponding git repository:
.. TODO: write an ad-hoc "hello world" extension and make it part of the spack organization
.. code-block:: console
$ pwd
/home/user
$ mkdir tmp && cd tmp
$ git clone https://github.com/alalazo/spack-scripting.git
Cloning into 'spack-scripting'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 11 (delta 0), reused 11 (delta 0), pack-reused 0
Receiving objects: 100% (11/11), done.
As you can see by inspecting the sources, Python modules that are part of the extension
can import any core Spack module.
---------------------------------
Configure Spack to Use Extensions
---------------------------------
To make your current Spack instance aware of extensions you should add their root
paths to ``config.yaml``. In the case of our example this means ensuring that:
.. code-block:: yaml
config:
extensions:
- /home/user/tmp/spack-scripting
is part of your configuration file. Once this is setup any command that the extension provides
will be available from the command line:
.. code-block:: console
$ spack filter --help
usage: spack filter [-h] [--installed | --not-installed]
[--explicit | --implicit] [--output OUTPUT]
...
filter specs based on their properties
positional arguments:
specs specs to be filtered
optional arguments:
-h, --help show this help message and exit
--installed select installed specs
--not-installed select specs that are not yet installed
--explicit select specs that were installed explicitly
--implicit select specs that are not installed or were installed implicitly
--output OUTPUT where to dump the result
The corresponding unit tests can be run giving the appropriate options to ``spack test``:
.. code-block:: console
$ spack test --extension=scripting
============================================================== test session starts ===============================================================
platform linux2 -- Python 2.7.15rc1, pytest-3.2.5, py-1.4.34, pluggy-0.4.0
rootdir: /home/mculpo/tmp/spack-scripting, inifile: pytest.ini
collected 5 items
tests/test_filter.py ...XX
============================================================ short test summary info =============================================================
XPASS tests/test_filter.py::test_filtering_specs[flags3-specs3-expected3]
XPASS tests/test_filter.py::test_filtering_specs[flags4-specs4-expected4]
=========================================================== slowest 20 test durations ============================================================
3.74s setup tests/test_filter.py::test_filtering_specs[flags0-specs0-expected0]
0.17s call tests/test_filter.py::test_filtering_specs[flags3-specs3-expected3]
0.16s call tests/test_filter.py::test_filtering_specs[flags2-specs2-expected2]
0.15s call tests/test_filter.py::test_filtering_specs[flags1-specs1-expected1]
0.13s call tests/test_filter.py::test_filtering_specs[flags4-specs4-expected4]
0.08s call tests/test_filter.py::test_filtering_specs[flags0-specs0-expected0]
0.04s teardown tests/test_filter.py::test_filtering_specs[flags4-specs4-expected4]
0.00s setup tests/test_filter.py::test_filtering_specs[flags4-specs4-expected4]
0.00s setup tests/test_filter.py::test_filtering_specs[flags3-specs3-expected3]
0.00s setup tests/test_filter.py::test_filtering_specs[flags1-specs1-expected1]
0.00s setup tests/test_filter.py::test_filtering_specs[flags2-specs2-expected2]
0.00s teardown tests/test_filter.py::test_filtering_specs[flags2-specs2-expected2]
0.00s teardown tests/test_filter.py::test_filtering_specs[flags1-specs1-expected1]
0.00s teardown tests/test_filter.py::test_filtering_specs[flags0-specs0-expected0]
0.00s teardown tests/test_filter.py::test_filtering_specs[flags3-specs3-expected3]
====================================================== 3 passed, 2 xpassed in 4.51 seconds =======================================================

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -60,14 +60,14 @@ Customize dependencies
----------------------
Spack allows *dependencies* of a particular installation to be
customized extensively. Suppose that ``mpileaks`` depends indirectly
on ``libelf`` and ``libdwarf``. Using ``^``, users can add custom
customized extensively. Suppose that ``hdf5`` depends
on ``openmpi`` and indirectly on ``hwloc``. Using ``^``, users can add custom
configurations for the dependencies:
.. code-block:: console
# Install mpileaks and link it with specific versions of libelf and libdwarf
$ spack install mpileaks@1.1.2 %gcc@4.7.3 +debug ^libelf@0.8.12 ^libdwarf@20130729+debug
# Install hdf5 and link it with specific versions of openmpi and hwloc
$ spack install hdf5@1.10.1 %gcc@4.7.3 +debug ^openmpi+cuda fabrics=auto ^hwloc+gl
------------------------
Non-destructive installs
@@ -130,7 +130,7 @@ creates a simple python file:
It doesn't take much python coding to get from there to a working
package:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/libelf/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/libelf/package.py
:lines: 6-
Spack also provides wrapper functions around common commands like

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -16,10 +16,11 @@ Prerequisites
Spack has the following minimum requirements, which must be installed
before Spack is run:
1. Python 2 (2.6 or 2.7) or 3 (3.4 - 3.7)
2. A C/C++ compiler
3. The ``git`` and ``curl`` commands.
4. If using the ``gpg`` subcommand, ``gnupg2`` is required.
#. Python 2 (2.6 or 2.7) or 3 (3.5 - 3.8) to run Spack
#. A C/C++ compiler for building
#. The ``make`` executable for building
#. The ``git`` and ``curl`` commands for fetching
#. 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
@@ -70,7 +71,7 @@ This automatically adds Spack to your ``PATH`` and allows the ``spack``
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
If :ref:`environment-modules <InstallEnvironmentModules>` is
installed and available, the ``spack`` command can also load and unload
:ref:`modules <modules>`.
@@ -189,7 +190,7 @@ where the compiler is installed. For example:
.. code-block:: console
$ spack compiler find /usr/local/tools/ic-13.0.079
==> Added 1 new compiler to ~/.spack/compilers.yaml
==> Added 1 new compiler to ~/.spack/linux/compilers.yaml
intel@13.0.079
Or you can run ``spack compiler find`` with no arguments to force
@@ -201,7 +202,7 @@ installed, but you know that new compilers have been added to your
$ module load gcc-4.9.0
$ spack compiler find
==> Added 1 new compiler to ~/.spack/compilers.yaml
==> Added 1 new compiler to ~/.spack/linux/compilers.yaml
gcc@4.9.0
This loads the environment module for gcc-4.9.0 to add it to
@@ -246,7 +247,7 @@ Manual compiler configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If auto-detection fails, you can manually configure a compiler by
editing your ``~/.spack/compilers.yaml`` file. You can do this by running
editing your ``~/.spack/<platform>/compilers.yaml`` file. You can do this by running
``spack config edit compilers``, which will open the file in your ``$EDITOR``.
Each compiler configuration in the file looks like this:
@@ -262,7 +263,7 @@ Each compiler configuration in the file looks like this:
cxx: /usr/local/bin/icpc-15.0.024-beta
f77: /usr/local/bin/ifort-15.0.024-beta
fc: /usr/local/bin/ifort-15.0.024-beta
spec: intel@15.0.0:
spec: intel@15.0.0
For compilers that do not support Fortran (like ``clang``), put
``None`` for ``f77`` and ``fc``:
@@ -468,18 +469,21 @@ Fortran.
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 only thing left to do is to edit ``~/.spack/darwin/compilers.yaml`` to provide
the path to ``gfortran``:
.. code-block:: yaml
compilers:
darwin-x86_64:
clang@7.3.0-apple:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: /path/to/bin/gfortran
fc: /path/to/bin/gfortran
- compiler:
...
paths:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: /path/to/bin/gfortran
fc: /path/to/bin/gfortran
spec: clang@11.0.0-apple
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
@@ -590,11 +594,12 @@ flags to the ``icc`` command:
operating_system: centos7
paths:
cc: /opt/intel-15.0.24/bin/icc-15.0.24-beta
cflags: -gcc-name ~/spack/opt/spack/linux-centos7-x86_64/gcc-4.9.3-iy4rw.../bin/gcc
cxx: /opt/intel-15.0.24/bin/icpc-15.0.24-beta
cxxflags: -gxx-name ~/spack/opt/spack/linux-centos7-x86_64/gcc-4.9.3-iy4rw.../bin/g++
f77: /opt/intel-15.0.24/bin/ifort-15.0.24-beta
fc: /opt/intel-15.0.24/bin/ifort-15.0.24-beta
flags:
cflags: -gcc-name ~/spack/opt/spack/linux-centos7-x86_64/gcc-4.9.3-iy4rw.../bin/gcc
cxxflags: -gxx-name ~/spack/opt/spack/linux-centos7-x86_64/gcc-4.9.3-iy4rw.../bin/g++
fflags: -gcc-name ~/spack/opt/spack/linux-centos7-x86_64/gcc-4.9.3-iy4rw.../bin/gcc
spec: intel@15.0.24.4.9.3

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -55,7 +55,7 @@ or refer to the full manual below.
getting_started
basic_usage
workflows
tutorial
Tutorial: Spack 101 <https://spack-tutorial.readthedocs.io>
known_issues
.. toctree::
@@ -65,12 +65,15 @@ or refer to the full manual below.
configuration
config_yaml
build_settings
environments
mirrors
module_file_support
repositories
binary_caches
command_index
package_list
chain
extensions
.. toctree::
:maxdepth: 2
@@ -81,6 +84,11 @@ or refer to the full manual below.
build_systems
developer_guide
docker_for_developers
.. toctree::
:maxdepth: 2
:caption: API Docs
Spack API Docs <spack>
LLNL API Docs <llnl>

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -13,8 +13,8 @@ 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 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
<http://modules.sourceforge.net/>`_ and `LMod
<http://lmod.readthedocs.io/en/latest/>`_ by
providing post-install hooks that generate module files and commands to manipulate them.
.. note::
@@ -67,7 +67,7 @@ to load the ``cmake`` module:
$ 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.
easy to type. Luckily, Spack has its own interface for using modules.
^^^^^^^^^^^^^
Shell support
@@ -108,20 +108,10 @@ that the startup time may be slightly increased because of that.
^^^^^^^^^^^^^^^^^^^^^^^
Once you have shell support enabled you can use the same spec syntax
you're used to:
you're used to and you can use the same shortened names you use
everywhere else in Spack.
========================= ==========================
Modules Dotkit
========================= ==========================
``spack load <spec>`` ``spack use <spec>``
``spack unload <spec>`` ``spack unuse <spec>``
========================= ==========================
And you can use the same shortened names you use everywhere else in
Spack.
For example, if you are using dotkit, this will add the ``mpich``
package built with ``gcc`` to your path:
For example this will add the ``mpich`` package built with ``gcc`` to your path:
.. code-block:: console
@@ -129,17 +119,10 @@ package built with ``gcc`` to your path:
# ... wait for install ...
$ spack use mpich %gcc@4.4.7 # dotkit
Prepending: mpich@3.0.4%gcc@4.4.7 (ok)
$ spack load mpich %gcc@4.4.7 # modules
$ which mpicc
~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/mpich@3.0.4/bin/mpicc
Or, similarly if you are using modules, you could type:
.. code-block:: console
$ spack load mpich %gcc@4.4.7 # modules
These commands will add appropriate directories to your ``PATH``,
``MANPATH``, ``CPATH``, and ``LD_LIBRARY_PATH``. When you no longer
want to use a package, you can type unload or unuse similarly:
@@ -147,13 +130,12 @@ want to use a package, you can type unload or unuse similarly:
.. code-block:: console
$ spack unload mpich %gcc@4.4.7 # modules
$ spack unuse mpich %gcc@4.4.7 # dotkit
.. note::
These ``use``, ``unuse``, ``load``, and ``unload`` subcommands are
The ``load`` and ``unload`` subcommands are
only available if you have enabled Spack's shell support *and* you
have dotkit or modules installed on your machine.
have environment-modules installed on your machine.
^^^^^^^^^^^^^^^^^^^^^^
Ambiguous module names
@@ -215,8 +197,8 @@ Module Commands for Shell Scripts
Although Spack is flexible, the ``module`` command is much faster.
This could become an issue when emitting a series of ``spack load``
commands inside a shell script. By adding the ``--shell`` flag,
``spack module tcl find`` may also be used to generate code that can be
commands inside a shell script. By adding the ``--dependencies`` flag,
``spack module tcl loads`` may also be used to generate code that can be
cut-and-pasted into a shell script. For example:
.. code-block:: console
@@ -292,8 +274,6 @@ that can be generated by Spack:
+-----------------------------+--------------------+-------------------------------+----------------------------------------------+----------------------+
| | **Hook name** | **Default root directory** | **Default template file** | **Compatible tools** |
+=============================+====================+===============================+==============================================+======================+
| **Dotkit** | ``dotkit`` | share/spack/dotkit | share/spack/templates/modules/modulefile.dk | DotKit |
+-----------------------------+--------------------+-------------------------------+----------------------------------------------+----------------------+
| **TCL - Non-Hierarchical** | ``tcl`` | share/spack/modules | share/spack/templates/modules/modulefile.tcl | Env. Modules/LMod |
+-----------------------------+--------------------+-------------------------------+----------------------------------------------+----------------------+
| **Lua - Hierarchical** | ``lmod`` | share/spack/lmod | share/spack/templates/modules/modulefile.lua | LMod |
@@ -323,8 +303,7 @@ content of the module files generated by Spack. The first one:
.. code-block:: python
def setup_environment(self, spack_env, run_env):
"""Set up the compile and runtime environments for a package."""
def setup_run_environment(self, env):
pass
can alter the content of the module file associated with the same package where it is overridden.
@@ -332,16 +311,15 @@ The second method:
.. code-block:: python
def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
"""Set up the environment of packages that depend on this one"""
def setup_dependent_run_environment(self, env, dependent_spec):
pass
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
.. admonition:: The ``r`` package and callback APIs
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
@@ -355,15 +333,15 @@ list of environment modifications.
with the following snippet:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/r/package.py
:pyobject: R.setup_environment
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/r/package.py
:pyobject: R.setup_run_environment
The ``r`` package also knows which environment variable should be modified
to make language extensions provided by other packages available, and modifies
it appropriately in the override of the second method:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/r/package.py
:pyobject: R.setup_dependent_environment
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/r/package.py
:pyobject: R.setup_dependent_run_environment
.. _modules-yaml:
@@ -374,10 +352,10 @@ Write a configuration file
The configuration files that control module generation behavior
are named ``modules.yaml``. The default configuration:
.. literalinclude:: ../../../etc/spack/defaults/modules.yaml
.. literalinclude:: _spack_root/etc/spack/defaults/modules.yaml
:language: yaml
activates the hooks to generate ``tcl`` and ``dotkit`` module files and inspects
activates the hooks to generate ``tcl`` 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.
@@ -399,12 +377,9 @@ to the generator being customized:
modules:
enable:
- tcl
- dotkit
- lmod
tcl:
# contains environment modules specific customizations
dotkit:
# contains dotkit specific customizations
lmod:
# contains lmod specific customizations
@@ -535,17 +510,17 @@ most likely via the ``+blas`` variant specification.
modules:
tcl:
naming_scheme: '${PACKAGE}/${VERSION}-${COMPILERNAME}-${COMPILERVER}'
naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}'
all:
conflict:
- '${PACKAGE}'
- '{name}'
- '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
load two or more versions of the same software at the same time. The tokens
that are available for use in this directive are the same understood by
the ``Spec.format`` method.
the :meth:`~spack.spec.Spec.format` method.
.. note::
@@ -590,15 +565,17 @@ do so by using the environment blacklist:
.. code-block:: yaml
modules:
dotkit:
tcl:
all:
filter:
# Exclude changes to any of these variables
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
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.
The configuration above will generate module files that will not contain
modifications to either ``CPATH`` or ``LIBRARY_PATH``.
.. _autoloading-dependencies:
"""""""""""""""""""""
Autoload dependencies
@@ -618,7 +595,21 @@ activated using ``spack activate``:
The configuration file above will produce module files that will
load their direct dependencies if the package installed depends on ``python``.
The allowed values for the ``autoload`` statement are either ``none``,
``direct`` or ``all``.
``direct`` or ``all``. The default is ``none``.
.. tip::
Building external software
Setting ``autoload`` to ``direct`` for all packages can be useful
when building software outside of a Spack installation that depends on
artifacts in that installation. E.g. (adjust ``lmod`` vs ``tcl``
as appropriate):
.. code-block:: yaml
modules:
lmod:
all:
autoload: 'direct'
.. note::
TCL prerequisites

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -136,6 +136,10 @@ generates a boilerplate template for your package, and opens up the new
homepage = "http://www.example.com"
url = "https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2"
# FIXME: Add a list of GitHub accounts to
# notify when the package is updated.
# maintainers = ['github_user1', 'github_user2']
version('6.1.2', '8ddbb26dc3bd4e2302984debba1406a5')
version('6.1.1', '4c175f86e11eb32d8bf9872ca3a8e11d')
version('6.1.0', '86ee6e54ebfc4a90b643a65e402c4048')
@@ -184,6 +188,17 @@ The rest of the tasks you need to do are as follows:
The ``homepage`` is displayed when users run ``spack info`` so
that they can learn more about your package.
#. Add a comma-separated list of maintainers.
The ``maintainers`` field is a list of GitHub accounts of people
who want to be notified any time the package is modified. When a
pull request is submitted that updates the package, these people
will be requested to review the PR. This is useful for developers
who maintain a Spack package for their own software, as well as
users who rely on a piece of software and want to ensure that the
package doesn't break. It also gives users a list of people to
contact for help when someone reports a build error with the package.
#. Add ``depends_on()`` calls for the package's dependencies.
``depends_on`` tells Spack that other packages need to be built
@@ -410,6 +425,8 @@ For tarball downloads, Spack can currently support checksums using the
MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512 algorithms. It
determines the algorithm to use based on the hash length.
.. _versions-and-fetching:
---------------------
Versions and fetching
---------------------
@@ -460,7 +477,7 @@ https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2
In order to handle this, you can define a ``url_for_version()`` function
like so:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/openmpi/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/openmpi/package.py
:pyobject: Openmpi.url_for_version
With the use of this ``url_for_version()``, Spack knows to download OpenMPI ``2.1.1``
@@ -541,9 +558,10 @@ Skipping the expand step
^^^^^^^^^^^^^^^^^^^^^^^^
Spack normally expands archives (e.g. ``*.tar.gz`` and ``*.zip``) automatically
after downloading them. If you want to skip this step (e.g., for
self-extracting executables and other custom archive types), you can add
``expand=False`` to a ``version`` directive.
into a standard stage source directory (``self.stage.source_path``) after
downloading them. If you want to skip this step (e.g., for self-extracting
executables and other custom archive types), you can add ``expand=False`` to a
``version`` directive.
.. code-block:: python
@@ -573,7 +591,11 @@ Download caching
Spack maintains a cache (described :ref:`here <caching>`) which saves files
retrieved during package installations to avoid re-downloading in the case that
a package is installed with a different specification (but the same version) or
reinstalled on account of a change in the hashing scheme.
reinstalled on account of a change in the hashing scheme. It may (rarely) be
necessary to avoid caching for a particular version by adding ``no_cache=True``
as an option to the ``version()`` directive. Example situations would be a
"snapshot"-like Version Control System (VCS) tag, a VCS branch such as
``v6-16-00-patches``, or a URL specifying a regularly updated snapshot tarball.
^^^^^^^^^^^^^^^^^^
Version comparison
@@ -590,13 +612,15 @@ with `RPM <https://bugzilla.redhat.com/show_bug.cgi?id=50977>`_.
Spack versions may also be arbitrary non-numeric strings; any string
here will suffice; for example, ``@develop``, ``@master``, ``@local``.
The following rules determine the sort order of numeric
vs. non-numeric versions:
Versions are compared as follows. First, a version string is split into
multiple fields based on delimiters such as ``.``, ``-`` etc. Then
matching fields are compared using the rules below:
#. The non-numeric version ``@develop`` is considered greatest (newest).
#. The following develop-like strings are greater (newer) than all
numbers and are ordered as ``develop > master > head > trunk``.
#. Numeric versions are all less than ``@develop`` version, and are
sorted numerically.
#. Numbers are all less than the chosen develop-like strings above,
and are sorted numerically.
#. All other non-numeric versions are less than numeric versions, and
are sorted alphabetically.
@@ -610,7 +634,7 @@ The logic behind this sort order is two-fold:
#. The most-recent development version of a package will usually be
newer than any released numeric versions. This allows the
``develop`` version to satisfy dependencies like ``depends_on(abc,
``@develop`` version to satisfy dependencies like ``depends_on(abc,
when="@x.y.z:")``
^^^^^^^^^^^^^^^^^
@@ -812,7 +836,8 @@ For some packages, source code is provided in a Version Control System
(VCS) repository rather than in a tarball. Spack can fetch packages
from VCS repositories. Currently, Spack supports fetching with `Git
<git-fetch_>`_, `Mercurial (hg) <hg-fetch_>`_, `Subversion (svn)
<svn-fetch_>`_, and `Go <go-fetch_>`_.
<svn-fetch_>`_, and `Go <go-fetch_>`_. In all cases, the destination
is the standard stage source path.
To fetch a package from a source repository, Spack needs to know which
VCS to use and where to download from. Much like with ``url``, package
@@ -876,9 +901,16 @@ Git fetching supports the following parameters to ``version``:
* ``tag``: Name of a tag to fetch.
* ``commit``: SHA hash (or prefix) of a commit to fetch.
* ``submodules``: Also fetch submodules recursively when checking out this repository.
* ``get_full_repo``: Ensure the full git history is checked out with all remote
branch information. Normally (``get_full_repo=False``, the default), the git
option ``--depth 1`` will be used if the version of git and the specified
transport protocol support it, and ``--single-branch`` will be used if the
version of git supports it.
Only one of ``tag``, ``branch``, or ``commit`` can be used at a time.
The destination directory for the clone is the standard stage source path.
Default branch
To fetch a repository's default branch:
@@ -979,6 +1011,7 @@ Mercurial
Fetching with Mercurial works much like `Git <git-fetch>`_, but you
use the ``hg`` parameter.
The destination directory is still the standard stage source path.
Default branch
Add the ``hg`` attribute with no ``revision`` passed to ``version``:
@@ -1017,6 +1050,7 @@ Subversion
^^^^^^^^^^
To fetch with subversion, use the ``svn`` and ``revision`` parameters.
The destination directory will be the standard stage source path.
Fetching the head
Simply add an ``svn`` parameter to the package:
@@ -1061,7 +1095,9 @@ Go
Go isn't a VCS, it is a programming language with a builtin command,
`go get <https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies>`_,
that fetches packages and their dependencies automatically.
It can clone a Git repository, or download from another source location.
The destination directory will be the standard stage source path.
This strategy can clone a Git repository, or download from another source location.
For example:
.. code-block:: python
@@ -1077,6 +1113,174 @@ Go cannot be used to fetch a particular commit or branch, it always
downloads the head of the repository. This download method is untrusted,
and is not recommended. Use another fetch strategy whenever possible.
--------
Variants
--------
Many software packages can be configured to enable optional
features, which often come at the expense of additional dependencies or
longer build-times. To be flexible enough and support a wide variety of
use cases, Spack permits to expose to the end-user the ability to choose
which features should be activated in a package at the time it is installed.
The mechanism to be employed is the :py:func:`spack.directives.variant` directive.
^^^^^^^^^^^^^^^^
Boolean variants
^^^^^^^^^^^^^^^^
In their simplest form variants are boolean options specified at the package
level:
.. code-block:: python
class Hdf5(AutotoolsPackage):
...
variant(
'shared', default=True, description='Builds a shared version of the library'
)
with a default value and a description of their meaning / use in the package.
*Variants can be tested in any context where a spec constraint is expected.*
In the example above the ``shared`` variant is tied to the build of shared dynamic
libraries. To pass the right option at configure time we can branch depending on
its value:
.. code-block:: python
def configure_args(self):
...
if '+shared' in self.spec:
extra_args.append('--enable-shared')
else:
extra_args.append('--disable-shared')
extra_args.append('--enable-static-exec')
As explained in :ref:`basic-variants` the constraint ``+shared`` means
that the boolean variant is set to ``True``, while ``~shared`` means it is set
to ``False``.
Another common example is the optional activation of an extra dependency
which requires to use the variant in the ``when`` argument of
:py:func:`spack.directives.depends_on`:
.. code-block:: python
class Hdf5(AutotoolsPackage):
...
variant('szip', default=False, description='Enable szip support')
depends_on('szip', when='+szip')
as shown in the snippet above where ``szip`` is modeled to be an optional
dependency of ``hdf5``.
^^^^^^^^^^^^^^^^^^^^^
Multi-valued variants
^^^^^^^^^^^^^^^^^^^^^
If need be, Spack can go beyond Boolean variants and permit an arbitrary
number of allowed values. This might be useful when modeling
options that are tightly related to each other.
The values in this case are passed to the :py:func:`spack.directives.variant`
directive as a tuple:
.. code-block:: python
class Blis(Package):
...
variant(
'threads', default='none', description='Multithreading support',
values=('pthreads', 'openmp', 'none'), multi=False
)
In the example above the argument ``multi`` is set to ``False`` to indicate
that only one among all the variant values can be active at any time. This
constraint is enforced by the parser and an error is emitted if a user
specifies two or more values at the same time:
.. code-block:: console
$ spack spec blis threads=openmp,pthreads
Input spec
--------------------------------
blis threads=openmp,pthreads
Concretized
--------------------------------
==> Error: multiple values are not allowed for variant "threads"
Another useful note is that *Python's* ``None`` *is not allowed as a default value*
and therefore it should not be used to denote that no feature was selected.
Users should instead select another value, like ``'none'``, and handle it explicitly
within the package recipe if need be:
.. code-block:: python
if self.spec.variants['threads'].value == 'none':
options.append('--no-threads')
In cases where multiple values can be selected at the same time ``multi`` should
be set to ``True``:
.. code-block:: python
class Gcc(AutotoolsPackage):
...
variant(
'languages', default='c,c++,fortran',
values=('ada', 'brig', 'c', 'c++', 'fortran',
'go', 'java', 'jit', 'lto', 'objc', 'obj-c++'),
multi=True,
description='Compilers and runtime libraries to build'
)
Within a package recipe a multi-valued variant is tested using a ``key=value`` syntax:
.. code-block:: python
if 'languages=jit' in spec:
options.append('--enable-host-shared')
"""""""""""""""""""""""""""""""""""""""""""
Complex validation logic for variant values
"""""""""""""""""""""""""""""""""""""""""""
To cover complex use cases, the :py:func:`spack.directives.variant` directive
could accept as the ``values`` argument a full-fledged object which has
``default`` and other arguments of the directive embedded as attributes.
An example, already implemented in Spack's core, is :py:class:`spack.variant.DisjointSetsOfValues`.
This class is used to implement a few convenience functions, like
:py:func:`spack.variant.any_combination_of`:
.. code-block:: python
class Adios(AutotoolsPackage):
...
variant(
'staging',
values=any_combination_of('flexpath', 'dataspaces'),
description='Enable dataspaces and/or flexpath staging transports'
)
that allows any combination of the specified values, and also allows the
user to specify ``'none'`` (as a string) to choose none of them.
The objects returned by these functions can be modified at will by chaining
method calls to change the default value, customize the error message or
other similar operations:
.. code-block:: python
class Mvapich2(AutotoolsPackage):
...
variant(
'process_managers',
description='List of the process managers to activate',
values=disjoint_sets(
('auto',), ('slurm',), ('hydra', 'gforker', 'remshell')
).prohibit_empty_set().with_error(
"'slurm' or 'auto' cannot be activated along with "
"other process managers"
).with_default('auto').with_non_feature_values('auto'),
)
------------------------------------
Resources (expanding extra tarballs)
------------------------------------
@@ -1395,7 +1599,7 @@ handles ``RPATH``:
.. _pyside-patch:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/py-pyside/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/py-pyside/package.py
:pyobject: PyPyside.patch
:linenos:
@@ -1422,6 +1626,73 @@ with all packages in Spack, a patched dependency library can coexist with
other versions of that library. See the `section on depends_on
<dependency_dependency_patching_>`_ for more details.
.. _patch_inspecting_patches:
^^^^^^^^^^^^^^^^^^^
Inspecting patches
^^^^^^^^^^^^^^^^^^^
If you want to better understand the patches that Spack applies to your
packages, you can do that using ``spack spec``, ``spack find``, and other
query commands. Let's look at ``m4``. If you run ``spack spec m4``, you
can see the patches that would be applied to ``m4``::
$ spack spec m4
Input spec
--------------------------------
m4
Concretized
--------------------------------
m4@1.4.18%clang@9.0.0-apple patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=darwin-highsierra-x86_64
^libsigsegv@2.11%clang@9.0.0-apple arch=darwin-highsierra-x86_64
You can also see patches that have been applied to installed packages
with ``spack find -v``::
$ spack find -v m4
==> 1 installed package
-- darwin-highsierra-x86_64 / clang@9.0.0-apple -----------------
m4@1.4.18 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv
.. _cmd-spack-resource:
In both cases above, you can see that the patches' sha256 hashes are
stored on the spec as a variant. As mentioned above, this means that you
can have multiple, differently-patched versions of a package installed at
once.
You can look up a patch by its sha256 hash (or a short version of it)
using the ``spack resource show`` command::
$ spack resource show 3877ab54
3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00
path: /home/spackuser/src/spack/var/spack/repos/builtin/packages/m4/gnulib-pgi.patch
applies to: builtin.m4
``spack resource show`` looks up downloadable resources from package
files by hash and prints out information about them. Above, we see that
the ``3877ab54`` patch applies to the ``m4`` package. The output also
tells us where to find the patch.
Things get more interesting if you want to know about dependency
patches. For example, when ``dealii`` is built with ``boost@1.68.0``, it
has to patch boost to work correctly. If you didn't know this, you might
wonder where the extra boost patches are coming from::
$ spack spec dealii ^boost@1.68.0 ^hdf5+fortran | grep '\^boost'
^boost@1.68.0
^boost@1.68.0%clang@9.0.0-apple+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199,b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f ~pic+program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=darwin-highsierra-x86_64
$ spack resource show b37164268
b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f
path: /home/spackuser/src/spack/var/spack/repos/builtin/packages/dealii/boost_1.68.0.patch
applies to: builtin.boost
patched by: builtin.dealii
Here you can see that the patch is applied to ``boost`` by ``dealii``,
and that it lives in ``dealii``'s directory in Spack's ``builtin``
package repository.
.. _handling_rpaths:
---------------
@@ -1476,12 +1747,11 @@ RPATHs in Spack are handled in one of three ways:
Parallel builds
---------------
By default, Spack will invoke ``make()`` with a ``-j <njobs>``
argument, so that builds run in parallel. It figures out how many
jobs to run by determining how many cores are on the host machine.
Specifically, it uses the number of CPUs reported by Python's
`multiprocessing.cpu_count()
<http://docs.python.org/library/multiprocessing.html#multiprocessing.cpu_count>`_.
By default, Spack will invoke ``make()``, or any other similar tool,
with a ``-j <njobs>`` argument, so that builds run in parallel.
The parallelism is determined by the value of the ``build_jobs`` entry
in ``config.yaml`` (see :ref:`here <build-jobs>` for more details on
how this value is computed).
If a package does not build properly in parallel, you can override
this setting by adding ``parallel = False`` to your package. For
@@ -1777,55 +2047,58 @@ appear in the package file (or in this case, in the list).
.. _setup-dependent-environment:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
``setup_dependent_environment()``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Influence how dependents are built or run
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Spack provides a mechanism for dependencies to provide variables that
can be used in their dependents' build. Any package can declare a
``setup_dependent_environment()`` function, and this function will be
called before the ``install()`` method of any dependent packages.
This allows dependencies to set up environment variables and other
properties to be used by dependents.
Spack provides a mechanism for dependencies to influence the
environment of their dependents by overriding the
:meth:`setup_dependent_run_environment <spack.package.PackageBase.setup_dependent_run_environment>`
or the
:meth:`setup_dependent_build_environment <spack.package.PackageBase.setup_dependent_build_environment>`
methods.
The Qt package, for instance, uses this call:
The function declaration should look like this:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/qt/package.py
:pyobject: Qt.setup_dependent_environment
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/qt/package.py
:pyobject: Qt.setup_dependent_build_environment
:linenos:
Here, the Qt package sets the ``QTDIR`` environment variable so that
packages that depend on a particular Qt installation will find it.
to set the ``QTDIR`` environment variable so that packages
that depend on a particular Qt installation will find it.
Another good example of how a dependency can influence
the build environment of dependents is the Python package:
The arguments to this function are:
* **spack_env**: List of environment modifications to be applied when
the dependent package is built within Spack.
* **run_env**: List of environment modifications to be applied when
the dependent package is run outside of Spack. These are added to the
resulting module file.
* **dependent_spec**: The spec of the dependent package about to be
built. This allows the extendee (self) to query the dependent's state.
Note that *this* package's spec is available as ``self.spec``.
A good example of using these is in the Python package:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/python/package.py
:pyobject: Python.setup_dependent_environment
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/python/package.py
:pyobject: Python.setup_dependent_build_environment
:linenos:
The first thing that happens here is that the ``python`` command is
inserted into module scope of the dependent. This allows most python
packages to have a very simple install method, like this:
In the method above it is ensured that any package that depends on Python
will have the ``PYTHONPATH``, ``PYTHONHOME`` and ``PATH`` environment
variables set appropriately before starting the installation. To make things
even simpler the ``python setup.py`` command is also inserted into the module
scope of dependents by overriding a third method called
:meth:`setup_dependent_package <spack.package.PackageBase.setup_dependent_package>`
:
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/python/package.py
:pyobject: Python.setup_dependent_package
:linenos:
This allows most python packages to have a very simple install procedure,
like the following:
.. code-block:: python
def install(self, spec, prefix):
python('setup.py', 'install', '--prefix={0}'.format(prefix))
setup_py('install', '--prefix={0}'.format(prefix))
Finally the Python package takes also care of the modifications to ``PYTHONPATH``
to allow dependencies to run correctly:
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/python/package.py
:pyobject: Python.setup_dependent_run_environment
:linenos:
Python's ``setup_dependent_environment`` method also sets up some
other variables, creates a directory, and sets up the ``PYTHONPATH``
so that dependent packages can find their dependencies at build time.
.. _packaging_conflicts:
@@ -1972,7 +2245,7 @@ same way that Python does.
Let's look at Python's activate function:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/python/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/python/package.py
:pyobject: Python.activate
:linenos:
@@ -1984,7 +2257,7 @@ Python's setuptools.
Deactivate behaves similarly to activate, but it unlinks files:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/python/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/python/package.py
:pyobject: Python.deactivate
:linenos:
@@ -2426,7 +2699,7 @@ docs at :py:mod:`~.spack.build_systems`, or using the ``spack info`` command:
Typically, phases have default implementations that fit most of the common cases:
.. literalinclude:: ../../../lib/spack/spack/build_systems/autotools.py
.. literalinclude:: _spack_root/lib/spack/spack/build_systems/autotools.py
:pyobject: AutotoolsPackage.configure
:linenos:
@@ -2434,7 +2707,7 @@ It is thus just sufficient for a packager to override a few
build system specific helper methods or attributes to provide, for instance,
configure arguments:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/m4/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/m4/package.py
:pyobject: M4.configure_args
:linenos:
@@ -2609,7 +2882,7 @@ Shell command functions
Recall the install method from ``libelf``:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/libelf/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/libelf/package.py
:pyobject: Libelf.install
:linenos:
@@ -2692,8 +2965,7 @@ as arguments.
Here are the definitions of the three built-in flag handlers:
def build_system_flags(self, name, flags):
return (None, None, flags)
.. code-block:: python
def inject_flags(pkg, name, flags):
return (flags, None, None)
@@ -2961,6 +3233,137 @@ the two functions is that ``satisfies()`` tests whether spec
constraints overlap at all, while ``in`` tests whether a spec or any
of its dependencies satisfy the provided spec.
^^^^^^^^^^^^^^^^^^^^^^^
Architecture specifiers
^^^^^^^^^^^^^^^^^^^^^^^
As mentioned in :ref:`support-for-microarchitectures` each node in a concretized spec
object has an architecture attribute which is a triplet of ``platform``, ``os`` and ``target``.
Each of these three items can be queried to take decisions when configuring, building or
installing a package.
""""""""""""""""""""""""""""""""""""""""""""""
Querying the platform and the operating system
""""""""""""""""""""""""""""""""""""""""""""""
Sometimes the actions to be taken to install a package might differ depending on the
platform we are installing for. If that is the case we can use conditionals:
.. code-block:: python
if spec.platform == 'darwin':
# Actions that are specific to Darwin
args.append('--darwin-specific-flag')
and branch based on the current spec platform. If we need to make a package directive
conditional on the platform we can instead employ the usual spec syntax and pass the
corresponding constraint to the appropriate argument of that directive:
.. code-block:: python
class Libnl(AutotoolsPackage):
conflicts('platform=darwin', msg='libnl requires FreeBSD or Linux')
Similar considerations are also valid for the ``os`` part of a spec's architecture.
For instance:
.. code-block:: python
class Glib(AutotoolsPackage)
patch('old-kernels.patch', when='os=centos6')
will apply the patch only when the operating system is Centos 6.
.. note::
Even though experienced Python programmers might recognize that there are other ways
to retrieve information on the platform:
.. code-block:: python
if sys.platform == 'darwin':
# Actions that are specific to Darwin
args.append('--darwin-specific-flag')
querying the spec architecture's platform should be considered the preferred. The key difference
is that a query on ``sys.platform``, or anything similar, is always bound to the host on which the
interpreter running Spack is located and as such it won't work correctly in environments where
cross-compilation is required.
"""""""""""""""""""""""""""""""""""""
Querying the target microarchitecture
"""""""""""""""""""""""""""""""""""""
The third item of the architecture tuple is the ``target`` which abstracts the information on the
CPU microarchitecture. A list of all the targets known to Spack can be obtained via the
command line:
.. command-output:: spack arch --known-targets
Within directives each of the names above can be used to match a particular target:
.. code-block:: python
class Julia(Package):
# This patch is only applied on icelake microarchitectures
patch("icelake.patch", when="target=icelake")
It's also possible to select all the architectures belonging to the same family
using an open range:
.. code-block:: python
class Julia(Package):
# This patch is applied on all x86_64 microarchitectures.
# The trailing colon that denotes an open range of targets
patch("generic_x86_64.patch", when="target=x86_64:")
in a way that resembles what was shown in :ref:`versions-and-fetching` for versions.
Where ``target`` objects really shine though is when they are used in methods
called at configure, build or install time. In that case we can test targets
for supported features, for instance:
.. code-block:: python
if 'avx512' in spec.target:
args.append('--with-avx512')
The snippet above will append the ``--with-avx512`` item to a list of arguments only if the corresponding
feature is supported by the current target. Sometimes we need to take different actions based
on the architecture family and not on the specific microarchitecture. In those cases
we can check the ``family`` attribute:
.. code-block:: python
if spec.target.family == 'ppc64le':
args.append('--enable-power')
Possible values for the ``family`` attribute are displayed by ``spack arch --known-targets``
under the "Generic architectures (families)" header.
Finally it's possible to perform actions based on whether the current microarchitecture
is compatible with a known one:
.. code-block:: python
if spec.target > 'haswell':
args.append('--needs-at-least-haswell')
The snippet above will add an item to a list of configure options only if the current
architecture is a superset of ``haswell`` or, said otherwise, only if the current
architecture is a later microarchitecture still compatible with ``haswell``.
.. admonition:: Using Spack on unknown microarchitectures
If Spack is used on an unknown microarchitecture it will try to perform a best match
of the features it detects and will select the closest microarchitecture it has
information for. In case nothing matches, it will create on the fly a new generic
architecture. This is done to allow users to still be able to use Spack
for their work. The software built won't be probably as optimized as it could but just
as you need a newer compiler to build for newer architectures, you may need newer
versions of Spack for new architectures to be correctly labeled.
^^^^^^^^^^^^^^^^^^^^^^
Accessing Dependencies
^^^^^^^^^^^^^^^^^^^^^^
@@ -3269,7 +3672,7 @@ the one passed to install, only the MPI implementations all set some
additional properties on it to help you out. E.g., in mvapich2, you'll
find this:
.. literalinclude:: ../../../var/spack/repos/builtin/packages/mvapich2/package.py
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/mvapich2/package.py
:pyobject: Mvapich2.setup_dependent_package
That code allows the mvapich2 package to associate an ``mpicc`` property
@@ -3604,7 +4007,6 @@ variant names are:
Name Default Description
======= ======== ========================
shared True Build shared libraries
static True Build static libraries
mpi True Use MPI
python False Build Python extension
======= ======== ========================
@@ -3612,6 +4014,12 @@ variant names are:
If specified in this table, the corresponding default should be used
when declaring a variant.
The semantics of the `shared` variant are important. When a package is
built `~shared`, the package guarantees that no shared libraries are
built. When a package is built `+shared`, the package guarantees that
shared libraries are built, but it makes no guarantee about whether
static libraries are built.
^^^^^^^^^^^^^
Version Lists
^^^^^^^^^^^^^
@@ -3658,7 +4066,8 @@ The first step of ``spack install``. Takes a spec and determines the
correct download URL to use for the requested package version, then
downloads the archive, checks it against an MD5 checksum, and stores
it in a staging directory if the check was successful. The staging
directory will be located under ``$SPACK_HOME/var/spack``.
directory will be located under the first writable directory in the
``build_stage`` configuration setting.
When run after the archive has already been downloaded, ``spack
fetch`` is idempotent and will not download the archive again.
@@ -3781,32 +4190,36 @@ Spack provides the ``spack graph`` command for graphing dependencies.
The command by default generates an ASCII rendering of a spec's
dependency graph. For example:
.. command-output:: spack graph mpileaks
.. command-output:: spack graph hdf5
At the top is the root package in the DAG, with dependency edges emerging
from it. On a color terminal, the edges are colored by which dependency
they lead to.
.. command-output:: spack graph --deptype=all mpileaks
.. command-output:: spack graph --deptype=link hdf5
The ``deptype`` argument tells Spack what types of dependencies to graph.
By default it includes link and run dependencies but not build
dependencies. Supplying ``--deptype=all`` will show the build
dependencies as well. This is equivalent to
``--deptype=build,link,run``. Options for ``deptype`` include:
dependencies. Supplying ``--deptype=link`` will show only link
dependencies. The default is ``--deptype=all``, which is equivalent to
``--deptype=build,link,run,test``. Options for ``deptype`` include:
* Any combination of ``build``, ``link``, and ``run`` separated by
commas.
* ``all`` or ``alldeps`` for all types of dependencies.
* Any combination of ``build``, ``link``, ``run``, and ``test`` separated
by commas.
* ``all`` for all types of dependencies.
You can also use ``spack graph`` to generate graphs in the widely used
`Dot <http://www.graphviz.org/doc/info/lang.html>`_ format. For
example:
`Dot <http://www.graphviz.org/doc/info/lang.html>`_ format. For example:
.. command-output:: spack graph --dot mpileaks
.. command-output:: spack graph --dot hdf5
This graph can be provided as input to other graphing tools, such as
those in `Graphviz <http://www.graphviz.org>`_.
those in `Graphviz <http://www.graphviz.org>`_. If you have graphviz
installed, you can write straight to PDF like this:
.. code-block:: console
$ spack graph --dot hdf5 | dot -Tpdf > hdf5.pdf
.. _packaging-shell-support:
@@ -4033,3 +4446,8 @@ Autotools-based packages would be easy (and should be done by a
developer who actively uses Autotools). Packages that use
non-standard build systems can gain ``setup`` functionality by
subclassing ``StagedPackage`` directly.
.. Emacs local variables
Local Variables:
fill-column: 79
End:

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)

View File

@@ -1,6 +1,7 @@
# These dependencies should be installed using pip in order
# to build the documentation.
sphinx==1.7.0
sphinxcontrib-programoutput
sphinx-rtd-theme
sphinx==2.0.1
sphinxcontrib-programoutput==0.14
sphinx-rtd-theme==0.4.3
python-levenshtein

19
lib/spack/docs/spack.yaml Normal file
View File

@@ -0,0 +1,19 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
#
# These are requirements for building the documentation. You can run
# these commands in this directory to install Sphinx and its plugins,
# then build the docs:
#
# spack install
# spack env activate .
# make
#
spack:
specs:
- py-sphinx
- py-sphinxcontrib-programoutput
- py-sphinx-rtd-theme

View File

@@ -1,60 +0,0 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _spack-101:
=============================
Tutorial: Spack 101
=============================
This is a full-day introduction to Spack with lectures and live demos. It
was presented as a tutorial at `Supercomputing 2018
<http://sc18.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.
.. _sc16-slides:
.. rubric:: Slides
.. figure:: tutorial/sc16-tutorial-slide-preview.png
:target: http://spack.io/slides/Spack-SC18-Tutorial.pdf
:height: 72px
:align: left
:alt: Slide Preview
`Download Slides <http://spack.io/slides/Spack-SC18-Tutorial.pdf>`_.
**Full citation:** Todd Gamblin, Gregory Becker, Massimiliano Culpo, Matt
Legendre, Mario Melara, Peter Scheibel, and Adam Stewart.
`Managing HPC Software Complexity with Spack
<https://sc18.supercomputing.org/presentation/?id=tut165&sess=sess252>`_.
Tutorial presented at Supercomputing 2018. November 12, 2018, Dallas, TX, USA.
.. _sc16-live-demos:
.. rubric:: Live Demos
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:`configs-tutorial`
3. :ref:`packaging-tutorial`
4. :ref:`environments-tutorial`
5. :ref:`modules-tutorial`
6. :ref:`build-systems-tutorial`
7. :ref:`advanced-packaging-tutorial`
Full contents:
.. toctree::
tutorial_basics
tutorial_configuration
tutorial_packaging
tutorial_environments
tutorial_modules
tutorial_buildsystems
tutorial_advanced_packaging

View File

@@ -1,39 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
#
# 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 mpileaks
#
# You can edit this file again by typing:
#
# spack edit mpileaks
#
# 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 Mpileaks(Package):
"""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/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz"
version('1.0', '8838c574b39202a57d7c2d68692718aa')
# FIXME: Add dependencies if required.
# depends_on('foo')
def install(self, spec, prefix):
# FIXME: Unknown build system
make()
make('install')

View File

@@ -1,23 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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" # NOQA
version('1.0', '8838c574b39202a57d7c2d68692718aa')
# FIXME: Add dependencies if required.
# depends_on('foo')
def install(self, spec, prefix):
# FIXME: Unknown build system
make()
make('install')

View File

@@ -1,25 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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')
depends_on('mpi')
depends_on('adept-utils')
depends_on('callpath')
def install(self, spec, prefix):
# FIXME: Unknown build system
make()
make('install')

View File

@@ -1,25 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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')
depends_on('mpi')
depends_on('adept-utils')
depends_on('callpath')
def install(self, spec, prefix):
configure()
make()
make('install')

View File

@@ -1,27 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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')
depends_on('mpi')
depends_on('adept-utils')
depends_on('callpath')
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

@@ -1,34 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,27 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,32 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,41 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
#
# 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

@@ -1,23 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,33 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,26 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,27 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,25 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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

@@ -1,36 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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'])
@property
def build_targets(self):
if "+tbb" in spec:
return []
else:
return ["NO_TBB=1"]
@property
def install_targets(self):
return ['prefix={0}'.format(self.prefix), 'install']

View File

@@ -1,41 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
#
# 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

@@ -1,32 +0,0 @@
# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
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'))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -1,505 +0,0 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _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
----------------------
.. note::
If you are not using the tutorial docker image, it is recommended that you
do this section of the tutorial in a fresh clone of Spack
The tutorial uses custom package definitions with missing sections that
will be filled in during the tutorial. These package definitions are stored
in a separate package repository, which can be enabled with:
.. code-block:: console
$ spack repo add --scope=site var/spack/repos/tutorial
This section of the tutorial may also require a newer version of gcc, which
you can add with:
.. code-block:: console
$ spack install gcc@7.2.0
$ spack compiler add --scope=site path/to/spack-installed-gcc/bin
If you are using the tutorial docker image, all dependency packages
will have been installed. Otherwise, to install these packages you can use
the following commands:
.. code-block:: console
$ spack install openblas
$ spack install netlib-lapack
$ spack install mpich
Now, you are ready to set your preferred ``EDITOR`` and continue with
the rest of the tutorial.
.. note::
Several of these packages depend on an MPI implementation. You can use
OpenMPI if you install it from scratch, but this is slow (>10 min.).
A binary cache of MPICH may be provided, in which case you can force
the package to use it and install quickly. All tutorial examples with
packages that depend on MPICH include the spec syntax for building with it
.. _adv_pkg_tutorial_start:
---------------------------------------
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 (e.g., ``MPICC``).
This section covers how to 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.util.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 that 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`` with
``mpich``:
.. 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 ^mpich``
------------------------------
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 (``armadillo ^openblas ^mpich``):
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install armadillo ^openblas ^mpich
==> 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`` (``armadillo ^netlib-lapack ^mpich``)
we'll notice that this time the installation won't complete:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install armadillo ^netlib-lapack ^mpich
==> 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, recursive=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 ^mpich``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install armadillo ^netlib-lapack ^mpich
...
==> 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`.
----------------------
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 you 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 ^mpich``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install netcdf ^mpich
==> 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 ^mpich``:
.. code-block:: console
root@advanced-packaging-tutorial:/# spack install netcdf ^mpich
==> 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

@@ -1,807 +0,0 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _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: 33,36,54
:lines: 30-76,240-248
: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: 9
: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: 25,26,27,28,29,30,31,32
: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: 14,43-61,70-88
:emphasize-lines: 21,27,34
: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: 10,11,13,14,18,20
: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: 23,24,25
: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: 28,29,30,31,32,35,36
: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 esmf
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:`esmf` example we
set two environment variables in our :code:`edit()` method:
.. code-block:: python
def edit(self, spec, prefix):
for var in os.environ:
if var.startswith('ESMF_'):
os.environ.pop(var)
# More code ...
if self.compiler.name == 'gcc':
os.environ['ESMF_COMPILER'] = 'gfortran'
elif self.compiler.name == 'intel':
os.environ['ESMF_COMPILER'] = 'intel'
elif self.compiler.name == 'clang':
os.environ['ESMF_COMPILER'] = 'gfortranclang'
elif self.compiler.name == 'nag':
os.environ['ESMF_COMPILER'] = 'nag'
elif self.compiler.name == 'pgi':
os.environ['ESMF_COMPILER'] = 'pgi'
else:
msg = "The compiler you are building with, "
msg += "'{0}', is not supported by ESMF."
raise InstallError(msg.format(self.compiler.name))
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 in the :code:`_std_args()` method:
.. code-block:: console
$ spack edit --build-system cmake
.. literalinclude:: ../../../lib/spack/spack/build_systems/cmake.py
:language: python
:lines: 102-147
:emphasize-lines: 10,18,24,36,37,38,44
: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
If no generator is specified Spack will default to :code:`Unix Makefiles`.
Next we setup the build type. In :code:`CMake` you can specify the build type
that you want. Options include:
1. :code:`empty`
2. :code:`Debug`
3. :code:`Release`
4. :code:`RelWithDebInfo`
5. :code:`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 (:code:`RelWithDebInfo` 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
We can see now how :code:`CMake` takes care of a lot of the boilerplate code
that would have to be otherwise typed in.
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: 9,13,14,18,19,20,21,22,23
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: 26,30,31
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 spades
.. 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
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.
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: 19,146-357
:linenos:
Each of these methods have sensible defaults or they can be overridden.
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:`QMakePackage`
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

@@ -1,935 +0,0 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _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 they 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
six configuration *scopes* to handle this customization. These scopes,
in order of decreasing priority, are:
============ ===================================================
Scope Directory
============ ===================================================
Command-line N/A
Custom Custom directory, specified with ``--config-scope``
User ``~/.spack/``
Site ``$SPACK_ROOT/etc/spack/``
System ``/etc/spack/``
Defaults ``$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.
Configuration settings can also be placed in a custom location,
which is then specified on the command line via ``--config-scope``.
An example use case is managing two sets of configurations, one for
development and another for production preferences.
Settings specified on the command line have precedence over all
other configuration scopes.
^^^^^^^^^^^^^^^^^^^^^^^^
Platform-specific Scopes
^^^^^^^^^^^^^^^^^^^^^^^^
Some facilities manage multiple platforms from a single shared
file system. 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``.
-----------
YAML Format
-----------
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 discussed in the basic
installation tutorial, 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-3.7
cxx: /usr/bin/clang++-3.7
f77: null
fc: null
spec: clang@3.7.1-2ubuntu2
target: x86_64
- 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-4.7
cxx: /usr/bin/g++-4.7
f77: /usr/bin/gfortran-4.7
fc: /usr/bin/gfortran-4.7
spec: gcc@4.7
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 two versions of the GCC compiler and two versions 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, arm).
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 --no-cache zlib %clang@3.8.0-gfortran
...
This new compiler also works on Fortran codes:
.. code-block:: console
$ spack install --no-cache cfitsio %clang@3.8.0-gfortran -bzip2
...
^^^^^^^^^^^^^^
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 yet talked about.
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 often 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_rpaths`` 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. As an example,
this field can be set by
.. code-block:: yaml
- compiler:
...
extra_rpaths:
- /apps/intel/ComposerXE2017/compilers_and_libraries_2017.5.239/linux/compiler/lib/intel64_lin
...
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`` as follows:
.. code-block:: yaml
- compiler:
environment:
set:
INTEL_LICENSE_FILE: 1713@license4
...
In addition to ``set``, ``environment`` also supports ``unset``,
``prepend-path``, and ``append-path``.
.. _configs-tutorial-package-prefs:
-------------------------------
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
Concretized
--------------------------------
hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
^automake@1.16.1%gcc@5.4.0 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
Concretized
--------------------------------
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^mpich@3.2.1%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
^findutils@4.6.0%clang@3.8.0-2ubuntu4 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^automake@1.16.1%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
^texinfo@6.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+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
Concretized
--------------------------------
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic~shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^mpich@3.2.1%clang@3.8.0-2ubuntu4 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
^findutils@4.6.0%clang@3.8.0-2ubuntu4 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^m4@1.4.18%clang@3.8.0-2ubuntu4 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac ~shared+threads arch=linux-ubuntu16.04-x86_64
^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^automake@1.16.1%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
^texinfo@6.5%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%clang@3.8.0-2ubuntu4+optimize+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
Concretized
--------------------------------
hdf5@1.10.4%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
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
Concretized
--------------------------------
hdf5@1.10.4%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
Concretized
--------------------------------
hdf5@1.10.4%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
Concretized
--------------------------------
hdf5@1.10.4%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
Concretized
--------------------------------
hdf5@1.10.4%clang@3.8.0-2ubuntu4~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
^openmpi@3.1.3%clang@3.8.0-2ubuntu4~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
^hwloc@1.11.9%clang@3.8.0-2ubuntu4~cairo~cuda+libxml2+pci~shared 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,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^pkgconf@1.4.2%clang@3.8.0-2ubuntu4 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.8%clang@3.8.0-2ubuntu4~python arch=linux-ubuntu16.04-x86_64
^xz@5.2.4%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
^numactl@2.0.11%clang@3.8.0-2ubuntu4 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
^autoconf@2.69%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^perl@5.26.2%clang@3.8.0-2ubuntu4+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac ~shared+threads arch=linux-ubuntu16.04-x86_64
^gdbm@1.14.1%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^readline@7.0%clang@3.8.0-2ubuntu4 arch=linux-ubuntu16.04-x86_64
^ncurses@6.1%clang@3.8.0-2ubuntu4~symlinks~termlib arch=linux-ubuntu16.04-x86_64
^automake@1.16.1%clang@3.8.0-2ubuntu4 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 building. 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
intel-parallel-studio:
buildable: False
spectrum-mpi:
buildable: False
mpilander:
buildable: False
charm:
buildable: False
charmpp:
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
Concretized
--------------------------------
hdf5@1.10.4%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+optimize+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.
^^^^^^^^^^^^^^^^^^^^^^^^
Installation Permissions
^^^^^^^^^^^^^^^^^^^^^^^^
The ``packages.yaml`` file also controls the default permissions
to use when installing a package. You'll notice that by default,
the installation prefix will be world readable but only user writable.
Let's say we need to install ``converge``, a licensed software package.
Since a specific research group, ``fluid_dynamics``, pays for this
license, we want to ensure that only members of this group can access
the software. We can do this like so:
.. code-block:: yaml
packages:
converge:
permissions:
read: group
group: fluid_dynamics
Now, only members of the ``fluid_dynamics`` group can use any
``converge`` installations.
.. 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 file system, you can run builds
from this file system 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 16 cores,
this will look like:
.. code-block:: console
$ spack install --no-cache --verbose zlib
==> Installing zlib
==> Using cached archive: /home/user/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
==> Staging archive: /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
==> Created stage in /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
==> No patches needed for zlib
==> Building zlib [Package]
==> Executing phase: 'install'
==> './configure' '--prefix=/home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
...
==> 'make' '-j16'
...
==> 'make' '-j16' 'install'
...
==> Successfully installed zlib
Fetch: 0.00s. Build: 1.03s. Total: 1.03s.
[+] /home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
As you can see, we are building with all 16 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 --no-cache --verbose zlib
==> Installing zlib
==> Using cached archive: /home/user/spack/var/spack/cache/zlib/zlib-1.2.11.tar.gz
==> Staging archive: /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/zlib-1.2.11.tar.gz
==> Created stage in /home/user/spack/var/spack/stage/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
==> No patches needed for zlib
==> Building zlib [Package]
==> Executing phase: 'install'
==> './configure' '--prefix=/home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb'
...
==> 'make' '-j4'
...
==> 'make' '-j4' 'install'
...
==> Successfully installed zlib
Fetch: 0.00s. Build: 1.03s. Total: 1.03s.
[+] /home/user/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb
Obviously, if you want to build everything in serial for whatever reason,
you would set ``build_jobs`` to 1.
--------
Examples
--------
For examples of how other sites configure Spack, see
https://github.com/spack/spack-configs. If you use Spack at your site
and want to share your config files, feel free to submit a pull request!

View File

@@ -1,815 +0,0 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _environments-tutorial:
================================================
Environments, ``spack.yaml``, and ``spack.lock``
================================================
We've shown you how to install and remove packages with Spack. You can
use :ref:`cmd-spack-install` to install packages,
:ref:`cmd-spack-uninstall` to remove them, and :ref:`cmd-spack-find` to
look at and query what is installed. We've also shown you how to
customize Spack's installation with configuration files like
:ref:`packages.yaml <build-settings>`.
If you build a lot of software, or if you work on multiple projects,
managing everything in one place can be overwhelming. The default ``spack
find`` output may contain many packages, but you may want to *just* focus
on packages a particular project. Moreover, you may want to include
special configuration with your package groups, e.g., to build all the
packages in the same group the same way.
Spack **environments** provide a way to handle these problems.
-------------------
Environment basics
-------------------
Let's look at the output of ``spack find`` at this point in the tutorial.
.. code-block:: console
$ bin/spack find
==> 70 installed packages
-- linux-ubuntu16.04-x86_64 / clang@3.8.0-2ubuntu4 --------------
tcl@8.6.8 zlib@1.2.8 zlib@1.2.11
-- linux-ubuntu16.04-x86_64 / gcc@4.7 ---------------------------
zlib@1.2.11
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
adept-utils@1.0.1 hdf5@1.10.4 mpc@1.1.0 perl@5.26.2
autoconf@2.69 hdf5@1.10.4 mpfr@3.1.6 pkgconf@1.4.2
automake@1.16.1 hdf5@1.10.4 mpich@3.2.1 readline@7.0
boost@1.68.0 hwloc@1.11.9 mpileaks@1.0 suite-sparse@5.3.0
bzip2@1.0.6 hypre@2.15.1 mumps@5.1.1 tar@1.30
callpath@1.0.4 hypre@2.15.1 mumps@5.1.1 tcl@8.6.8
cmake@3.12.3 isl@0.18 ncurses@6.1 tcl@8.6.8
diffutils@3.6 libdwarf@20180129 netcdf@4.6.1 texinfo@6.5
dyninst@9.3.2 libiberty@2.31.1 netcdf@4.6.1 trilinos@12.12.1
elfutils@0.173 libpciaccess@0.13.5 netlib-scalapack@2.0.2 trilinos@12.12.1
findutils@4.6.0 libsigsegv@2.11 netlib-scalapack@2.0.2 util-macros@1.19.1
gcc@7.2.0 libtool@2.4.6 numactl@2.0.11 xz@5.2.4
gdbm@1.14.1 libxml2@2.9.8 openblas@0.3.3 zlib@1.2.8
gettext@0.19.8.1 m4@1.4.18 openmpi@3.1.3 zlib@1.2.8
glm@0.9.7.1 matio@1.5.9 openssl@1.0.2o zlib@1.2.11
gmp@6.1.2 matio@1.5.9 parmetis@4.0.3
hdf5@1.10.4 metis@5.1.0 parmetis@4.0.3
This is a complete, but cluttered view. There are packages built with
both ``openmpi`` and ``mpich``, as well as multiple variants of other
packages, like ``zlib``. The query mechanism we learned about in ``spack
find`` can help, but it would be nice if we could start from a clean
slate without losing what we've already done.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creating and activating environments
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``spack env`` command can help. Let's create a new environment:
.. code-block:: console
$ spack env create myproject
==> Created environment 'myproject' in ~/spack/var/spack/environments/myproject
An environment is a virtualized ``spack`` instance that you can use for a
specific purpose. You can see the environments we've created so far like this:
.. code-block:: console
$ spack env list
==> 1 environments
myproject
And you can **activate** an environment with ``spack env activate``:
.. code-block:: console
$ spack env activate myproject
Once you enter an environment, ``spack find`` shows only what is in the
current environment. That's nothing, so far:
.. code-block:: console
$ spack find
==> In environment myproject
==> No root specs
==> 0 installed packages
The ``spack find`` output is still *slightly* different. It tells you
that you're in the ``myproject`` environment, so that you don't panic
when you see that there is nothing installed. It also says that there
are *no root specs*. We'll get back to what that means later.
If you *only* want to check what environment you are in, you can use
``spack env status``:
.. code-block:: console
$ spack env status
==> In environment myproject
And, if you want to leave this environment and go back to normal Spack,
you can use ``spack env deactivate``. We like to use the
``despacktivate`` alias (which Spack sets up automatically) for short:
.. code-block:: console
$ despacktivate # short alias for `spack env deactivate`
$ spack env status
==> No active environment
$ spack find
netcdf@4.6.1 readline@7.0 zlib@1.2.11
diffutils@3.6 hdf5@1.10.4 m4@1.4.18 netcdf@4.6.1 suite-sparse@5.3.0
dyninst@10.0.0 hwloc@1.11.9 matio@1.5.9 netlib-scalapack@2.0.2 tar@1.30
elfutils@0.173 hypre@2.15.1 matio@1.5.9 netlib-scalapack@2.0.2 tcl@8.6.8
findutils@4.6.0 hypre@2.15.1 metis@5.1.0 numactl@2.0.11 tcl@8.6.8
gcc@7.2.0 intel-tbb@2019 mpc@1.1.0 openblas@0.3.3 texinfo@6.5~
^^^^^^^^^^^^^^^^^^^
Installing packages
^^^^^^^^^^^^^^^^^^^
Ok, now that we understand how creation and activation work, let's go
back to ``myproject`` and *install* a few packages:
.. code-block:: console
$ spack env activate myproject
$ spack install tcl
==> tcl is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt
$ spack install trilinos
==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
$ spack find
==> In environment myproject
==> Root specs
tcl trilinos
==> 22 installed packages
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
boost@1.68.0 hwloc@1.11.9 matio@1.5.9 netlib-scalapack@2.0.2 parmetis@4.0.3 xz@5.2.4
bzip2@1.0.6 hypre@2.15.1 metis@5.1.0 numactl@2.0.11 suite-sparse@5.3.0 zlib@1.2.11
glm@0.9.7.1 libpciaccess@0.13.5 mumps@5.1.1 openblas@0.3.3 tcl@8.6.8
hdf5@1.10.4 libxml2@2.9.8 netcdf@4.6.1 openmpi@3.1.3 trilinos@12.12.1
We've installed ``tcl`` and ``trilinos`` in our environment, along with
all of their dependencies. We call ``tcl`` and ``trilinos`` the
**roots** because we asked for them explicitly. The other 20 packages
listed under "installed packages" are present because they were needed as
dependencies. So, these are the roots of the packages' dependency graph.
The "<package> is already installed" messages above are generated because
we already installed these packages in previous steps of the tutorial,
and we don't have to rebuild them to put them in an environment.
Now let's create *another* project. We'll call this one ``myproject2``:
.. code-block:: console
$ spack env create myproject2
==> Created environment 'myproject2' in ~/spack/var/spack/environments/myproject2
$ spack env activate myproject2
$ spack install hdf5
==> hdf5 is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw
$ spack install trilinos
==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
$ spack find
==> In environment myproject2
==> Root specs
hdf5 trilinos
==> 22 installed packages
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
boost@1.68.0 hdf5@1.10.4 libxml2@2.9.8 netcdf@4.6.1 openmpi@3.1.3 xz@5.2.4
bzip2@1.0.6 hwloc@1.11.9 matio@1.5.9 netlib-scalapack@2.0.2 parmetis@4.0.3 zlib@1.2.11
glm@0.9.7.1 hypre@2.15.1 metis@5.1.0 numactl@2.0.11 suite-sparse@5.3.0
hdf5@1.10.4 libpciaccess@0.13.5 mumps@5.1.1 openblas@0.3.3 trilinos@12.12.1
Now we have two environments: one with ``tcl`` and ``trilinos``, and
another with ``hdf5`` and ``trilinos``.
We can uninstall trilinos from ``myproject2`` as you would expect:
.. code-block:: console
$ spack uninstall trilinos
==> The following packages will be uninstalled:
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
rlsruav trilinos@12.12.1%gcc~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2
==> Do you want to proceed? [y/N] y
$ spack find
==> In environment myproject2
==> Root specs
hdf5
==> 8 installed packages
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
hdf5@1.10.4 libpciaccess@0.13.5 numactl@2.0.11 xz@5.2.4
hwloc@1.11.9 libxml2@2.9.8 openmpi@3.1.3 zlib@1.2.11
Now there is only one root spec, ``hdf5``, which requires fewer
additional dependencies.
However, we still needed ``trilinos`` for the ``myproject`` environment!
What happened to it? Let's switch back and see.
.. code-block:: console
$ despacktivate
$ spack env activate myproject
$ spack find
==> In environment myproject
==> Root specs
tcl trilinos
==> 22 installed packages
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
boost@1.68.0 hwloc@1.11.9 matio@1.5.9 netlib-scalapack@2.0.2 parmetis@4.0.3 xz@5.2.4
bzip2@1.0.6 hypre@2.15.1 metis@5.1.0 numactl@2.0.11 suite-sparse@5.3.0 zlib@1.2.11
glm@0.9.7.1 libpciaccess@0.13.5 mumps@5.1.1 openblas@0.3.3 tcl@8.6.8
hdf5@1.10.4 libxml2@2.9.8 netcdf@4.6.1 openmpi@3.1.3 trilinos@12.12.1
Spack is smart enough to realize that ``trilinos`` is still present in
the other environment. Trilinos won't *actually* be uninstalled unless
it is no longer needed by any environments or packages. If it is still
needed, it is only removed from the environment.
-------------------------------
Dealing with many specs at once
-------------------------------
In the above examples, we just used ``install`` and ``uninstall``. There
are other ways to deal with groups of packages, as well.
^^^^^^^^^^^^^
Adding specs
^^^^^^^^^^^^^
Let's go back to our first ``myproject`` environment and *add* a few specs instead of installing them:
.. code-block:: console
$ spack add hdf5
==> Adding hdf5 to environment myproject
$ spack add gmp
==> Adding mumps to environment myproject
$ spack find
==> In environment myproject
==> Root specs
gmp hdf5 tcl trilinos
==> 22 installed packages
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
boost@1.68.0 hwloc@1.11.9 matio@1.5.9 netlib-scalapack@2.0.2 parmetis@4.0.3 xz@5.2.4
bzip2@1.0.6 hypre@2.15.1 metis@5.1.0 numactl@2.0.11 suite-sparse@5.3.0 zlib@1.2.11
glm@0.9.7.1 libpciaccess@0.13.5 mumps@5.1.1 openblas@0.3.3 tcl@8.6.8
hdf5@1.10.4 libxml2@2.9.8 netcdf@4.6.1 openmpi@3.1.3 trilinos@12.12.1
Let's take a close look at what happened. The two packages we added,
``hdf5`` and ``gmp``, are present, but they're not installed in the
environment yet. ``spack add`` just adds *roots* to the environment, but
it does not automatically install them.
We can install *all* the as-yet uninstalled packages in an environment by
simply running ``spack install`` with no arguments:
.. code-block:: console
$ spack install
==> Concretizing hdf5
[+] ozyvmhz hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
[+] 3njc4q5 ^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
[+] 43tkw5m ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
[+] 5urc6tc ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] milz7fm ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] wpexsph ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
[+] teneqii ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
[+] ft463od ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
==> Concretizing gmp
[+] qc4qcfz gmp@6.1.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
==> Installing environment myproject
==> tcl is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/tcl-8.6.8-qhwyccywhx2i6s7ob2gvjrjtj3rnfuqt
==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
==> hdf5 is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/hdf5-1.10.4-ozyvmhzdew66byarohm4p36ep7wtcuiw
==> gmp is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gmp-6.1.2-qc4qcfz4monpllc3nqupdo7vwinf73sw
Spack will concretize the new roots, and install everything you added to
the environment. Now we can see the installed roots in the output of
``spack find``:
.. code-block:: console
$ spack find
==> In environment myproject
==> Root specs
gmp hdf5 tcl trilinos
==> 24 installed packages
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
boost@1.68.0 hdf5@1.10.4 libpciaccess@0.13.5 mumps@5.1.1 openblas@0.3.3 tcl@8.6.8
bzip2@1.0.6 hdf5@1.10.4 libxml2@2.9.8 netcdf@4.6.1 openmpi@3.1.3 trilinos@12.12.1
glm@0.9.7.1 hwloc@1.11.9 matio@1.5.9 netlib-scalapack@2.0.2 parmetis@4.0.3 xz@5.2.4
gmp@6.1.2 hypre@2.15.1 metis@5.1.0 numactl@2.0.11 suite-sparse@5.3.0 zlib@1.2.11
We can build whole environments this way, by adding specs and installing
all at once, or we can install them with the usual ``install`` and
``uninstall`` portions. The advantage to doing them all at once is that
we don't have to write a script outside of Spack to automate this, and we
can kick off a large build of many packages easily.
^^^^^^^^^^^^^^^^^^^^^
Configuration
^^^^^^^^^^^^^^^^^^^^^
So far, ``myproject`` does not have any special configuration associated
with it. The specs concretize using Spack's defaults:
.. code-block:: console
$ spack spec hypre
Input spec
--------------------------------
hypre
Concretized
--------------------------------
hypre@2.15.1%gcc@5.4.0~debug~int64+internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
You may want to add extra configuration to your environment. You can see
how your environment is configured using ``spack config get``:
.. code-block:: console
$ spack config get
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
# add package specs to the `specs` list
specs: [tcl, trilinos, hdf5, gmp]
It turns out that this is a special configuration format where Spack
stores the state for the environment. Currently, the file is just a
``spack:`` header and a list of ``specs``. These are the roots.
You can edit this file to add your own custom configuration. Spack
provides a shortcut to do that:
.. code-block:: console
spack config edit
You should now see the same file, and edit it to look like this:
.. code-block:: yaml
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
packages:
all:
providers:
mpi: [mpich]
# add package specs to the `specs` list
specs: [tcl, trilinos, hdf5, gmp]
Now if we run ``spack spec`` again in the environment, specs will concretize with ``mpich`` as the MPI implementation:
.. code-block:: console
$ spack spec hypre
Input spec
--------------------------------
hypre
Concretized
--------------------------------
hypre@2.15.1%gcc@5.4.0~debug~int64+internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
^mpich@3.2.1%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
^findutils@4.6.0%gcc@5.4.0 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^texinfo@6.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
In addition to the ``specs`` section, an environment's configuration can
contain any of the configuration options from Spack's various config
sections. You can add custom repositories, a custom install location,
custom compilers, or custom external packages, in addition to the ``package``
preferences we show here.
But now we have a problem. We already installed part of this environment
with openmpi, but now we want to install it with ``mpich``.
You can run ``spack concretize`` inside of an environment to concretize
all of its specs. We can run it here:
.. code-block:: console
$ spack concretize -f
==> Concretizing tcl
[+] qhwyccy tcl@8.6.8%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
==> Concretizing trilinos
[+] kqc52mo trilinos@12.12.1%gcc@5.4.0~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2 arch=linux-ubuntu16.04-x86_64
[+] zbgfxap ^boost@1.68.0%gcc@5.4.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 +program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=linux-ubuntu16.04-x86_64
[+] ufczdvs ^bzip2@1.0.6%gcc@5.4.0+shared arch=linux-ubuntu16.04-x86_64
[+] 2rhuivg ^diffutils@3.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
[+] otafqzh ^cmake@3.12.3%gcc@5.4.0~doc+ncurses+openssl+ownlibs patches=dd3a40d4d92f6b2158b87d6fb354c277947c776424aa03f6dc8096cf3135f5d0 ~qt arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] b4y3w3b ^openssl@1.0.2o%gcc@5.4.0+systemcerts arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] jnw622j ^glm@0.9.7.1%gcc@5.4.0 build_type=RelWithDebInfo arch=linux-ubuntu16.04-x86_64
[+] xxd7syh ^hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
[+] p3f7p2r ^mpich@3.2.1%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
[+] d4iajxs ^findutils@4.6.0%gcc@5.4.0 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] zs7a2pc ^texinfo@6.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] obewuoz ^hypre@2.15.1%gcc@5.4.0~debug~int64~internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
[+] cyeg2yi ^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
[+] gvyqldh ^matio@1.5.9%gcc@5.4.0+hdf5+shared+zlib arch=linux-ubuntu16.04-x86_64
[+] 3wnvp4j ^metis@5.1.0%gcc@5.4.0 build_type=Release ~gdb~int64 patches=4991da938c1d3a1d3dea78e49bbebecba00273f98df2a656e38b83d55b281da1 ~real64+shared arch=linux-ubuntu16.04-x86_64
[+] cumcj5a ^mumps@5.1.1%gcc@5.4.0+complex+double+float~int64~metis+mpi~parmetis~ptscotch~scotch+shared arch=linux-ubuntu16.04-x86_64
[+] p7iln2p ^netlib-scalapack@2.0.2%gcc@5.4.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
[+] wmmx5sg ^netcdf@4.6.1%gcc@5.4.0~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf+shared arch=linux-ubuntu16.04-x86_64
[+] jehtata ^parmetis@4.0.3%gcc@5.4.0 build_type=RelWithDebInfo ~gdb patches=4f892531eb0a807eb1b82e683a416d3e35154a455274cf9b162fb02054d11a5b,50ed2081bc939269689789942067c58b3e522c269269a430d5d34c00edbc5870,704b84f7c7444d4372cb59cca6e1209df4ef3b033bc4ee3cf50f369bce972a9d +shared arch=linux-ubuntu16.04-x86_64
[+] zaau4ki ^suite-sparse@5.3.0%gcc@5.4.0~cuda~openmp+pic~tbb arch=linux-ubuntu16.04-x86_64
==> Concretizing hdf5
- zjgyn3w hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
[+] p3f7p2r ^mpich@3.2.1%gcc@5.4.0 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-ubuntu16.04-x86_64
[+] d4iajxs ^findutils@4.6.0%gcc@5.4.0 patches=84b916c0bf8c51b7e7b28417692f0ad3e7030d1f3c248ba77c42ede5c1c5d11e,bd9e4e5cc280f9753ae14956c4e4aa17fe7a210f55dd6c84aa60b12d106d47a2 arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] zs7a2pc ^texinfo@6.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
==> Concretizing gmp
[+] qc4qcfz gmp@6.1.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
Now, all the specs in the environemnt are concrete and ready to be
installed wiht ``mpich`` as the MPI immplementation.
Normally, we could just run ``spack config edit``, edit the environment
configuration, ``spack add`` some specs, and ``install``.
But, when we already have installed packages in the environment, we have
to force everything in the environment to be re-concretized using ``spack
concretize -f``. *Then* we can re-run ``spack install``.
-----------------------------------
``spack.yaml`` and ``spack.lock``
-----------------------------------
So far we've shown you how to interact with environments from the command
line, but they also have a file-based interface that can be used by
developers and admins to manage workflows for projects.
In this section we'll dive a little deeper to see how environments are
implemented, and how you could use this in your day-to-day development.
^^^^^^^^^^^^^^
``spack.yaml``
^^^^^^^^^^^^^^
Earlier, we changed an environment's configuration using ``spack config
edit``. We were actually editing a special file called ``spack.yaml``.
Let's take a look.
We can get directly to the current environment's location using ``spack cd``:
.. code-block:: console
$ spack cd -e myproject
$ pwd
~/spack/var/spack/environments/myproject
$ ls
spack.lock spack.yaml
We notice two things here. First, the environment is just a directory
inside of ``var/spack/environments`` within the Spack installation.
Second, it contains two important files: ``spack.yaml`` and
``spack.lock``.
``spack.yaml`` is the configuration file for environments that we've
already seen, but it does not *have* to live inside Spack. If you create
an environment using ``spack env create``, it is *managed* by
Spack in the ``var/spack/environments`` directory, and you can refer to
it by name.
You can actually put a ``spack.yaml`` file *anywhere*, and you can use it
to bundle an environment, or a list of dependencies to install, with your
project. Let's make a simple project:
.. code-block:: console
$ cd
$ mkdir code
$ cd code
$ spack env create -d .
==> Created environment in ~/code
Here, we made a new directory called *code*, and we used the ``-d``
option to create an environment in it.
What really happened?
.. code-block:: console
$ ls
spack.yaml
$ cat spack.yaml
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
# add package specs to the `specs` list
specs: []
Spack just created a ``spack.yaml`` file in the code directory, with an
empty list of root specs. Now we have a Spack environment, *in a
directory*, that we can use to manage dependencies. Suppose your project
depends on ``boost``, ``trilinos``, and ``openmpi``. You can add these
to your spec list:
.. code-block:: yaml
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
# add package specs to the `specs` list
specs:
- boost
- trilinos
- openmpi
And now *anyone* who uses the *code* repository can use this format to
install the project's dependencies. They need only clone the repository,
``cd`` into it, and type ``spack install``:
.. code-block:: console
$ spack install
==> Concretizing boost
[+] zbgfxap boost@1.68.0%gcc@5.4.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 +program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=linux-ubuntu16.04-x86_64
[+] ufczdvs ^bzip2@1.0.6%gcc@5.4.0+shared arch=linux-ubuntu16.04-x86_64
[+] 2rhuivg ^diffutils@3.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
==> Concretizing trilinos
[+] rlsruav trilinos@12.12.1%gcc@5.4.0~alloptpkgs+amesos+amesos2+anasazi+aztec+belos+boost build_type=RelWithDebInfo ~cgns~complex~dtk+epetra+epetraext+exodus+explicit_template_instantiation~float+fortran~fortrilinos+gtest+hdf5+hypre+ifpack+ifpack2~intrepid~intrepid2~isorropia+kokkos+metis~minitensor+ml+muelu+mumps~nox~openmp~phalanx~piro~pnetcdf~python~rol~rythmos+sacado~shards+shared~stk+suite-sparse~superlu~superlu-dist~teko~tempus+teuchos+tpetra~x11~xsdkflags~zlib+zoltan+zoltan2 arch=linux-ubuntu16.04-x86_64
[+] zbgfxap ^boost@1.68.0%gcc@5.4.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199 +program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=linux-ubuntu16.04-x86_64
[+] ufczdvs ^bzip2@1.0.6%gcc@5.4.0+shared arch=linux-ubuntu16.04-x86_64
[+] 2rhuivg ^diffutils@3.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
[+] otafqzh ^cmake@3.12.3%gcc@5.4.0~doc+ncurses+openssl+ownlibs patches=dd3a40d4d92f6b2158b87d6fb354c277947c776424aa03f6dc8096cf3135f5d0 ~qt arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] b4y3w3b ^openssl@1.0.2o%gcc@5.4.0+systemcerts arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] jnw622j ^glm@0.9.7.1%gcc@5.4.0 build_type=RelWithDebInfo arch=linux-ubuntu16.04-x86_64
[+] oqwnui7 ^hdf5@1.10.4%gcc@5.4.0~cxx~debug~fortran+hl+mpi+pic+shared~szip~threadsafe arch=linux-ubuntu16.04-x86_64
[+] 3njc4q5 ^openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
[+] 43tkw5m ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
[+] 5urc6tc ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] milz7fm ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] wpexsph ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
[+] teneqii ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] ft463od ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] fshksdp ^hypre@2.15.1%gcc@5.4.0~debug~int64~internal-superlu+mpi+shared arch=linux-ubuntu16.04-x86_64
[+] cyeg2yi ^openblas@0.3.3%gcc@5.4.0 cpu_target= ~ilp64 patches=47cfa7a952ac7b2e4632c73ae199d69fb54490627b66a62c681e21019c4ddc9d,714aea33692304a50bd0ccde42590c176c82ded4a8ac7f06e573dc8071929c33 +pic+shared threads=none ~virtual_machine arch=linux-ubuntu16.04-x86_64
[+] lmzdgss ^matio@1.5.9%gcc@5.4.0+hdf5+shared+zlib arch=linux-ubuntu16.04-x86_64
[+] 3wnvp4j ^metis@5.1.0%gcc@5.4.0 build_type=Release ~gdb~int64 patches=4991da938c1d3a1d3dea78e49bbebecba00273f98df2a656e38b83d55b281da1 ~real64+shared arch=linux-ubuntu16.04-x86_64
[+] acsg2dz ^mumps@5.1.1%gcc@5.4.0+complex+double+float~int64~metis+mpi~parmetis~ptscotch~scotch+shared arch=linux-ubuntu16.04-x86_64
[+] wotpfwf ^netlib-scalapack@2.0.2%gcc@5.4.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
[+] mhm4izp ^netcdf@4.6.1%gcc@5.4.0~dap~hdf4 maxdims=1024 maxvars=8192 +mpi~parallel-netcdf+shared arch=linux-ubuntu16.04-x86_64
[+] uv6h3sq ^parmetis@4.0.3%gcc@5.4.0 build_type=RelWithDebInfo ~gdb patches=4f892531eb0a807eb1b82e683a416d3e35154a455274cf9b162fb02054d11a5b,50ed2081bc939269689789942067c58b3e522c269269a430d5d34c00edbc5870,704b84f7c7444d4372cb59cca6e1209df4ef3b033bc4ee3cf50f369bce972a9d +shared arch=linux-ubuntu16.04-x86_64
[+] zaau4ki ^suite-sparse@5.3.0%gcc@5.4.0~cuda~openmp+pic~tbb arch=linux-ubuntu16.04-x86_64
==> Concretizing openmpi
[+] 3njc4q5 openmpi@3.1.3%gcc@5.4.0~cuda+cxx_exceptions fabrics= ~java~legacylaunchers~memchecker~pmi schedulers= ~sqlite3~thread_multiple+vt arch=linux-ubuntu16.04-x86_64
[+] 43tkw5m ^hwloc@1.11.9%gcc@5.4.0~cairo~cuda+libxml2+pci+shared arch=linux-ubuntu16.04-x86_64
[+] 5urc6tc ^libpciaccess@0.13.5%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] o2pfwjf ^libtool@2.4.6%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] suf5jtc ^m4@1.4.18%gcc@5.4.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=linux-ubuntu16.04-x86_64
[+] fypapcp ^libsigsegv@2.11%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] fovrh7a ^pkgconf@1.4.2%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] milz7fm ^util-macros@1.19.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] wpexsph ^libxml2@2.9.8%gcc@5.4.0~python arch=linux-ubuntu16.04-x86_64
[+] teneqii ^xz@5.2.4%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 5nus6kn ^zlib@1.2.11%gcc@5.4.0+optimize+pic+shared arch=linux-ubuntu16.04-x86_64
[+] ft463od ^numactl@2.0.11%gcc@5.4.0 patches=592f30f7f5f757dfc239ad0ffd39a9a048487ad803c26b419e0f96b8cda08c1a arch=linux-ubuntu16.04-x86_64
[+] 3sx2gxe ^autoconf@2.69%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] ic2kyoa ^perl@5.26.2%gcc@5.4.0+cpanm patches=0eac10ed90aeb0459ad8851f88081d439a4e41978e586ec743069e8b059370ac +shared+threads arch=linux-ubuntu16.04-x86_64
[+] q4fpyuo ^gdbm@1.14.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] nxhwrg7 ^readline@7.0%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
[+] 3o765ou ^ncurses@6.1%gcc@5.4.0~symlinks~termlib arch=linux-ubuntu16.04-x86_64
[+] rymw7im ^automake@1.16.1%gcc@5.4.0 arch=linux-ubuntu16.04-x86_64
==> Installing environment ~/code
==> boost is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/boost-1.68.0-zbgfxapchxa4awxdwpleubfuznblxzvt
==> trilinos is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/trilinos-12.12.1-rlsruavxqvwk2tgxzxboclbo6ykjf54r
==> openmpi is already installed in ~/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx
Spack concretizes the specs in the ``spack.yaml`` file and installs them.
What happened here? If you ``cd`` into a directory tha has a
``spack.yaml`` file in it, Spack considers this directory's environment
to be activated. The directory does not have to live within Spack; it
can be anywhere.
So, from ``~/code``, we can actually manipulate ``spack.yaml`` using
``spack add`` and ``spack remove`` (just like managed environments):
.. code-block:: console
$ spack add hdf5@5.5.1
==> Adding hdf5 to environment ~/code
$ cat spack.yaml
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
# add package specs to the `specs` list
specs:
- boost
- trilinos
- openmpi
- hdf5@5.5.1
$ spack remove hdf5
==> Removing hdf5 from environment ~/code
$ cat spack.yaml
# This is a Spack Environment file.
#
# It describes a set of packages to be installed, along with
# configuration settings.
spack:
# add package specs to the `specs` list
specs:
- boost
- trilinos
- openmpi
^^^^^^^^^^^^^^
``spack.lock``
^^^^^^^^^^^^^^
Ok, we've covered managed environments, environments in directories, and
the last thing we'll cover is ``spack.lock``. You may remember that when
we ran ``spack install``, Spack concretized all the specs in the
``spack.yaml`` file and installed them.
Whenever we concretize Specs in an environment, all concrete specs in the
environment are written out to a ``spack.lock`` file *alongside*
``spack.yaml``. The ``spack.lock`` file is not really human-readable
like the ``spack.yaml`` file. It is a ``json`` format that contains all
the information that we need to ``reproduce`` the build of an
environment:
.. code-block:: console
$ head spack.lock
{
"concrete_specs": {
"teneqii2xv5u6zl5r6qi3pwurc6pmypz": {
"xz": {
"version": "5.2.4",
"arch": {
"platform": "linux",
"platform_os": "ubuntu16.04",
"target": "x86_64"
},
...
``spack.yaml`` and ``spack.lock`` correspond to two fundamental concepts
in Spack, but for environments:
* ``spack.yaml`` is the set of *abstract* specs and configuration that
you want to install.
* ``spack.lock`` is the set of all fully *concretized* specs generated
from concretizing ``spack.yaml``
Using either of these, you can recreate an environment that someone else
built. ``spack env create`` takes an extra optional argument, which can
be either a ``spack.yaml`` or a ``spack.lock`` file:
.. code-block:: console
$ spack env create my-project spack.yaml
$ spack env create my-project spack.lock
Both of these create a new environment called ``my-project``, but which
one you choose to use depends on your needs:
1. copying the yaml file allows someone else to build your *requirements*,
potentially a different way.
2. copying the lock file allows someone else to rebuild your
*installation* exactly as you built it.
The first use case can *re-concretize* the same specs on new platforms in
order to build, but it will preserve the abstract requirements. The
second use case (currently) requires you to be on the same machine, but
it retains all decisions made during concretization and is faithful to a
prior install.

File diff suppressed because it is too large Load Diff

View File

@@ -1,556 +0,0 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
.. _packaging-tutorial:
=========================
Package Creation Tutorial
=========================
This tutorial will walk you through the steps behind building a simple
package installation script. We'll focus building an mpileaks package,
which is a MPI debugging tool. By creating a package file we're
essentially giving Spack a recipe for how to build a particular piece of
software. We're describing some of the software's dependencies, where to
find the package, what commands and options are used to build the package
from source, and more. Once we've specified a package's recipe, we can
ask Spack to build that package in many different ways.
This tutorial assumes you have a basic familiarity with some of the Spack
commands, and that you have a working version of Spack installed. If
not, we suggest looking at Spack's *Getting Started* guide. This
tutorial also assumes you have at least a beginner's-level familiarity
with Python.
Also note that this document is a tutorial. It can help you get started
with packaging, but is not intended to be complete. See Spack's
:ref:`packaging-guide` for more complete documentation on this topic.
---------------
Getting Started
---------------
A few things before we get started:
- We'll refer to the Spack installation location via the environment
variable ``SPACK_ROOT``. You should point ``SPACK_ROOT`` at wherever
you have Spack installed.
- Add ``$SPACK_ROOT/bin`` to your ``PATH`` before you start.
- Make sure your ``EDITOR`` environment variable is set to some text
editor you like.
- We'll be writing Python code as part of this tutorial. You can find
successive versions of the Python code in
``$SPACK_ROOT/lib/spack/docs/tutorial/examples``.
-------------------------
Creating the Package File
-------------------------
We will use a separate package repository for the tutorial. Package
repositories allow you to separate sets of packages that take
precedence over one another. We will use the tutorial repo that ships
with Spack to avoid breaking the builtin Spack packages.
.. code-block:: console
$ spack repo add $SPACK_ROOT/var/spack/repos/tutorial/
==> Added repo with namespace 'tutorial'.
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
mpileaks source code can be found on GitHub, and here's what happens when
we run ``spack create`` on it:
.. code-block:: console
$ 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/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: /home/spack1/spack/var/spack/repos/builtin/packages/mpileaks/package.py
And Spack should spawn a text editor with this file:
.. literalinclude:: tutorial/examples/0.package.py
:language: python
Spack has created this file in
``/home/spack1/spack/var/spack/repos/builtin/packages/mpileaks/package.py``. Take a
moment to look over the file. There's a few placeholders that Spack has
created, which we'll fill in as part of this tutorial:
- We'll document some information about this package in the comments.
- We'll fill in the dependency list for this package.
- We'll fill in some of the configuration arguments needed to build this
package.
For the moment, exit your editor and let's see what happens when we try
to build this package:
.. code-block:: console
$ spack install mpileaks
==> No binary for mpileaks found: installing from source
==> Fetching file:///mirror/mpileaks/mpileaks-1.0.tar.gz
curl: (37) Couldn't open file /mirror/mpileaks/mpileaks-1.0.tar.gz
==> Fetching from file:///mirror/mpileaks/mpileaks-1.0.tar.gz failed.
==> Fetching https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
######################################################################## 100.0%
==> Staging archive: /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-sv75n3u5ev6mljwcezisz3slooozbbxu/mpileaks-1.0.tar.gz
==> Created stage in /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-sv75n3u5ev6mljwcezisz3slooozbbxu
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> Error: ProcessError: Command exited with status 2:
'make' '-j16'
1 error found in build log:
1 ==> Executing phase: 'install'
2 ==> 'make' '-j16'
>> 3 make: *** No targets specified and no makefile found. Stop.
See build log for details:
/home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-sv75n3u5ev6mljwcezisz3slooozbbxu/mpileaks-1.0/spack-build.out
This obviously didn't work; we need to fill in the package-specific
information. Specifically, Spack didn't try to build any of mpileaks'
dependencies, nor did it use the proper configure arguments. Let's start
fixing things
---------------------
Package Documentation
---------------------
We can bring the ``package.py`` file back into our ``EDITOR`` with the
``spack edit`` command:
.. code-block:: console
$ spack edit mpileaks
Let's remove some of the ``FIXME`` comments, and add links to the mpileaks
homepage and document what mpileaks does. I'm also going to cut out the
Copyright clause at this point to keep this tutorial document shorter,
but you shouldn't do that normally. The results of these changes can be
found in ``$SPACK_ROOT/lib/spack/docs/tutorial/examples/1.package.py``
and are below. Make these changes to your ``package.py``:
.. literalinclude:: tutorial/examples/1.package.py
:lines: 6-
:language: python
We've filled in the comment that describes what this package does and
added a link to the web site. That won't help us build yet, but it will
allow Spack to provide some documentation on this package to other users:
.. code-block:: console
$ spack info mpileaks
Package: mpileaks
Description:
Tool to detect and report MPI objects like MPI_Requests and
MPI_Datatypes.
Homepage: https://github.com/hpc/mpileaks
Tags:
None
Preferred version:
1.0 https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
Safe versions:
1.0 https://github.com/hpc/mpileaks/releases/download/v1.0/mpileaks-1.0.tar.gz
Variants:
None
Installation Phases:
install
Build Dependencies:
None
Link Dependencies:
None
Run Dependencies:
None
Virtual Packages:
None
As we fill in more information about this package the ``spack info`` command
will become more informative. Now let's start making this package build.
------------
Dependencies
------------
The mpileaks packages depends on three other package: ``MPI``,
``adept-utils``, and ``callpath``. Let's add those via the
``depends_on`` command in our ``package.py`` (this version is in
``$SPACK_ROOT/lib/spack/docs/tutorial/examples/2.package.py``):
.. literalinclude:: tutorial/examples/2.package.py
:lines: 6-
:language: python
Now when we go to build mpileaks, Spack will fetch and build these
dependencies before building mpileaks. Note that the mpi dependency is a
different kind of beast than the adept-utils and callpath dependencies;
there is no mpi package available in Spack. Instead mpi is a virtual
dependency. Spack may satisfy that dependency by installing packages
such as ``openmpi`` or ``mvapich``. See the :ref:`packaging-guide` for more
information on virtual dependencies.
Now when we try to install this package a lot more happens:
.. code-block:: console
$ spack install mpileaks
...
==> Successfully installed libdwarf from binary cache
[+] /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/libdwarf-20180129-p4jeflorwlnkoq2vpuyocwrbcht2ayak
==> Installing callpath
==> Searching for binary cache of callpath
==> Installing callpath from binary cache
==> Fetching file:///mirror/build_cache/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4/linux-ubuntu16.04-x86_64-gcc-5.4.0-callpath-1.0.4-empvyxdkc4j4pwg7gznwhbiumruey66x.spack
######################################################################## 100.0%
gpg: Signature made Sat 10 Nov 2018 05:30:21 AM UTC using RSA key ID 3B7C69B2
gpg: Good signature from "sc-tutorial (GPG created for Spack) <becker33@llnl.gov>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 95C7 1787 7AC0 0FFD AA8F D6E9 9CFA 4A45 3B7C 69B2
==> Successfully installed callpath from binary cache
[+] /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4-empvyxdkc4j4pwg7gznwhbiumruey66x
==> Installing mpileaks
==> Searching for binary cache of mpileaks
==> No binary for mpileaks found: installing from source
==> Using cached archive: /home/ubuntu/packaging/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0.tar.gz
==> Created stage in /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> Error: ProcessError: Command exited with status 2:
'make' '-j16'
1 error found in build log:
1 ==> Executing phase: 'install'
2 ==> 'make' '-j16'
>> 3 make: *** No targets specified and no makefile found. Stop.
See build log for details:
/home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/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.
Now Spack has identified and made sure all of our dependencies have been
built. It found the ``openmpi`` package that will satisfy our ``mpi``
dependency, and the ``callpath`` and ``adept-utils`` package to satisfy our
concrete dependencies.
------------------------
Debugging Package Builds
------------------------
Our ``mpileaks`` package is still not building. It may be obvious to
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: 6-
:language: python
If we re-run we still get errors:
.. code-block:: console
$ spack install mpileask
...
==> Installing mpileaks
==> Searching for binary cache of mpileaks
==> Finding buildcaches in /mirror/build_cache
==> No binary for mpileaks found: installing from source
==> Using cached archive: /home/ubuntu/packaging/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0.tar.gz
==> Created stage in /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
==> 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:
25 checking for /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-
5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc... /home/ubuntu/pa
ckaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.3-3njc4q5p
qdpptq6jvqjrezkffwokv2sx/bin/mpicc
26 Checking whether /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/
gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-
showme:compile'... no
27 Checking whether /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/
gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-
showme'... no
28 Checking whether /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/
gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-
compile-info'... no
29 Checking whether /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/
gcc-5.4.0/openmpi-3.1.3-3njc4q5pqdpptq6jvqjrezkffwokv2sx/bin/mpicc responds to '-
show'... no
30 ./configure: line 4809: Echo: command not found
>> 31 configure: error: unable to locate adept-utils installation
See build log for details:
/home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/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
==> 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... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... /home/spack1/spack/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 object files... o
checking whether we are using the GNU C compiler... yes
checking whether /home/spack1/spack/lib/spack/env/gcc/gcc accepts -g... yes
checking for /home/spack1/spack/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 /home/spack1/spack/lib/spack/env/gcc/gcc... gcc3
checking whether /home/spack1/spack/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 /home/spack1/spack/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of /home/spack1/spack/lib/spack/env/gcc/g++... gcc3
checking for /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
Checking whether /home/spack1/spack/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 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
their command line. But let's continue to pretend we're not brilliant
developers, and explore some other debugging paths:
We can also enter the build area and try to manually run the build:
.. code-block:: console
$ spack build-env mpileaks bash
$ spack cd mpileaks
The ``spack env`` command spawned a new shell that contains the same
environment that Spack used to build the mpileaks package (you can
substitute bash for your favorite shell). The ``spack cd`` command
changed our working dirctory to the last attempted build for mpileaks.
From here we can manually re-run the build:
.. code-block:: console
$ ./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... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... /home/spack1/spack/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 object files... o
checking whether we are using the GNU C compiler... yes
checking whether /home/spack1/spack/lib/spack/env/gcc/gcc accepts -g... yes
checking for /home/spack1/spack/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 /home/spack1/spack/lib/spack/env/gcc/gcc... gcc3
checking whether /home/spack1/spack/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 /home/spack1/spack/lib/spack/env/gcc/g++ accepts -g... yes
checking dependency style of /home/spack1/spack/lib/spack/env/gcc/g++... gcc3
checking for /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc... /home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.0.0-yo5qkfvumpmgmvlbalqcadu46j5bd52f/bin/mpicc
Checking whether /home/spack1/spack/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
the command ourselves and debug as needed. We could, for example, run
``./configure --help`` to see what options we can use to specify
dependencies.
We can use the ``exit`` command to leave the shell spawned by ``spack
env``.
------------------------------
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/4.package.py``:
.. literalinclude:: tutorial/examples/4.package.py
:lines: 6-
:language: python
This is all we need for working mpileaks! If we install now we'll see:
.. code-block:: console
$ spack install mpileaks
...
==> Installing mpileaks
==> Searching for binary cache of mpileaks
==> Finding buildcaches in /mirror/build_cache
==> No binary for mpileaks found: installing from source
==> Using cached archive: /home/ubuntu/packaging/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb/mpileaks-1.0.tar.gz
==> Created stage in /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> Successfully installed mpileaks
Fetch: 0.00s. Build: 9.41s. Total: 9.41s.
[+] /home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpileaks-1.0-csoikctsalli4cdkkdk377gprkc472rb
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 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 that will be discussed later in the tutorial.
--------
Variants
--------
We have a successful mpileaks build, but let's take some time to improve
it. ``mpileaks`` has a build-time option to truncate parts of the stack
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/5.package.py``):
.. literalinclude:: tutorial/examples/5.package.py
:lines: 6-
:language: python
We've added the variant ``stackstart``, and given it a default value of
``0``. If we install now we can see the stackstart variant added to the
configure line (output truncated for length):
.. code-block:: console
$ spack install --verbose mpileaks stackstart=4
...
==> Installing mpileaks
==> Searching for binary cache of mpileaks
==> Finding buildcaches in /mirror/build_cache
==> No binary for mpileaks found: installing from source
==> Using cached archive: /home/ubuntu/packaging/spack/var/spack/cache/mpileaks/mpileaks-1.0.tar.gz
==> Staging archive: /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-meufjojkxve3l7rci2mbud3faidgplto/mpileaks-1.0.tar.gz
==> Created stage in /home/ubuntu/packaging/spack/var/spack/stage/mpileaks-1.0-meufjojkxve3l7rci2mbud3faidgplto
==> No patches needed for mpileaks
==> Building mpileaks [Package]
==> Executing phase: 'install'
==> './configure' '--with-adept-utils=/home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/adept-utils-1.0.1-7tippnvo5g76wpijk7x5kwfpr3iqiaen' '--with-callpath=/home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/callpath-1.0.4-empvyxdkc4j4pwg7gznwhbiumruey66x' '--prefix=/home/ubuntu/packaging/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/mpileaks-1.0-meufjojkxve3l7rci2mbud3faidgplto' '--with-stack-start-c=4' '--with-stack-start-fortran=4'
---------------
The Spec Object
---------------
This tutorial has glossed over a few important features, which weren't
too relevant for mpileaks but may be useful for other packages. There
were several places we references the ``self.spec`` object. This is a
powerful class for querying information about what we're building. For
example, you could use the spec to query information about how a
package's dependencies were built, or what compiler was being used, or
what version of a package is being installed. Full documentation can be
found in the :ref:`packaging-guide`, but here's some quick snippets with
common queries:
- Am I building ``mpileaks`` version ``1.1`` or greater?
.. code-block:: python
if self.spec.satisfies('@1.1:'):
# Do things needed for 1.1+
- Is ``openmpi`` the MPI I'm building with?
.. code-block:: python
if self.spec['mpi'].name == 'openmpi':
# Do openmpi things
- Am I building with ``gcc`` version less than ``5.0.0``:
.. code-block:: python
if self.spec.satisfies('%gcc@:5.0.0'):
# Add arguments specific to gcc's earlier than 5.0.0
- Am I built with the ``debug`` variant:
.. code-block:: python
if self.spec.satisfies('+debug'):
# Add -g option to configure flags
- Is my ``dyninst`` dependency greater than version ``8.0``?
.. code-block:: python
if self.spec['dyninst'].satisfies('@8.0:'):
# Use newest dyninst options
More examples can be found in the thousands of packages already added to
Spack in ``$SPACK_ROOT/var/spack/repos/builtin/packages``.
Good Luck!

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
@@ -437,11 +437,23 @@ Filesystem views offer an alternative to environment modules, another
way to assemble packages in a useful way and load them into a user's
environment.
A filesystem view is a single directory tree that is the union of the
directory hierarchies of a number of installed packages; it is similar
to the directory hiearchy that might exist under ``/usr/local``. The
files of the view's installed packages are brought into the view by
symbolic or hard links, referencing the original Spack installation.
A single-prefix filesystem view is a single directory tree that is the
union of the directory hierarchies of a number of installed packages;
it is similar to the directory hiearchy that might exist under
``/usr/local``. The files of the view's installed packages are
brought into the view by symbolic or hard links, referencing the
original Spack installation.
A combinatorial filesystem view can contain more software than a
single-prefix view. Combinatorial filesystem views are created by
defining a projection for each spec or set of specs. The syntax for
this will be discussed in the section for the ``spack view`` command
under `adding_projections_to_views`_.
The projection for a spec or set of specs specifies the naming scheme
for the directory structure under the root of the view into which the
package will be linked. For example, the spec ``zlib@1.2.8%gcc@4.4.7``
could be projected to ``MYVIEW/zlib-1.2.8-gcc``.
When software is built and installed, absolute paths are frequently
"baked into" the software, making it non-relocatable. This happens
@@ -507,6 +519,51 @@ files in the ``cmake`` package while retaining its dependencies.
When packages are removed from a view, empty directories are
purged.
.. _adding_projections_to_views:
""""""""""""""""""""""""""""
Controlling View Projections
""""""""""""""""""""""""""""
The default projection into a view is to link every package into the
root of the view. This can be changed by adding a ``projections.yaml``
configuration file to the view. The projection configuration file for
a view located at ``/my/view`` is stored in
``/my/view/.spack/projections.yaml``.
When creating a view, the projection configuration file can also be
specified from the command line using the ``--projection-file`` option
to the ``spack view`` command.
The projections configuration file is a mapping of partial specs to
spec format strings, as shown in the example below.
.. code-block:: yaml
projections:
zlib: {name}-{version}
^mpi: {name}-{version}/{^mpi.name}-{^mpi.version}-{compiler.name}-{compiler.version}
all: {name}-{version}/{compiler.name}-{compiler.version}
The entries in the projections configuration file must all be either
specs or the keyword ``all``. For each spec, the projection used will
be the first non-``all`` entry that the spec satisfies, or ``all`` if
there is an entry for ``all`` and no other entry is satisfied by the
spec. Where the keyword ``all`` appears in the file does not
matter. Given the example above, any spec satisfying ``zlib@1.2.8``
will be linked into ``/my/view/zlib-1.2.8/``, any spec satisfying
``hdf5@1.8.10+mpi %gcc@4.9.3 ^mvapich2@2.2`` will be linked into
``/my/view/hdf5-1.8.10/mvapich2-2.2-gcc-4.9.3``, and any spec
satisfying ``hdf5@1.8.10~mpi %gcc@4.9.3`` will be linked into
``/my/view/hdf5-1.8.10/gcc-4.9.3``.
If the keyword ``all`` does not appear in the projections
configuration file, any spec that does not satisfy any entry in the
file will be linked into the root of the view as in a single-prefix
view. Any entries that appear below the keyword ``all`` in the
projections configuration file will not be used, as all specs will use
the projection under ``all`` before reaching those entries.
""""""""""""""""""
Fine-Grain Control
""""""""""""""""""
@@ -1437,4 +1494,3 @@ Disadvantages:
2. Although patches of a few lines work OK, large patch files can be
hard to create and maintain.

Some files were not shown because too many files have changed in this diff Show More