Compare commits

...

1315 Commits

Author SHA1 Message Date
Todd Gamblin
e2b1737a42 update CHANGELOG.md for 0.14.1 2020-03-20 12:29:44 -07:00
Todd Gamblin
ff0abb9838 version bump: 0.14.1 2020-03-20 12:29:36 -07:00
Greg Becker
3826cdf139 multiprocessing: allow Spack to run uninterrupted in background (#14682)
Spack currently cannot run as a background process uninterrupted because some of the logging functions used in the install method (especially to create the dynamic verbosity toggle with the v key) cause the OS to issue a SIGTTOU to Spack when it's backgrounded.

This PR puts the necessary gatekeeping in place so that Spack doesn't do anything that will cause a signal to stop the process when operating as a background process.
2020-03-20 12:23:55 -07:00
Greg Becker
30b4704522 Cray bugfix: TERM missing while reading default target (#15381)
Bug: Spack hangs on some Cray machines

Reason: The TERM environment variable is necessary to run bash -lc "echo $CRAY_CPU_TARGET", but we run that command within env -i, which wipes the environment.

Fix: Manually forward the TERM environment variable to env -i /bin/bash -lc "echo $CRAY_CPU_TARGET"
2020-03-20 11:47:10 -07:00
Kai Germaschewski
09e13cf7cf Upstreams: don't write metadata directory to upstream DB (#15526)
When trying to use an upstream Spack repository, as of f2aca86 Spack
was attempting to write to the upstream DB based on a new metadata
directory added in that commit. Upstream DBs are read-only, so this
should not occur.

This adds a check to prevent Spack from writing to the upstream DB
2020-03-20 11:46:23 -07:00
Massimiliano Culpo
296d58ef6b Creating versions from urls doesn't modify class attributes (#15452)
fixes #15449

Before this PR a call to pkg.url_for_version was modifying
class attributes determining different results for subsequents
calls and an error when the urls was empty.
2020-03-20 11:45:40 -07:00
Greg Becker
ec720bf28d bugfix: fix install_missing_compilers option bug from v0.14.0 (#15416)
* bugfix: ensure bootstrapped compilers built before packages using the compiler
2020-03-20 11:44:59 -07:00
Todd Gamblin
1e42f0a545 bugfix: installer.py shouldn't be executable (#15386)
This is a minor permission fix on the new installer.py introduced in #13100.
2020-03-20 11:44:23 -07:00
Patrick Gartung
62683eb4bf Add function replace_prefix_nullterm for use on mach-o rpaths. (#15347)
This recovers the old behavior of replace_prefix_bin that was
modified to work with elf binaries by prefixing os.sep to new prefix
until length is the same as old prefix.
2020-03-20 11:43:54 -07:00
Massimiliano Culpo
901bed48ec ArchSpec: fix semantics of satisfies when not concrete and strict is true (#15319) 2020-03-20 11:42:22 -07:00
Adam J. Stewart
cc8d9eee8e suite-sparse: fix installation for v5.X (#15326)
fixes #15184

GraphBLAS depends on m4 according to CMake error message
Do not use INSTALL= when compiling the library
2020-03-20 11:41:59 -07:00
Tamara Dahlgren
1c8f792bb5 testing: increase installer coverage (#15237) 2020-03-20 11:40:52 -07:00
Tamara Dahlgren
9a1ce36e44 bugfix: resolve undefined source_pkg_dir failure (#15339) 2020-03-20 11:40:39 -07:00
Massimiliano Culpo
59a7963785 Bugfix: resolve StopIteration message attribute failure (#15341)
Testing the install StopIteration exception resulted in an attribute error:

AttributeError: 'StopIteration' object has no attribute 'message'

This PR adds a unit test and resolves that error.
2020-03-20 11:39:28 -07:00
Tamara Dahlgren
733f9f8cfa Recover coverage from subprocesses during unit tests (#15354)
* Recover coverage from subprocesses during unit tests
2020-03-20 11:38:28 -07:00
Massimiliano Culpo
fa0a5e44aa Correct pytest.raises matches to match (#15346) 2020-03-20 11:35:49 -07:00
Tamara Dahlgren
5406e1f43d bugfix: Add dependents when initializing spec from yaml (#15220)
The new build process, introduced in #13100 , relies on a spec's dependents in addition to their dependencies. Loading a spec from a yaml file was not initializing the dependents.

- [x] populate dependents when loading from yaml
2020-03-20 11:34:23 -07:00
Seth R. Johnson
f3a1a8c6fe Uniquify suffixes added to module names (#14920) 2020-03-20 11:33:07 -07:00
Tamara Dahlgren
b02981f10c bugfix: ensure proper dependency handling for package-only installs (#15197)
The distributed build PR (#13100) -- did not check the install status of dependencies when using the `--only package` option so would refuse to install a package with the claim that it had uninstalled dependencies whether that was the case or not.

- [x] add install status checks for the `--only package` case.
- [x] add initial set of tests
2020-03-20 11:23:28 -07:00
Andrew W Elble
654914d53e Fix for being able to 'spack load' packages that have been renamed. (#14348)
* Fix for being able to 'spack load' packages that have been renamed.

* tests: add test for 'spack load' of a installed, but renamed/deleted package
2020-03-20 11:21:40 -07:00
Michael Kuhn
3753424a87 modules: store configure args during build (#11084)
This change stores packages' configure arguments during build and makes
use of them while refreshing module files. This fixes problems such as in
#10716.
2020-03-20 11:16:39 -07:00
Greg Becker
32a3d59bfa fetch_strategy: remove vestigial code (#15431) 2020-03-20 11:14:37 -07:00
Todd Gamblin
97d46dc36f update CHANGELOG.md for 0.14.0 2020-02-23 17:08:15 -08:00
Todd Gamblin
388960f044 version bump: 0.14.0 2020-02-23 17:08:15 -08:00
Seth R. Johnson
629c69d383 Automatically run LLDB codesign script on mac (#15169)
Newer versions of LLVM provide a one-line command to set up LLDB code
signing. Now the build will abort only if this command fails.

https://lldb.llvm.org/resources/build.html#code-signing-on-macos
2020-02-22 13:09:22 -06:00
darmac
0ea6bab984 add new package : brltty (#15161) 2020-02-22 09:02:34 -06:00
darmac
50b5e6b94b add new package : audit-userspace (#15163) 2020-02-22 09:01:27 -06:00
darmac
1a479b5e9e add new package : apachetop (#15164) 2020-02-22 09:00:55 -06:00
darmac
3104bfe93e add new package : advancecomp (#15166) 2020-02-22 08:59:26 -06:00
darmac
f961f64215 add new package : acpid (#15167) 2020-02-22 08:58:54 -06:00
darmac
9f2cee43cf lighttpd : fix pcre depends (#15168) 2020-02-22 08:58:25 -06:00
Massimiliano Culpo
82be8965f2 Emit a sensible error message if compiler's target is overly specific (#14888)
* Emit a sensible error message if compiler's target is overly specific

fixes #14798
fixes #13733

Compiler specifications require a generic architecture family as
their target. This commit improves the error message that is
displayed to users if they edit compilers.yaml and use an overly
specific name.
2020-02-21 14:50:54 -08:00
Cody Balos
16a9464b5c sundials: add version 5.1.0 and trilinos variant (#15155)
* sundials: add version 5.1.0 and trilinos variant

* sundials: add version 5.1.0 and trilinos variant
2020-02-21 14:54:27 -06:00
Robert Blake
6764a9464d Changes necessary to build lbann@develop (#15153)
* Necessary changes to get lbann develop to compile.

* Reformatting for flake8

* More flake8 changes.

* Removing redundant clara dependency.
2020-02-21 14:42:37 -06:00
Erik Schnetter
6d8e0699f4 shtools: New package (#15133)
* shtools: New package

* shtools: Convert to MakefilePackage, use Spack's generic compiler flags

* shtools: Make function location explicit
2020-02-21 14:30:25 -06:00
iarspider
0bc4a778bd Add extra version of py-jsonschema (#14993)
* Add extra version of py-jsonschema

* Update dependencies

* Update dependencies + flake8

* Add py-pyrsistent package

* Update package.py

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

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

* Update package.py

* Update package.py

* Apply suggestions from code review

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

* Apply suggestions from code review

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-21 14:29:42 -06:00
Erik Schnetter
4a5c64ab6e amrex: New version 20.02 (#15132) 2020-02-21 12:52:19 -06:00
Robert Blake
abfdabd34e Updating raja versions. (#15148) 2020-02-21 12:41:39 -06:00
Tim Haines
b399761106 Add clang compiler (#15152) 2020-02-21 12:32:55 -06:00
Nichols A. Romero
065cbf1bbe QE+QMCPACK Converter Update February 2020 (#15135)
* Add a variant to QE that suppresses upstream patching. Need in order to do ddependency patching.

* QE variant fails to build often. Set default variant to False as a user friendly change.

* QMCPACK converter patch collides with internal QE patches. Deactivate internal patches when performing dependency patching.

* Clearer description of QE patch variant that is also flake8 compliant.
2020-02-21 12:11:35 -06:00
Seth R. Johnson
08b5264607 Disable qt3d when opengl is disabled (#15149)
* Disable qt3d when opengl is disabled

* Remove `-skip qtquick3d` unless QT 5.14

Found while checking build of qt 5.14.
2020-02-21 12:11:12 -06:00
iarspider
fabd8693b9 Add extra version of py-sqlalchemy (#15109)
* Add extra version of py-sqlalchemy

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Apply suggestions from code review

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

* Update package.py

* Update package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-21 12:10:27 -06:00
Tamara Dahlgren
38fc441a36 Updated installer module copyright (#15138)
Update the copyright for `installer.py`.
2020-02-20 16:55:42 -08:00
Andrew Kamal
48375adf17 Add decentralized-internet package (#15129)
* Create package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

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

Commit suggestion

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

* Update package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-20 18:21:29 -06:00
Tamara Dahlgren
a03b252522 Restore package-related unsigned binary changes from PR 11107 (#15134)
Restore package-related unsigned binary changes from PR 11107
2020-02-20 14:03:47 -08:00
Peter Scheibel
2e387ef585 Package hashing: fix detection of directives (#14763)
The hashing logic looks for function calls that are Spack directives.
It expects that when a Spack directive is used that it is referenced
directly by name, and that the directive function is not itself
retrieved by calling another function. When the hashing logic
encountered a function call where the function was determined
dynamically, it would fail (attempting to access a name attribute
that does not happen to exist in this case).

This updates the hashing logic to filter out function calls where the
function is determined dynamically when looking for uses of Spack
directives.
2020-02-20 13:45:58 -08:00
Anthony Scemama
01bda12692 libf77zmq (#15125)
* libf77zmq

* Cleaning mkdirp

* Removed install function

* Renamed to f77-zmq

* Fixed Flake8

* Fixed Flake8
2020-02-20 15:34:25 -06:00
iarspider
c5134ff4f2 Add extra version of py-terminado (#15111)
* Add extra version of py-terminado

* Update package.py

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-20 15:30:43 -06:00
iarspider
19af86592b Add extra version of py-tornado; update dependencies (#15112)
* Add extra version of py-tornado

* Update package.py

* Update package.py

* Update package.py
2020-02-20 15:29:54 -06:00
iarspider
ea9aa2c7cb Add extra version of py-typing (#15113)
* Add extra version of py-typing

* Update package.py

* Fix typo

* Update package.py
2020-02-20 15:29:12 -06:00
iarspider
0d84ee6c68 Add extra version of py-sympy (#15110)
* Add extra version of py-sympy

* Update package.py
2020-02-20 15:28:45 -06:00
iarspider
e4968a495d Add extra version of py-widgetsnbextension (#15105)
* Add extra version of py-widgetsnbextension

* Update dependency version

* Update package.py

* Update package.py

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-20 15:28:09 -06:00
iarspider
c784799895 Add extra version of py-urllib3 (#15114)
* Add extra version of py-urllib3

* Update package.py

* Update package.py

* Update package.py

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-20 15:27:39 -06:00
iarspider
b5b19084de Add extra version of py-wheel (#15116)
* Add extra version of py-wheel

* Update package.py

* Update package.py
2020-02-20 15:26:59 -06:00
iarspider
8b72cb64dd Add extra version of vc (#15119)
* Add extra version of vc

* Update package.py

* Update package.py

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

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

* Update package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-20 15:26:07 -06:00
Patrick Gartung
dd0e18d7b8 Use get_spec in relocated _try_install_from_binary_cache (#15131)
* Use get_spec in relocated _try_install_from_binary_cache
2020-02-20 13:07:32 -08:00
Massimiliano Culpo
d1929b2ea7 Compilers require an exact match on version during concretization (#14752)
Spack now requires an exact match of the compiler version
requested by the user. A loose constraint can be given to
Spack by using a version range instead of a concrete version
(e.g. 4.5: instead of 4.5).
2020-02-20 12:20:12 -08:00
Seth R. Johnson
a1e3a1653a Mark binutils-related conflicts (#15075)
* Mark conflicts with binutils on darwin

* Explicitly require binutils bootstrapping and mark conflict with nvptx

* Disable gold variant by default on darwin
2020-02-20 12:00:48 -06:00
snehring
f5b5036ad5 adding package igv (#15096)
* igv: adding package igv

* removing some remaining initial boilerplate

* changing path construction to be more correct

* adding in type for java dep, also forgot about prefix.bin etc
2020-02-20 11:45:57 -06:00
iarspider
40410102d2 Add extra version of py-werkzeug (#15115) 2020-02-20 11:35:28 -06:00
iarspider
b538885b08 Add extra version of py-wrapt (#15117) 2020-02-20 11:31:53 -06:00
iarspider
d9b8a9a8b3 Add extra version of py-zipp (#15118)
* Add extra version of py-zipp

* Update package.py
2020-02-20 11:31:01 -06:00
iarspider
545c436d33 Add extra version of xrootd (#15124) 2020-02-20 10:55:37 -06:00
iarspider
0ea7b83e71 Add extra version of py-setuptools (#15106) 2020-02-20 09:58:19 -06:00
iarspider
186ca13cf0 Add extra version of vecgeom (#15121) 2020-02-20 09:57:33 -06:00
iarspider
674c4379ee Add extra version of xapian-core (#15122) 2020-02-20 09:57:07 -06:00
iarspider
308a6bc601 Add extra version of xerces-c (#15123) 2020-02-20 09:56:47 -06:00
iarspider
43f8e9a260 Add extra version of prometheus-client (#15067)
* Add extra version of py-prometheus-client

* Update package.py

* Update package.py
2020-02-20 09:55:39 -06:00
iarspider
98895297b5 Add extra version of py-py4j (#15065)
* Add extra version of py-py4j

* Add test dependencies

* Update package.py
2020-02-20 09:55:15 -06:00
iarspider
64887e4821 Add extra version of py-sip (#15108) 2020-02-20 09:53:38 -06:00
iarspider
4e2a5388ac Add extra version of py-qtconsole (#15083)
* Add extra version of py-qtconsole

* Update package.py

* Update package.py
2020-02-20 09:53:04 -06:00
iarspider
9a5fa90c25 Add extra version of py-pyshp (#15072)
* Add extra version of py-pyshp

* Update package.py
2020-02-20 09:52:23 -06:00
Anthony Scemama
d98b98aae6 Package for IRPF90 (#15076)
* Added IRPF90 package

* PEP8

* SHA256

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-20 09:50:21 -06:00
iarspider
4d62dda17a Add extra version of py-multiprocess (#15043)
* Add extra version of py-multiprocess

* Update dependency version

* Add url_for_version

* Flake-8

* Update package.py
2020-02-19 23:11:49 -06:00
iarspider
a02aadb4db Add extra version of py-packaging (#15047)
* Add extra version of py-packaging

* Update py-packaging

`attrs` dependency was only in 19.1
2020-02-19 23:09:45 -06:00
Dr. Christian Tacke
22a56a89c7 Use shutil.copy2 in install_tree (#15058)
Sometimes one needs to preserve the (relative order) of
mtimes on installed files.  So it's better to just copy
over all the metadata from the source tree to the install
tree. If permissions need fixing, that will be done anyway
afterwards.

One major use case are resource()s:
They're unpacked in one place and then copied to their
final place using install_tree(). If the resource is a
source tree using autoconf/automake, resetting mtimes
uncorrectly might force unwanted autoconf/etc calls.
2020-02-19 23:09:26 -06:00
iarspider
a47ab9c6b2 Add extra version of py-psutil (#15063)
* Add extra version of py-psutil

* Add optional dependency on enum34

* Update package.py

* Remove unused enum variant
2020-02-19 23:09:07 -06:00
iarspider
ef9ab2ebc4 Add extra version of py-ptyprocess (#15064) 2020-02-19 23:08:30 -06:00
iarspider
0be09abd9c Add extra version of py-pylint (#15068)
* Add extra version of py-pylint

* Update dependencies
2020-02-19 23:04:11 -06:00
Dr. Christian Tacke
66c3f89b78 libfabric: Always install fabtests (#15081)
libfabric used to install fabtests only when installed
using --test. fabtests has tools that are useful on a
running system, so they should be installed always.

* Rewrote the build/install part to always install
  fabtests alongside libfabric.
* Updated a few fabtests resources.
* Updated the test related stuff. Works for most versions
  now.
* Include tcp and udp fabrics so that the test suite works.
2020-02-19 22:59:16 -06:00
iarspider
47e8084fab Add extra version of py-python-gitlab (#15074)
* Add extra version of py-python-gitlab

* Update dependency version
2020-02-19 22:56:10 -06:00
iarspider
d9d863330b Add extra version of py-rsa (#15084) 2020-02-19 22:55:12 -06:00
iarspider
e258326133 Add extra version of py-scandir (#15085) 2020-02-19 22:54:07 -06:00
Adam J. Stewart
7a60a04402 Docs: configure_args -> cmake_args (#15102) 2020-02-19 22:48:56 -06:00
Mark W. Krentel
9b221d26b8 hpctoolkit: adjust libunwind dependency (#15099)
Change hpctoolkit's dependency on libunwind from 2018.10.12 to 1.4:.
In libunwind, 2018.10.12 is going away in favor of 1.4-rc1 (they're
nearly identical commits).

Remove the 'gpu' version.  This was a temporary branch that is now
folded into master.
2020-02-19 18:42:51 -06:00
Glenn Johnson
4cd1a5660e py-notebook: make py-setuptools a run dependency (#15095)
* py-notebook: make py-setuptools a run dependency

The py-setuptools dependency in py-notebook needs to be a run
dependency. The following message is received if it is not in the run
environment.

Traceback (most recent call last):  File "/opt/ssoft/apps/2020.1/linu
x-centos7-sandybridge/gcc-9.2.0/py-notebook-6.0.1-6usbn4c/bin/jupyter-notebook",
line 6, in <module>
    from pkg_resources import load_entry_point
Module NotFoundError: No module named 'pkg_resources'

* Remove extraneous whitespace
2020-02-19 18:41:27 -06:00
Oliver Breitwieser
65133daad7 Fix relocate.mime_type if slashes in subtype (#11788)
If the mimetype returned from `file -h -b --mime-type` contains slashes
in its subtype, the tuple returned from `spack.relocate.mime_type` will
have a size larger than two, which leads to errors.

Change-Id: I31de477e69f114ffdc9ae122d00c573f5f749dbb
2020-02-19 17:30:17 -06:00
iarspider
8825335056 Add extra version of py-scikit-learn (#15087) 2020-02-19 14:51:25 -06:00
iarspider
d1cbc14022 Add extra version of py-prompt-toolkit (#15062) 2020-02-19 14:50:30 -06:00
iarspider
f4d91cc3ec Add extra version of py-pickleshare (#15059)
* Add extra version of py-pickleshare

* Fix dependencies

* Flake-8
2020-02-19 13:37:36 -06:00
iarspider
c969fffbf0 Add extra version of py-pillow (#15060) 2020-02-19 13:35:22 -06:00
iarspider
1d986c3790 Add extra version of py-pip (#15061) 2020-02-19 13:34:56 -06:00
iarspider
f9b857f1b0 Add extra version of py-pyasn1 (#15066) 2020-02-19 13:32:23 -06:00
iarspider
3331b70f20 Add extra version of py-pyparsing (#15069) 2020-02-19 13:29:43 -06:00
iarspider
0c8738a860 Add extra version of py-pyproj (#15070) 2020-02-19 13:28:56 -06:00
iarspider
31f9b66e18 Add extra version of py-pyqt5 (#15071) 2020-02-19 13:28:24 -06:00
iarspider
dc46e219d1 Add extra version of py-pytest (#15073) 2020-02-19 13:26:18 -06:00
iarspider
129256de52 Add extra version of py-pytz (#15077) 2020-02-19 13:25:45 -06:00
iarspider
44c01e6b70 Add extra version of py-pyyaml (#15078) 2020-02-19 13:25:23 -06:00
iarspider
f46f238a33 Add extra version of py-jedi (#14990)
* Add extra version of py-jedi

* Update package.py

* Update package.py

Correct dependency types

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

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

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

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

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

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

* Add py-parso package

* Remove boilerplate from py-parso

* Flake-8

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-19 13:01:48 -06:00
iarspider
d3b1248c2d Add extra version of py-isort (#14988)
* Add extra version of py-isort

* Update package.py

* Update package.py

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

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

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

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

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-19 12:59:45 -06:00
iarspider
eac6c53afb Add extra version of py-dask; add new variant and dependencies (#14973)
* Add extra version of py-dask

* Update package.py

* Add extra dependencies for py-dask+distributed

* Update package.py

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

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

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

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

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

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

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

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

* Update package.py

* Update package.py

* Update package.py

* Update package.py

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

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

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

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

* Update package.py

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

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

* Update package.py

* Flake-8

* Add patch step for py-distributed

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-19 12:59:03 -06:00
iarspider
e9862671c9 Add extra version of py-pyzmq (#15080) 2020-02-19 12:56:57 -06:00
Seth R. Johnson
2dac7b60a9 Fix gcc 8.3 build on macOS 10.14 (#15089) 2020-02-19 12:50:32 -06:00
Patrick Gartung
14025e89f6 Buildcache: join rpaths returned by get_existing_elf_rpaths with ':'. (#15086)
This reproduces the behavior expected by patchelf_is_relocatable test.
2020-02-19 11:41:02 -06:00
Tamara Dahlgren
f2aca86502 Distributed builds (#13100)
Fixes #9394
Closes #13217.

## Background
Spack provides the ability to enable/disable parallel builds through two options: package `parallel` and configuration `build_jobs`.  This PR changes the algorithm to allow multiple, simultaneous processes to coordinate the installation of the same spec (and specs with overlapping dependencies.).

The `parallel` (boolean) property sets the default for its package though the value can be overridden in the `install` method.

Spack's current parallel builds are limited to build tools supporting `jobs` arguments (e.g., `Makefiles`).  The number of jobs actually used is calculated as`min(config:build_jobs, # cores, 16)`, which can be overridden in the package or on the command line (i.e., `spack install -j <# jobs>`).

This PR adds support for distributed (single- and multi-node) parallel builds.  The goals of this work include improving the efficiency of installing packages with many dependencies and reducing the repetition associated with concurrent installations of (dependency) packages.

## Approach
### File System Locks
Coordination between concurrent installs of overlapping packages to a Spack instance is accomplished through bottom-up dependency DAG processing and file system locks.  The runs can be a combination of interactive and batch processes affecting the same file system.  Exclusive prefix locks are required to install a package while shared prefix locks are required to check if the package is installed.

Failures are communicated through a separate exclusive prefix failure lock, for concurrent processes, combined with a persistent store, for separate, related build processes.  The resulting file contains the failing spec to facilitate manual debugging.

### Priority Queue
Management of dependency builds changed from reliance on recursion to use of a priority queue where the priority of a spec is based on the number of its remaining uninstalled dependencies.  

Using a queue required a change to dependency build exception handling with the most visible issue being that the `install` method *must* install something in the prefix.  Consequently, packages can no longer get away with an install method consisting of `pass`, for example.

## Caveats
- This still only parallelizes a single-rooted build.  Multi-rooted installs (e.g., for environments) are TBD in a future PR.

Tasks:
- [x] Adjust package lock timeout to correspond to value used in the demo
- [x] Adjust database lock timeout to reduce contention on startup of concurrent
    `spack install <spec>` calls
- [x] Replace (test) package's `install: pass` methods with file creation since post-install 
    `sanity_check_prefix` will otherwise error out with `Install failed .. Nothing was installed!`
- [x] Resolve remaining existing test failures
- [x] Respond to alalazo's initial feedback
- [x] Remove `bin/demo-locks.py`
- [x] Add new tests to address new coverage issues
- [x] Replace built-in package's `def install(..): pass` to "install" something
    (i.e., only `apple-libunwind`)
- [x] Increase code coverage
2020-02-19 00:04:22 -08:00
Nichols A. Romero
2f4881d582 Add latest 3.9.x releases QMCPACK (#15056) 2020-02-18 23:50:07 -06:00
Kai Torben Ohlhus
26ad754f42 octave: enable 64-bit BLAS builds. (#15035)
* octave: enable 64-bit BLAS builds.

Perform necessary actions [as described in the manual](https://octave.org/doc/v5.2.0/Compiling-Octave-with-64_002dbit-Indexing.html).

* Update package.py
2020-02-18 23:49:27 -06:00
noguchi-k
4c215d1fed modern-wheel: add virtual destructor to BaseMultiParms class (#14899)
* modern-wheel: add virtual destructor

* modern-wheel: add maintainers
2020-02-18 23:48:46 -06:00
Tyler Reddy
a92543803c ENH: add catch2 CMake install (#15008)
* ENH: add catch2 CMake install

* add a variant allowing catch2 to be installed
via CMake, which is useful for generating a .cmake
config file for consumption by other projects

* Catch2: Simplify Package

- CMake install is also single-header for new releases
- testing triggered by Spack's test mechanism
- default to CMake build (better than simple copy, which is
  just for old releases to be installed)

* Catch: Remove Variant

We can control all installs with CMake to be quick and complete.
Old versions prior to 1.7.0 will be manually installed, as the
`make install` target is missing in those.
Releases 1.7.0-1.9.3 do not expose control over test builds.

* openPMD-api: Catch Lost single_header

... variant is gone :)

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-02-18 23:48:24 -06:00
eugeneswalker
0ea220db83 slate needs mercurial for build (#15055) 2020-02-18 15:26:31 -08:00
Hadrien G
11340a332d [hepmc] Finish the HepMC3 spackage update (#15036)
* Finish the HepMC3 spackage update

- Update CMake requirement per latest master
- Account for Python variant, add python dependency if used
- Account for ROOT I/O variant, add ROOT dependency if used

* Please flake8
2020-02-18 16:04:59 -06:00
Glenn Johnson
3ee0295fb2 Update and simplify julia package (#14756)
* Update and simplify julia package

The current Spack Julia package potentially installs a few julia
packages, with the installation being controlled by variants. There are
a couple of problems with this.

First, Julia handles packages very differently from systems such as R
and Python. Julia requires write access to the repository directories in
order for user installs of packages to work. If spack installs julia
packages then there will be a repository, DEPOT_PATH, in the
installation directory. If spack is used on an individual basis this
would work but would mean that package data is written to the spack
installation directory after installation. If spack is used to provide
packages for end users then user installs of julia packages will fail
due to lack of write access to the repository in the installation
directory. It seems best for spack to just install julia without any
julia packages, and drop the configuration for those packages.

Second, having spack install package as variants seems to be counter to
how spack works for other extendable systems, like R and Python. Julia
should be an extendable package in spack but it is not clear how to make
that work. As pointed out above, installing user packages requires write
access to the julia repositories, including the one in the install
directory. Essentially, a user package installation will try to update
metadata for *all* julia repositories.  Furthermore, each of those
repositories, assuming one per package with spack, would need to have
the Project.toml files merged to present the package stack to julia.
Again, it seems best for spack to just install julia itself and not try
to install julia packages, at least at this time. A good discussion on
this can be found at

https://discourse.julialang.org/t/how-does-one-set-up-a-centralized-julia-installation/13922.

This PR does the following:

- adds versions 1.2.0 and 1.3.1
- removes variants that correspond to julia packages
- changes python to build dependency as it seems to only be needed for
  LLVM
- the new versions can use Python-3
- removes dependencies for packages
- adds a conflict statement for Intel compiler, with comment
- add a setup_build_environment method to find GCC libraries
- make formatting consistent
- adds JULIA_CPU_TARGET option to correspond with target to help with
  running julia image on hardware older than build host
- added intel build options, for when they can be used
- removed code for installing packages
- removed code for julia config that was needed for packages

Note that versions below 0.5.1 fail to build, with or without these
changes. It is not clear why that is.

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

Yes, need to use correct grammar even in the midst of numbers and symbols. Good catch!

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

* More cleanup of Julia package

This commit does more cleanup and sets more constraints.

- Removed release-0.4 and release-0.5. I am not sure if those are
  actually useful but they are quite old and there are released versions
  from the same timeframe.
- Remove the binutils variant.
- Made cmake a build dependency for versions >= 1.
- Added git as a dependency for @master.
- Limit curl dependency to released versions.
- Do not use external curl for master. When I checked, using the
  external version failed but the internal curl worked.
- Versions <= 0.5.0 need an older version of openssl.
- Set conflicts directive for cxx variant.
- Added conflicts directive for needing +mkl with Intel compiler.
- Removed configuration settings as these prevented julia from working
  properly in all cases that I looked at.

* Fix flake8 error

Remove 'import sys' that is no longer used.

* More dependency tweaks

This commit sets further version constraints on dependencies. It really
looks like julia requires its internal dependencies more over time.

- curl only up to 0.5.0
- openssl only up to 0.5.0
- override with system curl up to version 0.5.0

* Fix spec for curl certs

Only depending on curl through 0.5.0.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 15:59:09 -06:00
Patrick Gartung
6f95967e95 buildcache: Check for tar.bz2 and set tar.gz if not found (#15054)
* Check for tar.bz2 and set tar.gz if not found

* Move check for tarfile after it is extracted
2020-02-18 15:49:55 -06:00
iarspider
53238af2dc Add extra version of py-cryptography (#14975)
* Add extra version of py-cryptography

* Update package.py

* Update package.py

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

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

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

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

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

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

* Update package.py

* Flake-8

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 14:26:02 -06:00
Elsa Gonsiorowski, PhD
813bfcfcbd ROSS: v7.2.0 and branches to match (#15052) 2020-02-18 14:25:37 -06:00
Seth R. Johnson
893f76da53 Fix OpenBLAS 0.3.8 build on darwin (#15041)
* Fix OpenBLAS 0.3.8 build on darwin

See https://github.com/xianyi/OpenBLAS/issues/2431, patched in
https://github.com/xianyi/OpenBLAS/issues/2431 .

* Add references for patchfile
2020-02-18 14:23:54 -06:00
Matthias Wolf
975acd4dfb py-hpcbench: new package (#14915)
* py-hpcbench: new package

* obey the flake8

* address comments, fix versions.

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 14:21:46 -06:00
iarspider
c0bae73d2f Add extra version of py-graphviz (#14981)
* Add extra version of py-graphviz

* Update package.py

* Update package.py

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 12:56:18 -06:00
Michael Kuhn
c77b6923b8 npm: Add 6.13.7 (#15034) 2020-02-18 12:00:01 -06:00
iarspider
4bca09cc89 Add extra version of py-nbconvert (#15044) 2020-02-18 11:59:10 -06:00
iarspider
e488b36d59 Add extra version of py-pathlib2 (#15048) 2020-02-18 11:58:45 -06:00
iarspider
c8c53cc7e7 Add extra version of py-pbr (#15049) 2020-02-18 11:57:39 -06:00
iarspider
5b2d1a6a54 Add extra version of py-pexpect (#15050)
* Add extra version of py-pexpect

* Update package.py

Update dependency version
2020-02-18 11:57:08 -06:00
iarspider
74018df678 Add extra version of py-ipywidgets (#14987)
* Add extra version of py-ipywidgets

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

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

* Update package.py

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

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

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

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

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

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

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

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

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 11:55:47 -06:00
iarspider
db9ccc21b0 Add extra version of py-defusedxml (#14972)
* Add extra version of py-defusedxml

* Update package.py

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 11:50:19 -06:00
iarspider
1f54627cee Add extra version of py-logilab-common (#14997)
* Add extra version of py-logilab-common

* Update package.py

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-18 11:49:46 -06:00
iarspider
0ec908cd13 Fix allowed python versions of py-tables (#14073)
* Fix allowed python versions of py-tables

* Update package.py

* Update package.py

* I think I've finally got it

* Update package.py

* Update package.py

* Update package.py
2020-02-18 11:38:00 -06:00
iarspider
d08f53c5fb Add extra version of py-more-itertools (#15042) 2020-02-18 11:37:26 -06:00
iarspider
6f6e1a8c4a Add extra version of py-oauthlib (#15045) 2020-02-18 11:34:57 -06:00
iarspider
02f3fc6d7a Add extra version of py-owslib (#15046) 2020-02-18 11:34:30 -06:00
Greg Becker
82f76c44a0 skip gpg tests when no gpg executable (#14935)
* skip gpg tests when no gpg executable

* flake
2020-02-18 09:20:14 -08:00
Seth R. Johnson
f396106d1c Update davix versions and add version restriction for ROOT (#15038)
From ROOT cmake output:
```
-- Checking for module 'davix>=0.6.4'
--   Found davix, version 0.6.8
CMake Warning at cmake/modules/SearchInstalledSoftware.cmake:960 (message):
  Davix versions 0.6.8 to 0.7.0 have a bug and do not work with ROOT, please
  upgrade to 0.7.1 or later.
```
2020-02-18 09:31:59 -06:00
h-murai
fa28602092 an argument 'buf_size' of 'h5fget_file_image_c' should be intent(out). (#15011)
* an argument 'buf_size' of 'h5fget_file_image_c' should be intent(out).

* correct format errors

* some modifications based on the comments from the reviewer
2020-02-18 08:08:37 -06:00
noguchi-k
f95348074b pegtl: change to virtual destructor (#14939)
* pegtl: change to virtual destructor

* pegtl: fix patch
2020-02-18 08:08:10 -06:00
Matthias Wolf
86a3d58159 py-cookiecutter: new package (#14911)
* py-cookiecutter: new package

* address comments
2020-02-17 20:27:06 -06:00
Michael Kuhn
76bf5c53fa node-js: Add 12.16.0 and 13.8.0 (#15024) 2020-02-17 20:25:20 -06:00
Seth R. Johnson
1270b4d0df Fix CLHEP fetch URL and add new version (#15032) 2020-02-17 20:24:33 -06:00
Adam J. Stewart
342200774b spack extensions prints list of extendable packages (#14473)
* spack extensions prints list of extendable packages

* Update tab completion scripts
2020-02-17 17:41:47 -06:00
Adam J. Stewart
9f89dce52f Fix mercurial certificate finding, add latest version (#15026) 2020-02-17 17:41:30 -06:00
iarspider
1d7fc47672 Add new version of cairo (#14941)
* Add new version of cairo

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-17 17:41:07 -06:00
iarspider
80123e0d1a Add new version of ccache; update URL (#14942)
* Add new version of ccache; update URL

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-17 17:40:34 -06:00
iarspider
21156e6243 Add new version of davix (#14944)
* Add new version of davix

* Update package.py
2020-02-17 17:39:50 -06:00
iarspider
5ea7031019 Add extra version of py-autopep8 (#14970)
* Add extra version of py-autopep8

* Update package.py
2020-02-17 17:39:22 -06:00
iarspider
17f19ad407 Add extra version of py-dill (#14971)
* Add extra version of py-dill

* Update package.py
2020-02-17 17:38:53 -06:00
iarspider
6c93ef5088 Add extra version of py-futures (#14979)
* Add extra version of py-futures

* Update package.py
2020-02-17 17:25:46 -06:00
eugeneswalker
8783f16e36 libcircle depends on a provider of pkgconfig for build (#15029) 2020-02-17 17:21:58 -06:00
Seth R. Johnson
921cb6c860 Qt4 patches (#15025)
* Fix patch applicability

* Combine patches for missing qt3 headers and remove krell variant

The variant should have always been applied.

* Restrict QT patches to actual applicable versions/situations

- I researched the associated patches so now their `when=` should more
  closely match when they're actually needed.
- I sorted the patch order so they're grouped by version requirement
- I renamed the patches so they're listed by version requirements
2020-02-17 17:21:31 -06:00
iarspider
ccbdd3c902 Add new version of libunwind (#14947)
* Add new version of libunwind

* Update package.py
2020-02-17 17:20:50 -06:00
wspear
30d487509b Added new default tau version: 2.29. Added explicit zlib build requir… (#15010)
* Added new default tau version: 2.29. Added explicit zlib build requirement. Set up environment to use use elf and libz

* Changed zlib to link dependency. Removed elf library path load (wasn't able to reproduce the need for this)
2020-02-17 17:19:48 -06:00
iarspider
e781d8eb72 Add extra version of py-matplotlib; fix dependency on six (#15000)
* Add extra version of py-matplotlib

* Update dependency

* Update package.py

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-17 17:02:17 -06:00
iarspider
33edadb041 Add extra version of py-iminuit (#14982)
* Add extra version of py-iminuit

* Update package.py
2020-02-17 12:35:04 -06:00
Dr. Christian Tacke
03d32c868a cmake: Fix spack install inside ctest (#14889)
Disable the CMake install tests since they break under certain testing conditions.
2020-02-17 13:26:35 -05:00
iarspider
d6e4b4773a Add extra version + variants of py-lxml (#14999)
* Add extra version of py-lxml

* Extra variants for py-lxml

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

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

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

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

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-17 12:24:59 -06:00
eugeneswalker
38c3b55f19 libnrm needs pkg-config for build (#15007) 2020-02-17 12:05:31 -06:00
Michael Kuhn
b8c2141760 go: added v1.13.8 and v1.12.17 (#15022) 2020-02-17 11:43:25 +01:00
Carson Woods
bbd256e2fe package: Add newer version of PowerAPI package (#15005)
* Add newer commit of PowerAPI package

* Update naming scheme to be easier to read
2020-02-16 21:17:07 -06:00
Sergey Kosukhin
1cc7a3533b Fix header-only installation of Boost. (#14995) 2020-02-16 15:30:32 -06:00
Adam J. Stewart
60847abf0e gdb: fix installation (#15016) 2020-02-16 08:31:29 -06:00
Seth R. Johnson
8071369ffe Use separate build directory for gzip (#14994)
* Use separate build directory for gzip

At least on mac systems (perhaps because of a case sensitivity issue?)
gzip fails to build inside the source tree:
```
config.status: linking /var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/spack-stage/s3j/spack-stage-gzip-1.10-iatwtuk2l5xgwmuh4pwu5bf27yezpydj/spack-src/GNUmakefile to GNUmakefile
config.status: executing depfiles commands
==> Executing phase: 'build'
==> [2020-02-14-09:32:45.502913] 'make' '-j12'
make: GNUmakefile: Too many levels of symbolic links
make: stat: GNUmakefile: Too many levels of symbolic links
make: *** No rule to make target `GNUmakefile'.  Stop.
```

* Simplify build directory and add gmake dependency
2020-02-16 08:31:11 -06:00
Seth R. Johnson
b9156895ec Remove unneeded dependency on gzip for libmng (#14992)
Libmng only needs gzip to compress man files for distribution, so it
builds fine without it. The spack
gzip currently fails to compile.

```
config.status: linking /var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/spack-stage/s3j/spack-stage-gzip-1.10-iatwtuk2l5xgwmuh4pwu5bf27yezpydj/spack-src/GNUmakefile to GNUmakefile
config.status: executing depfiles commands
==> Executing phase: 'build'
==> [2020-02-14-09:32:45.502913] 'make' '-j12'
make: GNUmakefile: Too many levels of symbolic links
make: stat: GNUmakefile: Too many levels of symbolic links
make: *** No rule to make target `GNUmakefile'.  Stop.
```
2020-02-16 08:30:30 -06:00
iarspider
b261b80ebd Add new version of bison (#14940) 2020-02-15 23:18:20 -06:00
iarspider
d3db3c6a2b Add new version of clhep (#14943) 2020-02-15 23:15:59 -06:00
iarspider
0dbd3b21c8 Add new version of elasticsearch (#14945) 2020-02-15 23:14:01 -06:00
iarspider
fc190f397a Add new version of expat (#14948) 2020-02-15 23:11:33 -06:00
iarspider
8624bf65f9 Add new version of fontconfig (#14949) 2020-02-15 23:11:10 -06:00
iarspider
e833ef9cce Add extra version of freetype (#14950) 2020-02-15 23:10:42 -06:00
iarspider
1b95c33c82 Add extra version of gperf (#14951) 2020-02-15 23:10:21 -06:00
iarspider
978d960158 Add extra version of HepMC (#14952) 2020-02-15 23:09:58 -06:00
iarspider
df1e9317b8 Add extra version of highfive (#14953)
* Add extra version of HepMC

* Add extra version of highfive

* Undo changes to hepmc
2020-02-15 23:09:36 -06:00
iarspider
7f9cd886f3 Add extra version of imagemagick (#14954) 2020-02-15 23:09:06 -06:00
iarspider
7d96e496b2 Add extra version of jemalloc (#14955) 2020-02-15 23:08:37 -06:00
iarspider
e75b8c1230 Add extra version of json-c (#14956) 2020-02-15 23:08:13 -06:00
iarspider
41a2a5db2c Add extra version of libgit2 (#14957) 2020-02-15 23:07:38 -06:00
iarspider
8f877fdc65 Add extra version of libsodium (#14958) 2020-02-15 23:07:12 -06:00
iarspider
bab407a28a Add extra version of libsvm (#14959) 2020-02-15 23:06:48 -06:00
iarspider
8308d2d59d Add extra version of libxkbcommon (#14961) 2020-02-15 23:06:17 -06:00
iarspider
a6dc3fe40b Add extra version of nlohmann-json (#14962) 2020-02-15 23:05:54 -06:00
iarspider
12ec8e340f Add extra version of pcre (#14963) 2020-02-15 23:05:30 -06:00
iarspider
f547f2ce10 Add extra version of pixman (#14964) 2020-02-15 23:05:09 -06:00
iarspider
00de09268e Add extra version of py-absl-py (#14965) 2020-02-15 23:04:40 -06:00
iarspider
ee573540a0 Add extra version of py-asn1crypto (#14967) 2020-02-15 23:03:17 -06:00
iarspider
d7de6cf055 Add extra version of py-arrow (#14966) 2020-02-15 23:02:21 -06:00
iarspider
ad7c11c482 Add extra version of py-astroid (#14968) 2020-02-15 23:01:53 -06:00
iarspider
ff71844bf6 Add extra version of py-attrs (#14969) 2020-02-15 23:01:24 -06:00
Nichols A. Romero
98c4d15655 Flang - Support libomptarget offload to NVidia GPU (#15015)
* Modify Flang NVidia GPU variant to make use of built-in CudaPackage

* Add OpenMP Offload patch if March 2019 compiler is selected.

* Flang parallel build has a race condition.

* llvm-flang now uses built-in CudaPackage.

* Add variant for different build releases.

* Fix OpenMP target offload for NVidia GPUs.

* Additional commong flags that are needed with comments.

* NVidia BC required for libomp target requires special treatment. Use clang built in previous step to re-compile libomptarget.
2020-02-15 22:56:58 -06:00
iarspider
4f3287a9dc Add extra version of py-cython (#14974) 2020-02-15 22:52:36 -06:00
iarspider
45ee708596 Add extra version of py-coverage (#14976) 2020-02-15 22:48:10 -06:00
iarspider
959d9d2365 Add extra version of py-certifi (#14977) 2020-02-15 22:47:28 -06:00
iarspider
7c88bb937d Add extra version of py-backports-abc (#14978) 2020-02-15 22:47:05 -06:00
iarspider
c92201e6ab Add extra version of py-decorator (#14980) 2020-02-15 22:44:28 -06:00
iarspider
bcccf0d4e7 Add extra version of py-importlib-metadata (#14983) 2020-02-15 22:35:47 -06:00
iarspider
8313de5be0 Add extra version of py-ipaddress (#14984) 2020-02-15 22:35:23 -06:00
iarspider
4db0eb4917 Add extra version of py-ipykernel (#14985) 2020-02-15 22:33:04 -06:00
iarspider
8b5cc1e76f Add extra version of py-ipython (#14986) 2020-02-15 22:32:28 -06:00
iarspider
bff3a087ec Add extra version of py-jinja2 (#14989) 2020-02-15 22:27:53 -06:00
iarspider
bd24d53ceb Add extra version of py-jpype1; add numpy as optional (variant) dependency (#14991)
* Add extra version of py-jpype1

* Add numpy as optional (variant) dependency
2020-02-15 22:24:44 -06:00
iarspider
2c0bfd071f Add extra version of py-jupyter-client (#14996) 2020-02-15 22:21:48 -06:00
Glenn Johnson
e5e6791d97 package r-readbitmap Change jpeg dependency (#15004)
This PR corrects the jpeg dependency in r-readbitmap to use the jpeg
virtual dependency.
2020-02-15 21:50:54 -06:00
Justin S
4a7e4655ac mafft: add 7.453 (#15006) 2020-02-15 21:48:26 -06:00
Matthias Diener
3f5d889d2b cloc: add version 1.84 (#15012) 2020-02-15 21:34:11 -06:00
Keita Iwabuchi
b688bb549b Add a new package: Metall (#14903)
* Add a new package: Metall

* Fix errors in metall/package.py

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

Change to https style URL

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

* Update in metall/package.py. Change Metall to depend on Boost always

* Update in metall/package.py. Change to install Boost with the default variants

* Update metall/package.py. Removed a comment

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-15 00:34:32 -06:00
Patrick Gartung
baafa7ec84 Buildcache creation/extraction use temp tarfile to preserve hardlinks during copy to/from prefix. (#15003)
* Buildcache creation change the way prefix is copied to workdir.
* install_tree copies hardlinked files
* tarfile creates hardlinked files on extraction.
* create a temporary tarfile from prefix and extract it to workdir

* Use temp tarfile to move workdir to prefix to preserve hardlinks instead of copying
2020-02-14 16:10:28 -06:00
Scott Wittenburg
3c28e72d2f cuda: add libxml2 as a dependency for newer versions (#14758) 2020-02-14 12:13:30 -06:00
Paul
e65aa7569e docs: fix typo in arch in build settings examples (#14998) 2020-02-14 19:06:10 +01:00
Matthias Wolf
978a3bb7ef py-whichcraft: new package (#14907)
* py-whichcraft: new package

* address comment
2020-02-14 08:00:58 -06:00
Massimiliano Culpo
8c05221bc6 spack compiler info: quick fix for failing command (#14928)
fixes #14927
2020-02-13 20:32:55 -06:00
Sajid Ali
c607288a7c fix env vars before install (#14575) 2020-02-13 20:16:34 -06:00
Brian Van Essen
d524abad20 Updated both cub and nccl versions. Fixed a bug in the cub download (#14852)
url.
2020-02-13 20:10:02 -06:00
Adam J. Stewart
e0dfc3ddbf Fix shell detection: zsh5 -> zsh (#14858) 2020-02-13 20:07:09 -06:00
Glenn Johnson
8beb42e749 New package: r-codex (#14869)
This PR adds the r-codex package.

- new package: r-bsgenome-hsapiens-ucsc-hg19
2020-02-13 20:00:39 -06:00
Kai Torben Ohlhus
4fa29ceb50 openblas: add variant +consistentFPCSR (#14876)
Add the OpenBLAS variant `+consistentFPCSR`, by default `False`, which adds the compile definition `CONSISTENT_FPCSR=1` as documented in  OpenBLAS `Makefile.rule`.
2020-02-13 19:59:34 -06:00
Dr. Christian Tacke
690ed2fe98 [rsync] Use popt and zlib (#14755)
popt and zlib are available as spack packages.
So use them instead of building internal ones.
2020-02-13 19:55:41 -06:00
Glenn Johnson
7996bc809a New package: r-exomedepth (#14884)
This PR adds the r-exomedepth package and r-aod as a dependency.
2020-02-13 19:52:43 -06:00
Glenn Johnson
580c8f5b7e New package: r-exomecopy (#14885) 2020-02-13 19:51:18 -06:00
Glenn Johnson
46ae3f0570 New package: r-fdb-infiniummethylation-hg18 (#14890)
This PR adds the r-fdb-infiniummethylation-hg18 package and the needed
dependency of r-txdb-hsapiens-ucsc-hg18-knowngene.
2020-02-13 19:49:24 -06:00
Glenn Johnson
725336ee48 Update and fix the r-rhtslib package (#14863)
This PR adds an updated version to the r-rhtslib package as well as fix
the build.

- add patches to use compiler flags from R
- add variables for bzip2 and xz dependencies
- use the spack Makeconf file when building the in-tree htslib
- make patchelf available to allow R to remove reference to temporary
  installation directory in htslib shared object
- Add new version of r-rsamtools as the r-rsamtools and r-rhtlib
  packages are closely paired.
2020-02-13 19:47:37 -06:00
Seth R. Johnson
0d0ab60150 Patch silo for %clang@9 (#14892) 2020-02-13 19:45:55 -06:00
Alec Thomas
9046deae80 Add missing dep to git. (#14895)
As discussed in:
 https://spackpm.slack.com/archives/C5VL7V81G/p1581394270058800
2020-02-13 19:45:09 -06:00
asmaahassan90
413de215b2 Fix run environment (#14908)
* Fix run environment

Trying to install Avizo, i get "Error: NameError: name 'run_env' is not defined". Correcting it to be just "env"

* fix identation
2020-02-13 19:37:39 -06:00
Mark W. Krentel
1c5f72dbaa intel-tbb: update to new tar file names for 2020 versions (#14924)
Starting with 2020, the tar files are named v2020.0.tar.gz,
v2020.1.tar.gz, etc, not 2020_U1.tar.gz.

https://github.com/intel/tbb/releases

The previous commit (7a10478708) fixed the checksum mismatch, but
didn't update url_for_version (my bad).
2020-02-13 19:30:10 -06:00
Cameron Stanavige
4b7f057a4b unifyfs: remove numa dependency (#14925)
UnifyFS no longer has an option to depend on numa. This removes the
numa variant, dependency, and associated conflict.

This commit also

- renames the `pmpi` variant to the more appropriate `auto-mount`

- changes the preferred version to the most recent release
2020-02-13 19:28:33 -06:00
Matthias Diener
03ce5effa1 charmpp: add version 6.10.0, switch to https for download (#14930) 2020-02-13 19:26:26 -06:00
Matthias Diener
eb88dfee9a byobu: add version 5.131 (#14932) 2020-02-13 19:23:25 -06:00
eugeneswalker
1d25564230 libcircle depends on pkg-config for build (#14933) 2020-02-13 19:22:54 -06:00
Patrick Gartung
4dc67b79aa Replace direct call to patchelf with get_existing_elf_rpaths which handles exceptions. (#14929)
* Replace direct call to patchelf with get_existing_elf_rpaths which handles exceptions.

* Remove unused patchelf definition.

* Convert to set.
2020-02-13 11:34:20 -06:00
Massimiliano Culpo
681ad2ac44 hepmc: fixed wrong sha256 for latest versions (#14926) 2020-02-13 07:49:21 -06:00
Matthias Wolf
268f42bf7e py-binaryornot: new package (#14906) 2020-02-13 11:42:29 +01:00
Matthias Wolf
856734b804 py-poyo: new package (#14909) 2020-02-13 10:07:29 +01:00
Matthias Wolf
7252066a32 py-jinja2-time: new package (#14910) 2020-02-13 10:07:07 +01:00
Matthias Wolf
06c85ea5bf py-elasticsearch: added v7.5.1 and v6.4.0 (#14913) 2020-02-13 10:06:01 +01:00
Matthias Wolf
3dd844e597 py-clustershell: new package (#14914) 2020-02-13 10:03:45 +01:00
Matthias Wolf
fb482ae0c9 py-magic: new package (#14912) 2020-02-13 10:03:18 +01:00
Matthias Diener
a337d27874 gdb: added v9.1 (#14919) 2020-02-13 09:51:04 +01:00
Federico Ficarelli
de84bd3f24 hipsycl: new package and new 'sycl' virtual package (#14051) 2020-02-13 07:32:39 +01:00
eugeneswalker
5243d270d4 bmi depends on automake for build 2020-02-12 21:58:35 -08:00
noguchi-k
38303a6a79 macsio: cast JsonGetInt from int to unsigned int (#14736)
* macsio: cast from int to unsigned int

* macsio: apply a patch only when version is 1.1
2020-02-12 20:13:26 -06:00
Todd Gamblin
a7b43f1015 spack python: add -m option to run modules as scripts
It's often useful to run a module with `python -m`, e.g.:

    python -m pyinstrument script.py

Running a python script this way was hard, though, as `spack python` did
not have a similar `-m` option.  This PR adds a `-m` option to `spack
python` so that we can do things like this:

    spack python -m pyinstrument ./test.py

This makes it easy to write a script that uses a small part of Spack and
then profile it.  Previously thee easiest way to do this was to write a
custom Spack command, which is often overkill.
2020-02-12 16:45:41 -08:00
Chuck Atkins
90f3635afd protobuf: Fix intel compiler failures. (#14916) 2020-02-12 16:21:43 -05:00
Jon Rood
7e50cec5a4 Adding Intel LLVM compiler (#13618)
* Adding Intel LLVM compiler.

* Fixing some minor issues.

* Split build environment on run environment in intel-llvm.
2020-02-12 12:30:04 -06:00
Dan Lipsa
ca66ab6901 Paraview: fix PYTHONPATH for static build. (#14648)
* Fix PYTHONPATH for static build.

* Only for the latest version.
2020-02-12 13:24:09 -05:00
Axel Huebl
3b2c534e73 openPMD-api: Build Env Fix & Dev (#14904)
- fix a missing `env.` prefix in the build environment.
- rename development branch to same name as in git
2020-02-12 10:02:01 +01:00
Axel Huebl
b5a3ee636b WarpX: master is the new develop (#14898)
WarpX removed the `dev` branch in favor of a simpler,
`master`-centric development model.
`master` is the new development branch and there is no
stable branch anymore (we use tags and release branches
instead).
2020-02-11 20:47:50 -08:00
victorusu
78ce1c7ce4 New package: ReFrame (#14737) 2020-02-11 17:51:26 -08:00
Hadrien G
c8cb480eb7 ROOT: Add Pythia8 support (#14790) 2020-02-11 17:38:22 -08:00
darmac
cf120d7441 OpenCV package: add versions 4.2.0, 4.1.2, and 4.1.1(#14814) 2020-02-11 17:34:44 -08:00
Hadrien G
947dabc356 [dd4hep] Make DDDigi work with current TBB releases (#14791)
Add patch for DDDigi's broken TBB support. The issue is fixed in
DD4hep master so the patch is only required for 1.11.0
2020-02-11 17:17:05 -08:00
Sajid Ali
2c63ea49d1 New package: libvips (#14794) 2020-02-11 17:02:39 -08:00
darmac
630611a786 libdrm: add version 2.4.100 (#14809) 2020-02-11 16:57:18 -08:00
codeandkey
78f16d703d r-truncdist: new package at 1.0-2 2020-02-11 16:52:51 -08:00
Todd Gamblin
c56c4b334d bugfix: spack -V should use working_dir() instead of git -C
- `git -C` doesn't work on git before 1.8.5
- `working_dir` gets us the same effect
2020-02-11 16:52:06 -08:00
Jen Herting
582e7ce2c8 [mono] add version 6.8.0.105 2020-02-11 16:49:35 -08:00
Scott Wittenburg
c2885990b8 Fix intel-mkl package (#14856)
* Add cpio package

* intel-mkl: Depend on cli tool needed during build
2020-02-11 16:21:49 -06:00
Seth R. Johnson
5c33f638d7 Fix QT4 platform detection for linux clang (#14891)
* Fix QT4 platform name for linux clang

* Fix clang compiler flags on QT4
2020-02-11 14:00:02 -06:00
Frédéric Simonis
e8b6c40b31 precice: add version 2.0.0 (#14842)
Added python3 dependency
Added support for new CMake variables
2020-02-11 10:06:03 +01:00
Matthias Diener
7706b76d3a unifdef: added new package (#14880) 2020-02-11 10:03:44 +01:00
Christoph Junghans
1a41ec766a heffte: added v0.2 (#14881) 2020-02-11 10:02:17 +01:00
darmac
35df75ee77 hepmc: added versions up to v3.2.0 (#14805) 2020-02-11 09:46:59 +01:00
Brian Van Essen
490508d324 Hydrogen: update dependency on aluminum (#14760)
* Hydrogen now depends on `aluminum +nccl` vs. `aluminum +mpi_cuda`
* Hydrogen: Simplify Mac OS OpenMP-detection logic
* Aluminum: Add Mac OS OpenMP-detection logic
* LBANN: depend on conduit@0.4.0: instead of conduit@master
2020-02-10 12:13:47 -08:00
Massimiliano Culpo
357786ce6b Spack find: fix queries that specify dependencies (#14757)
Fixes #10019

If multiple instances of a package were installed in a single
instance of Spack, and they differed in terms of dependencies, then
"spack find" would not distinguish specs based on their dependencies.
For example if two instances of X were installed, one with Y and one
with Z, then "spack find X ^Y" would display both instances of X.
2020-02-10 11:22:21 -08:00
Peter Scheibel
4e32505770 libedit package: add version 3.1-20191231 (#14851)
This new version of libedit can make use of an ncurses dependency
built with +termlib (which moves some symbols into a separate
libtinfo).
2020-02-10 10:44:52 -08:00
Glenn P Johnson
37a6b8d54f Fix vim build with ^ncurses+termlib
This PR will set the approriate library if ncurses is built with a
separate tinfo library.
2020-02-10 10:25:35 -08:00
darmac
c77eeca61e icedtea: added versions up to v3.9.0 (#14806) 2020-02-10 11:08:45 +01:00
Glenn Johnson
745a843911 New package: r-biomartr (#14812)
This PR creates the r-biomartr package as well as needed new packages
and updates.

- new dependency: r-philentropy
- update: r-curl
2020-02-10 11:08:04 +01:00
Hadrien G
cb3dbea198 acts-core: added v0.16.0 (#14839)
* Adapt to ACTS v0.16

* ACTS uses the DD4hep XML components nowadays
2020-02-10 11:06:56 +01:00
Glenn Johnson
8aa1eba2e0 New package: r-watermelon (#14864)
This PR creates the r-watermelon package, along with dependencies.

- new package: r-fdb-infiniummethylation-hg19
- new package: r-illuminahumanmethylation450kanno-ilmn12-hg19
- new package: r-lumi
- new package: r-methylumi
- new package: r-roc
- new package: r-txdb-hsapiens-ucsc-hg19-knowngene
- updated package: r-matrixstats, new version needed as a dependency
2020-02-10 10:49:34 +01:00
Glenn Johnson
1ed0efec7d New package: r-suppdists (#14865) 2020-02-10 10:44:17 +01:00
Glenn Johnson
bd442e884a New package: r-imager (#14866)
This PR adds the r-imager package and dependencies.

- new package: r-bmp
- new package: r-readbitmap
2020-02-10 10:44:00 +01:00
Glenn Johnson
ad914c28d7 New package: r-proj (#14872) 2020-02-10 10:43:27 +01:00
Glenn Johnson
d00a3eda6b New package: r-proj4 (#14871) 2020-02-10 10:42:32 +01:00
Glenn Johnson
22df37c328 New package: r-pscbs (#14867)
This PR adds the r-pscbs package along with new dependencies and updates.

- new package: r-aroma-light
- new package: r-r-cache
- updated package: r-r-oo
2020-02-10 10:41:56 +01:00
Glenn Johnson
716978e00c New package: r-copula (#14874)
This PR adds the r-copula package and dependencies.

- new package: r-adgoftest
- new package: r-gsl
- new package: r-pspline
- new package: r-stabledist
2020-02-10 10:40:47 +01:00
Glenn Johnson
42c829adb4 New package: r-gsalib (#14873) 2020-02-10 10:38:44 +01:00
Kai Torben Ohlhus
4d173579cb openblas: added v3.8.0 (#14875) 2020-02-10 10:35:29 +01:00
darmac
f274d89c33 xterm: added versions up to v353 (#14829) 2020-02-10 09:44:50 +01:00
darmac
85b6e3e6d4 openldap: added v2.4.49 (#14815) 2020-02-10 09:40:46 +01:00
darmac
1c5838be5c pngquant : add depency on libpng (#14836) 2020-02-10 09:39:45 +01:00
Kai Torben Ohlhus
3ba5df3763 octave: add 5.2.0 (#14868)
Add version Octave 5.2.0 including sha256.
2020-02-09 21:04:09 -06:00
Glenn Johnson
30b30e11dc New package - r-rmariadb (#14762)
* New package - r-rmariadb

This PR creates the r-rmariadb package. It also includes an update to
the r-dbi package as a newer version of that is needed.

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

Argh, copy/paste. I wish the mirror would list itself as the archive site as well, but it just mirrors that data field from CRAN site. Thanks for catching that, I will make sure to look for that in the future.

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

* Use mariadb-client

Use mariadb-client so people can set a preferred provider.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-09 19:26:31 -06:00
Todd Gamblin
6d2e6e1f4d Merge branch 'releases/v0.13' into develop 2020-02-09 15:51:39 -08:00
Mark W. Krentel
7a10478708 intel-tbb: fix sha256 sums for 2020 versions
Fixes #14850.  Commit 6b1958219 added versions 2020 and 2020.1 for
intel-tbb as part of updating several intel packages but added the
wrong sha256 sums for the github/01org repository.

Also, version 2020 is 2020, not 2020.0.

Add patch makefile-debug to restore the debug targets.
2020-02-09 12:26:38 -08:00
Dan Lipsa
e22ac814b0 Align default libxml2 settings for gettext and Python (#14795)
Python depends on gettext. Packages that depend on gettext and Python
together will encounter a concretizer bug which incorrectly detects
a constraint conflict. This sets the default value of +libxml2 in
Python to be the same as gettext so that packages which depend on
both (like mesa) can successfully concretize without adding manual
constraints.
2020-02-07 16:55:04 -08:00
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
codeandkey
3e5427078d r-evd: new package at 2.3-3 2020-02-07 14:51:24 -08:00
codeandkey
3a3a58a106 r-stargazer: new package at 5.2.2 2020-02-07 14:50:32 -08: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
Adam J. Stewart
d1d5f5f9e7 patch aws-parallelcluster so that it doesn't require enum34 (#14796)
* aws-parallelcluster always depends on enum34

* Build aws-parallelcluster without enum34

* Update homepage

* Add unit tests
2020-02-07 11:20:19 -06:00
Themos Tsikas
f685d538d8 NAG Compiler 7.0 (Build 7009) download checksum (#14840) 2020-02-07 09:33:37 -06:00
darmac
2c3e2669f2 imlib2: added v1.6.0 and v1.6.1 (#14807) 2020-02-07 14:05:50 +01:00
darmac
fd9b1fb6de libconfig: added v1.7.2 (#14808) 2020-02-07 14:04:40 +01:00
darmac
4cb8294800 lighttpd: added versions up to v1.4.55 (#14810) 2020-02-07 14:04:21 +01:00
darmac
5bfb0eb447 maven: added versions up to v3.6.3 (#14811) 2020-02-07 13:47:38 +01:00
darmac
1203134253 mysql: added v8.0.17, v8.0.18 and v8.0.19 (#14813) 2020-02-07 13:46:55 +01:00
darmac
fecb26763d pangomm: added versions up to v2.41.3 (#14816) 2020-02-07 13:43:43 +01:00
darmac
8c1845581d qwt: added v6.1.3 (#14820) 2020-02-07 13:41:30 +01:00
darmac
8c1aee1b78 skopeo: added v0.1.40 (#14824) 2020-02-07 13:30:44 +01:00
darmac
ef9cb97376 plplot: added v5.14.0 and v5.15.0 (#14817) 2020-02-07 13:30:12 +01:00
darmac
e4cac22462 qt: added v5.14.0 and v5.14.1 (#14821) 2020-02-07 13:26:14 +01:00
darmac
291c110700 rclone: added new versions up to v1.51.0 (#14822) 2020-02-07 13:23:00 +01:00
darmac
4d3bd1116c scala: added v2.12.10 and v2.13.1 (#14823) 2020-02-07 13:21:15 +01:00
darmac
7de3ea4e19 squashfs: added v4.4 (#14825) 2020-02-07 13:19:09 +01:00
darmac
710fabd68a wireshark: added new versions up to v3.2.1 (#14828) 2020-02-07 13:18:29 +01:00
darmac
f9889526f2 thrift: added v0.12.0 and v0.13.0 (#14831) 2020-02-07 13:14:16 +01:00
darmac
7d9a0fa180 hunspell : fix 1.7.0 sha256sum (#14832) 2020-02-07 13:13:22 +01:00
Oliver Breitwieser
22c9f5cbd8 Allow installing unsigned binary packages (#11107)
This commit introduces a `--no-check-signature` option for
`spack install` so that unsigned packages can be installed. It is
off by default (signatures required).
2020-02-06 18:59:16 -08:00
Figroc Chen
458c9a22bf tensorflow-serving-client: add new version 2.1.0 (#14786) 2020-02-06 12:20:55 -06:00
Matt Belhorn
b43f658c39 Adds fma and vsx features to entire power arch family. (#14759)
VSX alitvec extensions are supported by PowerISA from v2.06 (Power7+), but might
not be listed in features.

FMA has been supported by PowerISA since Power1, but might not be listed in
features.

This commit adds these features to all the power ISA family sets.
2020-02-06 16:42:05 +01:00
Robert Mijakovic
6b19582198 update version: intel packages daal, ipp, mkl-dnn, mkl, mpi, parallel… (#14783)
* update version: intel packages daal, ipp, mkl-dnn, mkl, mpi, parallel-studio, pin, tbb and makes url parameter consistent and always use single quote.

* Fixes a typo with one of the sha256 checksum..
2020-02-06 09:20:01 -06:00
Benoist LAURENT
f7e2e84647 Update package.py (#14784)
Fix download link
2020-02-06 09:18:16 -06:00
Massimiliano Culpo
759f6b6d13 Added optimized version of Blis for AMD (#14780)
The Blis package has been refactored to be able to
reuse the build logic for the fork of the project
optimized for AMD.
2020-02-06 07:58:51 -06:00
Figroc Chen
e62c82de7f grpc: added v1.25.0, v1.26.0 and v1.27.0 (#14781) 2020-02-06 13:20:37 +01:00
darmac
88289cd2c7 graphicsmagick: added versions up to v1.3.34 (#14778) 2020-02-06 11:12:10 +01:00
darmac
1a846abbe8 go: added v1.13.7 (#14777) 2020-02-06 10:54:10 +01:00
iarspider
f66f56287d geant4: add missing dependency on geant4-data (#14767) 2020-02-06 10:40:56 +01:00
darmac
f745b790f3 gnuplot: added v5.2.8 (#14776) 2020-02-06 10:34:04 +01:00
darmac
bb0b88f38a enchant: added v2.2.6 and v2.2.7 (#14775) 2020-02-06 10:33:16 +01:00
darmac
588c87c665 blis: added v0.6.1 (#14766) 2020-02-06 10:03:08 +01:00
darmac
c2460dbcd2 cln: added v1.3.5 and v1.3.6 (#14768) 2020-02-06 09:59:51 +01:00
darmac
3b38a45a76 gl2ps: added v1.4.0 (#14773) 2020-02-06 09:58:46 +01:00
darmac
29a906d20c ghostscript: added v9.27 and v9.50 (#14772) 2020-02-06 09:57:42 +01:00
darmac
0a92b54701 coreutils: added v8.30 and v8.31 (#14770) 2020-02-06 09:56:01 +01:00
darmac
2dab92742d atop: added versions up to v2.5.0 (#14765) 2020-02-06 08:51:34 +01:00
darmac
58a905ec76 ant: added versions up to v1.10.7 (#14764) 2020-02-06 08:46:13 +01:00
Glenn Johnson
1f6f812696 Update llvm, adjust dependency specs and conflicts (#14561)
This PR adds a new version of llvm and fixes the dependency specs.

- This package depends on libtinfo in all cases so change the ncurses
  dependency to reflect that
- if +lldb is in the spec but +python is not then do not build the lldb
  python support
- build lldb python support only if +python is in the spec with +lldb
- install the llvm python bindings if +python is in the spec
- install the clang python bindings if +clang and +python are in the spec
- Fixes for conflicts with ~clang
- Fix typo in conflict of compiler-rt and flang
2020-02-05 20:37:08 -06:00
Michael Kuhn
1a0c31703a acts-core package: build root with cxxstd=17 for 0.8.1 and newer (#14761)
The build fails if root uses an older C++ standard.
2020-02-05 17:45:17 -08:00
Cameron Smith
bce4bec059 PUMI package: add version 2.2.2 (#14751) 2020-02-05 17:32:35 -08:00
Themos Tsikas
ba25bb3050 NAG Compiler 6.2 (Build 6252) download checksum (#14750) 2020-02-05 08:02:46 -06:00
Seth R. Johnson
57cc7831bf qt: fix on Intel (#14748)
Follow up from #14745
2020-02-05 10:23:58 +01:00
Eisuke Kawashima
ffdde40f56 Bump Open Babel to 3 (#14738) 2020-02-04 21:05:19 -06:00
Seth R. Johnson
29a01f488c Fix QT on Intel (#14745)
- More robustly handle compiler version switching between QT4 and 5, and
  mac/linux, and gcc/intel/clang
- Remove assumption about intel linker being in path
2020-02-04 21:03:47 -06:00
Seth R. Johnson
731148e0e1 Use CMake for libmng package (#14747)
* Convert libmng to use CMake rather than autoconf

The autoconf script failed to recognize the intel compiler; it was
harwired to use gcc.

* Simplify cmake logic and remove unused variant
2020-02-04 19:33:33 -06:00
Seth R. Johnson
52d1f5b839 Remove python patch for inapplicable versions (#14746)
This patch was merged in to upstream python 3.7 and is fixed in 3.7.6.
2020-02-04 19:32:48 -06:00
Christoph Junghans
1974ad4e7f heffte: initial commit (#14744) 2020-02-04 15:06:03 -07:00
Jennifer Herting
d4d82281d1 [rust] added version 1.41.0 (#14742) 2020-02-04 15:11:36 -06:00
Jennifer Herting
997a0f4207 New version for mariadb and disable dtrace (#14734)
* [mariadb] added version 10.4.8

* [mariadb] disabled dtrace
2020-02-04 15:01:25 -06:00
Rao Garimella
b34e7ad28f MSTK package: add version 3.3.2 (#14689) 2020-02-04 11:15:45 -08:00
Christoph Junghans
603e2794db cray-libsci: initial commit (#14709)
* cray-libsci: initial commit
2020-02-04 10:18:20 -07:00
Massimiliano Culpo
1bbe0a1f74 abinit: fix dependency on fftw (#14739)
fixes #14578

Abinit's recipe requires double precision FFTW libraries
2020-02-04 15:29:21 +01:00
Dr. Christian Tacke
0ec9377852 pythia8: added old versions, build depend on rsync (#14740) 2020-02-04 15:27:57 +01:00
Nicolas Richart
19ff3c0f67 akantu: new package at v3.0.0 (#14685) 2020-02-04 11:04:59 +01:00
Andrew W Elble
4accc78409 Git fetching: add option to remove submodules (#14370)
Add an optional 'submodules_delete' field to Git versions in Spack
packages that allows them to remove specific submodules.

For example: the nervanagpu submodule has become unavailable for the
PyTorch project (see issue 19457 at
https://github.com/pytorch/pytorch/issues/). Removing this submodule
allows 0.4.1 to build.
2020-02-03 19:02:45 -08:00
Rob Latham
7d444f08e7 update pmdk to 1.8 (#14733)
new upstream release
- notable in that it has experimental powerpc-le support (e.g. summit)
- required a new patch to disable documentation
2020-02-03 19:15:52 -06:00
Massimiliano Culpo
42633b0869 octave: mkoctfile doesn't use compiler wrappers (#14726)
* Octave: moved the short description in its own paragraph

* Octave: patch mkoctfile.in.cc to avoid using compiler wrappers

* Added a check to ensure mkoctfile works correctly
2020-02-03 15:08:44 -06:00
Adam J. Stewart
74c8f25826 Add new versions of matplotlib (#14731) 2020-02-03 15:07:12 -06:00
Patrick Gartung
5ad44477b2 buildcache list: restore original behavior of allowing constraints like @version. (#14732) 2020-02-03 13:40:14 -06:00
albestro
94971d519c Fix CMake and update libarchive (#14684)
* update libarchive and fix version of libarchive cmake dependency

* (at least) libarchive 3.3.3 dependency from cmake 3.15.0

* cmake depends on libarchive 3.1.0 if not specified differently

currently it is applied to cmake <3.15.0

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-03 11:26:38 -05:00
Andrew W Elble
30dd7ae176 clingo: new versions (#14728)
5.3.0 and 5.4.0
2020-02-03 07:58:34 -06:00
Jean-Paul Pelteret
dcaa50c9d0 deal.II: Add patch for TBB version check (#14724) 2020-02-03 13:04:12 +01:00
Mark W. Krentel
3d9787a8bf hpcviewer: add version 2020.01 (#14718) 2020-02-02 09:26:21 -06:00
Jean-Paul Pelteret
44f60f9fec Update package: SymEngine 0.5.0 (#14722) 2020-02-02 09:25:51 -06:00
Adam J. Stewart
0c0aba579a octave: add maintainer (#14716) 2020-02-01 19:46:35 -06:00
Patrick Gartung
ab36008635 binary_distribution: Initialize _cached_specs at the module level and only search the mirrors in get_spec if spec is not in _cached_specs. (#14714)
* Initialize _cached_specs at the file level and check for spec in it before searching mirrors in try_download_spec.

* Make _cached_specs a set to avoid duplicates

* Fix packaging test

* Ignore build_cache in stage when spec.yaml files are downloaded.
2020-01-31 20:08:47 -06:00
Tim Haines
412c336113 boost: Add versions 1.71.0 and 1.72.0, use Clang toolset on Darwin (#14678)
* boost: Add versions 1.71.0 and 1.72.0

* Remove 'darwin' target

* Add hainest as maintainer
2020-01-31 17:56:40 -06:00
Kelly (KT) Thompson
0c9ac8d8d1 draco: update versions (#14690)
* draco: update versions

+ Added versions 7.3.0 and 7.4.0.
+ Change several variants to be default TRUE since most consumers need these
  variants enabled (eospac, lapack, parmetis, superlu-dist). Change variant name
  for `+superlu_dist` to use hyphen instead of underscore.  This makes the
  variant name consistent with the spackage name for `superlu-dist`.
+ Clean up `depends_on` instructions and avoid specifying `type` when possible.
+ Provide patch files that are necessary for some machines (mostly Cray
  machines).

* Remove trailing whitespace.

* Revert variant name to use underscore.

* add maintainer information.
2020-01-31 14:03:54 -06:00
Themos Tsikas
04e6fd60f3 NAG Fortran Compiler, 6.0 dropped (unavailable), 7.0 added (#14691)
* NAG Fortran Compiler, 6.0 dropped (unavailable), 7.0 added

* Update package.py

* Update package.py
2020-01-31 14:03:31 -06:00
Dr. Christian Tacke
6f4c90378a [libfabric@1.9.0] Fix C++ header usage (#14703)
Fix from libfabric's git for 1.9.0.

Compiling C++ software against libfabric@1.9.0 doesn't work
without this patch.

See: 2e95b0efd8
2020-01-31 14:01:58 -06:00
Matthieu Dorier
b7ee2d02e4 Fixed DIY package missing MPI dependency (#14704) 2020-01-31 14:01:17 -06:00
Todd Gamblin
c029c8ff89 spack -V is now more descriptive for dev branches
`spack -V` previously always returned the version of spack from
`spack.spack_version`.  This gives us a general idea of what version
users are on, but if they're on `develop` or on some branch, we have to
ask more questions.

This PR makes `spack -V` check whether this instance of Spack is a git
repository, and if it is, it appends useful information from `git
describe --tags` to the version.  Specifically, it adds:

  - number of commits since the last release tag
  - abbreviated (but unique) commit hash

So, if you're on `develop` you might get something like this:

    $ spack -V
    0.13.3-912-3519a1762

This means you're on commit 3519a1762, which is 912 commits ahead of
the 0.13.3 release.

If you are on a release branch, or if you are using a tarball of Spack,
you'll get the usual `spack.spack_version`:

    $ spack -V
    0.13.3

This should help when asking users what version they are on, since a lot
of people use the `develop` branch.
2020-01-31 20:59:21 +01:00
Christoph Junghans
d83309493f superlu-dist: enforce OpenMP=OFF (#14708) 2020-01-31 13:35:46 -06:00
Christoph Junghans
47ee690076 portage: fix compile on icc (#14707) 2020-01-31 13:35:20 -06:00
Adam J. Stewart
09e318fc84 Document how to use Spack to replace Homebrew/Conda (#13083)
* Document how to use Spack to replace Homebrew/Conda
* Initial draft; can iterate more as features become available
2020-01-31 19:31:14 +01:00
Massimiliano Culpo
9635ff3d20 spack containerize generates containers from envs (#14202)
This PR adds a new command to Spack:
```console
$ spack containerize -h
usage: spack containerize [-h] [--config CONFIG]

creates recipes to build images for different container runtimes

optional arguments:
  -h, --help       show this help message and exit
  --config CONFIG  configuration for the container recipe that will be generated
```
which takes an environment with an additional `container` section:
```yaml
spack:
  specs:
  - gromacs build_type=Release 
  - mpich
  - fftw precision=float
  packages:
    all:
      target: [broadwell]

  container:
    # Select the format of the recipe e.g. docker,
    # singularity or anything else that is currently supported
    format: docker
    
    # Select from a valid list of images
    base:
      image: "ubuntu:18.04"
      spack: prerelease

    # Additional system packages that are needed at runtime
    os_packages:
    - libgomp1
```
and turns it into a `Dockerfile` or a Singularity definition file, for instance:
```Dockerfile
# Build stage with Spack pre-installed and ready to be used
FROM spack/ubuntu-bionic:prerelease as builder

# What we want to install and how we want to install it
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&&  (echo "spack:" \
&&   echo "  specs:" \
&&   echo "  - gromacs build_type=Release" \
&&   echo "  - mpich" \
&&   echo "  - fftw precision=float" \
&&   echo "  packages:" \
&&   echo "    all:" \
&&   echo "      target:" \
&&   echo "      - broadwell" \
&&   echo "  config:" \
&&   echo "    install_tree: /opt/software" \
&&   echo "  concretization: together" \
&&   echo "  view: /opt/view") > /opt/spack-environment/spack.yaml

# Install the software, remove unecessary deps and strip executables
RUN cd /opt/spack-environment && spack install && spack autoremove -y
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
    xargs file -i | \
    grep 'charset=binary' | \
    grep 'x-executable\|x-archive\|x-sharedlib' | \
    awk -F: '{print $1}' | xargs strip -s


# Modifications to the environment that are necessary to run
RUN cd /opt/spack-environment && \
    spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh

# Bare OS image to run the installed executables
FROM ubuntu:18.04

COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/view /opt/view
COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh

RUN apt-get -yqq update && apt-get -yqq upgrade                                   \
 && apt-get -yqq install libgomp1 \
 && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
```
2020-01-30 17:19:55 -08:00
Patrick Gartung
ed501eaab2 Bypass build_cache/index.html read when trying to download spec.yaml for concretized spec. (#14698)
* Add binary_distribution::get_spec which takes concretized spec
Add binary_distribution::try_download_specs for downloading of spec.yaml files to cache
get_spec is used by package::try_install_from_binary_cache to download only the spec.yaml
for the concretized spec if it exists.
2020-01-30 16:06:50 -06:00
Patrick Gartung
12a99f4a2d Use non-mutable default for names in binary_distribution::get_specs call (#14696)
* Use non-mutable default for names

* Make suggested change
2020-01-30 15:17:55 -06:00
Andrew W Elble
b072caadec fix: py-pillow build_ext vs. install (#14666)
Previously, the install stage would compile in things that were
disabled during the build_ext phase. This would also result in the
build pulling in locally installed versions of libraries that were
disabled. The install process doesn't honor the same command-line
flags that build_ext does, but does call build_ext again. Avoid the
whole issue by just writing the options to setup.cfg

Also, add the Imagemagick dependency for tests.
2020-01-30 14:42:48 -06:00
Peter Scheibel
7b2895109c Document how to add conditional dependencies (#14694)
* add short docs section on conditional dependencies
* add reference to spec syntax
* add note that conditional dependencies can save time
2020-01-30 12:34:54 -08:00
Peter Scheibel
b2adcdb389 Bugfix: put environment lock in the right place (#14692)
Locate the environment lock in the hidden environment directory
rather than the root of the environment.
2020-01-30 11:13:36 -08:00
Massimiliano Culpo
1e0408d05a Updated docstring and version of lmod to v8.3 (#14687) 2020-01-30 12:33:16 -06:00
Adam J. Stewart
ee35d949f9 Add GDAL 3.0.4 (#14688) 2020-01-30 12:08:47 -06:00
Patrick Gartung
23a7feb917 Limit the number of spec files downloaded to find matches for buildcaches (#14659)
* Limit the number of spec flies downloaded to find matches
2020-01-30 10:56:10 -06:00
Jennifer Herting
a5b2347cfe [py-joblib] added version 0.11 (#14672) 2020-01-30 02:27:04 -08:00
Jennifer Herting
23a759cda0 [r-manipulatewidget] added versions (#14674) 2020-01-30 02:26:48 -08:00
Jennifer Herting
39035e4517 [r-rgl] added version 0.100.19 (#14675) 2020-01-30 02:26:24 -08:00
Todd Gamblin
3519a17624 specs: avoid traversing specs when parsing
The Spec parser currently calls `spec.traverse()` after every parse, in
order to set the platform if it's not set.  We don't need to do a full
traverse -- we can just check the platforrm as new specs are parsed.

This takes about a second off the time required to import all packages in
Spack (from 8s to 7s).

- [x] simplify platform-setting logic in `SpecParser`.
2020-01-29 21:15:58 -08:00
Todd Gamblin
a2f8a2321d repo: avoid unnecessary spec parsing in filename_for_package_name()
`filename_for_package_name()` and `dirname_for_package_name()`
automatically construct a Spec from their arguments, which adds a fair
amount of overhead to importing lots of packages.  Removing this removes
about 11% of the runtime of importing all packages in Spack (9s -> 8s).

- [x] `filename_for_package_name()` and `dirname_for_package_name()` now
  take a string `pkg_name` arguments instead of specs.
2020-01-29 21:15:58 -08:00
Peter Scheibel
85ef1be780 environments: synchronize read and uninstall (#14676)
* `Environment.__init__` is now synchronized with all writing operations
* `spack uninstall` now synchronizes its updates to any associated environment
  * A side effect of this is that the environment is no longer updated piecemeal as specs are uninstalled - all specs are removed from the environment before they are uninstalled
2020-01-29 17:22:44 -08:00
Cameron Smith
488e25ea34 pumi: sim version check, meshes via submodule, ctest (#14597)
* pumi: sim version check, meshes via submodule, ctest

* Apply suggestions from code review

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

* pumi: update comment on master version string

* pumi: description of simmodsuite_version_check variant

* pumi: add white space to variant description

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-29 18:29:07 -06:00
Greg Becker
bd60e0f137 fix cycle dependency in libxml+python (#13847)
* fix cycle dependency in libxml+python
* comment why we need these dependencies
2020-01-29 12:39:55 -08:00
noguchi-k
da189b8d1d Fastx-toolkit package: patch for Fujitsu compiler (#14218)
Specify the scope of pragma pack
2020-01-29 11:45:37 -08:00
Adam J. Stewart
ed4d544e8f Fix py-pillow tests (#14670) 2020-01-29 13:24:44 -06:00
Robert Pavel
b142914b24 Added MiniAMR@1.4.4 (#14667) 2020-01-29 13:24:22 -06:00
Robert Pavel
30c8e1d8a0 Added xsbench@19 to Version List (#14668) 2020-01-29 13:24:03 -06:00
Jennifer Herting
549aae7f72 [py-griddataformats] added new versions (#14671) 2020-01-29 13:23:22 -06:00
Michael Kuhn
52a7f94d9e pythia8: add new package (#14665) 2020-01-29 11:40:39 -06:00
Matthias Wolf
4e3617fe1d py-pyperf: add 1.6.{0,1} (#14662) 2020-01-29 09:00:03 -06:00
Matthias Wolf
1af36f0cdc flatbuffers: add 1.11.0 (#14663) 2020-01-29 08:58:41 -06:00
Matthias Wolf
53d891a501 py-black: update url, add 19.3b0 (#14664) 2020-01-29 08:56:54 -06:00
Tamara Dahlgren
60ed6d2012 bugfix: correct exception message matching in tests (#14655)
This commit makes two fundamental corrections to tests:
1) Changes 'matches' to the correct 'match' argument for 'pytest.raises' (for all affected tests except those checking for 'SystemExit');
2) Replaces the 'match' argument for tests expecting 'SystemExit' (since the exit code is retained instead) with 'capsys' error message capture.

Both changes are needed to ensure the associated exception message is actually checked.
2020-01-28 22:57:26 -08:00
t-karatsu
f7ec09d30b Fujitsu compiler: Defining option that is always added. (#14657) 2020-01-28 21:02:40 -06:00
Andrew W Elble
9d7e482497 git: add version 2.25.0 and fixup pcre dependency (#14649)
* git: add version 2.25.0 and fixup pcre dependency

pcre2 became optional in 2.14 and the default in 2.18. I noticed this
as git was compiling against the system pcre2 (spack was
specifying pcre as the dependency).

* missed a chunk from my internal repo
2020-01-28 21:01:25 -06:00
Peter Scheibel
69feea280d env: synchronize updates to environments (#14621)
Updates to environments were not multi-process safe, which prevented them from taking advantage of parallel builds as implemented in #13100.  This is a minimal set of changes to enable `spack install` in an environment to be parallelized:

- [x] add an internal lock, stored in the `.spack-env` directory, 
      to synchronize updates to `spack.yaml` and `spack.lock`
- [x] add `Environment.write_transaction` interface for this lock
- [x] makes use of `Environment.write_transaction` in `install`, 
      `add`, and `remove` commands

- `uninstall` is not synchronized yet; that is left for a future PR.
2020-01-28 17:26:26 -08:00
Glenn Johnson
e710656310 Set netcdf-fortran to build serially with Intel compiler (#14461)
* Set netcdf-fortran to build serially with Intel compiler

This PR turns off parallel builds when the Intel compiler is used.
Builds with the Intel compiler will fail otherwise.

* Change how parallel build is handled

Use patch from netcdf-fortran project to turn off parallel buildi for
version 4.5.2.
2020-01-28 15:13:51 -06:00
darmac
2b0b340aab racon: support aarch64 and fix install error (#14529)
* racon: support aarch64 and fix install error

* add aarch64 patch for racon
2020-01-28 15:12:40 -06:00
noguchi-k
ea0a549db3 pcma: set return value and change return type of function (#14579) 2020-01-28 15:08:35 -06:00
t-karatsu
492b600d29 diffutils: Changed the handling of undeclared functions from warning … (#14593)
* diffutils: Changed the handling of undeclared functions from warning to error.

* diffutils: Change the handling of warnings or error

* Delete '-Werror=implicit-function-declaration'

* Add '-Qunused-arguments'
2020-01-28 15:06:37 -06:00
Glenn Johnson
0605fc1557 Build graphite2 with Intel compiler (#14636)
This PR sets the definition of REGPARM when building with the Intel
compiler.
2020-01-28 15:03:13 -06:00
Matthias Diener
94def872ee Moreutils: add new package (#14653)
* moreutils: add new package

* fix flake8
2020-01-28 15:02:07 -06:00
Brian Van Essen
f17ce36da2 Fixed path for CEREAL and Protobuf (#14641) 2020-01-28 15:01:50 -06:00
Axel Huebl
2b6106524a openPMD-api: With ADIOS2 by Default (#14643)
Replace the deprecated ADIOS1 backend default with ADIOS2 default.
Disable sz since we do not need it and it conflicts with supported
version ranges between ADIOS2 and ADIOS1 if someone enables both.
2020-01-28 15:01:15 -06:00
noguchi-k
635fc62de0 powerapi: add a space between literal and identifier (#14645) 2020-01-28 14:59:59 -06:00
noguchi-k
da091c0cf5 med: add a space between literal and identifier (#14646) 2020-01-28 14:59:23 -06:00
Ben Morgan
16da648d03 intel-tbb: Fix install names on Darwin (#14650)
* intel-tbb: Fix install names on Darwin

Intel-TBB's libraries on Darwin are installed with "@rpath" prefixed
to their install names. This was found to cause issues building the root
package on Darwin due to libtbb not being found when running some of the
generated tools linking to it.

Follow example from other packages with the same issue and fixup up install
names for intel-tbb post install.

* intel-tbb: fix flake8 errors
2020-01-28 14:57:25 -06:00
Glenn Johnson
48a12c8773 Note about Intel compiler segfault with long paths (#14652)
This PR adds a note about segfaults with the Intel compiler when the
install paths are long and the dependencies many.
2020-01-28 14:57:06 -06:00
Greg Becker
52ab2421bb Fix handling of filter_file exceptions (#14651) 2020-01-28 12:49:26 -08:00
iarspider
67c6d99219 Fix for #14148 (#14595)
* Dirty hack to fix #14148

* A better way of checking if a package is taken from system

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

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

* Update qt/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-28 14:15:29 -06:00
Christoph Junghans
12b0340d2f ninja: add v1.10.0 (#14647) 2020-01-28 09:34:31 -08:00
Andrew W Elble
3f5bed2e36 make the new 'spack load' faster (#14628)
before, a 'time spack load singularity'
4.129u 0.346s 0:04.47 99.7%	0+0k 0+8io 0pf+0w

after, a 'time spack load singularity'
0.844u 0.319s 0:01.16 99.1%	0+0k 0+16io 0pf+0w
2020-01-27 20:53:52 -08:00
Owen Solberg
f58004e436 fix spack env loads example (#14558) 2020-01-27 20:49:53 -08:00
Adam Moody
6ab2c3caa3 mpifileutils: add v0.10 (#14644)
Signed-off-by: Adam Moody <moody20@llnl.gov>
2020-01-27 20:33:26 -08:00
Andrew W Elble
d86816bc1a Fix: hash-based references to upstream specs (#14629)
Spack commands referring to upstream-installed specs by hash have
been broken since 6b619da (merged September 2019), which added a new
Database function specifically for parsing hashes from command-line
specs; this function was inappropriately attempting to acquire locks
on upstream databases.

This PR updates the offending function to avoid locking upstream
databases and also updates associated tests to catch regression
errors: the upstream database created for these tests was not
explicitly set as an upstream (i.e. initialized with upstream=True)
so it was not guarding against inappropriate accesses.
2020-01-27 18:25:23 -08:00
Patrick Gartung
7badd69d1e Package source ID cannot be determined when the url can't be extrapolated for older version. (#14237) 2020-01-27 20:10:01 -06:00
Patrick Gartung
d0523ca087 Follow the example of spack arch (#14642) 2020-01-27 20:04:48 -06:00
Joe Koning
e01c39019c Add the py-merlinwf package (#14622)
* Add the py-merlinwf package

* Fix importlib-resources package name for spack naming convention.

* Add build to dependencies and add updated versions.

* Remove pytest-runner dependency.

* Fix typo.

* Add the py-tabulate dependency.

* Add sha256 for version 1.0.0

* Change to maestro version 1.1.5.

* Increase to version 1.0.4.

* Bump maestrowf version and prepare for new pypi version.

* Add sha256sum for version 1.1.5

* Add version 1.1.1.
Update maestrowf version to 1.1.7

* Add versions 1.0.5, 1.1.0, 1.1.1 and potential 1.2.0.

* Add version 1.2.0 and when on maestrowf@1.1.6.

* Add version 1.2.2 , remove 1.2.1 and 1.1.0.

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

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

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

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

* Remove mysql variant until new mysql interface module is enabled.
The mysql code may be removed.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-27 17:26:43 -06:00
Patrick Gartung
0ce4eef256 Only set tcl default. Remove lmod default. (#14640) 2020-01-27 14:55:09 -06:00
Patrick Gartung
9ffa053f18 Fix bug introduced by pull request 14467 being merged (#14639)
* Fix bug introduced by pull request 14467 being merged

* Only filter on platform and OS
2020-01-27 14:17:15 -06:00
Patrick Gartung
893b0792e4 Set module_roots in test/config/config.yaml to defaults. (#14517) 2020-01-27 14:03:15 -06:00
Massimiliano Culpo
b9629c36f2 Unified environment modifications in config files (#14372)
* Unified environment modifications in config files

fixes #13357

This commit factors all the code that is involved in
the validation (schema) and parsing of environment modifications
from configuration files in a single place. The factored out
code is then used for module files and compiler configuration.

Attributes were separated by dashes in `compilers.yaml` files and
by underscores in `modules.yaml` files. This PR unifies the syntax
on attributes separated by underscores.

Unit testing of environment modifications in compilers
has been refactored and simplified.
2020-01-27 08:40:47 -08:00
Erik Schnetter
0f3ae864a5 asdf-cxx: new package (#14637) 2020-01-27 14:50:18 +01:00
Erik Schnetter
b7b27d3862 amrex: Update to version 20.01 (#14635)
Now using Github releases instead of git commits.
2020-01-27 10:07:46 +01:00
Adam J. Stewart
eb79c82cba Fix Python version compatibility tests for vermin 0.10.0 (#14632) 2020-01-26 22:31:13 -08:00
Sinan
0e86961b84 pygdal and gdal versions should be in lockstep (#14630) 2020-01-26 18:35:16 -06:00
Adam J. Stewart
71f47b3b26 Add py-vermin package (#14631) 2020-01-26 18:34:56 -06:00
Erik Schnetter
02e077a7fa simulationio: Correct HDF5 dependency bounds (#14626)
The HDF5 dependency bound was inverted. (How did this ever compile? There is a cmake check.)
2020-01-26 17:22:43 -06:00
Erik Schnetter
87c55b79c5 hwloc: New version 2.1.0 (#14627) 2020-01-26 17:22:26 -06:00
Erik Schnetter
06e100d5cc curl: New version 7.68.0 (#14625) 2020-01-26 17:06:38 -06:00
Adam J. Stewart
f8be90cf3f Add TensorFlow 1.15.2 (#14624) 2020-01-26 15:41:09 -06:00
Patrick Gartung
d2098d337a When spack install checks for buildcaches only add urls for current arch. (#14467) 2020-01-25 21:15:12 -06:00
Erik Schnetter
a26e5caa57 h5cpp: Download from github release instead of git repo (#14573)
* h5cpp: Download from github release instead of git repo

* Correct typo in package description
2020-01-25 18:39:36 -06:00
Adam J. Stewart
cb3f4081a0 Add TensorFlow 2.0.1 (#14623) 2020-01-25 12:45:09 -06:00
Glenn Johnson
c700200959 Get vtk-8.2.0 to build (#14562)
This PR adds some extra dependencies needed for vtk-8.2.0. It also
handles the variable name changes to turn off some of the external
libraries.
2020-01-25 12:44:51 -06:00
Hadrien G
f569577747 acts-core: Add and adapt to ACTS v0.14.0 and v0.15.0 (#14580)
* Add and adapt to ACTS v0.14.0

* Add v0.15.0 too
2020-01-25 12:35:53 -06:00
Brian Homerding
1fd335d654 Removing flang variant from llvm package (#14600) 2020-01-25 12:26:11 -06:00
Adam Moody
1e09de73b7 libcircle: add v0.3 (#14611) 2020-01-25 12:22:21 -06:00
Greg Becker
a57edb7029 configure z3+python to build python libraries in its own prefix (#14604) 2020-01-24 21:16:48 -08:00
Glenn Johnson
71243f3f7b Get py-torch to build caffe2 (#14619)
* Get py-torch to build caffe2

This PR gets the py-torch package to build with caffe2, and closes
issue #14576. If building on a machine with CUDA but no GPU the build
will try to build with all compute capabilities. Older compute
capabilities are not supported so the build will fail. The list of
capabilities can be passed to the build using values set in the
cuda_arch variant. Likewise, conflicts are also set to catch if the
unsupported capabilities are listed in cuda_arch.

This PR also sets version constraints on using an external mkldnn for
newer versions. Currenly, only versions up to 0.4 use an external mkldnn
library. Also, the cuda variant is set to True, which restores
previous behavior.

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

Fix typo.

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

* Adjust conflicts

This commit adjusts the conflicts. There is an issue with the
cuda_arch=20 conflicts directive as there is a conflicting dependency
with any version >=1.1 and a cuda_arch=20 dependency specified in
CudaPackage that gets trapped first.

* Use a common message for conflicts

This commit adds a variable to contain the bulk of the message stringi
for the cuda_arch conflicts. This is used along with a version string
in the conflicts directives messages.

* Fix the strings

- Use a multiline string for the cuda_arch_conflict variable.
- No need for format() in the msg value.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-24 22:57:16 -06:00
Mathew Cleveland
35db2d05b7 py-opppy package: add version 0_1_2 (#14229) 2020-01-24 18:58:22 -08:00
iarspider
bb29932362 py-pygdal package: 2.4.0 depends on gdal 2.4.1 (#14075) 2020-01-24 18:34:37 -08:00
plamborn
f8e0f4251d libhio: remove autoreconf method (#14283)
The autoreconf is not necessary and can cause errors.
2020-01-24 18:20:02 -08:00
健美猞猁
9a6b3b3a07 New package: MBDyn (#14438) 2020-01-24 18:14:14 -08:00
Glenn Johnson
80745128b3 harfbuzz package: add conflict for @2.3.1: with intel compiler (#14386)
harfbuzz 2.3.1 (and presumably all future versions after it) does
not build with the Intel compiler
2020-01-24 18:05:50 -08:00
Adam J. Stewart
dcd8d7a620 Add spack config list command for tab completion (#14474)
* Add spack config list command for tab completion
* Update tab completion scripts
2020-01-24 17:28:20 -08:00
Sajid Ali
12a261523e New package: p3dfft3 (#14508) 2020-01-24 17:20:36 -08:00
Michael Kuhn
95ddd3d6f2 sbang: Fix perl binary detection
The perl binary can also be called `perlX.Y.Z` if using a development
build or simply using the versioned binary.

We were also dropping all sbang arguments, since `exec $interpreter_v`
was only using the first element of the `interpreter_v` array.
2020-01-24 17:06:51 -08:00
Kevin Huck
33d35768e6 Fixing GCC compiler setting for PDT package 2020-01-24 17:03:52 -08:00
Kevin Manalo
6fd2c66022 IOR package: add version 3.2.1 (#14582) 2020-01-24 16:56:59 -08:00
Jordan Ogas
1c9337a5e4 charliecloud package: add version 0.13; remove older versions (#14591)
* Add version 0.13 and update to use Autotools build system
* Remove all versions prior to 0.13 (which do not use Autotools)
2020-01-24 16:55:55 -08:00
Massimiliano Culpo
4d7d657366 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-01-24 16:49:45 -08:00
Piotr Luszczek
d646c8d8d5 magma: add new version 2.5.2 2020-01-24 15:27:01 -08:00
Jon Rood
d58390dbf7 Add version 0.6.3 of yaml-cpp. 2020-01-24 15:26:33 -08:00
Brian Van Essen
36fca2c29a Updated and cleaned up the recipe for the LBANN and Hydrogen packages. (#14612)
* Updated and cleaned up the recipe for the LBANN and Hydrogen packages.

* Flake8

* Added type test for catch2
2020-01-24 14:49:05 -06:00
Brian Van Essen
4a5835ef2c Added version for 10.2 compatibility (#14613)
* Added version for 10.2 compatibility

* Updated the preferred version
2020-01-24 09:30:38 -06:00
Seth R. Johnson
ca6e75c9f6 Use Spack target architecture to determine OpenBLAS target (#14380)
Openblas target is now determined automatically upon inspection of
`TargetList.txt`. If the spack target is a generic architecture family
(like x86_64 or aarch64) the DYNAMIC_ARCH setting is used
instead of targeting a specific microarchitecture.
2020-01-24 15:19:05 +01:00
Axel Huebl
b0fce56d5b openPMD-api: adios_config to run env (#14610)
Popular CMake find-scripts for ADIOS1 search for this binary instead
of looking up `CMAKE_PREFIX_PATH`.
2020-01-23 17:35:45 -08:00
Todd Gamblin
04a6a55cf8 commands: add simple spack commands --update-completion argument (#14607)
Instead of another script, this adds a simple argument to `spack
commands` that updates the completion script.  Developers can now just
run:

    spack commands --update-completion

This should make it simpler for developers to remember to run this
*before* the tests fail.  Also, this version tab-completes.
2020-01-23 14:48:06 -08:00
Adam J. Stewart
031fdfd7ca Add TensorFlow 1.15.1 (#14614) 2020-01-23 16:25:30 -06:00
Hadrien G
80ea96312f ftgl: Move to frankheckenbach fork + CMakePackage (#14221)
* Try to switch to a newer fork of ftgl

* Allow ROOT to be more flexible about ftgl versions

* Turn ftgl into a CMakePackage

* Update ROOT ftgl dep since 2.1.3 isn't a thing anymore

* Please flake8

* Try to bring back the doc variant

* Comment it out instead of removing it
2020-01-23 11:43:11 -06:00
Hadrien G
1a385a5178 root: Fix root+x breakage from #11129 (#14224)
* Fix root+x breakage from #11129

* Separate out +opengl breakage

* Not strictly X11-related, but more breakage from  #11129

* Another X11 breakage found while building 6.08.x

* Don't put system headers in SPACK_INCLUDE_DIRS + deduplicate

* xextproto is only a dependency in +x builds
2020-01-23 11:42:25 -06:00
Greg Becker
c9e01ff9d7 shell support: spack load no longer needs modules (#14062)
Previously the `spack load` command was a wrapper around `module load`. This required some bootstrapping of modules to make `spack load` work properly.

With this PR, the `spack` shell function handles the environment modifications necessary to add packages to your user environment. This removes the dependence on environment modules or lmod and removes the requirement to bootstrap spack (beyond using the setup-env scripts).

Included in this PR is support for MacOS when using Apple's System Integrity Protection (SIP), which is enabled by default in modern MacOS versions. SIP clears the `LD_LIBRARY_PATH` and `DYLD_LIBRARY_PATH` variables on process startup for executables that live in `/usr` (but not '/usr/local', `/System`, `/bin`, and `/sbin` among other system locations. Spack cannot know the `LD_LIBRARY_PATH` of the calling process when executed using `/bin/sh` and `/usr/bin/python`. The `spack` shell function now manually forwards these two variables, if they are present, as `SPACK_<VAR>` and recovers those values on startup.

- [x] spack load/unload no longer delegate to modules
- [x] refactor user_environment modification calculations
- [x] update documentation for spack load/unload

Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2020-01-22 22:36:02 -08:00
Mark W. Krentel
5053dfa259 binutils, libiberty: add version 2.33.1 2020-01-22 21:50:10 -08:00
Adam J. Stewart
11f2b61261 Use spack commands --format=bash to generate shell completion (#14393)
This PR adds a `--format=bash` option to `spack commands` to
auto-generate the Bash programmable tab completion script. It can be
extended to work for other shells.

Progress:

- [x] Fix bug in superclass initialization in `ArgparseWriter`
- [x] Refactor `ArgparseWriter` (see below)
- [x] Ensure that output of old `--format` options remains the same
- [x] Add `ArgparseCompletionWriter` and `BashCompletionWriter`
- [x] Add `--aliases` option to add command aliases
- [x] Standardize positional argument names
- [x] Tests for `spack commands --format=bash` coverage
- [x] Tests to make sure `spack-completion.bash` stays up-to-date
- [x] Tests for `spack-completion.bash` coverage
- [x] Speed up `spack-completion.bash` by caching subroutine calls

This PR also necessitates a significant refactoring of
`ArgparseWriter`. Previously, `ArgparseWriter` was mostly a single
`_write` method which handled everything from extracting the information
we care about from the parser to formatting the output. Now, `_write`
only handles recursion, while the information extraction is split into a
separate `parse` method, and the formatting is handled by `format`. This
allows subclasses to completely redefine how the format will appear
without overriding all of `_write`.

Co-Authored-by: Todd Gamblin <tgamblin@llnl.gov>
2020-01-22 21:31:12 -08:00
Todd Gamblin
8011fedd9c bugfix: gpg2 is called 'gpg' on macOS
The gpg2 command isn't always around; it's sometimes called gpg.  This is
the case with the brew-installed version, and it's breaking our tests.

- [x] Look for both 'gpg2' and 'gpg' when finding the command
- [x] If we find 'gpg', ensure the version is 2 or higher
- [x] Add tests for version detection.
2020-01-22 17:34:31 -08:00
Axel Huebl
910df8cb4e openPMD-api: Default +adios1 (#14599)
Enable the ADIOS1 backend by default.
2020-01-22 15:49:27 -08:00
Massimiliano Culpo
74266ea789 tests: removed code duplication (#14596)
- [x] Factored to a common place the fixture `testing_gpg_directory`, renamed it as 
      `mock_gnupghome`
- [x] Removed altogether the function `has_gnupg2`

For `has_gnupg2`, since we were not trying to parse the version from the output of:
```console
$ gpg2 --version
```
this is effectively equivalent to check if `spack.util.gpg.GPG.gpg()` was found. If we need to ensure version is `^2.X` it's probably better to do it in `spack.util.gpg.GPG.gpg()` than in a separate function.
2020-01-22 14:04:16 -08:00
Axel Huebl
7a0990903f MPark.Variant: Patch NVCC C++14 Build 2 (#14434)
Update the patch to fix builds with NVCC <= 10.2.89 with
the accepted PR for upcoming releases of the library.
2020-01-22 11:29:02 -08:00
Sam Gutiérrez
ffbb0efc81 libquo: Update default version from 1.3 to 1.3.1. (#14585) 2020-01-22 11:14:26 -08:00
Todd Gamblin
2eadfa24e9 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-01-21 23:36:10 -08:00
Scott Wittenburg
8283d87f6a pipelines: spack ci command with env-based workflow (#12854)
Rework Spack's continuous integration workflow to be environment-based.

- Add the `spack ci` command, which replaces the many scripts in `bin/`

- `spack ci` decouples the CI workflow from the spack instance:
  - CI is defined in a spack environment
  - environment is in its own (single) git repository, separate from Spack
  - spack instance used to run the pipeline is up to the user
  - A new `gitlab-ci` section in environments allows users to configure how
    specs in the environment should be mapped to runners
  - Compilers can be bootstrapped in the new pipeline workflow

- Add extensive documentation on pipelines (see `pipelines.rst` for further details)
- Add extensive tests for pipeline code
2020-01-21 22:35:18 -08:00
Todd Gamblin
4d794d63b5 python: add debug variant to enable pydebug (#14584) 2020-01-21 15:09:41 -08:00
Adam J. Stewart
796722aeee Add py-scipy 1.2.3 (#14583) 2020-01-21 15:29:50 -06:00
Glenn Johnson
900161d182 Update and fix samtools (#14507)
* Update and fix samtools

This PR adds samtools-1.10 and sets the htlib directory so that the
spack built htslib can be used. This PR also arranges the dependencies
so that the htslib sequence is grouped on its own. Finally, the bzip2
dependency is removed and python and perl run dependencies are added.

* Fix samtools when built with ncurses+termlib

* The CI flake8 tests require lowercase variable

Interestingly, this did not show up when I ran `spack flake8` locally.
2020-01-21 15:24:39 -06:00
Dr. Christian Tacke
5eed196f74 Use util.url.join for URLs in GNU Mirrors / reorder Mirrors (#14395)
* Reorder GNU mirrors (#14395)

As @adamjstewart commented in #14395, GNU suggests to use
their mirror. So reorder the mirror to the top.

GNU Doc: https://www.gnu.org/prep/ftp.en.html

* Use spack.util.url.join for URLs in GNU mirrors (#14395)

One should not use os.path.join for URLs. This does only
work on POSIX systems.

Instead use spack.util.url.join.
So every part in spack uses the same url joining method.
2020-01-21 13:14:38 -06:00
Michael Kuhn
54ecc4e504 cmake: Fix patch checksum (#14542)
Add patch locally to make sure checksum cannot change again.
2020-01-21 13:05:42 -06:00
Glenn Johnson
5db5040871 Use CudaPackage mixin for py-theano (#14577)
This PR adds the CudaPackage mixin class to py-theano. This replaces the
`gpu` variant with the `cuda` variant.
2020-01-21 09:27:41 -06:00
Adam J. Stewart
d10505678f Add new kcov package (#14574)
* Add new kcov package

* Fix linking error and add test
2020-01-20 19:22:05 -06:00
Sean Smith
f23a136d83 Update AWS ParallelCluster to 2.5.1 (#14571)
Signed-off-by: Sean Smith <seaam@amazon.com>
2020-01-20 15:19:28 -06:00
Cyrus Harrison
ca26eb6923 add conduit 0.5.1 release and allow conduit to build against statically linked python (#14559) 2020-01-19 20:22:03 -06:00
Olaf Mersmann
dbb149cd7f capnproto: New package. (#14557)
* capnproto: New package.

* capnproto: Fix flake8 errors.

* Remove characters invalid in Python 2.
2020-01-19 17:20:22 -06:00
Simon Pintarelli
818b00e302 py-voluptuous update versions (#14556) 2020-01-19 10:39:11 -06:00
Howard Pritchard
ba22af0de0 openmpi: swat btl/uct ucx 1.7 bug (#14522)
Unfortunately UCX 1.7.0 is appearing in RPMS before it's officially released.
There's a problem with Open MPI 4.0.x where x < 3 and this version of UCX,
namely that the UCT BTL fails to compile.

See https://github.com/open-mpi/ompi/issues/7128

This patch works around the problem by disabling the build of the UCT BTL
for releases 4.0.0 to 4.0.2.

add hppritcha (me) as maintainer

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2020-01-18 13:52:26 -06:00
Matthieu Dorier
d8b4bee0cd Added py-spdlog package (#14514)
* Added py-spdlog package

* pleasing flake-8

* pleasing flake-8

* addressed some comments from adamjstewart

* changed URL for archive

* replaced with pypi.io url
2020-01-18 13:51:55 -06:00
Martin Pokorny
cacd57d340 Updates to casacore package (#14552)
* Add +cfitsio variant to wcslib dependency

* Replace ncurses dependency with readline dependency

casacore explicitly may depend on readline, not ncurses

* Add workaround for casacore's readline dependency

casacore optionally depends upon readline, but it's CMakeLists.txt provides no
user control over whether or not readline becomes a dependency. As readline is
often present by default on systems, it's better for this package to explicitly
depend on readline in order to prevent linking to whatever system version of the
library happens to be found during the build process. This should be considered
a workaround until casacore's CMakeLists.txt is fixed.

* Apply workaround for casacore's dependency on SOFA

Similar to the issues with casacore's readline dependency, casacore's optional
dependency on SOFA does not provide the user with a means of controlling the
dependency during build time. Unlike the readline library, the SOFA library is
unlikely to exist on most systems by default. As the SOFA dependency is only
optionally used for testing casacore, requiring it by default is not a good
workaround. Until casacore's CMakeLists.txt is fixed, this variant has been
removed to avoid unexpected library dependencies in the installed package.

* Add newer casacore versions

* Add mpokorny to maintainer field
2020-01-17 20:02:51 -06:00
Valentin Reis
c6a6911821 aml: adds 'develop' and 'master' targets. (#14549)
Co-authored-by: mlhardware <57849932+mlhardware@users.noreply.github.com>
2020-01-17 16:38:12 -06:00
Kai Torben Ohlhus
9010d4fce5 suite-sparse: add 5.4.0, 5.5.0, and 5.6.0, GitHub releases (#14547)
- The suite-sparse author publishes new versions starting with 5.5.0 on GitHub, see https://github.com/DrTimothyAldenDavis/SuiteSparse/releases and http://faculty.cse.tamu.edu/davis/SuiteSparse/
  - change spack to download from there
  - updated sha256 checksums from GitHub for all available releases
- For versions 5.4.0, 5.5.0, 5.6.0 there is a slightly different compilation necessary: first `make default` then `make install`.

Summary of the version changes (+ added, -removed [because not available on GitHub]):
```
+ 5.6.0
+ 5.5.0
+ 5.4.0
  5.3.0
  5.2.0
+ 5.1.2
  5.1.0
+ 5.0.0
+ 4.5.6
  4.5.5
- 4.5.4
  4.5.3
- 4.5.1
```
2020-01-17 13:04:53 -06:00
darmac
4bb76cf5e8 add new package : erlang (#14548) 2020-01-17 13:03:08 -06:00
Sajid Ali
c52bcdd080 jdk temporary fix (#14550) 2020-01-17 12:58:58 -06:00
darmac
4d752e63e5 fix hadoop url and update versions (#14530) 2020-01-17 12:56:00 -06:00
Brian Van Essen
94bc6b06b1 Added new hashes for the protobuf and py-protobuf packates. (#14546)
* Added new hashes for the protobuf and py-protobuf packates.

* Fixed flake8
2020-01-16 17:02:50 -06:00
Adam J. Stewart
bdc9b89d86 Don't patch latest version of HDF5 (#14545) 2020-01-16 15:59:26 -06:00
Adam J. Stewart
563e261fa4 Add py-torchvision 0.5.0 (#14544) 2020-01-16 15:46:55 -06:00
Adam J. Stewart
38cd15d0e0 Add py-torch 1.4.0 (#14543) 2020-01-16 15:46:41 -06:00
Adam J. Stewart
808c80d65a 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-01-16 15:46:18 -06:00
Adam J. Stewart
7a61d1dbd1 Add include/pythonX.Y to CPATH (#14523) 2020-01-16 15:21:14 -06:00
Cameron Stanavige
0f68ed73c6 unifyfs: new release version (#14527)
This updates the UnifyFS package to account for the latest 0.9.0
version and removes support for version 0.2.0.
2020-01-16 15:16:59 -06:00
Howard Pritchard
876305adf0 mesa: check aarch64 system type as well (#14493)
to disabled use of libunwind.  Without this mesa fails to build
using recent Cray compilers - cce 9 and higher -  on aarch64 systems.

Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
2020-01-16 12:21:34 -06:00
noguchi-k
7319516749 falcon: Set Py_None to return value (#14532) 2020-01-16 12:14:52 -06:00
albestro
c763b68b7c update hpx package for the new release 1.4.0 (#14533) 2020-01-16 12:12:35 -06:00
darmac
f22855f6e7 add new package : geode (#14534)
* add new package : geode

* remove provides for gemfire
2020-01-16 12:11:30 -06:00
darmac
362e79bb3a add new package : ignite (#14539) 2020-01-16 12:04:41 -06:00
Glenn Johnson
5aeab7dbe5 Use CudaPackage mixin for py-torch (#14540)
This PR adds CudaPackage in order to pick up the cuda/compiler conflicts
defined in CudaPackage.
2020-01-16 12:02:53 -06:00
Michael Kuhn
8ad0be96aa perl: Fix binary detection (#14536)
It seems that stable versions of perl also install a `perlX.Y.Z` binary.
However, it seems that this binary can hang if used in conjunction with
Spack's sbang workaround, as observed during automake's build.
2020-01-16 10:11:53 -06:00
Kai Torben Ohlhus
b7f0493563 octave: add 5.1.0 (#14531)
Add version Octave 5.1.0 including sha256.
2020-01-15 22:55:24 -06:00
Glenn Johnson
8b1bf2d613 Update py-csvkit (#14525)
* Update py-csvkit

This PR updates the py-csvkit package. This version requires a python
stack based on agate and this PR includes the new dependency packages.

- py-agate-dbf
- py-agate-excel
- py-agate-sql
- py-agate
- py-dbfread
- py-isodate
- py-leather
- py-parsedatetime
- py-python-slugify
- py-pytimeparse
- py-text-unidecode

* Replace the copy/pasted apostrophes

Python 2 can not process the copy/pasted apostrophes so replace them
with standard single quote character.

* Add version constraints on dependencies
2020-01-15 22:45:04 -06:00
Olaf Mersmann
a48fb69601 Update RocksDB to current version (#14524)
* rocksdb: Fix for rocksdb issue 5303

* rocksdb: Explicitly disable features

* rocksdb: Add TBB variant.

* rocksdb: New version 5.18.3 and 6.5.3
2020-01-15 18:50:24 -06:00
Adam J. Stewart
3cd6938d80 Fix typo in modules docstring (#14521) 2020-01-15 15:16:12 -06:00
Glenn Johnson
027142bcfc Add version constraint to graphviz patches (#14377)
* Add version contraint to graphviz patches

This PR restricts the graphviz version that the patches for building
with the Intel compiler apply to. The two patches that were needed for
building graphviz-2.40.1 with the Intel compiler are not needed for
graphviz-2.42.2.

* Adjust the qt dependencies

The qt5 patch is only needed for graphviz-2.40.1. However, that version
will only compile with GCC-6 or greater.
2020-01-15 14:14:45 -06:00
Michael Kuhn
c2778d8898 perl: Add 5.30.1 (and 5.31.7) (#14509)
This also fixes actually building the development releases.
2020-01-15 14:12:51 -06:00
Michael Kuhn
e6e06aa2f3 mariadb-c-client: Add 3.1.6 and 3.1.5 (#14510) 2020-01-15 14:10:47 -06:00
Mark W. Krentel
b5d729a829 hpctoolkit: add version 2019.12.28 (#14519)
Add version 2019.12.28 and update the prereqs for the latest master.
2020-01-15 14:04:22 -06:00
Rao Garimella
946a80bd3d New package Jali - unstructured mesh infrastructure for multiphysics applications (#14498)
* add variant for enabling testing

* add variant for enabling testing

* enable tests and clean up other options

* enable tests and clean up other options

* add numbered versions

* add numbered versions

* updates to avoid enable_tests variant; correct versioning

* updates to avoid enable_tests variant; correct versioning

* fixes for style

* appropriate partitioners are enabled if 'all' is specified - so no need to check in spec

* revert accidental change to copyright

* remove erroneously re-introduced line about tests

* new spack recipe for build Jali - unstructured mesh infrastructure for multiphysics applications

* remove the +parallel condition for mstk, update 1.1.1 sha256sum and whitespace cleanup

* reformat description

* cut down description
2020-01-15 12:32:17 -06:00
Robert Mijakovic
a2f961bd6f Adds MPI_THREAD_MULTIPLE support for OpenMPI to the variant with UCX fabrics (#14194)
* Fixes:
1. MPI_THREAD_MULTIPLE problem with OpenMPI and UCX.

Changes:
1. OpenMPI provides two new depends_on options which result in UCX being compiled with multiple threads support. One implicit when OpenMPI 3.x is used, MPI_THREAD_MULTIPLE is enabled by default, and one explicit for OpenMPI <= 2.x, MPI_THREAD_MULTIPLE is disabled by default.
2. Extends UCX package to allow "Enable thread support in UCP and UCT" option.
3. Adds sha256 sums of UCX releases 1.6.1 and 1.2.0.

More details:
Fixes the issue with OpenMPI where programs which use MPI_THREAD_MULTIPLE will fail to execute because UCP worker didn't support it.
During the OpenMPI package installation it's the +thread_multiple spec was not propagated to UCX nor UCX handled it at all.
Now, the OpenMPI package is capable of handling +thread_multiple spec when UCX is request and the UCX package correctly handles +thread_multiple and compiles with the --enable-mt option.
Error message during runtime:
pml_ucx.c:226 Error: UCP worker does not support MPI_THREAD_MULTIPLE

* Adapts check of specs to read better and is the suggested form in the docs.

* Explicitly disables multithreading of UCX if +thread_multiple option is not used.
2020-01-15 12:31:18 -06:00
Glenn Johnson
0232c820ab Rework texlive package to install from source (#14332)
* Rework texlive package to install from source

This PR reworks the texlive package so that it installs from versioned
source distibution files. This is preferred over installing the binary
package for several reasons. For the binary installation:

1. Each component is downloaded, so can not use a spack mirror.
2. Changes in components over time are not reflected in spack hash.
3. Some of the binaries do not run due to glibc issues, depending on OS.

This PR keeps the binary installation as an option but it should be
considered deprecated, and probably rewmoved at some point.

This PR depends on zziplib from PR #14318.

* Fix flake8 issues
2020-01-15 11:35:07 -06:00
Glenn Johnson
f8acb95ad3 Convert encoding of script in interproscan (#14356)
One of the perl scripts was encoded with ISO-8859-1, which caused the
sbang replacement process to fail when spack uses python3. This PR
converts the ps_scan script to UTF-8 encoding.
2020-01-15 11:32:18 -06:00
Glenn Johnson
726a662c2c Change encoding for scripts in repeatmasker (#14358)
This PR converts ISO-8859 encoding to UTF-8 encoding for three scripts in
repeatmasker.

- the main RepeatMasker script
- SimpleBatcher.pm
- wublastToCrossmatch.pl

The ISO-8859 encoding prevented the sbang replacement of long paths when
spack uses python3.
2020-01-15 11:31:51 -06:00
Michael Kuhn
b69cf08cfb python: Add 3.7.6 and 3.7.5 (#14497) 2020-01-15 11:24:48 -06:00
Glenn Johnson
e7add79cba Update the icu4c package (#14450)
* Update the icu4c package

This PR makes several changes to the icu4c package

1. add updated version to 65.1
2. modify the default url as project has moved to github
3. set UTF-8 locale to support building from source files in UTF-8
format

Note that the older versions are not available on github so explicit urls
were used. This PR will close #14399.

* Consolidate the urls

Consolidate the URLs in the `version` directives by using an if test in
`url_for_version`.

* Put version and sha256 on same line

* Put top level url back
2020-01-14 22:05:55 -06:00
Glenn Johnson
9f6ac938b7 Update and fix bcftools package (#14505)
* Update and fix bcftools package

This PR updates bcftools to 1.10.2 and is dependent on PR #14504.

This PR also fixes builds of other versions. Versions 1.2-1.4 did not
use autotools so when the packaeg was converted to use autotools with
version 1.6 those older versions could no longer build. Also, those
versions needed to be patched to use an external htsllib. The method of
finding the external htslib is also different for those older versions.

In addition, this PR adds two variants to bcftools:

- libgsl
- perl-filters

Finally, dependencies for perl and python are added, and an unused
dependency for libzip was removed.

* Do not use '@' in variant description

The '@' character in a variant description will cause a problem with
`spack info`.

```
==> Error: Incomplete color format: '@' in
expressions, for @1.8:
```

* Fix error with python2 processing this package
2020-01-14 22:04:47 -06:00
Erik Schnetter
e78f3ed040 Update armadillo (#14499) 2020-01-14 17:49:49 -06:00
Erik Schnetter
ef68791210 Update HDF5 to 1.10.6 (#14500) 2020-01-14 17:49:21 -06:00
Erik Schnetter
8ffb9605d7 h5cpp: New package (#14501) 2020-01-14 17:48:49 -06:00
Justin S
4b1c356a27 trnascan-se: add and configure infernal dependency (#14502)
* trnascan-se: add and configure infernal dep

* trnascan-se: use patch() for infernal config
2020-01-14 17:47:48 -06:00
Erik Schnetter
ae6afaf8e1 mpich: Correct package name in output (#14503) 2020-01-14 17:46:39 -06:00
Glenn Johnson
ed9ab0668f Update htslib and add libcurl variant (#14504)
* Update htslib and add libcurl variant

This PR updates htslib to version 1.10.2 and adds a libcurl variant. The
libcurl variant defaults to True because, while it is optional, it is
highly recommended by the project developers.

Other things done:

- be consistent with quotes

* Change version in variant description

Apparently, `spack info` does not like the `@` character in a variant
description.

```
==> Error: Incomplete color format: '@' in
@1.3:.
```
2020-01-14 17:39:09 -06:00
Tom Scogland
df8ee438e5 stop word splitting from leaking out of setup-env (#14472)
The pathadd function was using setopt to configure zsh for word
splitting, which leaks out of the function and breaks default
functionality in a number of external zsh plugins and packages.  This
switches to emulate -L, just as the spack function uses, to keep the
setting local to the function.
2020-01-14 15:32:57 -08:00
Justin S
7ddbc9bc87 py-yajl: new package at 0.3.5 (#14278)
* py-yajl: new package at 0.3.5

* py-yajl: use PyPI mirror

* py-yajl: use short PyPI url

* remove py-ujson package

* py-yajl: remove unused imports
2020-01-14 17:23:32 -06:00
Justin S
30694aa501 gapfiller: traverse subdirectories in patch (#14375)
* gapfiller: traverse subdirectories in patch

* gapfiller: revert glob function change

* gapfiller: use more precise glob
2020-01-14 17:22:49 -06:00
Stephanie Brink
a18ab8f765 new package: variorum (#13624) 2020-01-14 12:01:01 -08:00
Rao Garimella
eefccd5d22 Update MSTK to 3.3.1 (#14494) 2020-01-14 13:08:57 -06:00
darmac
a04faa8f6b add new package : rocketmq (#14442)
* add new package : rocketmq

* remove url_for_version()
2020-01-14 11:59:40 -06:00
Adam J. Stewart
240a9e6284 Fix parsing of rocketmq URL (#14490) 2020-01-14 11:59:10 -06:00
darmac
7a88c17d3a add new package : py-ansible (#14436)
* add new package : py-ansible

* update license info

* update py-ansible depends
2020-01-14 11:58:48 -06:00
Kshitij Mehta
5c7a3e2d14 codar-cheetah: Added version 0.5 (#14487)
* codar-cheetah: Added version 0.5

* codar-cheetah: Dropped v0.1 as it was not built as a Python package.
2020-01-14 11:55:15 -06:00
Rob Latham
4c65324084 Sometimes debugging symbols are helpful (#14452) 2020-01-14 11:54:38 -06:00
Nichols A. Romero
6d8ec8890a Flang OpenMP target support for NVidia GPUs. (#14486)
* Flang OpenMP target support for NVidia GPUs.

* explictly disable gpu option with else clause.
2020-01-14 11:54:07 -06:00
eugeneswalker
2e5c9eb2e3 upcxx depends on python 2 >= 2.7.5 (#14462) 2020-01-14 11:53:38 -06:00
Elsa Gonsiorowski, PhD
4366977540 libcircle: add develop version from git master branch (#14420)
* libcircle: add develop version from git master branch

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

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

* libcircle: flake8 fix i think

* libcircle: naming things

* libcircle: 🐑 my sacrifice to the flake8 gods

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-13 21:23:56 -06:00
Hadrien G
c51db51bfb verrou: Add support for verrou v2.2.0 (#14480)
* Add support for verrou v2.2.0

* Add myself as a maintainer
2020-01-13 21:23:08 -06:00
t-karatsu
41c40d4ba4 r-mass: Add version '7.3-51.5' and fix checksum. (#14439) 2020-01-13 21:06:44 -06:00
darmac
713d7a3793 add new package : gpdb (#14440)
* add new package : gpdb

* update docstring and license info
2020-01-13 21:04:00 -06:00
darmac
e2e9f02d81 add new package : hive (#14443) 2020-01-13 21:01:27 -06:00
darmac
b33d108c1b add new package : drill (#14444) 2020-01-13 21:00:36 -06:00
darmac
737d2f55a8 Flume (#14445)
* add new package : flume

* add new package : flume
2020-01-13 21:00:06 -06:00
darmac
c41dfb0a75 add new package : flink (#14446) 2020-01-13 20:59:34 -06:00
Gregory Lee
35a696a965 added intel parallel 2020.0 and components (#14451) 2020-01-13 20:51:22 -06:00
Rob Latham
a76ef717bd Support for more libfabric providers (#14453)
Add support for (just about) every provider libfabric knows about
2020-01-13 20:47:48 -06:00
MIchele Martone
fa2e094c81 new package: librsb (#14455)
* new package: librsb

* flake8, be good

* no hardocded FC=gfortran
2020-01-13 20:46:20 -06:00
darmac
6c4c26f538 add new package : keepalived (#14463) 2020-01-13 20:36:16 -06:00
Glenn Johnson
0a666af326 Remove overlapping depends_on statement for py-basemap (#14475)
This PR resolves an overlapping dependency specification for py-basemap.
2020-01-13 20:34:13 -06:00
Rao Garimella
487731e207 Add version 3.3.0 to MSTK spackage (#14476) 2020-01-13 20:33:47 -06:00
Michael Kuhn
8660b0b5b8 python: Fix post-install script without C++ compiler (#14481) 2020-01-13 20:29:02 -06:00
Adam J. Stewart
5b1297378c Add Python 3.8.1 (#14484) 2020-01-13 20:27:57 -06:00
Adam J. Stewart
d78c52c291 Add GDAL 3.0.3 and 2.4.4 (#14485) 2020-01-13 20:27:41 -06:00
Axel Huebl
0d435630db openPMD-api: Depends on ADIOS 2.5.0 (#14489)
Only ADIOS2 versions we support.
2020-01-13 20:24:00 -06:00
Jonathon Anderson
673a725576 New package: qemu (#14184) 2020-01-13 15:52:18 -06:00
Tamara Dahlgren
eb7a4e1029 Fixes #14402 (#14483)
Check if patchelf is executable, not binary, in case a site is wrapping it.
2020-01-13 13:00:14 -08:00
Paul
5afc407faa Add Go version 1.13.6 and 1.12.15 (#14482) 2020-01-13 16:48:27 +01:00
Simon Pintarelli
465577847d SIRIUS, SpFFT: updated package recipes and versions (#14469) 2020-01-13 14:45:36 +01:00
darmac
6edc7a2558 racon: added v1.4.3, v1.4.2, v1.4.0 and v1.3.3 (#14478) 2020-01-13 14:23:33 +01:00
Sajid Ali
8917d58e7a syned: new package at develop (#14468) 2020-01-13 13:45:47 +01:00
Christoph Junghans
9c4479624c gromacs: add v2020 (#14477) 2020-01-13 09:45:20 +01:00
Nichols A. Romero
d1c708bdf3 LLVM-Flang package (#14389)
* Add 20181226 release of pgmath

* 20190329 release of pgmath requires match for CMPLX macro.

* Add llvm-flang package for Flang fork of LLVM

* Add new and old flang releases.

* Add cmake and python dependencies.

* Update dependencies on llvm-flang and pgmath.

* Fix cmake args and change spec to reflect llvm-flang package.

* change copyright date through 2020.

* Reference Flang package more explicitly.

* More robust support for python executable.

* import os no longer needed, picked up by flake8.

* Use built-in target spec. Variant and targets follow style in main LLVM package.

* Get rid of targets list and only support one target for now.

* Sparc does not appear to be supported in Flang.

* Raise InstallError if architecture not supported.
2020-01-11 16:13:03 -06:00
Adam J. Stewart
257e71d87a Reformat Bash tab completion script (#14456) 2020-01-10 11:32:50 -06:00
Adam J. Stewart
52df2309cb Add TensorFlow 2.1.0 (#14429)
* Add TensorFlow 2.1.0

* kafka and ignite are no longer supported
2020-01-09 11:01:51 -06:00
Hadrien G
b982015930 root: Configure ROOT correctly for python3 (#14225)
* Configure ROOT correctly for python3

* Record Python version conflict

* Code editing on a phone sucks
2020-01-09 09:33:10 -06:00
thelfer
ff23672591 new versions of TFEL and MGIS (#14249)
* fixes #967

* Version bump to 0.9.1

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

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

* Quick fix for relocation issues.

* elf relocation fix: cherry-picked from develop branch (#6889)

* Revert "Quick fix for relocation issues."

This reverts commit 57608a6dc4.

* Buildcache: relocate fixes (#6512)

* Updated function which checks if a binary file needs relocation.
  Previously this was incorrectly identifying ELF binaries as symbolic
  links (so they were being excluded from relocation). Added test to
  check that ELF binaries are not considered symlinks.

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

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

* Update write_buildinfo_file method signature to distinguish between
  the spec prefix and the working directory for the binary cache
  package.

* Final changes for v0.11.0 (#6318)

* Fix logo link in README.md to point to the develop branch. (#6969)

* Compiler flag handlers (#6415)

This adds the ability for packages to apply compiler flags in one of
three ways: by injecting them into the compiler wrapper calls (the
default in this PR and previously the only automated choice);
exporting environment variable definitions for variables with
corresponding names (e.g. CPPFLAGS=...); providing them as arguments
to the build system (e.g. configure).

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

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

This also removes redundant build system definitions from tutorial
examples

* Fix type issues with setting flag handlers (#6960)

The flag_handlers method was being set as a bound method, but when
reset in the package.py file it was being set as an unbound method
(all python2 issues). This gets the underlying function information,
which is the same in either case.

The bug was uncovered for parmetis in #6858. This is a partial fix.
Included are changes to the parmetis package.py file to make use of
flag_handlers.

* Bump version to 0.11.1

* Added flags to unit tests + OSX build done once per day (#6988)

* Adding flags to codecov reports

* OSX builds are triggered once a day

* Pull R list_urls from upstream.

* travis: removed /usr/local/include/c++ before installing gcc on OSX (#6515) (#7027)

"brew install gcc" fails for travis build because of an existing
/usr/local/include/c++. This commit removes the offending file
as suggested by brew.

* Fix gfortran 7 detection (#7017)

* Add NameError to exceptions caught from configure_args in module generation (#7173)

* Revert "Binary caching: remove symlinks, copy files instead (#9747)"

This reverts commit 058cf81312.

* Make Spack relocate text files in build caches with relative binaries

* 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

* bugfix: add back r's for invalid regexes

* tutorial basics section: fix gcc install version

* version bump: v0.12.1

* bugfix: bring in .travis.yml from develop

* Add new TFEL' versions (3.0.4, 3.1.4 and 3.2.1). Add new MGIS version (1.0.1). Fix MGIS dependency

* merge with spack:develop

* add missing dependency

* new versions of  and

* Fix MGIS url. Fix duplicate variant in TFEL

* Fix tfel packaging according to Adam J. Stewart' advices

* Fix flake8 warning

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
Co-authored-by: Peter Scheibel <scheibel1@llnl.gov>
Co-authored-by: Greg Becker <becker33@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-09 09:32:17 -06:00
Dr. Christian Tacke
4bd4ed0f84 FairLogger: new package (#14427) (#14427)
* Fixed date on first copyright header.
* Rename dev version to develop
* Improve filter_file calling
* Be explicit for +pretty / ~pretty
2020-01-09 09:29:38 -06:00
asmaahassan90
75760e44f3 Add ADF (#14423)
* Add ADF

* Fix typo and lint

* fix lint again

* one more lint fix

* fix identation

* still stying to fix identation

* one final fix

* import needed libraries

* changes as per reviewer's request

fix setup environment function, enhance recipe

* add import os once again

* chnages as per reviewer's request
2020-01-09 09:28:20 -06:00
darmac
ffb6102a42 tomcat: new package (#14441) 2020-01-09 13:08:59 +01:00
darmac
9ae80a56a3 storm: new package (#14437) 2020-01-09 13:06:48 +01:00
t-karatsu
592a144feb rapidjson: delete '-march' flags when using Fujitsu compiler. (#14435) 2020-01-09 07:04:27 +01:00
Jeffrey Salmond
6b3e173331 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-01-08 15:52:39 -08:00
Glenn Johnson
4a84155caa fix build for qt5 and the Intel compiler (#14387)
* Set conflicts for qt5 and the Intel compiler

This PR sets a `conflicts` statement for QT5 and the Intel compiler.

* New patches for intel compiles

This commit adds two patches to get QT5 to compile with the intel
compilers. The two patches are very similar but the file being patched
was changed substantially between qt-5.11 and qt-5.12. The patch checks
versions of both GCC and Intel compilers to know when to use overflow
builtis. Essentially, GCC must be >= 5 and Intel must be >= 18.

The sqlite dependency needs the `+column_metadata` variant when the
Intel compiler is used. That is made conditional on the compiler but it
might make sense to make that the default for the sqlite dependency.

Some other changes were made based on testing builds of various QT5
versions with several Intel compilers.

- The libxext dependency is still needed for QT5
- A dependency on libxrender is needed
- The gtk option format needs to be constrained at the qt@5.7 level, not
  qt@5.8.
- An extra configure option is needed for the sql plugins RPATH
2020-01-08 13:02:37 -06:00
noguchi-k
f79649d2e3 lrslib: fix return value (#14422) 2020-01-08 12:41:39 -06:00
Chuck Atkins
26ffbe3d21 cmake: Create an optimized release build (#14414) 2020-01-08 13:17:53 -05:00
Corey adams
de93830b9a Adding a new package, scikit-build, which is useful for building Python Extensions (#14417)
* Adding a new package, scikit-build, which is very useful for building python extensions

* Update package.py

* Update package.py

Trying to address flake8 corrections

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

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

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

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

* Update package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-08 10:06:47 -06:00
Tim Haines
2028687efe spack.compilers.clang: add new version check (#14365) 2020-01-08 07:13:36 +01:00
Mark W. Krentel
8a82c930bb hpcviewer: add version 2019.12 (#14419)
Add conflicts for aarch64 and darwin.
2020-01-07 21:51:18 -06:00
Hadrien G
11501532d3 Record a new ROOT/GCC incompatibility (#14371) 2020-01-07 21:35:47 -06:00
Justin S
3e8b4a9b24 py-rapidjson: new package at 0.9.1 (#14280)
* py-rapidjson: new package at 0.9.1

* py-rapidjson: rename to py-python-rapidjson, use PyPI mirror

* py-python-rapidjson: add missing deps

* python-rapidjson: use short PyPI url

* py-python-rapidjson: remove extra dependencies
2020-01-07 16:40:22 -06:00
Justin S
a24498f7ba r-ldheatmap: new package at 0.99-7 (#14405) 2020-01-07 15:33:41 -06:00
Adam J. Stewart
c40ee08c8d NumPy 1.18.1 requires Cython 0.29.14 (#14418) 2020-01-07 15:22:27 -06:00
Sinan
e4f56378b1 Package/opencv: cudacodec fix (#14409)
* create new variant, fix build error

* flake8

* add conflict, re-arrange config arg for cudacodec
2020-01-07 13:19:18 -06:00
eugeneswalker
7546ca6d4d bugfix: Issue #14346, buildcache create s3 push fails when package w same DAG hash already exists at mirror (#14412) 2020-01-07 12:40:37 -06:00
Matthias Diener
777812df4e gdb: add version 8.3.1 (#14413) 2020-01-07 12:38:05 -06:00
Michael Kuhn
be3482de09 ncl: Add missing fontconfig dependency (#14411)
Moreover, cairo needs to have its freetype variant enabled.
2020-01-07 10:55:34 -06:00
Michael Kuhn
a5ae5aca36 gdal: Fix libgeotiff dependency (#14410)
gdal@2.4.3 is missing the libgeotiff dependency.
2020-01-07 10:55:01 -06:00
Massimiliano Culpo
08d0267c9a Spack can automatically remove unused specs (#13534)
* Spack can uninstall unused specs

fixes #4382

Added an option to spack uninstall that removes all unused specs i.e.
build dependencies or transitive dependencies that are left
in the store after the specs that pulled them in have been removed.

* Moved the functionality to its own command

The command has been named 'spack autoremove' to follow the naming used
for the same functionality by other widely known package managers i.e.
yum and apt.

* Speed-up autoremoving specs by not locking and re-reading the scratch DB

* Make autoremove work directly on Spack's store

* Added unit tests for the new command

* Display a terser output to the user

* Renamed the "autoremove" command "gc"

Following discussion there's more consensus around
the latter name.

* Preserve root specs in env contexts

* Instead of preserving specs, restrict gc to the active environment

* Added docs

* Added a unit test for gc within an environment

* Updated copyright to 2020

* Updated documentation according to review

Rephrased a couple of sentences, added references to
`spack find` and dependency types.

* Updated function naming and docstrings

* Simplified computation of unused specs

Since the new approach uses private attributes of the DB
it has been coded as a method of that class rather than a
freestanding function.
2020-01-07 08:16:54 -08:00
Adam J. Stewart
eddb42ed43 Fix outdated bash tab completion (#14392) 2020-01-06 23:18:14 -06:00
Adam J. Stewart
d2ed01a12c Add py-numpy 1.18.1 (#14406) 2020-01-06 17:48:27 -06:00
Justin S
e49a5adf04 r-snpstats: new package at 1.34.0 (#14404) 2020-01-06 16:21:38 -06:00
Justin S
e04a9031b0 r-genetics: new package at 1.3.8.1.2 (#14403) 2020-01-06 16:20:34 -06:00
Thom Troy
0950f5ffa3 Add updated kaldi and openfst (#14398)
* add openfst v1.6.7 and kaldi from 2019-09-29

* revert openfst package version in url
2020-01-06 16:19:42 -06:00
George Hartzell
37b11d0468 Add singularity@3.5.2 (#14401) 2020-01-06 16:12:50 -06:00
darmac
f3c0d23a3c Fastdfs (#14378)
* add new package : fastdfs

* refine install()

* remove redundant fastdfs/fastdfs/package.py

* fix install() error
2020-01-06 16:12:08 -06:00
Justin S
627fd1949d py-ujson: new package at 1.35 (#14279)
* py-ujson: new package at 1.35

* py-ujson: use PyPI mirror, add missing deps

* py-ujson: use short PyPI url
2020-01-06 15:53:26 -06:00
Seth R. Johnson
47750c8800 Fix QT on Linux+clang (#13684)
* Add platform flag to QT for linux+clang

* Extend QT platform support to more compilers and systems

* Unify QT5 configure options

* fixup! Unify QT5 configure options

* fixup! Unify QT5 configure options

* fixup! Unify QT5 configure options

* Fix newer flake8 and mac qt5 configure
2020-01-06 15:47:16 -06:00
Erik Schnetter
7cde359eb8 Nsimd: New package (#14226)
* Nsimd: New package

* Various cleanups as suggested during review
2020-01-06 15:40:58 -06:00
Adam J. Stewart
adffa45264 Reference spack help --spec in spack spec --help 2020-01-06 00:20:19 -08:00
asmaahassan90
c0672eb641 Add py-thirdorder recipe (#12791)
* Add Thirdorder recipe

* Remove white spaces

* Converting recipe to a PythonPackage base class

* remove trailing spaces

* remove line at end of file

* enhance recipe as per reviewer

* fix post_install as requested by reviewer

* rename dir to py-thirderorder

* change checksum to sha256
2020-01-05 12:28:10 -06:00
Adam J. Stewart
f7f4d1a02e Overhaul py-pillow package (#14385)
* Overhaul py-pillow package

* Fix bug where zlib and jpeg were always disabled
2020-01-04 22:49:39 -06:00
Adam J. Stewart
f0532e27da libwebp: CMakePackage -> AutotoolsPackage (#14384) 2020-01-04 22:48:45 -06:00
Glenn Johnson
8c8f3f228c Adjust constraints of gcc-5 (#14388)
This PR adjusts the constraints on isl with GCC-5. GCC-5.1 and GCC-5.2
need isl-0.14, not isl-0.15.
2020-01-04 22:47:06 -06:00
Adam J. Stewart
90f4860402 Add libs property to openjpeg package (#14383) 2020-01-04 16:46:53 -06:00
Adam J. Stewart
4d85979ec4 Add libs property to lcms package (#14382) 2020-01-04 16:46:40 -06:00
Adam J. Stewart
378016d350 py-torchvision 0.4.X does not support py-pillow 7.X.Y (#14381) 2020-01-04 14:21:29 -06:00
Xavier Delaruelle
d83d7ce694 environment-modules: add version 4.4.1 (#14379) 2020-01-04 12:56:09 -06:00
darmac
c22329c5e8 add new package : lucene (#14316)
* add new package : lucene

* update lucene version url
2020-01-04 11:34:28 -06:00
darmac
66bb19a593 add new package : kafka (#14315)
* add new package : kafka

* move url_for_version after depens_on()

* refine list_depth for kafka
2020-01-04 11:33:52 -06:00
darmac
c9729aaab7 add new package : tajo (#14314)
* add new package : tajo

* refine list_depth for tajo
2020-01-04 11:33:09 -06:00
Justin S
b9dc263801 py-intervaltree: new package at 3.0.2 (#14277)
* py-intervaltree: new package at 3.0.2

* py-intervaltree: fix checksum

* py-intervaltree: add py-setuptools dep

* py-intervaltree: use inclusive ranges

* py-intervaltree: change py-test dep type
2020-01-03 15:52:59 -06:00
Satish Balay
f7b9592eb9 petsc: add version 3.12.3 (#14374) 2020-01-03 13:35:54 -06:00
xfzhao
100593b83a new package: bref3 (#14256) 2020-01-03 10:22:09 +01:00
Glenn Johnson
729e43ffac Get py-numpy > 1.16 to build with Intel compiler (#14360)
Beginning with numpy > 1.16 when using older versions of gcc the
`std=c99` flag must be used. The Intel compiler depends on gcc for its
language extensions so the version of gcc is important. If the version
of gcc used by the Intel compiler is one that requires the `-std=c99`
flag then that flag will have to be used for a build with the Intel
compiler as well.

This PR tests the version of gcc used by the Intel compiler and will
abort the build if the gcc version is < 4.8 and inject the `-std=c99`
flag if >= 4.8 and < 5.1. This will cover the system gcc compiler and
any gcc environment module loaded at build time.
2020-01-02 19:30:13 -06:00
Sinan
39a09691c5 package/opencv fix mistake in conflict statement involving gcc (#13959)
* fix mistake in conflict

* extend CudaPackage to resolve cuda-gcc conflicts
2020-01-02 19:18:27 -06:00
Jonathan R. Madsen
e46548c3b8 Updated version to include v3.0.1 (#14353)
* Updated version to include v3.0.1

- this patch has a rather critical MT fix

* Update package.py

- Moved 3.0.1 above 3.0.0
2020-01-02 19:17:54 -06:00
Christoph Junghans
70184c6ea2 fix url for mantevo packages (#14366) 2020-01-02 19:17:32 -06:00
Sajid Ali
c3c1cf13e7 RHEL8 bugfix for module_cmd (#14349) 2020-01-02 15:30:11 -06:00
Glenn Johnson
ba0e144b07 Set preferred version of perl-bioperl (#14354)
Due to formatting differences, the older version of perl-bioperl was
getting picked up as the preferred version. This PR explicitly sets the
newer version to be preferred.
2020-01-02 15:29:35 -06:00
Matthieu Dorier
8e70fa52df added verbose variant to mercury package (#14355) 2020-01-02 15:29:18 -06:00
Gilles Gouaillardet
19c1312eb4 gromacs: depend on hwloc v1 (#14343)
Because of a bug in the current concretizer,
spack install gromacs
fails because gromacs depends on hwloc (default is v2), and Open MPI
(the default MPI library) depends on hwloc v1.
As discussed in https://github.com/spack/spack/issues/14339, this
workaround should be removed once the concretizer is fixed

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2020-01-02 15:16:22 -06:00
Adam J. Stewart
e26f517daf py-scikit-learn: add 0.22.1 (#14350) 2020-01-02 15:15:49 -06:00
Mike Kiernan
85fc6448f8 osu-micro-benchmarks: added version 5.6.2 (#14352) 2020-01-02 15:15:21 -06:00
Sinan
456aae2627 new package: py-zarr (#14326)
* create package py-zarr

* specify setuptools versions

* add more dependencies, improve style

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

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

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

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

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

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

* add dependencies, remove python version constraint

* remove windows specific dependency

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-02 13:07:48 -06:00
Adam J. Stewart
3f190a432e MKL: set appropriate CMake env vars (#14274) 2020-01-02 12:41:42 -06:00
Todd Gamblin
6e828206b6 refactor: cleanup imports in spec.py
The imports in `spec.py` are getting to be pretty unwieldy.

- [x] Remove all of the `import from` style imports and replace them with
  `import` or `import as`
- [x] Remove a number names that were exported by `spack.spec` that
  weren't even in `spack.spec`
2020-01-02 08:05:00 -08:00
Todd Gamblin
9ed34f686f bugfix: cdash tests shoudln't modify working directory
The latest cdash test creates a local cdash_reports directory, but it
should do that in a tmpdir.
2020-01-02 00:01:15 -08:00
Todd Gamblin
4beb9fc5d3 tests: improved spack test command line options
Previously, `spack test` automatically passed all of its arguments to
`pytest -k` if no options were provided, and to `pytest` if they were.
`spack test -l` also provided a list of test filenames, but they didn't
really let you completely narrow down which tests you wanted to run.

Instead of trying to do our own weird thing, this passes `spack test`
args directly to `pytest`, and omits the implicit `-k`.  This means we
can now run, e.g.:

```console
$ spack test spec_syntax.py::TestSpecSyntax::test_ambiguous
```

This wasn't possible before, because we'd pass the fully qualified name
to `pytest -k` and get an error.

Because `pytest` doesn't have the greatest ability to list tests, I've
tweaked the `-l`/`--list`, `-L`/`--list-long`, and `-N`/`--list-names`
options to `spack test` so that they help you understand the names
better.  you can combine these options with `-k` or other arguments to do
pretty powerful searches.

This one makes it easy to get a list of names so you can run tests in
different orders (something I find useful for debugging `pytest` issues):

```console
$ spack test --list-names -k "spec and concretize"
cmd/env.py::test_concretize_user_specs_together
concretize.py::TestConcretize::test_conflicts_in_spec
concretize.py::TestConcretize::test_find_spec_children
concretize.py::TestConcretize::test_find_spec_none
concretize.py::TestConcretize::test_find_spec_parents
concretize.py::TestConcretize::test_find_spec_self
concretize.py::TestConcretize::test_find_spec_sibling
concretize.py::TestConcretize::test_no_matching_compiler_specs
concretize.py::TestConcretize::test_simultaneous_concretization_of_specs
spec_dag.py::TestSpecDag::test_concretize_deptypes
spec_dag.py::TestSpecDag::test_copy_concretized
```

You can combine any list option with keywords:

```console
$ spack test --list -k microarchitecture
llnl/util/cpu.py  modules/lmod.py
```

```console
$ spack test --list-long -k microarchitecture
llnl/util/cpu.py::
    test_generic_microarchitecture

modules/lmod.py::TestLmod::
    test_only_generic_microarchitectures_in_root
```

Or just list specific files:

```console
$ spack test --list-long cmd/test.py
cmd/test.py::
    test_list                       test_list_names_with_pytest_arg
    test_list_long                  test_list_with_keywords
    test_list_long_with_pytest_arg  test_list_with_pytest_arg
    test_list_names
```

Hopefully this stuff will help with debugging test issues.

- [x] make `spack test` send args directly to `pytest` instead of trying
  to do fancy things.
- [x] rework `--list`, `--list-long`, and add `--list-names` to make
  searching for tests easier.
- [x] make it possible to mix Spack's list args with `pytest` args
  (they're just fancy parsing around `pytest --collect-only`)
- [x] add docs
- [x] add tests
- [x] update spack completion
2020-01-01 21:37:02 -08:00
Sinan
de73121ebd new package: py-numcodecs (#14330)
* new package: py-numcodecs

* make msgpack variant
2020-01-01 23:09:29 -06:00
Adam J. Stewart
7a97dc3770 py-numpy: add 1.17.5 (#14341) 2020-01-01 15:05:23 -06:00
Todd Gamblin
9192f046d2 tests: rename checks in github actions
I usually want to look at the Travis CI output, but I currently have to
scroll down to see it. This renames checks to be a bit shorter and more
consistent with Travis's naming, and also so that actions appear lower
than travis and codecov in the list of checks.
2019-12-31 17:59:59 -08:00
Glenn Johnson
1ac0c51dad Modify create clue list so R packages are detected (#12277)
R packages can contain configure scripts so R needs to be before
autotools in the clue list.
2019-12-31 16:44:31 -06:00
Todd Gamblin
ffc91bd86e tests: move mock config.yaml files to common directory
Test configuration files (except modules.yaml) were in the root level of
test/data, but should really just be in their own directory.  The absence
of modules.yaml was also breaking module tests if we got module
preferences after tests started, as the mock modules.yaml was not in the
test directory.
2019-12-31 13:48:01 -08:00
Todd Gamblin
3017584c48 config: remove all module-scope calls to spack.config.get()
This avoids parsing modules.yaml on startup.
2019-12-31 13:48:01 -08:00
Todd Gamblin
9cc013cc0f modules: make the module hook more robust
The module hook would previously fail if there were no enabled module types.

- Instead of looking for a `KeyError`, default to empty list when the
  config variable is not present.

- Convert lambdas to real functions for clarity.
2019-12-31 13:48:01 -08:00
Todd Gamblin
58cb4e5241 hooks: remove pre_run hook to improve startup time.
- Remove legacy yaml_version_check() hook
- Remove the pre_run hook from `hook/__init__.py` and `main.py`

We want to discourage the use of pre-run hooks because they have to run
at startup.  To keep Spack fast, we should do things like this lazily
instead of in hooks that require spidering directories full of modules.
2019-12-31 13:48:01 -08:00
Sinan
5ddbd2fa6c new package: py-msgpack (#14329)
* new package: py-msgpack

* remove python dependency

* remove cython dependency
2019-12-31 15:14:40 -06:00
Adam J. Stewart
5b979aee81 Ignore coverage drop due to lack of macOS tests (#14333)
* Ignore coverage drop due to lack of macOS tests

* Fix codecov tree structure
2019-12-31 15:13:12 -06:00
Jonathan R. Madsen
026534dadb Updated versions and more variants (#14310)
* Updated versions and more variants

- Added 'develop' and '3.0.0' versions
- Added 'tau', 'upcxx', 'gotcha', and 'likwid'

* Added conflict handling for +cupti~cuda

* Removed extra cmake args line
2019-12-31 13:33:41 -06:00
darmac
b70a5245f2 add new package : libfastcommon (#14303)
* add new package : libfastcommon

* update libfastcommon install()
2019-12-31 11:46:07 -06:00
darmac
e92f6c70a6 add new package : moosefs (#14305)
* add new package : moosefs

* remove no-need depens : zlib
2019-12-31 11:45:45 -06:00
darmac
9ff6079986 add new package : opentsdb (#14317)
* add new package : opentsdb

* remove redundant url_for_version()
2019-12-31 11:43:27 -06:00
Glenn Johnson
9a0fd8db9a New package - zziplib (#14318)
This PR adds the zziplib package.
2019-12-31 11:42:59 -06:00
Sinan
62cd7e4490 new package: py-asciitree (#14327)
* new package: py-asciitree

* fix typo
2019-12-31 11:39:43 -06:00
Mark Olesen
3bf7998bb5 Add OpenFOAM 1912 (#14322) 2019-12-31 11:19:05 -06:00
Todd Gamblin
4af6303086 copyright: update copyright dates for 2020 (#14328) 2019-12-30 22:36:56 -08:00
Todd Gamblin
98ad6e39b5 bugfix: add required fixture for CDash authentication test (#14325) 2019-12-30 16:55:05 -08:00
Zack Galbreath
cc96758fdc Add support for authenticated CDash uploads (#14200) 2019-12-30 15:54:56 -08:00
Todd Gamblin
65ef6d5dcb refactor: rename mock_config fixture to mock_low_high_config
This avoids confusion with mock_configuration.
2019-12-30 13:01:31 -08:00
Todd Gamblin
b2e9696052 argparse: lazily construct common arguments
Continuing to shave small bits of time off startup --
`spack.cmd.common.arguments` constructs many `Args` objects at module
scope, which has to be done for all commands that import it.  Instead of
doing this at load time, do it lazily.

- [x] construct Args objects lazily

- [x] remove the module-scoped argparse fixture

- [x] make the mock config scope set dirty to False by default (like the
  regular scope)

This *seems* to reduce load time slightly
2019-12-30 13:01:31 -08:00
Todd Gamblin
e7dc8a2bea tests: refactor tests to avoid persistent global state
Previously, fixtures like `config`, `database`, and `store` were
module-scoped, but frequently used as test function arguments.  These
fixtures swap out global on setup and restore them on teardown.  As
function arguments, they would do the right set-up, but they'd leave the
global changes in place for the whole module the function lived in.  This
meant that if you use `config` once, other functions in the same module
would inadvertently inherit the mock Spack configuration, as it would
only be torn down once all tests in the module were complete.

In general, we should module- or session-scope the *STATE* required for
these global objects (as it's expensive to create0, but we shouldn't
module-or session scope the activation/use of them, or things can get
really confusing.

- [x] Make generic context managers for global-modifying fixtures.

- [x] Make session- and module-scoped fixtures that ONLY build filesystem
  state and create objects, but do not swap out any variables.

- [x] Make seeparate function-scoped fixtures that *use* the session
  scoped fixtures and actually swap out (and back in) the global
  variables like `config`, `database`, and `store`.

These changes make it so that global changes are *only* ever alive for a
singlee test function, and we don't get weird dependencies because a
global fixture hasn't been destroyed.
2019-12-30 13:01:31 -08:00
Todd Gamblin
e839432472 tests: make env tests that use configs non-destructive
Environment tests pushed config scopes but didn't properly remove them.

- [x] use `with env:` context manager instead of `env.prepare_config_scopes()`
2019-12-30 13:01:31 -08:00
Todd Gamblin
8e8235043d package_prefs: move class-level cache to PackagePref instance
`PackagePrefs` has had a class-level cache of data from `packages.yaml` for
a long time, but it complicates testing and leads to subtle errors,
especially now that we frequently manipulate custom config scopes and
environments.

Moving the cache to instance-level doesn't slow down concretization or
the test suite, and it just caches for the life of a `PackagePrefs`
instance (i.e., for a single cocncretization) so we don't need to worry
about global state anymore.

- [x] Remove class-level caches from `PackagePrefs`
- [x] Add a cached _spec_order object on each `PackagePrefs` instance
- [x] Remove all calls to `PackagePrefs.clear_caches()`
2019-12-30 13:01:31 -08:00
Adam J. Stewart
0699f8ac9d Add py-numpy 1.16.6 (#14313) 2019-12-29 20:04:04 -06:00
Glenn Johnson
25f217f5f2 Add support for graphite2 support to harfbuzz (#14300)
This PR adds graphite2 support to harfbuzz. This PR depends on PR #14299, which added the graphite2 package to spack.
2019-12-29 12:40:09 -06:00
Todd Gamblin
4d6462247e externals: avoid importing jinja2 on startup (#14308)
Jinja2 costs a tenth to a few tenths of a second to import, so we should avoid importing it on startup.

- [x] only import jinja2 within functions
2019-12-28 14:43:23 -08:00
Todd Gamblin
2dafeaf819 bugfix: colify_table should not revert to 1 column for non-tty (#14307)
Commands like `spack blame` were printig poorly when redirected to files,
as colify reverts to a single column when redirected.  This works for
list data but not tables.

- [x] Force a table by always passing `tty=True` from `colify_table()`
2019-12-28 11:26:31 -08:00
darmac
855f9afa6e add new package : jafka (#14304) 2019-12-28 12:20:55 -06:00
Glenn Johnson
bd345e16b8 New package - TECkit (#14301)
This PR adds the teckit package to spack.
2019-12-28 12:20:20 -06:00
Glenn Johnson
12692424a7 New package - graphite2 (#14299)
* New package - graphite2

This PR adds the Graphite2 package to Spack.

* Replace smart quotes with standard quotes
2019-12-28 12:19:21 -06:00
Johannes Blaschke
c0d5c360d5 setup-env-test: fix pipe redirect (#14306) 2019-12-27 22:37:47 -08:00
Dr. Christian Tacke
8ee75e19bd Improve info variant header (#14275)
In "spack info" the Variants header currently has two blank
lines under it. That's too much. It looks like the actual
content belongs to something else.

Instead underline the headers to make things more obvious.
2019-12-27 15:21:15 -08:00
Glenn Johnson
2166a91ec5 New package - libpaper (#14302)
This PR adds the paper library to spack.
2019-12-27 15:18:16 -08:00
Gregory Lee
6c957b6b62 added build dependences required after cairo package change (#14297)
* added build dependences required after cairo package change

* fixed pango build dependencies
2019-12-27 12:13:50 -06:00
Gregory Lee
08898a2ad7 patch cairo build files for build without fontconfig fixes #14112 (#14296)
* patch cairo build files for build without fontconfig

* added build dependencies for cairo
2019-12-26 16:20:16 -06:00
asmaahassan90
3315700da9 Add Avizo Recipe (#12792)
* Add Avizo Recipe

* make changes as per review

* fix home url and linting

* Fix url

* fix identation

* change checksum to sha256 instead of md5

* fix installation

* fix lint

* fix identation

* make it compatible with python 2.6

* enhancing recipe and fixing avizo licensing

changes as per suggestions from reviewer; fix licensing

* fix identation

* use new setup_run_environment function
2019-12-26 14:43:51 -06:00
t-karatsu
c7f1e2835b aspa: Fix common errors. (#14295)
* aspa: Fix common errors.

* defined new member 'Vec_value_type' in 'self' namespace.

* fix narrowing error.

* fix patch about typecast.
2019-12-26 14:42:59 -06:00
Massimiliano Culpo
2aa8132afd Migrate build tests from Travis to Github Actions (#13967)
This PR moves build smoke tests from TravisCI and migrates them to Github Actions. The result is that build tests are performed in parallel with unit tests and they don't hog additional resources on Travis. The workflow will not run if a PR only changes packages in the built-in repository, but will always run on pushes to develop or master.

* Removed build tests from Travis and passed them to Github Actions
* Store ~/.ccache in Github Actions cache
* Add filters on paths and make sure this workflow don't run
* Use paths-ignore and exclude only files in the built-in repo
* Added a badge to README.md
2019-12-25 00:06:48 -08:00
Todd Gamblin
61b4ad1837 tests: finish removing pyqver from the repository (#14294)
Remove a few remaining mentions of the pyqver package, which was removed in #14289.
2019-12-24 17:37:03 -08:00
Massimiliano Culpo
d333e14721 tests: check min required python version with vermin (#14289)
This commit removes the `python_version.py` unit test module
and the vendored dependencies `pyqver2.py` and `pyqver3.py`.
It substitutes them with an equivalent check done using
`vermin` that is run as a separate workflow via Github Actions.

This allows us to delete 2 vendored dependencies that are unmaintained
and substitutes them with a maintained tool.

Also, updates the list of vendored dependencies.
2019-12-24 09:28:33 -08:00
t-karatsu
1e2c9d960c a64fx: fix typo in GCC flags (#14286) 2019-12-24 17:45:03 +01:00
Matthias Diener
6a084a8289 intel-pin: add version 3.11 (#14292) 2019-12-24 10:06:51 -06:00
Matthias Diener
37c1d2d004 cmake: add version 3.16.2 (#14291) 2019-12-24 10:05:54 -06:00
Matthias Diener
ee8bc0df98 scons: add version 3.1.2 (#14290) 2019-12-24 10:05:18 -06:00
健美猞猁
748c552992 Bump nektar to 5.0.0. (#14288) 2019-12-24 10:01:16 -06:00
Todd Gamblin
7652d1a4c1 Merge branch 'releases/v0.13' into develop 2019-12-24 01:04:41 -08: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
d7f2a32887 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 18:36:56 -08:00
Todd Gamblin
78b84e4ade 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 18:36:56 -08:00
Todd Gamblin
9b90d7e801 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 18:36:56 -08:00
Todd Gamblin
c83e365c59 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 18:36:56 -08:00
Todd Gamblin
0fb3280011 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 18:36:56 -08:00
Todd Gamblin
6c9467e8c6 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 18:36:56 -08:00
Todd Gamblin
bb517fdb84 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 18:36:56 -08:00
Todd Gamblin
eb8fc4f3be 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 18:36:56 -08:00
Todd Gamblin
779ac9fe3e 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 18:36:56 -08:00
Gregory Lee
99dee90372 added master branch version to mpip (#14284) 2019-12-23 17:24:19 -06:00
Christoph Junghans
643cc95055 gromacs: add v2019.5 (#14285) 2019-12-23 17:24:03 -06:00
Nicholas Sly
9573fa2299 Added conflict with %pgi in libpciaccess package.py with relevant links in comments. (#14281) 2019-12-23 15:31:59 -06:00
Piotr Luszczek
ae8a72c0da netlib-scalapack: Add int overflow patch (#14276) 2019-12-23 13:06:29 -06:00
Adam J. Stewart
e2ec1c76ce Add py-boto3 1.10.44 (#14271) 2019-12-22 21:39:25 -06:00
Timo Heister
fa0d710626 add new package : libdap4 (#14267) 2019-12-22 21:36:47 -06:00
Adam J. Stewart
ded5cbec70 Add py-numpy 1.18.0 (#14269) 2019-12-22 21:36:28 -06:00
Adam J. Stewart
0950442ea0 Add awscli 1.16.308 (#14270) 2019-12-22 21:36:14 -06:00
Adam J. Stewart
013ff54731 Add py-botocore 1.13.44 (#14272) 2019-12-22 21:35:39 -06:00
Piotr Luszczek
2a3bf87484 Add new release and remove extraneous patches (#14273) 2019-12-22 18:10:19 -08:00
Glenn Johnson
3690bc44bd Set full xiar path when building cp2k with intel compiler (#14268) 2019-12-22 16:19:12 -06:00
justbennet
b83365c945 Updating preferred OpenMPI version to 3.1.5 (#14266) 2019-12-22 11:59:21 -08:00
Axel Huebl
249c1d9d81 openPMD-api: 0.10.3 (#14265)
Add latest release.
2019-12-22 10:01:28 -06:00
xfzhao
a10253a667 new module beagle (#14257) 2019-12-21 18:22:56 -06:00
Sajid Ali
8fe2c0a4fe Bump py-slepc4py version, update url (#14264)
* version bump

	modified:   var/spack/repos/builtin/packages/py-slepc4py/package.py

* slepc: update URL
slepc4py: add 3.11.0 and update maintainers

Co-authored-by: Satish Balay <balay@mcs.anl.gov>
2019-12-21 18:22:40 -06:00
Sajid Ali
96063f9168 use sys.executable instead of python in _source_single_file (#14252) 2019-12-21 00:02:28 -08:00
Sajid Ali
8522d1f0cf build bazel with jdk (#14258)
* build bazel with jdk

* Flake 8

* Fix typo
2019-12-20 19:40:05 -06:00
Massimiliano Culpo
80495d83ed microarchitectures: fix ppc flags for clang (#14196) 2019-12-20 14:40:54 -08:00
Adam J. Stewart
87d0ac804e npm: add Python 3 support (#14255) 2019-12-20 16:38:35 -06:00
Massimiliano Culpo
497fddfcb9 Fetching from URLs falls back to mirrors if they exist (#13881)
Users can now list mirrors of the main url in packages.

- [x] Instead of just a single `url` attribute, users can provide a list (`urls`) in the package, and these will be tried by in order by the fetch strategy.

- [x] To handle one of the most common mirror cases, define a `GNUMirrorPackage` mixin to handle all the standard GNU mirrors.  GNU packages can set `gnu_mirror_path` to define the path within a mirror, and the mixin handles setting up all the requisite GNU mirror URLs.

- [x] update all GNU packages in `builtin` to use the `GNUMirrorPackage` mixin.
2019-12-20 14:32:18 -08:00
Nichols A. Romero
1b93320848 PGMATH library symbols patch (#14254)
* Add symbols patch

* Apply symbols patch to pgmath

* Add github issue number for symbols patch.

* Add naromero77 as a maintainer.

* Patch only applied to March 2019 release and master.
2019-12-20 16:23:38 -06:00
Adam J. Stewart
abf8e09fe5 Add py-pyinstrument package (#14241) 2019-12-20 16:17:22 -06:00
Adam J. Stewart
73dbda8c5a node-js: add Python 3 support (#14242)
* node-js: add Python 3 support

* Update node-js, fix Python 3 support in v12
2019-12-20 16:17:04 -06:00
Hadrien G
3dd59c569e Latest versions of CMake need a hand for Python detection (#14247) 2019-12-20 14:52:53 -06:00
Hadrien G
3bb9d0feb4 root: Record that old versions of ROOT don't support modern GCC (#14250)
* Record that old versions of ROOT don't support modern GCC

* Well, actually I don't know about 6.07

* Fix typo and follow odd version recommendation from @chissg
2019-12-20 12:55:16 -06:00
Nichols A. Romero
f408535f2d QE Update Dec 2019 (#14238)
* Add QE 6.5

* Support for serial HDF5 case with serial (no mpi) QE is now supported but requires a patch for 6.4.1 and 6.5.

* Add naromero77 as a maintainer.
2019-12-20 12:53:36 -06:00
Hadrien G
97afe560d5 Do not apply the unuran patch to ROOT 6.06/xy, it is not compatible (#14245) 2019-12-20 12:53:20 -06:00
Adam J. Stewart
d01ceabca2 Add py-pyinstrument-cext package (#14240) 2019-12-20 11:59:18 -06:00
Hadrien G
71d10d76dc Adding myself as a ROOT maintainer (#14251) 2019-12-20 11:48:54 -06:00
Andras Wacha
72eef17ff9 Added hwloc dependency to gromacs (#14244) 2019-12-20 08:49:35 -07:00
Patrick Schratz
48fb5b8b17 R: added v3.6.2 (#14248) 2019-12-20 16:25:09 +01:00
Hadrien G
a5cab03d10 ACTS: added v0.13.0 and v0.12.1 (#14246) 2019-12-20 16:05:48 +01:00
Ethan Stam
e89915eacc New package: cinema_lib (#14231)
* Start cinema package

* Remove boilerplate and add description

* Formatting for pep8

* Correct milestone tag

* 'master' instead of 'develop'

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

* Two variants, both with numpy and other small changes

* When +image for scikit

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-19 19:37:22 -06:00
Chris Green
dc17d548c8 Add missing __init__.py under test, and correct bad file name from #13889. (#14228) 2019-12-19 17:27:53 -06:00
Chris Green
530a67c280 root: Add chissg as maintainer. (#14235) 2019-12-19 17:27:35 -06:00
Adam J. Stewart
01edc28fde Add py-scipy 1.4.1 (#14230) 2019-12-19 14:33:20 -06:00
Adam J. Stewart
ae52f41448 dmd: setup dependent build environment (#14198)
* dmd: setup dependent build environment

* Fix call signature of setup_dependent_build_environment
2019-12-19 12:47:04 -06:00
Hadrien G
5940ec0d74 Remove python2-ism in root package (#14223) 2019-12-19 12:45:09 -06:00
Todd Gamblin
af249d3cf6 package_sanity: add a test to enforce no nonexisting dependencies in builtin
We shouldn't allow packages to have missing dependencies in the mainline.

- [x] Add a test to enforce this.
2019-12-18 21:10:31 -08:00
Todd Gamblin
531f370e0d possible_dependencies() now reports missing dependencies
- Add an optional argument so that `possible_dependencies()` will report
  missing dependencies.
- Add a test to ensure it works.
- Ignore missing dependencies in `possible_dependencies()` by default.
2019-12-18 21:10:31 -08:00
Todd Gamblin
81b147cc0a package: add spack.package.possible_dependencies method
- this version allows getting possible dependencies of multiple packages
  or specs at once.

- New method handles calling `PackageBase.possible_dependencies` multiple
  times and passing `visited` dict around.
2019-12-18 21:10:31 -08:00
Todd Gamblin
a3799b2c7b 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-18 16:07:28 -08:00
Todd Gamblin
0e9c8d236c 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-18 16:07:28 -08:00
Todd Gamblin
f73cdac731 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-18 16:07:28 -08:00
Todd Gamblin
33335c9d0a 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-18 16:07:28 -08:00
t-karatsu
92c2c47f72 aspell: Rename 'darwin.patch' and apply it to all targets. (#14206) 2019-12-18 17:10:05 -06:00
Greg Sjaardema
8da6fcf324 NETCDF-C: Add latest release 4.7.3 (#14214)
Added checksum for latest NetCDF release 4.7.3
2019-12-18 17:09:50 -06:00
Greg Becker
67603d71bc Add dependencies for hpcrypt (#8067)
* Add dependencies for hpcrypt

* address review comments

* flake

* license-fix

* fix checksums

* Update py-hvace homepage

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

* update py-hvac url

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-18 17:09:26 -06:00
t-karatsu
135cf4835f amrex: Define module directry when compiling with Fujitsu compiler. (#14124) 2019-12-18 13:47:21 -06:00
Michael Kuhn
52894f5c71 Fix pkgconfig dependencies (#14175)
pkgconfig is the virtual provider, pkg-config is an implementation.
2019-12-18 13:46:45 -06:00
Greg Sjaardema
5052ce803d PNETCDF: Update to include latest release 1.12.1 (#14213)
Added checksum for recent 1.12.1 release.
2019-12-18 13:45:19 -06:00
Greg Sjaardema
99a19596c4 SEACAS: Update to include new versions (#14212)
Added checksum and tag name for last two SEACAS releases.
2019-12-18 13:45:03 -06:00
Todd Gamblin
52ebc19b4e bugfix: don't fail if checking for "real" compiler version
doesn't understand a custom, user-defined compiler version.  However, if
the compiler's version check fails, you can't build anything with the
custom compiler.

- [x] Be more lenient: fall back to the custom compiler version and use
  it verbatim if the version check fails.
2019-12-18 11:37:59 -08:00
Todd Gamblin
4eb54b6358 bugfix: pgcc -V returns 2 on power machines
`pgcc -V` was failing on power machines because it returns 2 (despite
correctly printing version information).  On x86_64 machines the same
command returns 0 and doesn't cause an error.

- [x] Ignore return value of 2 for pgcc when doign a version check
2019-12-18 11:37:59 -08:00
Adam J. Stewart
fa5e8aa876 wireshark: remove non-existing dependencies (#14209) 2019-12-18 12:55:15 -06:00
Adam J. Stewart
09b17ea147 py-scikit-optimize: fix test dependency (#14210) 2019-12-18 12:47:35 -06:00
Marc Mengel
0607579fd3 New package: py-zc-lockfile (#13586)
* package py-zc-lockfile

* package py-zc-lockfile

* autopep8, docutils cleanup

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

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

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

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

* dependency at wrong level

* license bits

* Remove py-zc-buildout dependency
2019-12-18 12:17:39 -06:00
darmac
201a62d957 add new package : filebench (#14158)
* add new package : filebench

* remove alpha version and duplicated autoheader cmd

* refine automake cmd in sh()

* refine filebench url as a stable tarball link
2019-12-18 11:30:10 -06:00
darmac
5a1b6e1cfc add new package : hama (#14159)
* add new package : hama

* mv hama/hama/package.py to hama/package.py
2019-12-18 11:29:48 -06:00
darmac
6e12c49c28 Hbase (#14161)
* add new package : hbase

* add hbase description

* refine hbase version and depends
2019-12-18 11:29:30 -06:00
Chris Green
ae3eac0b19 root: Rationalize and improve version, variant and ROOT option handling. (#14203)
* root: Rationalize and improve version, variant and ROOT option handling.

* Completely re-vamp CMake option handling for readability and maintainability:
  * Three categories of option: control, builtin and feature, alphabetically sorted.
  * Each option is described as a list: an option name followed by an optional value which is either Boolean or a string representing the name of a variant. If the value is omitted, it defaults to the option name.
  * New functions `_process_opts()` and `_process_opt()` (nested) to turn all supplied option/value specifications into CMake arguments.
  * Remove overly-terse per-option comments in favor of (much) more comprehensive notes in README.md.
* Variants and conflicts:
  * Remove `test` variant in favor of pegging ROOT `testing` option to the value of `self.run_tests` since the install is unaffected, per ROOT developer.
  * Remove commented-out and never-functional variants: `asimage`, `avahi`, `kerberos`, `ldap`, `libcxx`, `odbc`, `oracle`, `pythia8`, `xinetd`.
  * New variant `vmc` (default `OFF`) to control the Virtual Monte Carlo interface.
  * Conflict: `+opengl` is incompatible with `~x`.
  * Conflict: `http` is now an unconditional conflict due to dependency issues (see README.md).
* Remove commented-out and non-existent dependencies `avahi`, `kerberos`, `ldap`, `libcxx`, `odbc`, `oracle`, `pythia`, `veccore` (per #13949).
* New and changed options:
  * Option `pch` was inadvertently set to `OFF` due to its dependence on a nonexistent variant `pch`. As it happens its value is ignored in the ROOT configuration handling, so there was no deleterious effect. It has been fixed to `ON` to better reflect actual behavior pending enablement of tuntime C++ modules.
* Add new versions 6.18.0{0,2,4}:
  * Require CMake 3.9 for 6.18.00+.
  * Add conflicts for variants `qt4` and `table` representing ROOT build options for which support was discontinued. Remove redundant conflict on \@master.
  * C++ standard is now specified with `-DCMAKE_CXX_STANDARD=X` rather than `-Dcxx=X`.
* Remove old version 5.34.38 (wrong build system).

See README.md for more details of option-related changes.

* Flake8

* `rpath` option is a control option rather than a feature.
2019-12-18 11:14:47 -06:00
Jimmy Tang
3511245ca4 Add abseil-cpp package (#14208) 2019-12-18 09:33:44 -06:00
Hadrien G
9583bde739 Add new DD4hep release and some forgotten build requirements (#14195)
* Add new DD4hep release and some forgotten build requirements

* PR review suggestions

Use master naming convention for development branch, and put versions in decreasing order.
2019-12-18 09:32:23 -06:00
Sinan
a24b973fa4 package/gdal add v2.4.3 (#14204) 2019-12-17 21:57:39 -06:00
Nathan Pinnow
60a22f1a7a Update and Fix ROSE Package (#14186)
* rose: Update boost dependency for rose

* rose: Updated rose to version 0.9.12.45

* rose: Updated jdk dependency

* rose: Updated rose to version 0.9.13.0

* rose: Fixed formatting

* rose: Added maintainer and switch dependency to java@8
2019-12-17 18:18:24 -06:00
Axel Huebl
5db646d768 openPMD-api: 0.10.2 (#14201)
Add the latest release of openPMD-api, v0.10.2
2019-12-17 18:16:26 -06:00
darmac
07f522bed6 add new package : openresty (#14169)
* add new package : openresty

* remove rc version
2019-12-17 14:30:19 -06:00
darmac
6a0d15a5c9 add new package : nicstat (#14173)
* add new package : nicstat

* refine nicstat edit operation

* refine CMODEL regex expression
2019-12-17 14:29:56 -06:00
Brian Van Essen
dc69256a59 Added package for Half C++ header-only library. (#14189)
* Added package for Half C++ header-only library.

Fixed an checksum for Hydrogen 1.3.2.  Cleaned up the Clara package to
not create an empty bin directory.

* Fixed flake8

* Added maintainer
2019-12-17 14:29:31 -06:00
darmac
a52df46e2c add new package : haproxy (#14160)
* add new package : haproxy

* add url_for_version() and refine haproxy build code
2019-12-17 12:50:10 -06:00
darmac
cd8be44f62 add new package : cosbench (#14171)
* add new package : cosbench

* add cosbench depends and remove unstable version

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

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

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-17 12:48:27 -06:00
Sajid Ali
f657f73e94 tf verbosity to better enable debugging (#14177)
* tf verbosity

* Add more debug flags

	modified:   var/spack/repos/builtin/packages/py-tensorflow/package.py

* Fix later

* More debug/verbose options.

	modified:   var/spack/repos/builtin/packages/py-tensorflow/package.py
2019-12-17 12:46:34 -06:00
Shintaro Iwasaki
1a41380649 sollve: add a version 1.0a2 (#14188) 2019-12-17 12:38:32 -06:00
Yuanqi Wang
8bda848cb9 LAMMPS: Fix USER-REAXC package variant (#14192) 2019-12-17 12:35:06 -06:00
Adam J. Stewart
18c2029fef Fix argparse rST parsing of help messages (#14014)
Thanks!
2019-12-17 10:23:22 -08:00
Adam J. Stewart
189eb5b883 Add py-scipy 1.4.0 (#14193) 2019-12-17 10:00:03 -06:00
t-karatsu
d831db37ca adios2: Fix use of builtin __clear_cache (#14123) 2019-12-17 08:08:22 -05:00
Massimiliano Culpo
5eca4f1470 microarchitectures: readable names for AArch64 vendors (#13825)
Vendors for ARM come out of `/proc/cpuinfo` as hex numbers instead of readable strings.

- Add support for associating vendor names with the hex numbers.
- Also move these mappings from Python code to `microarchitectures.json`
- Move darwin feature name mappings to `microarchitectures.json` as well
2019-12-17 00:47:50 -08:00
Todd Gamblin
a4ff92e42d mrnet: remove nonexisting cti dependency (#14178)
MRNet had an optional dependency on `cti`, which doesn't exist.  Remove
it from the repo, at least until someone adds `cti` back.
2019-12-16 21:03:38 -06:00
Massimiliano Culpo
9ceec7e219 Harden shell detection when procfs is available (#13950) 2019-12-16 14:51:58 -08:00
Hadrien G
e366d5b559 New ACTS version (#14180) 2019-12-16 10:25:37 -06:00
darmac
9ece934084 add new package : py-s3cmd (#14166)
* add new package : py-s3cmd

* add some depends and move depends behind the version
2019-12-16 10:20:15 -06:00
Massimiliano Culpo
f80491826b 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-16 10:56:54 +01:00
Greg Becker
9f1d728646 match bootstrapped compiler to architecture (#14059) 2019-12-14 16:42:46 -08:00
Peter Scheibel
60580f5871 package hash: gracefully handle @when with non-string args (#14153)
* when constructing package hash, default to including a method in the content hash if we can't determine whether it would be included by examining the AST
* add a test for updated content-hash calculations
* refactor content hash tests to eliminate repeated lines
2019-12-14 14:31:39 -08:00
Mark W. Krentel
410bce91d4 hpctoolkit: update git branch for version 'gpu' (#14155) 2019-12-14 12:37:04 -06:00
Brian Van Essen
34128ca70d Updated Hydrogen version to 1.3.2 (#14156) 2019-12-14 12:36:33 -06:00
darmac
5e9fb6b309 add new package : memcached (#14162) 2019-12-14 12:28:51 -06:00
darmac
986df8c233 add new package : jstorm (#14163) 2019-12-14 12:27:39 -06:00
darmac
0f0e2c4397 add new package : logstash (#14164) 2019-12-14 12:26:43 -06:00
darmac
72390ecd62 add new package : pig (#14165) 2019-12-14 12:26:14 -06:00
darmac
43712b4982 add new package : rabbitmq (#14167) 2019-12-14 12:21:09 -06:00
darmac
2f4521d418 add new package : zookeeper (#14170) 2019-12-14 12:19:40 -06:00
darmac
f40520c6bf add new package : bind9 (#14172) 2019-12-14 12:16:39 -06:00
darmac
33028c8955 add new package : rt-tests (#14174) 2019-12-14 12:12:01 -06:00
Andras Wacha
f757b6f4e5 Patch: explicitly use xbitmaps include dir in the automake package (#14128)
* Patch: explicitly use xbitmaps include dir in the automake package

* Added dependencies required for autoreconf: libtool, autoconf, automake, m4
2019-12-14 10:54:27 -06:00
darmac
7e668b1153 add new package : cassandra (#14144)
* add new package : cassandra

* make stable version as a preferred one
2019-12-13 22:21:18 -06:00
Adam J. Stewart
43e9fe95ea Add latest version of jq (#14134) 2019-12-13 15:44:09 -06:00
Matthieu Dorier
f589f69a6c FIX: Making berkeley-db package fetch from correct links (#14147)
* making berkeley-db package fetch from oracle website

* removed blank space

* making flake8 happy

* fixing typos and order of versions
2019-12-13 15:19:59 -06:00
Dan Lipsa
0167ceb104 Add shared option to ParaView. (#14131)
* Add shared option to ParaView.

* Use append for one attribute
2019-12-13 15:19:31 -06:00
Adam J. Stewart
83baf35246 Add new aws-parallelcluster package (#14139) 2019-12-13 12:55:15 -06:00
Adam J. Stewart
268914e7a2 Add latest version of py-tabulate (#14138) 2019-12-13 12:54:59 -06:00
Adam J. Stewart
988b377382 Add latest version of py-ipaddress (#14137) 2019-12-13 12:54:42 -06:00
Adam J. Stewart
da501564cb Add latest version of py-botocore (#14136) 2019-12-13 12:54:23 -06:00
Adam J. Stewart
5db615feca Add latest version of py-boto3 (#14135) 2019-12-13 12:54:05 -06:00
Adam J. Stewart
2e19a9343b Add latest version of oniguruma (#14133) 2019-12-13 12:53:44 -06:00
Seth R. Johnson
c659408368 Update CMake to version 3.16 (#14152) 2019-12-13 12:53:19 -06:00
noguchi-k
3e5c926a95 gmodel: fix error (#14140) 2019-12-13 12:53:03 -06:00
darmac
481a920fe8 add new package : activemq (#14142) 2019-12-13 12:51:59 -06:00
darmac
3344bb0a96 add new package : alluxio (#14143) 2019-12-13 12:51:30 -06:00
Scott Wittenburg
2520806df2 docker: add file, adjust locale, and use python3 for ubuntu (#13508)
* docker: add missing module to ubuntu images
* docker: fix issue with missing locale
* docker: one package per line + rm python2 support
* docker: ubuntu image also needs 'file' for buildcache creation
2019-12-13 10:22:20 -08:00
Zack Galbreath
0f5724e908 Split out CDash options to a separate help document (#13704)
Prevent `spack help install` from getting too cluttered with CDash-specific documentation.
2019-12-13 10:15:22 -08:00
Peter Josef Scheibel
8c2305e867 Patch fetching: remove unnecessary argument 2019-12-13 08:38:50 +01:00
Peter Josef Scheibel
8199f22e7c 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-13 08:38:50 +01:00
Peter Josef Scheibel
b62ba7609d 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-13 08:38:50 +01:00
Peter Josef Scheibel
754dd6eb1f 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-13 08:38:50 +01:00
Peter Josef Scheibel
b2cc50aa6a 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-13 08:38:50 +01:00
Peter Josef Scheibel
b64f458102 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-13 08:38:50 +01:00
darmac
03203a86b4 fix libev url (#14066)
* fix libev url

* remove list_url in libev
2019-12-12 22:58:33 -06:00
Sinan
0d7b9de3be compile python with sqlite loadable extensions (#14132) 2019-12-12 22:58:16 -06:00
t-karatsu
ddfca1b2f2 cmake: Fix checksum of 4075.patch (#14125) 2019-12-12 13:57:23 -05:00
iarspider
d98b433a3c Fix py-jupyter-client version ranges (#14126) 2019-12-12 11:31:47 -06:00
Justin S
c2f45fb4da charmpp: fix build failing from broken hardlink (#13922)
* charmpp: fix build failing from broken hardlink

* charmpp: use setup_dependent_build_environment
2019-12-11 20:20:05 -06:00
Glenn Johnson
fec3a852c7 Fix replacement of embedded 'gcc' in augustus (#14116)
PR #13975 added makefile filtering to replace gcc/g++ with the spack
compiler. This conflicts with other filtering that is done in the package to
add paths for dependencies. The text of the dependency paths might
have 'gcc' in the path name, depending on the install_path_scheme, and
that was being replaced by the new compiler filters. That would mangle
the path to the dependecy resulting in a failed build.

This PR moves the compiler filters to be before the other filters to
make sure that the compiler is set before the dependency paths.
2019-12-11 20:19:27 -06:00
iarspider
695c09a8b7 Add missing dependency on setuptools to py-subprocess32 (#14074)
* Add missing dependency on setuptools to py-subprocess32

* Update package.py

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

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

* Update package.py
2019-12-11 20:18:39 -06:00
Brian Van Essen
53f73e280a Bugfix for bad hydrogen tags (#14119) 2019-12-11 20:17:10 -06:00
Adam J. Stewart
1f9d37c346 TensorFlow: must specify CUDA compute capabilities (#14118)
* TensorFlow: must specify CUDA compute capabilities

* Correctly restrict cuda_arch version ranges
2019-12-11 20:16:52 -06:00
Adam J. Stewart
7ec1917d9b Add try-except for Python installation (#14122) 2019-12-11 20:16:33 -06:00
Adam J. Stewart
47615566ea Fix JDK 8 download URLs (#14120) 2019-12-11 20:16:16 -06:00
iarspider
aac45154fd Fix py-ppft source extension (#14077)
* Fix py-ppft source extension

* PEP-8 fix

* Update package.py

* Apply suggestions from code review

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-11 14:05:14 -06:00
iarspider
d07e988fbc Fix py-pox build recipe (#14078)
* Fix py-pox build recipe

* PEP-8 fix

* Update package.py

* Apply suggestions from code review

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-11 14:04:50 -06:00
iarspider
a254f7011e Fix py-notebook for Python2 (#14079)
* Fix py-notebook for Python2

* PEP-8 fix

* Update package.py

* Update package.py

* Syntax fix

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-11 14:04:33 -06:00
iarspider
34adebc7cf Fix py-hypothesis (#14084)
* Fix py-hypothesis

* Update package.py

* Update package.py

* Update package.py
2019-12-11 14:04:18 -06:00
Dan Lipsa
6f7a58b142 Fix constexpr for llvm 9.0 (#14095) 2019-12-11 14:03:57 -06:00
Adam J. Stewart
69a91b5b6b Add grass 7.8.2 (#14115) 2019-12-11 14:00:38 -06:00
Brian Van Essen
ee0b9bfa5b Added new versions of hydrogen (#14103) 2019-12-11 12:23:25 -06:00
Michael Kuhn
927f496306 doxygen: Fix libiconv checks (#14106)
PR #10589 introduced a libiconv dependency to doxygen. This causes
problems on Linux systems, since the iconv symbols are included in libc,
which causes CMake to use the external header but not the external
library. Work around this by always using the external libiconv.
2019-12-11 12:22:59 -06:00
Glenn Johnson
f2979da2af Build xed CLI for the intel-xed package (#14114)
The xed CLI is handy, and can be gotten by building the examples in the
intel-xed package. This PR builds the examples and installs the xed CLI.
It would also be possible to install more of the example binaries if
someone thinks they are useful.
2019-12-11 12:13:27 -06:00
Mark Olesen
77482e102a openfoam relocated to https://develop.openfoam.com/Development/openfoam.git (#14101) 2019-12-11 12:12:30 -06:00
noguchi-k
b0a7c8487d diamond: fix narrowing error. (#14064)
* diamond: fix narrowing error

* diamond: fix patch

* diamond: add link to the patch source
2019-12-11 12:07:21 -06:00
iarspider
d4326038b9 Fix py-pkgconfig recipe (#14081)
* Fix py-pkgconfig recipe

* Update package.py

* Proper fix for py-pkgconfig
2019-12-11 12:06:18 -06:00
iarspider
bb3bae4bae Fix py-pathos source file extension (#14080)
* Fix py-pathos source file extension

* PEP-8 fix

* Add version 0.2.3 to spack

* Update package.py
2019-12-11 12:04:45 -06:00
iarspider
ec3d979899 Fix py-llvmlite (#14083)
* Fix py-llvmlite

* Update package.py

* Add llvmlite 0.29

* Update package.py
2019-12-11 12:03:48 -06:00
iarspider
5c2afd0535 Fix py-dill source archive extension (#14085)
* Fix py-dill source archive extension

* Add py-dill 0.2.7, remove extra str()

* Update package.py

* Update package.py

* Update package.py
2019-12-11 12:03:28 -06:00
Howard Pritchard
e7a03d07b6 llvm: fix for building llvm using Cray PE (#12734)
Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
2019-12-11 11:51:44 -06:00
iarspider
3cd6ca02d2 Fix json-c package (#14087)
* Fix json-c package

* Fix PEP-8

* Update package.py

* Update package.py
2019-12-10 17:34:50 -06:00
iarspider
ec060f3d9c Fix libgeotiff dependency of gdal (#14089)
* Fix libgeotiff dependency of gdal

* Update package.py

* Fix typo

* Update package.py
2019-12-10 17:34:35 -06:00
Justin S
2c31776007 openmolcas: new package at 19.11 (#14099)
* openmolcas: new package at 19.11

* openmolcas: fill description

* openmolcas: rewrite using CMakePackage

* openmolcas: add py-six dep

* openmolcas: use setup_build_environment, setup_run_environment

* openmolcas: remove redundant cmake dep

* openmolcas: explicitly cast Executable to str
2019-12-10 17:33:52 -06:00
Greg Becker
917224cb3c pytest: add __init__ files for all test subdirs (#13889)
* pytest: add __init__ files for all test subdirs

* add licenses to empty files

* Fix Sphinx warning message about comment within docstring

* Further fixes to Sphinx docstring
2019-12-10 15:19:09 -06:00
iarspider
5b3b522861 Alternative locations for tclConfig and tkConfig (#14071)
* Alternative locations for tclConfig and tkConfig

* Fix PEP-8
2019-12-10 15:18:19 -06:00
Eric Berquist
33f603734d Update tmux to 3.0a (#14096)
* Add tmux@2.9 and tmux@3.0a

* Fix checksums
2019-12-10 15:06:21 -06:00
Massimiliano Culpo
59d222c172 Better error message when setting unknown variants during concretization (#13128)
fixes #13124
2019-12-10 11:21:45 -08:00
Christoph Junghans
34f0195de8 gromacs-2018.8: fix checksum (#14069) 2019-12-10 12:33:41 -06:00
iarspider
fb6d29adfa ROOT: +http variant doesn't require any external dependency (#14072) 2019-12-10 12:29:11 -06:00
iarspider
f96216cf40 Fix py-pyasn1 version for py-pyasn1-modules (#14076) 2019-12-10 12:26:16 -06:00
iarspider
122264609e Fix for DD4Hep build: can't find boost (#14091) 2019-12-10 11:58:52 -06:00
iarspider
dd67868ef6 More variants for cairo (#14092) 2019-12-10 11:58:37 -06:00
Simo Tuomisto
9e8204d075 openfoam-org: Adding openfoam-org versions 6 and 7. (#12859)
This commit adds openfoam-org versions 6 and 7. It also adding new variant for metis and fixes openfoam-org's old environment modification functions.
2019-12-10 09:42:01 -06:00
Mark W. Krentel
c627e5a6fc intel-tbb: fix and cleanup patch version ranges (#14053)
Recent commit e9ee9eaf (#13989) fixed testing version ranges inside
patch when clauses.  Previously, it was necessary to write all revs
individually for packages with multiple length version numbers (2019
and 2019.1).

This fixes the build for the old 2017.* versions.
2019-12-09 17:11:47 -06:00
Omar Padron
0592c58030 Follow up/11117 fixes and testing (#13607)
* fix docstring in generate_package_index() refering to "public" keys as "signing" keys

* use explicit kwargs in push_to_url()

* simplify url_util.parse() per tgamblin's suggestion

* replace standardize_header_names() with the much simpler get_header()

* add some basic tests

* update s3_fetch tests

* update S3 list code to strip leading slashes from prefix

* correct minor warning regression introduced in #11117

* add more tests

* flake8 fixes

* add capsys fixture to mirror_crud test

* add get_header() tests

* use get_header() in more places

* incorporate review comments
2019-12-09 17:23:33 -05:00
Greg Becker
da9a562182 environments: allow 'add' command to add virtuals (#13787)
This PR allows virtual packages to be added to the specs list using
the add command.

Virtual packages are already allowed in named lists in spack
environments/stacks, and they are already allowed in the specs list
when added using the yaml directly.
2019-12-09 12:23:03 -08:00
Adam J. Stewart
23faffa2d0 TensorFlow: don't override HOME env var (#14054) 2019-12-09 11:22:57 -06:00
Matt Larsen
919a5421b7 fix incorrect gpu arch map for vtk-m package (#14057) 2019-12-09 11:18:51 -06:00
Andras Wacha
b33b8a3e29 Apply URLFetchStrategy to ftp:// and ftps:// url schemes (#13939)
* Apply URLFetchStrategy to ftp:// and ftps:// url schemes

* Corrected trailing whitespace error
2019-12-09 11:18:08 -06:00
George Hartzell
1d06949306 Tuneup docs re setting up sphinx for building docs (#14005)
I have, more than once, tried to install the list of things that need
to build the docs, only to discover that the list doesn't use Spack's
package names.  I'm tired of facepalming....

While I was there I touched up the prose about activating the new
Python packages; activating a python package doesn't add anything to
your PYTHONPATH, it links things into a directory that's *already* on
your PYTHONPATH.  Note that this all presupposes that you're using
that same python....
2019-12-08 16:22:25 -06:00
Adam J. Stewart
aa8d5d2e8c cbtf-krell: fix missing dependencies (#14021) 2019-12-08 15:51:04 -06:00
Adam J. Stewart
2266aab5c5 Add new r-condop package (#14050) 2019-12-08 09:29:51 -06:00
Adam J. Stewart
c72568d01b Add new r-earth package (#14049) 2019-12-08 09:06:53 -06:00
Adam J. Stewart
bf9661f18a Add new r-plotmo package (#14048) 2019-12-08 09:06:37 -06:00
Adam J. Stewart
0c1599403d Add new r-teachingdemos package (#14047) 2019-12-08 09:06:20 -06:00
Adam J. Stewart
cb258daf88 Add new r-graphlayouts package (#14046) 2019-12-08 09:06:04 -06:00
Adam J. Stewart
4593b7b693 Add new r-tidygraph package (#14045) 2019-12-08 09:05:46 -06:00
Adam J. Stewart
3547776921 py-torch: comment out non-existing deps (#14044) 2019-12-08 09:05:21 -06:00
Adam J. Stewart
aca67581e8 Add new py-requests-mock package (#14043) 2019-12-08 09:05:04 -06:00
Adam J. Stewart
99d2bcf64e py-luigi: fix test dependencies (#14042) 2019-12-08 09:04:45 -06:00
Christoph Junghans
16a61d1422 elpa: port to microarch (#13655)
* elpa: port to microarch

* flake8

* Update package.py

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-08 09:03:59 -06:00
Adam J. Stewart
4e24c4ca5f Add new py-pytest-mypy package (#14041) 2019-12-08 00:10:46 -06:00
Adam J. Stewart
4fb03f7222 Add new py-sphinxcontrib-issuetracker package (#14040) 2019-12-08 00:10:32 -06:00
Adam J. Stewart
8d21e39f00 py-python-htmlgen -> py-htmlgen (#14039) 2019-12-08 00:10:17 -06:00
Adam J. Stewart
fdc3176920 Add new py-asserts package (#14038) 2019-12-08 00:10:02 -06:00
Adam J. Stewart
4f7c28e9cd py-brian2: py-nosetests -> py-nose (#14037) 2019-12-07 23:21:27 -06:00
Adam J. Stewart
ab250a2e3a polymake: fix dependency name (#14034) 2019-12-07 22:14:48 -06:00
Adam J. Stewart
0a1d2a45f4 Add py-jupyter package (#14035) 2019-12-07 22:14:34 -06:00
Adam J. Stewart
db1026cb62 Add new py-wxmplot package (#14036) 2019-12-07 22:14:20 -06:00
Adam J. Stewart
891ccbea3f Add new py-stestr package (#14029) 2019-12-07 15:40:08 -06:00
Adam J. Stewart
c1826d9d32 Add new py-testrepository package (#14030) 2019-12-07 15:39:53 -06:00
Adam J. Stewart
129e548ac0 Add new py-testresources package (#14031) 2019-12-07 15:39:38 -06:00
Adam J. Stewart
71ec2db3a9 Add new py-testscenarios package (#14032) 2019-12-07 15:39:24 -06:00
Adam J. Stewart
e77a557ca1 Add new py-testtools package (#14033) 2019-12-07 15:39:11 -06:00
Adam J. Stewart
cec03c2db4 Add new py-python-subunit package (#14028) 2019-12-07 15:38:56 -06:00
Quinn
1a662f428e Add New package feh and supporting packages (#14013)
* Adding libid3tag package for supporting feh

* Adding libexif package for supporting feh

* Adding imlib2 package for supporting feh

* Adding the feh package

* Rewording the cleanup function for libid3tag

* Fixing some flake8 issues for imlib2 and libid3tag

* Adding sources for the patches and swapping rm for os.remove

* Flake8 fixes

* swapping md5sums for sha256sums
2019-12-07 15:38:41 -06:00
Adam J. Stewart
a9f6caf863 Add new py-hacking package (#14027) 2019-12-07 14:04:06 -06:00
Adam J. Stewart
c88b95bd28 Add new py-fixtures package (#14026) 2019-12-07 14:03:41 -06:00
Adam J. Stewart
e78865b3ab Add new py-extras package (#14025) 2019-12-07 14:03:06 -06:00
Adam J. Stewart
b6a6f28482 Add py-tox package (#14024) 2019-12-07 14:02:39 -06:00
Adam J. Stewart
9ece63242a Add latest version of py-importlib-metadata (#14023) 2019-12-07 14:02:16 -06:00
Adam J. Stewart
31b45d40d9 flann: fix missing dependencies (#14022) 2019-12-07 14:01:39 -06:00
Christoph Junghans
969bc948b5 votca*: add v1.6_rc1 (#14017)
* votca*: add v1.6_rc1

* votca: prefer v1.5.1
2019-12-07 10:04:15 -06:00
Axel Huebl
15bb5da99f openPMD-api: 0.10.1 (#14018)
Add the latest release of openPMD-api.
2019-12-07 10:02:53 -06:00
Axel Huebl
d705e96a63 Spec Header Dirs: Only first include/ (#13991)
* CUDA HeaderList: Unit Test

* Spec Header Dirs: Only first include/

Avoid matching recurringly nested include paths that usually
refer to internally shipped libraries in packages.
Example in CUDA Toolkit, shipping a libc++ fork internally
with libcu++ since 10.2.89:
`<prefix>/include/cuda/some/more/details/include/` or
`<prefix>/include/cuda/std/detail/libcxx/include`

regex: non-greedy first match of include

Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>

* CUDA: Re-Enable 10.2.89 as Default
2019-12-06 23:47:03 -08:00
Mark W. Krentel
9d9737f765 ibm-java: add version 8.0.6.0 (#14003)
* ibm-java: add version 8.0.6.0

Add version 8.0.6.0 and remove 8.0.5.30.  IBM is fairly aggressive
about removing old versions, and 8.0.5.30 is no longer available from
their download site.

* Restore version 8.0.5.30, although it is no longer available for
download from IBM.
2019-12-06 18:11:24 -06:00
Francesco Di Natale
01d35a4f3b Packages/py-maestrowf (#14010)
* Addition of repository branches to maestrowf.

* Addition of 1.1.5dev pre-release.

* Correction of a merge conflict.

* Addition of Maestro release 1.1.5

* Addition of Maestro release 1.1.6 (removal of 1.1.5)

* Sets 1.1.6 to the preferred version.

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

* Tweak to the url to point to latest.
2019-12-06 18:10:58 -06:00
Adam J. Stewart
66a169e2a5 Add py-parameterized package (#14016) 2019-12-06 18:09:00 -06:00
Adam J. Stewart
350a5422ed Update py-theano dependencies (#14015) 2019-12-06 18:08:34 -06:00
nicolas le goff
d173ec6a35 mesquite: fix build of the no mpi variant. (#14012)
* mesquite: fix build of the no mpi variant.

* mesquite: added the --without-mpi option to configure.
2019-12-06 18:08:13 -06:00
Tamara Dahlgren
842e9d9375 docs: Alphabetize create cmd template options (#13993)
* Bugfix: Display template options for create command.

* Alphabetize "spack create" template options for readability

* Revert template choices format; alphabetize list

* flake8 fix
2019-12-06 18:07:45 -06:00
Greg Becker
99c9365974 Bugfix: spack find -p fails in environment (#13972)
* force spack find -p to print abstract specs without prefixes
* hashes have the same issue; improve handling of find -L to match find -l
2019-12-06 12:29:57 -08:00
Teodor Nikolov
65a292fbbf [Package: HPX] Fix Apex and OTF2 support (#13982)
* Fix Apex and OTF2 support

- Comment out apex as a dependncy: it is bundled with HPX.
- Apply a patch to v1.3.0 to correctly build with APEX.
- Add otf2 as a dependency when APEX is enabled.

* Remove depends_on('apex')
2019-12-06 12:41:55 -06:00
t-karatsu
06042ec7ec augustus: Set compile commands for each compiler and Fix for using 'boost' on Spack (#13975)
* augustus: Set compile commands for each compiler and Fix for using 'boost' on Spack

* fix for flake8

* delete 'string' args

* Fix args of filter_file func

* Fix args of other filter_file func
2019-12-06 12:39:23 -06:00
Galen Shipman
5d523dd689 Add patch to fix issue building current llvm develop master on power9 (#13986)
* Add patch to fix issue building current llvm develop master on power9

* Conform to proper block commenting

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-06 12:38:58 -06:00
Tamara Dahlgren
dd26cc4004 Fastmath: Added required version (#13990)
* Fastmath: Added required version

* Changed the version to 'latest' (per balay).
2019-12-06 12:38:29 -06:00
Tamara Dahlgren
5e49b76dd7 Ceed: Added required version (#14006) 2019-12-06 12:38:00 -06:00
t-karatsu
246799d4ce sz: Change optimization flags for Fujitsu compiler (#14007) 2019-12-06 12:05:16 -06:00
Paul
67e45096c8 Specify self for internal setup method (#14008) 2019-12-06 12:04:57 -06:00
Brian Homerding
5e20bd86e4 Convert llvm Spackage to use the monorepo (#11392)
* [WIP] Convert llvm spackage to use the monorepo

* Correcting python dependencies

* Adding develop version for llvm monorepo

* Python 2.6 Fix

* Build Flang fork in a different root_cmakelists_dir

* Formatting Fix

* Including flang package changes

* Removing explicit llvm dependencies variants

* flake8 fix

* Updating patches and llvm+flang logic

* Updating env setup API

* Add top level git

* Conflicting flang variant with other variants
2019-12-06 12:01:30 -06:00
Seth R. Johnson
f069a3feda Add h5sh python package (#14001)
* Add h5sh package

* Fix requirements and update version
2019-12-06 11:58:59 -06:00
Tamara Dahlgren
b0f59484d3 docs: Minimal BundlePackage build system doc (#13992)
* Minimal BundlePackage build system doc

* Add link to new bundlepackage file

* Fixed link bug and added create command example
2019-12-06 07:26:59 -08:00
Mark W. Krentel
f84ad57fe7 hpcviewer: add version 2019.09 (#14004)
Add version 2019.09.  Adjust the iteration through versions to
eliminate the need for version_list.
2019-12-05 18:59:30 -06:00
Dominik Dold
c3eafde7bf Add new TensorFlow package (#13112)
* add tensorflow

Change-Id: Id778c68d148cc42f0b478a9d10a8f937cb54cdc6

* make bazel and tensorflow build

Change-Id: Iae9005e8f4dcc8f1ed36ea9337d2430aeebb291f

* fix flake8

Change-Id: Ib05529dd796eab4a8855a5d7775cc4efea8e479d

* 2nd flake8 attempt

Change-Id: I46224be3a374b2a65793048b0c5178ea64adbd78

* replace md5 sums with sha256

* add version 1.13.2

* bazel() -> bazel('build',...

* specify versions of bazel dependency

* build with CUDA

* add TODOs

* add more todo"s

* improve enum34 dependency

* py-future is a dependency as of v1.14

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

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

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

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

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

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

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

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

* enable nccl, cuda by default

* explain patches

* add todo

* remove unnecessary copt_flag

* use join

* join argument must be an iterable

* split long line; use same opts for non-cuda build

* without opt flags, configure hangs

* introduce build phases; re-arrange

* undo mistake

* restore unset tmp_path

* as of v1.14, nccl_install_path is parsed correctly, hence change ...prefix.lib to ...prefix

* now, version 1.14 compiles successfully with cuda

* add version 2.1.0

* specify bazel dependency for version 2.1.0-rc0

* account for deprecated bazel opts for v2.1.0-rc0

* disable mkldnn contraction kernel

* Flake8 fixes

* md5 -> sha256

* Fix TF and TF-estimator version deps

* Don't just comment out patch

* Add myself as a maintainer

* Patch py-astor to support newer py-setuptools

* Add more versions and bazel version constraints

* Add a build phase

* Add note about configure interactivity

* dev-build -> build-env

* Disable iOS build

* Use correct optimization flags

* Add variants for all possible features

* nccl isn't always a dependency

* Specify correct dependency versions for each release

* Libs may not be in lib or lib64

* Add py-opt-einsum package

* Add newer version of py-protobuf

* Add newer version of py-wrapt

* Fix Python 2.6 syntax error

* Code review

* Set more env vars for older versions

* Add more env vars, fix bazel versions, add conflicts

* Fix config options

* Specify version that support --config args

* Add py-future dependency for Python 2

* Fix cuda config flag and compute capabilities

* Fix installation on macOS, add unit tests

* Override cuda variant default to True on non-macOS

* Rename tensorflow to py-tensorflow

* Has to extend something

* Fix os.symlink call

* convert cuda_arc values to capabilities

* restore nccl prefix path for v1.13.1

* Revert to v2

* Remove extraneous period

* Add new version of jdk/openjdk

* More stable cuda_arch formatting

* Fix bazel unit tests

* Fix symlinking

* Fix unit tests

* +gcp by default until build error figured out
2019-12-05 18:48:20 -06:00
Scott Wittenburg
a288449f0b cdash: fix reporting issue with python 3 2019-12-05 11:37:03 -07:00
Chuck Atkins
831133a4c3 paraview: Adjust python version constraints (#13999)
py-matplotlib: No constraint necessary for py3 but py2 has an upper bound
py-numpy: No constraint necessary for py3 but py2 has an upper bound
2019-12-05 12:06:47 -06:00
Paul
9a0b1b6aef Added go 1.13.5 and 1.12.14 (#13997) 2019-12-05 11:29:00 -06:00
Chuck Atkins
fcc9a668bf py-pillow: allow older versions to build with python 3.4 (#14000) 2019-12-05 11:27:33 -06:00
Christoph Junghans
2da2fc8bc5 eospac: fix url (#13998) 2019-12-05 09:30:35 -07:00
Alexander Knieps
dbdc6c4a68 New package: swipl (#13978)
* New package: swipl

* Removed boilerplate, added maintainer

* Fixed python 2 incompatibility

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

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

* swipl: Added conflict with intel compiler
2019-12-05 09:51:38 -06:00
Peter Scheibel
e9ee9eaf50 patching: do strict version range checking (#13989)
* apply strict constraint checks for patches, otherwise Spack may incorrectly treat a version range constraint as satisfied when mixing x.y and x.y.z versions
* add mixed version checks to version comparison tests
2019-12-04 22:27:08 -08:00
Todd Gamblin
55ee2aecdf Merge tag 'v0.13.2' into develop
v0.13.2

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)
2019-12-04 22:04:36 -08:00
Adam J. Stewart
ad5d612925 Add py-matplotlib 3.1.2 (#13994) 2019-12-05 00:00:20 -06:00
Todd Gamblin
b3d6eb79f5 Merge branch 'releases/v0.13' into develop 2019-12-04 21:41:41 -08:00
Todd Gamblin
3fee65cb92 version bump: 0.13.2 2019-12-04 21:36:42 -08:00
Axel Huebl
ba156dfcd8 CUDA: Keep 10.1.243 As Preferred (#13983)
Keep CUDA 10.1.243 as the preferred version until the issue
of including implementation details of libcu++ is addressed.
2019-12-04 21:28:10 -06:00
Peter Scheibel
e5f04f9abc 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 19:17:40 -08:00
Adam J. Stewart
ba7ac53b75 Fix spack test when SPACK_ROOT isn't set (#13980) 2019-12-04 18:05:08 -06:00
Stephen Hudson
e0e9fb4462 Update libensemble to v0.6.0 (#13987) 2019-12-04 18:01:05 -06:00
Adam J. Stewart
10f4445309 Add latest version of py-scikit-learn (#13979) 2019-12-04 11:47:07 -06:00
Massimiliano Culpo
e9f027210f Fixed x86-64 optimization flags for clang (#13913)
* Fixed x86-64 optimization flags for clang
* Fixed expected results in unit tests

Before the flags used where the one for llc, the underlying compiler from LLVM IR to machine assembly. It turns out that the semantic of `-march`, `-mtune` and `-mcpu` changes from clang front-end to llc.

I found no definitive reference for the flags submitted in this PR, but I checked the assembly on a vectorizable function using Godbolt's web-site.
2019-12-04 09:11:34 -08:00
Tim Haines
728f5a76f3 Add Elfutils 0.178 (#13976)
* Add elfutils-0.178

* Disable debuginfod server

* Fix flake8
2019-12-04 07:50:44 -06:00
Tim Haines
bb33b6b8e6 Use correct range check for the version (#13977)
Update to #13893
2019-12-04 07:50:05 -06:00
Sheng Di
ba87a7f53a Release a new version v2.1.8.0 for SZ (#13974)
* Release a new version v2.1.8.0 for SZ

* add maintainer

* add parallel = False to avoid potential compile issue
2019-12-03 22:35:46 -06:00
Rob Latham
92ee0659e2 mpich: update build requirements (#13966)
To build from git, MPICH will need newer autoconf, automake, and libtool than
typically available on many systems.
2019-12-03 17:13:52 -06:00
Rob Latham
c7dbb4f103 argobots: consistently use 'master' (#13965)
Commit 71cd91e4 changed "latest from git" to 'master' from former
'develop'.  Build dependencies still pointed to @develop, though
2019-12-03 12:09:15 -06:00
Cameron Smith
5ddf5e2e7b new package: Simmetrix SimModSuite (#8730)
* package for Simmetrix SimModSuite

* simmodsuite: passes flake8

* simmetrix: add version, set cmake prefix path

A given install will either use the libs built on rhel7 or rhel6.
For now, I'm sticking with the non-spack install convention of
placing the libraries into sub-directories named according to their
build process (os + compiler).

* simmetrix: add older version

* simmetrix: set build env paths

easier to build pumi using CMAKE_PREFIX_PATH

* simmetrix: address review comments

* simmetrix: add new version and remove old one

* simmetrix: flake8 fixes

* simmodsuite: oslib var is in self

* simmodsuite: update version and checksum

* simodsuite: set LD_LIBRARY_PATH for cad kernels

* update license

* update setup_environment calls

* increase indentation for flake8

* python3.8 flake8 fixes

* use spack consistent naming

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

* sha256 required, update versions and hashes
2019-12-03 12:07:27 -06:00
t-karatsu
111dc8f823 kaldi: Change process of version analysis when using Fujitsu compiler. (#13960) 2019-12-03 10:34:05 -06:00
asmaahassan90
fb52f1c7e2 fix_cantera_installation (#13962)
For a successful cantera installation, googletest has to be installed with gmock on, and sundials has to be of version less than 3.2
2019-12-03 10:33:27 -06:00
Phil Carns
88680febc9 bump libfabric to 1.9.0 (#13964) 2019-12-03 10:32:53 -06:00
Yuanqi Wang
a5d872f510 Update MrBayes to 3.2.7a and correct MPI variants (#13929)
* Update MrBayes and correct MPI variant

* Use tarballs and remove autotools dependencies

* MrBayes: remove ISA variants
2019-12-03 10:31:00 -06:00
Jannek Squar
7e2d01b238 Update package libgpg error (#13697)
* Added build dependency on gawk

* Use virtual depdendency

* Added patch to prepare libgpg-error for use with gawk@5

* Added reasoning with link for need for patch
2019-12-03 10:29:15 -06:00
Chris White
cb38725a88 Add missing metis include to superlu-dist (#13956)
* Add missing metis include to superlu-dist

* Fix PEP-8 line length

* Fix PEP-8 indent
2019-12-02 18:30:23 -06:00
Sinan
4f8a2eeca2 add more versions (#13957) 2019-12-02 18:30:08 -06:00
Massimiliano Culpo
bca59f8d83 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:02 -08:00
Hector Martinez-Seara
1b624b9d45 amber: Improved package.py and added version 18 (#13945)
* amber: Improved package.py and added version 18

- Added amber 18 with ambertools 19
- Added all available patches
- Added +update variant to use the self update
- Added +openmp variant to get openmp optomizations
- Added +x11 variant when possible
- Splitted amber 16 and 18 dependencies
- We now detect the copiler type and compile accordingly
- Added cray variant which is a bit special (untested)
- Improved detection of possible cuda versions
- All compilation optimizations +mpi +openmp +cuda are compatible
- Updated to use setup_build_environment(), setup_run_environment()

* dealii: Added 'threads' variant that controls the TBB dependency (#13931)

* dealii: Added 'threads' variant that controls the DEAL_II_WITH_THREADS cmake option and the dependency on Intel TBB

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

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

* amber: Improved package.py and added version 18

- Added amber 18 with ambertools 19
- Added all available patches
- Added +update variant to use the self update
- Added +openmp variant to get openmp optomizations
- Added +x11 variant when possible
- Splitted amber 16 and 18 dependencies
- We now detect the copiler type and compile accordingly
- Added cray variant which is a bit special (untested)
- Improved detection of possible cuda versions
- All compilation optimizations +mpi +openmp +cuda are compatible
- Updated to use setup_build_environment(), setup_run_environment()

* amber: Adding missing flex and bison dependencies

* Removed cray variant; flex and bison now build only

* amber: Improved package.py and added version 18

- Added amber 18 with ambertools 19
- Added all available patches
- Added +update variant to use the self update
- Added +openmp variant to get openmp optomizations
- Added +x11 variant when possible
- Splitted amber 16 and 18 dependencies
- We now detect the copiler type and compile accordingly
- Added cray variant which is a bit special (untested)
- Improved detection of possible cuda versions
- All compilation optimizations +mpi +openmp +cuda are compatible
- Updated to use setup_build_environment(), setup_run_environment()

* amber: Adding missing flex and bison dependencies

* Removed cray variant; flex and bison now build only

* dealii: Fixed flake8 issues

* amber: corrected typo

* amber: Removed unused variant python
2019-12-02 16:01:14 -06:00
Jim Galarowicz
6d127e29de Fix conflict with respect to openssl and qt3 built for openspeedshop. (#13946)
* Fix conflict with respect to openssl and qt3 built for openspeedshop.

* Another fix because the first was incorrect.
2019-12-02 13:13:31 -06:00
Justin M Wozniak
543f37ea51 eq-r: Fix use of Executable.__call__() (#13952) 2019-12-02 13:13:05 -06:00
Adam J. Stewart
71eaffa46b Version bump: 1.13.1 (#13942) 2019-12-02 06:58:30 -08:00
Todd Gamblin
2dffbec486 git: add .gitattributes file (#13947)
Add a line to .gitattributes so that `git grep -p` shows function names
properly for `*.py` files.  Without this, the class name is shown instead
of the function for python files.

This also causes diff output to use proper functions as hunk headers in
`diff` output.

Here's an example with `git grep -p`.

Before:

    $ git grep -p spack_cc var/spack/repos/builtin/packages/athena
    var/spack/repos/builtin/packages/athena/package.py=class Athena(AutotoolsPackage):
    var/spack/repos/builtin/packages/athena/package.py:            env.set('CC', spack_cc)
    var/spack/repos/builtin/packages/athena/package.py:            env.set('LDR', spack_cc)

After:

    $ git grep -p spack_cc var/spack/repos/builtin/packages/athena
    var/spack/repos/builtin/packages/athena/package.py=    def setup_build_environment(self, env):
    var/spack/repos/builtin/packages/athena/package.py:            env.set('CC', spack_cc)
    var/spack/repos/builtin/packages/athena/package.py:            env.set('LDR', spack_cc)

Here's an example with `diff`.

Before:

    $ git show c5da94eb58
    [...]
    @@ -28,6 +29,7 @@ print(u'\\xc3')

             # make it executable
             fs.set_executable(script_name)
    +        filter_shebangs_in_directory('.', [script_name])

             # read the unicode back in and see whether things work
             script = ex.Executable('./%s' % script_name)

After:

    $ git show c5da94eb58
    [...]
    @@ -28,6 +29,7 @@ def test_read_unicode(tmpdir):

             # make it executable
             fs.set_executable(script_name)
    +        filter_shebangs_in_directory('.', [script_name])

             # read the unicode back in and see whether things work
             script = ex.Executable('./%s' % script_name)
2019-12-02 01:35:38 -08:00
Alexander Knieps
8e3ff9b39c dealii: Added 'threads' variant that controls the TBB dependency (#13931)
* dealii: Added 'threads' variant that controls the DEAL_II_WITH_THREADS cmake option and the dependency on Intel TBB

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-12-01 13:34:26 -06:00
Sergei Shudler
c7568c9146 Package/sensei: PR request for SENSEI (in situ analysis tool) recipe (#12973)
* Created an initial recipe for Sensei

* Cleanup syntax

* Small fixes for the Sensei recipe

* Cosmetic fixes to comply with PEP8

* More cosmetic fixes before PR

* Added more documentation before PR

* Fixed flake8 errors

* Fixes following PR review

* Fixes to pass Flake8 passes

* Some changes following PR review and support for SENSEI 3

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

Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja>

* Fixed Flake8 errors
2019-12-01 11:30:14 -06:00
Benjamin Fovet
fdd7a0e236 Add VTK version 8.2.0 (#13941) 2019-11-30 16:32:19 -06:00
jwallior
daaeb412a4 New python packages (#9974)
* New package: add py-jellyfish

* New package: add py-us

* New package: add py-xlwt

* New package: add py-svgpathtools

* New package: add py-svgwrite

* Change checksums to sha256

* Fix Copyright year.

* Add missing dependencies.
2019-11-30 16:32:02 -06:00
Benjamin Fovet
1c8a62aa86 Add package opencascade (#13938)
* Add new package : opencascade

* Remove boilerplate comment

* Fix flake8 errors

* Explicitly disable 3rd parties
2019-11-30 15:08:52 -06:00
Toyohisa Kameyama
c850e80bea cbtf: add rpcsvc-proto and libtirpc dependency. (#13798) 2019-11-30 13:08:24 -06:00
iarspider
aec5874b94 Mark py-argparse dependency everywhere with ^python@:2.6 (#13928)
* Mark py-argparse dependency everywhere with ^python@:2.6

* Update package.py

* Update package.py
2019-11-30 13:07:14 -06:00
Chris Green
c5da94eb58 Armor test script against shebang character limit if appropriate. (#12447) 2019-11-30 13:00:08 -06:00
darmac
46617b6f12 add new package : lshw (#13933)
* add new package : lshw

* update lshw package

* remove build methord
2019-11-30 01:13:23 -06:00
iarspider
94c8bf0322 Update Geant4 version and recipe (#13840)
* Update Geant4 version and recipe

According to the Geant4 developers, Geant4 supports Qt5 since at least 10.00.

* Update to new API
2019-11-29 16:21:51 -06:00
Adam J. Stewart
ab98ef1765 Mass conversion of setup_(dependent_)?environment (#13924)
* Mass conversion of setup_(dependent_)?environment

* prefix -> self.prefix
2019-11-29 15:00:44 -06:00
Mark W. Krentel
92ca639905 intel-tbb: fix and update patches for latest versions (#13932)
Commit 78724357 added versions 2019.5 to 2019.8 but failed to update
the patches for these versions.

1. gcc_generic-pedantic patch -- include this up through 2019.5.  This
was fixed in the TBB source tree in 2019.6.

2. tbb_cmakeConfig patch -- this needs to be modified (different file)
for 2019.5 and later.

3. tbb_gcc_rtm_key patch -- replace this with filter_file.  This is
simpler and eliminates the need to update the patch whenever the
surrounding context changes.
2019-11-29 13:18:56 -06:00
darmac
0f464b8d9f add new package : pipework (#13934) 2019-11-29 12:19:13 -06:00
darmac
e865856c84 add new package : qperf (#13935) 2019-11-29 12:18:41 -06:00
Peter Scheibel
cacfc3a6e1 Handle external perl (#13903)
* dont add perl bin directory to PATH when setting up env (this is already handled by spack core in a way that omits system dirs); also consolidate repeated logic between build/run env setup.

* the bin/ dir of each dependency is already added to PATH in Spack core, so there is no need to do this in the Perl package
2019-11-29 12:30:40 +01:00
iarspider
4dca63f007 Loosen restriction on setuptools version of py-backports-shutil-get-terminal-size: the bug seems to be fixed at least in setuptools 41.0.0 (#13927) 2019-11-28 11:54:01 -06:00
Tyler Reddy
008fe37941 BLD: enforce C++11 std for boost + xl_r (#13829)
* BLD: enforce C++11 std for boost + xl_r

* the spack `cxxstd` variant is not sufficient to enforce
`-std=c++11` usage in boost compile lines when `xl_r` compiler
spec is in use; while it would be nice if this were fixed
in a boost config file somewhere, for now this patch
allows boost to build on POWER9 with
an %xl_r compiler spec if the user specifies i.e.,:

`spack install boost@1.70.0+mpi cxxstd=11 %xl_r@16.1.1.5`

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-27 23:08:54 -06:00
Glenn Johnson
e974f48be0 Build R without recommended packages (#12015)
The documentation states that Spack builds R without the recommmened
packages, with Spack handling the build of those packages to satisfy
dependencies. From the docs:

> Spack explicitly adds the --without-recommended-packages flag to
> prevent the installation of these packages. Due to the way Spack
> handles package activation (symlinking packages to the R installation
> directory), pre-existing recommended packages will cause conflicts for
> already-existing files. We could either not include these recommended
> packages in Spack and require them to be installed through
> --with-recommended-packages, or we could not install them with R and
> let users choose the version of the package they want to install. We
> chose the latter.

However, this is not what Spack is actually doing. The
`--without-recommended` configure option is not passed to R and
therefore those packages are built. This prevents R extension activation
from working as files in the recommended packages installed with R will
block linking of file from the respective `r-` packages.

This PR adds the `--without-recommended` flag to the configure options
of the R package. This will then have the Spack R build match what is
documented.
2019-11-27 20:58:12 -06:00
Justin S
1b24dfb8ba Replace git-based Bioconductor R packages (#12005)
* Replace git-based Bioconductor R packages

The current collection of bioconductor packages tend to have scattered
dependencies and missing versions. This commit replaces git-based
packages with tool-generated Spack package recipes with correct
dependencies and descriptions in place.

* Fix some broken package names, add periods to title docstrings

* r-clue: new package at 0.3-57

* r-genomeinfodbdata: add 1.2.1

* r-gofuncr: new package at 1.4.0

* r-pfam-db: add 3.8.2

* Add missed package r-genelendatabase

* update r-goseq package

* update r-glimma package

* update r-rots package

* r-org-hs-eg-db: add 3.8.2

* r-vgam: fix incorrect R version

* r-rnaseqmap: new package at 2.42.0

* r-rhdf5lib: new package at 1.6.0

* r-scrime: new package at 1.3.5

* r-delayedmatrixstats: new package at 1.6.0

* r-hdf5array: new package at 1.12.1

* r-biocfilecache: new package at 1.8.0

* r-ctc: add new versions, dependencies

* r-genemeta: new package at 1.56.0

* r-scrime: fix flake8

* r-ensembldb: add missing dependencies

* Added missing dependencies to packages with certain DESCRIPTIONS

* r-mapplots: new package at 1.5.1

* r-beachmat: new package at 2.0.0

* r-beeswarm: new package at 0.2.3

* r-biocneighbors: new package at 1.2.0

* r-biocsingular: new package at 1.0.0

* r-ecp: new package at 3.1.1

* r-enrichplot: new package at 1.4.0

* r-europepmc: new package at 0.3

* r-ggbeeswarm: new package at 0.6.0

* r-ggplotify: new package at 0.0.3

* r-ggraph: new package at 1.0.2

* r-gridgraphics: new package at 0.4-1

* r-rcppannoy: new package at 0.0.12

* r-rcpphnsw: new package at 0.1.0

* r-rsvd: new package at 1.0.1

* r-scater: new package at 1.12.2

* r-singlecellexperiment: new package at 1.6.0

* r-tximport: new package at 1.12.3

* r-upsetr: new package at 1.4.0

* r-vioplot: new package at 0.3.2

* r-readr: add 1.3.1

* r-matrixstats: add 0.54.0

* r-ecp: flake8 fix

* r-biocmanager: new package at 1.30.4

* update bioconductor packages requiring BiocManager, new versions

* r-lambda-r: add 1.2.3

* r-vegan: add 2.5-5

* r-cner, r-rcppannoy, r-reportingtools, r-rsvd: add missing newlines at EOF

* r-chemometrics: flake8 fixes

* r-vgam: flake8 fixes

* CRAN packages: use cloud.r-project.org

* Use DESCRIPTION for R version constraints over bioconductor releases

* Update missed packages ABAData, acde, affydata

* Update remaining missed packages

* bio: Drop 'when' clause from first checksummed versions

* bio: improve package description generation logic

* r-genomeinfodbdata: use explicit sha256 sums

* r-pfam-db: update dependencies, add 3.10.0

* update r-org-hs-eg-db

* r-dirichletmultinomial: re-add gsl

* r-polyclip: new package at 1.10-0

* r-farver: new package at 1.1.0

* r-tweenr: new package at 1.0.1

* r-ggforce: new package at 0.3.1

* r-ggforce: remove redundant dep

* r-ggraph: add missing deps

* r-rcpphnsw: remove redundant depends_on

* r-reportingtools: re-add r-r-utils dep

* r-rhdf5: add gmake dep

* r-rhtslib: add system dependencies

* r-rsamtools: add gmake dep

* r-farver: remove redundant dep

* r-tweenr: remove redundant dep

* r-variantannotation: add gmake dep

* r-rgraphviz: add graphviz dep

* r-vsn: correct r-hexbin constraint

* r-scater: fix obsolete deps

* r-variantannotation: fix gmake dep type

* r-scater: tighten R version constraints

* r-rsamtools: fix gmake dep type

* r-rhtslib: fix gmake dep type

* r-rhtslib: use xz over lzma

* r-rhdf5: fix gmake dep type

* r-farver: replace with newer recipe for 2.0.1

* r-mzr: remove old dependency

* r-reportingtools: remove builtin dependency

* r-mzr: add gmake dep

* r-rhtslib: make system libraries link deps

* r-genomeinfodbdata: fix R version constraints

* r-geoquery: remove old deps from new versions

* r-genomicfeatures: tighten r-rmysql dep

* r-ensembldb: tighten r-annotationhub dep

* r-complexheatmap: fix r-dendextend dep

* r-cner: fix utils dep name

* r-clusterprofiler: fix r-gosemsim version req

* r-biostrings: fix r-iranges version reqs

* r-rhdf5lib: add gmake dep

* r-oligoclasses: fix r-biocinstaller dep range

* r-organismdbi: fix r-biocinstaller dep range

* r-hdf5array: add gmake dep

* r-gtrellis: tighten r-circlize version req

* r-gostats: fix r-graph version req

* r-glimma: fix old dependency ranges

* r-biostrings: syntax fix

* r-organismdbi: syntax fix

* r-dose: fix r-igraph dep

* r-dose: fix r-scales, r-rvcheck deps

* r-affy: fix r-biocinstaller dep

* r-ampliqueso: fix homepage

* r-aneufinder: fix r-biocgenerics dep

* r-beachmat: fix changed deps

* r-biocneighbors: fix old R constraint

* r-biocmanager: rewrite recipe for 1.30.10

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

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

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-27 20:57:15 -06:00
Rene Gassmoeller
0f46c3452f Add version 2.1.0 to 'aspect' package (#13830) 2019-11-27 20:04:00 -06:00
iarspider
6d7250f59c Update cartopy version and fix recipe (#13898)
* Update cartopy version and fix recipe

Cartopy 0.17.0 works fine with proj 6

* Update cartopy version and fix recipe

Cartopy 0.17.0 works fine with proj 6

* Set ACCEPT_USE_OF_DEPRECATED_PROJ_API_H flag when building extension

* Add variants to py-cartopy recipe as suggested

* Fix proj dependency

* Split dependency

* Fix PEP-8; remove extra dependency
2019-11-27 20:01:05 -06:00
Nichols A. Romero
d7db42e201 QMCPACK Update Nov2019 (#13832)
* Bump up QE version number to 6.4.1.

* Fix QMCPACK conflicts.

* HDF5 dependencies where over specified which could cause unnecessary installs of HDF5.

* Update QMCPACK testing option.

* Remove support for serial QE 6.4.1 converter. Add support for parallel QE 6.4.1. converter with serial HDF5.

* Switch to setup_run_environment.

* Fix setup_run_environment call arguements.

* Fix typo.

* switch run_env to env
2019-11-27 16:37:51 -06:00
Ken Raffenetti
85ce22a0b8 mpich: Add ucx dependency (#13921) 2019-11-27 16:34:46 -06:00
Federico Ficarelli
484dab6bac cuda: add polymorphic package versions (#13912) 2019-11-27 15:45:07 -06:00
Marc Mengel
206e7bd5aa scm-git-archive python package (#13915)
* scm-git-archive python package

* flake8

* per comments
2019-11-27 15:43:19 -06:00
Marc Mengel
7125d7eebe New package: py-cheroot (#13583)
* package py-cheroot

* package py-cheroot

* autopep8, docutils cleanup

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

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

* missing deps

* flake8

* license bits

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

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

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

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

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

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

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

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

* python dep

* flake8
2019-11-27 14:02:43 -06:00
Howard Pritchard
399336ae89 openmpi: add 3.1.5 and 3.0.5 (#13918)
Note to spack people: these are expected to be end of line releases for both the 3.1.5 an 3.0.5 releases

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2019-11-27 14:02:05 -06:00
Adam J. Stewart
3cc8c93883 json-fortran: get unit tests working (#13919) 2019-11-27 13:15:55 -06:00
iarspider
9e397042a7 Fix py-pyarrow recipe (#13914)
Fix name of one dependency
2019-11-27 12:21:01 -06:00
t-karatsu
515f1466c8 accfft: fix narrowing error. (#13909) 2019-11-27 10:15:22 -06:00
健美猞猁
f07131a390 Bump intel compiler suite to 2019u5. (#13835)
* Bump intel compiler suite to 2019u5.

* Remove a duplicate line.
2019-11-27 10:04:48 -06:00
Oliver Breitwieser
d207dceb3a Fix py-line-profiler incompatible decorators (#13911)
`@run_after` and `@when` are incompatible, issue #12736.
2019-11-27 15:30:53 +01:00
Hadrien G
51ee8aa639 ACTS: added version v0.11.1 (#13910) 2019-11-27 15:18:49 +01:00
Tim Haines
c80792fc06 Add version check when building intel-tbb with clang (#13893)
* Add version check when building with clang

* Update for flake8 formatting
2019-11-26 23:15:17 -06:00
Christoph Junghans
07325f5fd0 votca: help concretizer (#13906)
* votca: help concretizer

* flake8
2019-11-26 21:47:42 -06:00
darmac
cfe9550bfe add new package : sysstat (#13907) 2019-11-26 21:01:04 -06:00
Greg Becker
1450c30656 use semicolons instead of newlines in module/python command (#13904) 2019-11-26 17:09:24 -08:00
Adam J. Stewart
ad1ad83664 IntelPackage: setup_env -> setup_build_env (#13888) 2019-11-26 16:48:32 -06:00
Massimiliano Culpo
f6781d65f0 buildcache list: do not display duplicate specs (#13758)
fixes #13757
2019-11-26 13:24:15 -07:00
Eric Martin
11e3e332bd metabat: add versions 2.14 and 2.13 (#13369)
* metabat: add versions 2.14 and 2.13

* update build environment

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

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

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-26 14:14:11 -06:00
Axel Huebl
6bc2012ff1 MPark.Variant: Patch NVCC C++14 Build (#13901)
Fix an issue with NVCC when building with C++14.
2019-11-26 13:07:02 -07:00
Andreas Baumbach
3cfab76d25 update py-nbconvert (#13422)
* update py-nbconvert

* add setuptools dependency, like all the other jupyter packages
  it seems to be using setuptools for some commands all the time
  but requires it for the newest version
* added dependencies, not necessarily only needed for the latest one
* depends on new packages (defusedxml, pandocfilters, testpath)
* should also be moved to pypi sources?
* '@5:@5:' is a valid spec -> intended?

* make dependencies optional

* Update dependencies and add description

* relax py-mistune dependency restriction

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-26 12:25:48 -06:00
Andreas Baumbach
7764fd0833 new package: py-arrow (#13575)
* new package: py-arrow

* actually use dependencies from 0.14.7 not from current HEAD

* drop dependencies that dont appear in the source

* readd sphinx as doc dependency

* update dependencies

* drop doc-only dependencies
2019-11-26 12:24:02 -06:00
Roman Briskine
eb0561735d Update Mathematica recipe (#13679)
* Add licensing; replace url with url_for_version; create .spack dir during installation; symlink wolframscript; generate spec.yaml if missing

* Reverted url change, .spack directory creation, and spec.yaml generation

* Fix formatting issues
2019-11-26 12:22:31 -06:00
noguchi-k
18cf751d13 ocaml: fix url (#13749) 2019-11-26 12:21:29 -06:00
sknigh
260a4c4904 Days since OpenMPI+UCX trashed my cluster: 0 (#13818) 2019-11-26 12:20:17 -06:00
Matt Larsen
8b85a6ca14 silence vtkm logging until it does not report false positives to std::cerr (#13845) 2019-11-26 12:19:36 -06:00
darmac
b75f2e2c24 add new package : busybox@1.31.1 (#13871)
* add new package : busybox@1.31.1

* 1. add some other version for busybox
2. change Busybox class to MakefilePackage
3. move make('defconfig') and make() to build() function
4. change install_tree('', prefix) to install_tree('.', prefix)
2019-11-26 12:19:16 -06:00
darmac
327de3b3d4 add new package : blktrace (#13872)
* add new package : blktrace

* modify install_tree('', prefix) to install_tree('.', prefix)
2019-11-26 12:19:01 -06:00
noguchi-k
8ea4692ee9 lsof: fix url and checksum (#13801)
* lsof: fix url and checksum

* lsof: change the download url, add list url and version 4.91, 4.90
2019-11-26 12:10:14 -06:00
Massimiliano Culpo
77c206185b Remove warning from the "Custom Extensions" section of the docs (#13804)
Extensions have been available for a while and the overall design
seems solid enough to be feasible for extensions without losing
backward compatibility.
2019-11-26 09:30:49 -08:00
Axel Huebl
7a81c37bde Package Index: Build in Dockerhub (#13810)
* Package Index: Build in Dockerhub

Prepare to build the package index service, packages.spack.io,
on Dockerhub.

Local build (in spack root dir):
```
docker build -t spack/packages.spack.io:latest -f share/spack/docker/package-index/Dockerfile .
```

Local test:
```
docker run -p 8080:80 spack/packages.spack.io:latest
```

* Travis-CI: Remove Docker

Remove leftover docker stages from Travis-CI.

* Simplify Split Call
2019-11-26 10:11:29 -07:00
健美猞猁
1291ca3410 Bump miniconda2 miniconda3 to 4.7.12.1 . (#13897) 2019-11-26 10:52:07 -06:00
Rao Garimella
52d0940b42 Variant for enabling tests, versions, cleanup (#13882)
* add variant for enabling testing

* enable tests and clean up other options

* add numbered versions

* updates to avoid enable_tests variant; correct versioning

* fixes for style

* appropriate partitioners are enabled if 'all' is specified - so no need to check in spec

* define url so spack knows how to fetch the tar.gz files for different versions
2019-11-26 10:48:34 -06:00
Vivek Kale
07cda58bcc Updating package for SOLLVE (#12607)
* Add SOLLVE package with Shintaro's help on rebasing.

Co-authored-by: Vivek Kale <vivek.lkale@gmail.com>

* sollve: reflect suggestions by @adamjstewart

* sollve: update target detection

Copied from llvm/package.py.

* sollve: fix a few things

- url -> git
- remove git in version()
- explicit cmake options in else clauses
- add newlines for better readability
2019-11-26 10:45:27 -06:00
Hector Martinez-Seara
ad2cc38f22 Py-pymol package has been updated to the latest version (#13764)
* Added new package libmmtf-cpp required by py-pymol

* Added SPDX-License-Identifier to MIT

*  Updated py-pymol to version 2.3.0

* py-pymol: Added mising py-pmw dependency

* py-pymol: flake8 minor change

* py-pymol: Added patch for apbstools_tcltk8.6

This patch is borrowed from archlinux
https://bugs.archlinux.org/task/39526

* libmmtf-cpp: flake8 compliance

* libmmtf-cpp: flake8 compliance

* libmmtf-cpp: change license to  (Apache-2.0 OR MIT) when refering to the MIT license

* libmmtf-cpp: Added header text about license as in examples

* py-pymol: removed unnecesary dependency mesa-glu

* py-pymol: removed unnecesary patch

* py-pymol: Removed empty line at the end of the file to comply with flake8.
2019-11-26 10:42:39 -06:00
Christoph Junghans
7d3d03dea9 cmake: add support for xlf and ninja (#13796) 2019-11-26 11:29:25 -05:00
darmac
577391e62b httperf: added new package (#13875) 2019-11-26 13:38:48 +01:00
Joe Koning
c171ff6335 Add the py-coloredlogs package (#13852)
* Add the py-coloredlogs package

* Remove extraneous line.

* Remove dashed line.

* Add version for humanfriendly dep and build to type.

* Change source url to use pypi.
2019-11-25 16:56:34 -06:00
Hadrien G
b4049c484f Forgot a trailing _PLUGIN (#13884) 2019-11-25 16:56:09 -06:00
Andreas Baumbach
5c8e34160d add new versions to py-mistune (#13887) 2019-11-25 16:55:53 -06:00
Tim Haines
7872435753 Add intel-tbb versions 2019.5 to 2019.8 (#13891) 2019-11-25 16:52:46 -06:00
G-Ragghianti
0aab6068ff Improved library access for lm-sensors and implemented use in papi. (#13885)
* Improved library access for lm-sensors and implemented use in papi.

* Fixed comment formatting

* Removed explicit "None" from return of libs().

* Added two new software release versions.
2019-11-25 15:42:14 -06:00
René Widera
9c10b80591 add package cuda@10.2.89 (#13819)
* add package cuda@10.2.89

add CUDA 10.2 support

* CudaPackage: Add 10.2 Conflicts

* CUDA: Modernize Run Environment

See #11115
2019-11-25 13:23:48 -06:00
David M. Rogers
552ffed171 Updated LAMMPS package to use gpu and kokkos options. (#13886) 2019-11-25 13:22:31 -06:00
iarspider
3eb1a0226d Fix ROOT dependencies (for +r variant) (#13839) 2019-11-25 13:02:03 -06:00
Sinan
70e4377348 Mapnik: fix runtime error involving py-pycairo and PDF (#13865)
* fix runtime error involving py-pycairo and PDF

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

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

* fix env setup
2019-11-25 13:01:14 -06:00
Joe Koning
c349759acd Add the py-importlib-resources package (#13854)
* Add the py-importlib_re package

* Rename package to conform with spack naming convention.

* Rename package to py-importlib-resources
Add python depend modules for previous python versions and depends_on python.

* Add whitespaces.
2019-11-25 13:00:45 -06:00
Toyohisa Kameyama
87e757ee93 cctools: fix python related error. (#13802)
* cctools: fix python related error.

* patch bugfix.
2019-11-25 12:57:09 -06:00
Sinan
448e09e5b2 Add latest version of bazel (#13813)
* use bazel commit in #13112, and add version 0.24.1, and corresponding cc_env patch

* undo preferred java version by dodo47

* patch for v0.26

* Update install steps

* Add patches for more versions

* Add unit tests

* Update patches for new Spack env vars

* env is already defined, use spackEnv
2019-11-25 11:59:12 -06:00
Joe Koning
289aa6ad8a py-celery: added new package (#13851) 2019-11-25 16:28:06 +01:00
Joe Koning
be9c551add py-amqp: added new package (#13848)
* Add the py-amqp package

* Add the py-vine dependency.

* Add vine version and python dependency.
2019-11-25 16:26:59 +01:00
iarspider
53c2b618da py-qtpy: enable use with pyqt5, pyside and pyside2 (#13837) 2019-11-25 16:14:57 +01:00
Joe Koning
0cb5460a52 py-kombu: added new package (#13855) 2019-11-25 16:02:03 +01:00
t-karatsu
b8c18068c2 prank: use Spack compilers and remove x86_64 opts from Makefile (#13877) 2019-11-25 15:14:18 +01:00
darmac
3a94c032c7 netperf: added new package (#13876) 2019-11-25 15:12:32 +01:00
darmac
bb6a203fe1 ltp: added new package (#13878) 2019-11-25 14:38:25 +01:00
Hadrien G
fa37387373 ACTS v0.11.0 + adding maintainer (#13880) 2019-11-25 14:33:16 +01:00
darmac
2f2dd879f7 add new package : py-cssselect (#13879) 2019-11-25 14:32:04 +01:00
Oliver Breitwieser
4c4aba5f9e ack: Fix install modifying download cache (#13836)
This makes several installs from the same download cache impossible once
the hash of the used perl-install changes.

Fixes: #13824

Change-Id: I5f10d9d54ae999d0ca7e4171f989dfca2e6a7169
2019-11-24 17:33:49 -06:00
Christoph Junghans
959f52dbf5 tinker: initial commit (#13869) 2019-11-24 10:31:15 -07:00
Christoph Junghans
8b1d800d53 ncurses: don't run strip internally (#13843)
* ncurses: don't run strip internally

* setup_environment -> setup_build_environment

* fix ABI change
2019-11-23 20:47:59 -07:00
Adam J. Stewart
c3c5abb9cc py-matplotlib backend dependencies needed at runtime (#13867) 2019-11-23 21:23:45 -06:00
Adam J. Stewart
42a0061cb0 Add py-scipy 1.3.3 (#13866) 2019-11-23 16:50:02 -06:00
Joe Koning
c7472e0cbe Add the py-humanfriendly package (#13853) 2019-11-23 19:12:03 +01:00
Adam J. Stewart
e5588880d5 Fix setuptools dependency in py-snowballstemmer (#13844) 2019-11-23 15:25:24 +01:00
Joe Koning
0a14a0c48d Add the py-billiard package (#13849) 2019-11-23 14:14:28 +01:00
Joe Koning
836b6016e4 Add the py-parse package (#13856) 2019-11-23 09:36:29 +01:00
Joe Koning
2c8a867a81 Add the py-vine package (#13857) 2019-11-23 09:35:07 +01:00
Sajid Ali
ff64004a7b likwid: added version 5.0.0 (#13858) 2019-11-23 09:21:59 +01:00
Joe Koning
99650d6caf py-cached-property: added new package at v 1.5.1 (#13850) 2019-11-23 09:20:24 +01:00
darmac
b95961d26b ethtool: new package at version 4.8 (#13864) 2019-11-23 09:17:49 +01:00
Satish Balay
da883f2270 petsc: add version 3.12.2 (#13859) 2019-11-22 20:35:16 -06:00
George Hartzell
48420d0c24 New package: py-wub, with supporting fixes (#13773)
* Add py-wub, with supporting fixes

- add py-wub
- add py-pycmd because py-wub needs it
- update py-statsmodels, which needs at least v0.9.0 to work with
  python3.7 because cython.

* Update based on Adam's comments

* Fix dependency types for py-six in py-wub

* statsmodels tests fail, update comment w/ Issue #

The statsmodels tests weren't run in the previous version of the
package.  If I enable them, the fail.

Update the package comment with the statsmodels issue I opened to
track the problem:
https://github.com/statsmodels/statsmodels/issues/6263

* Update dependency types in py-wub/package.py

* flake8 cleanups

* Make statsmodels tests work

- need to use patsy@0.5.1:
- need to run the tests from within the build/lib* dir
2019-11-22 20:34:43 -06:00
Greg Becker
6c55a7c85f cmd/install: remove unused install_status option (#13751)
* cmd/install: remove unused install_status option

* update bash completions for spack install
2019-11-22 11:17:37 -07:00
Massimiliano Culpo
f53abbecd3 Remove mirrors from Travis cache (#13841) 2019-11-22 19:00:00 +01:00
Christoph Junghans
b23d2efd99 votca-*: add v1.5.1 (#13822) 2019-11-21 16:09:03 -07:00
Massimiliano Culpo
0684a58d16 Fixed detection for cascadelake microarchitecture (#13820)
fixes #13803
2019-11-21 13:09:48 -07:00
George Hartzell
73038a3f51 Add mg, a gnu-emacs like fork of microemacs (#13812)
* Add mg, a gnu-emacs like fork of microemacs

* Use Package, since not really an Autotools package

Switch from AutotoolsPackage to Package.  Even though mg has a
configure script, it's not really an Autotools package.

* Need to also provide --prefix to configure
2019-11-21 11:40:13 -07:00
Toyohisa Kameyama
bed7e40dcc cbtf-krell: add rpcsvc-proto and libtirpc dependency. (#13800) 2019-11-21 11:38:09 -07:00
Elizabeth Fischer
9a6a19d464 doxygen: added missing dependencies to the package (#10589)
See http://www.doxygen.nl/manual/install.html
2019-11-21 15:30:31 +01:00
t-karatsu
49b9365205 texinfo: fix unescaped braces, and update locale handling (#13815)
* texinfo: Fix unescaped braces for older version.

* texinfo: update locale handling.
2019-11-20 20:54:55 -07:00
Shintaro Iwasaki
71cd91e4c1 update Argobots and BOLT (#13765)
* argobots: update to 1.0rc2

* bolt: update to 1.0rc3

* argobots/bolt: add maintainers

* argobots: use "master" for the master branch
2019-11-20 19:04:46 -07:00
Douglas Duckworth
100fcc2c8e added hmmer v 3.3 (#13793) 2019-11-20 19:04:27 -07:00
Brian Van Essen
2f069b571d Updated versions numbers for Aluminum and Hydrogen. (#13814) 2019-11-20 19:04:01 -07:00
Paul Ferrell
fb3a3ba95e 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-11-20 17:00:44 -07:00
t-karatsu
9cd778f152 ampliconnoise: Change return type of function. (#13766)
* ampliconnoise: Change function type.

* ampliconnoise: updated api call to setup run environment
2019-11-20 16:03:51 -07:00
健美猞猁
1e52aa750a find-circ: a new package. (#13767)
* find-circ: a new package.

* flake8.
2019-11-20 16:02:34 -07:00
健美猞猁
5e9ca0f939 miranda: a new package. (#13768) 2019-11-20 16:01:41 -07:00
Figroc Chen
ace47cecbe tensorflow-serving-client: add new package (#13771) 2019-11-20 16:01:04 -07:00
t-karatsu
af9281b843 bpp-suite: Clarify 'isinf' function's namespace. (#13777) 2019-11-20 15:52:44 -07:00
David Hows
ad4986be94 Fix for overlong shebang in valgrind (#13779)
Fix for some overlong shebangs in valgrind. Borrowed from verrou/package.py
2019-11-20 15:50:14 -07:00
noguchi-k
894267e02e py-numexpr3: fix version (#13781) 2019-11-20 15:49:13 -07:00
Ken Raffenetti
f25cf16b11 mpich: Add 3.3.2 (#13790) 2019-11-20 15:48:11 -07:00
Justin S
63874db562 genrich: new package at 0.6 (#13791) 2019-11-20 15:47:36 -07:00
Justin S
38ae7ab6cd sentieon-genomics: add 201808.07 (#13794) 2019-11-20 15:46:22 -07:00
Adam J. Stewart
4e4e3d192e Add old version of py-gast (#13806) 2019-11-20 15:21:03 -07:00
Adam J. Stewart
0d1e9c6e06 Add py-google-pasta package (#13807) 2019-11-20 15:20:47 -07:00
Adam J. Stewart
d43364d679 Add new py-grpcio package (#13808) 2019-11-20 15:20:28 -07:00
Adam J. Stewart
d19eb21181 Add c-ares 1.15.0 (#13809) 2019-11-20 15:20:08 -07:00
Adam J. Stewart
33059daff4 Add old versions and missing dependencies to py-protobuf (#13811) 2019-11-20 15:19:47 -07:00
Adam J. Stewart
ea42d67a9a Add old version of jdk (#13805)
* Add old version of jdk

* setup_environment -> setup_build_environment
2019-11-20 15:19:22 -07:00
Brian Van Essen
66cf530459 Added package for Clara command line parser (#13763)
* Added package for Clara command line parser
2019-11-20 00:12:43 -07:00
t-karatsu
513fe55fc3 Features/expand microarch for aarch64 (#13780)
* Add process to determine aarch64 microarchitecture

* add microarchitectures for thunderx2 and a64fx

* Add optimize flags for gcc on aarch64 family processors thunderx2 and a64fx.

* Add optimize flags for clang on aarch64 family processors thunderx2 and a64fx

* Add testing for thunderx2 and a64fx microarchitectures
2019-11-20 00:01:12 -07:00
albestro
f25a4ab089 add MAX_CPU_COUNT variant to HPX package (#13769)
* add MAX_CPU_COUNT variant to HPX package

* compatibility with python2

* correct variant description

Co-Authored-By: Mikael Simberg <mikael.simberg@iki.fi>

* add maintainers list
2019-11-19 12:49:32 -07:00
George Hartzell
d00be588e3 zlib: use setup_build_environment for build env (#13786)
zlib was using the deprecated setup_environment call.  Now it's using
the current setup_build_environment.

(noticed this in some `spack -d` output)
2019-11-19 12:29:35 -07:00
ktsai7
bb0667ceaf add more legion version and expose more flecsi options (#13741)
* add more legion version and expose more flecsi options

* formatting

* update version pointing to master to master

* fix indentation

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* use self.run_tests

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

* Update package.py

* Update package.py

* Update package.py

* Update package.py
2019-11-18 23:51:41 -07:00
Greg Becker
99dfff4475 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-18 14:13:42 -07:00
健美猞猁
e433a5dc0b py-rnacocktail: a new package. (#13761)
* py-rnacocktail: a new package.

* flake8.

* Add build-time dependencies.
2019-11-18 14:09:39 -07:00
albestro
e0746a2a07 fix libxml2 url (#13770)
http to https
2019-11-18 10:58:16 -07:00
Xavier Delaruelle
e5b3202352 environment-modules: add version 4.4.0 (#13772) 2019-11-18 10:53:06 -07:00
Massimiliano Culpo
ab62ad463d py-xattr: fix a package that was pointing to a fork (#13685)
The package now points to the official github repository for master
and to PyPI for release versions.
2019-11-18 12:09:47 +01:00
oracleLee
686e613e94 Update scalpel package.py (#13746)
* Update package.py

Update scalpel version 0.5.4

* Update package.py
2019-11-17 12:45:16 -07:00
Cyrus Harrison
d3c1547dba update to add ascent 0.5.0 release (#13709)
* fix metis src dl url

* update ascent, vtk-h and vtk-m recipes

* update conduit package

* fix vtk-m shas

* mfem conduit fix

* use vtk-h develop

* fix issue with stripped include paths in mfem

* more metis fixes

* simpler fix for mfem conduit include issue

* finish mfem changes

* pin to cmake 3.14, since we hit cuda issues with 3.15

* add rtd theme as dep for ascent

* add vtk-h 0.5.0 release, update ascent to use it

* add ascent 0.5.0 release

* fix cmake pin to allow all vers of 3.14

* fix format string error in mfem pkg

* review fixes for mfem pkg

* review fixes for vtk-h and vtk-m packages

* address review comments for ascent pkg

* changing default off of develop broke downstream use

* revert prefed
2019-11-17 12:36:14 -07:00
Axel Huebl
02f27fc45d openPMD-api: 0.10.0 (#13750)
Add latest release and first to be tagged by number in Spack,
version 0.10.0.
2019-11-17 12:35:40 -07:00
Hector Martinez-Seara
15207bae43 guile package: Handling the threads option. (#13730)
* guile package: Handling the threads option.

Currently guile by default tries to compile its thread variant.
However, the threaded version can only be compiled if bdw-gc is
compiled with some threads support. Currently, the default
compilation of the bdw garbage collector is compiled without any
thread support resulting in a compilation error.

I have changed the the default guile compilation to the non-threaded
version. I have also added the appropiated options for the bdw-gc
compilation in case the user prefers the threaded variant.

* guile package(flake8): fixed identation issues
2019-11-16 14:34:38 -07:00
Nick Booher
c8c8dca5b5 revbayes: add new versions (#13760) 2019-11-16 00:12:38 -07:00
Tim Fuller
3dbafb5ee7 Fix for issue #13754 (#13755)
* 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:32:58 -08:00
Adam J. Stewart
5510bba1fd Document use of the maintainers field (#12270)
* Document use of the maintainers field

* Use fake GitHub usernames

* GitHub action is not automatic yet
2019-11-15 13:58:24 -06:00
Greg Becker
c587c76537 Config option to allow gpg warning suppression (#13743)
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:01 -08:00
Satish Balay
40c77bf158 xsdk@0.5.0 (#13682)
Update:
 hypre@2.18.2
 mfem@4.0.1-xsdk
 superlu-dist@6.1.1
 trilinos@12.18.1
 - dtk-3.1
 petsc@3.12.1
 dealii@9.1.1
 pflotran@xsdk-0.5.0
 alquimia@xsdk-0.5.0
 sundials@5.0.0
 plasma@19.8.1
 magma@2.5.1
 amrex@19.08
 slepc@3.12.0
 omega-h@9.29.0
 strumpack@3.3.0
 pumi@2.2.1
 tasmanian@7.0
 phist@1.8.0

New:
 ginkgo@1.1.0
 py-libensemble@0.5.2
 precice@1.6.1
 butterflypack@1.1.0

Add variants:
 ginkgo
 libensemble
 precice
 butterflypack
 strumpack
 trilinos

tasmanian:  use ~openmp only on OSX
precice: disable on OSX
enable sundials+superlu-dist
sundials+superlu-dist requires OpenMP 4.5+ (so enable only for gcc@6.1+)
enable mfem+sundials
enable sundials+petsc+superlu_dist
remove hypre~internal-superlu
petsc: build with +batch on cray
precice: use ~petsc on cray
libensemble: add as runtime dependency for PYTHONPATH
2019-11-14 16:36:51 -06:00
t-karatsu
94c9e5f9a0 z3: bugfix about python dependency and fallthrough annotation. (#13713)
* z3:

* Fixed python dependency to always be required.

* bugfix about fallthrough annotation.

* z3: Add patch for before ver.4.4.1.

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-14 16:28:05 -06:00
Seth R. Johnson
e670476024 Mark conflicts between newer packages and Intel 14 compilers (#13729)
* Mark compiler/version conflict for CMake

Intel 14 lacks some C++11 features needed to compile new versions of
cmake.
```
/tmp/s3j/spack-stage/spack-stage-cmake-3.15.5-46lgp4ybhopy2p4rr66rxnew5iaddvmg/spack-src/Source/
cm_static_string_view.hxx(28): error: expected an operator
   friend static_string_view operator"" _s(const char* data, size_t
                                     ^
```

* Mark compiler/version conflict for icu4c

With Intel 14.0.4 on Linux for icu4c 60.1 and higher:
```
locid.cpp(1156): error #1140: a using-declaration may not name a constructor or destructor
        using KeywordEnumeration::KeywordEnumeration;
```

* Mark compiler/version conflict for nasm

Error installing `nasm@2.14.02%intel@14.0.4`:
```
In file included from nasmlib/crc64.c(35):
./include/nasmlib.h(116): error: expected a ";"
  fatal_func nasm_assert_failed(const char *, int, const char *);
```

* Mark compiler/version conflict for bison

Installing `bison@3.4.2%intel@14.0.4`:
```
In file included from /tmp/s3j/spack-stage/spack-stage-bison-3.4.2-
uzjszv4owvqsymjpxtxvvegfavc6k5my/spack-src/lib/quotearg.c(33):
/tmp/s3j/spack-stage/spack-stage-bison-3.4.2-uzjszv4owvqsymjpxtxvvegfavc6k5my/spack-src/lib/
xalloc.h(51): warning #303: explicit type is missing ("int" assumed)
  extern _Noreturn void xalloc_die (void);
```

* Mark compiler/version conflict for icu4c

With `icu4c@60.1%intel@16.0.4` and `icu4c@64.1%intel@16.0.4`:

```
In file included from ucurr.cpp(26):
static_unicode_sets.h(130): error #913: invalid multibyte character sequence
      {POUND_SIGN, u'£'},
                     ^
```

* Change conflict comments into messages
2019-11-14 16:27:36 -06:00
George Hartzell
7a6c7f23a0 py-matplotlib only needs backports when ^python@:2 (#13712)
* py-matplotlib only needs backports when ^python@:2

This implements @scheibelp's suggestion in #13711.

py-matplotlib should only depends_on py-backports-functools-lru-cache
when it's using a python that actually *needs* it.

See #13711 for details.

* Don't depend_ons py-enum34 unless python@:3.3

* Tighten up enum34 dependency

@adamjstewart cracked open the setup.py files and suggested a tighter
dependency for py-enum34.  1.4 and 1.5 only require it for pythons
before 3.4, 1.3 requires it unconditionally.  So...., we'll do the
same.

* Remove conflict on python 3.4 from enum34

at @adamjstewart's request see PR notes
2019-11-14 16:26:44 -06:00
Gregory Lee
8490587c76 add boost dependency to stat package (#13735) 2019-11-14 16:26:24 -06:00
xfzhao
2fb5df0284 update to v0.6.4 (#13737) 2019-11-14 16:26:08 -06:00
Emir İşman
46871416b1 Update DMTCP package to v2.6.0 (#13739) 2019-11-14 16:20:44 -06:00
Nicholas Sly
d79d11b6d4 Removed github repository and develop version from dataspaces package as it is no longer present/accessible. (#13740) 2019-11-14 16:20:13 -06:00
xfzhao
11e65661ac update vsearch (#13736) 2019-11-14 16:17:02 -06:00
Massimiliano Culpo
7e84fe966c hwloc: added 'master' version pointing at the HEAD of the master branch (#13731) 2019-11-14 12:06:07 -06:00
Sinan
00bf299e46 new package Qscintilla (with python bindings via py-pyqt ) (#12793)
* qscintilla_with_python_bindings_disabled

* pyqt5 with variant +qsci to compile qscintilla python bindings

* fix a dyn linking issue for Qsci python module

* fix a bug

* fix bug: use sip provided by py-pyqt5

* fix typo

* tidy up, make designer

* tidy up

* fix designer build issue, set env for designer plugin

* tidy up

* tidy up

* minor improvements

* improve style

* build Qscintilla python bindings here

* make qsci config option variant dependent

* get rid of commented out code

* improvements: add resource for qscintilla, improve config_args

* flake8: spaces, blank lines etc

* flake8: fix long lines

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

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

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

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

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

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

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

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

* dont install source tree under prefix

* remove duplicate line

* use os.path.join instead of +

* separate build and run environment setups

* flake8

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

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

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

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

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

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

* fix rsrc path

* use python_include_dir

* use "with working_dir"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* flake8
2019-11-14 12:01:49 -06:00
Matthias Maiterth
ab2b3f30a5 package/geopm: Added versions 1.0.0 and 1.1.0 (#13721)
* package/geopm: Added versions 1.0.0 and 1.1.0

Added changes for 1.1.0 and 1.0.0 in this patch.
Patch for 1.0.0 was previously not merged.
variant for hwloc removed since that is not a dependency since 0.5.1 and
variant('hwloc', when=:0.5.1 is not supported afaik.
made depends_on versions more explicit.

* package/geopm: removed 1.0.0 release candidates 1 and 2.
2019-11-14 12:01:03 -06:00
Hector Martinez-Seara
cd04538bb9 Adding final bug-releases for the gromacs-2016 and -2018 and Plumed (#13715)
* Adding final bug-releases for the gromacs-2016 and -2018

* Added newer versions of plumed and libmatheval not a dependency >v2.5

* plumed package: chamge name git branch to master
2019-11-14 12:00:36 -06:00
Seth R. Johnson
b8916ecc08 Fix libbsd on Intel compilers (#13720)
Libbsd assumes GCC-defined compiler macros:
```
In file included from nlist.c(44):
local-elf.h(238): catastrophic error: #error directive: Unknown ELF machine type
  #error Unknown ELF machine type
   ^
```
The `__amd64__` and `__x86_64__` macros should be equivalent, but the
latter is defined by intel.
2019-11-14 11:59:46 -06:00
Peter Scheibel
3f861e18b0 symlink relativization: determine target relative to the link directory (#13710)
when making a package relative, relocate links relative to link directory

rather than the full link path (which includes the file name) because `os.path.relpath` expects a directory.
2019-11-13 17:51:57 -08:00
sknigh
045e9c905f Added "file" package and added missing depenency to VIM (#13705)
* Added "file" package and added missing depenency to Vim

* added which and grep

* Added gzip

* added missing dependency to gmake
2019-11-13 18:12:10 -06:00
David Böhme
1ed8de8757 Add Caliper v2.2.0 and v2.1.1 (#13723)
* Add Caliper v2.2.0 and v2.1.1

* Add conflict for adiak when for versions <2.2

* Trim trailing whitespace
2019-11-13 18:11:09 -06:00
Greg Becker
43b0356e14 Allow binary relocation of strings in relative binaries (#13725)
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:35 -08:00
G-Ragghianti
dc36b4737d Papi components (#13706)
* Added support for papi components.

* Restored sha256 hashes to package files.
2019-11-13 15:49:06 -06:00
Justin S
a2ef7896b7 rnaz: new package at 2.1 (#13707) 2019-11-13 15:48:06 -06:00
thelfer
ff9b03edc3 Fix mgis package dependency on boost/numpy (#13717) 2019-11-13 15:35:09 -06:00
William F Godoy
d6274e1a1d Docs update for deprecated spack sha256 (#13701)
* Docs update for deprecated `spack sha256`

* Added macOS shasum

* Update lib/spack/docs/packaging_guide.rst

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-13 15:21:27 -06:00
Sinan
9ae4f42ab5 new package: sfcgal (#12624)
* new package: sfcgal

* improve meta information

* add variant and optional dependencies

* add cmake options for building with viewer

* improve dependency type

* improve viewer variant

* improve viewer variant

* specify dependency versions

* add ref

* remove depricated variant
2019-11-13 15:19:43 -06:00
Hari Subramoni
1a6bba1632 Update MVAPICH2 package for 2.3.2 release (#13236)
* Update MVAPICH2 package for 2.3.2 release
Update default build from psm to mrail

* Update different provides for older versions based on feedback from Todd Gamblin

* Simplify rule so one rule covers 2.1 and 2.2

* Add support for disabling rpath based on feedback from Dr. Shende

* Add colon based on comment

* Address review comment by Adam Stewart

* Add declaration of the wrapperpath variant.
    - Thanks to Massimiliano Culpo for the comment
2019-11-13 15:18:35 -06:00
Satish Balay
4d37db02da superlu_dist: fix build with xl compilers (#13702)
* superlu_dist: fix build with xl compilers

* fix link error  ../SRC/libsuperlu_dist.so.6.1.1: undefined reference to `ztrtri_'

* Fixed the ordering of the spec on the xl-611 patch.

* fix flake8 error
2019-11-13 15:03:24 -06:00
Chris Green
56de86dda6 root: relax libxml2 requirements when ~python. (#13657)
* Relax libxml2 requirements when ~python.

Per https://github.com/spack/spack/issues/13637#issuecomment-552026561

* Satisfy package_sanity.py::test_prs_update_old_api.
2019-11-12 23:33:47 -08:00
Satish Balay
53b2add34f strumpack: revert default to ~shared [i.e behavior before this variant was added] as +shared fails on multiple builds (#13703) 2019-11-12 20:22:34 -06:00
Todd Gamblin
da386b560a docs: use nicer looking code blocks in docs (#13708)
- [x] Use higher contrast terminal output font
- [x] Use higher contrast code block background color than default
- [x] Use a noticeable prompt character

See also https://github.com/spack/spack-tutorial/pull/10.
2019-11-12 18:18:41 -08:00
Simon Pintarelli
d0de9f8d9d add new version for py-ranger-fm (formerly py-ranger) (#13681)
- download from pypi, drop 1.7.2
- drop 1.7.2, it is not available from pypi
2019-11-12 12:05:18 -06:00
sknigh
1ae824737e Add missing dependencies to flex. (#13692) 2019-11-12 12:01:15 -06:00
h-denpo
2b6c4245d0 Fixed url. url="https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz") (#13693) 2019-11-12 11:58:49 -06:00
t-karatsu
ca19fb86c1 damselfly: Add mpi dependency. (#13694) 2019-11-12 11:58:11 -06:00
Adrian Jackson
57aa7ba045 Fixing Fortran MPI compiler reference in mpt package (#13699) 2019-11-12 11:57:07 -06:00
Stephen Hudson
cea7403b67 Update nlopt package to add Python bindings to PYTHONPATH (#13688)
* Update nlopt package to add Python bindings to PYTHONPATH

* Use extends for nlopt/python fix

* nlopt - change develop to master and add python dep qualifiers
2019-11-12 11:46:12 -06:00
Massimiliano Culpo
826e8c6394 athena, mvapich2, spectrum-mpi: use new API to setup environment (#13677)
* athena: updated api call to setup build environment

* mvapich2: updated api call to setup build and run environment

* spectrum-mpi: updated api call to setup build and run environment
2019-11-12 11:44:12 -06:00
Frédéric Simonis
b1965fa913 precice: enable petsc by default (#13696) 2019-11-12 11:40:37 -06:00
Satish Balay
cbfdc85d26 trilinos: add version 12.18.1 with dtk-3.1 (#13690) 2019-11-12 07:52:24 -06:00
Satish Balay
9e12b4e95a sundial: add patch for build failure on cori/theta (#13665) 2019-11-12 07:52:05 -06:00
Daryl W. Grunau
5a9389a528 verify.py: os.path.exists exception handling (#13656) 2019-11-11 17:47:47 -06:00
Simon Pintarelli
e5b38c525e SIRIUS: add new version, add magma support (#13680)
- depends on spfft starting from 6.4.0
- add magma variant
- avoid setting cuda_arch to none
- add python dependencies
- use release as default build type
2019-11-11 16:19:40 -06:00
sknigh
fdb85744e3 added lcov package (#13687) 2019-11-11 15:13:48 -06:00
Adrian Jackson
3eaa790efa Add HPE MPT package (#13616)
* Adding in HMPT package for HPE MPI libraries

* Updating copyright dates

* Renaming HPE MPI package

* Fixing error in package file

* Tidying up defintions and linting

* liniting

* Adding in library setup so packages that want to manually add mpi libraries can do so (i.e. npb)

* Linting

* Linting

* Investigating old API errors

* Investigating api errors

* Investigating api errors

* Investigating api errors

* Investigating api errors

* Investigating api errors: adding back in functions to see when the build fails

* Investigating api errors: adding back in functions to see when the build fails

* Investigating api errors: adding back in functions to see when the build fails

* Investigating api errors: adding back in functions to see when the build fails

* Investigating api errors: adding back in functions to see when the build fails

* Linting

* Linting

* Fixing

* Fixing
2019-11-11 13:22:20 -06:00
Adam J. Stewart
dc51d676a2 cuDNN: add new versions (#13668)
* cuDNN: add new versions

* cuDNN 9.0 can build against CUDA 9.1

* Undo version format change
2019-11-11 12:53:26 -06:00
Adam J. Stewart
03fb2d61c6 Add new version of Intel MKL-DNN (#13669)
* Add new version of Intel MKL-DNN

* Get OpenMP build working

* lomp is also needed for linking

* http -> https

* Add myself as maintainer
2019-11-11 12:52:53 -06:00
Adam J. Stewart
38da69346c py-scikit-learn: update OpenMP flag (#13683) 2019-11-11 12:52:30 -06:00
Brian Spilner
3eb19b142f new CDO release 1.9.8 (#13674) 2019-11-11 12:52:06 -06:00
Pieter Ghysels
6fc3e73f8d Update ButterflyPACK and STRUMPACK (#13661)
* Add new strumpack version (3.2.0), with new
dependency on ButterflyPACK.

* add ButterflyPACK version 1.1.0

* Add strumpack version 3.3.0, add dependency on ButterflyPACK 1.1.0

* Sort ButterflyPACk versions from newest to oldest

* Add a shared variant for STRUMPACK

* Also allow possible newer versions of ButterflyPACK
2019-11-11 12:24:13 -06:00
Phil Carns
4934448065 pmdk: fix x86_64 arch check (#13676) 2019-11-11 15:46:44 +01:00
Adam J. Stewart
bd9907809e environments: don't try to modify run-env if a spec is not installed (#13589)
Fixes #13529
Fixes #13509
2019-11-11 13:02:36 +01:00
Adam J. Stewart
e10f8fe531 py-numpy: added version 1.17.4 (#13670) 2019-11-11 11:26:21 +01:00
Adam J. Stewart
901da240f3 CMake: added version 3.13.5 (#13671) 2019-11-11 11:25:50 +01:00
Axel Huebl
86202a5ad0 nlohmann-json 3.7.2 (#13672)
Add the latest bugfix release.
2019-11-11 11:23:50 +01:00
Adam J. Stewart
60070759a0 Improve spack checksum formatting (#13666)
* Improve spack checksum formatting

* Add colon

* Fix Python 2 bug
2019-11-10 16:47:56 -06:00
Adam J. Stewart
1ca91d728a Update default PyTorch variants (#13667) 2019-11-10 16:46:04 -06:00
Adam J. Stewart
ff330631ed Add py-scipy 1.3.2 (#13663) 2019-11-09 19:41:44 -06:00
Adam J. Stewart
834a8be933 Add grass 7.8.1 (#13664) 2019-11-09 19:41:29 -06:00
Kelly (KT) Thompson
550e9907f5 New Package: py-pyside2 (#13647)
* New Package: py-pyside2

https://wiki.qt.io/Qt_for_Python

The Qt for Python project aims to provide a complete port of the PySide module
to Qt 5. The development started on GitHub in May 2015. The project managed to
port Pyside to Qt 5.3, 5.4 & 5.5. During April 2016 The Qt Company decided to
properly support the por

* Address review comments:

+ Add a variant for `+doc` and only depned on some packages if this variant is
  active.
+ Enable building the tests if requested.
+ Correct registered required verions for python and qt.

* Remove dead code, fix depends_on command args.

* fix one more flake8 issue.

* One more fix to  arguments and change  version name to .
2019-11-09 18:22:30 -06:00
Teodor Nikolov
3db3395ed1 hpx: fix incompatible cxxstd with boost and compiling tests (#13660)
* Add a variant for tests and parallelize builds

- Fix a bug with boost defaulting to cxxstd=98 when cxxstd=11 is the
  minimum for hpx
- Disable tests by default and use a variant to enable them if requested
- Enable parallel builds: each process takes up to 1Gb when tests are
  not enabled.

* Remove tests variant

- The variant doesn't change what gets installed. Testing can be
  activated using `spack install --test=root hpx`
2019-11-09 18:21:40 -06:00
Seth R. Johnson
d01a8f7cd6 Fix visit+ (#13652)
* Propagate MPI option in VTK to NetCDF

This fixes a conflict message reads as though NetCDF always requires
hdf5+mpi. It allows `visit~mpi` to resolve correctly without an
additional `^netcdf~mpi`.

* Tell VisIt not to look for 'hdf5_mpi' library
2019-11-09 12:47:04 -06:00
Michael Kuhn
eee3a63a3e graphviz: Fix patch URL (#13654)
* graphviz: Fix patch URL

* Switch setup_environment to setup_build_environment
2019-11-09 12:46:29 -06:00
Figroc Chen
9a4797b74c grpc: update to 1.24.3 (#13658) 2019-11-09 12:42:34 -06:00
Mark Olesen
e27d7479a3 update openfoam versions, sha256 values and download directory (#13653)
- patched versions are located in the same directory as the
  original release. For example, 1906_191103 is located in
  the 'v1906/' directory, not in 'v1906_191103/'.

- add master branch as a known version
2019-11-08 14:46:33 -06:00
Marc Mengel
2584639e34 New Package py-portend (#13584)
* package py-portend

* package py-portend

* autopep8, docutils cleanup

* dependency in wrong package

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

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

* license bits

* dependencies again
2019-11-08 14:44:29 -06:00
Marc Mengel
148566ebd5 new package: py-zc-buildout (#13585)
* package py-zc-buildout

* package py-zc-buildout

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

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

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

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

* license bits

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-08 14:43:49 -06:00
Marc Mengel
ec6b2f7bb1 New Package: py-cherrypy (#13587)
* package py-cherrypy

* package py-cherrypy

* autopep8, docutils cleanup

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

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

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

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

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

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

* portend depends on tempora, not cherrypy directly

* setuptools_scm bits

* dependency one level up

* license bits

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-08 14:41:59 -06:00
Adam J. Stewart
b189d10f1f py-torchvision: add 0.4.2 (#13651) 2019-11-08 14:33:46 -06:00
Axel Huebl
c1ee069d1b openPMD-api: JSON Always On (#13641)
JSON is not a compile-time variant anymore and a mandatory
dependency from now on.
2019-11-08 11:00:10 -06:00
t-karatsu
3c2542f387 fluxbox: fix the comparison method with zero. (#13642) 2019-11-08 10:45:36 -06:00
Jonathan R. Madsen
2eb65f8a5d Timemory (#13503)
* Create timemory/package.py

* Update package.py

* mpi default to on

* Update package.py

* Update package.py

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

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

* Update package.py

* Update package.py

* Update package.py

- cleanup
- python deps specify type
- python 2.6 compatibility
- double quotes to single quotes

* Update package.py

* Update package.py
2019-11-08 10:35:14 -06:00
Frédéric Simonis
3f7fd4037f precice: add compiler conflicts (#13644) 2019-11-08 10:33:00 -06:00
Mark Olesen
f4a1666b1a Update openfoam to use new environment api (ref: #11115, 9ddc98e46a) (#13645)
- build:
  no special treatment - already addressed in the spack-Allwmake script

- run:
  use environment from the OpenFOAM etc/bashrc
2019-11-08 10:32:14 -06:00
Daryl W. Grunau
ae6229dee2 llvm: fix PythonString::GetString for >=python-3.7 (#13631)
* llvm: fix PythonString::GetString for >=python-3.7

* llvm/package.py: fix when the patch should be applied
2019-11-07 19:05:16 -06:00
Marc Mengel
119af6d71b new package: py-tempora (#13582)
* package py-tempora

* package py-tempora

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

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

* missing deps

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

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

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

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

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

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

* license bits
2019-11-07 18:59:38 -06:00
Marc Mengel
a2627da7d9 New package: py-uwsgi (#13619)
* package py-uwsgi

* package py-uwsgi

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

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

* license bits
2019-11-07 18:58:47 -06:00
Marc Mengel
fd01ac0ff1 New package: py-jaraco-functools (#13581)
* package py-jaraco-functools

* package py-jaraco-functools

* autopep8, docutils cleanup

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

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

* missing deps

* license bits

* ...and later versions

* lru cache dep change from adamjstewart
2019-11-07 18:52:32 -06:00
Satish Balay
ff307aa86c Balay/ginkgo 1.1.0 (#13632)
* ginkgo: add version 1.1.0

* Ginkgo: add conflict for gcc older than version 5.3
2019-11-07 18:51:20 -06:00
Todd Gamblin
c9c267518f 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-11-07 17:13:51 -07:00
Kelly (KT) Thompson
719ebd18c3 py-pyside: fix setup files to support python 3.5. (#13613)
This fix already exists in the development branch of pyside. See
https://github.com/pyside/pyside-setup/pull/55.
2019-11-07 15:43:49 -06:00
Justin S
8139d7cb69 elmer-fem: add devel branch (#13630) 2019-11-07 15:41:43 -06:00
Adam J. Stewart
9936c8269f PyTorch: Add 1.3.1 (#13629) 2019-11-07 13:47:13 -06:00
Andreas Baumbach
0616c6ada1 (py)arrow: new versions (#13561)
* (py)arrow: new versions

* move py-arrow source to github as not all versions are on pypi
  same checksum as pypi, adding build_directory

* move back to pypi sources

* drop 0.15.0 and 0.14.1 as only .whl are available on pypi

* add new dependencies

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-07 11:52:29 -06:00
Andreas Baumbach
76c15f11e0 new package: py-convertdate (#13573)
* new package: py-convertdate

* Update docstring
2019-11-07 11:51:53 -06:00
Adam J. Stewart
344e4e0d1c Speed up PyTorch build (#13621) 2019-11-07 10:05:50 -06:00
健美猞猁
be56fe0677 bam-readcount: a new package. (#13628) 2019-11-07 10:00:43 -06:00
Josh Deaton
d748df73a3 m4: fixed macOS version identification on patch (#13623)
Patch was not being applied in recent versions of macOS. Homebrew is still applying patch to any version after High Sierra.
2019-11-07 09:43:59 -06:00
Andreas Baumbach
45eecbdbc2 py-jupyter-core add new version and setuptools dependency (#13424)
* py-jupyter-core add new version and setuptools dependency

* update checksums to use pypi

* fixup url and python dep type

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-06 13:30:59 -06:00
Andreas Baumbach
12da0e7152 new package: py-jdatetime (#13569)
* new package: py-jdatetime

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-06 13:25:01 -06:00
Michael Kuhn
6d6716e302 ncview: Fix dependency check (#13615)
netcdf has been renamed to netcdf-c.
2019-11-06 13:24:33 -06:00
Christoph Junghans
0d35ae7f5f gromacs: add v2019.4 and others (#13617)
* gromacs: add v2019.4 and others

* gromacs: fix patch applying
2019-11-06 13:24:14 -06:00
Andreas Baumbach
52afcfac4d new package: py-dateparser (#13574)
* new package: py-dateparser

* take setup.py dependencies into account

* fixup help->description

* reorder dependencies

* drop version constraints not enforced in setup.py
2019-11-06 13:18:37 -06:00
Andreas Baumbach
6b7a51587b new package: py-nodeenv (#13594)
* new package: py-nodeenv

* drop python version requirements, not enforced by setup.py
2019-11-06 13:16:49 -06:00
Andreas Baumbach
4ed56573c4 py-tatsu: new package (#13566)
* py-tatsu: new package

* drop unnecessary dependencies

* drop kanji, add variant, and restrict to future releases
2019-11-06 13:16:05 -06:00
Michael Kuhn
52eba8fb00 netcdf-fortran: Fix parallel builds (#13612)
netcdf-fortran@4.5: will error if netcdf-c has been built with MPI
support:
```
configure: error:
      -----------------------------------------------------------------------
        The NetCDF C library is built with parallel I/O feature enabled, but
        the Fortran compiler '.../lib/spack/env/gcc/gfortran' supplied in this configure command
        does not support MPI-IO. Please use one that does. If parallel I/O
        feature is not desired, please use a NetCDF C library with parallel
	I/O feature disabled. Abort.
      -----------------------------------------------------------------------
```

Copy logic from netcdf-c to add an `mpi` variant.
2019-11-06 11:14:35 -06:00
Michael Kuhn
95bc677445 cdo: Fix with_or_without calls (#13614)
netcdf has been renamed to netcdf-c and udunits2 has been renamed to
udunits.
2019-11-06 11:13:21 -06:00
Andreas Baumbach
e292bef411 new package: py-pymeeus (#13572)
* new package: py-pymeeus

* drop unnecessary dependencies
2019-11-06 11:02:19 -06:00
Andreas Baumbach
ea5c7917ac new package: py-pre-commit (#13570)
* new package: py-pre-commit

* update missing dependencies

* add python version restriction
2019-11-06 11:01:33 -06:00
Andreas Baumbach
2bd1a0ca4c new package: py-aspy-yaml (#13591)
* new package: py-aspy-yaml

* add python version dependency
2019-11-06 10:55:19 -06:00
Michael Kuhn
abce878fad go: Add 1.13.4 and 1.12.13 (#13609) 2019-11-06 11:36:35 +01:00
Axel Huebl
f9dc41f806 pybind11: correct get_include path (#13605)
* pybind11: test get_include path

Helper for non-CMake downstream projects to find the pybind11
header location.

* pybind11: return proper get_include()

use our prefix instead of letting pybind11 trying to self-determine
it from given conda/virtualenv/global rules.

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-06 07:15:13 +01:00
Andreas Baumbach
a684efe826 new package: py-ics (#13576)
* new package: py-ics

* drop 0.5 and move to tar-ball

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

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

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-05 17:03:31 -06:00
Jordan Ogas
6dabdb7a82 add charliecloud 0.12 (#13599)
* add charliecloud 0.12

* fix typo

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-05 15:51:02 -06:00
Adam J. Stewart
6ffbc9c091 Add GDAL 3.0.2 (#13603) 2019-11-05 15:05:36 -06:00
Axel Huebl
8cbea5f767 mpi4py 3.0.3 (#13601)
* mpi4py 3.0.3

Adds support for Python 3.8 with new Cython files.
I tried to build 3.0.0 with Python 3.8 and this builds as well,
therefor I added no conflict.

* mpi4py: update dependency version ranges
2019-11-05 15:04:49 -06:00
Christoph Junghans
7c018bc2c8 netcdf: fix headers in v4.7.2 (#13600) 2019-11-05 12:56:02 -07:00
Christoph Junghans
10f509b182 elpa: add v 2019.05.002 (#13602) 2019-11-05 12:55:51 -07:00
Adam J. Stewart
27ab045dc1 PyTorch: avoid use of third party vendored deps (#13588)
* PyTorch: avoid use of third party vendored deps

* Flake8 fix
2019-11-05 13:19:07 -06:00
Andreas Baumbach
7a0bed7893 add depends_on(python) to PythonPackage stub (#13595) 2019-11-05 13:18:17 -06:00
Andreas Baumbach
68a34a11bc new package: py-nose-cov (#13571)
* new package: py-nose-cov

* add missing dependencies
2019-11-05 12:57:31 -06:00
Andreas Baumbach
74c81c0fc3 update py-notebook (#13423)
* update py-jupyter-notebook

* add setuptools dependency for newer version
  the whole jupyter collection seems to use setuptools in case of
  certain setup.py-arguments from the very beginning. However the latest
  ones actually require it, otherwise the build will fail
* add newly introduced dependencies

* dependency constraints

* drop terminal variant and update python dep
2019-11-05 12:51:00 -06:00
Andreas Baumbach
35f0003c08 new package py-cfgv (#13592) 2019-11-05 12:47:52 -06:00
Andreas Baumbach
aa2972172a new package: py-identify (#13593) 2019-11-05 12:46:57 -06:00
Douglas Duckworth
54e1d57647 added relion 3.0.8 [latest stable version in 3.0 branch] as well as 3.1_beta (#13539)
* added relion 3.0.8 [latest stable version in 3.0 branch] as well as 3.1_beta

* relion 3.1 beta compiles without Benchmarking build type see https://github.com/3dem/relion/issues/533

* relion 3.0.X - 3.1 now supports latest cmake@3
2019-11-05 12:40:27 -06:00
Todd Gamblin
a6ccb5b2fa bugfix: uninstall should find concrete specs by DAG hash (#13598)
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 06:12:12 -07:00
Todd Gamblin
b77974e986 spack find now displays variants and other spec constraints (#13596)
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 05:39:56 -07:00
Andreas Baumbach
527d639b0e new package py-testpath (#13417)
* new package py-testpath

dependency of py-nbconvert

* py-testpath: fix flake8

* Remove the unnecessary pip dependency
2019-11-04 19:39:25 -06:00
Andreas Baumbach
4f5d3770c7 update py-pyzmq (#13420)
* update py-zmq

* update dependencies
2019-11-04 19:38:19 -06:00
Andreas Baumbach
0341c38dff update py-jupyter-client and new setuptools dependency (#13425)
* update py-jupyter-client and new setuptools dependency

* update dependencies
2019-11-04 19:28:59 -06:00
xfzhao
18243695c9 Mothur update (#13580)
* add +vserach option

* fixes #967
2019-11-04 19:27:13 -06:00
Gregory Lee
7e2e93b787 added archer 2.0.0 and package build fixes (#13577) 2019-11-04 17:39:16 -06:00
Christoph Junghans
dd7ebcf2d9 portage: fix lapack/blas linkage (#13558) 2019-11-04 16:35:28 -07:00
Andreas Baumbach
0f3ffad430 py-colorama: new version 0.4.1 (#13562)
* py-colorama: new version 0.4.1

* add python dependency
2019-11-04 16:46:29 -06:00
Andreas Baumbach
0b93e95049 py-regex: new version 2019.11.1, w/o setuptools (#13563) 2019-11-04 16:45:47 -06:00
Andreas Baumbach
80f63f7f9b py-dataclasses: new package (#13564) 2019-11-04 16:44:11 -06:00
Andreas Baumbach
6b27d87e7a py-tzlocal: add new version 2.0.0 (#13565) 2019-11-04 16:43:15 -06:00
Andreas Baumbach
3bd7d7f211 new package: py-chai (#13567) 2019-11-04 16:41:28 -06:00
Andreas Baumbach
880a8d40ce new package: py-umalqurra (#13568) 2019-11-04 16:40:06 -06:00
Hadrien G
1114ae9375 Add ACTS v0.10.5 (#13556) 2019-11-04 11:43:45 -06:00
Sinan
bbb5284b42 py-astor: specify py-setuptools versions as build fail with latest version (#13533)
* specify py-setuptools dependency as build fail with latest version

* explain

* py-astor builds with setuptools@41.3
2019-11-04 10:21:59 -06:00
Stephen Herbein
19410461b7 Flux v0.11.1 - v0.11.3 (#13199)
* flux: add `url_for_version` to support their C4 repo model

Flux uses a fork of ZeroMQ's Collective Code Construction Contract
(https://github.com/flux-framework/rfc/blob/master/spec_1.adoc).
This model requires a repository fork for every stable release that has
patch releases.  For example, 0.8.0 and 0.9.0 are both tags within the
main repository, but 0.8.1 and 0.9.5 would be releases on the v0.8 and
v0.9 forks, respectively.

* flux: add latest versions

* flux: remove master from `when=@0.X:,master` statements

Now that #1983 has been merged, master > 0.X.0.

* flux-core: remove extraneous `99` patch version in `when` range

Replace `when=@:0.11.99` with `when=@:0.11` since the intention is to
include all patch versions of `0.11`.

* flux-core: fix `setup_build_environment` after changes in #13411

In #13411, `setup_environment` was split into `setup_build_environment`
and `setup_run_environment`, with the `spack_env` and `run_env`
arguments being changed to `env`.  Somehow the flux package was the only
one to not have its `spack_env` references in the function changed to
`env`.

* flux: add runtime environment variables that Flux checks

with older versions of Flux (i.e, 0.0:0.13), FLUX_CONNECTOR_PATH must be
set by spack to prevent failures in certain
scenarios (https://github.com/flux-framework/flux-core/issues/2456).

the flux binary also sets some other environment variables, which can be
listed by running `flux -v start`.  I added a few of those just to be
sure that the Spack-installed paths are used, rather than
system-installed ones.

* flux: add optional testing dependencies to maximize test coverage

Install optional dependencies to ensure that only spack-installed
software is detected and that all tests are run when `spack install
--test` is used.

Flux's test suite will test for the existance of valgrind, jq, and any
MPI installation.  If it detects them (even if they are system-installed
and outside the spack environment), it will run optional tests against
them.  I noticed on my machine that the valgrind tests were running
against the system-install valgrind.

* flux-sched: switch to new `setup_run_environment` API
2019-11-04 09:58:40 -06:00
Adam J. Stewart
903b0071cf Add latest version of py-pybind11 (#13552)
* Add latest version of py-pybind11

* setup_environment -> setup_build_environment
2019-11-04 02:00:02 -08:00
Omar Padron
0784ec1a6d 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:11:30 -08:00
Simon Pintarelli
bcda14f825 Add py-voluptuous (#13457)
Data validation library
2019-11-03 18:48:52 -06:00
Justin S
1d8391a60c r-gstat: new package at 2.0-3 (#13131)
* r-gstat: new package at 2.0-3

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

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

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-03 18:35:08 -06:00
Greg Becker
aa7c229c8f 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:46:41 -08:00
Ricardo Silva
c42ebb0ccc Polymake: new version and more dependencies (#13399)
* New package: perl-term-readline-gnu

* polymake dependency

* perl-term-readline-gnu: flake8

* New package: perl-xml-libxslt

* polymake dependency

* ppl: new version 1.2

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

* polymake: new version and dependencies

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

* perl-xml-libxslt: missing dependency
2019-11-03 17:44:34 -06:00
Jannek Squar
9331a943ce New package py-wradlib with new dependencies (#13459)
* New package py-wradlib with new dependencies py-deprecation, py-semver, py-xmltodict

* Adjusted package source source

* Adjusted xarray package to use pypi-source

* Added dependencies

* Added explicit gdal+python dependency

* Concretised dependency versions

* Removed strict version range
2019-11-03 17:38:27 -06:00
Jannek Squar
c175be4420 Added dependencies (#13519)
* Added dependencies

* Adjusted dependency
2019-11-03 17:28:19 -06:00
Jannek Squar
ed037d0c5d Update package saga gis (#13520)
* Improvements of saga-gis package

* Added explicit version ranges for old saga-gis version

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

Creative usage of redefinition of getter method

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

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

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

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-11-03 17:26:53 -06:00
Daryl W. Grunau
ed89825557 constexpr_longdouble.patch should be applied to v6 too (#13548) 2019-11-03 16:47:41 -06:00
Adam J. Stewart
e12a738d84 Add latest version of protobuf (#13551) 2019-11-02 15:58:46 -05:00
Adam J. Stewart
573789f067 Add QNNPACK package (#13549) 2019-11-02 14:39:31 -05:00
健美猞猁
c43e6839d4 chgcentre: a new package. (#13500)
* chgcentre: a new package.

* flake8.
2019-11-02 12:58:57 -05:00
Adam J. Stewart
a8228e1aec spack create: http -> https (#13547) 2019-11-01 17:40:49 -05:00
Peter Scheibel
2e029fc2e5 Bugfix: respect order of mirrors in mirrors.yaml (#13544)
Commands like "spack mirror list" were displaying mirrors in a
different order than what was listed in the corresponding mirrors.yaml
file.

This restores commands to iterate over mirrors in the order that
they appear in the config file.
2019-11-01 14:02:08 -07:00
Greg Becker
24ec9f0ce3 environments: make shell modifications partially unconditional (#13523)
* environments: make shell modifications partially unconditional

* flake

* missing module name

* add regression test

* flake
2019-11-01 12:00:16 -05:00
Adam J. Stewart
f6e26c402b Add py-tables 3.6.1 (#13536) 2019-11-01 11:37:04 -05:00
Simon Pintarelli
854f45a136 libxc: update URL / new API (#13471)
- setup_environment -> setup_build_environment
- remove patch
2019-11-01 11:35:30 -05:00
Marc Mengel
2cea0633fa allow bootstrap buildcache install of patchelf (#13430)
* allow bootstrap buildcache install of patchelf

* file not path_name on one

* style

* add test for relocating patchelf

* blank lines..
2019-11-01 10:54:55 -05:00
Omar Padron
0f816561db 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:42:43 -07:00
Gregory Lee
3bdab6f686 sbang: use utf-8 for encoding when patching (#13490)
This fixes a UnicodeDecodeError in the sbang patching function.
2019-11-01 03:39:45 -07:00
Massimiliano Culpo
390ffb80e7 Specs with quoted flags containing spaces are parsed correctly (#13521) 2019-11-01 03:38:11 -07:00
Massimiliano Culpo
42b8355269 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:36:28 -07:00
Satish Balay
43b18dada4 hypre: add version 2.18.2 (#13527) 2019-10-31 18:35:13 -05:00
Daniel Topa
93e87474fb dd Open MPI v. 4.0.2 (#13257)
Verification builds on LANL Darwin x86_64, ARM, and, Power9:

x86_64: OPTANE
dantopa@cn733:pr-openmpi-4.0.2.spack $ spack arch
linux-centos7-skylake_avx512

$ spack install openmpi @ 4.0.2 % gcc @ 4.8.5
...
==> Installing openmpi
...
==> Successfully installed openmpi
  Fetch: 2m 15.65s.  Build: 6m 13.17s.  Total: 8m 28.82s.
[+] /scratch/users/dantopa/new-spack/pr-openmpi-4.0.2.spack/opt/spack/linux-centos7-haswell/gcc-4.8.5/openmpi-4.0.2-jrypg7vfnk6nl5if2rnzt65wdrjelxsq

NEHALEM
$ spack arch
linux-centos7-nehalem

$ spack install openmpi @ 4.0.2 % gcc @ 4.8.5
...
==> Installing openmpi
...
==> Successfully installed openmpi
  Fetch: 50.48s.  Build: 9m 11.45s.  Total: 10m 1.93s.
[+] /scratch/users/dantopa/new-spack/pr-openmpi-4.0.2.spack/opt/spack/linux-centos7-nehalem/gcc-4.8.5/openmpi-4.0.2-4jz3bcwjci44taizt4jqzxqh4y75uswc

ARM
$ spack arch
linux-rhel7-aarch64

$ spack install openmpi @ 4.0.2 % gcc @ 4.8.5
...
==> Installing openmpi
...
==> Successfully installed openmpi
  Fetch: 1m 10.47s.  Build: 11m 41.45s.  Total: 12m 51.92s.
[+] /scratch/users/dantopa/new-spack/pr-openmpi-4.0.2.spack/opt/spack/linux-rhel7-aarch64/gcc-4.8.5/openmpi-4.0.2-ygr77roadqzdnsdgqz3uactjqnb5nayn

POWER9
$ spack arch
linux-rhel7-power9le

$ spack install openmpi @ 4.0.2 % gcc @ 4.8.5
==> Warning: Using GCC 4.8 to optimize for Power 8 might not work if you are not on Red Hat Enterprise Linux 7, where a custom backport of the feature has been done. Upstream support from GCC starts in version 4.9
...
==> Installing openmpi
...
==> Successfully installed openmpi
  Fetch: 23.95s.  Build: 9m 7.67s.  Total: 9m 31.62s.
[+] /scratch/users/dantopa/new-spack/pr-openmpi-4.0.2.spack/opt/spack/linux-rhel7-power8le/gcc-4.8.5/openmpi-4.0.2-cid4wfzr2iwgz6ybhkexludwu7koi266

$ spack find -ldf openmpi
==> 4 installed packages
-- linux-centos7-haswell / gcc@4.8.5 ----------------------------
jrypg7v openmpi@4.0.2%gcc
lliismp     hwloc@1.11.11%gcc
7dqpxas         libpciaccess@0.13.5%gcc
viidrh5         libxml2@2.9.9%gcc
yhvj3br         numactl@2.0.12%gcc
pkmj6e7     zlib@1.2.11%gcc

-- linux-centos7-nehalem / gcc@4.8.5 ----------------------------
4jz3bcw openmpi@4.0.2%gcc
pcauu6w     hwloc@1.11.11%gcc
yiqf6bj         libpciaccess@0.13.5%gcc
wpfgqf2         libxml2@2.9.9%gcc
fd2xpnm         numactl@2.0.12%gcc
xguzaxf     zlib@1.2.11%gcc

-- linux-rhel7-aarch64 / gcc@4.8.5 ------------------------------
ygr77ro openmpi@4.0.2%gcc
omy3xi2     hwloc@1.11.11%gcc
6a4he35         libpciaccess@0.13.5%gcc
txqo4cc         libxml2@2.9.9%gcc
m5neuus         numactl@2.0.12%gcc
67s2oqn     zlib@1.2.11%gcc

-- linux-rhel7-power8le / gcc@4.8.5 -----------------------------
cid4wfz openmpi@4.0.2%gcc
zcdnwb3     hwloc@1.11.11%gcc
lencfon         libpciaccess@0.13.5%gcc
bve4jop         libxml2@2.9.9%gcc
kajzqwg         numactl@2.0.12%gcc
tjbynt2     zlib@1.2.11%gcc

Thu Oct 17 19:02:50 MDT 2019

Signed-off-by: Daniel Topa <dantopa@lanl.gov>
2019-10-31 14:57:50 -07:00
Peter Scheibel
6ec39b6c81 Bugfix: BundlePackage staging/installation (#13524)
4af4487 added a mirror_id function to most FetchStrategy
implementations that is used to calculate resource locations in
mirrors. It left out BundleFetchStrategy which broke all packages
making use of BundlePackage (e.g. xsdk). This adds a noop
implementation of mirror_id to BundleFetchStrategy so that the
download/installation of BundlePackages can proceed as normal.
2019-10-31 12:56:38 -07:00
Adam J. Stewart
4b56933643 Docs: unlock requirement versions (#13384) 2019-10-31 14:21:05 -05:00
Adam J. Stewart
536486f0e5 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-10-31 14:20:46 -05:00
Nichols A. Romero
14fdaca4b4 Bump up PGMath Library to latest version. More transparent name of the branch, version name equals branch name. (#13511) 2019-10-31 13:00:59 -05:00
Adam J. Stewart
b4a51084ab Add GRASS 7.8.0 (#13026)
* Add GRASS 7.8.0

* Add new variants/dependencies

* Remove unused dep

* Filter entire libiconv line
2019-10-31 12:48:54 -05:00
Christoph Junghans
a334007808 kokkos: turn host_values into a property (#13518)
* kokkos: turn host_values into a property

* Update package.py

* Update package.py
2019-10-31 12:46:05 -05:00
t-karatsu
e7f574aad5 ipopt: Add condition for 'aarch64' to Ipopt/config.guess (#13499) 2019-10-31 12:38:23 -05:00
Julien Loiseau
738f2e14ce MeshToolKit package (#12870)
* Adding flecsph package

* Correcting header

* Boost version update

* Correcting Flake8 errors

* Correcting headers

* Develop preferred in FleCSI

* Removing FleCSPH branch of FleCSI

* MeshToolKit package

* formatting

* Formatting

* Correcting MSTK package

* Format

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Update package.py

* Format

* Format

* Correcting package behavior

* Correcting format

* Corrections

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

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

* Multiline
2019-10-31 12:32:54 -05:00
Robert Maynard
3d60c3ec10 VTK-m: Add support for the 1.5 release (#13514) 2019-10-31 12:04:19 -04:00
Christoph Junghans
187706f108 portage: fix lapacke linkage (#13517) 2019-10-31 09:42:18 -06:00
Greg Becker
a97faeb3c7 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-10-30 16:47:48 -07:00
Greg Becker
230c6aa326 cpu: fix clang flags for generic x86_64 (#13491)
* cpu: differentiate flags used for pristine LLVM vs. Apple's version
2019-10-30 17:16:13 -05:00
Massimiliano Culpo
cf1c38162e 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-10-30 09:25:46 -07:00
Gregory Lee
4626c28c27 fix openmpi wrappers with libfabric (#13439)
* fix openmpi wrappers with libfabric

* flake8 fix

* flake8 fix

* openmpi fix deprecated API

* openmpi fix deprecated API
2019-10-29 23:09:21 -05:00
t-karatsu
ad6908e35d mumps: Fix compile commands. (#13497) 2019-10-29 23:08:25 -05:00
Justin S
7af668f452 r-bio3d: new package at 2.3-4 (#13496) 2019-10-29 18:09:46 -05:00
Justin S
ccd20c9973 r-fields: new package at 9.9 (#13495) 2019-10-29 18:09:34 -05:00
Justin S
9a0ab3a87a r-spam: new package at 2.3-0.2 (#13494) 2019-10-29 18:09:16 -05:00
Justin S
4d345429ab r-dotcall64: new package at 1.0-0 (#13493)
* r-dotcall64: new package at 1.0-0

* r-dotcall64: break up long line
2019-10-29 18:09:05 -05:00
Justin S
d76ec7b2da r-dada2: new package at 1.14 (#13492)
* r-dada2: new package at 1.14

* r-dada2: add gmake dependency

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-29 18:08:51 -05:00
Peter Scheibel
c99d367a11 syaml_int type should use int.__repr__ rather than str.__repr__ (#13487) 2019-10-29 13:51:48 -07:00
t-karatsu
e29a6c532c mumps: Add '-DMAIN_COMP' when using Fujitsu compiler. (#13480) 2019-10-29 13:32:36 -05:00
Sinan
944ef2f690 new package: py-scs (#13477)
* new package: py-scs

* rename

* flake8

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

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2019-10-29 13:11:31 -05:00
Tiziano Müller
0a5c184a5d CP2K: drop json-fortran dependency and add support for the Nvidia V100 (#13468)
* cp2k: drop json-fortran dep since that's now handled in SIRIUS internally

* cp2k: gained support for Nvidias V100
2019-10-29 14:08:58 +01:00
Tamara Dahlgren
3cf21e6edc bugfix: make spack -d test test_changed_files work (#13229)
The `test_changed_files` in `test/cmd/flake8.py` was failing because it calls
`ArgumentParser.parse_args()` without arguments.  Normally that would just
parse `sys.argv` but it seems to fail because of something in either `spack test`
or `pytest`.  Call it with an empty array so that it doesn't try to touch`sys.argv`
at all.

- [x] allow `-d` spack option for `test_changed_files`
2019-10-29 00:25:59 -07:00
Simon Pintarelli
aad8ea172c Add SpFFT: sparse 3D FFT library (#13458)
* Add SpFFT: sparse 3D FFT library

SpFFT is required as a dependency for SIRIUS

* cleanup

* add missing dependency
2019-10-28 22:57:07 -05:00
Sinan
bc930f310f new package: py-cvxpy (#13478)
* new package: py-cvxpy

* improve dependency specs
2019-10-28 22:55:08 -05:00
Sinan
95e0d118be new package: py-ecos (#13476)
* new package: py-ecos

* flake8
2019-10-28 20:30:40 -05:00
Sinan
330cd56517 new package: py-osqp (#13475) 2019-10-28 20:28:42 -05:00
Adam J. Stewart
2264e30d99 Update URL parsing regexes and tests (#13411)
* Update URL parsing regexes and tests

* Get rid of no longer used README

* Merge py-udunits and py-cf-units

* netcdf -> netcdf-c

* setup_environment -> setup_*_environment

* Fix doc tests

* Few last minute fixes

* Simplify prefix removal copypasta
2019-10-28 20:27:54 -05:00
Jim Galarowicz
4367e16740 Update the module files for cbtf-krell and openspeedshop (#13400)
* Update the module files for cbtf-krell and openspeedshop adding man paths and needed papi and libmonitor paths.

* Update module files for new API.

* Use the same python for both develop and release branches.
2019-10-28 17:36:12 -05:00
Sinan
e5b1dbf4b4 new Package/scs (#13454)
* new package: SCS

* make flake8 happy

* add missing patch, improve style

* fix typo

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

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

* move filefilter to edit phase
2019-10-28 17:33:32 -05:00
Cyrus Harrison
1b3f546ba4 update conduit for 0.5.0 release (#13455)
* add support for static (via ~shared) and use vtk-m 1.2

* updating vtkh package to output cmake configure file and pinning it to vtkm 1.2

* trying a different cmake for vtkh

* removing problematic b

* making conduit respect ~python

* fixing ascent python logic

* update ascent package

* consistant cmake usage

* conditionally add tbb in ascent if vtkh

* applying becker fix

* adding vtkh tag

* fixing vtkh tagged version

* updating ascent and conduit for static builds

* enabling openmp

* reverting files that should not have been changed

* ascent updates

* more robust handling of variants

* fixing ascent package typo

* ascent: add optional support for mfem

* 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

* fixing mfem typo for ascent

* reverting files

* adding mirror for bzip

* 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 prefered conduit version

* allow mfem to use conduit master

* adding rover package and editing ascent

* updating vtkm cmake dep

* updates from axom

* 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

* flake8

* extra guards for cuda patch

* conduit and ascent fortran fix

* fix patch for non cuda case

* add test variant to conduit, tweak ascent pkg

* change min ver of cmake used for ascent

* h5z-zfp package: unset FC when ~fortran

* conform to expected upstream solution

* pinning vtkm

* going back to vtkm master

* add back vtk-m variant for shared libs

* update ascent and vtkh packages

* wire up option to run tests during install

* add post install test

* add testing to ascent

* tweak for blueos xl

* add ctest output on error for run_tests

* enable ctest output on error for run_tests

* add testing of the using-with-make example

* update using-with-make examples

* typo in ascent using-with-cmake test

* fix ascent using test exe names

* more fixes, less sleep

* more fixes, less sleep ...

* remove unwired up version

* improvments suggested on review

* adding new cmake

* Update package.py

* Update package.py

* changes post cori os update

* fix cray hack

* Update package.py

Fixing 'fix'. Inconsistent variable names in conduit package

* type in spack recipes

* add zfp support to conduit

* fix indent error in conduit pkg

* move to use build phases, add sphinx rtd as dep, fix ex names in tests

* add conduit 0.5.0 release

* flake8

* remove old cray hack

* incorp feedback from review

* fix to use proper build env sig
2019-10-28 17:32:16 -05:00
Kelly (KT) Thompson
ffb4e02a53 Fix gcc recipe for RHEL7. (#13460)
* Fix gcc recipe for RHEL7.

+ It appears that macOS related changes to the gcc recipe broke gcc on RHEL7.
  This bug manifests as `libstdc++.so: undefined reference to libiconv` when gcc
  is used.
+ Fixes #13452 by moving
  `--with-libiconv-prefix={0}'.format(spec['libiconv'].prefix)` into the darwin
  OS section of the configuration.
+ Change qualification of `depends_on(libiconv)` to limit dependency to macOS.

* Replace deprecated 'setup_environment' with 'setup_run_environment'.

* Fix cut and paste error.

* Rename 'run_env' to just 'env'.
2019-10-28 17:31:23 -05:00
Jon Rood
8786cb468a Paraview package: add version 5.7.0 and update environment setup (#13255)
Replace setup_environment/setup_dependent_environment with
setup__dependent_build_environment and setup_run_environment
according to 9ddc98e
2019-10-28 14:55:08 -07:00
Brian Van Essen
802c3c0c51 Packages: Add cuDNN versions; update LBANN dependencies (#13412)
* Add cuDNN version 7.6.3-10.1 (for x86_64 and ppc64le)
* Add py-pytest and py-protobuf depenencies to LBANN
2019-10-28 13:24:50 -07:00
Paul
f4e6f28e6d Go package: add versions (including 1.13.3) and update environment setup (#13254)
* Add versinos 1.13.3, 1.13.2, 1.12.12, and 1.12.11
* Replace setup_environment/setup_dependent_environment with
  setup_build_environment and setup_dependent_{build, run}_environment
  according to 9ddc98e
2019-10-28 13:19:14 -07:00
Adam J. Stewart
33a34f9619 Fix PyTorch build with Intel MKL (#13464) 2019-10-28 11:47:21 -05:00
Adam J. Stewart
b4e027e918 Output directory Spack is looking in for MKL libs (#13465) 2019-10-28 11:46:59 -05:00
Glenn Johnson
283b3e601c Update emacs to version 26.3 (#13469) 2019-10-28 11:46:27 -05:00
Mark Olesen
cacd0fb139 scotch: added version 6.0.8 (#13467) 2019-10-28 15:58:25 +01:00
wenlibin02
ba69ebc5f7 Add dependency and patch for perl-dbfile (#13261)
* Add dependency and patch perl-dbfile

There are two problems for the building of `perl-dbfile`:

1) this package depends on the package `berkeley-db`
2) fix the building using a patch, which locates the position of `berkeley-db` and modify the configuration file for the building

* Update and reformat the script package.py

* Simplify the patch

* Update package.py

* Update package.py
2019-10-27 22:31:10 -05:00
Nichols A. Romero
c11c3f2710 QE Update Oct 2019 (#13406)
* This filter_file was difficult to maintain and is no longer needed.

* Clarify lack of support for HDF5 in serial QE.

* Update QE and HDF5 conflicts based on user feedback.
2019-10-27 22:27:55 -05:00
Axel Huebl
7b86251bef Add Lizard (LZ5) (#13456)
* Add Lizard (LZ5)

Add a new package for Lizard, formerly LZ5, a very fast compressor
and decompressor library.

* c-blosc2: use external lizard

Use an external Lizard (LZ5) dependency and add missing
"when="s for other compressor dependents.
2019-10-27 22:24:27 -05:00
Glenn Johnson
1d760e79a6 Libbeagle fixes (#13463)
* Fixes for libbeagle

This PR fixes a couple of issues with the libbeagle package.

- Use args.append('--with-cuda=%s' % self.spec['cuda'].prefix)
- Disable the default of compiling with -march=native as Spack now
  inserts architecture specific flags
- Set BEAST_LIB in the beast1 package not in libbeagle.

* Use new setup_run_environment method
2019-10-27 22:24:06 -05:00
Andreas Baumbach
c0a2e8651b new package: py-pandocfilters (#13418)
dependency of py-nbconvert
2019-10-27 22:22:25 -05:00
Andreas Baumbach
ea6e279bbc LLVM code-signing on OSX: link to the offical documentation (#13428)
* LLVM code-signing on OSX: link to the offical documentation

* LLVM: update setup_environment method
2019-10-27 21:59:13 -05:00
Michael Kuhn
82428133d6 mariadb: Fix openssl dependencies (#13443) 2019-10-27 21:55:06 -05:00
Michael Kuhn
929ec39a63 mariadb-c-client: Add 3.1.4 (#13447) 2019-10-27 21:54:04 -05:00
Sinan
57f040753d new package: ecos (#13453) 2019-10-27 21:53:38 -05:00
Adam J. Stewart
59a6226f74 Update PyTorch variable name (#13461) 2019-10-27 19:21:06 -05:00
Axel Huebl
c107b7531c MPICH: Fix Slurm Find Issue (#13263)
Set include and library path to slurm explicitly.
2019-10-26 22:03:39 -04:00
Adam J. Stewart
d68b554cd3 Add latest version of py-fiscalyear (#13451) 2019-10-26 11:06:37 -05:00
4704 changed files with 61392 additions and 18101 deletions

View File

@@ -4,13 +4,13 @@ coverage:
range: 60...90
status:
project:
default: yes
default:
threshold: 0.3%
ignore:
- lib/spack/spack/test/.*
- lib/spack/docs/.*
- lib/spack/external/.*
- share/spack/qa/.*
- share/spack/spack-completion.bash
comment: off

View File

@@ -9,6 +9,7 @@ omit =
lib/spack/spack/test/*
lib/spack/docs/*
lib/spack/external/*
share/spack/qa/*
[report]
# Regexes for lines to exclude from consideration

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.py diff=python

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,57 @@
name: linux builds
on:
push:
branches:
- master
- develop
pull_request:
branches:
- master
- develop
paths-ignore:
# Don't run if we only modified packages in the built-in repository
- 'var/spack/repos/builtin/**'
- '!var/spack/repos/builtin/packages/lz4/**'
- '!var/spack/repos/builtin/packages/mpich/**'
- '!var/spack/repos/builtin/packages/tut/**'
- '!var/spack/repos/builtin/packages/py-setuptools/**'
- '!var/spack/repos/builtin/packages/openjpeg/**'
- '!var/spack/repos/builtin/packages/r-rcpp/**'
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
package: [lz4, mpich, tut, py-setuptools, openjpeg, r-rcpp]
steps:
- uses: actions/checkout@v1
- name: Cache ccache's store
uses: actions/cache@v1
with:
path: ~/.ccache
key: ccache-build-${{ matrix.package }}
restore-keys: |
ccache-build-${{ matrix.package }}
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install System Packages
run: |
sudo apt-get -yqq install ccache gfortran perl perl-base r-base r-base-core r-base-dev findutils openssl libssl-dev libpciaccess-dev
R --version
perl --version
- name: Copy Configuration
run: |
ccache -M 300M && ccache -z
# Set up external deps for build tests, b/c they take too long to compile
cp share/spack/qa/configuration/*.yaml etc/spack/
- name: Run the build test
run: |
. share/spack/setup-env.sh
SPEC=${{ matrix.package }} share/spack/qa/run-build-tests
ccache -s

View File

@@ -0,0 +1,30 @@
name: python version check
on:
push:
branches:
- master
- develop
pull_request:
branches:
- master
- develop
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install Python Packages
run: |
pip install --upgrade pip
pip install --upgrade vermin
- name: Minimum Version (Spack's Core)
run: vermin --backport argparse -t=2.6- -t=3.5- -v lib/spack/spack/ lib/spack/llnl/ bin/
- name: Minimum Version (Repositories)
run: vermin --backport argparse -t=2.6- -t=3.5- -v var/spack/repos

View File

@@ -1,14 +0,0 @@
# 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

View File

@@ -61,61 +61,10 @@ jobs:
language: generic
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ]
if: type != pull_request
# mpich (AutotoolsPackage)
- stage: 'build tests'
python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
# astyle (MakefilePackage)
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=astyle' ]
# tut (WafPackage)
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=tut' ]
# py-setuptools (PythonPackage)
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=py-setuptools' ]
# perl-dbi (PerlPackage)
# - python: '3.8'
# os: linux
# language: python
# env: [ TEST_SUITE=build, 'SPEC=perl-dbi' ]
# openjpeg (CMakePackage + external cmake)
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=openjpeg' ]
# r-rcpp (RPackage + external R)
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=r-rcpp' ]
# mpich (AutotoolsPackage)
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
- python: '3.8'
stage: 'docker build'
os: linux
language: python
env: TEST_SUITE=docker
allow_failures:
- env: TEST_SUITE=docker
stages:
- 'style checks'
- 'unit tests + documentation'
- 'build tests'
- name: 'docker build'
if: type = push AND branch IN (develop, master)
#=============================================================================
@@ -159,7 +108,6 @@ cache:
pip: true
ccache: true
directories:
- ~/.mirror
- ~/.ccache
# Work around Travis's lack of support for Python on OSX
@@ -177,7 +125,7 @@ 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
@@ -192,17 +140,9 @@ before_script:
# Need this to be able to compute the list of changed files
- 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/*.yaml etc/spack/;
fi
#=============================================================================
# Building
#=============================================================================
services:
- docker
script:
- share/spack/qa/run-$TEST_SUITE-tests

View File

@@ -1,3 +1,137 @@
# v0.14.1 (2019-03-20)
This is a bugfix release on top of `v0.14.0`. Specific fixes include:
* several bugfixes for parallel installation (#15339, #15341, #15220, #15197)
* `spack load` now works with packages that have been renamed (#14348)
* bugfix for `suite-sparse` installation (#15326)
* deduplicate identical suffixes added to module names (#14920)
* fix issues with `configure_args` during module refresh (#11084)
* increased test coverage and test fixes (#15237, #15354, #15346)
* remove some unused code (#15431)
# v0.14.0 (2020-02-23)
`v0.14.0` is a major feature release, with 3 highlighted features:
1. **Distributed builds.** Multiple Spack instances will now coordinate
properly with each other through locks. This works on a single node
(where you've called `spack` several times) or across multiple nodes
with a shared filesystem. For example, with SLURM, you could build
`trilinos` and its dependencies on 2 24-core nodes, with 3 Spack
instances per node and 8 build jobs per instance, with `srun -N 2 -n 6
spack install -j 8 trilinos`. This requires a filesystem with locking
enabled, but not MPI or any other library for parallelism.
2. **Build pipelines.** You can also build in parallel through Gitlab
CI. Simply create a Spack environment and push it to Gitlab to build
on Gitlab runners. Pipeline support is now integreated into a single
`spack ci` command, so setting it up is easier than ever. See the
[Pipelines section](https://spack.readthedocs.io/en/v0.14.0/pipelines.html)
in the docs.
3. **Container builds.** The new `spack containerize` command allows you
to create a Docker or Singularity recipe from any Spack environment.
There are options to customize the build if you need them. See the
[Container Images section](https://spack.readthedocs.io/en/latest/containers.html)
in the docs.
In addition, there are several other new commands, many bugfixes and
improvements, and `spack load` no longer requires modules, so you can use
it the same way on your laptop or on your supercomputer.
Spack grew by over 300 packages since our last release in November 2019,
and the project grew to over 500 contributors. Thanks to all of you for
making yet another great release possible. Detailed notes below.
## Major new core features
* Distributed builds: spack instances coordinate and build in parallel (#13100)
* New `spack ci` command to manage CI pipelines (#12854)
* Generate container recipes from environments: `spack containerize` (#14202)
* `spack load` now works without using modules (#14062, #14628)
* Garbage collect old/unused installations with `spack gc` (#13534)
* Configuration files all set environment modifications the same way (#14372,
[docs](https://spack.readthedocs.io/en/v0.14.0/configuration.html#environment-modifications))
* `spack commands --format=bash` auto-generates completion (#14393, #14607)
* Packages can specify alternate fetch URLs in case one fails (#13881)
## Improvements
* Improved locking for concurrency with environments (#14676, #14621, #14692)
* `spack test` sends args to `pytest`, supports better listing (#14319)
* Better support for aarch64 and cascadelake microarch (#13825, #13780, #13820)
* Archspec is now a separate library (see https://github.com/archspec/archspec)
* Many improvements to the `spack buildcache` command (#14237, #14346,
#14466, #14467, #14639, #14642, #14659, #14696, #14698, #14714, #14732,
#14929, #15003, #15086, #15134)
## Selected Bugfixes
* Compilers now require an exact match on version (#8735, #14730, #14752)
* Bugfix for patches that specified specific versions (#13989)
* `spack find -p` now works in environments (#10019, #13972)
* Dependency queries work correctly in `spack find` (#14757)
* Bugfixes for locking upstream Spack instances chains (#13364)
* Fixes for PowerPC clang optimization flags (#14196)
* Fix for issue with compilers and specific microarchitectures (#13733, #14798)
## New commands and options
* `spack ci` (#12854)
* `spack containerize` (#14202)
* `spack gc` (#13534)
* `spack load` accepts `--only package`, `--only dependencies` (#14062, #14628)
* `spack commands --format=bash` (#14393)
* `spack commands --update-completion` (#14607)
* `spack install --with-cache` has new option: `--no-check-signature` (#11107)
* `spack test` now has `--list`, `--list-long`, and `--list-names` (#14319)
* `spack install --help-cdash` moves CDash help out of the main help (#13704)
## Deprecations
* `spack release-jobs` has been rolled into `spack ci`
* `spack bootstrap` will be removed in a future version, as it is no longer
needed to set up modules (see `spack load` improvements above)
## Documentation
* New section on building container images with Spack (see
[docs](https://spack.readthedocs.io/en/latest/containers.html))
* New section on using `spack ci` command to build pipelines (see
[docs](https://spack.readthedocs.io/en/latest/pipelines.html))
* Document how to add conditional dependencies (#14694)
* Document how to use Spack to replace Homebrew/Conda (#13083, see
[docs](https://spack.readthedocs.io/en/latest/workflows.html#using-spack-to-replace-homebrew-conda))
## Important package changes
* 3,908 total packages (345 added since 0.13.0)
* Added first cut at a TensorFlow package (#13112)
* We now build R without "recommended" packages, manage them w/Spack (#12015)
* Elpa and OpenBLAS now leverage microarchitecture support (#13655, #14380)
* Fix `octave` compiler wrapper usage (#14726)
* Enforce that packages in `builtin` aren't missing dependencies (#13949)
# 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

View File

@@ -68,10 +68,6 @@ PackageName: py
PackageHomePage: https://pypi.python.org/pypi/py
PackageLicenseDeclared: MIT
PackageName: pyqver
PackageHomePage: https://github.com/ghewgill/pyqver
PackageLicenseDeclared: BSD-3-Clause
PackageName: pytest
PackageHomePage: https://pypi.python.org/pypi/pytest
PackageLicenseDeclared: MIT

View File

@@ -1,4 +1,4 @@
Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
Copyright 2013-2020 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

@@ -1,6 +1,7 @@
# <img src="https://cdn.rawgit.com/spack/spack/develop/share/spack/logo/spack-logo.svg" width="64" valign="middle" alt="Spack"/> Spack
[![Build Status](https://travis-ci.org/spack/spack.svg?branch=develop)](https://travis-ci.org/spack/spack)
[![Linux Builds](https://github.com/spack/spack/workflows/linux%20builds/badge.svg)](https://github.com/spack/spack/actions)
[![codecov](https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/spack/spack)
[![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io)
[![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com)

View File

@@ -1,91 +0,0 @@
#! /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

View File

@@ -1,13 +0,0 @@
#!/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"

View File

@@ -1,399 +0,0 @@
#!/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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -103,10 +103,10 @@ interpreter_f="${interpreter_v[0]}"
# Invoke any interpreter found, or raise an error if none was found.
if [[ -n "$interpreter_f" ]]; then
if [[ "${interpreter_f##*/}" = "perl" ]]; then
exec $interpreter_v -x "$@"
if [[ "${interpreter_f##*/}" = "perl"* ]]; then
exec $interpreter -x "$@"
else
exec $interpreter_v "$@"
exec $interpreter "$@"
fi
else
echo "error: sbang found no interpreter in $script"

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# -*- python -*-
#
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,6 @@
#!/bin/sh
#
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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

@@ -137,7 +137,7 @@ config:
# when Spack needs to manage its own package metadata and all operations are
# expected to complete within the default time limit. The timeout should
# therefore generally be left untouched.
db_lock_timeout: 120
db_lock_timeout: 3
# How long to wait when attempting to modify a package (e.g. to install it).

View File

@@ -40,9 +40,11 @@ packages:
pil: [py-pillow]
pkgconfig: [pkgconf, pkg-config]
scalapack: [netlib-scalapack]
sycl: [hipsycl]
szip: [libszip, libaec]
tbb: [intel-tbb]
unwind: [libunwind]
sycl: [hipsycl]
permissions:
read: world
write: user

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -232,6 +232,50 @@ remove dependent packages *before* removing their dependencies or use the
.. _nondownloadable:
^^^^^^^^^^^^^^^^^^
Garbage collection
^^^^^^^^^^^^^^^^^^
When Spack builds software from sources, if often installs tools that are needed
just to build or test other software. These are not necessary at runtime.
To support cases where removing these tools can be a benefit Spack provides
the ``spack gc`` ("garbage collector") command, which will uninstall all unneeded packages:
.. code-block:: console
$ spack find
==> 24 installed packages
-- linux-ubuntu18.04-broadwell / gcc@9.0.1 ----------------------
autoconf@2.69 findutils@4.6.0 libiconv@1.16 libszip@2.1.1 m4@1.4.18 openjpeg@2.3.1 pkgconf@1.6.3 util-macros@1.19.1
automake@1.16.1 gdbm@1.18.1 libpciaccess@0.13.5 libtool@2.4.6 mpich@3.3.2 openssl@1.1.1d readline@8.0 xz@5.2.4
cmake@3.16.1 hdf5@1.10.5 libsigsegv@2.12 libxml2@2.9.9 ncurses@6.1 perl@5.30.0 texinfo@6.5 zlib@1.2.11
$ spack gc
==> The following packages will be uninstalled:
-- linux-ubuntu18.04-broadwell / gcc@9.0.1 ----------------------
vn47edz autoconf@2.69 6m3f2qn findutils@4.6.0 ubl6bgk libtool@2.4.6 pksawhz openssl@1.1.1d urdw22a readline@8.0
ki6nfw5 automake@1.16.1 fklde6b gdbm@1.18.1 b6pswuo m4@1.4.18 k3s2csy perl@5.30.0 lp5ya3t texinfo@6.5
ylvgsov cmake@3.16.1 5omotir libsigsegv@2.12 leuzbbh ncurses@6.1 5vmfbrq pkgconf@1.6.3 5bmv4tg util-macros@1.19.1
==> Do you want to proceed? [y/N] y
[ ... ]
$ spack find
==> 9 installed packages
-- linux-ubuntu18.04-broadwell / gcc@9.0.1 ----------------------
hdf5@1.10.5 libiconv@1.16 libpciaccess@0.13.5 libszip@2.1.1 libxml2@2.9.9 mpich@3.3.2 openjpeg@2.3.1 xz@5.2.4 zlib@1.2.11
In the example above Spack went through all the packages in the DB
and removed everything that is not either:
1. A package installed upon explicit request of the user
2. A ``link`` or ``run`` dependency, even transitive, of one of the packages at point 1.
You can check :ref:`cmd-spack-find-metadata` to see how to query for explicitly installed packages
or :ref:`dependency-types` for a more thorough treatment of dependency types.
^^^^^^^^^^^^^^^^^^^^^^^^^
Non-Downloadable Tarballs
^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -414,6 +458,8 @@ 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.
.. _cmd-spack-find-metadata:
""""""""""""""""""""""""""""""""
Viewing more metadata
""""""""""""""""""""""""""""""""
@@ -883,11 +929,13 @@ in GNU Autotools. If all flags are set, the order is
Compiler environment variables and additional RPATHs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In the exceptional case a compiler requires setting special environment
variables, like an explicit library load path. These can bet set in an
extra section in the compiler configuration (the supported environment
modification commands are: ``set``, ``unset``, ``append-path``, and
``prepend-path``). The user can also specify additional ``RPATHs`` that the
Sometimes compilers require setting special environment variables to
operate correctly. Spack handles these cases by allowing custom environment
modifications in the ``environment`` attribute of the compiler configuration
section. See also the :ref:`configuration_environment_variables` section
of the configuration files docs for more information.
It is also possible to specify additional ``RPATHs`` that the
compiler will add to all executables generated by that compiler. This is
useful for forcing certain compilers to RPATH their own runtime libraries, so
that executables will run without the need to set ``LD_LIBRARY_PATH``.
@@ -904,28 +952,19 @@ that executables will run without the need to set ``LD_LIBRARY_PATH``.
fc: /opt/gcc/bin/gfortran
environment:
unset:
BAD_VARIABLE: # The colon is required but the value must be empty
- BAD_VARIABLE
set:
GOOD_VARIABLE_NUM: 1
GOOD_VARIABLE_STR: good
prepend-path:
prepend_path:
PATH: /path/to/binutils
append-path:
append_path:
LD_LIBRARY_PATH: /opt/gcc/lib
extra_rpaths:
- /path/to/some/compiler/runtime/directory
- /path/to/some/other/compiler/runtime/directory
.. note::
The section `environment` is interpreted as an ordered dictionary, which
means two things. First, environment modification are applied in the order
they are specified in the configuration file. Second, you cannot express
environment modifications that require mixing different commands, i.e. you
cannot `set` one variable, than `prepend-path` to another one, and than
again `set` a third one.
^^^^^^^^^^^^^^^^^^^^^^^
Architecture specifiers
^^^^^^^^^^^^^^^^^^^^^^^
@@ -1271,10 +1310,9 @@ directly when you run ``python``:
Using Extensions
^^^^^^^^^^^^^^^^
There are three ways to get ``numpy`` working in Python. The first is
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:
There are four ways to get ``numpy`` working in Python. The first is
to use :ref:`shell-support`. You can simply ``load`` the extension,
and it will be added to the ``PYTHONPATH`` in your current shell:
.. code-block:: console
@@ -1284,11 +1322,29 @@ in your current shell:
Now ``import numpy`` will succeed for as long as you keep your current
session open.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Loading Extensions via Modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Instead of using Spack's environment modification capabilities through
the ``spack load`` command, you can load numpy through your
environment modules (using ``environment-modules`` or ``lmod``). This
will also add the extension to the ``PYTHONPATH`` in your current
shell.
.. code-block:: console
$ module load <name of numpy module>
If you do not know the name of the specific numpy module you wish to
load, you can use the ``spack module tcl|lmod loads`` command to get
the name of the module from the Spack spec.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Activating Extensions in a View
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The second way to use extensions is to create a view, which merges the
Another way to use extensions is to create a view, which merges the
python installation along with the extensions into a single prefix.
See :ref:`filesystem-views` for a more in-depth description of views and
:ref:`cmd-spack-view` for usage of the ``spack view`` command.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -58,9 +58,9 @@ directory. Here's an example of an external configuration:
packages:
openmpi:
paths:
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug
openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel
openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug: /opt/openmpi-1.4.3-debug
openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64: /opt/openmpi-1.6.5-intel
This example lists three installations of OpenMPI, one built with GCC,
one built with GCC and debug information, and another built with Intel.
@@ -107,9 +107,9 @@ be:
packages:
openmpi:
paths:
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug
openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel
openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug: /opt/openmpi-1.4.3-debug
openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64: /opt/openmpi-1.6.5-intel
buildable: False
The addition of the ``buildable`` flag tells Spack that it should never build

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -56,6 +56,7 @@ on these ideas for each distinct build system that Spack supports:
:maxdepth: 1
:caption: Other
build_systems/bundlepackage
build_systems/cudapackage
build_systems/intelpackage
build_systems/custompackage

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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,52 @@
.. Copyright 2013-2020 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)
.. _bundlepackage:
-------------
BundlePackage
-------------
``BundlePackage`` represents a set of packages that are expected to work well
together, such as a collection of commonly used software libraries. The
associated software is specified as bundle dependencies.
^^^^^^^^
Creation
^^^^^^^^
Be sure to specify the ``bundle`` template if you are using ``spack create``
to generate a package from the template. For example, use the following
command to create a bundle package whose class name will be ``Mybundle``:
.. code-block:: console
$ spack create --template bundle --name mybundle
^^^^^^
Phases
^^^^^^
The ``BundlePackage`` base class does not provide any phases by default
since the bundle does not represent a build system.
^^^
URL
^^^
The ``url`` property does not have meaning since there is no package-specific
code to fetch.
^^^^^^^
Version
^^^^^^^
At least one ``version`` must be specified in order for the package to
build.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -176,7 +176,25 @@ def setup(sphinx):
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# We use our own extension of the default style with a few modifications
from pygments.style import Style
from pygments.styles.default import DefaultStyle
from pygments.token import Generic, Comment, Text
class SpackStyle(DefaultStyle):
styles = DefaultStyle.styles.copy()
background_color = "#f4f4f8"
styles[Generic.Output] = "#355"
styles[Generic.Prompt] = "bold #346ec9"
import pkg_resources
dist = pkg_resources.Distribution(__file__)
sys.path.append('.') # make 'conf' module findable
ep = pkg_resources.EntryPoint.parse('spack = conf:SpackStyle', dist=dist)
dist._ep_map = {'pygments.styles': {'plugin1': ep}}
pkg_resources.working_set.add(dist)
pygments_style = 'spack'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -30,11 +30,21 @@ Default is ``$spack/opt/spack``.
``install_hash_length`` and ``install_path_scheme``
---------------------------------------------------
The default Spack installation path can be very long and can create
problems for scripts with hardcoded shebangs. There are two parameters
to help with that. Firstly, the ``install_hash_length`` parameter can
set the length of the hash in the installation path from 1 to 32. The
default path uses the full 32 characters.
The default Spack installation path can be very long and can create problems
for scripts with hardcoded shebangs. Additionally, when using the Intel
compiler, and if there is also a long list of dependencies, the compiler may
segfault. If you see the following:
.. code-block:: console
: internal error: ** The compiler has encountered an unexpected problem.
** Segmentation violation signal raised. **
Access violation or stack overflow. Please contact Intel Support for assistance.
it may be because variables containing dependency specs may be too long. There
are two parameters to help with long path names. 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

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -427,6 +427,33 @@ home directory, and ``~user`` will expand to a specified user's home
directory. The ``~`` must appear at the beginning of the path, or Spack
will not expand it.
.. _configuration_environment_variables:
-------------------------
Environment Modifications
-------------------------
Spack allows to prescribe custom environment modifications in a few places
within its configuration files. Every time these modifications are allowed
they are specified as a dictionary, like in the following example:
.. code-block:: yaml
environment:
set:
LICENSE_FILE: '/path/to/license'
unset:
- CPATH
- LIBRARY_PATH
append_path:
PATH: '/new/bin/dir'
The possible actions that are permitted are ``set``, ``unset``, ``append_path``,
``prepend_path`` and finally ``remove_path``. They all require a dictionary
of variable names mapped to the values used for the modification.
The only exception is ``unset`` that requires just a list of variable names.
No particular order is ensured on the execution of each of these modifications.
----------------------------
Seeing Spack's Configuration
----------------------------

View File

@@ -0,0 +1,307 @@
.. Copyright 2013-2020 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)
.. _containers:
================
Container Images
================
Spack can be an ideal tool to setup images for containers since all the
features discussed in :ref:`environments` can greatly help to manage
the installation of software during the image build process. Nonetheless,
building a production image from scratch still requires a lot of
boilerplate to:
- Get Spack working within the image, possibly running as root
- Minimize the physical size of the software installed
- Properly update the system software in the base image
To facilitate users with these tedious tasks, Spack provides a command
to automatically generate recipes for container images based on
Environments:
.. code-block:: console
$ ls
spack.yaml
$ spack containerize
# Build stage with Spack pre-installed and ready to be used
FROM spack/centos7:latest as builder
# What we want to install and how we want to install it
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&& (echo "spack:" \
&& echo " specs:" \
&& echo " - gromacs+mpi" \
&& echo " - mpich" \
&& echo " concretization: together" \
&& echo " config:" \
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Strip all the binaries
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
xargs file -i | \
grep 'charset=binary' | \
grep 'x-executable\|x-archive\|x-sharedlib' | \
awk -F: '{print $1}' | xargs strip -s
# Modifications to the environment that are necessary to run
RUN cd /opt/spack-environment && \
spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh
# Bare OS image to run the installed executables
FROM centos:7
COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/view /opt/view
COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh
RUN yum update -y && yum install -y epel-release && yum update -y \
&& yum install -y libgomp \
&& rm -rf /var/cache/yum && yum clean all
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
LABEL "app"="gromacs"
LABEL "mpi"="mpich"
ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
The bits that make this automation possible are discussed in details
below. All the images generated in this way will be based on
multi-stage builds with:
- A fat ``build`` stage containing common build tools and Spack itself
- A minimal ``final`` stage containing only the software requested by the user
-----------------
Spack Base Images
-----------------
Docker images with Spack preinstalled and ready to be used are
built on `Docker Hub <https://hub.docker.com/u/spack>`_
at every push to ``develop`` or to a release branch. The OS that
are currently supported are summarized in the table below:
.. _containers-supported-os:
.. list-table:: Supported operating systems
:header-rows: 1
* - Operating System
- Base Image
- Spack Image
* - Ubuntu 16.04
- ``ubuntu:16.04``
- ``spack/ubuntu-xenial``
* - Ubuntu 18.04
- ``ubuntu:16.04``
- ``spack/ubuntu-bionic``
* - CentOS 6
- ``centos:6``
- ``spack/centos6``
* - CentOS 7
- ``centos:7``
- ``spack/centos7``
All the images are tagged with the corresponding release of Spack:
.. image:: dockerhub_spack.png
with the exception of the ``latest`` tag that points to the HEAD
of the ``develop`` branch. These images are available for anyone
to use and take care of all the repetitive tasks that are necessary
to setup Spack within a container. All the container recipes generated
automatically by Spack use them as base images for their ``build`` stage.
-------------------------
Environment Configuration
-------------------------
Any Spack Environment can be used for the automatic generation of container
recipes. Sensible defaults are provided for things like the base image or the
version of Spack used in the image. If a finer tuning is needed it can be
obtained by adding the relevant metadata under the ``container`` attribute
of environments:
.. code-block:: yaml
spack:
specs:
- gromacs+mpi
- mpich
container:
# Select the format of the recipe e.g. docker,
# singularity or anything else that is currently supported
format: docker
# Select from a valid list of images
base:
image: "centos:7"
spack: develop
# Whether or not to strip binaries
strip: true
# Additional system packages that are needed at runtime
os_packages:
- libgomp
# Extra instructions
extra_instructions:
final: |
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
# Labels for the image
labels:
app: "gromacs"
mpi: "mpich"
The tables below describe the configuration options that are currently supported:
.. list-table:: General configuration options for the ``container`` section of ``spack.yaml``
:header-rows: 1
* - Option Name
- Description
- Allowed Values
- Required
* - ``format``
- The format of the recipe
- ``docker`` or ``singularity``
- Yes
* - ``base:image``
- Base image for ``final`` stage
- See :ref:`containers-supported-os`
- Yes
* - ``base:spack``
- Version of Spack
- Valid tags for ``base:image``
- Yes
* - ``strip``
- Whether to strip binaries
- ``true`` (default) or ``false``
- No
* - ``os_packages``
- System packages to be installed
- Valid packages for the ``final`` OS
- No
* - ``extra_instructions:build``
- Extra instructions (e.g. `RUN`, `COPY`, etc.) at the end of the ``build`` stage
- Anything understood by the current ``format``
- No
* - ``extra_instructions:final``
- Extra instructions (e.g. `RUN`, `COPY`, etc.) at the end of the ``final`` stage
- Anything understood by the current ``format``
- No
* - ``labels``
- Labels to tag the image
- Pairs of key-value strings
- No
.. list-table:: Configuration options specific to Singularity
:header-rows: 1
* - Option Name
- Description
- Allowed Values
- Required
* - ``singularity:runscript``
- Content of ``%runscript``
- Any valid script
- No
* - ``singularity:startscript``
- Content of ``%startscript``
- Any valid script
- No
* - ``singularity:test``
- Content of ``%test``
- Any valid script
- No
* - ``singularity:help``
- Description of the image
- Description string
- No
Once the Environment is properly configured a recipe for a container
image can be printed to standard output by issuing the following
command from the directory where the ``spack.yaml`` resides:
.. code-block:: console
$ spack containerize
The example ``spack.yaml`` above would produce for instance the
following ``Dockerfile``:
.. code-block:: docker
# Build stage with Spack pre-installed and ready to be used
FROM spack/centos7:latest as builder
# What we want to install and how we want to install it
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&& (echo "spack:" \
&& echo " specs:" \
&& echo " - gromacs+mpi" \
&& echo " - mpich" \
&& echo " concretization: together" \
&& echo " config:" \
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Strip all the binaries
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
xargs file -i | \
grep 'charset=binary' | \
grep 'x-executable\|x-archive\|x-sharedlib' | \
awk -F: '{print $1}' | xargs strip -s
# Modifications to the environment that are necessary to run
RUN cd /opt/spack-environment && \
spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh
# Bare OS image to run the installed executables
FROM centos:7
COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/view /opt/view
COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh
RUN yum update -y && yum install -y epel-release && yum update -y \
&& yum install -y libgomp \
&& rm -rf /var/cache/yum && yum clean all
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
LABEL "app"="gromacs"
LABEL "mpi"="mpich"
ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
.. note::
Spack can also produce Singularity definition files to build the image. The
minimum version of Singularity required to build a SIF (Singularity Image Format)
from them is ``3.5.3``.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -64,6 +64,8 @@ If you take a look in ``$SPACK_ROOT/.travis.yml``, you'll notice that we test
against Python 2.6, 2.7, and 3.4-3.7 on both macOS and Linux. We currently
perform 3 types of tests:
.. _cmd-spack-test:
^^^^^^^^^^
Unit Tests
^^^^^^^^^^
@@ -86,40 +88,83 @@ To run *all* of the unit tests, use:
$ spack test
These tests may take several minutes to complete. If you know you are only
modifying a single Spack feature, you can run a single unit test at a time:
These tests may take several minutes to complete. If you know you are
only modifying a single Spack feature, you can run subsets of tests at a
time. For example, this would run all the tests in
``lib/spack/spack/test/architecture.py``:
.. code-block:: console
$ spack test architecture
$ spack test architecture.py
This allows you to develop iteratively: make a change, test that change, make
another change, test that change, etc. To get a list of all available unit
tests, run:
And this would run the ``test_platform`` test from that file:
.. code-block:: console
$ spack test architecture.py::test_platform
This allows you to develop iteratively: make a change, test that change,
make another change, test that change, etc. We use `pytest
<http://pytest.org/>`_ as our tests fromework, and these types of
arguments are just passed to the ``pytest`` command underneath. See `the
pytest docs
<http://doc.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests>`_
for more details on test selection syntax.
``spack test`` has a few special options that can help you understand
what tests are available. To get a list of all available unit test
files, run:
.. command-output:: spack test --list
:ellipsis: 5
A more detailed list of available unit tests can be found by running
``spack test --long-list``.
To see a more detailed list of available unit tests, use ``spack test
--list-long``:
By default, ``pytest`` captures the output of all unit tests. If you add print
statements to a unit test and want to see the output, simply run:
.. command-output:: spack test --list-long
:ellipsis: 10
And to see the fully qualified names of all tests, use ``--list-names``:
.. command-output:: spack test --list-names
:ellipsis: 5
You can combine these with ``pytest`` arguments to restrict which tests
you want to know about. For example, to see just the tests in
``architecture.py``:
.. command-output:: spack test --list-long architecture.py
You can also combine any of these options with a ``pytest`` keyword
search. For example, to see the names of all tests that have "spec"
or "concretize" somewhere in their names:
.. command-output:: spack test --list-names -k "spec and concretize"
By default, ``pytest`` captures the output of all unit tests, and it will
print any captured output for failed tests. Sometimes it's helpful to see
your output interactively, while the tests run (e.g., if you add print
statements to a unit tests). To see the output *live*, use the ``-s``
argument to ``pytest``:
.. code-block:: console
$ spack test -s -k architecture
$ spack test -s architecture.py::test_platform
Unit tests are crucial to making sure bugs aren't introduced into Spack. If you
are modifying core Spack libraries or adding new functionality, please consider
adding new unit tests or strengthening existing tests.
Unit tests are crucial to making sure bugs aren't introduced into
Spack. If you are modifying core Spack libraries or adding new
functionality, please add new unit tests for your feature, and consider
strengthening existing tests. You will likely be asked to do this if you
submit a pull request to the Spack project on GitHub. Check out the
`pytest docs <http://pytest.org/>`_ and feel free to ask for guidance on
how to write tests!
.. note::
There is also a ``run-unit-tests`` script in ``share/spack/qa`` that
runs the unit tests. Afterwards, it reports back to Codecov with the
percentage of Spack that is covered by unit tests. This script is
designed for Travis CI. If you want to run the unit tests yourself, we
suggest you use ``spack test``.
You may notice the ``share/spack/qa/run-unit-tests`` script in the
repository. This script is designed for Travis CI. It runs the unit
tests and reports coverage statistics back to Codecov. If you want to
run the unit tests yourself, we suggest you use ``spack test``.
^^^^^^^^^^^^
Flake8 Tests
@@ -223,8 +268,7 @@ documentation. In order to prevent things like broken links and missing imports,
we added documentation tests that build the documentation and fail if there
are any warning or error messages.
Building the documentation requires several dependencies, all of which can be
installed with Spack:
Building the documentation requires several dependencies:
* sphinx
* sphinxcontrib-programoutput
@@ -234,11 +278,18 @@ installed with Spack:
* mercurial
* subversion
All of these can be installed with Spack, e.g.
.. code-block:: console
$ spack install py-sphinx py-sphinxcontrib-programoutput py-sphinx-rtd-theme graphviz git mercurial subversion
.. warning::
Sphinx has `several required dependencies <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/py-sphinx/package.py>`_.
If you installed ``py-sphinx`` with Spack, make sure to add all of these
dependencies to your ``PYTHONPATH``. The easiest way to do this is to run:
If you're using a ``python`` from Spack and you installed
``py-sphinx`` and friends, you need to make them available to your
``python``. The easiest way to do this is to run:
.. code-block:: console
@@ -246,8 +297,10 @@ installed with Spack:
$ spack activate py-sphinx-rtd-theme
$ spack activate py-sphinxcontrib-programoutput
so that all of the dependencies are symlinked to a central location.
If you see an error message like:
so that all of the dependencies are symlinked into that Python's
tree. Alternatively, you could arrange for their library
directories to be added to PYTHONPATH. If you see an error message
like:
.. code-block:: console

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -363,12 +363,12 @@ Developer commands
``spack doc``
^^^^^^^^^^^^^
.. _cmd-spack-test:
^^^^^^^^^^^^^^
``spack test``
^^^^^^^^^^^^^^
See the :ref:`contributor guide section <cmd-spack-test>` on ``spack test``.
.. _cmd-spack-python:
^^^^^^^^^^^^^^^^

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -49,6 +49,8 @@ Spack uses a "manifest and lock" model similar to `Bundler gemfiles
managers. The user input file is named ``spack.yaml`` and the lock
file is named ``spack.lock``
.. _environments-using:
------------------
Using Environments
------------------
@@ -382,11 +384,12 @@ the Environment.
Loading
^^^^^^^
Once an environment has been installed, the following creates a load script for it:
Once an environment has been installed, the following creates a load
script for it:
.. code-block:: console
$ spack env myenv loads -r
$ spack env loads -r
This creates a file called ``loads`` in the environment directory.
Sourcing that file in Bash will make the environment available to the

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -9,12 +9,6 @@
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

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -97,7 +97,7 @@ Check Installation
With Spack installed, you should be able to run some basic Spack
commands. For example:
.. command-output:: spack spec netcdf
.. command-output:: spack spec netcdf-c
^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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,6 +66,7 @@ or refer to the full manual below.
config_yaml
build_settings
environments
containers
mirrors
module_file_support
repositories
@@ -74,6 +75,7 @@ or refer to the full manual below.
package_list
chain
extensions
pipelines
.. toctree::
:maxdepth: 2

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -119,7 +119,7 @@ For example this will add the ``mpich`` package built with ``gcc`` to your path:
# ... wait for install ...
$ spack load mpich %gcc@4.4.7 # modules
$ spack load mpich %gcc@4.4.7
$ which mpicc
~/spack/opt/linux-debian7-x86_64/gcc@4.4.7/mpich@3.0.4/bin/mpicc
@@ -129,27 +129,29 @@ want to use a package, you can type unload or unuse similarly:
.. code-block:: console
$ spack unload mpich %gcc@4.4.7 # modules
$ spack unload mpich %gcc@4.4.7
.. note::
The ``load`` and ``unload`` subcommands are
only available if you have enabled Spack's shell support *and* you
have environment-modules installed on your machine.
The ``load`` and ``unload`` subcommands are only available if you
have enabled Spack's shell support. These command DO NOT use the
underlying Spack-generated module files.
^^^^^^^^^^^^^^^^^^^^^^
Ambiguous module names
^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^
Ambiguous specs
^^^^^^^^^^^^^^^
If a spec used with load/unload or use/unuse is ambiguous (i.e. more
than one installed package matches it), then Spack will warn you:
If a spec used with load/unload or is ambiguous (i.e. more than one
installed package matches it), then Spack will warn you:
.. code-block:: console
$ spack load libelf
==> Error: Multiple matches for spec libelf. Choose one:
libelf@0.8.13%gcc@4.4.7 arch=linux-debian7-x86_64
libelf@0.8.13%intel@15.0.0 arch=linux-debian7-x86_64
==> Error: libelf matches multiple packages.
Matching packages:
libelf@0.8.13%gcc@4.4.7 arch=linux-debian7-x86_64
libelf@0.8.13%intel@15.0.0 arch=linux-debian7-x86_64
Use a more specific spec
You can either type the ``spack load`` command again with a fully
qualified argument, or you can add just enough extra constraints to
@@ -171,8 +173,15 @@ To identify just the one built with the Intel compiler.
``spack module tcl loads``
^^^^^^^^^^^^^^^^^^^^^^^^^^
In some cases, it is desirable to load not just a module, but also all
the modules it depends on. This is not required for most modules
In some cases, it is desirable to use a Spack-generated module, rather
than relying on Spack's built-in user-environment modification
capabilities. To translate a spec into a module name, use ``spack
module tcl loads`` or ``spack module lmod loads`` depending on the
module system desired.
To load not just a module, but also all the modules it depends on, use
the ``--dependencies`` option. This is not required for most modules
because Spack builds binaries with RPATH support. However, not all
packages use RPATH to find their dependencies: this can be true in
particular for Python extensions, which are currently *not* built with

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -553,6 +553,34 @@ version. This is useful for packages that have an easy to extrapolate URL, but
keep changing their URL format every few releases. With this method, you only
need to specify the ``url`` when the URL changes.
"""""""""""""""""""""""
Mirrors of the main URL
"""""""""""""""""""""""
Spack supports listing mirrors of the main URL in a package by defining
the ``urls`` attribute:
.. code-block:: python
class Foo(Package):
urls = [
'http://example.com/foo-1.0.tar.gz',
'http://mirror.com/foo-1.0.tar.gz'
]
instead of just a single ``url``. This attribute is a list of possible URLs that
will be tried in order when fetching packages. Notice that either one of ``url``
or ``urls`` can be present in a package, but not both at the same time.
A well-known case of packages that can be fetched from multiple mirrors is that
of GNU. For that, Spack goes a step further and defines a mixin class that
takes care of all of the plumbing and requires packagers to just define a proper
``gnu_mirror_path`` attribute:
.. literalinclude:: _spack_root/var/spack/repos/builtin/packages/autoconf/package.py
:lines: 9-18
^^^^^^^^^^^^^^^^^^^^^^^^
Skipping the expand step
^^^^^^^^^^^^^^^^^^^^^^^^
@@ -901,6 +929,9 @@ 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.
* ``submodules_delete``: A list of submodules to forcibly delete from the repository
after fetching. Useful if a version in the repository has submodules that
have disappeared/are no longer accessible.
* ``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
@@ -1479,8 +1510,8 @@ that the same package with different patches applied will have different
hash identifiers. To ensure that the hashing scheme is consistent, you
must use a ``sha256`` checksum for the patch. Patches will be fetched
from their URLs, checked, and applied to your source code. You can use
the ``spack sha256`` command to generate a checksum for a patch file or
URL.
the GNU utils ``sha256sum`` or the macOS ``shasum -a 256`` commands to
generate a checksum for a patch file.
Spack can also handle compressed patches. If you use these, Spack needs
a little more help. Specifically, it needs *two* checksums: the
@@ -1922,6 +1953,8 @@ issues with 1.64.0, 1.65.0, and 1.66.0, you can say:
depends_on('boost@1.59.0:1.63,1.65.1,1.67.0:')
.. _dependency-types:
^^^^^^^^^^^^^^^^
Dependency types
^^^^^^^^^^^^^^^^
@@ -1959,6 +1992,28 @@ inject the dependency's ``prefix/lib`` directory, but the package needs to
be in ``PATH`` and ``PYTHONPATH`` during the build process and later when
a user wants to run the package.
^^^^^^^^^^^^^^^^^^^^^^^^
Conditional dependencies
^^^^^^^^^^^^^^^^^^^^^^^^
You may have a package that only requires a dependency under certain
conditions. For example, you may have a package that has optional MPI support,
- MPI is only a dependency when you want to enable MPI support for the
package. In that case, you could say something like:
.. code-block:: python
variant('mpi', default=False)
depends_on('mpi', when='+mpi')
``when`` can include constraints on the variant, version, compiler, etc. and
the :mod:`syntax<spack.spec>` is the same as for Specs written on the command
line.
If a dependency/feature of a package isn't typically used, you can save time
by making it conditional (since Spack will not build the dependency unless it
is required for the Spec).
.. _dependency_dependency_patching:
^^^^^^^^^^^^^^^^^^^
@@ -4399,7 +4454,7 @@ translate variant flags into CMake definitions. For example:
.. code-block:: python
def configure_args(self):
def cmake_args(self):
spec = self.spec
return [
'-DUSE_EVERYTRACE=%s' % ('YES' if '+everytrace' in spec else 'NO'),

View File

@@ -0,0 +1,439 @@
.. 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)
.. _pipelines:
=========
Pipelines
=========
Spack provides commands that support generating and running automated build
pipelines designed for Gitlab CI. At the highest level it works like this:
provide a spack environment describing the set of packages you care about,
and include within that environment file a description of how those packages
should be mapped to Gitlab runners. Spack can then generate a ``.gitlab-ci.yml``
file containing job descriptions for all your packages that can be run by a
properly configured Gitlab CI instance. When run, the generated pipeline will
build and deploy binaries, and it can optionally report to a CDash instance
regarding the health of the builds as they evolve over time.
------------------------------
Getting started with pipelines
------------------------------
It is fairly straightforward to get started with automated build pipelines. At
a minimum, you'll need to set up a Gitlab instance (more about Gitlab CI
`here <https://about.gitlab.com/product/continuous-integration/>`_) and configure
at least one `runner <https://docs.gitlab.com/runner/>`_. Then the basic steps
for setting up a build pipeline are as follows:
#. Create a repository on your gitlab instance
#. Add a ``spack.yaml`` at the root containing your pipeline environment (see
below for details)
#. Add a ``.gitlab-ci.yml`` at the root containing a single job, similar to
this one:
.. code-block:: yaml
pipeline-job:
tags:
- <custom-tag>
...
script:
- spack ci start
#. Add any secrets required by the CI process to environment variables using the
CI web ui
#. Push a commit containing the ``spack.yaml`` and ``.gitlab-ci.yml`` mentioned above
to the gitlab repository
The ``<custom-tag>``, above, is used to pick one of your configured runners,
while the use of the ``spack ci start`` command implies that runner has an
appropriate version of spack installed and configured for use. Of course, there
are myriad ways to customize the process. You can configure CDash reporting
on the progress of your builds, set up S3 buckets to mirror binaries built by
the pipeline, clone a custom spack repository/ref for use by the pipeline, and
more.
While it is possible to set up pipelines on gitlab.com, the builds there are
limited to 60 minutes and generic hardware. It is also possible to
`hook up <https://about.gitlab.com/blog/2018/04/24/getting-started-gitlab-ci-gcp>`_
Gitlab to Google Kubernetes Engine (`GKE <https://cloud.google.com/kubernetes-engine/>`_)
or Amazon Elastic Kubernetes Service (`EKS <https://aws.amazon.com/eks>`_), though those
topics are outside the scope of this document.
-----------------------------------
Spack commands supporting pipelines
-----------------------------------
Spack provides a command `ci` with sub-commands for doing various things related
to automated build pipelines. All of the ``spack ci ...`` commands must be run
from within a environment, as each one makes use of the environment for different
purposes. Additionally, some options to the commands (or conditions present in
the spack environment file) may require particular environment variables to be
set in order to function properly. Examples of these are typically secrets
needed for pipeline operation that should not be visible in a spack environment
file. These environment variables are described in more detail
:ref:`ci_environment_variables`.
.. _cmd_spack_ci:
^^^^^^^^^^^^^^^^^^
``spack ci``
^^^^^^^^^^^^^^^^^^
Super-command for functionality related to generating pipelines and executing
pipeline jobs.
.. _cmd_spack_ci_start:
^^^^^^^^^^^^^^^^^^
``spack ci start``
^^^^^^^^^^^^^^^^^^
Currently this command is a short-cut to first run ``spack ci generate``, followed
by ``spack ci pushyaml``.
.. _cmd_spack_ci_generate:
^^^^^^^^^^^^^^^^^^^^^
``spack ci generate``
^^^^^^^^^^^^^^^^^^^^^
Concretizes the specs in the active environment, stages them (as described in
:ref:`staging_algorithm`), and writes the resulting ``.gitlab-ci.yml`` to disk.
.. _cmd_spack_ci_pushyaml:
^^^^^^^^^^^^^^^^^^^^^
``spack ci pushyaml``
^^^^^^^^^^^^^^^^^^^^^
Generates a commit containing the generated ``.gitlab-ci.yml`` and pushes it to a
``DOWNSTREAM_CI_REPO``, which is frequently the same repository. The branch
created has the same name as the current branch being tested, but has ``multi-ci-``
prepended to the branch name. Once Gitlab CI has full support for dynamically
defined workloads, this command will be deprecated.
.. _cmd_spack_ci_rebuild:
^^^^^^^^^^^^^^^^^^^^
``spack ci rebuild``
^^^^^^^^^^^^^^^^^^^^
This sub-command is responsible for ensuring a single spec from the release
environment is up to date on the remote mirror configured in the environment,
and as such, corresponds to a single job in the ``.gitlab-ci.yml`` file.
------------------------------------
A pipeline-enabled spack environment
------------------------------------
Here's an example of a spack environment file that has been enhanced with
sections desribing a build pipeline:
.. code-block:: yaml
spack:
definitions:
- pkgs:
- readline@7.0
- compilers:
- '%gcc@5.5.0'
- oses:
- os=ubuntu18.04
- os=centos7
specs:
- matrix:
- [$pkgs]
- [$compilers]
- [$oses]
mirrors:
cloud_gitlab: https://mirror.spack.io
gitlab-ci:
mappings:
- match:
- os=ubuntu18.04
runner-attributes:
tags:
- spack-k8s
image: spack/spack_builder_ubuntu_18.04
- match:
- os=centos7
runner-attributes:
tags:
- spack-k8s
image: spack/spack_builder_centos_7
cdash:
build-group: Release Testing
url: https://cdash.spack.io
project: Spack
site: Spack AWS Gitlab Instance
Hopefully, the ``definitions``, ``specs``, ``mirrors``, etc. sections are already
familiar, as they are part of spack :ref:`environments`. So let's take a more
in-depth look some of the pipeline-related sections in that environment file
that might not be as familiar.
The ``gitlab-ci`` section is used to configure how the pipeline workload should be
generated, mainly how the jobs for building specs should be assigned to the
configured runners on your instance. Each entry within the list of ``mappings``
corresponds to a known gitlab runner, where the ``match`` section is used
in assigning a release spec to one of the runners, and the ``runner-attributes``
section is used to configure the spec/job for that particular runner.
There are other pipeline options you can configure within the ``gitlab-ci`` section
as well. The ``bootstrap`` section allows you to specify lists of specs from
your ``definitions`` that should be staged ahead of the environment's ``specs`` (this
section is described in more detail below). The ``enable-artifacts-buildcache`` key
takes a boolean and determines whether the pipeline uses artifacts to store and
pass along the buildcaches from one stage to the next (the default if you don't
provide this option is ``False``). The ``enable-debug-messages`` key takes a boolean
and allows you to choose whether the pipeline build jobs are run as ``spack -d ci rebuild``
or just ``spack ci rebuild`` (the default is not to enable debug messages). The
``final-stage-rebuild-index`` section controls whether an extra job is added to the
end of your pipeline (in a stage by itself) which will regenerate the mirror's
buildcache index. Under normal operation, each pipeline job that rebuilds a package
will re-generate the mirror's buildcache index after the buildcache entry for that
job has been created and pushed to the mirror. Since jobs in the same stage can run in
parallel, there is the possibility that at the end of some stage, the index may not
reflect all the binaries in the buildcache. Adding the ``final-stage-rebuild-index``
section ensures that at the end of the pipeline, the index will be in sync with the
binaries on the mirror. If the mirror lives in an S3 bucket, this job will need to
run on a machine with the Python ``boto3`` module installed, and consequently the
``final-stage-rebuild-index`` needs to specify a list of ``tags`` to pick a runner
satisfying that condition. It can also take an ``image`` key so Docker executor type
runners can pick the right image for the index regeneration job.
The optional ``cdash`` section provides information that will be used by the
``spack ci generate`` command (invoked by ``spack ci start``) for reporting
to CDash. All the jobs generated from this environment will belong to a
"build group" within CDash that can be tracked over time. As the release
progresses, this build group may have jobs added or removed. The url, project,
and site are used to specify the CDash instance to which build results should
be reported.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Assignment of specs to runners
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``mappings`` section corresponds to a list of runners, and during assignment
of specs to runners, the list is traversed in order looking for matches, the
first runner that matches a release spec is assigned to build that spec. The
``match`` section within each runner mapping section is a list of specs, and
if any of those specs match the release spec (the ``spec.satisfies()`` method
is used), then that runner is considered a match.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Configuration of specs/jobs for a runner
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Once a runner has been chosen to build a release spec, the ``runner-attributes``
section provides information determining details of the job in the context of
the runner. The ``runner-attributes`` section must have a ``tags`` key, which
is a list containing at least one tag used to select the runner from among the
runners known to the gitlab instance. For Docker executor type runners, the
``image`` key is used to specify the Docker image used to build the release spec
(and could also appear as a dictionary with a ``name`` specifying the image name,
as well as an ``entrypoint`` to override whatever the default for that image is).
For other types of runners the ``variables`` key will be useful to pass any
information on to the runner that it needs to do its work (e.g. scheduler
parameters, etc.).
.. _staging_algorithm:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Summary of ``.gitlab-ci.yml`` generation algorithm
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
All specs yielded by the matrix (or all the specs in the environment) have their
dependencies computed, and the entire resulting set of specs are staged together
before being run through the ``gitlab-ci/mappings`` entries, where each staged
spec is assigned a runner. "Staging" is the name we have given to the process
of figuring out in what order the specs should be built, taking into consideration
Gitlab CI rules about jobs/stages. In the staging process the goal is to maximize
the number of jobs in any stage of the pipeline, while ensuring that the jobs in
any stage only depend on jobs in previous stages (since those jobs are guaranteed
to have completed already). As a runner is determined for a job, the information
in the ``runner-attributes`` is used to populate various parts of the job
description that will be used by Gitlab CI. Once all the jobs have been assigned
a runner, the ``.gitlab-ci.yml`` is written to disk.
The short example provided above would result in the ``readline``, ``ncurses``,
and ``pkgconf`` packages getting staged and built on the runner chosen by the
``spack-k8s`` tag. In this example, we assume the runner is a Docker executor
type runner, and thus certain jobs will be run in the ``centos7`` container,
and others in the ``ubuntu-18.04`` container. The resulting ``.gitlab-ci.yml``
will contain 6 jobs in three stages. Once the jobs have been generated, the
presence of a ``SPACK_CDASH_AUTH_TOKEN`` environment variable during the
``spack ci generate`` command would result in all of the jobs being put in a
build group on CDash called "Release Testing" (that group will be created if
it didn't already exist).
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Optional compiler bootstrapping
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Spack pipelines also have support for bootstrapping compilers on systems that
may not already have the desired compilers installed. The idea here is that
you can specify a list of things to bootstrap in your ``definitions``, and
spack will guarantee those will be installed in a phase of the pipeline before
your release specs, so that you can rely on those packages being available in
the binary mirror when you need them later on in the pipeline. At the moment
the only viable use-case for bootstrapping is to install compilers.
Here's an example of what bootstrapping some compilers might look like:
.. code-block:: yaml
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
- 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'
gitlab-ci:
bootstrap:
- name: compiler-pkgs
compiler-agnostic: true
mappings:
# mappings similar to the example higher up in this description
...
In the example above, we have added a list to the ``definitions`` called
``compiler-pkgs`` (you can add any number of these), which lists compiler packages
we want to be staged ahead of the full matrix of release specs (which consists
only of readline in our example). Then within the ``gitlab-ci`` section, we
have added a ``bootstrap`` section, which can contain a list of items, each
referring to a list in the ``definitions`` section. These items can either
be a dictionary or a string. If you supply a dictionary, it must have a name
key whose value must match one of the lists in definitions and it can have a
``compiler-agnostic`` key whose value is a boolean. If you supply a string,
then it needs to match one of the lists provided in ``definitions``. You can
think of the bootstrap list as an ordered list of pipeline "phases" that will
be staged before your actual release specs. While this introduces another
layer of bottleneck in the pipeline (all jobs in all stages of one phase must
complete before any jobs in the next phase can begin), it also means you are
guaranteed your bootstrapped compilers will be available when you need them.
The ``compiler-agnostic`` key can be provided with each item in the
bootstrap list. It tells the ``spack ci generate`` command that any jobs staged
from that particular list should have the compiler removed from the spec, so
that any compiler available on the runner where the job is run can be used to
build the package.
When including a bootstrapping phase as in the example above, the result is that
the bootstrapped compiler packages will be pushed to the binary mirror (and the
local artifacts mirror) before the actual release specs are built. In this case,
the jobs corresponding to subsequent release specs are configured to
``install_missing_compilers``, so that if spack is asked to install a package
with a compiler it doesn't know about, it can be quickly installed from the
binary mirror first.
Since bootstrapping compilers is optional, those items can be left out of the
environment/stack file, and in that case no bootstrapping will be done (only the
specs will be staged for building) and the runners will be expected to already
have all needed compilers installed and configured for spack to use.
-------------------------------------
Using a custom spack in your pipeline
-------------------------------------
If your runners will not have a version of spack ready to invoke, or if for some
other reason you want to use a custom version of spack to run your pipelines,
this can be accomplished fairly simply. First, create CI environment variables
containing the url and branch/tag you want to clone (calling them, for example,
``SPACK_REPO`` and ``SPACK_REF``), use them to clone spack in your pre-ci
``before_script``, and finally pass those same values along to the workload
generation process via the ``spack-repo`` and ``spack-ref`` cli args. Here's
an example:
.. code-block:: yaml
pipeline-job:
tags:
- <some-other-tag>
before_script:
- git clone ${SPACK_REPO} --branch ${SPACK_REF}
- . ./spack/share/spack/setup-env.sh
script:
- spack ci start --spack-repo ${SPACK_REPO} --spack-ref ${SPACK_REF} <...args>
after_script:
- rm -rf ./spack
If the ``spack ci start`` command receives those extra command line arguments,
then it adds similar ``before_script`` and ``after_script`` sections for each of
the ``spack ci rebuild`` jobs it generates (cloning and sourcing a custom
spack in the ``before_script`` and removing it again in the ``after_script``).
This gives you control over the version of spack used when the rebuild jobs
are actually run on the gitlab runner.
.. _ci_environment_variables:
--------------------------------------------------
Environment variables affecting pipeline operation
--------------------------------------------------
Certain secrets and some other information should be provided to the pipeline
infrastructure via environment variables, usually for reasons of security, but
in some cases to support other pipeline use cases such as PR testing. The
environment variables used by the pipeline infrastructure are described here.
^^^^^^^^^^^^^^^^^
AWS_ACCESS_KEY_ID
^^^^^^^^^^^^^^^^^
Needed when binary mirror is an S3 bucket.
^^^^^^^^^^^^^^^^^^^^^
AWS_SECRET_ACCESS_KEY
^^^^^^^^^^^^^^^^^^^^^
Needed when binary mirror is an S3 bucket.
^^^^^^^^^^^^^^^
S3_ENDPOINT_URL
^^^^^^^^^^^^^^^
Needed when binary mirror is an S3 bucket that is *not* on AWS.
^^^^^^^^^^^^^^^^^
CDASH_AUTH_TOKEN
^^^^^^^^^^^^^^^^^
Needed in order to report build groups to CDash.
^^^^^^^^^^^^^^^^^
SPACK_SIGNING_KEY
^^^^^^^^^^^^^^^^^
Needed to sign/verify binary packages from the remote binary mirror.
^^^^^^^^^^^^^^^^^^
DOWNSTREAM_CI_REPO
^^^^^^^^^^^^^^^^^^
Needed until Gitlab CI supports dynamic job generation. Can contain connection
credentials, and could be the same repository or a different one.

View File

@@ -1,4 +1,4 @@
.. Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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,7 +1,7 @@
# These dependencies should be installed using pip in order
# to build the documentation.
sphinx==2.0.1
sphinxcontrib-programoutput==0.14
sphinx-rtd-theme==0.4.3
sphinx
sphinxcontrib-programoutput
sphinx-rtd-theme
python-levenshtein

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
.. Copyright 2013-2020 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)
@@ -253,14 +253,14 @@ However, other more powerful methods are generally preferred for user
environments.
^^^^^^^^^^^^^^^^^^^^^^^
Spack-Generated Modules
^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Using ``spack load`` to Manage the User Environment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Suppose that Spack has been used to install a set of command-line
programs, which users now wish to use. One can in principle put a
number of ``spack load`` commands into ``.bashrc``, for example, to
load a set of Spack-generated modules:
load a set of Spack packages:
.. code-block:: sh
@@ -273,7 +273,7 @@ load a set of Spack-generated modules:
Although simple load scripts like this are useful in many cases, they
have some drawbacks:
1. The set of modules loaded by them will in general not be
1. The set of packages loaded by them will in general not be
consistent. They are a decent way to load commands to be called
from command shells. See below for better ways to assemble a
consistent set of packages for building application programs.
@@ -285,19 +285,24 @@ have some drawbacks:
other hand, are not very smart: if the user-supplied spec matches
more than one installed package, then ``spack module tcl loads`` will
fail. This may change in the future. For now, the workaround is to
be more specific on any ``spack module tcl loads`` lines that fail.
be more specific on any ``spack load`` commands that fail.
""""""""""""""""""""""
Generated Load Scripts
""""""""""""""""""""""
Another problem with using `spack load` is, it is slow; a typical user
environment could take several seconds to load, and would not be
appropriate to put into ``.bashrc`` directly. It is preferable to use
a series of ``spack module tcl loads`` commands to pre-compute which
modules to load. These can be put in a script that is run whenever
installed Spack packages change. For example:
Another problem with using `spack load` is, it can be slow; a typical
user environment could take several seconds to load, and would not be
appropriate to put into ``.bashrc`` directly. This is because it
requires the full start-up overhead of python/Spack for each command.
In some circumstances it is preferable to use a series of ``spack
module tcl loads`` (or ``spack module lmod loads``) commands to
pre-compute which modules to load. This will generate the modulenames
to load the packages using environment modules, rather than Spack's
built-in support for environment modifications. These can be put in a
script that is run whenever installed Spack packages change. For
example:
.. code-block:: sh
@@ -634,7 +639,7 @@ Global Activations
Python (and similar systems) packages directly or creating a view.
If extensions are globally activated, then ``spack load python`` will
also load all the extensions activated for the given ``python``.
This reduces the need for users to load a large number of modules.
This reduces the need for users to load a large number of packages.
However, Spack global activations have two potential drawbacks:
@@ -1090,6 +1095,248 @@ or filesystem views. However, it has some drawbacks:
integrate Spack explicitly in their workflow. Not all users are
willing to do this.
-------------------------------------
Using Spack to Replace Homebrew/Conda
-------------------------------------
Spack is an incredibly powerful package manager, designed for supercomputers
where users have diverse installation needs. But Spack can also be used to
handle simple single-user installations on your laptop. Most macOS users are
already familiar with package managers like Homebrew and Conda, where all
installed packages are symlinked to a single central location like ``/usr/local``.
In this section, we will show you how to emulate the behavior of Homebrew/Conda
using :ref:`environments`!
^^^^^
Setup
^^^^^
First, let's create a new environment. We'll assume that Spack is already set up
correctly, and that you've already sourced the setup script for your shell.
To create a new environment, simply run:
.. code-block:: console
$ spack env create myenv
==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view
==> Created environment 'myenv' in /Users/me/spack/var/spack/environments/myenv
$ spack env activate myenv
Here, *myenv* can be anything you want to name your environment. Next, we can add
a list of packages we would like to install into our environment. Let's say we
want a newer version of Bash than the one that comes with macOS, and we want a
few Python libraries. We can run:
.. code-block:: console
$ spack add bash
==> Adding bash to environment myenv
==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view
$ spack add python@3:
==> Adding python@3: to environment myenv
==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view
$ spack add py-numpy py-scipy py-matplotlib
==> Adding py-numpy to environment myenv
==> Adding py-scipy to environment myenv
==> Adding py-matplotlib to environment myenv
==> Updating view at /Users/me/spack/var/spack/environments/myenv/.spack-env/view
Each package can be listed on a separate line, or combined into a single line.
Notice that we're explicitly asking for Python 3 here. You can use any spec
you would normally use on the command line with other Spack commands.
Next, we want to manually configure a couple of things. In the ``myenv``
directory, we can find the ``spack.yaml`` that actually defines our environment.
.. code-block:: console
$ vim ~/spack/var/spack/environments/myenv/spack.yaml
.. 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: [bash, 'python@3:', py-numpy, py-scipy, py-matplotlib]
view:
default:
root: /Users/me/spack/var/spack/environments/myenv/.spack-env/view
projections: {}
config: {}
mirrors: {}
modules:
enable: []
packages: {}
repos: []
upstreams: {}
definitions: []
concretization: separately
You can see the packages we added earlier in the ``specs:`` section. If you
ever want to add more packages, you can either use ``spack add`` or manually
edit this file.
We also need to change the ``concretization:`` option. By default, Spack
concretizes each spec *separately*, allowing multiple versions of the same
package to coexist. Since we want a single consistent environment, we want to
concretize all of the specs *together*.
Here is what your ``spack.yaml`` looks like with these new settings, and with
some of the sections we don't plan on using removed:
.. code-block:: diff
spack:
- specs: [bash, 'python@3:', py-numpy, py-scipy, py-matplotlib]
+ specs:
+ - bash
+ - 'python@3:'
+ - py-numpy
+ - py-scipy
+ - py-matplotlib
- view:
- default:
- root: /Users/me/spack/var/spack/environments/myenv/.spack-env/view
- projections: {}
+ view: /Users/me/spack/var/spack/environments/myenv/.spack-env/view
- config: {}
- mirrors: {}
- modules:
- enable: []
- packages: {}
- repos: []
- upstreams: {}
- definitions: []
+ concretization: together
- concretization: separately
""""""""""""""""
Symlink location
""""""""""""""""
In the ``spack.yaml`` file above, you'll notice that by default, Spack symlinks
all installations to ``/Users/me/spack/var/spack/environments/myenv/.spack-env/view``.
You can actually change this to any directory you want. For example, Homebrew
uses ``/usr/local``, while Conda uses ``/Users/me/anaconda``. In order to access
files in these locations, you need to update ``PATH`` and other environment variables
to point to them. Activating the Spack environment does this automatically, but
you can also manually set them in your ``.bashrc``.
.. warning::
There are several reasons why you shouldn't use ``/usr/local``:
1. If you are on macOS 10.11+ (El Capitan and newer), Apple makes it hard
for you. You may notice permissions issues on ``/usr/local`` due to their
`System Integrity Protection <https://support.apple.com/en-us/HT204899>`_.
By default, users don't have permissions to install anything in ``/usr/local``,
and you can't even change this using ``sudo chown`` or ``sudo chmod``.
2. Other package managers like Homebrew will try to install things to the
same directory. If you plan on using Homebrew in conjunction with Spack,
don't symlink things to ``/usr/local``.
3. If you are on a shared workstation, or don't have sudo priveleges, you
can't do this.
If you still want to do this anyway, there are several ways around SIP.
You could disable SIP by booting into recovery mode and running
``csrutil disable``, but this is not recommended, as it can open up your OS
to security vulnerabilities. Another technique is to run ``spack concretize``
and ``spack install`` using ``sudo``. This is also not recommended.
The safest way I've found is to create your installation directories using
sudo, then change ownership back to the user like so:
.. code-block:: bash
for directory in .spack bin contrib include lib man share
do
sudo mkdir -p /usr/local/$directory
sudo chown $(id -un):$(id -gn) /usr/local/$directory
done
Depending on the packages you install in your environment, the exact list of
directories you need to create may vary. You may also find some packages
like Java libraries that install a single file to the installation prefix
instead of in a subdirectory. In this case, the action is the same, just replace
``mkdir -p`` with ``touch`` in the for-loop above.
But again, it's safer just to use the default symlink location.
^^^^^^^^^^^^
Installation
^^^^^^^^^^^^
To actually concretize the environment, run:
.. code-block:: console
$ spack concretize
This will tell you which if any packages are already installed, and alert you
to any conflicting specs.
To actually install these packages and symlink them to your ``view:``
directory, simply run:
.. code-block:: console
$ spack install
Now, when you type ``which python3``, it should find the one you just installed.
In order to change the default shell to our newer Bash installation, we first
need to add it to this list of acceptable shells. Run:
.. code-block:: console
$ sudo vim /etc/shells
and add the absolute path to your bash executable. Then run:
.. code-block:: console
$ chsh -s /path/to/bash
Now, when you log out and log back in, ``echo $SHELL`` should point to the
newer version of Bash.
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Updating Installed Packages
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Let's say you upgraded to a new version of macOS, or a new version of Python
was released, and you want to rebuild your entire software stack. To do this,
simply run the following commands:
.. code-block:: console
$ spack env activate myenv
$ spack concretize --force
$ spack install
The ``--force`` flag tells Spack to overwrite its previous concretization
decisions, allowing you to choose a new version of Python. If any of the new
packages like Bash are already installed, ``spack install`` won't re-install
them, it will keep the symlinks in place.
^^^^^^^^^^^^^^
Uninstallation
^^^^^^^^^^^^^^
If you decide that Spack isn't right for you, uninstallation is simple.
Just run:
.. code-block:: console
$ spack env activate myenv
$ spack uninstall --all
This will uninstall all packages in your environment and remove the symlinks.
------------------------
Using Spack on Travis-CI
------------------------
@@ -1254,7 +1501,7 @@ In order to build and run the image, execute:
RUN spack install tar \
&& spack clean -a
# need the modules already during image build?
# need the executables from a package already during image build?
#RUN /bin/bash -l -c ' \
# spack load tar \
# && which tar'

2
lib/spack/env/cc vendored
View File

@@ -1,6 +1,6 @@
#!/bin/bash
#
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -82,14 +82,6 @@
ini-parsing, io, code, and log facilities.
* Version: 1.4.34 (last version supporting Python 2.6)
pyqver
------
* Homepage: https://github.com/ghewgill/pyqver
* Usage: External script to query required python version of
python source code. Used for ensuring 2.6 compatibility.
* Version: Unversioned
pytest
------

View File

@@ -569,7 +569,7 @@ def syspathinsert(self, path=None):
def _possibly_invalidate_import_caches(self):
# invalidate caches if we can (py33 and above)
try:
import importlib # nopyqver
import importlib
except ImportError:
pass
else:

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,344 +0,0 @@
#!/usr/bin/env python
#
# pyqver2.py
# by Greg Hewgill
# https://github.com/ghewgill/pyqver
#
# This software is provided 'as-is', without any express or implied
# warranty. In no event will the author be held liable for any damages
# arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment in the product documentation would be
# appreciated but is not required.
# 2. Altered source versions must be plainly marked as such, and must not be
# misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.
#
# Copyright (c) 2009-2013 Greg Hewgill http://hewgill.com
#
import compiler
import platform
import sys
StandardModules = {
"__future__": (2, 1),
"abc": (2, 6),
# skip argparse now that it's in lib/spack/external
# "argparse": (2, 7),
"ast": (2, 6),
"atexit": (2, 0),
"bz2": (2, 3),
"cgitb": (2, 2),
"collections": (2, 4),
"contextlib": (2, 5),
"cookielib": (2, 4),
"cProfile": (2, 5),
"csv": (2, 3),
"ctypes": (2, 5),
"datetime": (2, 3),
"decimal": (2, 4),
"difflib": (2, 1),
"DocXMLRPCServer": (2, 3),
"dummy_thread": (2, 3),
"dummy_threading": (2, 3),
"email": (2, 2),
"fractions": (2, 6),
"functools": (2, 5),
"future_builtins": (2, 6),
"hashlib": (2, 5),
"heapq": (2, 3),
"hmac": (2, 2),
"hotshot": (2, 2),
"HTMLParser": (2, 2),
"importlib": (2, 7),
"inspect": (2, 1),
"io": (2, 6),
"itertools": (2, 3),
"json": (2, 6),
"logging": (2, 3),
"modulefinder": (2, 3),
"msilib": (2, 5),
"multiprocessing": (2, 6),
"netrc": (1, 5, 2),
"numbers": (2, 6),
"optparse": (2, 3),
"ossaudiodev": (2, 3),
"pickletools": (2, 3),
"pkgutil": (2, 3),
"platform": (2, 3),
"pydoc": (2, 1),
"runpy": (2, 5),
"sets": (2, 3),
"shlex": (1, 5, 2),
"SimpleXMLRPCServer": (2, 2),
"spwd": (2, 5),
"sqlite3": (2, 5),
"ssl": (2, 6),
"stringprep": (2, 3),
"subprocess": (2, 4),
"sysconfig": (2, 7),
"tarfile": (2, 3),
"textwrap": (2, 3),
"timeit": (2, 3),
"unittest": (2, 1),
"uuid": (2, 5),
"warnings": (2, 1),
"weakref": (2, 1),
"winsound": (1, 5, 2),
"wsgiref": (2, 5),
"xml.dom": (2, 0),
"xml.dom.minidom": (2, 0),
"xml.dom.pulldom": (2, 0),
"xml.etree.ElementTree": (2, 5),
"xml.parsers.expat":(2, 0),
"xml.sax": (2, 0),
"xml.sax.handler": (2, 0),
"xml.sax.saxutils": (2, 0),
"xml.sax.xmlreader":(2, 0),
"xmlrpclib": (2, 2),
"zipfile": (1, 6),
"zipimport": (2, 3),
"_ast": (2, 5),
"_winreg": (2, 0),
}
Functions = {
"all": (2, 5),
"any": (2, 5),
"collections.Counter": (2, 7),
"collections.defaultdict": (2, 5),
"collections.OrderedDict": (2, 7),
"functools.total_ordering": (2, 7),
"enumerate": (2, 3),
"frozenset": (2, 4),
"itertools.compress": (2, 7),
"math.erf": (2, 7),
"math.erfc": (2, 7),
"math.expm1": (2, 7),
"math.gamma": (2, 7),
"math.lgamma": (2, 7),
"memoryview": (2, 7),
"next": (2, 6),
"os.getresgid": (2, 7),
"os.getresuid": (2, 7),
"os.initgroups": (2, 7),
"os.setresgid": (2, 7),
"os.setresuid": (2, 7),
"reversed": (2, 4),
"set": (2, 4),
"subprocess.check_call": (2, 5),
"subprocess.check_output": (2, 7),
"sum": (2, 3),
"symtable.is_declared_global": (2, 7),
"weakref.WeakSet": (2, 7),
}
Identifiers = {
"False": (2, 2),
"True": (2, 2),
}
def uniq(a):
if len(a) == 0:
return []
else:
return [a[0]] + uniq([x for x in a if x != a[0]])
class NodeChecker(object):
def __init__(self):
self.vers = dict()
self.vers[(2,0)] = []
def add(self, node, ver, msg):
if ver not in self.vers:
self.vers[ver] = []
self.vers[ver].append((node.lineno, msg))
def default(self, node):
for child in node.getChildNodes():
self.visit(child)
def visitCallFunc(self, node):
def rollup(n):
if isinstance(n, compiler.ast.Name):
return n.name
elif isinstance(n, compiler.ast.Const):
return type(n.value).__name__
elif isinstance(n, compiler.ast.Getattr):
r = rollup(n.expr)
if r:
return r + "." + n.attrname
name = rollup(node.node)
if name:
# Special handling for empty format strings, which aren't
# allowed in Python 2.6
if name in ('unicode.format', 'str.format'):
n = node.node
if isinstance(n, compiler.ast.Getattr):
n = n.expr
if isinstance(n, compiler.ast.Const):
if '{}' in n.value:
self.add(node, (2,7), name + ' with {} format string')
v = Functions.get(name)
if v is not None:
self.add(node, v, name)
self.default(node)
def visitClass(self, node):
if node.bases:
self.add(node, (2,2), "new-style class")
if node.decorators:
self.add(node, (2,6), "class decorator")
self.default(node)
def visitDictComp(self, node):
self.add(node, (2,7), "dictionary comprehension")
self.default(node)
def visitFloorDiv(self, node):
self.add(node, (2,2), "// operator")
self.default(node)
def visitFrom(self, node):
v = StandardModules.get(node.modname)
if v is not None:
self.add(node, v, node.modname)
for n in node.names:
name = node.modname + "." + n[0]
v = Functions.get(name)
if v is not None:
self.add(node, v, name)
def visitFunction(self, node):
if node.decorators:
self.add(node, (2,4), "function decorator")
self.default(node)
def visitGenExpr(self, node):
self.add(node, (2,4), "generator expression")
self.default(node)
def visitGetattr(self, node):
if (isinstance(node.expr, compiler.ast.Const)
and isinstance(node.expr.value, str)
and node.attrname == "format"):
self.add(node, (2,6), "string literal .format()")
self.default(node)
def visitIfExp(self, node):
self.add(node, (2,5), "inline if expression")
self.default(node)
def visitImport(self, node):
for n in node.names:
v = StandardModules.get(n[0])
if v is not None:
self.add(node, v, n[0])
self.default(node)
def visitName(self, node):
v = Identifiers.get(node.name)
if v is not None:
self.add(node, v, node.name)
self.default(node)
def visitSet(self, node):
self.add(node, (2,7), "set literal")
self.default(node)
def visitSetComp(self, node):
self.add(node, (2,7), "set comprehension")
self.default(node)
def visitTryFinally(self, node):
# try/finally with a suite generates a Stmt node as the body,
# but try/except/finally generates a TryExcept as the body
if isinstance(node.body, compiler.ast.TryExcept):
self.add(node, (2,5), "try/except/finally")
self.default(node)
def visitWith(self, node):
if isinstance(node.body, compiler.ast.With):
self.add(node, (2,7), "with statement with multiple contexts")
else:
self.add(node, (2,5), "with statement")
self.default(node)
def visitYield(self, node):
self.add(node, (2,2), "yield expression")
self.default(node)
def get_versions(source, filename=None):
"""Return information about the Python versions required for specific features.
The return value is a dictionary with keys as a version number as a tuple
(for example Python 2.6 is (2,6)) and the value are a list of features that
require the indicated Python version.
"""
tree = compiler.parse(source)
checker = compiler.walk(tree, NodeChecker())
return checker.vers
def v27(source):
if sys.version_info >= (2, 7):
return qver(source)
else:
print >>sys.stderr, "Not all features tested, run --test with Python 2.7"
return (2, 7)
def qver(source):
"""Return the minimum Python version required to run a particular bit of code.
>>> qver('print "hello world"')
(2, 0)
>>> qver('class test(object): pass')
(2, 2)
>>> qver('yield 1')
(2, 2)
>>> qver('a // b')
(2, 2)
>>> qver('True')
(2, 2)
>>> qver('enumerate(a)')
(2, 3)
>>> qver('total = sum')
(2, 0)
>>> qver('sum(a)')
(2, 3)
>>> qver('(x*x for x in range(5))')
(2, 4)
>>> qver('class C:\\n @classmethod\\n def m(): pass')
(2, 4)
>>> qver('y if x else z')
(2, 5)
>>> qver('import hashlib')
(2, 5)
>>> qver('from hashlib import md5')
(2, 5)
>>> qver('import xml.etree.ElementTree')
(2, 5)
>>> qver('try:\\n try: pass;\\n except: pass;\\nfinally: pass')
(2, 0)
>>> qver('try: pass;\\nexcept: pass;\\nfinally: pass')
(2, 5)
>>> qver('from __future__ import with_statement\\nwith x: pass')
(2, 5)
>>> qver('collections.defaultdict(list)')
(2, 5)
>>> qver('from collections import defaultdict')
(2, 5)
>>> qver('"{0}".format(0)')
(2, 6)
>>> qver('memoryview(x)')
(2, 7)
>>> v27('{1, 2, 3}')
(2, 7)
>>> v27('{x for x in s}')
(2, 7)
>>> v27('{x: y for x in s}')
(2, 7)
>>> qver('from __future__ import with_statement\\nwith x:\\n with y: pass')
(2, 5)
>>> v27('from __future__ import with_statement\\nwith x, y: pass')
(2, 7)
>>> qver('@decorator\\ndef f(): pass')
(2, 4)
>>> qver('@decorator\\nclass test:\\n pass')
(2, 6)
#>>> qver('0o0')
#(2, 6)
#>>> qver('@foo\\nclass C: pass')
#(2, 6)
"""
return max(get_versions(source).keys())

View File

@@ -1,248 +0,0 @@
#!/usr/bin/env python3
#
# pyqver3.py
# by Greg Hewgill
# https://github.com/ghewgill/pyqver
#
# This software is provided 'as-is', without any express or implied
# warranty. In no event will the author be held liable for any damages
# arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment in the product documentation would be
# appreciated but is not required.
# 2. Altered source versions must be plainly marked as such, and must not be
# misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.
#
# Copyright (c) 2009-2013 Greg Hewgill http://hewgill.com
#
import ast
import platform
import sys
StandardModules = {
# skip argparse now that it's in lib/spack/external
# "argparse": (3, 2),
"faulthandler": (3, 3),
"importlib": (3, 1),
"ipaddress": (3, 3),
"lzma": (3, 3),
"tkinter.ttk": (3, 1),
"unittest.mock": (3, 3),
"venv": (3, 3),
}
Functions = {
"bytearray.maketrans": (3, 1),
"bytes.maketrans": (3, 1),
"bz2.open": (3, 3),
"collections.Counter": (3, 1),
"collections.OrderedDict": (3, 1),
"crypt.mksalt": (3, 3),
"email.generator.BytesGenerator": (3, 2),
"email.message_from_binary_file": (3, 2),
"email.message_from_bytes": (3, 2),
"functools.lru_cache": (3, 2),
"gzip.compress": (3, 2),
"gzip.decompress": (3, 2),
"inspect.getclosurevars": (3, 3),
"inspect.getgeneratorlocals": (3, 3),
"inspect.getgeneratorstate": (3, 2),
"itertools.combinations_with_replacement": (3, 1),
"itertools.compress": (3, 1),
"logging.config.dictConfig": (3, 2),
"logging.NullHandler": (3, 1),
"math.erf": (3, 2),
"math.erfc": (3, 2),
"math.expm1": (3, 2),
"math.gamma": (3, 2),
"math.isfinite": (3, 2),
"math.lgamma": (3, 2),
"math.log2": (3, 3),
"os.environb": (3, 2),
"os.fsdecode": (3, 2),
"os.fsencode": (3, 2),
"os.fwalk": (3, 3),
"os.getenvb": (3, 2),
"os.get_exec_path": (3, 2),
"os.getgrouplist": (3, 3),
"os.getpriority": (3, 3),
"os.getresgid": (3, 2),
"os.getresuid": (3, 2),
"os.get_terminal_size": (3, 3),
"os.getxattr": (3, 3),
"os.initgroups": (3, 2),
"os.listxattr": (3, 3),
"os.lockf": (3, 3),
"os.pipe2": (3, 3),
"os.posix_fadvise": (3, 3),
"os.posix_fallocate": (3, 3),
"os.pread": (3, 3),
"os.pwrite": (3, 3),
"os.readv": (3, 3),
"os.removexattr": (3, 3),
"os.replace": (3, 3),
"os.sched_get_priority_max": (3, 3),
"os.sched_get_priority_min": (3, 3),
"os.sched_getaffinity": (3, 3),
"os.sched_getparam": (3, 3),
"os.sched_getscheduler": (3, 3),
"os.sched_rr_get_interval": (3, 3),
"os.sched_setaffinity": (3, 3),
"os.sched_setparam": (3, 3),
"os.sched_setscheduler": (3, 3),
"os.sched_yield": (3, 3),
"os.sendfile": (3, 3),
"os.setpriority": (3, 3),
"os.setresgid": (3, 2),
"os.setresuid": (3, 2),
"os.setxattr": (3, 3),
"os.sync": (3, 3),
"os.truncate": (3, 3),
"os.waitid": (3, 3),
"os.writev": (3, 3),
"shutil.chown": (3, 3),
"shutil.disk_usage": (3, 3),
"shutil.get_archive_formats": (3, 3),
"shutil.get_terminal_size": (3, 3),
"shutil.get_unpack_formats": (3, 3),
"shutil.make_archive": (3, 3),
"shutil.register_archive_format": (3, 3),
"shutil.register_unpack_format": (3, 3),
"shutil.unpack_archive": (3, 3),
"shutil.unregister_archive_format": (3, 3),
"shutil.unregister_unpack_format": (3, 3),
"shutil.which": (3, 3),
"signal.pthread_kill": (3, 3),
"signal.pthread_sigmask": (3, 3),
"signal.sigpending": (3, 3),
"signal.sigtimedwait": (3, 3),
"signal.sigwait": (3, 3),
"signal.sigwaitinfo": (3, 3),
"socket.CMSG_LEN": (3, 3),
"socket.CMSG_SPACE": (3, 3),
"socket.fromshare": (3, 3),
"socket.if_indextoname": (3, 3),
"socket.if_nameindex": (3, 3),
"socket.if_nametoindex": (3, 3),
"socket.sethostname": (3, 3),
"ssl.match_hostname": (3, 2),
"ssl.RAND_bytes": (3, 3),
"ssl.RAND_pseudo_bytes": (3, 3),
"ssl.SSLContext": (3, 2),
"ssl.SSLEOFError": (3, 3),
"ssl.SSLSyscallError": (3, 3),
"ssl.SSLWantReadError": (3, 3),
"ssl.SSLWantWriteError": (3, 3),
"ssl.SSLZeroReturnError": (3, 3),
"stat.filemode": (3, 3),
"textwrap.indent": (3, 3),
"threading.get_ident": (3, 3),
"time.clock_getres": (3, 3),
"time.clock_gettime": (3, 3),
"time.clock_settime": (3, 3),
"time.get_clock_info": (3, 3),
"time.monotonic": (3, 3),
"time.perf_counter": (3, 3),
"time.process_time": (3, 3),
"types.new_class": (3, 3),
"types.prepare_class": (3, 3),
}
def uniq(a):
if len(a) == 0:
return []
else:
return [a[0]] + uniq([x for x in a if x != a[0]])
class NodeChecker(ast.NodeVisitor):
def __init__(self):
self.vers = dict()
self.vers[(3,0)] = []
def add(self, node, ver, msg):
if ver not in self.vers:
self.vers[ver] = []
self.vers[ver].append((node.lineno, msg))
def visit_Call(self, node):
def rollup(n):
if isinstance(n, ast.Name):
return n.id
elif isinstance(n, ast.Attribute):
r = rollup(n.value)
if r:
return r + "." + n.attr
name = rollup(node.func)
if name:
v = Functions.get(name)
if v is not None:
self.add(node, v, name)
self.generic_visit(node)
def visit_Import(self, node):
for n in node.names:
v = StandardModules.get(n.name)
if v is not None:
self.add(node, v, n.name)
self.generic_visit(node)
def visit_ImportFrom(self, node):
v = StandardModules.get(node.module)
if v is not None:
self.add(node, v, node.module)
for n in node.names:
name = node.module + "." + n.name
v = Functions.get(name)
if v is not None:
self.add(node, v, name)
def visit_Raise(self, node):
if isinstance(node.cause, ast.Name) and node.cause.id == "None":
self.add(node, (3,3), "raise ... from None")
def visit_YieldFrom(self, node):
self.add(node, (3,3), "yield from")
def get_versions(source, filename=None):
"""Return information about the Python versions required for specific features.
The return value is a dictionary with keys as a version number as a tuple
(for example Python 3.1 is (3,1)) and the value are a list of features that
require the indicated Python version.
"""
tree = ast.parse(source, filename=filename)
checker = NodeChecker()
checker.visit(tree)
return checker.vers
def v33(source):
if sys.version_info >= (3, 3):
return qver(source)
else:
print("Not all features tested, run --test with Python 3.3", file=sys.stderr)
return (3, 3)
def qver(source):
"""Return the minimum Python version required to run a particular bit of code.
>>> qver('print("hello world")')
(3, 0)
>>> qver("import importlib")
(3, 1)
>>> qver("from importlib import x")
(3, 1)
>>> qver("import tkinter.ttk")
(3, 1)
>>> qver("from collections import Counter")
(3, 1)
>>> qver("collections.OrderedDict()")
(3, 1)
>>> qver("import functools\\n@functools.lru_cache()\\ndef f(x): x*x")
(3, 2)
>>> v33("yield from x")
(3, 3)
>>> v33("raise x from None")
(3, 3)
"""
return max(get_versions(source).keys())

View File

@@ -12,7 +12,7 @@
from ruamel.ordereddict import ordereddict
except:
try:
from collections import OrderedDict # nopyqver
from collections import OrderedDict
except ImportError:
from ordereddict import OrderedDict
# to get the right name import ... as ordereddict doesn't do that

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,136 +1,165 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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 __future__ import print_function
import re
import argparse
import errno
import sys
from six import StringIO
class ArgparseWriter(object):
class Command(object):
"""Parsed representation of a command from argparse.
This is a single command from an argparse parser. ``ArgparseWriter``
creates these and returns them from ``parse()``, and it passes one of
these to each call to ``format()`` so that we can take an action for
a single command.
Parts of a Command:
- prog: command name (str)
- description: command description (str)
- usage: command usage (str)
- positionals: list of positional arguments (list)
- optionals: list of optional arguments (list)
- subcommands: list of subcommand parsers (list)
"""
def __init__(self, prog, description, usage,
positionals, optionals, subcommands):
self.prog = prog
self.description = description
self.usage = usage
self.positionals = positionals
self.optionals = optionals
self.subcommands = subcommands
# NOTE: The only reason we subclass argparse.HelpFormatter is to get access
# to self._expand_help(), ArgparseWriter is not intended to be used as a
# formatter_class.
class ArgparseWriter(argparse.HelpFormatter):
"""Analyzes an argparse ArgumentParser for easy generation of help."""
def __init__(self, out=sys.stdout):
def __init__(self, prog, out=sys.stdout, aliases=False):
"""Initializes a new ArgparseWriter instance.
Parameters:
prog (str): the program name
out (file object): the file to write to
aliases (bool): whether or not to include subparsers for aliases
"""
super(ArgparseWriter, self).__init__(prog)
self.level = 0
self.prog = prog
self.out = out
self.aliases = aliases
def _write(self, parser, root=True, level=0):
def parse(self, parser, prog):
"""Parses the parser object and returns the relavent components.
Parameters:
parser (argparse.ArgumentParser): the parser
prog (str): the command name
Returns:
(Command) information about the command from the parser
"""
self.parser = parser
self.level = level
split_prog = parser.prog.split(' ')
split_prog[-1] = prog
prog = ' '.join(split_prog)
description = parser.description
fmt = parser._get_formatter()
actions = parser._actions
groups = parser._mutually_exclusive_groups
usage = fmt._format_usage(None, actions, groups, '').strip()
# allow root level to be flattened with rest of commands
if type(root) == int:
self.level = root
root = True
# go through actions and split them into optionals, positionals,
# Go through actions and split them into optionals, positionals,
# and subcommands
optionals = []
positionals = []
subcommands = []
for action in actions:
if action.option_strings:
optionals.append(action)
flags = action.option_strings
dest_flags = fmt._format_action_invocation(action)
help = self._expand_help(action) if action.help else ''
help = help.replace('\n', ' ')
optionals.append((flags, dest_flags, help))
elif isinstance(action, argparse._SubParsersAction):
for subaction in action._choices_actions:
subparser = action._name_parser_map[subaction.dest]
subcommands.append(subparser)
subcommands.append((subparser, subaction.dest))
# Look for aliases of the form 'name (alias, ...)'
if self.aliases:
match = re.match(r'(.*) \((.*)\)', subaction.metavar)
if match:
aliases = match.group(2).split(', ')
for alias in aliases:
subparser = action._name_parser_map[alias]
subcommands.append((subparser, alias))
else:
positionals.append(action)
args = fmt._format_action_invocation(action)
help = self._expand_help(action) if action.help else ''
help = help.replace('\n', ' ')
positionals.append((args, help))
groups = parser._mutually_exclusive_groups
fmt = parser._get_formatter()
description = parser.description
return Command(
prog, description, usage, positionals, optionals, subcommands)
def action_group(function, actions):
for action in actions:
arg = fmt._format_action_invocation(action)
help = action.help if action.help else ''
function(arg, re.sub('\n', ' ', help))
def format(self, cmd):
"""Returns the string representation of a single node in the
parser tree.
if root:
self.begin_command(parser.prog)
Override this in subclasses to define how each subcommand
should be displayed.
if description:
self.description(parser.description)
Parameters:
(Command): parsed information about a command or subcommand
usage = fmt._format_usage(None, actions, groups, '').strip()
self.usage(usage)
Returns:
str: the string representation of this subcommand
"""
raise NotImplementedError
if positionals:
self.begin_positionals()
action_group(self.positional, positionals)
self.end_positionals()
def _write(self, parser, prog, level=0):
"""Recursively writes a parser.
if optionals:
self.begin_optionals()
action_group(self.optional, optionals)
self.end_optionals()
Parameters:
parser (argparse.ArgumentParser): the parser
prog (str): the command name
level (int): the current level
"""
self.level = level
if subcommands:
self.begin_subcommands(subcommands)
for subparser in subcommands:
self._write(subparser, root=True, level=level + 1)
self.end_subcommands(subcommands)
cmd = self.parse(parser, prog)
self.out.write(self.format(cmd))
if root:
self.end_command(parser.prog)
for subparser, prog in cmd.subcommands:
self._write(subparser, prog, level=level + 1)
def write(self, parser, root=True):
def write(self, parser):
"""Write out details about an ArgumentParser.
Args:
parser (ArgumentParser): an ``argparse`` parser
root (bool or int): if bool, whether to include the root parser;
or ``1`` to flatten the root parser with first-level
subcommands
parser (argparse.ArgumentParser): the parser
"""
try:
self._write(parser, root, level=0)
self._write(parser, self.prog)
except IOError as e:
# swallow pipe errors
# Swallow pipe errors
# Raises IOError in Python 2 and BrokenPipeError in Python 3
if e.errno != errno.EPIPE:
raise
def begin_command(self, prog):
pass
def end_command(self, prog):
pass
def description(self, description):
pass
def usage(self, usage):
pass
def begin_positionals(self):
pass
def positional(self, name, help):
pass
def end_positionals(self):
pass
def begin_optionals(self):
pass
def optional(self, option, help):
pass
def end_optionals(self):
pass
def begin_subcommands(self, subcommands):
pass
def end_subcommands(self, subcommands):
pass
_rst_levels = ['=', '-', '^', '~', ':', '`']
@@ -138,66 +167,213 @@ def end_subcommands(self, subcommands):
class ArgparseRstWriter(ArgparseWriter):
"""Write argparse output as rst sections."""
def __init__(self, out=sys.stdout, rst_levels=_rst_levels,
strip_root_prog=True):
def __init__(self, prog, out=sys.stdout, aliases=False,
rst_levels=_rst_levels):
"""Create a new ArgparseRstWriter.
Args:
Parameters:
prog (str): program name
out (file object): file to write to
aliases (bool): whether or not to include subparsers for aliases
rst_levels (list of str): list of characters
for rst section headings
strip_root_prog (bool): if ``True``, strip the base command name
from subcommands in output
"""
super(ArgparseRstWriter, self).__init__(out)
super(ArgparseRstWriter, self).__init__(prog, out, aliases)
self.rst_levels = rst_levels
self.strip_root_prog = strip_root_prog
def line(self, string=''):
self.out.write('%s\n' % string)
def format(self, cmd):
string = StringIO()
string.write(self.begin_command(cmd.prog))
if cmd.description:
string.write(self.description(cmd.description))
string.write(self.usage(cmd.usage))
if cmd.positionals:
string.write(self.begin_positionals())
for args, help in cmd.positionals:
string.write(self.positional(args, help))
string.write(self.end_positionals())
if cmd.optionals:
string.write(self.begin_optionals())
for flags, dest_flags, help in cmd.optionals:
string.write(self.optional(dest_flags, help))
string.write(self.end_optionals())
if cmd.subcommands:
string.write(self.begin_subcommands(cmd.subcommands))
return string.getvalue()
def begin_command(self, prog):
self.line()
self.line('----')
self.line()
self.line('.. _%s:\n' % prog.replace(' ', '-'))
self.line('%s' % prog)
self.line(self.rst_levels[self.level] * len(prog) + '\n')
return """
----
.. _{0}:
{1}
{2}
""".format(prog.replace(' ', '-'), prog,
self.rst_levels[self.level] * len(prog))
def description(self, description):
self.line('%s\n' % description)
return description + '\n\n'
def usage(self, usage):
self.line('.. code-block:: console\n')
self.line(' %s\n' % usage)
return """\
.. code-block:: console
{0}
""".format(usage)
def begin_positionals(self):
self.line()
self.line('**Positional arguments**\n')
return '\n**Positional arguments**\n\n'
def positional(self, name, help):
self.line(name)
self.line(' %s\n' % help)
return """\
{0}
{1}
""".format(name, help)
def end_positionals(self):
return ''
def begin_optionals(self):
self.line()
self.line('**Optional arguments**\n')
return '\n**Optional arguments**\n\n'
def optional(self, opts, help):
self.line('``%s``' % opts)
self.line(' %s\n' % help)
return """\
``{0}``
{1}
""".format(opts, help)
def end_optionals(self):
return ''
def begin_subcommands(self, subcommands):
self.line()
self.line('**Subcommands**\n')
self.line('.. hlist::')
self.line(' :columns: 4\n')
string = """
**Subcommands**
for cmd in subcommands:
prog = cmd.prog
if self.strip_root_prog:
prog = re.sub(r'^[^ ]* ', '', prog)
.. hlist::
:columns: 4
self.line(' * :ref:`%s <%s>`'
% (prog, cmd.prog.replace(' ', '-')))
self.line()
"""
for cmd, _ in subcommands:
prog = re.sub(r'^[^ ]* ', '', cmd.prog)
string += ' * :ref:`{0} <{1}>`\n'.format(
prog, cmd.prog.replace(' ', '-'))
return string + '\n'
class ArgparseCompletionWriter(ArgparseWriter):
"""Write argparse output as shell programmable tab completion functions."""
def format(self, cmd):
"""Returns the string representation of a single node in the
parser tree.
Override this in subclasses to define how each subcommand
should be displayed.
Parameters:
(Command): parsed information about a command or subcommand
Returns:
str: the string representation of this subcommand
"""
assert cmd.optionals # we should always at least have -h, --help
assert not (cmd.positionals and cmd.subcommands) # one or the other
# We only care about the arguments/flags, not the help messages
positionals = []
if cmd.positionals:
positionals, _ = zip(*cmd.positionals)
optionals, _, _ = zip(*cmd.optionals)
subcommands = []
if cmd.subcommands:
_, subcommands = zip(*cmd.subcommands)
# Flatten lists of lists
optionals = [x for xx in optionals for x in xx]
return (self.start_function(cmd.prog) +
self.body(positionals, optionals, subcommands) +
self.end_function(cmd.prog))
def start_function(self, prog):
"""Returns the syntax needed to begin a function definition.
Parameters:
prog (str): the command name
Returns:
str: the function definition beginning
"""
name = prog.replace('-', '_').replace(' ', '_')
return '\n_{0}() {{'.format(name)
def end_function(self, prog=None):
"""Returns the syntax needed to end a function definition.
Parameters:
prog (str, optional): the command name
Returns:
str: the function definition ending
"""
return '}\n'
def body(self, positionals, optionals, subcommands):
"""Returns the body of the function.
Parameters:
positionals (list): list of positional arguments
optionals (list): list of optional arguments
subcommands (list): list of subcommand parsers
Returns:
str: the function body
"""
return ''
def positionals(self, positionals):
"""Returns the syntax for reporting positional arguments.
Parameters:
positionals (list): list of positional arguments
Returns:
str: the syntax for positional arguments
"""
return ''
def optionals(self, optionals):
"""Returns the syntax for reporting optional flags.
Parameters:
optionals (list): list of optional arguments
Returns:
str: the syntax for optional flags
"""
return ''
def subcommands(self, subcommands):
"""Returns the syntax for reporting subcommands.
Parameters:
subcommands (list): list of subcommand parsers
Returns:
str: the syntax for subcommand parsers
"""
return ''

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,6 +13,7 @@
import six
from .microarchitecture import generic_microarchitecture, targets
from .schema import targets_json
#: Mapping from operating systems to chain of commands
#: to obtain a dictionary of raw info on the current cpu
@@ -108,23 +109,39 @@ def sysctl(*args):
'model': sysctl('-n', 'machdep.cpu.model'),
'model name': sysctl('-n', 'machdep.cpu.brand_string')
}
# Super hacky way to deal with slight representation differences
# Would be better to somehow consider these "identical"
if 'sse4.1' in info['flags']:
info['flags'] += ' sse4_1'
if 'sse4.2' in info['flags']:
info['flags'] += ' sse4_2'
if 'avx1.0' in info['flags']:
info['flags'] += ' avx'
if 'clfsopt' in info['flags']:
info['flags'] += ' clflushopt'
if 'xsave' in info['flags']:
info['flags'] += ' xsavec xsaveopt'
return info
def adjust_raw_flags(info):
"""Adjust the flags detected on the system to homogenize
slightly different representations.
"""
# Flags detected on Darwin turned to their linux counterpart
flags = info.get('flags', [])
d2l = targets_json['conversions']['darwin_flags']
for darwin_flag, linux_flag in d2l.items():
if darwin_flag in flags:
info['flags'] += ' ' + linux_flag
def adjust_raw_vendor(info):
"""Adjust the vendor field to make it human readable"""
if 'CPU implementer' not in info:
return
# Mapping numeric codes to vendor (ARM). This list is a merge from
# different sources:
#
# https://github.com/karelzak/util-linux/blob/master/sys-utils/lscpu-arm.c
# https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile
# https://github.com/gcc-mirror/gcc/blob/master/gcc/config/aarch64/aarch64-cores.def
# https://patchwork.kernel.org/patch/10524949/
arm_vendors = targets_json['conversions']['arm_vendors']
arm_code = info['CPU implementer']
if arm_code in arm_vendors:
info['CPU implementer'] = arm_vendors[arm_code]
def raw_info_dictionary():
"""Returns a dictionary with information on the cpu of the current host.
@@ -139,6 +156,8 @@ def raw_info_dictionary():
warnings.warn(str(e))
if info:
adjust_raw_flags(info)
adjust_raw_vendor(info)
break
return info
@@ -223,3 +242,15 @@ def compatibility_check_for_x86_64(info, target):
return (target == arch_root or arch_root in target.ancestors) \
and (target.vendor == vendor or target.vendor == 'generic') \
and target.features.issubset(features)
@compatibility_check(architecture_family='aarch64')
def compatibility_check_for_aarch64(info, target):
basename = 'aarch64'
features = set(info.get('Features', '').split())
vendor = info.get('CPU implementer', 'generic')
arch_root = targets[basename]
return (target == arch_root or arch_root in target.ancestors) \
and (target.vendor == vendor or target.vendor == 'generic') \
and target.features.issubset(features)

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -8,7 +8,7 @@
import warnings
try:
from collections.abc import Sequence
from collections.abc import Sequence # novm
except ImportError:
from collections import Sequence

View File

@@ -64,13 +64,13 @@
"clang": [
{
"versions": "0.0.0-apple:",
"family": "x86-64",
"flags": "-march={family}"
"name": "x86-64",
"flags": "-march={name}"
},
{
"versions": ":",
"family": "x86-64",
"flags": "-march={family} -mcpu=generic"
"name": "x86-64",
"flags": "-march={name} -mtune=generic"
}
],
"intel": {
@@ -96,8 +96,7 @@
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -122,8 +121,7 @@
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -157,8 +155,7 @@
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -188,8 +185,7 @@
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -227,8 +223,7 @@
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": [
{
@@ -274,8 +269,7 @@
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": [
{
@@ -326,8 +320,7 @@
],
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": [
{
@@ -373,8 +366,7 @@
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "18.0:",
@@ -416,8 +408,7 @@
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "18.0:",
@@ -463,8 +454,7 @@
"clang": {
"versions": "3.9:",
"name": "knl",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "18.0:",
@@ -515,8 +505,7 @@
"clang": {
"versions": "3.9:",
"name": "skylake-avx512",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "18.0:",
@@ -568,8 +557,7 @@
},
"clang": {
"versions": "3.9:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "18.0:",
@@ -609,7 +597,7 @@
"avx512bw",
"avx512dq",
"avx512cd",
"avx512vnni"
"avx512_vnni"
],
"compilers": {
"gcc": {
@@ -618,8 +606,7 @@
},
"clang": {
"versions": "8.0:",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "19.0:",
@@ -685,13 +672,11 @@
{
"versions": "7.0:",
"name": "icelake-client",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
{
"versions": "6.0:6.9",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
}
],
"intel": {
@@ -723,8 +708,7 @@
"clang": {
"versions": "3.9:",
"name": "amdfam10",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -761,8 +745,7 @@
"clang": {
"versions": "3.9:",
"name": "bdver1",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -803,8 +786,7 @@
"clang": {
"versions": "3.9:",
"name": "bdver2",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -846,8 +828,7 @@
"clang": {
"versions": "3.9:",
"name": "bdver3",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -892,8 +873,7 @@
"clang": {
"versions": "3.9:",
"name": "bdver4",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -942,8 +922,7 @@
"clang": {
"versions": "4.0:",
"name": "znver1",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -993,8 +972,7 @@
"clang": {
"versions": "9.0:",
"name": "znver2",
"family": "x86-64",
"flags": "-march={family} -mcpu={name}"
"flags": "-march={name} -mtune={name}"
},
"intel": {
"versions": "16.0:",
@@ -1016,8 +994,7 @@
},
"clang": {
"versions": ":",
"family": "ppc64",
"flags": "-march={family} -mcpu=generic"
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1033,9 +1010,7 @@
},
"clang": {
"versions": "3.9:",
"family": "ppc64",
"name": "pwr7",
"flags": "-march={family} -mcpu={name}"
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1058,9 +1033,7 @@
],
"clang": {
"versions": "3.9:",
"family": "ppc64",
"name": "pwr8",
"flags": "-march={family} -mcpu={name}"
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1076,9 +1049,7 @@
},
"clang": {
"versions": "3.9:",
"family": "ppc64",
"name": "pwr9",
"flags": "-march={family} -mcpu={name}"
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1094,8 +1065,7 @@
},
"clang": {
"versions": ":",
"family": "ppc64le",
"flags": "-march={family} -mcpu=generic"
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1121,8 +1091,8 @@
"clang": {
"versions": "3.9:",
"family": "ppc64le",
"name": "pwr8",
"flags": "-march={family} -mcpu={name}"
"name": "power8",
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1140,8 +1110,8 @@
"clang": {
"versions": "3.9:",
"family": "ppc64le",
"name": "pwr9",
"flags": "-march={family} -mcpu={name}"
"name": "power9",
"flags": "-mcpu={name} -mtune={name}"
}
}
},
@@ -1156,11 +1126,113 @@
},
"clang": {
"versions": ":",
"family": "aarch64",
"flags": "-march={family} -mcpu=generic"
"flags": "-march=armv8-a -mtune=generic"
}
}
},
"thunderx2": {
"from": "aarch64",
"vendor": "Cavium",
"features": [
"fp",
"asimd",
"evtstrm",
"aes",
"pmull",
"sha1",
"sha2",
"crc32",
"atomics",
"cpuid",
"asimdrdm"
],
"compilers": {
"gcc": [
{
"versions": "4.8:4.8.9",
"flags": "-march=armv8-a"
},
{
"versions": "4.9:5.9",
"flags": "-march=armv8-a+crc+crypto"
},
{
"versions": "6:6.9",
"flags": "-march=armv8.1-a+crc+crypto"
},
{
"versions": "7:",
"flags": "-mcpu=thunderx2t99"
}
],
"clang": [
{
"versions": "3.9:4.9",
"flags": "-march=armv8.1-a+crc+crypto"
},
{
"versions": "5:",
"flags": "-mcpu=thunderx2t99"
}
]
}
},
"a64fx": {
"from": "aarch64",
"vendor": "Fujitsu",
"features": [
"fp",
"asimd",
"evtstrm",
"aes",
"pmull",
"sha1",
"sha2",
"crc32",
"atomics",
"cpuid",
"asimdrdm",
"fphp",
"asimdhp",
"fcma",
"dcpop",
"sve"
],
"compilers": {
"gcc": [
{
"versions": "4.8:4.8.9",
"flags": "-march=armv8-a"
},
{
"versions": "4.9:5.9",
"flags": "-march=armv8-a+crc+crypto"
},
{
"versions": "6:6.9",
"flags": "-march=armv8.1-a+crc+crypto"
},
{
"versions": "7:7.9",
"flags": "-march=armv8.2-a+crc+crypto+fp16"
},
{
"versions": "8:",
"flags": "-march=armv8.2-a+crc+aes+sha2+fp16+sve -msve-vector-bits=512"
}
],
"clang": [
{
"versions": "3.9:4.9",
"flags": "-march=armv8.2-a+crc+crypto+fp16"
},
{
"versions": "5:",
"flags": "-march=armv8.2-a+crc+crypto+fp16+sve"
}
]
}
},
"arm": {
"from": null,
"vendor": "generic",
@@ -1226,6 +1298,20 @@
"ppc64"
]
},
"vsx": {
"reason": "VSX alitvec extensions are supported by PowerISA from v2.06 (Power7+), but might not be listed in features",
"families": [
"ppc64le",
"ppc64"
]
},
"fma": {
"reason": "FMA has been supported by PowerISA since Power1, but might not be listed in features",
"families": [
"ppc64le",
"ppc64"
]
},
"sse4.1": {
"reason": "permits to refer to sse4_1 also as sse4.1",
"any_of": [
@@ -1244,5 +1330,34 @@
"aarch64"
]
}
},
"conversions": {
"description": "Conversions that map some platform specific values to canonical values",
"arm_vendors": {
"0x41": "ARM",
"0x42": "Broadcom",
"0x43": "Cavium",
"0x44": "DEC",
"0x46": "Fujitsu",
"0x48": "HiSilicon",
"0x49": "Infineon Technologies AG",
"0x4d": "Motorola",
"0x4e": "Nvidia",
"0x50": "APM",
"0x51": "Qualcomm",
"0x53": "Samsung",
"0x56": "Marvell",
"0x61": "Apple",
"0x66": "Faraday",
"0x68": "HXT",
"0x69": "Intel"
},
"darwin_flags": {
"sse4.1": "sse4_1",
"sse4.2": "sse4_2",
"avx1.0": "avx",
"clfsopt": "clflushopt",
"xsave": "xsavec xsaveopt"
}
}
}

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -6,7 +6,7 @@
import os.path
try:
from collections.abc import MutableMapping
from collections.abc import MutableMapping # novm
except ImportError:
from collections import MutableMapping
@@ -72,7 +72,21 @@
'additionalProperties': False
}
},
},
'conversions': {
'type': 'object',
'properties': {
'description': {
'type': 'string'
},
'arm_vendors': {
'type': 'object',
},
'darwin_flags': {
'type': 'object'
}
},
'additionalProperties': False
}
}

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -201,7 +201,6 @@ def groupid_to_group(x):
output_file.writelines(input_file.readlines())
except BaseException:
os.remove(tmp_filename)
# clean up the original file on failure.
shutil.move(backup_filename, filename)
raise
@@ -457,7 +456,7 @@ def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False):
if os.path.isdir(s):
mkdirp(d)
else:
shutil.copyfile(s, d)
shutil.copy2(s, d)
if _permissions:
set_install_permissions(d)
@@ -917,10 +916,8 @@ def remove_if_dead_link(path):
Parameters:
path (str): The potential dead link
"""
if os.path.islink(path):
real_path = os.path.realpath(path)
if not os.path.exists(real_path):
os.unlink(path)
if os.path.islink(path) and not os.path.exists(path):
os.unlink(path)
def remove_linked_tree(path):
@@ -1156,7 +1153,9 @@ class HeaderList(FileList):
# Make sure to only match complete words, otherwise path components such
# as "xinclude" will cause false matches.
include_regex = re.compile(r'(.*)(\binclude\b)(.*)')
# Avoid matching paths such as <prefix>/include/something/detail/include,
# e.g. in the CUDA Toolkit which ships internal libc++ headers.
include_regex = re.compile(r'(.*?)(\binclude\b)(.*)')
def __init__(self, files):
super(HeaderList, self).__init__(files)

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -19,12 +19,6 @@
ignore_modules = [r'^\.#', '~$']
class classproperty(property):
"""classproperty decorator: like property but for classmethods."""
def __get__(self, cls, owner):
return self.fget.__get__(None, owner)()
def index_by(objects, *funcs):
"""Create a hierarchy of dictionaries by splitting the supplied
set of objects on unique values of the supplied functions.
@@ -612,12 +606,14 @@ def load_module_from_file(module_name, module_path):
"""
if sys.version_info[0] == 3 and sys.version_info[1] >= 5:
import importlib.util
spec = importlib.util.spec_from_file_location(module_name, module_path)
module = importlib.util.module_from_spec(spec)
spec = importlib.util.spec_from_file_location( # novm
module_name, module_path)
module = importlib.util.module_from_spec(spec) # novm
spec.loader.exec_module(module)
elif sys.version_info[0] == 3 and sys.version_info[1] < 5:
import importlib.machinery
loader = importlib.machinery.SourceFileLoader(module_name, module_path)
loader = importlib.machinery.SourceFileLoader( # novm
module_name, module_path)
module = loader.load_module()
elif sys.version_info[0] == 2:
import imp

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -8,14 +8,32 @@
import errno
import time
import socket
from datetime import datetime
import llnl.util.tty as tty
import spack.util.string
__all__ = ['Lock', 'LockTransaction', 'WriteTransaction', 'ReadTransaction',
'LockError', 'LockTimeoutError',
'LockPermissionError', 'LockROFileError', 'CantCreateLockError']
#: Mapping of supported locks to description
lock_type = {fcntl.LOCK_SH: 'read', fcntl.LOCK_EX: 'write'}
#: A useful replacement for functions that should return True when not provided
#: for example.
true_fn = lambda: True
def _attempts_str(wait_time, nattempts):
# Don't print anything if we succeeded on the first try
if nattempts <= 1:
return ''
attempts = spack.util.string.plural(nattempts, 'attempt')
return ' after {0:0.2f}s and {1}'.format(wait_time, attempts)
class Lock(object):
"""This is an implementation of a filesystem lock using Python's lockf.
@@ -31,8 +49,8 @@ class Lock(object):
maintain multiple locks on the same file.
"""
def __init__(self, path, start=0, length=0, debug=False,
default_timeout=None):
def __init__(self, path, start=0, length=0, default_timeout=None,
debug=False, desc=''):
"""Construct a new lock on the file at ``path``.
By default, the lock applies to the whole file. Optionally,
@@ -43,6 +61,16 @@ def __init__(self, path, start=0, length=0, debug=False,
not currently expose the ``whence`` parameter -- ``whence`` is
always ``os.SEEK_SET`` and ``start`` is always evaluated from the
beginning of the file.
Args:
path (str): path to the lock
start (int): optional byte offset at which the lock starts
length (int): optional number of bytes to lock
default_timeout (int): number of seconds to wait for lock attempts,
where None means to wait indefinitely
debug (bool): debug mode specific to locking
desc (str): optional debug message lock description, which is
helpful for distinguishing between different Spack locks.
"""
self.path = path
self._file = None
@@ -56,6 +84,9 @@ def __init__(self, path, start=0, length=0, debug=False,
# enable debug mode
self.debug = debug
# optional debug description
self.desc = ' ({0})'.format(desc) if desc else ''
# If the user doesn't set a default timeout, or if they choose
# None, 0, etc. then lock attempts will not time out (unless the
# user sets a timeout for each attempt)
@@ -89,22 +120,33 @@ def _poll_interval_generator(_wait_times=None):
num_requests += 1
yield wait_time
def __repr__(self):
"""Formal representation of the lock."""
rep = '{0}('.format(self.__class__.__name__)
for attr, value in self.__dict__.items():
rep += '{0}={1}, '.format(attr, value.__repr__())
return '{0})'.format(rep.strip(', '))
def __str__(self):
"""Readable string (with key fields) of the lock."""
location = '{0}[{1}:{2}]'.format(self.path, self._start, self._length)
timeout = 'timeout={0}'.format(self.default_timeout)
activity = '#reads={0}, #writes={1}'.format(self._reads, self._writes)
return '({0}, {1}, {2})'.format(location, timeout, activity)
def _lock(self, op, timeout=None):
"""This takes a lock using POSIX locks (``fcntl.lockf``).
The lock is implemented as a spin lock using a nonblocking call
to ``lockf()``.
On acquiring an exclusive lock, the lock writes this process's
pid and host to the lock file, in case the holding process needs
to be killed later.
If the lock times out, it raises a ``LockError``. If the lock is
successfully acquired, the total wait time and the number of attempts
is returned.
"""
assert op in (fcntl.LOCK_SH, fcntl.LOCK_EX)
assert op in lock_type
self._log_acquiring('{0} LOCK'.format(lock_type[op].upper()))
timeout = timeout or self.default_timeout
# Create file and parent directories if they don't exist.
@@ -132,6 +174,9 @@ def _lock(self, op, timeout=None):
# If the file were writable, we'd have opened it 'r+'
raise LockROFileError(self.path)
tty.debug("{0} locking [{1}:{2}]: timeout {3} sec"
.format(lock_type[op], self._start, self._length, timeout))
poll_intervals = iter(Lock._poll_interval_generator())
start_time = time.time()
num_attempts = 0
@@ -143,17 +188,21 @@ def _lock(self, op, timeout=None):
time.sleep(next(poll_intervals))
# TBD: Is an extra attempt after timeout needed/appropriate?
num_attempts += 1
if self._poll_lock(op):
total_wait_time = time.time() - start_time
return total_wait_time, num_attempts
raise LockTimeoutError("Timed out waiting for lock.")
raise LockTimeoutError("Timed out waiting for a {0} lock."
.format(lock_type[op]))
def _poll_lock(self, op):
"""Attempt to acquire the lock in a non-blocking manner. Return whether
the locking attempt succeeds
"""
assert op in lock_type
try:
# Try to get the lock (will raise if not available.)
fcntl.lockf(self._file, op | fcntl.LOCK_NB,
@@ -163,6 +212,9 @@ def _poll_lock(self, op):
if self.debug:
# All locks read the owner PID and host
self._read_debug_data()
tty.debug('{0} locked {1} [{2}:{3}] (owner={4})'
.format(lock_type[op], self.path,
self._start, self._length, self.pid))
# Exclusive locks write their PID/host
if op == fcntl.LOCK_EX:
@@ -171,12 +223,12 @@ def _poll_lock(self, op):
return True
except IOError as e:
if e.errno in (errno.EAGAIN, errno.EACCES):
# EAGAIN and EACCES == locked by another process
pass
else:
# EAGAIN and EACCES == locked by another process (so try again)
if e.errno not in (errno.EAGAIN, errno.EACCES):
raise
return False
def _ensure_parent_directory(self):
parent = os.path.dirname(self.path)
@@ -231,6 +283,8 @@ def _unlock(self):
self._length, self._start, os.SEEK_SET)
self._file.close()
self._file = None
self._reads = 0
self._writes = 0
def acquire_read(self, timeout=None):
"""Acquires a recursive, shared lock for reading.
@@ -246,15 +300,14 @@ def acquire_read(self, timeout=None):
timeout = timeout or self.default_timeout
if self._reads == 0 and self._writes == 0:
self._debug(
'READ LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]'
.format(self))
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout)
self._acquired_debug('READ LOCK', wait_time, nattempts)
self._reads += 1
# Log if acquired, which includes counts when verbose
self._log_acquired('READ LOCK', wait_time, nattempts)
return True
else:
# Increment the read count for nested lock tracking
self._reads += 1
return False
@@ -272,23 +325,90 @@ def acquire_write(self, timeout=None):
timeout = timeout or self.default_timeout
if self._writes == 0:
self._debug(
'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]'
.format(self))
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout)
self._acquired_debug('WRITE LOCK', wait_time, nattempts)
self._writes += 1
return True
# Log if acquired, which includes counts when verbose
self._log_acquired('WRITE LOCK', wait_time, nattempts)
# return True only if we weren't nested in a read lock.
# TODO: we may need to return two values: whether we got
# the write lock, and whether this is acquiring a read OR
# write lock for the first time. Now it returns the latter.
return self._reads == 0
else:
# Increment the write count for nested lock tracking
self._writes += 1
return False
def release_read(self):
def is_write_locked(self):
"""Check if the file is write locked
Return:
(bool): ``True`` if the path is write locked, otherwise, ``False``
"""
try:
self.acquire_read()
# If we have a read lock then no other process has a write lock.
self.release_read()
except LockTimeoutError:
# Another process is holding a write lock on the file
return True
return False
def downgrade_write_to_read(self, timeout=None):
"""
Downgrade from an exclusive write lock to a shared read.
Raises:
LockDowngradeError: if this is an attempt at a nested transaction
"""
timeout = timeout or self.default_timeout
if self._writes == 1 and self._reads == 0:
self._log_downgrading()
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout)
self._reads = 1
self._writes = 0
self._log_downgraded(wait_time, nattempts)
else:
raise LockDowngradeError(self.path)
def upgrade_read_to_write(self, timeout=None):
"""
Attempts to upgrade from a shared read lock to an exclusive write.
Raises:
LockUpgradeError: if this is an attempt at a nested transaction
"""
timeout = timeout or self.default_timeout
if self._reads == 1 and self._writes == 0:
self._log_upgrading()
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout)
self._reads = 0
self._writes = 1
self._log_upgraded(wait_time, nattempts)
else:
raise LockUpgradeError(self.path)
def release_read(self, release_fn=None):
"""Releases a read lock.
Returns True if the last recursive lock was released, False if
there are still outstanding locks.
Arguments:
release_fn (callable): function to call *before* the last recursive
lock (read or write) is released.
If the last recursive lock will be released, then this will call
release_fn and return its result (if provided), or return True
(if release_fn was not provided).
Otherwise, we are still nested inside some other lock, so do not
call the release_fn and, return False.
Does limited correctness checking: if a read lock is released
when none are held, this will raise an assertion error.
@@ -296,81 +416,160 @@ def release_read(self):
"""
assert self._reads > 0
locktype = 'READ LOCK'
if self._reads == 1 and self._writes == 0:
self._debug(
'READ LOCK: {0.path}[{0._start}:{0._length}] [Released]'
.format(self))
self._log_releasing(locktype)
# we need to call release_fn before releasing the lock
release_fn = release_fn or true_fn
result = release_fn()
self._unlock() # can raise LockError.
self._reads -= 1
return True
self._reads = 0
self._log_released(locktype)
return result
else:
self._reads -= 1
return False
def release_write(self):
def release_write(self, release_fn=None):
"""Releases a write lock.
Returns True if the last recursive lock was released, False if
there are still outstanding locks.
Arguments:
release_fn (callable): function to call before the last recursive
write is released.
If the last recursive *write* lock will be released, then this
will call release_fn and return its result (if provided), or
return True (if release_fn was not provided). Otherwise, we are
still nested inside some other write lock, so do not call the
release_fn, and return False.
Does limited correctness checking: if a read lock is released
when none are held, this will raise an assertion error.
"""
assert self._writes > 0
release_fn = release_fn or true_fn
locktype = 'WRITE LOCK'
if self._writes == 1 and self._reads == 0:
self._debug(
'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Released]'
.format(self))
self._log_releasing(locktype)
# we need to call release_fn before releasing the lock
result = release_fn()
self._unlock() # can raise LockError.
self._writes -= 1
return True
self._writes = 0
self._log_released(locktype)
return result
else:
self._writes -= 1
return False
# when the last *write* is released, we call release_fn here
# instead of immediately before releasing the lock.
if self._writes == 0:
return release_fn()
else:
return False
def _debug(self, *args):
tty.debug(*args)
def _acquired_debug(self, lock_type, wait_time, nattempts):
attempts_format = 'attempt' if nattempts == 1 else 'attempt'
if nattempts > 1:
acquired_attempts_format = ' after {0:0.2f}s and {1:d} {2}'.format(
wait_time, nattempts, attempts_format)
else:
# Dont print anything if we succeeded immediately
acquired_attempts_format = ''
self._debug(
'{0}: {1.path}[{1._start}:{1._length}] [Acquired{2}]'
.format(lock_type, self, acquired_attempts_format))
def _get_counts_desc(self):
return '(reads {0}, writes {1})'.format(self._reads, self._writes) \
if tty.is_verbose() else ''
def _log_acquired(self, locktype, wait_time, nattempts):
attempts_part = _attempts_str(wait_time, nattempts)
now = datetime.now()
desc = 'Acquired at %s' % now.strftime("%H:%M:%S.%f")
self._debug(self._status_msg(locktype, '{0}{1}'.
format(desc, attempts_part)))
def _log_acquiring(self, locktype):
self._debug2(self._status_msg(locktype, 'Acquiring'))
def _log_downgraded(self, wait_time, nattempts):
attempts_part = _attempts_str(wait_time, nattempts)
now = datetime.now()
desc = 'Downgraded at %s' % now.strftime("%H:%M:%S.%f")
self._debug(self._status_msg('READ LOCK', '{0}{1}'
.format(desc, attempts_part)))
def _log_downgrading(self):
self._debug2(self._status_msg('WRITE LOCK', 'Downgrading'))
def _log_released(self, locktype):
now = datetime.now()
desc = 'Released at %s' % now.strftime("%H:%M:%S.%f")
self._debug(self._status_msg(locktype, desc))
def _log_releasing(self, locktype):
self._debug2(self._status_msg(locktype, 'Releasing'))
def _log_upgraded(self, wait_time, nattempts):
attempts_part = _attempts_str(wait_time, nattempts)
now = datetime.now()
desc = 'Upgraded at %s' % now.strftime("%H:%M:%S.%f")
self._debug(self._status_msg('WRITE LOCK', '{0}{1}'.
format(desc, attempts_part)))
def _log_upgrading(self):
self._debug2(self._status_msg('READ LOCK', 'Upgrading'))
def _status_msg(self, locktype, status):
status_desc = '[{0}] {1}'.format(status, self._get_counts_desc())
return '{0}{1.desc}: {1.path}[{1._start}:{1._length}] {2}'.format(
locktype, self, status_desc)
def _debug2(self, *args):
# TODO: Easy place to make a single, temporary change to the
# TODO: debug level associated with the more detailed messages.
# TODO:
# TODO: Someday it would be great if we could switch this to
# TODO: another level, perhaps _between_ debug and verbose, or
# TODO: some other form of filtering so the first level of
# TODO: debugging doesn't have to generate these messages. Using
# TODO: verbose here did not work as expected because tests like
# TODO: test_spec_json will write the verbose messages to the
# TODO: output that is used to check test correctness.
tty.debug(*args)
class LockTransaction(object):
"""Simple nested transaction context manager that uses a file lock.
This class can trigger actions when the lock is acquired for the
first time and released for the last.
Arguments:
lock (Lock): underlying lock for this transaction to be accquired on
enter and released on exit
acquire (callable or contextmanager): function to be called after lock
is acquired, or contextmanager to enter after acquire and leave
before release.
release (callable): function to be called before release. If
``acquire`` is a contextmanager, this will be called *after*
exiting the nexted context and before the lock is released.
timeout (float): number of seconds to set for the timeout when
accquiring the lock (default no timeout)
If the ``acquire_fn`` returns a value, it is used as the return value for
``__enter__``, allowing it to be passed as the ``as`` argument of a
``with`` statement.
If ``acquire_fn`` returns a context manager, *its* ``__enter__`` function
will be called in ``__enter__`` after ``acquire_fn``, and its ``__exit__``
funciton will be called before ``release_fn`` in ``__exit__``, allowing you
to nest a context manager to be used along with the lock.
will be called after the lock is acquired, and its ``__exit__`` funciton
will be called before ``release_fn`` in ``__exit__``, allowing you to
nest a context manager inside this one.
Timeout for lock is customizable.
"""
def __init__(self, lock, acquire_fn=None, release_fn=None,
timeout=None):
def __init__(self, lock, acquire=None, release=None, timeout=None):
self._lock = lock
self._timeout = timeout
self._acquire_fn = acquire_fn
self._release_fn = release_fn
self._acquire_fn = acquire
self._release_fn = release
self._as = None
def __enter__(self):
@@ -383,13 +582,18 @@ def __enter__(self):
def __exit__(self, type, value, traceback):
suppress = False
if self._exit():
if self._as and hasattr(self._as, '__exit__'):
if self._as.__exit__(type, value, traceback):
suppress = True
if self._release_fn:
if self._release_fn(type, value, traceback):
suppress = True
def release_fn():
if self._release_fn is not None:
return self._release_fn(type, value, traceback)
if self._as and hasattr(self._as, '__exit__'):
if self._as.__exit__(type, value, traceback):
suppress = True
if self._exit(release_fn):
suppress = True
return suppress
@@ -398,8 +602,8 @@ class ReadTransaction(LockTransaction):
def _enter(self):
return self._lock.acquire_read(self._timeout)
def _exit(self):
return self._lock.release_read()
def _exit(self, release_fn):
return self._lock.release_read(release_fn)
class WriteTransaction(LockTransaction):
@@ -407,18 +611,36 @@ class WriteTransaction(LockTransaction):
def _enter(self):
return self._lock.acquire_write(self._timeout)
def _exit(self):
return self._lock.release_write()
def _exit(self, release_fn):
return self._lock.release_write(release_fn)
class LockError(Exception):
"""Raised for any errors related to locks."""
class LockDowngradeError(LockError):
"""Raised when unable to downgrade from a write to a read lock."""
def __init__(self, path):
msg = "Cannot downgrade lock from write to read on file: %s" % path
super(LockDowngradeError, self).__init__(msg)
class LockLimitError(LockError):
"""Raised when exceed maximum attempts to acquire a lock."""
class LockTimeoutError(LockError):
"""Raised when an attempt to acquire a lock times out."""
class LockUpgradeError(LockError):
"""Raised when unable to upgrade from a read to a write lock."""
def __init__(self, path):
msg = "Cannot upgrade lock from read to write on file: %s" % path
super(LockUpgradeError, self).__init__(msg)
class LockPermissionError(LockError):
"""Raised when there are permission issues with a lock."""

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -135,7 +135,9 @@ def process_stacktrace(countback):
def get_timestamp(force=False):
"""Get a string timestamp"""
if _debug or _timestamp or force:
return datetime.now().strftime("[%Y-%m-%d-%H:%M:%S.%f] ")
# Note inclusion of the PID is useful for parallel builds.
return '[{0}, {1}] '.format(
datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f"), os.getpid())
else:
return ''

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -199,10 +199,16 @@ def colify(elts, **options):
def colify_table(table, **options):
"""Version of ``colify()`` for data expressed in rows, (list of lists).
Same as regular colify but takes a list of lists, where each
sub-list must be the same length, and each is interpreted as a
row in a table. Regular colify displays a sequential list of
values in columns.
Same as regular colify but:
1. This takes a list of lists, where each sub-list must be the
same length, and each is interpreted as a row in a table.
Regular colify displays a sequential list of values in columns.
2. Regular colify will always print with 1 column when the output
is not a tty. This will always print with same dimensions of
the table argument.
"""
if table is None:
raise TypeError("Can't call colify_table on NoneType")
@@ -220,6 +226,9 @@ def transpose():
raise ValueError("Cannot override columsn in colify_table.")
options['cols'] = columns
# don't reduce to 1 column for non-tty
options['tty'] = True
colify(transpose(), **options)

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,12 +13,18 @@
import select
import sys
import traceback
import signal
from contextlib import contextmanager
from six import string_types
from six import StringIO
import llnl.util.tty as tty
try:
import termios
except ImportError:
termios = None
# Use this to strip escape sequences
_escape = re.compile(r'\x1b[^m]*m|\x1b\[?1034h')
@@ -31,12 +37,26 @@
control = re.compile('(\x11\n|\x13\n)')
@contextmanager
def background_safe():
signal.signal(signal.SIGTTOU, signal.SIG_IGN)
yield
signal.signal(signal.SIGTTOU, signal.SIG_DFL)
def _is_background_tty():
"""Return True iff this process is backgrounded and stdout is a tty"""
if sys.stdout.isatty():
return os.getpgrp() != os.tcgetpgrp(sys.stdout.fileno())
return False # not writing to tty, not background
def _strip(line):
"""Strip color and control characters from a line."""
return _escape.sub('', line)
class keyboard_input(object):
class _keyboard_input(object):
"""Context manager to disable line editing and echoing.
Use this with ``sys.stdin`` for keyboard input, e.g.::
@@ -81,32 +101,30 @@ def __enter__(self):
if not self.stream or not self.stream.isatty():
return
try:
# If this fails, self.old_cfg will remain None
import termios
# If this fails, self.old_cfg will remain None
if termios and not _is_background_tty():
# save old termios settings
fd = self.stream.fileno()
self.old_cfg = termios.tcgetattr(fd)
old_cfg = termios.tcgetattr(self.stream)
# create new settings with canonical input and echo
# disabled, so keypresses are immediate & don't echo.
self.new_cfg = termios.tcgetattr(fd)
self.new_cfg[3] &= ~termios.ICANON
self.new_cfg[3] &= ~termios.ECHO
try:
# create new settings with canonical input and echo
# disabled, so keypresses are immediate & don't echo.
self.new_cfg = termios.tcgetattr(self.stream)
self.new_cfg[3] &= ~termios.ICANON
self.new_cfg[3] &= ~termios.ECHO
# Apply new settings for terminal
termios.tcsetattr(fd, termios.TCSADRAIN, self.new_cfg)
# Apply new settings for terminal
termios.tcsetattr(self.stream, termios.TCSADRAIN, self.new_cfg)
self.old_cfg = old_cfg
except Exception:
pass # some OS's do not support termios, so ignore
except Exception:
pass # some OS's do not support termios, so ignore
def __exit__(self, exc_type, exception, traceback):
"""If termios was avaialble, restore old settings."""
if self.old_cfg:
import termios
termios.tcsetattr(
self.stream.fileno(), termios.TCSADRAIN, self.old_cfg)
with background_safe(): # change it back even if backgrounded now
termios.tcsetattr(self.stream, termios.TCSADRAIN, self.old_cfg)
class Unbuffered(object):
@@ -426,45 +444,63 @@ def _writer_daemon(self, stdin):
istreams = [in_pipe, stdin] if stdin else [in_pipe]
log_file = self.log_file
def handle_write(force_echo):
# Handle output from the with block process.
# If we arrive here it means that in_pipe was
# ready for reading : it should never happen that
# line is false-ish
line = in_pipe.readline()
if not line:
return (True, force_echo) # break while loop
# find control characters and strip them.
controls = control.findall(line)
line = re.sub(control, '', line)
# Echo to stdout if requested or forced
if echo or force_echo:
try:
if termios:
conf = termios.tcgetattr(sys.stdout)
tostop = conf[3] & termios.TOSTOP
else:
tostop = True
except Exception:
tostop = True
if not (tostop and _is_background_tty()):
sys.stdout.write(line)
sys.stdout.flush()
# Stripped output to log file.
log_file.write(_strip(line))
log_file.flush()
if xon in controls:
force_echo = True
if xoff in controls:
force_echo = False
return (False, force_echo)
try:
with keyboard_input(stdin):
with _keyboard_input(stdin):
while True:
# No need to set any timeout for select.select
# Wait until a key press or an event on in_pipe.
rlist, _, _ = select.select(istreams, [], [])
# Allow user to toggle echo with 'v' key.
# Currently ignores other chars.
if stdin in rlist:
# only read stdin if we're in the foreground
if stdin in rlist and not _is_background_tty():
if stdin.read(1) == 'v':
echo = not echo
# Handle output from the with block process.
if in_pipe in rlist:
# If we arrive here it means that in_pipe was
# ready for reading : it should never happen that
# line is false-ish
line = in_pipe.readline()
if not line:
break # EOF
br, fe = handle_write(force_echo)
force_echo = fe
if br:
break
# find control characters and strip them.
controls = control.findall(line)
line = re.sub(control, '', line)
# Echo to stdout if requested or forced
if echo or force_echo:
sys.stdout.write(line)
sys.stdout.flush()
# Stripped output to log file.
log_file.write(_strip(line))
log_file.flush()
if xon in controls:
force_echo = True
if xoff in controls:
force_echo = False
except BaseException:
tty.error("Exception occurred in writer daemon!")
traceback.print_exc()

View File

@@ -1,11 +1,11 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
#: major, minor, patch version for Spack, in a tuple
spack_version_info = (0, 13, 2)
spack_version_info = (0, 14, 1)
#: String containing Spack version joined with .'s
spack_version = '.'.join(str(v) for v in spack_version_info)

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -69,6 +69,7 @@
import spack.compiler
import spack.paths
import spack.error as serr
import spack.util.executable
import spack.version
from spack.util.naming import mod_to_class
from spack.util.spack_yaml import syaml_dict
@@ -214,7 +215,11 @@ def optimization_flags(self, compiler):
import spack.spec
if isinstance(compiler, spack.spec.CompilerSpec):
compiler = spack.compilers.compilers_for_spec(compiler).pop()
compiler_version = compiler.cc_version(compiler.cc)
try:
compiler_version = compiler.cc_version(compiler.cc)
except spack.util.executable.ProcessError as e:
# log this and just return compiler.version instead
tty.debug(str(e))
return self.microarchitecture.optimization_flags(
compiler.name, str(compiler_version)
@@ -351,10 +356,10 @@ def _cmp_key(self):
return (self.name, self.version)
def to_dict(self):
return {
'name': self.name,
'version': self.version
}
return syaml_dict([
('name', self.name),
('version', self.version)
])
@key_ordering
@@ -436,6 +441,7 @@ def from_dict(d):
return arch_for_spec(spec)
@memoized
def get_platform(platform_name):
"""Returns a platform object that corresponds to the given name."""
platform_list = all_platforms()

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -18,12 +18,12 @@
from six.moves.urllib.error import URLError
import llnl.util.tty as tty
from llnl.util.filesystem import mkdirp, install_tree
from llnl.util.filesystem import mkdirp
import spack.cmd
import spack.config as config
import spack.fetch_strategy as fs
import spack.util.gpg as gpg_util
import spack.util.gpg
import spack.relocate as relocate
import spack.util.spack_yaml as syaml
import spack.mirror
@@ -33,7 +33,7 @@
from spack.spec import Spec
from spack.stage import Stage
from spack.util.gpg import Gpg
from spack.util.executable import ProcessError
import spack.architecture as architecture
_build_cache_relative_path = 'build_cache'
@@ -110,14 +110,6 @@ class NewLayoutException(spack.error.SpackError):
pass
def has_gnupg2():
try:
gpg_util.Gpg.gpg()('--version', output=os.devnull)
return True
except ProcessError:
return False
def build_cache_relative_path():
return _build_cache_relative_path
@@ -243,27 +235,31 @@ def checksum_tarball(file):
def sign_tarball(key, force, specfile_path):
# Sign the packages if keys available
if not has_gnupg2():
if spack.util.gpg.Gpg.gpg() is None:
raise NoGpgException(
"gpg2 is not available in $PATH .\n"
"Use spack install gnupg and spack load gnupg.")
else:
if key is None:
keys = Gpg.signing_keys()
if len(keys) == 1:
key = keys[0]
if len(keys) > 1:
raise PickKeyException(str(keys))
if len(keys) == 0:
msg = "No default key available for signing.\n"
msg += "Use spack gpg init and spack gpg create"
msg += " to create a default key."
raise NoKeyException(msg)
if key is None:
keys = Gpg.signing_keys()
if len(keys) == 1:
key = keys[0]
if len(keys) > 1:
raise PickKeyException(str(keys))
if len(keys) == 0:
msg = "No default key available for signing.\n"
msg += "Use spack gpg init and spack gpg create"
msg += " to create a default key."
raise NoKeyException(msg)
if os.path.exists('%s.asc' % specfile_path):
if force:
os.remove('%s.asc' % specfile_path)
else:
raise NoOverwriteException('%s.asc' % specfile_path)
Gpg.sign(key, specfile_path, '%s.asc' % specfile_path)
@@ -272,7 +268,7 @@ def generate_package_index(cache_prefix):
Creates (or replaces) the "index.html" page at the location given in
cache_prefix. This page contains a link for each binary package (*.yaml)
and signing key (*.key) under cache_prefix.
and public key (*.key) under cache_prefix.
"""
tmpdir = tempfile.mkdtemp()
try:
@@ -312,7 +308,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
tmpdir = tempfile.mkdtemp()
cache_prefix = build_cache_prefix(tmpdir)
tarfile_name = tarball_name(spec, '.tar.gz')
tarfile_name = tarball_name(spec, '.tar.bz2')
tarfile_dir = os.path.join(cache_prefix, tarball_directory_name(spec))
tarfile_path = os.path.join(tarfile_dir, tarfile_name)
spackfile_path = os.path.join(
@@ -346,8 +342,18 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
raise NoOverwriteException(url_util.format(remote_specfile_path))
# make a copy of the install directory to work with
workdir = os.path.join(tempfile.mkdtemp(), os.path.basename(spec.prefix))
install_tree(spec.prefix, workdir, symlinks=True)
workdir = os.path.join(tmpdir, os.path.basename(spec.prefix))
# install_tree copies hardlinks
# create a temporary tarfile from prefix and exract it to workdir
# tarfile preserves hardlinks
temp_tarfile_name = tarball_name(spec, '.tar')
temp_tarfile_path = os.path.join(tarfile_dir, temp_tarfile_name)
with closing(tarfile.open(temp_tarfile_path, 'w')) as tar:
tar.add(name='%s' % spec.prefix,
arcname='.')
with closing(tarfile.open(temp_tarfile_path, 'r')) as tar:
tar.extractall(workdir)
os.remove(temp_tarfile_path)
# create info for later relocation and create tar
write_buildinfo_file(spec.prefix, workdir, rel=rel)
@@ -372,7 +378,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
tty.die(e)
# create compressed tarball of the install prefix
with closing(tarfile.open(tarfile_path, 'w:gz')) as tar:
with closing(tarfile.open(tarfile_path, 'w:bz2')) as tar:
tar.add(name='%s' % workdir,
arcname='%s' % os.path.basename(spec.prefix))
# remove copy of install directory
@@ -411,8 +417,8 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
sign_tarball(key, force, specfile_path)
# put tarball, spec and signature files in .spack archive
with closing(tarfile.open(spackfile_path, 'w')) as tar:
tar.add(name='%s' % tarfile_path, arcname='%s' % tarfile_name)
tar.add(name='%s' % specfile_path, arcname='%s' % specfile_name)
tar.add(name=tarfile_path, arcname='%s' % tarfile_name)
tar.add(name=specfile_path, arcname='%s' % specfile_name)
if not unsigned:
tar.add(name='%s.asc' % specfile_path,
arcname='%s.asc' % specfile_name)
@@ -583,13 +589,17 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
stagepath = os.path.dirname(filename)
spackfile_name = tarball_name(spec, '.spack')
spackfile_path = os.path.join(stagepath, spackfile_name)
tarfile_name = tarball_name(spec, '.tar.gz')
tarfile_name = tarball_name(spec, '.tar.bz2')
tarfile_path = os.path.join(tmpdir, tarfile_name)
specfile_name = tarball_name(spec, '.spec.yaml')
specfile_path = os.path.join(tmpdir, specfile_name)
with closing(tarfile.open(spackfile_path, 'r')) as tar:
tar.extractall(tmpdir)
# older buildcache tarfiles use gzip compression
if not os.path.exists(tarfile_path):
tarfile_name = tarball_name(spec, '.tar.gz')
tarfile_path = os.path.join(tmpdir, tarfile_name)
if not unsigned:
if os.path.exists('%s.asc' % specfile_path):
try:
@@ -642,7 +652,17 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
# so the pathname should be the same now that the directory layout
# is confirmed
workdir = os.path.join(tmpdir, os.path.basename(spec.prefix))
install_tree(workdir, spec.prefix, symlinks=True)
# install_tree copies hardlinks
# create a temporary tarfile from prefix and exract it to workdir
# tarfile preserves hardlinks
temp_tarfile_name = tarball_name(spec, '.tar')
temp_tarfile_path = os.path.join(tmpdir, temp_tarfile_name)
with closing(tarfile.open(temp_tarfile_path, 'w')) as tar:
tar.add(name='%s' % workdir,
arcname='.')
with closing(tarfile.open(temp_tarfile_path, 'r')) as tar:
tar.extractall(spec.prefix)
os.remove(temp_tarfile_path)
# cleanup
os.remove(tarfile_path)
@@ -664,48 +684,17 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
shutil.rmtree(tmpdir)
#: Internal cache for get_specs
_cached_specs = None
# Internal cache for downloaded specs
_cached_specs = set()
def get_specs(force=False):
"""
Get spec.yaml's for build caches available on mirror
"""
def try_download_specs(urls=None, force=False):
'''
Try to download the urls and cache them
'''
global _cached_specs
if _cached_specs:
tty.debug("Using previously-retrieved specs")
return _cached_specs
if not spack.mirror.MirrorCollection():
tty.warn("No Spack mirrors are currently configured")
if urls is None:
return {}
urls = set()
for mirror in spack.mirror.MirrorCollection().values():
fetch_url_build_cache = url_util.join(
mirror.fetch_url, _build_cache_relative_path)
mirror_dir = url_util.local_file_path(fetch_url_build_cache)
if mirror_dir:
tty.msg("Finding buildcaches in %s" % mirror_dir)
if os.path.exists(mirror_dir):
files = os.listdir(mirror_dir)
for file in files:
if re.search('spec.yaml', file):
link = url_util.join(fetch_url_build_cache, file)
urls.add(link)
else:
tty.msg("Finding buildcaches at %s" %
url_util.format(fetch_url_build_cache))
p, links = web_util.spider(
url_util.join(fetch_url_build_cache, 'index.html'))
for link in links:
if re.search("spec.yaml", link):
urls.add(link)
_cached_specs = []
for link in urls:
with Stage(link, name="build_cache", keep=True) as stage:
if force and os.path.exists(stage.save_filename):
@@ -721,11 +710,92 @@ def get_specs(force=False):
# we need to mark this spec concrete on read-in.
spec = Spec.from_yaml(f)
spec._mark_concrete()
_cached_specs.append(spec)
_cached_specs.add(spec)
return _cached_specs
def get_spec(spec=None, force=False):
"""
Check if spec.yaml exists on mirrors and return it if it does
"""
global _cached_specs
urls = set()
if spec is None:
return {}
specfile_name = tarball_name(spec, '.spec.yaml')
if not spack.mirror.MirrorCollection():
tty.debug("No Spack mirrors are currently configured")
return {}
if spec in _cached_specs:
return _cached_specs
for mirror in spack.mirror.MirrorCollection().values():
fetch_url_build_cache = url_util.join(
mirror.fetch_url, _build_cache_relative_path)
mirror_dir = url_util.local_file_path(fetch_url_build_cache)
if mirror_dir:
tty.msg("Finding buildcaches in %s" % mirror_dir)
link = url_util.join(fetch_url_build_cache, specfile_name)
urls.add(link)
else:
tty.msg("Finding buildcaches at %s" %
url_util.format(fetch_url_build_cache))
link = url_util.join(fetch_url_build_cache, specfile_name)
urls.add(link)
return try_download_specs(urls=urls, force=force)
def get_specs(force=False, allarch=False):
"""
Get spec.yaml's for build caches available on mirror
"""
arch = architecture.Arch(architecture.platform(),
'default_os', 'default_target')
arch_pattern = ('([^-]*-[^-]*-[^-]*)')
if not allarch:
arch_pattern = '(%s-%s-[^-]*)' % (arch.platform, arch.os)
regex_pattern = '%s(.*)(spec.yaml$)' % (arch_pattern)
arch_re = re.compile(regex_pattern)
if not spack.mirror.MirrorCollection():
tty.debug("No Spack mirrors are currently configured")
return {}
urls = set()
for mirror in spack.mirror.MirrorCollection().values():
fetch_url_build_cache = url_util.join(
mirror.fetch_url, _build_cache_relative_path)
mirror_dir = url_util.local_file_path(fetch_url_build_cache)
if mirror_dir:
tty.msg("Finding buildcaches in %s" % mirror_dir)
if os.path.exists(mirror_dir):
files = os.listdir(mirror_dir)
for file in files:
m = arch_re.search(file)
if m:
link = url_util.join(fetch_url_build_cache, file)
urls.add(link)
else:
tty.msg("Finding buildcaches at %s" %
url_util.format(fetch_url_build_cache))
p, links = web_util.spider(
url_util.join(fetch_url_build_cache, 'index.html'))
for link in links:
m = arch_re.search(link)
if m:
urls.add(link)
return try_download_specs(urls=urls, force=force)
def get_keys(install=False, trust=False, force=False):
"""
Get pgp public keys available on mirror
@@ -803,10 +873,10 @@ def needs_rebuild(spec, mirror_url, rebuild_on_errors=False):
try:
_, _, yaml_file = web_util.read_from_url(file_path)
yaml_contents = codecs.getreader('utf-8')(yaml_file).read()
except URLError as url_err:
except (URLError, web_util.SpackWebError) as url_err:
err_msg = [
'Unable to determine whether {0} needs rebuilding,',
' caught URLError attempting to read from {1}.',
' caught exception attempting to read from {1}.',
]
tty.error(''.join(err_msg).format(spec.short_spec, file_path))
tty.debug(url_err)
@@ -908,11 +978,16 @@ def _download_buildcache_entry(mirror_root, descriptions):
return True
def download_buildcache_entry(file_descriptions):
if not spack.mirror.MirrorCollection():
tty.die("Please add a spack mirror to allow " +
def download_buildcache_entry(file_descriptions, mirror_url=None):
if not mirror_url and not spack.mirror.MirrorCollection():
tty.die("Please provide or add a spack mirror to allow " +
"download of buildcache entries.")
if mirror_url:
mirror_root = os.path.join(
mirror_url, _build_cache_relative_path)
return _download_buildcache_entry(mirror_root, file_descriptions)
for mirror in spack.mirror.MirrorCollection().values():
mirror_root = os.path.join(
mirror.fetch_url,

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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,7 +39,6 @@
import sys
import traceback
import types
from six import iteritems
from six import StringIO
import llnl.util.tty as tty
@@ -52,6 +51,7 @@
import spack.config
import spack.main
import spack.paths
import spack.schema.environment
import spack.store
from spack.util.string import plural
from spack.util.environment import (
@@ -342,21 +342,7 @@ def set_build_environment_variables(pkg, env, dirty):
# Set environment variables if specified for
# the given compiler
compiler = pkg.compiler
environment = compiler.environment
for command, variable in iteritems(environment):
if command == 'set':
for name, value in iteritems(variable):
env.set(name, value)
elif command == 'unset':
for name, _ in iteritems(variable):
env.unset(name)
elif command == 'prepend-path':
for name, value in iteritems(variable):
env.prepend_path(name, value)
elif command == 'append-path':
for name, value in iteritems(variable):
env.append_path(name, value)
env.extend(spack.schema.environment.parse(compiler.environment))
if compiler.extra_rpaths:
extra_rpaths = ':'.join(compiler.extra_rpaths)

View File

@@ -1,4 +1,4 @@
# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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-2019 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2020 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)
@@ -61,12 +61,13 @@ def cuda_flags(arch_list):
conflicts('%gcc@6:', when='+cuda ^cuda@:8' + arch_platform)
conflicts('%gcc@7:', when='+cuda ^cuda@:9.1' + arch_platform)
conflicts('%gcc@8:', when='+cuda ^cuda@:10.0.130' + arch_platform)
conflicts('%gcc@9:', when='+cuda ^cuda@:10.1.243' + arch_platform)
conflicts('%gcc@9:', when='+cuda ^cuda@:10.2.89' + arch_platform)
conflicts('%pgi@:14.8', when='+cuda ^cuda@:7.0.27' + arch_platform)
conflicts('%pgi@:15.3,15.5:', when='+cuda ^cuda@7.5' + arch_platform)
conflicts('%pgi@:16.2,16.0:16.3', when='+cuda ^cuda@8' + arch_platform)
conflicts('%pgi@:15,18:', when='+cuda ^cuda@9.0:9.1' + arch_platform)
conflicts('%pgi@:16', when='+cuda ^cuda@9.2.88:10' + arch_platform)
conflicts('%pgi@:17', when='+cuda ^cuda@10.2.89' + arch_platform)
conflicts('%clang@:3.4', when='+cuda ^cuda@:7.5' + arch_platform)
conflicts('%clang@:3.7,4:',
when='+cuda ^cuda@8.0:9.0' + arch_platform)
@@ -74,6 +75,10 @@ def cuda_flags(arch_list):
when='+cuda ^cuda@9.1' + arch_platform)
conflicts('%clang@:3.7,5.1:', when='+cuda ^cuda@9.2' + arch_platform)
conflicts('%clang@:3.7,6.1:', when='+cuda ^cuda@10.0.130' + arch_platform)
conflicts('%clang@:3.7,7.1:', when='+cuda ^cuda@10.1.105' + arch_platform)
conflicts('%clang@:3.7,8.1:',
when='+cuda ^cuda@10.1.105:10.1.243' + arch_platform)
conflicts('%clang@:3.2,9.0:', when='+cuda ^cuda@10.2.89' + arch_platform)
# x86_64 vs. ppc64le differ according to NVidia docs
# Linux ppc64le compiler conflicts from Table from the docs below:
@@ -95,6 +100,8 @@ def cuda_flags(arch_list):
conflicts('%clang@5:', when='+cuda ^cuda@:9.1' + arch_platform)
conflicts('%clang@6:', when='+cuda ^cuda@:9.2' + arch_platform)
conflicts('%clang@7:', when='+cuda ^cuda@10.0.130' + arch_platform)
conflicts('%clang@7.1:', when='+cuda ^cuda@:10.1.105' + arch_platform)
conflicts('%clang@8.1:', when='+cuda ^cuda@:10.2.89' + arch_platform)
# Intel is mostly relevant for x86_64 Linux, even though it also
# exists for Mac OS X. No information prior to CUDA 3.2 or Intel 11.1
@@ -107,12 +114,12 @@ def cuda_flags(arch_list):
conflicts('%intel@16.0:', when='+cuda ^cuda@:8.0.43')
conflicts('%intel@17.0:', when='+cuda ^cuda@:8.0.60')
conflicts('%intel@18.0:', when='+cuda ^cuda@:9.9')
conflicts('%intel@19.0:', when='+cuda ^cuda@:10.0')
conflicts('%intel@19.0:', when='+cuda ^cuda@:10.2.89')
# XL is mostly relevant for ppc64le Linux
conflicts('%xl@:12,14:', when='+cuda ^cuda@:9.1')
conflicts('%xl@:12,14:15,17:', when='+cuda ^cuda@9.2')
conflicts('%xl@17:', when='+cuda ^cuda@10.0.130')
conflicts('%xl@17:', when='+cuda ^cuda@10.0.130:10.2.89')
# Mac OS X
# platform = ' platform=darwin'

Some files were not shown because too many files have changed in this diff Show More