Commit graph

17079 commits

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