Compare commits

...

1630 Commits

Author SHA1 Message Date
Gregory Becker
d4bf70d988 changelog for v0.15.0 2020-06-30 18:21:32 -05:00
Gregory Becker
49aebb44b1 bump version number 2020-06-30 18:21:32 -05:00
Glenn Johnson
37d7b5b199 Activate environment in container file (#17316)
* Activate environment in container file

This PR will ensure that the container recipes will build the spack
environment by first activating the environment.

* Deactivate environment before environment collection

For Singularity, the environment must be deactivated before running the
command to collect the environment variables. This is because the
environment collection uses `spack env activate`.
2020-06-30 18:17:58 -05:00
Greg Becker
cec55577d4 run github workflows on release branches (#17317) 2020-06-30 18:10:10 -05:00
Massimiliano Culpo
486b4671b6 Don't detect "classic" on Cray to avoid a compiler bug (#17314)
* Don't detect "classic" on Cray to avoid a compiler bug

* add tests

Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-06-30 15:45:29 -05:00
Johannes Blaschke
1d55adfd2b Add fish shell support (#9279)
* share/spack/setup-env.fish file to setup environment in fish shell

* setup-env.fish testing script

* Update share/spack/setup-env.fish

Co-Authored-By: Elsa Gonsiorowski, PhD <gonsie@me.com>

* Update share/spack/qa/setup-env-test.fish

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

* updates completions using `spack commands --update-completion`

* added stderr-nocaret warning

* added fish shell tests to CI system


Co-authored-by: becker33 <becker33@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Elsa Gonsiorowski, PhD <gonsie@me.com>
2020-06-30 14:26:27 -05:00
Greg Becker
212299a021 Cray compiler: fix implicit rpaths for classic versions (#17310)
* check link dirs for existence
2020-06-30 12:46:20 -05:00
Andrew Gaspar
c12885768d cmake v3.17.3 (#17313) 2020-06-30 11:37:06 -05:00
Andrew W Elble
78ac36204e half: fix __F16C__ include of immintrin.h (#17272)
Small fix so that immintrin.h gets included properly when the
compiler sets __F16C__. Upstream has been notified.
2020-06-30 11:27:34 -05:00
darmac
463d0d7bd9 filebench:remove autoreconf() (#17305) 2020-06-30 11:05:39 -05:00
albestro
55796203c4 add constrain for hpx 1.4.* and boost 1.73.0 (#17307)
https://github.com/STEllAR-GROUP/hpx/issues/4728#issuecomment-640685308
2020-06-30 11:03:26 -05:00
Tomoki, Karatsu
0fd71d24ba cleverleaf: Add C++ link flags for Fujitsu. (#17308) 2020-06-30 11:02:18 -05:00
Mark Olesen
c4c010c0bf Add OpenFOAM 2006 (2020-06) release (#17309)
Co-authored-by: Mark Olesen <Mark.Olesen@esi-group.com>
2020-06-30 11:01:00 -05:00
Andrew Gaspar
e74008bcce Catch2 v2.12.3 (#17312)
Added master branch, too
2020-06-30 10:59:12 -05:00
vvolkl
b9385998a8 [whizard] Fix Runtime Compiler Paths (#17300)
* [whizard] fix runtime compilers

fix

* [whizard] flake8

* [whizard] add master branch
2020-06-30 10:38:15 -05:00
Jen Herting
b329f10c7b [py-mdanalysis] new version and added dependencies (#16819)
* [py-mdanalysis] new version and added dependencies

Original commit message:

Author: Andrew Elble <aweits@rit.edu>
Date:   Thu Nov 14 08:35:14 2019 -0500

    mdanalysis

* [py-mdanalysis] python is type build/run

* [py-mdanalysis] updated numpy version requirement for all listed versions of py-mdanalysis

* [py-mdanalysis] updated biopython version requirement for all listed versions of py-mdanalysis

* [py-mdanalysis] updated py-griddataformats version requirement for all listed versions of py-mdanalysis

* [py-mdanalysis] gsd only required after version 1.17.0 and requires gsd@1.4.0

* [py-mdanalysis] only requires mmtf-python after version 0.16.0 and requires version 1.0.0

* [py-mdanalysis] has required py-joblib since version 0.16

* [py-mdanalysis] updated py-scipy version requirement for all listed versions of py-mdanalysis

* [py-mdanalysis] updated py-matplotlib version requirement for all listed versions of py-mdanalysis

* [py-mdanalysis] has required py-mock since version 0.18.0

* [py-mdanalysis] py-scikit-learn only required after version 0.16.0 and only for +analysis variant

* [py-mdanalysis] Reordered and reformatted for readability

* [py-mdanalysis] flake8 fixes

* [py-mdanalysis] proactively adding version 1.0.0 while I'm here since major release

* [py-mdanalysis] fixing some forgotten colons
2020-06-30 09:29:45 -05:00
Jen Herting
14894a7b09 [py-crossmap] added version 0.3.9 (#17233)
* [py-crossmap] added version 0.3.9

* [py-crossmap] py-numpy not required

* [py-crossmap] py-cython must be >= 0.17
2020-06-30 09:28:13 -05:00
Jen Herting
f25d6e64f6 [ruby] fixing path to gcc such that users can use gem to install nati… (#17141)
* [ruby] fixing path to gcc such that users can use gem to install native gems to their home directory

* [ruby] working on making flake8 happier

* [ruby] Line can't really be split cleanly. Enhancing flake8's calm.

ya learn something new every day...

* [ruby] line break where requested

* [ruby] make raw string

* [ruby] only running for x86_64-linux everything else is untested

* [ruby] finding rbconfig.rb in a cross platform manner
2020-06-30 09:27:48 -05:00
Sinan
6d46fbb6f7 New package/graphblast (#17289)
* new package: GraphBlast

* polish

* add cuda_arch setup

* flake8

* the package requires cuda variant and dependency

* add comments

* define cuda_arch

* implement multiple and custom cuda arches

* tidy up, improve

* flake8

* improve style

* add variant description

* use patch method, add new version for latest commit building since master now fails

* remove gcc conflict, tidy up

* also indicate build range for boost

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@github>
2020-06-30 08:05:08 -05:00
Harsh Bhatia
6fb30acb77 dssp: new package at v3.1.4 (#17188)
Renamed xspp to hspp
2020-06-30 08:58:13 +02:00
Sinan
01dc8d6fc8 postgis: added package at v3.0.1 (#12635)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Sinan81 <Sinan81@github>
2020-06-30 08:14:33 +02:00
Sebastian Gottfried
5e1cb24bec py-mpi4py: Implement headers Property (#17295)
py-mpi4py installs its header files at a difficult-to-predict location:

    $prefix/lib/python-x.y/site-packages/mpi4py/include

With the new `headers` properties, dependent packages have now an easy
way to obtain this location:

    spec['py-mpi4py'].headers.directories[0]
2020-06-29 21:36:38 -05:00
iarspider
2de0053c08 New package: hepmcanalysis (#17296)
* [WIP] Add hepmcanalysis package

* Implement install() for hepmcanalysis

* Flake-8

Co-authored-by: iarspider <iarpsider@gmail.com>
2020-06-29 21:35:25 -05:00
Amjad Kotobi
17985959a4 R: new versions (#17297) 2020-06-29 21:33:57 -05:00
Adam J. Stewart
c8e2529eae GDAL: add v3.1.1 (#17302) 2020-06-29 21:26:49 -05:00
h-denpo
17fa1edf32 Some files could not be created due to errors, which have been fixed. (#17250)
added support for Fujitsu compiler.
2020-06-29 21:26:26 -05:00
Fabien Bruneval
6f824b598c cp2k: variant tuning lmax was broken (#17266)
* cp2k: variant tuning `lmax` was broken

- `spack install cp2k lmax=6` now works

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-29 21:24:25 -05:00
Fabian Brandt
4a10faff87 New package py-networkit (6.1, 7.0) (#17195) 2020-06-29 21:23:53 -05:00
iarspider
49f19e1710 New package: coin3d (#17251)
* New package: coin3d

* Update package.py

* Flake-8

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Add link-time dependencies

* Add configure flags for boost; remove version 4.0.0 (doesn't compile)

Co-authored-by: iarspider <iarpsider@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-29 21:23:02 -05:00
Greg Becker
b52390dacc cray compilers: fix bug with verifying cray compilers (#17303)
* fix bug with verifying cray compilers
2020-06-29 20:26:46 -05:00
Greg Becker
d71fdc9719 remove three commands that have been deprecated since v0.13.0 (#17291)
* remove three commands that have been deprecated since v0.13.0
2020-06-29 11:15:56 -05:00
Michael Kuhn
b07d38b3be autotools: Fix config.guess detection (#17149)
The config.guess detection used a relative path that did not work in
combination with `check_call`. Use an absolute path instead.
2020-06-29 10:08:22 -05:00
Massimiliano Culpo
789d060ff6 Detect FE compilers automatically on Cray (#17267)
* cray: detect frontend compilers automatically

This commit permits to detect frontend compilers
automatically, with the exception of cce.

Co-authored-by: Gregory Becker <becker33.llnl.gov>
2020-06-29 09:53:08 -05:00
darmac
7161b33364 nfs-utils: fix compile error on debian (#17292)
use pkgconfig to detect libtirpc
2020-06-29 15:18:51 +02:00
iarspider
01357d4925 New package: fjcontrib + new variants for fastjet (#17255)
* New package: fjcontrib + new variants for fastjet

* Flake-8

* Flake-8 once more

* Update package.py

* Allow choosing which plugins to build

Build all plugins by default.

* Flake-8

* Always build all plugins

* Update package.py

Co-authored-by: iarspider <iarpsider@gmail.com>
2020-06-29 09:46:44 +01:00
George Hartzell
e6bb8360d0 Fix indentation in containerize example (#17228)
[george.hartzell@172-16-193-97 spack-explore-docker]$ spack containerize
Running `spack containerize` with the example `spack.yaml` file fails
with an error that ends like so:

```
[...]
  File "/local_scratch/hartzell/tmp/spack-explore-docker/lib/spack/external/ruamel/yaml/scanner.py", line 165, in need_more_tokens
    self.stale_possible_simple_keys()
  File "/local_scratch/hartzell/tmp/spack-explore-docker/lib/spack/external/ruamel/yaml/scanner.py", line 309, in stale_possible_simple_keys
    "could not find expected ':'", self.get_mark())
ruamel.yaml.scanner.ScannerError: while scanning a simple key
  in "/local_scratch/hartzell/tmp/spack-explore-docker/spack.yaml", line 26, column 1
could not find expected ':'
  in "/local_scratch/hartzell/tmp/spack-explore-docker/spack.yaml", line 28, column 5
```

Indenting the block string fixes the problem for me.

CentOS 7,

```
$ spack --version
0.14.2-1529-ec58f28c2
```
2020-06-29 08:58:51 +02:00
Kshitij Mehta
d27ea3be1c codar-cheetah: added v1.1.0 and v1.0.0 (#17286) 2020-06-29 08:10:30 +02:00
Wouter Deconinck
4ea4c2e63f geant4: depends on "qt@5: +opengl" when +qt (#17264)
The Geant4 cmake check requires Qt5OpenGL_FOUND, so we must require
the Qt5 +opengl variant. If not, the cmake phase fall through to Qt4
and fails due to a missing Qt4::QtGui target.

In Geant4InterfaceOptions.cmake:
```
  if(Qt5Core_FOUND
      AND Qt5Gui_FOUND
      AND Qt5Widgets_FOUND
      AND Qt5OpenGL_FOUND
      AND Qt5PrintSupport_FOUND)
```

Ref: https://github.com/Geant4/geant4/blob/master/cmake/Modules/Geant4InterfaceOptions.cmake#L90
(5baee230e93612916bcea11ebf822756cfa7282c, Import Geant4 10.6.0 source tree)
2020-06-29 08:09:29 +02:00
Tomoki, Karatsu
4425e83750 fujitsu-mpi: added "headers" and "libs" methods (#17253) 2020-06-29 08:06:09 +02:00
Greg Becker
77351bd287 Restore compilers.yaml default directory (#17283) 2020-06-29 08:03:22 +02:00
Seth R. Johnson
56db9647b1 Prevent libffi 3.3 from adding contradictory tuning flags (#17285)
Fixes #17187
2020-06-28 13:31:59 -05:00
Sinan
9a8e9f265e package/qgis: add new versions (#17284)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-28 13:30:58 -05:00
Amjad Kotobi
02d5b8c425 intel: added new versions (#17287) 2020-06-28 13:30:21 -05:00
Dr. Christian Tacke
7aac150617 vmc: New Package (#17282)
"""The Virtual Monte Carlo (VMC) library"""
2020-06-28 13:28:42 -05:00
darmac
68633fac5c redis: add config file from source code (#17225)
* redis: add config file from source code

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-28 13:26:04 -05:00
Axel Huebl
064618e1ea WarpX: Development Branch (#17163)
* WarpX: Development Branch

Update the name of our development branch.

* WarpX version: develop keyword

development is not a "newest"-like keyword, but `master`/`develop`/`dev` are.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Renamed: develop version

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-28 01:23:11 -07:00
Greg Becker
cc28493449 make gcc build on aarch64 (#17280) 2020-06-27 18:51:11 -05:00
Axel Huebl
d7c46d8c57 CUDA: CUDAHOSTCXX Env (#16869)
This is a general CMake CUDA language hint to use the CXX
compiler has host compiler for NVCC. Seems like a good
default since we do not express the CUDA compiler in Spack
otherwise yet (e.g. no `self.compiler.cuda` or
`self.compiler.cudahostcxx`).
2020-06-27 15:36:18 -05:00
Adam J. Stewart
edf776aeb9 Add support for macOS Big Sur (#17236)
* Add support for macOS Big Sur

* Big Sur is actually macOS 11.0
2020-06-27 15:07:21 -05:00
Dr. Christian Tacke
f7aecd9d6e perl-date-manip: New Package Date::Manip (#17259) 2020-06-27 14:54:50 -05:00
vvolkl
0ddfcf097b [gaudi] new version, cleanup (#17268) 2020-06-27 14:42:23 -05:00
Fabian Brandt
a640befb60 Patch needed also for version 7.0 (#17269) 2020-06-27 14:41:24 -05:00
Hans Pabst
1345d30750 LIBXSMM 1.16.1 (#17274) 2020-06-27 14:39:35 -05:00
albestro
81b4c03f56 migrate to git and update commit (#17276) 2020-06-27 14:39:01 -05:00
David Gardner
00fd63f5ee superlu-mt: add pic and int64 variants (#11361)
* add pic and int64 variants

* update to Language-specific PIC flags
2020-06-27 09:52:32 -05:00
Greg Becker
56b4abbe38 env: no automatic activation (#17258)
* env: no automatic activation

* Ensure ci rebuild jobs activate the environment (no longer automagic)

Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
2020-06-26 17:20:15 -05:00
Scott Wittenburg
dfac09eade Use json for buildcache index (#15002)
* Start moving toward a json buildcache index

* Add spec and database index schemas

* Add a schema for buildcache spec.yaml files

* Provide a mode for database class to generate buildcache index

* Update db and ci tests to validate object w/ new schema

* Remove unused temporary upload-s3 command

* Use database class to generate buildcache index

* Do not generate index with each buildcache creation

* Make buildcache index mode into a couple of constructor args to Database class

* Use keyword args for  _createtarball 

* Parse new json index when we get specs from buildcache

Now that only one index file per mirror needs to be fetched in
order to have all the concrete specs for binaries available on the
mirror, we can just fetch and refresh the cached specs every time
instead of needing to use the '-f' flag to force re-reading.
2020-06-26 17:05:56 -05:00
Greg Becker
c39983eb1a build_environment: verify compiler executables exist are are accessible (#17260)
* build_environment: verify compiler executables exist and are accessible

* fix existing tests

* test compiler executable verification
2020-06-26 16:12:22 -05:00
Omar Padron
1ed035def6 fix sorting issue with ci workarounds (#17277) 2020-06-26 14:24:08 -05:00
cedricchevalier19
529c659bd0 First fix for SPACK_DEPENDENCIES problem when doing setup (#10715)
* First fix for SPACK_DEPENDENCIES problem when doing setup

* Get rid of transitive include path in setup.

* Export SPACK_INCLUDE_DIRS into spconfig.py
2020-06-26 14:06:43 -05:00
Adam J. Stewart
c8e6a9e535 Fix super invocation in Intel packages (#17248) 2020-06-26 14:04:35 -05:00
eugeneswalker
d8da1e6dbc spack ci generate: allow use of --output-file <file> with wo/ preceding path (#17275) 2020-06-26 11:18:29 -07:00
Jeffrey Salmond
1602b7a561 add environment-awareness to buildcache create (#16580)
* add buildcache create test

* add functionality and test to create buildcache from environment

* use env.concretized_user_specs rather than env.roots to get concretized specs, as suggested in review from becker33
2020-06-26 10:01:12 -05:00
Greg Becker
ec108dbebd Allow spack remove -f and spack uninstall to work on matrices (#17222)
* Allow `spack remove -f` and `spack uninstall` to work on matrices

Allow Environment.remove(force=True) to remove the concrete spec from the environment
even when the user spec cannot be removed because it is in a matrix.
2020-06-26 09:57:22 -05:00
Massimiliano Culpo
c401c63156 Allow detection for "-classic" version of CCE (#17256)
* cce: detect modules based on the classic backend

* cce: tweaked version checks for clang based options

* Added unit test for cce flags
2020-06-25 21:20:09 -05:00
Adam J. Stewart
cecd300693 py-azureml-sdk: add new package (and deps) (#17261) 2020-06-25 20:15:21 -05:00
Axel Huebl
e6bf0b01c4 Ascent & Conduit: ~python default (#17230)
* Ascent: ~python default

Packages that build optional python bindings do not build them by default in Spack:
https://spack.readthedocs.io/en/latest/packaging_guide.html#variant-names

This reduces long dependency trees and build times, e.g. for apps just using C/C++/Fortran bindings of a library.

* Conduit: ~python default

Packages that build optional python bindings do not build them by
default in Spack:
  https://spack.readthedocs.io/en/latest/packaging_guide.html#variant-names

This reduces long dependency trees and build times, e.g. for apps
just using C/C++/Fortran bindings of a library.
2020-06-25 20:14:57 -05:00
Dr. Christian Tacke
49b0ac804b munge: Update homepage URL (#17257) 2020-06-25 22:33:38 +02:00
Ge Wenjun
740a9d88f9 add new package: datatransferkit (#17158)
* add new package: datatransferkit

* fix style

* remove the build type;add~dtk;'shared' variant;homepage

* add maintainer
2020-06-25 14:57:31 -05:00
manifest
d2b56dbce3 add sra-toolkit@2.10.7 (#16947)
* sra-tools

* sra-tools style fix

* sratoolkit version update
2020-06-25 14:33:26 -05:00
Michael Kuhn
e8465ce81c libtirpc: Add 1.2.6 (#17209)
Earlier versions do not compile with gcc@10:.
2020-06-25 14:32:34 -05:00
Andrey Prokopenko
9f3e542d30 Update ArborX for new Kokkos (#17213)
* Update ArborX for new Kokkos

* Set maintainer
2020-06-25 14:20:31 -05:00
Omar Padron
7c54aa2eb0 add workaround for gitlab ci needs limit (#17219)
* add workaround for gitlab ci needs limit

* fix style/address review comments

* convert filter obj to list

* update command completion

* remove dict comprehension

* add workaround tests

* fix sorting issue between disparate types

* add indeces to format
2020-06-25 14:27:20 -04:00
Greg Becker
096bd69a94 prevent multiple version sigils in the same spec (#17246)
* prevent multiple version sigils in the same spec

* fix packages with malformed versions
2020-06-25 12:34:09 -05:00
Greg Becker
f936e3a1db environment spec lists: improve ability to query architecture in when clauses (#17056) 2020-06-25 19:13:26 +02:00
Erik Schnetter
e04c89f086 mpich: Allow building with external hwloc library (#15305)
This is in principle supported already, but requires a patch to avoid build errors.

Closes #15302

Co-authored-by: Michael Kuhn <michael.kuhn@informatik.uni-hamburg.de>
2020-06-25 18:27:48 +02:00
Massimiliano Culpo
14599f09be Separate Apple Clang from LLVM Clang (#17110)
* Separate Apple Clang from LLVM Clang

Apple Clang is a compiler of its own. All places
referring to "-apple" suffix have been updated.

* Hack to use a dash in 'apple-clang'

To be able to use autodoc from Sphinx we need
a valid Python name for the module that contains
Apple's Clang code.

* Updated packages to account for the existence of apple-clang

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Added unit test for XCode related functions

Co-authored-by: Gregory Becker <becker33@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-25 11:18:48 -05:00
Peter Scheibel
a31c115d79 Fix global activation check for upstream extendees (#17231)
* short-circuit is_activated check when the extendee is installed upstream

* add test for checking activation status of packages with an extendee installed upstream
2020-06-25 08:27:27 -05:00
manifest
5c712a03a1 msmc2: added package at v2.1.2 (#17170)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-25 10:43:33 +02:00
Greg Becker
b26e93af3d spack config: new subcommands add/remove (#13920)
spack config add <value>: add nested value value to the configuration scope specified
spack config remove/rm: remove specified configuration from the relevant scope
2020-06-25 09:38:01 +02:00
Brian Van Essen
089a21dd1d Update the version of Cereal. (#17244) 2020-06-24 23:00:06 -05:00
John Jolly
d8a7cfc36a chill: Patch to include gmp, isl, and libquadmath (#16996)
The rose library uses the `strtoflt128` and `quadmath_snprintf`
functions. In order to successfully link the rose library, chill must
also link the GCC libquadmath library to resolve the two functions. This
patch changes the chill build to include this library.

Chill will also not compile unless headers from the gmp and isl
libraries are found in the includes path. Two patches - one each for gmp
and isl - modify the chill build process to add options to specify those
paths. These options follow the similar pattern as seen with BOOSTHOME
and ROSEHOME options which already exist in the chill build process.

Because of the addition of GMPHOME and ISLHOME options, build
requirements for gmp and isl are also added.
2020-06-24 22:53:09 -05:00
Tomoki, Karatsu
b2a4af764c vtk: Add patch for finding Fujitsu-MPI wrapper commands. (#17069) 2020-06-24 22:52:31 -05:00
Michael Kuhn
cee24fbc98 mvapich2: Fix build with gcc@10: (#17114) 2020-06-24 22:49:30 -05:00
Sergey Kosukhin
8d67279181 openjdk and jdk: extend the list of provided versions of java (#17151) 2020-06-24 22:43:30 -05:00
vvolkl
b8270559d9 [podio] patch to correctly load dictionaries in v00-10 (#17157) 2020-06-24 22:42:41 -05:00
Jen Herting
fe14c201dc New package: py-mmtf-python (#17201)
* mdanalysis

* [py-mmtf-python] fixed copyright

Co-authored-by: Andrew Elble <aweits@rit.edu>
2020-06-24 22:24:16 -05:00
oracleLee
e81533eb9b Update a supported package 'user-meamc' for lammps (#17207)
* Update package.py

* edit confliction when add package 'meam' 

 The USER-MEAMC fully replaces the MEAM package, which has been removed from LAMMPS after the 12 December 2018 version.
2020-06-24 22:23:17 -05:00
cedricchevalier19
a928f44fc0 Fix missing dependency in Mono (#17208)
* Add missing dependency on Python for Mono.

At build time

* Adding version 6.8.0.123 for mono
2020-06-24 22:22:40 -05:00
Cyrus Harrison
eee56295ce add cond py-mpi4py dep to conduit (#17211) 2020-06-24 22:19:28 -05:00
Chuck Atkins
30958649fb ecp-io-sdk: remove deprecated numa variant from unify-fs (#17212) 2020-06-24 22:18:49 -05:00
Glenn Johnson
7717532d14 The lapack-0.3.9-xerbl patch is no longer needed (#17217)
The lapack-0.3.9-xerbl patch is not needed for versions 0.3.10 and
above.
2020-06-24 22:12:48 -05:00
Jonathan R. Madsen
bed11a5a54 timemory: Updated nearly all options to default to OFF (#17221)
* Updated nearly all options to default to OFF

* Fixed imported but unused module flake error
2020-06-24 22:10:43 -05:00
Michio Ogawa
95f351de7e Updated MUMPS(5.3.3) (#17223)
* Updated MUMPS-5.3.3

* fixed E741 error(l -> ltr)
2020-06-24 22:09:44 -05:00
Adam J. Stewart
791267c3dc NCCL: add latest version (#17234) 2020-06-24 21:59:32 -05:00
Adam J. Stewart
cd2e945e4e py-horovod: add latest version (#17235) 2020-06-24 21:59:10 -05:00
Adam J. Stewart
ad708cde53 GPyTorch: add new package (#17237) 2020-06-24 21:58:31 -05:00
Adam Moody
b00bc2a18e dtcmp: add v1.1.1 (#17240)
Signed-off-by: Adam Moody <moody20@llnl.gov>
2020-06-24 21:58:09 -05:00
Adam Moody
e12784bcb1 lwgrp: add v1.0.3 (#17242) 2020-06-24 21:57:37 -05:00
Tamara Dahlgren
48d3e8d350 features: Add install failure tracking removal through spack clean (#15314)
* Add ability to force removal of install failure tracking data through spack clean

* Add clean failures option to packaging guide
2020-06-24 20:28:53 -05:00
Sergey Kosukhin
bc53bb9b7c Unset environment variables that are most commonly used by Autotools packages. (#8623) 2020-06-24 10:39:04 -05:00
Nichols A. Romero
ec58f28c20 quantum-espresso: fix for scalapack with openmpi (#17179) 2020-06-24 16:30:00 +02:00
Gilles Gouaillardet
577a88880e gromacs: fix fftw and update cmake dependencies (#17226)
* gromacs: fix fftw dependency

Only depend on fftw+mpi when gromacs is built with mpi,
and depend on fftw~mpi otherwise.

* gromacs: fix cmake dependency

master branch depends on cmake 3.11 (as specified in CMakeLists.txt
cmake dependency is also bumped to 3.11 when fj compilers are used
in order to fix OpenMP detection.
2020-06-24 05:47:55 -06:00
Michael Kuhn
fe0d3c22c6 perl: added v5.30.3 and v5.32.0 (#17220)
perl.org still recommends 5.30.3, so keep it as the preferred version.
2020-06-24 11:01:48 +02:00
Nichols A. Romero
4c055630d5 quantum-espresso: correctly cross-compile code for Cray and BG/Q (#17180) 2020-06-24 09:52:27 +02:00
Tom Payerle
fd710fc93e Some minor fixes to set_permissions() in file_permissions.py (#17020)
* Some minor fixes to set_permissions() in file_permissions.py

The set_permissions() routine claims to prevent users from creating
world writable suid binaries.  However, it seems to only be checking
for/preventing group writable suid binaries.

This patch modifies the routine to check for both world and group
writable suid binaries, and complain appropriately.

* permissions.py: Add test to check blocks world writable SUID files

The original test_chmod_rejects_group_writable_suid tested
that the set_permissions() function in
lib/spack/spack/util/file_permissions.py
would raise an exception if changed permission on a file with
both SUID and SGID plus sticky bits is chmod-ed to g+rwx and o+rwx.

I have modified so that more narrowly tests a file with SUID
(and no SGID or sticky bit) set is chmod-ed to g+w.

I have added a second test test_chmod_rejects_world_writable_suid
that checks that exception is raised if an SUID file is chmod-ed
to o+w

* file_permissions.py: Raise exception when try to make sgid file world writable

Updated set_permissions() in file_permissions.py to also raise
an exception if try to make an SGID file world writable.  And
added corresponding unit test as well.

* Remove debugging prints from permissions.py
2020-06-23 19:50:19 -05:00
Tamara Dahlgren
e74c8e71cc tests: check rpath presence not equality (#17216) 2020-06-23 17:17:35 -05:00
Matthias Wolf
0b57567824 Module index should not be unconditionally overwritten (#14837)
* Module index should not be unconditionally overwritten

Uncovered after we switched our CI to generate modules for packages
one-by-one rather than in bulk. This overwrote a complete module index
with an index with a single entry, and broke our downstream Spack
instances that needed the upstream module index.
2020-06-23 15:38:04 -05:00
victorusu
94cce5f963 Enable mysql for macos (#17177)
I get the following error message, if I do not use editline from the system.

```
>> 3090    Undefined symbols for architecture x86_64:
     3091      "_tgetent", referenced from:
     3092          _terminal_set in libedit.a(terminal.c.o)
     3093      "_tgetflag", referenced from:
     3094          _terminal_set in libedit.a(terminal.c.o)
     3095      "_tgetnum", referenced from:
     3096          _terminal_set in libedit.a(terminal.c.o)

     ...

     3110          _terminal_insertwrite in libedit.a(terminal.c.o)
     3111          _terminal_clear_EOL in libedit.a(terminal.c.o)
     3112          _terminal_clear_screen in libedit.a(terminal.c.o)
     3113          _terminal_beep in libedit.a(terminal.c.o)
     3114          ...
     3115    ld: symbol(s) not found for architecture x86_64
```
2020-06-23 21:29:45 +02:00
Tamara Dahlgren
96932d65a8 Added support for --fail-fast install option to terminate on first failure 2020-06-23 10:22:41 -07:00
Tamara Dahlgren
f54a8a77b4 Allow a single ctrl-c to terminate an install in progress 2020-06-23 10:22:41 -07:00
Michio Ogawa
0493e133c5 revocap-refiner: updated package (#17192) 2020-06-23 18:26:47 +02:00
Greg Becker
9067378c24 fix compiler environment handling to reset environment after (#17204)
bugfix: fix compiler environment handling to reset environment after
2020-06-23 09:26:15 -07:00
Massimiliano Culpo
239b709f97 Added unit tests to Github Actions (#16610)
* Added unit tests to Github Actions

* Set user e-mail and name for git tests to succeed

* Simplify setup.sh logic

* Replicate Travis script on Github Actions

* Update flags since '.' is not allowed

* Added badge, simplified workflow

* Remove pinning of coverage

* Remove unit tests run on Github Actions from Travis
2020-06-23 08:24:02 -05:00
Justin S
404ff9eb32 dock: new package at 6.9 (#17138) 2020-06-23 10:34:47 +02:00
darmac
91693ef32e strace: added v5.3 to v5.7 (#17193) 2020-06-23 10:20:28 +02:00
Amjad Kotobi
cfc390b41f r-spatialEco: added v1.3-2 (#17194) 2020-06-23 10:19:00 +02:00
Michael Kuhn
c41f13ef97 parallel-netcdf: add missing perl dependency (#17156)
parallel-netcdf's buildiface script needs perl during build.
2020-06-23 10:18:27 +02:00
Mosè Giordano
561f6d6c21 swfft: Add patch to make it build (#17196) 2020-06-23 10:17:32 +02:00
Jen Herting
6fdf5913ab py-gsd: new package at v1.9.3 (#17200)
Co-authored-by: Andrew Elble <aweits@rit.edu>
2020-06-23 09:49:05 +02:00
Howard Pritchard
07b6834ec5 OpenMPI: added v4.0.4 (#17202)
Bug fix release:

4.0.4 -- June, 2020
-----------------------
- Fix a memory patcher issue intercepting shmat and shmdt.  This was
  observed on RHEL 8.x ppc64le (see README for more info).
- Fix an illegal access issue caught using gcc's address sanitizer.
  Thanks to  Georg Geiser for reporting.
- Add checks to avoid conflicts with a libevent library shipped with LSF.
- Switch to linking against libevent_core rather than libevent, if present.
- Add improved support for UCX 1.9 and later.
- Fix an ABI compatibility issue with the Fortran 2008 bindings.
  Thanks to Alastair McKinstry for reporting.
- Fix an issue with rpath of /usr/lib64 when building OMPI on
  systems with Lustre.  Thanks to David Shrader for reporting.
- Fix a memory leak occurring with certain MPI RMA operations.
- Fix an issue with ORTE's mapping of MPI processes to resources.
  Thanks to Alex Margolin for reporting and providing a fix.
- Correct a problem with incorrect error codes being returned
  by OMPI MPI_T functions.
- Fix an issue with debugger tools not being able to attach
  to mpirun more than once.  Thanks to Gregory Lee for reporting.
- Fix an issue with the Fortran compiler wrappers when using
  NAG compilers.  Thanks to Peter Brady for reporting.
- Fix an issue with the ORTE ssh based process launcher at scale.
  Thanks to Benjamín Hernández for reporting.
- Address an issue when using shared MPI I/O operations.  OMPIO will
  now successfully return from the file open statement but will
  raise an error if the file system does not supported shared I/O
  operations.  Thanks to Romain Hild for reporting.
- Fix an issue with MPI_WIN_DETACH.  Thanks to Thomas Naughton for reporting.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2020-06-23 09:46:50 +02:00
Adam J. Stewart
f8e3e8289d py-torchvision: added v0.6.1 (#17203) 2020-06-23 09:45:36 +02:00
Wouter Deconinck
0ffbd79bd0 [hepmc3] gcc@9.3.0 patch for @3.1.2:3.2.1, conflicts for earlier @:3.1.1 (#17182)
See ba38f14d8f, which is included in master and released as of hepmc3@3.2.2
2020-06-23 09:44:44 +02:00
vvolkl
36e603c7d6 whizard: added zlib as a dependency (#17205) 2020-06-23 08:56:23 +02:00
Tomoki, Karatsu
1d10c6c730 caffe: use MPI compiler when using hdf5+mpi (#17125) 2020-06-23 08:54:54 +02:00
Michael Kuhn
55f26b0ccb lua: fix linking to ncurses (#17206)
PR #17108 broke the build. Spack's ncurses package does not provide a
libtermcap, so we need to use libtinfow.
2020-06-23 08:30:45 +02:00
vvolkl
735416dbf4 HEP generator update: evtgen, tauola, photos, pythia8, lhapdf, whizard (#16880)
* add package evtgen

fix formatting

add evtgen dependencies and update pythia8

fix formatting

* [evtgen] update versions

* [pythia8] add 'without-PACKAGE' args

* fix formatting

* Add LHAPDF

Co-authored-by: iarspider

* Add package whizard

fix formatting

* [pyhtia8, evtgen] add conflict msg re: circular dependencies

* [pyhtia8, evtgen] fix conflicts

* [pyhtia8, evtgen] fix msg string

* Set pythia8 default to ~evtgen
2020-06-22 13:16:06 -05:00
Jen Herting
985c5c7792 [py-macs2] new version and dependency (#16817)
* [py-macs2] Combined commit

- Added version 2.1.3.3
- added dependency py-cython

Author: Jen Herting <jen@herting.cc>
Date:   Tue May 26 16:41:28 2020 -0400

[py-macs2] added sha256=

Author: Andrew Elble <aweits@rit.edu>
Date:   Tue Oct 29 10:34:33 2019 -0400

migrated repos

* [py-macs2] fixed copyright

* [py-macs2] py-cython is build dependency
2020-06-22 13:15:46 -05:00
Omar Padron
224dc95159 Pre ci optimization (#16372)
* add initial optimization script

* integrate optimization in spack ci

* make optimization opt-in

* fix import error

* flake8 fixes

* update command completion

* work around vermin errors

* fix sphynx errors
2020-06-22 13:19:47 -04:00
Joseph Ciurej
42f2c168d2 swig: fix older builds on newer platforms by updating config files (#16854)
* swig: revise 'autotools' automated 'config.*' update mechanism to support 'config.sub' and adapt 'swig' accordingly
2020-06-22 10:44:29 -05:00
Brian Van Essen
4e9a98997a Added 8.0 RC to the versions (#17176) 2020-06-22 08:22:14 -05:00
G-Ragghianti
54cfec025f blaspp: moved to new git repo (#17184)
Extended the list of maintainers
2020-06-22 14:21:46 +02:00
darmac
a76545b813 dos2unix: add build dependency on gettext (#17191) 2020-06-22 13:37:26 +02:00
Brian Van Essen
0d08e18df5 Minor cleanup for conduit and hydrogen (#17136)
* Fix how the Conduit detects that the MPI compiler is the same as the
CC compiler and is more careful when it sets the MPI compilers to be
the Cray PE system compilers.

* Remove unnecessary push of the MPI compilers to the C compilers for Hydrogen.
2020-06-22 09:32:55 +02:00
Wouter Deconinck
3fc963b1f9 delphes: better specify the dependency on root (#17175)
Compiling delphes with default root cxxstd=11 fails, see e.g. https://sft.its.cern.ch/jira/si/jira.issueviews:issue-html/ROOT-9492/ROOT-9492.html
2020-06-22 09:31:57 +02:00
iarspider
0b74285a14 py-pyheadtail: added new package at v1.14.1 (#17159)
Co-authored-by: iarspider <iarpsider@gmail.com>
2020-06-22 08:52:19 +02:00
Hans Pabst
73b3bbbd22 libxsmm: added v1.16 (#17185) 2020-06-22 08:36:46 +02:00
Christoph Junghans
e91d7988e5 votca-*: added v1.6.1 (#17186) 2020-06-22 08:36:01 +02:00
Michael Kuhn
0cddfb9d8a meson: added v0.54.3 (#17190) 2020-06-22 08:30:17 +02:00
Adam J. Stewart
4bfa844de0 SciPy: add v1.5.0 (#17189) 2020-06-22 08:20:04 +02:00
Adam J. Stewart
c7f6608f5e NumPy: add v1.19.0 (#17183) 2020-06-20 17:46:10 -05:00
Chris White
a20ba315f5 Axom/Conduit: Fix error when fortran is not defined (#17171)
* Fix error when fortran is not defined

* Guard more ~fortran cases
2020-06-19 14:31:09 -05:00
G-Ragghianti
844312f213 Updated slate package to use new git repo. Added maintainer. (#17165)
* Updated slate package to use new git repo.  Added maintainer.
2020-06-19 11:10:03 -05:00
Alexander Knieps
b73536b4ad Update to swipl package (#17173)
* Added version 8.2.0, added dependency for documentation build, added variants for documentations

* Renamed variant '+man' to '+html'

Co-authored-by: Alexander Knieps <a.knieps@fz-juelich.de>
2020-06-19 11:03:25 -05:00
Adam J. Stewart
b80d5e74e5 PyTorch: add v1.5.1 (#17167) 2020-06-18 17:24:38 -05:00
Adam J. Stewart
5a0c5de50b py-pandas: add v1.0.5 (#17161) 2020-06-18 17:24:27 -05:00
Adam J. Stewart
33e6d0f378 py-matplotlib: add v3.2.2 (#17160) 2020-06-18 17:24:14 -05:00
Massimiliano Culpo
6d9f0262de libjpeg-turbo: fixed sha256 (#17154) 2020-06-18 14:44:32 +02:00
lorddavidiii
68c13d76f9 arpack-ng: fix build with gcc@10: (#17131) 2020-06-18 14:43:52 +02:00
darmac
2a13bad8eb atop: fix ld error (#17150) 2020-06-18 14:42:52 +02:00
Sinan
1de20f00b6 arrayfire: added cudnn as a dependency when +cuda (#17146)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-18 11:20:17 +02:00
Omar Padron
82eb71cb95 Explicitly install setuptools in docker images (#17143) 2020-06-18 11:16:24 +02:00
Shintaro Iwasaki
910d258706 argobots, bolt: updates to package.py (#17117) 2020-06-18 11:11:59 +02:00
Itaru Kitayama
4fe78bceaa cube and libjpeg-turbo: added cube v4.5 and libjpeg-turbo v2.0.4 (#17132) 2020-06-18 10:40:54 +02:00
Axel Huebl
2fd3ab3c9c Fetching from urls: Error Message (#16434)
* Fetching from urls: Error Message

Fix the error message when fetching from consecutive `urls` of a
package version. Each fail should show the currently failing URL,
not the first url.

Example multi-problem run that occured in real life:
```
==> 5821: Installing util-macros
curl: (28) Connection timed out after 10000 milliseconds
curl: (16) Error in the HTTP2 framing layer
curl: (22) The requested URL returned error: 403 Forbidden
==> Fetching https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2
==> Failed to fetch file from URL: https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2
    Curl failed with error 28
==> Fetching https://mirrors.ircam.fr/pub/x.org/individual/util/util-macros-1.19.1.tar.bz2
==> Failed to fetch file from URL: https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2
    Curl failed with error 16
==> Fetching http://xorg.mirrors.pair.com/individual/util/util-macros-1.19.1.tar.bz2
==> Failed to fetch file from URL: https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2
    URL https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2 was not found!
==> Fetching from https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2 failed.
==> Error: FetchError: All fetchers failed for spack-stage-util-macros-1.19.1-se2a2e74oyusj2r4esgcb7pr3qhh45ef
```

- `urls[0]`: HTTP2 layer error
- `urls[1]`: timeout
- `urls[2]`: missing file on mirror

* x.org: two more mirrors

x.org mirrors are a bit tricky, since many are out-of-sync or off.
A good package to test with is `util-macros`, which had a "recent"
release.
2020-06-18 10:37:32 +02:00
Adam J. Stewart
1f85d6eceb Docs: fix rst link to spack ci (#17147) 2020-06-18 09:44:03 +02:00
Toyohisa Kameyama
58e20430b1 minimap2: fix a typo in the recipe (#17148) 2020-06-18 09:43:06 +02:00
Seth R. Johnson
1bb94f2913 glib: fix 2.56 build with python@2 (#17144)
* glib: fix 2.56 build with python@2

* flake8
2020-06-17 23:32:25 -05:00
Joseph Ciurej
c8199ece65 python: fix patch issue for 2.7.X, 3.7.X (#17140)
* python: fixing patch issue for 2.7.X, 3.7.X versions (#17128)

* python: fixing the C/C++ 'distutils' patching for @3.7.0:3.7.1
2020-06-17 23:30:41 -05:00
Greg Becker
5b59e883c1 cray module do not work without CRAY_LD_LIBRARY_PATH (#17031)
Co-authored-by: Gregory Becker <becker33.llnl.gov>
2020-06-17 15:53:30 -07:00
Adam J. Stewart
c0cdc00409 oneDNN: add v1.5.0 (#17137) 2020-06-17 16:01:46 -05:00
Michael Kuhn
f7008f37d4 slurm: Fix build with gcc@10:
gcc@10: defaults to -fno-common, which breaks slurm up to version
20-02-1. For more details, see https://gcc.gnu.org/gcc-10/porting_to.html
2020-06-17 13:42:00 -07:00
Sergey Kosukhin
01b277ad0f openmpi: options for local transport (#16831) 2020-06-17 14:41:24 -05:00
Chris White
506f31b7a7 axom conduit mfem build fixes (#17121)
* honor global compiler flags

* Honor debug variant when using global compiler flags

* Add cppflags to c/cxx flags, clarify flag handling
2020-06-17 12:43:47 -05:00
vvolkl
03880f5413 Split hepmc Into hepmc and hepmc3 (#16892) 2020-06-17 12:13:27 -05:00
Michio Ogawa
ad18933ef4 FrontISTR: various updates to the package (#17089)
* Added maintainers
* Refined dependencies
* Changed git url
2020-06-17 17:45:51 +02:00
Sergey Kosukhin
eca08c77e3 openmpi: fixes for NAG compiler (#17073)
* openmpi: fixes for NAG compiler

* openmpi: more fixes
2020-06-17 10:32:08 -05:00
Seth R. Johnson
e90c229dab Fix/clarify some trilinos variants/dependencies (#17006)
- Parallel HDF5 isn't required -- the comment seems to be about a
  transitive dependency with pnetcdf.
- Boost usage should respect the variant, not automatically be reenabled
  when choosing DTK.
2020-06-17 09:34:53 -05:00
takanori-ihara
eb5f1886b7 py-tensorflow: Update for use with Fujitsu compiler (#17088)
* py-tensorflow: Update for use with Fujitsu compiler

* py-tensorflow: remove -march option

* fix flake8 error
2020-06-17 08:00:36 -05:00
darmac
dc0dfe9220 New package: lynx (#17099) 2020-06-16 23:04:00 -07:00
Muhammad Haseeb
d2b745b3d6 lua: requires -ltermcap when building (#17108) 2020-06-16 22:55:46 -07:00
Fabian Brandt
494a523636 libnetworkit: add version 7.0 (#17111) 2020-06-16 22:44:43 -07:00
Ryan Mast
0c28d8932f helics: Add version 2.5.2 2020-06-16 22:43:27 -07:00
Seth R. Johnson
93fcca900f vecgeom: add version 1.1.7 (#17120) 2020-06-16 22:42:56 -07:00
h-denpo
fd8971feec Modified for Fujitsu compiler. (#17124) 2020-06-16 22:36:08 -05:00
Glenn Johnson
8e6f0c353c Add patch for older versions of py-tensorflow (#17122)
Versions of py-tensorflow between versions 1.1 and 1.14 need a patch to
avoid an import error on the cloud package even if built without support
for the cloud package.
2020-06-16 22:35:03 -05:00
Toyohisa Kameyama
6e467d13a4 mxnet: avoid GNU parallel shuffle without openmp. (#17095) 2020-06-16 22:24:38 -05:00
takanori-ihara
b0c73c3325 bazel: Update for use with Fujitsu compiler (#16860)
* bazel: Update for use with Fujitsu compiler

* bazel: Fix for use with Fujitsu compiler

* bazel: Fix flake8 error

* bazel: add conflicts setting for use with Fujitsu compiler

* fix flake8 error

* fix flake8 error
2020-06-16 22:18:04 -05:00
takanori-ihara
84e117b497 Add compiler option to use with Fujitsu compiler (#17067)
* Add compiler option to use with Fujitsu compiler

* Fix flake8 error

* remove 1-1_fcc_tf_patch.patch

* fix flake8 error
2020-06-16 21:59:20 -05:00
Axel Huebl
896a14af82 Doc: E4S Build Cache Link (#16986)
Link to the E4S build cache in the according section of the docs.
2020-06-16 15:53:34 -07:00
Geoffrey Oxberry
4652b217cf pango: add libffi, glib, and other dependencies (#12384) 2020-06-16 15:34:18 -07:00
Andrew W Elble
ff816f76b3 ruby: add version 2.7.1 (#17112) 2020-06-16 21:35:49 +02:00
Tom Payerle
4a948060cf VTK: add version 9.0.0; update Python dependency constraints (#17019)
In Python 3.8, the reserved "tp_print" slot was changed from a function
pointer to a number, which broke the Python wrapping code in vtk@8
(causing "cannot convert 'std::nullptr_t' to 'Py_ssize_t'" errors in
various places).  This is fixed in vtk@9.0.0.

This patch:

1) adds vtk@9.0.0
2) updates depends_on constraints to only use python@3.8: for vtk@9:
   vtk@:8 depends on python@2, and vtk@8.0.1:8.9.9 depends on python@:3.7
3) Adds CMake flag VTK_PYTHON_VERSION=3 when using python@3 with vtk@9
2020-06-16 11:33:35 -07:00
psakievich
dc31afe67d Yaml spec parsing corner case (#17101)
* Catch yaml filename corner case in spec parser

* improved regex and remove redundant error checking

Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-06-16 13:27:33 -05:00
Omar Padron
e816b66c94 fix docker image entrypoints (#17105)
Also removes extraneous prompt and ssh handling logic.
2020-06-16 14:11:13 -04:00
Joseph Ciurej
0095c4c25c python: fix distutils for python modules (e.g. matplotlib) with C and C++ source files (#16856)
* python: adding a distutils fix to improve build compatibility for C++ extension modules (e.g. py-matplotlib)

* python: added C/C++ distutils patches for python@3.6:3.8
2020-06-16 12:45:36 -05:00
Tomoki, Karatsu
4b48f70393 gobject-introspection: build sequentially when using the Fujitsu compiler. (#17092) 2020-06-16 14:51:29 +02:00
victorusu
0f484380f5 reframe: fix package bugs with v3.0 (#17104)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-16 13:49:47 +02:00
vvolkl
e28561241b ROOT: set LD_LIBRARY_PATH when ~rpath (#16899)
Allow Spack to build with ROOT as an external dependency by setting
LD_LIBRARY_PATH: given that the external package was not built by
Spack, dependents would not be able to locate libraries using RPATHs
when running ROOT binaries.
2020-06-15 23:31:41 -07:00
darmac
9f73e60ba9 Add new package: lzop (#17098) 2020-06-16 08:28:44 +02:00
John Jolly
8882dc0d96 chill: Update dependency versions
Specified Python to be v2.7 only, as Python3 support is not currently
implemented in chill.

Update chill dependency versions for the following libraries to the
specific versions:

* rose:  v0.9.13.0
* bison: v3.4.2

Both rose and iegenlib are build time dependencies, but are also run
time dependencies. Added 'run' to the build type for both dependencies.
2020-06-15 23:08:34 -07:00
Sergey Kosukhin
a492187973 hdf5: fix libtool files (#17009) 2020-06-15 23:05:46 -07:00
Andrew W Elble
7e322b3184 CUDA: remove preexisting log file before install (#17018)
cuda: 10.1 and onward, installers will crash if /tmp/cuda-installer.log
exists

Try to help if user owns the file, otherwise try to provide useful
info. Clean up the file post-install to try to avoid the whole issue.
2020-06-15 22:57:00 -07:00
Jen Herting
d4f0a8f70b [py-torchvision] added dependency of ffmpeg (#17032)
* [py-torchvision] added dependency of ffmpeg

* [py-torchvision] needs ffmpeg >= 3.1. See: https://github.com/pytorch/vision/issues/1597

* [py-torchvision] ffmpeg dependency is only for py-torchvision versions >= 0.4.2.
2020-06-15 22:46:35 -07:00
Amjad Kotobi
0111f2932f pcre2: add version 10.35; JIT support (#17037) 2020-06-15 22:44:04 -07:00
Jose E. Roman
f54c9ae305 SLEPc: added v3.13.3 (#17085) 2020-06-16 06:25:30 +02:00
Kai Torben Ohlhus
e8fc7871da openblas: added v0.3.10. (#17086)
[OpenBLAS 0.3.10](https://github.com/xianyi/OpenBLAS/releases/tag/v0.3.10) was released.
2020-06-16 06:22:48 +02:00
Sinan
06c06a5665 arrayfire: added new package at v3.7.0 (#15598)
Co-authored-by: Sinan81 <Sinan81@github>
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-16 06:15:50 +02:00
darmac
6f07f8ae3e netdata: added new package at v1.22.1 (#17094) 2020-06-16 06:08:45 +02:00
darmac
d1aa54115c cyrus-sasl: added new package at 2.1.27 (#17096) 2020-06-16 06:00:53 +02:00
darmac
70be1038fd memtester: added new package at v4.3.0 (#17097) 2020-06-16 05:59:31 +02:00
Miroslav Stoyanov
32558525f6 heffte: added v1.0 (#17102) 2020-06-16 05:44:47 +02:00
David Beckingsale
cb028aaf12 Update master to main for RAJA and Umpire (#17107) 2020-06-16 05:35:23 +02:00
h-denpo
01d9063bb1 ffb: prevent the architecture to be always "x86_64" (#17093) 2020-06-16 05:29:35 +02:00
Todd Gamblin
e5066664ab README: Update LLNL release number to Apache-2.0/MIT version (#17109)
The release number in the README had not been updated since we did the
relicense to Apache-2.0 OR MIT in v0.12.0. LLNL-CODE-811652 is Spack's
new LLNL release number.
2020-06-15 17:10:49 -07:00
Matthias Diener
24ff34335b dateutils: add version 0.4.7 (#17106) 2020-06-15 22:50:56 +02:00
Itaru Kitayama
eb26b4666f Add 4.5 release to cubelib (#17090) 2020-06-15 15:21:35 -05:00
Massimiliano Culpo
5fc88a7c65 Skip failing test on MacOS (#17072)
* Skip failing test on MacOS

* Update setup-python action and unpin coverage
2020-06-15 13:24:56 -05:00
darmac
6c2e14dfca grafana: added new package at v6.7.3 (#16788) 2020-06-15 15:56:29 +02:00
Sinan
1501de59ed Package/py-lmfit: add new version (#16975)
* save edits

* tidy up

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* add python version constraints

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Sinan81 <Sinan81@github>
2020-06-14 08:36:10 -05:00
Mark W. Krentel
aa50c2c7d0 hpctoolkit: add version 2020.06.12 (#17081)
Add versions 2020.06.12 and develop.
Switch default for variant papi to true.
2020-06-13 09:01:42 -05:00
Sinan
59e4caad1d add dependency for icd variant, or else build fails (#17079)
Co-authored-by: Sinan81 <Sinan81@github>
2020-06-13 09:00:46 -05:00
Greg Becker
58332d028e clang: add 'version_argument', remove redundant method (#17071) 2020-06-13 15:31:24 +02:00
Sinan
b9cf50d571 New package: ocl-icd (#17078)
* new package: ocl-icd

* flake8

Co-authored-by: Sinan81 <Sinan81@github>
2020-06-12 21:23:55 -05:00
victorusu
82f84fb61b Reframe 3.0 (#17005)
* Add pygelf Python package

* Update ReFrame package version

* Address styling remarks

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Address PR remarks

* Remove setuptools runtime dependency

* Address PR remarks

* Address PR remarks

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-12 20:38:17 -05:00
健美猞猁
50a50875f9 py-healpy: a new package. (#17001)
* py-healpy: a new package.

* Use internal libraries within py-healpy.

* Fix python dependencies.

* Fix python dependency.
2020-06-12 20:36:24 -05:00
Ross Miller
a69a213b9b New recipe for building the Log4C package (#17038)
* New recipe for building the Log4C package

* Update Copyright notice
2020-06-12 20:19:28 -05:00
darmac
4053036388 fix depends issue and support for aarch64 (#17045) 2020-06-12 20:18:38 -05:00
Peter Scheibel
2b58b3a1bf replace 'no' with 'none' as possible value of 'threads' variant (#17063) 2020-06-12 20:12:35 -05:00
Amjad Kotobi
416e94be72 xrootd: new versions (#17076) 2020-06-12 20:06:15 -05:00
Greg Becker
ea8a0be465 add compilers to mpi setup_run_environment methods forall mpi implementations (#17015) 2020-06-12 14:05:12 -07:00
Andrew W Elble
67b86623a2 bazel: patch to allow py-tensorflow (and likely other bazel packages) to build. (#17013)
bazel uses gcc's -MF option to write dependencies to a
file. Post-compilation, bazel reads this file and makes some
determinations.

"Since gcc is given only relative paths on the command line,
 non-system include paths here should never be absolute. If they
 are, it's probably due to a non-hermetic #include, & we should stop
 the build with an error."

Spack directly injects absolute paths, which appear in this file and
cause bazel to fail the build despite the fact that compilation
succeeded.

This patch disables this failure mode by default, and allows for it
to be turned back on by using the '~nodepfail' variant.
2020-06-12 13:25:34 -07:00
h-denpo
0c1f1af571 New package: FrontFlow Blue (#16901)
* New package: FrontFlow Blue
       Computational Fluid Dynamics Software for aeroacoustics

* Modify Package ->MakefilePackage

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

Co-authored-by: Greg Becker <becker33@llnl.gov>

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

Co-authored-by: Greg Becker <becker33@llnl.gov>

Co-authored-by: Greg Becker <becker33@llnl.gov>
2020-06-12 12:31:04 -07:00
John Jolly
b90780d256 cscope: Link tinfow instead of tinfo
Whenever attempting to use any ncurses functionality within cscope, a
page fault would result within the ncurses library.

    Program received signal SIGSEGV, Segmentation fault.
    0x00007ffff7fad3cf in termattrs_sp () from .../lib/libncursesw.so.6
    (gdb) bt
    #0  0x00007ffff7fad3cf in termattrs_sp () from .../lib/libncursesw.so.6
    #1  0x00007ffff7faa794 in _nc_setupscreen_sp () from .../lib/libncursesw.so.6
    #2  0x00007ffff7fa614c in newterm_sp () from .../lib/libncursesw.so.6
    #3  0x00007ffff7fa65b9 in newterm () from .../lib/libncursesw.so.6
    #4  0x00007ffff7fa2970 in initscr () from .../lib/libncursesw.so.6
    #5  0x0000000000403dc2 in main (argc=<optimized out>, argv=0x7fffffffcea8) at main.c:574

This is due to a conflict between libtinfo.so and libtinfow.so. Both are
linked into cscope:

    $ ldd $(which cscope)
    /bin/bash: .../lib/libtinfo.so.6: no version information available (required by /bin/bash)
        linux-vdso.so.1 (0x00007fff5dbcb000)
        libncursesw.so.6 => .../lib/libncursesw.so.6 (0x00007f435cc69000)
        libtinfo.so.6 => .../lib/libtinfo.so.6 (0x00007f435cc2c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f435ca29000)
        libtinfow.so.6 => .../lib/libtinfow.so.6 (0x00007f435c9e8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f435cca7000)

Specifically linking libtinfow.so instead of libtinfo.so resolves the
issue.

All instances of '...' above represent the path to the installed ncurses
for Spack.
2020-06-12 12:29:43 -07:00
Sinan
f44a93e4f7 New package: alps (#17023) 2020-06-12 12:27:40 -07:00
Harsh Bhatia
cb20f0152c pygpu: fix linking with gpuarray (#17033)
* add build_ext_args to link pygpu with gpuarray
* libgpuarray: add version 0.7.6
2020-06-12 12:20:57 -07:00
Harmen Stoppels
804b6f2483 libtree package: add version 1.2.0, 1.1.4, and 1.1.3 (#17035) 2020-06-12 11:39:40 -07:00
Patrick Gartung
08c21e4e74 Buildcache: Fix bug in binary string replacement (#17075)
* Fix bug in binary string replacement that results in padding being added multiple times

* Update comment

* Update comment again
2020-06-12 13:38:33 -05:00
Matthias Diener
c4756159f3 New package: clinfo (#17042) 2020-06-12 11:37:34 -07:00
Axel Huebl
42e6cb769e Geant4 +Python: fix module load (#17046)
Adding `extends('python')` makes sure that a

```
spack load -r geant4 +python
python -c "import Geant4"
```

find the module.
2020-06-12 11:28:05 -07:00
Axel Huebl
34fb4b30dc libffi 3.3: float128 ppc patch (#17043)
Apply a patch to fix builds on Power7 and 8, wrongly requesting
float128 support.

Upstream patch: libffi/libffi#561
2020-06-12 11:25:06 -07:00
Adam J. Stewart
4e39dc7174 readline: fix linking to ncurses 2020-06-12 11:05:28 -07:00
Robert Blake
50aba2729b New package: antimony (#17061) 2020-06-12 10:42:59 -07:00
Brian Van Essen
dcd22517c7 hydrogen: add version 1.3.4 (#17066) 2020-06-12 09:53:50 -07:00
Tom Payerle
e1e455ef3f magics: add version 4.2.4 (#17054)
* Add version 4.2.4
* Update checksum for 4.1.0
* Version @4: requires python and py-jinja2 to build
2020-06-12 09:53:08 -07:00
Michael Kuhn
f2ae9ffdf5 gcc: Add 7.5.0 2020-06-12 09:37:53 -07:00
Massimiliano Culpo
3609f36e60 Renamed flags.py to basics.py 2020-06-11 10:06:32 -07:00
Massimiliano Culpo
bbac630aac Reworked tests on compilers to separate version detection
Tests on version detection are now separate from other
tests done on compiler.
2020-06-11 10:06:32 -07:00
Sinan
b50b930d6a New package: py-uncertainties (#16997) 2020-06-11 08:26:43 -07:00
codeandkey
9820a23abd py-gpy: new package at 1.9.9 2020-06-11 08:25:14 -07:00
Justin S
19dba603ad py-paramz: new package at 0.9.5 (#17026) 2020-06-10 18:57:08 -07:00
Massimiliano Culpo
478a8aff0e Move to temporary directory before running dev-build test (#17028)
Without this the test would leave spurious "spack-build-*.txt"
files in the current working directory.
2020-06-10 08:10:57 -07:00
Axel Huebl
2827dca905 ADIOS 2.6.0: New Options (#17025)
Control new options/dependencies in ADIOS2 to avoid pick-up of system
packages.
2020-06-10 10:19:41 -04:00
Toyohisa Kameyama
f6020d259a adios2: fix to build on Fujitsu MPI and Fujitsu compiler (#17034) 2020-06-10 14:53:09 +02:00
asmaahassan90
0de12be52a add gaussian-view (#16890) 2020-06-09 16:58:34 -07:00
Joseph Ciurej
9a18fbbc3e lib/spack : expand spack config vars in 'include' section (#16210)
* Changed the 'include' config section to use 'substitute_path_variables' to allow for Spack config variables to be used (e.g. $spack).

* Fixed a bug with 'include' section path expansion and added a test case for 'include' paths with embedded config variables.
2020-06-09 16:57:27 -07:00
Rob Latham
31791f269b teach spack how to build pmix from git (#16973)
* teach spack how to build pmix from git

* add variant for new REST feature

* reorder package to match guidance
2020-06-09 16:16:38 -05:00
Robert Blake
872ab21103 Add new package: wcs (#16958)
* Adding a package for wcs.

* Turning on sbml for wcs.

* The cpp flag needs to be available for wcs.

* Wcs needs SBML to properly define the namespace.

* Flake8 fixes.

* Fixing the help string with the description.

* Changing cpp to use the new variant syntax.

* Fixing flake8 errors.

* Forgot to delete one last fixme comment.

* Spack "develop" needs to link to repo "devel"

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Robert Blake <rob.c.blake.3@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-09 16:13:54 -05:00
Joseph Ciurej
806a19c6b6 libffi: add patch for building with clang on power (#16855)
* libffi: add patch for building with '%clang target=power*'

* libffi: fix version of clang/power patch
2020-06-09 13:52:01 -07:00
darmac
8b1ffebe00 Add new package: py-workload-automation 2020-06-09 12:02:49 -07:00
victorusu
a52945613d New package: py-pygelf (#17004) 2020-06-09 11:54:59 -07:00
Rob Latham
07e97e3ebc jansson: add versions 2.10 to 2.13.1 (#17011) 2020-06-09 11:53:20 -07:00
Massimiliano Culpo
25a837bf79 Testing: create mock executable fixture (#16999) 2020-06-09 11:00:23 -07:00
Greg Becker
2421d903b0 SpecList: fix recursion for references (#16897)
* SpecList: fix and refactor variable expansion
2020-06-09 08:52:46 -07:00
Jen Herting
11b5fa7170 [util-linux] disabling systemd (#17008)
If systemd support is enabled, install will attempt to modify files in
system systemd directories.
2020-06-09 17:23:29 +02:00
Nathan
f70b72edc5 Set the BOOST_ROOT environment variable when library is loaded (#16818)
* Adding BOOST_ROOT env variable

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-09 08:01:55 -05:00
Massimiliano Culpo
2e20ee8ea2 suite-sparse: build libraries without running demos (#17007)
fixes #16638
2020-06-09 06:54:50 +02:00
oracleLee
9cda38c03d Update miniconda3@4.8.2 (#17003)
* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py
2020-06-08 22:48:59 -05:00
Adam J. Stewart
bcf8ebff4f Cray: fix Blue Waters support and user-built MPIs on Cray (#16593)
* Cray: fix Blue Waters support

* pkg-config env vars needed on Blue Waters

* cray platform: fix support for user-build MPI on cray machines

* reintroduce cray environment cleaning behind cnl version guard

* cray platform: fix support for user-build MPI on cray machines

Co-authored-by: Gregory <becker33@llnl.gov>
2020-06-08 16:44:07 -07:00
Ryan Mast
6f9bfec32e HELICS: add version 2.5.1 (#17014) 2020-06-08 14:37:49 -07:00
darmac
4d064fd56c rt-tests: fix build error (#16998)
This is a makefile package and needs to invoke make.
2020-06-08 10:51:59 -07:00
darmac
f8b5e413b4 Add new package: py-devlib (#16982)
* Add new package: py-devlib

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* add depends

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-08 08:33:40 -05:00
vvolkl
8995b3ad3a Add Package HSF-CMakeTools (#16951)
* [hsf-cmaketools] add package

* fix formatting

* Apply suggestions from code review

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* [hsf-cmaketools] remove cmake_prefix_path which is set already by spack

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-08 08:30:23 -05:00
Amjad Kotobi
c76ab4d8fe R: url-version custom, release 4 (#16962)
* R: url-version custom, release 4

* r: pcre condition
2020-06-08 08:28:21 -05:00
iarspider
3ea65818e1 Add py-storm@0.23 and update URL (#16991)
* Add py-storm@0.23 and update URL

* Update package.py
2020-06-08 14:09:48 +02:00
Justin S
d9738f569d ltr-retriever: new package at v2.8.7 (#16832)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-08 08:07:34 +02:00
Greg Becker
bd1a0a9ad4 view remove: directly check whether specs own files before removing from view (#16955)
Bugfix for hardlinks and copies
2020-06-08 06:43:52 +02:00
Mark W. Krentel
763760cfe0 hpcviewer, ibm-java: updates versions (#16987)
hpcviewer: added v2020.05.
ibm-java:  added v8.0.6.10.
2020-06-08 06:15:37 +02:00
iarspider
664c32efb4 py-ipykernel: added v5.1.1 (#16988) 2020-06-08 06:11:24 +02:00
Toyohisa Kameyama
b00f97f7cc boost: Don't use pre-compiled headers for Fujitsu compiler (#16914)
* boost: Dopn't use pre compile header.

* move %fj.
2020-06-07 09:39:53 -05:00
John Jolly
33923320a8 rose: Add build dependencies for flex and bison (#16981) 2020-06-07 09:36:14 -05:00
Sinan
a2c6f6a703 py-gast: add version 0.3.3 (#16945)
* py-gast: add version 0.3.3

* add python version constraints

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-07 09:33:03 -05:00
iarspider
6498b752d1 Add rpy2@3.0.4 (#16924)
* Add rpy2@3.0.4

* Style fixes

* Update package.py

* Proper Python version requirement
2020-06-06 16:33:34 -05:00
Toyohisa Kameyama
7bc44fa165 ffr: fix mpi programs to use mpi compiler wrapper. (#16948) 2020-06-06 16:30:43 -05:00
vvolkl
8f291c7e95 [prmon] add package (#16949) 2020-06-06 16:29:42 -05:00
Michael Kuhn
ad2dd4be01 mongo-c-driver: Add 1.16.2 (#16956)
This also updates libbson to the corresponding version and adds a few
missing older versions.
2020-06-06 16:18:48 -05:00
Matthieu Dorier
543f9f91d4 added CTRE package (#16964) 2020-06-06 16:14:40 -05:00
John Jolly
46a751081d gcc: Fix error 'size of array is negative' (#16969)
gcc 9.3.0 and glibc 2.31 (found in the base install of Ubuntu 20.04)
cause the gcc package to error during build with the error:

    "size of array 'assertion_failed__####' is negative"

Previous to this fix, the error was resolved for v8.1.0 <= gcc <= v9.2.0
via two patches.

This fix backports those patches for v5.3.0 <= gcc <= v7.4.0

Potentially these patches need to be backported to versions of gcc
before v5.3.0, but other compile issues need to be resolved for earlier
versions of gcc first.

Fixes #16968
2020-06-06 16:14:11 -05:00
Tom Payerle
885808cc13 intel-tbb: Fix for #16938 add custom libs method (#16972)
* intel-tbb: Fix for #16938 add custom libs method

Override the libs method to look for libraries of form libtbb*
(instead of inherited which looks for libintel-tbb*)

* Fixing pre-existing flake8 issues
2020-06-06 16:12:46 -05:00
darmac
c835b93109 Add new package: py-louie (#16983) 2020-06-06 16:02:15 -05:00
darmac
77fbdff8a2 Add new package: lxc (#16984) 2020-06-06 16:00:59 -05:00
Sinan
36f9550178 py-mysqlclient: relax dependency constraint, add new versions (#16985)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-06 16:00:29 -05:00
Sinan
73d13461b1 ensure xla is turned off (#16974)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-06 15:51:19 -05:00
Sinan
7b6e1ae9d3 py-astunparse: add version 1.6.3 (#16946)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-06-06 15:50:16 -05:00
darmac
c5ac168f31 protobuf: support aarch64 @2.5.0 (#16862)
* protobuf: support aarch64 @2.5.0

* refine cmake args

* fix patch name
2020-06-06 15:47:30 -05:00
Nithin Senthil Kumar
944f0abb36 Update package for MVAPICH2 2.3.4 release (#16960)
Co-authored-by: senthilkumar.16 <senthilkumar.16@nowlab.cse.ohio-state.edu>
2020-06-06 12:51:27 +02:00
John Jolly
d755cc8ce9 iegenlib: add build dependencies for automake and libtool (#16980) 2020-06-06 09:55:14 +02:00
Andrew Gaspar
374f1a62e2 py-flake8: add version 2.8.2 (#16959)
* py-flake8: add version 3.8.2
  * This version depends on different versions of py-pycodestyle
    and py-pyflakes
  * When built for python@:3.7, this depends on the
    py-importlib-metadata backport library
* py-pycodestyle: add version 2.6.0
* py-pyflakes: add version 2.2.0
2020-06-05 18:25:42 -07:00
Amjad Kotobi
27eb7d9f5f xrootd: add version 4.12.1 (#16966) 2020-06-05 18:18:00 -07:00
Sinan
a08f3dd505 New package: py-asteval (#16976) 2020-06-05 18:16:13 -07:00
Michael Kuhn
bfa05628cb pkgconf: Add 1.7.3 2020-06-05 18:14:20 -07:00
Christoph Junghans
76abf35813 cajita: got merged in cabana (#16971) 2020-06-05 12:38:07 -06:00
Tomoki, Karatsu
89cc507cf6 cmake: add linker option for VerifyFortranC when using Fujitsu compiler. (#16963) 2020-06-05 13:29:36 +02:00
Tomoki, Karatsu
c3be6d903a cmake: modify FindMPI.cmake to treat Fujitsu MPI correctly (#16864) 2020-06-05 13:25:02 +02:00
Tomoki, Karatsu
8be7823cc5 suite-sparse: change the condition to add C11 flag. (#16859) 2020-06-05 13:17:41 +02:00
Greg Becker
94e77333e6 spack dev-build: Do not mark -u builds in database (#16333)
Builds can be stopped before the final install phase due to user requests. Those builds 
should not be registered as installed in the database.

We had code intended to handle this but:

  1. It caught the wrong type of exception
  2. We were catching these exceptions to suppress them at a lower level in the stack

This PR allows the StopIteration to propagate through a ChildError, and catches it
properly. Also added to an existing test to prevent regression.
2020-06-05 00:35:16 -07:00
Massimiliano Culpo
5b272e3ff3 commands: use a single ThreadPool for spack versions (#16749)
This fixes a fork bomb in `spack versions`. Recursive generation of pools
to scrape URLs in `_spider` was creating large numbers of processes.
Instead of recursively creating process pools, we now use a single
`ThreadPool` with a concurrency limit.

More on the issue: having ~10 users running at the same time spack
versions on front-end nodes caused kernel lockup due to the high number
of sockets opened (sys-admin reports ~210k distributed over 3 nodes).
Users were internal, so they had ulimit -n set to ~70k.

The forking behavior could be observed by just running:

    $ spack versions boost

and checking the number of processes spawned. Number of processes
per se was not the issue, but each one of them opens a socket
which can stress `iptables`.

In the original issue the kernel watchdog was reporting:

    Message from syslogd@login03 at May 19 12:01:30 ...
    kernel:Watchdog CPU:110 Hard LOCKUP
    Message from syslogd@login03 at May 19 12:01:31 ...
    kernel:watchdog: BUG: soft lockup - CPU#110 stuck for 23s! [python3:2756]
    Message from syslogd@login03 at May 19 12:01:31 ...
    kernel:watchdog: BUG: soft lockup - CPU#94 stuck for 22s! [iptables:5603]
2020-06-05 00:08:32 -07:00
eugeneswalker
92e24950e5 add erlang version 23.0 (#16961) 2020-06-04 22:49:46 -07:00
Andrew Gaspar
0d43e41da0 Rust v1.44.0 (#16957)
* libgit2 v1.0.1

* Rust 1.44.0

* Fix flake8
2020-06-04 16:59:14 -05:00
Andrew Gaspar
0a3601a3f1 libgit2 v1.0.1 (#16952) 2020-06-04 16:34:19 -05:00
eugeneswalker
44ec8cc4e4 sz: patch in ctag optionality from robertu94/sz 3637a87f986c (#16953) 2020-06-04 09:16:11 -07:00
eugeneswalker
b64ec7fba4 pass hwloc to configure via useropt; use lib/ or lib64/ as appropriate for libunwind (#16941) 2020-06-04 06:58:33 -07:00
Adam J. Stewart
7617054a5d Fix obsolete references to wx package (#16944) 2020-06-04 08:05:48 -05:00
Adam J. Stewart
0dd1d1f21a NumPy: add 1.18.5 (#16943) 2020-06-04 08:05:22 -05:00
iarspider
ad50a02188 Add matplotlib 3.1.0 (#16921) 2020-06-03 22:26:13 -05:00
iarspider
6f4631ee48 Add py-jupyter-core@4.6.1 (#16922) 2020-06-03 22:25:38 -05:00
Seth R. Johnson
104a0c4259 Trilinos: add Stratimikos package (#16925)
Stratimikos is an optional dependency for our project. It depends on
Thyra, and thyra has subpackages that should be enabled based on
tpetra/epetra/epetraext.
2020-06-03 22:25:09 -05:00
Mathew Cleveland
02548c56fa + Add opppy-0_1_3 (#16926)
+ Update maintainers for OPPPY package
+ remove "run" requirement for setuptools and sphynx

Co-authored-by: Cleveland <cleveland@lanl.gov>
2020-06-03 22:16:46 -05:00
iarspider
16e8e434c2 Add pytest@5.3.4 (#16927)
Dropping atomicwrites dependency: https://github.com/pytest-dev/pytest/issues/6147
2020-06-03 22:15:01 -05:00
Seth R. Johnson
6f6c243699 mpfr: update hash for 4.0.2 patch (#16937) 2020-06-03 22:11:44 -05:00
Adam J. Stewart
61f61f3cde py-openpyxl: add 3.0.3 (#16940) 2020-06-03 22:09:58 -05:00
Adam J. Stewart
5a7b555314 IPython: fix setuptools dependency (#16915)
* IPython: fix setuptools dependency

* Remove extra colon
2020-06-03 22:09:40 -05:00
Adam J. Stewart
dd19d6f863 Fix parsing of EvtGen URL (#16883)
* Fix parsing of EvtGen URL

* Flake8 fix
2020-06-03 22:09:22 -05:00
Adam J. Stewart
a02fc8ae58 Ignore __pycache__ directory (#16836) 2020-06-03 22:09:06 -05:00
Tom Payerle
0fb671a19e Gnuplot fix 16928 (#16929)
* gnuplot: Fix for #16928

Dependency for --with-wx flag mistyped (should be wxwidgets)

* Revert "gnuplot: Fix for #16928"

This reverts commit 2b85814e5c.

* gnuplot: Fix for #16928

Dependency spec for --with-wx flag mistyped (should be wxwidgets, not
wx)
2020-06-03 22:08:07 -05:00
shanedsnyder
748be57790 update darshan-runtime & darshan-util versions (#16934)
* update darshan-runtime & darshan-util versions

includes up through the current release, 3.2.1

* remove pre-releases, not needed in spack
2020-06-03 18:05:46 -07:00
Peter Scheibel
24775697f5 Mirrors: add option to exclude packages from "mirror create" (#14154)
* add an --exclude-file option to 'spack mirror create' which allows a user to specify a file of specs to exclude when creating a mirror. this is anticipated to be useful especially when using the '--all' option

* allow specifying number of versions when mirroring all packages

* when mirroring all specs within an environment, include dependencies of root specs

* add '--exclude-specs' option to allow user to specify that specs should be excluded on the command line

* add test for excluding specs
2020-06-03 17:43:51 -07:00
eugeneswalker
0086c47546 patch lambda capture issue for @1.1906.1, fixed in upstream faodel@master (#16935) 2020-06-03 11:38:27 -07:00
Greg Becker
3347ef2de4 Feature: add option to create view by copying/relocating files (#16480)
* add subcommand `spack view copy/relocate`

* update bash completions

* add copy/relocate commands to view tests

* allow copied views to be removed
2020-06-03 09:45:13 -07:00
Sergey Kosukhin
7aa9cb0f7a Implicit rpaths for NAG/GCC mixed toolchain (#14782)
* Implicit rpaths for NAG.

* set up environment when checking for implicit rpaths
2020-06-03 09:42:13 -07:00
Massimiliano Culpo
70c3b0ba09 spack uninstall: improve help message (#16886)
fixes #12527

Mention that specs  can be uninstalled by hash also in
the help message. Reference `spack gc` in case people
are looking for ways to clean the store from build time
dependencies.

Use "spec" instead of "package" to avoid ambiguity in
the error message.
2020-06-03 16:30:12 +02:00
dmorone
600e2cfc4f amber: updated dependency constraint on cuda (#16919)
Fix message 'amber requires cuda version :10.1.243, but spec asked for 10.2.89'
2020-06-03 13:17:36 +02:00
Amjad Kotobi
eed82a19be openssh: added v8.3p1 and v8.1p1 (#16917) 2020-06-03 11:28:42 +02:00
Amjad Kotobi
417eb3c5b1 git: added v2.27.0 (#16918) 2020-06-03 11:24:08 +02:00
Justin S
5604c8d91a mummer4: new package at 4.0.0-beta2 (#16907) 2020-06-02 22:09:39 -05:00
Robert Blake
0e71e8716a Add new package: sbml (#16898)
* Adding a module for sbml.

* Adding support for all the languages.

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

Co-authored-by: Greg Becker <becker33@llnl.gov>

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

Co-authored-by: Greg Becker <becker33@llnl.gov>

Co-authored-by: Robert Blake <rob.c.blake.3@gmail.com>
Co-authored-by: Greg Becker <becker33@llnl.gov>
2020-06-02 17:54:50 -07:00
Adam J. Stewart
7f086af05e Ruby: add warning about Avira antivirus (#16882) 2020-06-02 15:05:50 -07:00
Massimiliano Culpo
d5ffec1b2f Unify tests for compiler command in the same file (#16891)
* Unify tests for compiler command in the same file

Tests for the "spack compiler" command were previously
scattered among different files.

* Tests should use mutable_config, since they modify the compiler list
2020-06-02 14:59:42 -07:00
Toyohisa Kameyama
76142124d2 alsa-lib: Add new version and python dependency. (#16905)
Add version 1.2.2.
Add conditional python dependency.
Add patch for 1.1.4.1 and python.
2020-06-02 14:23:14 -07:00
Justin S
5d37439a7b gmap-gsnap: add 2020-06-01 (#16906) 2020-06-02 14:21:00 -07:00
Chuck Atkins
5ace804dc2 Bump ADIOS to 2.6.0 (#16908) 2020-06-02 14:15:23 -07:00
iarspider
9a17d48455 Add ipython 7.5.0 (#16801)
* Add ipython 7.5.0

* Update dependencies

* Update package.py
2020-06-02 15:09:35 -05:00
takanori-ihara
b60ab6eefd ruby: fixed build with Fujitsu compilers (#16889) 2020-06-02 11:07:48 +02:00
Xavier Delaruelle
c7851f896c environment-modules: added v4.5.1 (#16896) 2020-06-02 11:06:02 +02:00
Greg Becker
2795414a80 Fix satisfaction checks for excluding variants from matrices (#16893)
Because of the way abstract variants are implemented, the following 
spec matrix does not work as intended:
```
matrix:
- [foo]
- [bar=a, bar=b]
exclude:
- bar=a
```
because abstract variants always satisfy any variant of the same
name, regardless of values.

This PR converts abstract variants to whatever their appropriate 
type is before running satisfaction checks for the excludes clause 
in a matrix.

fixes #16841
2020-06-02 11:02:28 +02:00
takanori-ihara
0875c6a5d0 py-grpcio: fixed build with Fujitsu compilers (#16900) 2020-06-02 10:55:55 +02:00
Axel Huebl
6aa0e9944e ccache: added v3.7.9 (#16902)
Add the latest CCache release. Fixes issues with `-x cu` that are
not present in the last checksummed release. This fixes workflows
with CMake.
2020-06-02 10:53:12 +02:00
Sinan
7f2db5c5b0 qt: add conflict for old gcc (#16904)
Co-authored-by: Sinan81 <Sinan81@github>
2020-06-02 10:51:35 +02:00
Michael Kuhn
6035b32748 go: added v1.14.4 and v1.13.12 (#16903) 2020-06-02 10:48:35 +02:00
Jonathon Anderson
feda2a3073 openmpi: add opa-psm2 dependency (#16873)
Also document with_or_without and enable_or_disable, (which are used
to configure the opa-psm2 dependency).
2020-06-01 15:33:24 -07:00
Amjad Kotobi
ab6905d5fa r-exactextractr: package type fixed (#16881)
* r-exactextractr: should inherit from RPackage
* r-exactextractr: fixed URL
2020-06-01 14:01:41 -07:00
Massimiliano Culpo
2a4ca34a61 Recognize system installed gcc-10 as compilers (#16884)
Now that the version number of GCC reached double digits, an update
to the regex is needed to recognize gcc-10 as an executable to be
inspected when searching for compilers.
2020-06-01 13:59:14 -07:00
t-karatsu
9741de504f netcdf-cxx4: Add 'doxygen' dependency. 2020-06-01 13:56:07 -07:00
Jianwen WEI
4387975556 miniforge3: add version 4.8.3-4. 2020-06-01 13:54:53 -07:00
mic84
fe74c22184 amrex: add version 20.06 (#16895) 2020-06-01 13:53:49 -07:00
Christoph Junghans
daea1fcef6 exampm: fix build (#16894)
* cabana: add mpi variant

* cajita: initial import

* exampm: update deps

* flake8
2020-06-01 13:58:09 -06:00
健美猞猁
de63e1c2ac healpix-cxx: added new package at v3.50.0 (#16846) 2020-06-01 06:13:35 +02:00
Greg Becker
b1bd777403 petsc: fix conditional activation of parmetis (#16533) 2020-05-31 14:13:10 -05:00
Hector Martinez-Seara
23a5f3f200 Updated unison to v2.51.2 (#16772)
The current package does not work. Also several ocaml versions do
not compile such as 4.09.0. Updated to the new ocaml version to
4.10.0, which is now a prerequisite.
2020-05-31 13:58:37 -05:00
iarspider
6282e337f3 Add new version of py-astroid (#16805)
* Add new version of py-astroid

* Add new version of py-lazy-object-proxy

* 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>
2020-05-31 13:54:33 -05:00
健美猞猁
3896a401db Install libsharp header files to include/libsharp. (#16847)
* Install libsharp header files to include/libsharp.

* Fix flake8 issues.

* Simplify specification of install path.
2020-05-30 23:09:27 -05:00
Jordan Ogas
66b8b5ab37 add charliecloud 0.16 (#16810)
* add charliecloud/0.16

* tidy comments
2020-05-30 22:10:50 -05:00
darmac
2fdb6b5e44 Add new package: canal (#16790) 2020-05-30 21:45:59 -05:00
takanori-ihara
e2fa74c533 Add new package:linsys-v (#16823) 2020-05-30 21:20:08 -05:00
Satish Balay
1ec8d928fa petsc@3.13: update superlu-dist dependency - as superlu-dist@6.3.1 has API change (#16849) 2020-05-30 21:10:34 -05:00
Erik Schnetter
b00080d2da ssht: Install include files into "include/ssht" (#16879) 2020-05-30 21:08:18 -05:00
Adam J. Stewart
9eebc6b4c1 horovod: added v0.19.4 (#16878) 2020-05-30 20:22:00 +02:00
Adam J. Stewart
d76eb1fa51 Pandas: add 1.0.4 (#16877) 2020-05-30 11:09:10 -05:00
noguchi-k
816f780be8 revocap-refiner: add space and remove unused function. (#16861) 2020-05-30 10:57:12 -05:00
darmac
7a363e2a3f Add new package: netkit-ftp (#16876)
* Add new package: netkit-ftp

* remove parallel constraint
2020-05-30 10:47:47 -05:00
Jen Herting
3a66d0773c perl-bioperl: fixed version 1.007002 (#16826)
* [perl-bioperl] fixed url for version 1.007002
* [perl-bioperl] fixed conditional method directives
2020-05-30 00:17:01 -07:00
Amjad Kotobi
857d2c9150 r-lfe: New package 2020-05-30 00:15:50 -07:00
Michael Kuhn
3cc0e1a333 cpio: add patch to fix build with gcc@10: (#16844) 2020-05-30 00:14:57 -07:00
Amjad Kotobi
58cc75ac29 git-lfs: add versions 2.10.0, 2.11.0 (#16850) 2020-05-30 00:14:24 -07:00
Ben Morgan
c35ced1465 geant4: New version 10.6.2 (#16868)
Update both main and data packages. Data versions have not changed
in new version.

Provide new python variant to build Python bindings for 10.6.2 and
newer. Add dependencies on python and Boost+python required by variant.
2020-05-30 00:13:24 -07:00
Sergey Kosukhin
9d1f71e89f repo: fix construction of UnknownPackageError (#16865)
Also improve the error messages
2020-05-29 20:07:44 +02:00
Nicholas Sly
ec5959694c Add netcdf-c~parallel-netcdf variant specification to netcdf-fortran~mpi. (#16671)
Co-authored-by: sly <sly@lanl.gov>
2020-05-29 09:48:03 -07:00
Christoph Junghans
11fc6c5791 examinimd/miniaero: fix build with kokkos-legacy (#16867)
* examinimd/miniaero: fix build with kokkos-legacy

* flake8
2020-05-29 10:17:55 -06:00
Robert Rosca
edd075a5e1 Mention that packages can be uninstalled by hash (#16863) 2020-05-29 13:23:02 +02:00
Greg Becker
bd95b7df86 spack module_cmd: set LD_LIBRARY_PATH for python in subshell. (#16827)
* Ensure python runs with proper ld_library_path within Spack regardless of environment
2020-05-29 11:57:21 +02:00
Jane Herriman
6af3272e1d Update error message when UnavailableCompilerVersionError is triggered (#16838)
Co-authored-by: Herriman <herriman1@panorama.llnl.gov>
2020-05-29 10:53:43 +02:00
Greg Becker
a21fab6fe4 compilers: add opt_flags and debug_flags properties (#16710) 2020-05-29 10:52:31 +02:00
0t1s1
2aca0cf565 gridlab-d: added new package. (#16816) 2020-05-29 09:37:12 +02:00
Greg Becker
38ac78489a bugfix: use flags when computing implicit rpaths (#16634)
* make verbose_flag a property

* tests
2020-05-28 17:11:28 -07:00
Christoph Junghans
623cc7427e legion: add v20.03.0 (#16848) 2020-05-28 14:58:55 -06:00
Marc Allen
712fc696ba npm: use mkdirp instead of mkdir (#16835)
fixes #16833

Co-authored-by: Marc Allen <mrcall@amazon.com>
2020-05-28 12:33:09 +02:00
Luca Heltai
a6779061d7 dealii: deal with nanoflann after 9.2.0 (#16839) 2020-05-28 12:02:34 +02:00
Adam J. Stewart
4351c2eb32 Update checksum for PyTorch patch (#16837) 2020-05-28 11:27:59 +02:00
Toyohisa Kameyama
ab65a8ee27 opencv: fix to build version 3.2.0 with Fujitsu compiler (#16840) 2020-05-28 11:23:15 +02:00
Joseph Ciurej
87cd375559 ffmpeg: add a maintainer to the package (#16830) 2020-05-27 22:51:19 +02:00
Toyohisa Kameyama
4d5a68731a ffmpeg: set compilers command. (#16799) 2020-05-27 21:04:37 +02:00
Massimiliano Culpo
8f208b17e2 spack containerize: allow 0.14.3 tag for next release 2020-05-27 10:21:14 -07:00
Massimiliano Culpo
187cb51b49 spack containerize: allow 0.14.1 and 0.14.2 tags
fixes #16727
2020-05-27 10:21:14 -07:00
Tom Payerle
6ddc077e08 libxv: videoproto is a build and link dependency (#16821)
fixes #16820

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-05-27 16:34:15 +02:00
Sergey Kosukhin
e73c39a5db concretize: fix UnboundLocalError due to import within a function (#16809) 2020-05-27 11:45:14 +02:00
Jen Herting
d8c7073a9f py-configargparse: new package at v1.2.3 (#16814) 2020-05-27 09:45:14 +02:00
Jen Herting
768419601d py-fits-tools: added package at v1.1.2 (#16815) 2020-05-27 09:43:26 +02:00
Tomoki, Karatsu
6b8775f6af py-torch: find openmp when %fj (#16822)
Fix for 'FindOpenMP.cmake' to detect openmp 
settings used by Fujitsu compiler.
2020-05-27 09:32:11 +02:00
Justin S
fcacf8dc9d plink-ng: new package at v200511 (#16750)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-05-27 09:20:27 +02:00
Christoph Junghans
ac7f6b98b5 quicksilver: initial commit (#16811) 2020-05-27 09:06:25 +02:00
Greg Becker
e9dcab9464 backwards compatibility for naming scheme (#16812)
* backwards compatibility for naming scheme
2020-05-26 14:06:25 -07:00
Massimiliano Culpo
c01433f60a spack.relocate: further coverage for ELF related functions (#16585)
* make_link_relative: added docstring

* make_elf_binaries_relative: added docstring, unit tests

* raise_if_not_relocatable: added docstring, added unit test for exceptional case

* relocate_links: removed unused arguments, added docstring and comments

Also fixed a possible bug that was issuing spurious
warning when a file was relocated successfully

* relocate_text: added docstring and comments, renamed arguments

* relocate_text_bin: added docstring and comments, renamed arguments, unit tests
2020-05-26 11:47:31 -07:00
Mark Olesen
0b96082e74 openfoam: improve handling of wmake rules, version update
- add future-proofing for wmake rules locations:
  Accept wmake/rules/{ARCH}{COMP} or wmake/rules/{ARCH}/{COMP}

- compiler option is now '-spack' instead of 'RpathOpt'
  which now seems to be a bit harsh on the eyes.
  Now have compilations such as 'linux64GccDPInt32-spack',
  which is moderately easier to read.

- add OpenFOAM 1912, patch 200506

STYLE: adjust for new flakey8 indentation rules
2020-05-26 10:55:56 -07:00
Dr. Christian Tacke
2c6406c003 grpc: allow building shared libraries (#16356) 2020-05-26 16:30:18 +02:00
darmac
d7fb8701c2 su2: new package at v7.0.3 (#16787) 2020-05-26 11:17:25 +02:00
darmac
7383d923f0 blogbench: added new package at v1.1 (#16793) 2020-05-26 11:16:43 +02:00
iarspider
45b86e2c1d py-hypothesis: added v5.3.0 (#16804) 2020-05-26 09:42:54 +02:00
Sergey Kosukhin
ff44a6d03f hdf: new version, variants and refactoring (#16469)
* hdf: new version, variants and refactoring.

* libc provides rpc

* Fix szip-related configure argument.

* Update dependent packages.
2020-05-25 19:20:04 -05:00
Sergey Kosukhin
15d2883abe openmpi: get rid of implicit system dependencies (#16758)
* openmpi: get rid of implicit system dependencies

* Python 2 compatibility.

* Rename pbspro to openpbs and revert packages.yaml.

* Remove virtual package 'sendmail'.
2020-05-25 19:14:47 -05:00
iarspider
3c36a7caab py-moreitertools: added v7.0.0 (#16802) 2020-05-25 22:18:40 +02:00
Amjad Kotobi
e90f51a802 r-spatialeco: New package (#16744) 2020-05-25 13:19:51 -05:00
Michael Kuhn
f12ae1bcd0 Fix typo for allow_sgid (#16806)
fixes #14425

The config: prefix should be included in the actual option name and
makes it impossible to change this option.
2020-05-25 18:49:35 +02:00
Stephen Herbein
c4031f0455 lua: fix compilation on Cray (#16713)
Problem: when calling `static_to_shared_library` on the `cray` arch, it
produces a non-sensical compiler command with no input files.  For
example, when installing lua@5.2.4, it produced:
'gcc -lm -ldl -o /big-long-spack-path/liblua.so.5.2.4'

Solution: do the same thing on `cray` that is done for `linux`
2020-05-25 15:18:47 +02:00
Tom Payerle
17e4a72191 netcdf-cxx4: remove erroneous variants (#16762)
fixes #16725

The dap, jna, pnetcdf, netcdf4, and ncgen4 variants added in #16047
are _not_ supported by the configure script for netcdf-cxx4 package 
(These appear to be configure args for netcdf-c package).
2020-05-25 15:15:30 +02:00
Peter Scheibel
768fa6bc53 bugfix: schema errors without line numbers (#16765)
* account for schema validation errors where the associated instance doesn't have a line number

* fix unrelated flake error (but it must be fixed because this PR touches this file and the flake rules have been updated since the last edit to this file)
2020-05-25 15:08:47 +02:00
Stephen Hudson
a3dc9cf848 libensemble: added v0.7.0 (#16773) 2020-05-25 14:35:44 +02:00
Michael Kuhn
30fb364452 py-gdbgui: added v0.13.2.0 (#16781) 2020-05-25 14:34:26 +02:00
Michael Kuhn
5a335e4985 py-pygdbmi: added v0.9.0.3 (#16778) 2020-05-25 14:33:41 +02:00
Mark W. Krentel
f370bc0fa2 libmonitor: added v2019.05.31 (#16774) 2020-05-25 14:31:16 +02:00
Michael Kuhn
9f2fc52165 py-pygments: added v2.6.1 (#16776) 2020-05-25 14:23:41 +02:00
Michael Kuhn
d0e4414bb6 libunwind: fix build with gcc@10: (#16782) 2020-05-25 14:22:51 +02:00
Michael Kuhn
232cdb85a5 python: added v3.8.3 (#16775) 2020-05-25 13:59:47 +02:00
Michael Kuhn
0c735b8f1a meson: added v0.54.2 (#16777) 2020-05-25 13:52:13 +02:00
Michael Kuhn
8395db361c py-flask: added v1.1.2 and v0.12.4 (#16779) 2020-05-25 13:51:08 +02:00
Amjad Kotobi
5df64769e3 r-matlab: new package at v1.0.2 (#16785) 2020-05-25 13:48:24 +02:00
darmac
6f85dc66a7 testdfsio: added new package at v0.0.1 (#16789) 2020-05-25 13:46:42 +02:00
darmac
99d9967b8b sqoop: added new package at v1.99.7 (#16786) 2020-05-25 13:41:08 +02:00
Michael Kuhn
995714cba5 glib: added v2.64.3 (#16800) 2020-05-25 13:32:42 +02:00
darmac
04f60afc08 ffsb: added new package at v5.2.1 (#16791) 2020-05-25 13:16:55 +02:00
Tomoki, Karatsu
821c729ec0 netlib-scalapack: specify MPI's location for Fujitsu-MPI. (#16798)
Fujitsu-MPI wrapper commands aren't recognized from 'FindMPI' 
function of 'cmake'. If we are using the Fujitsu compiler and Fujitsu MPI, 
specify the MPI path information explicitly.
2020-05-25 13:12:13 +02:00
David Pape
6d913ddab7 likwid: fixed failing build on powerpc (#16797)
Fixes #16783
2020-05-25 13:10:12 +02:00
Kevin Huck
bc145b2b3f TAU: remove ~nls constraint on binutils dependency
TAU does not require ~nls.
2020-05-22 19:40:28 -07:00
Stephen Herbein
5108fe314b flux-sched: add dependency type for flux-core 2020-05-22 19:37:47 -07:00
Stephen Herbein
a74ee4d27a flux: add dependency types for python dependency
Flux requires `build` for python and many of the python packages because
it builds python bindings.  Beyond the bindings, the Flux front-end
commands now use python too, hence the `run` type. Finally, Flux's
`pymod` module is linked against the python interpreter, so the package
requires a `link` dependency on python too.
2020-05-22 19:37:47 -07:00
Stephen Herbein
9e3470d797 flux: add latest releases and checksum
The next release 0.17.0 will also require python3.6+, pre-emptively
prepare for that release.  Also support current master branch.
2020-05-22 19:37:47 -07:00
Amjad Kotobi
eee6942c8b r-nimble: New package 2020-05-22 19:30:41 -07:00
Amjad Kotobi
9bcf4480b5 r-rferns: New package 2020-05-22 19:20:52 -07:00
Luca Heltai
55eb192234 dealii: 9.2.0 release (#16743) 2020-05-22 19:19:19 -07:00
Amjad Kotobi
3a336b328a r-reticulate: add version; dependencies (#16747)
* Add version 1.15
* Add link dependency on r-rcpp
* Add dependency on r-rappdirs
2020-05-22 19:17:11 -07:00
Sergey Kosukhin
e18c5316bd cdo: fix url for version 1.9.8 2020-05-22 19:12:10 -07:00
Miroslav Stoyanov
86dd42ec70 tasmanian: add version 7.1 (#16769) 2020-05-22 19:10:21 -07:00
Michael Kuhn
be570aa655 zstd: Add 1.4.5 2020-05-22 19:07:29 -07:00
Adam J. Stewart
f17352f6f7 py-horovod: add 0.19.3 (#16768) 2020-05-22 19:20:25 -05:00
Seth R. Johnson
6ac8cf8126 IWYU: fix 0.14 build (#16761)
* IWYU: fix 0.14 build

The CMake patch used for 0.13 hadn't been applied to the master when
0.14 was released, and this version of IWYU requires C++14 or higher.

* Flake8
2020-05-22 15:07:59 -05:00
Seth R. Johnson
04046c15de Mark Valgrind as conflicting with macOS > 10.13 (#16759)
```
    '/var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/s3j/spack-stage/spack-stage-valgrind-3.15.0-mtir7ubjz7mqmjbb7bogze2qm35hl4ze/spack-src/configure' '--prefix=/ornldev/code/spack/opt/spack/clang-11.0.0-apple/valgrind/mtir7ub' '--enable-only64bit' '--build=amd64-darwin'
1 error found in build log:
     43    checking host system type... x86_64-pc-darwin
     44    checking for a supported CPU... ok (x86_64)
     45    checking for a 64-bit only build... yes
     46    checking for a 32-bit only build... no
     47    checking for a supported OS... ok (darwin)
     48    checking for the kernel version... unsupported (18.7.0)
  >> 49    configure: error: Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x and 17.x (Mac OS X 10.6/7/8/9/10/11 and macOS 10.12/13)
```
2020-05-22 15:07:45 -05:00
Seth R. Johnson
106a121b83 [Trilinos] Make MPI optional (#16685)
* Make MPI optional for Trilinos

* Use 'define' and 'define_from_variant' in trilinos package
2020-05-22 14:40:21 -05:00
Ethan Stam
7449bf8bab ParaView: conflict ~opengl2 with versions 5.5 and up (#16742) 2020-05-22 10:33:19 -05:00
Rob Latham
ed037edd26 prrte uses libev data structues, not libevent (#16530)
* use libevent not libev

* Add Ralph Castain as a maintainer
2020-05-22 10:31:10 -05:00
noguchi-k
d51635e6bd ffr: add flag to use fixed format in which the length of one line of the source code is 255 when building with Fujitsu compiler. (#16737)
* ffr: add flag to use fixed format in which the length of one line of the source code is 255 when building with Fujitsu compiler.

* ffr: changed to elif.
2020-05-22 10:28:57 -05:00
Carlos Bederián
1d936a8cc6 julia: Fix LLVM build failing with newer versions of CMake (#16738) 2020-05-22 10:24:54 -05:00
Justin S
d2d35f80d1 fraggenescan: new package at v1.31 (#16587)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-22 17:17:43 +02:00
Seth R. Johnson
c9df2dea95 IWYU: update include-what-you-use version (#16760) 2020-05-22 08:55:29 -05:00
Mathias Anselmann
c6d7405009 superlu-dist: added v6.2.0 and v6.3.1 (#16704) 2020-05-22 14:58:53 +02:00
Carlos Bederián
0581e6abb3 julia: added v1.4.1 (#16739) 2020-05-22 13:56:35 +02:00
Justin S
407f1bdb92 genometools: require cairo pdf backend (#16753) 2020-05-22 13:49:50 +02:00
Cody Balos
f6bef306ec sundials: added v5.2.0 and v5.3.0 (#16752) 2020-05-22 13:39:57 +02:00
Toyohisa Kameyama
75b0d0b145 charmpp: added support to Fujitsu compilers. (#16756) 2020-05-22 13:31:31 +02:00
Tomoki, Karatsu
a9b64bcaf1 autotools: delete args from postdep objects when %fj (#16274) 2020-05-21 20:50:57 +02:00
Amjad Kotobi
661832a6c6 r-boruta: new package at v7.0.0 (#16746) 2020-05-21 17:52:55 +02:00
Amjad Kotobi
7d55b88c43 r-caracas: new package at v1.0.0 (#16748) 2020-05-21 17:48:58 +02:00
Cameron Stanavige
6445c2e807 unifyfs: update gotcha dependency version (#16736)
The dev branch of UnifyFS now depends on the latest release of
GOTCHA, and will future releases.

This updates our spackage to depend on the correct version of GOTCHA
depending on the version of UnifyFS being installed.
2020-05-20 22:35:22 -05:00
Amjad Kotobi
18d1531263 r-spatstat: New package (#16729)
* r-spatstat: New package

* r-spatstat: version dependency added
2020-05-20 22:34:37 -05:00
Antonio Arena
4118a01774 Install gaussian using their scripts (#16723)
* Create VMD recipe

This is a new recipe to install VMD on Spack-managed hosts.

* Fix lint errors.

* Use plain Package

As per peer-review:
- Use Package to build
- Use configure to create a Makefile
- Use install to copy files to prefix directory

* Move VMD package to correct path, duh...

* Restructure description so first short paragraph can be used by module files.

* Add an empty line as suggested by peer-review. That's how you separate paragraphs.

* Remove extra spaces.

* Use setup_build_environment since that's where you're supposed to export OS variblaes. Thanks to peer-review for spotting this.

* Create VMD recipe

This is a new recipe to install VMD on Spack-managed hosts.

* Fix lint errors.

* Use plain Package

As per peer-review:
- Use Package to build
- Use configure to create a Makefile
- Use install to copy files to prefix directory

* Move VMD package to correct path, duh...

* Add Cubist (#16069)

* Add Cubist

* enhance recipe

* Not using OS module anymore

* remove white space

* Fix build shell

* make Flake8 happy

* use bash shell for build

* Convert it To MakefilePackage as per peer-review

* dbcsr: expose all options, check openblas feats (#16034)

* dbcsr: expose all options, check openblas feats

* dbcsr: use Ninja to build, ensure serialized tests

* dbcsr: add myself as maintainer

* MPark.Variant: GCC 7.3.1 Conflict (#16081)

* MPark.Variant: GCC 7.3.1 Conflict

Due to an ICE in this specific patch-release of GCC, compile
errors in downstream packages should be avoided with a clean
conflict.

* Fix superfluous spaces

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

* Fix typo

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Move VMD package to correct path, duh...

* Add an empty line as suggested by peer-review. That's how you separate paragraphs.

* New matlab versions (#16086)

* Add new version 1.1.1 (#16087)

* New package bonniepp added (#16091)

* openbabel: fix compilation errors (#16090)

- Disable maeparser as it is broken with CMake
- Added missing dependencies

* singularity: updated maintainer list (#16093)

* New version xrootd-4.11.3 (#16092)

* I added Gaussian 16. I also execute bsd/install to fix scripts instead of filtering them.

* revert VMD so only Gaussian is in my PR.

* revert VMD so only Gaussian is in my PR.

* revert VMD so only Gaussian is in my PR.

* I added myself as a package maintainer.

Co-authored-by: asmaahassan90 <31959389+asmaahassan90@users.noreply.github.com>
Co-authored-by: Tiziano Müller <tiziano.mueller@chem.uzh.ch>
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Amjad Kotobi <amjadkotbi@gmail.com>
Co-authored-by: athanasio <athanasio@users.noreply.github.com>
Co-authored-by: Carlos Arango Gutierrez <arangogutierrez@gmail.com>
2020-05-20 22:34:03 -05:00
Toyohisa Kameyama
51ff18ef8d mxnet: Fix dependency and add new version. (#16714)
* mxnet: Fix dependency and add new version.

1. Fix opencv and numpy dependency.
2. Add version 1.6.0.

* typo in patch is fixed.
fixed spec access.
2020-05-20 22:33:31 -05:00
Jeremy
bcd5dd6e3e add SST packages and dependencies (#16618) 2020-05-20 22:15:02 -05:00
Greg Becker
cfb6f21236 externals: allow package prefs to configure default not buildable (#16735)
Allows `all` to be configured non-buildable in packages.yaml.

The following config would only allow zlib to be built by Spack, all other packages would have to be found as externals.

```
packages:
  all:
    buildable: False
  zlib:
    buildable: True
```
2020-05-20 17:09:07 -07:00
Tamara Dahlgren
92989fbbfd tests: check presence not equality for rpath changes (#16637)
Fixes #16636
2020-05-20 18:11:26 +02:00
Adam J. Stewart
cc08070da9 py-scikit-learn: add latest version (#16731) 2020-05-19 20:59:11 -05:00
Christoph Junghans
46ab939249 mantevo: update urls to new website (#16732) 2020-05-19 16:19:17 -05:00
Andrew W Elble
7fe6c0945a py-tensorflow-estimator: new version 2.2.0 (#16726) 2020-05-19 14:29:13 -05:00
Hadrien G
9c16a728fd Add new Acts release (#16718) 2020-05-19 13:16:57 -05:00
Thomas Madlener
7948344bcd Introduce version 1.0.0 for py-xenv and remove unreleased development release (#16722)
Problems in 0.0.4 should be fixed for 1.0.0
2020-05-19 13:14:45 -05:00
ddeidda
20f2a6c2e8 update URL and sha256 for aws-parallelcluster 2.7.0 (#16717)
Signed-off-by: ddeidda <ddeidda@amazon.com>
2020-05-19 10:58:46 -05:00
Dr. Christian Tacke
63f09a6662 openssl: Be Explicit About perl Usage (#16721)
The openssl build process can use the wrong perl for
various reasons, including:
* Wrong value in PERL env var
* The build process first looks for `perl5`, which the
  spack system does not provide, but some other
  distributions provide it. That way, the build process can
  end up using the wrong perl.

Stop all of these problems by explicitly setting PERL to
the to be used dependency.
2020-05-19 10:58:04 -05:00
darmac
31ab62fb5e Add new package: http-post (#16678)
* Add new package: http-post

* refine version name
2020-05-19 10:56:52 -05:00
darmac
05aacb584e Add new package: http-ping (#16675)
* Add new package: http-ping

* refine version name
2020-05-19 10:56:22 -05:00
Scott Wittenburg
b1f1f5dddb Pipelines: Ensure consistent spack version for entire pipeline
Also retry jobs always, as script failure is not confined to only our
spack ci rebuild command exit code.
2020-05-19 09:40:02 -06:00
vvolkl
31ccf80294 [podio] fix root cxxstd dependency (#16708) 2020-05-18 21:52:18 -05:00
darmac
9d766ae1fa Add new package: http-load (#16676)
* Add new package: http-load

* refine version format

* fix date/version error
2020-05-18 21:41:00 -05:00
darmac
3f6164053d Add new package: http-get (#16677)
* Add new package: http-get

* refine version name
2020-05-18 21:40:34 -05:00
Greg Becker
84889ef3a3 move source dir to last cmake arg (#16709) 2020-05-18 16:39:13 -07:00
Adam J. Stewart
cf4c48c37e TensorFlow: add new versions (#16703) 2020-05-18 16:38:37 -05:00
Justin S
294a91b580 r-decipher: new package at 2.12.0 (#16705) 2020-05-18 16:37:06 -05:00
Justin S
d768b34f17 angsd: add 0.933, add misc programs to install (#16669)
* angsd: add 0.933, add misc programs to install

* angsd: add r variant
2020-05-18 16:07:35 -05:00
Utkarsh Ayachit
154a442817 paraview: use kits by default (#16698)
Adding a variant to enable/disable kits and making the default use kits.
2020-05-18 12:59:40 -05:00
Amjad Kotobi
d957c621ef r-tensor: New package (#16697) 2020-05-18 11:53:17 -05:00
Amjad Kotobi
864d4a2232 r-goftest: New package (#16699) 2020-05-18 11:51:26 -05:00
Nick Robison
0b37188e4f Update Apache arrow to 0.17.1 (#16701)
Update Arrow to the latest version.

Also add an additional dependency on `thrift` when building with Parquet support.
2020-05-18 11:49:44 -05:00
darmac
28ef9cad3b Add new package: hyperscan (#16681)
* Add new package: hyperscan

* hyperscan: remove cmake_args()
2020-05-18 11:36:00 -05:00
archxlith
931932d65d New package: py-pyeda (#16416)
* New package: py-pyeda

* py-pyeda: added dep for python 3.3 or greater

* [py-pyeda] Added space in depends_on python line
2020-05-18 10:01:59 -05:00
Adam J. Stewart
2d464f69f8 PyYAML: fix linking to libyaml (#16682) 2020-05-18 09:57:51 -05:00
h-denpo
ce8cf5d9b0 revocap-refiner: fixed typo in pic flags (#16694) 2020-05-18 10:04:10 +02:00
Toyohisa Kameyama
ffdd94dd9f hwloc: Add libudev variant. (#16615)
* hwloc: Add libudev variant.

* typo fix.

* Wrong version for libudev variant is fixed.

* Add maintainers.
2020-05-17 20:00:23 -05:00
Marko Kabic
a4d64402ae Add new version of COSMA: 2.2.0 (#16672)
* Updated versions of COSMA.

* Added an empty line for formatting.

* Switched to sha256.

* Renamed gpu variant to cuda. Extending the CudaPackage base class.
2020-05-17 12:40:48 -05:00
Amjad Kotobi
045063da7f r-spatstat-data: New package (#16688) 2020-05-17 12:28:26 -05:00
Amjad Kotobi
d776e52979 r-rms: New package (#16683)
* r-rms: New package

* r-rms: deleted duplicated dependency

* r-rms: deleting comma
2020-05-17 12:27:33 -05:00
Amjad Kotobi
9685792f83 r-spatialpack : New package (#16664)
* r-spatialpack : New package

* r-spatialpack : R dependeny added type

* r-spatialpack: Description was missing
2020-05-17 10:22:52 -05:00
Michael Kuhn
41907639c4 py-scipy: Fix build with gcc@10: (#16687) 2020-05-16 20:55:20 -05:00
Justin S
babfd144ad py-fastcluster: new package at 1.1.26 (#16588)
* py-fastcluster: new package at 1.1.26

* py-fastcluster: add py-setuptools dep
2020-05-16 16:12:50 -05:00
Amjad Kotobi
5912b8c7cd r-yaimpute: New package (#16658) 2020-05-16 16:07:58 -05:00
Amjad Kotobi
f71768b1d6 r-envstats: New package (#16659) 2020-05-16 16:07:10 -05:00
h-denpo
a97ce63218 New package frontistr (#16660)
"""Open-Source Large-Scale Parallel FEM Program for
        Nonlinear Structural Analysis"""
2020-05-16 16:06:25 -05:00
Amjad Kotobi
6ca1052999 r-spatstat-utils : New package (#16663) 2020-05-16 16:03:49 -05:00
Mark W. Krentel
b858eebc51 hpctoolkit: add dependency on gotcha (#16670) 2020-05-16 15:59:33 -05:00
Paul
32238391a9 Add Go versions 1.14.3 and 1.13.11 (#16673) 2020-05-16 15:55:51 -05:00
darmac
110b15f20e Add new package: hiredis (#16679) 2020-05-16 15:51:01 -05:00
darmac
b6498c44af Add new package: guacamole-server (#16680) 2020-05-16 15:50:24 -05:00
TZ
2ebadbc267 intel-mpi: add libfabrics directory to SPACK_COMPILER_EXTRA_RPATHS (#15214)
workaround for not finding an appropriate libfabrics.so with Intel
MPI 2019+. Fixes #11140 and #12493
2020-05-16 10:40:40 -05:00
Amjad Kotobi
983f05ac41 r-polspline: new package (#16648)
* r-polspline: new package

* r-polspline: updated urls
2020-05-16 09:07:34 -05:00
Omar Padron
97d7ef678d fix catalyst so that it doesn't depend on a particular spelling of python (#16667) 2020-05-15 15:11:32 -04:00
Greg Becker
32a9adcf60 modules: use projections format for naming schemes (#16629)
* update tcl naming_scheme to use projections

* add projections to lmod modules
2020-05-15 11:12:52 -07:00
Stephen Hudson
955a3db206 py-petsc4py: allow ~mpi variant (#16595)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-15 15:14:06 +02:00
Michael Kuhn
90e15cae16 likwid: fix build with gcc@10: (#16641) 2020-05-15 13:23:57 +02:00
Michael Kuhn
154504da71 binutils: fix build with gcc@10: (#16661)
The issue seems to be fixed in the development version already.
2020-05-15 13:13:04 +02:00
Scott Wittenburg
e0572a7d96 Pipelines: Support DAG scheduling and dynamic child pipelines
This change also adds a code path through the spack ci pipelines
infrastructure which supports PR testing on the Spack repository.
Gitlab pipelines run as a result of a PR (either creation or pushing
to a PR branch) will only verify that the packages in the environment
build without error.  When the PR branch is merged to develop,
another pipeline will run which results in the generated binaries
getting pushed to the binary mirror.
2020-05-14 21:11:07 -07:00
Scott Wittenburg
47b3dda1aa Support os-specific $padding in config:install_tree
Providing only $padding or ${padding} results in an attempt to
substitute a padding of maximum system path length, while leaving
room for the parts of the install path spack generates.  Providing
$padding-<len> or ${padding-<len>} simply substitutes padding of
the specified length.
2020-05-14 21:11:07 -07:00
Toyohisa Kameyama
ea818caca3 namd: build on aarch64. (#16639) 2020-05-14 20:17:53 -05:00
Robert Blake
b987444871 Fixing the build directory for cardioid. (#16640)
* Fixing the build directory for cardioid.

* These imports are no longer needed due to deletions.

Co-authored-by: Robert Blake <rob.c.blake.3@gmail.com>
2020-05-14 20:16:55 -05:00
Michael Kuhn
5875bc6d6b scorep: Fix build with gcc@10: (#16642) 2020-05-14 20:10:58 -05:00
Andrew W Elble
e21b4731a9 lammps: set LAMMPS_POTENTIALS in the runtime environment (#16643)
so lammps can find the installed potential files
2020-05-14 20:09:41 -05:00
Jen Herting
b562059d2a New package: maloc (#16631)
* [maloc] created template

* [maloc] added some build dependencies

* [maloc] added homepage and description

* [maloc] added doc variant in an attempt to disable documentation. Still builds doc though... at least when there is a system doxygen found. Having doxygen being a dependency here can bring python in and cause issues for dependents, even when listed as only a build dependency. Maybe this is a bug?

* [maloc] flake8 and fixme removal

* [maloc] shorted description
2020-05-14 20:06:21 -05:00
Andrew W Elble
8c025324af ucx: cuda / gdrcopy variants (#16605)
picking up where #15724 left off.
2020-05-14 20:04:06 -05:00
健美猞猁
0ed2fa3b9b miniforge3: a new package. (#16644) 2020-05-14 19:50:11 -05:00
Michael Kuhn
c168e1b85e at-spi2-core: Add 2.36.0 (#16645)
The pkg-config file of newer versions of at-spi2-core includes
dependencies for xtst, recordproto, inputproto and fixesproto, so they
have to be available at runtime as well.
2020-05-14 19:49:02 -05:00
Michael Kuhn
670a5e8766 atk: Add 2.36.0 (#16646) 2020-05-14 19:48:21 -05:00
Michael Kuhn
232aa9ff2e at-spi2-atk: Add 2.34.2 (#16647) 2020-05-14 19:47:55 -05:00
Amjad Kotobi
0844e56d6d r-hmisc: new version and updated dependency (#16649) 2020-05-14 19:46:02 -05:00
Amjad Kotobi
1eb5a12019 r-survival: new version and updated dependency (#16650) 2020-05-14 19:44:35 -05:00
Greg Becker
445cae5c81 Feature: Allow lmod configuration to set core specs (#16517)
Packages built with lmod core_compiler are placed in `Core`.

Other packages may belong in `Core`. For example, python may be built with a proprietary compiler for performance, but belong on the `Core` directory.

With this PR, lmod config can include a `core_specs` list. Any package that satisfies a spec in that list is placed in `Core`, regardless of its compiler or dependencies.
2020-05-14 11:27:37 -07:00
Michael Kuhn
20b3e41831 adios2: Fix build with gcc@10: (#16570) 2020-05-13 19:46:13 -07:00
Nathan
48a35409e0 Spack Package for ns-3 (#16630)
* Adding ns3 spack

* Format and cleanup of ns3 spack package

* Removing comments and fixing boost variant

* Fixing formating
2020-05-13 21:16:17 -05:00
Adam J. Stewart
bc948c4418 py-horovod: add new version (#16635) 2020-05-13 17:52:27 -05:00
Nathan
c50b586e06 Helics: add python variant (#16625)
* Adding varient for python interface in HELICS

* Append python interface to pythonpath

* cleaning up blank lines

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-13 17:25:07 -05:00
Greg Becker
7411fe2d43 cmake build system: filter system paths from rpaths (#16612) 2020-05-13 14:31:33 -07:00
Ben Bergen
37e307e8cd Added alias and bash completion for spacktivate (#16472) 2020-05-13 12:02:38 -06:00
Nick Booher
f294c264a1 revbayes: Update checksum (#16628) 2020-05-13 12:54:21 -05:00
Toyohisa Kameyama
66b896d286 conda4aarch64:New Package. (#16617) 2020-05-13 12:49:42 -05:00
Michael Kuhn
a9ee4da670 ncl: Fix build with gcc@10: (#16624) 2020-05-13 12:45:12 -05:00
Amjad Kotobi
9b8082ecf3 r-exactextractr: new package (#16626) 2020-05-13 12:42:16 -05:00
Nichols A. Romero
fa57f1da29 QE Update May 2020 (#16627)
* Clarify comments about QMCPACK-to-QE converter.

* Allow hdf5=serial with QE 6.4.1 + qmcpack, but apply filter_file.

* Ammend comments about the use of the filter_file.
2020-05-13 12:41:16 -05:00
lpritch-lanl
043d507540 py-pint: added versions up to v0.11 (#16537)
Co-authored-by: Lori Pritchett-Sheats <lpritch@pn2002926.lanl.gov>
2020-05-13 16:47:01 +02:00
Michael Kuhn
308f016f31 parallel-netcdf: fix build with gcc@10: (#16620) 2020-05-13 16:44:50 +02:00
Amjad Kotobi
f6fbf8b8d3 r-xml2: new version & updated dependencies (#16604)
* r-xml2: new version & updated dependencies

* r-xml2: updated dependencies
2020-05-13 09:22:53 -05:00
Tomoki, Karatsu
a740c361cd ppopen-appl-fdm: added support to Fujitsu compilers. (#16616) 2020-05-13 15:10:07 +02:00
Toyohisa Kameyama
4777284f08 charmpp: support for aarch64. (#16619) 2020-05-13 15:06:25 +02:00
Michael Kuhn
b4052eb3b8 tcsh: fix build with gcc@10: (#16621) 2020-05-13 14:57:12 +02:00
Michael Kuhn
aaf3388cfe esmf: fix build with gcc@10: (#16622) 2020-05-13 14:53:49 +02:00
Peter Scheibel
701fc1fdb1 Update docs on "spack external find" (#16482)
This improves the documentation for `spack external find` in several ways:

* Provide a code example of implementing `determine_spec_details` for a package
* Explain how to define executables to look for (and also e.g. that they are treated as regular expressions and so can pull in unexpected files).
* Add the "why" for a couple of constraints (i.e. explain that this logic only works for build/run deps because it examines `PATH` for executables)
* Spread the docs between build customization and packaging sections
* Add cross-references
* Add a label so that `spack external find` is linked from the command reference.
2020-05-12 17:08:08 -07:00
Chris White
fdf38ec991 Fix axom install target (#16613) 2020-05-12 16:57:25 -07:00
Pariksheet Nanda
f43b7824ca py-plotly: unfix dependency versions (fixes #16544) (#16546)
* py-plotly: unfix dependency versions (fixes #16544)

* py-plotly: add missing dependencies for #16546

* py-plotly: match setup.py instead of requirements.txt for #16546
2020-05-12 17:06:18 -05:00
Justin S
0f2a581276 velvetoptimiser: new package at 2.2.6 (#16611) 2020-05-12 17:05:19 -05:00
Amjad Kotobi
ab92407940 r-testthat : dependencies and version updated (#16576)
* r-testthat : dependencies and version updated

* Adding version conditions for dependencies

* r-testthat: Fix dependecies condition
2020-05-12 17:05:01 -05:00
Adam J. Stewart
b4e587bd0b py-scikit-learn: add new version (#16607) 2020-05-12 16:43:56 -05:00
Justin S
1d76067d7a zstd: add 1.4.4 (#16608) 2020-05-12 16:43:43 -05:00
Massimiliano Culpo
11fa61665f travis: use bionic as default for Linux (#16521)
Modifications:

- [x] Travis now uses `bionic` as a default (`xenial` used for Python 3.5, `trusty` for Python 2.6)
- [x] Shell unit tests have been factored into their own run
- [x] `kcov` is built only for tests that upload coverage results

Overall with this we shave 3-4 mins. on each run and add an additional run of about 3 min. For some reason `kcov` 38 fails forwarding output when used with Python unit tests, so I used v34 for that and v38 (latest) for shell testing. Previously we were using v25.
2020-05-12 13:56:01 -07:00
Adam J. Stewart
6b41fb88a9 py-threadpoolctl: add new package (#16606) 2020-05-12 14:33:10 -05:00
Nick Booher
9bdf4564db revbayes: update for 1.1.0 (#16603)
* revbayes: update for 1.1.0

* revbayes: Fix flake8
2020-05-12 14:26:44 -05:00
Greg Becker
0307111dd8 bugfix: reorder variants in Spec strings (#16462)
* change print order for variants to avoid zsh parsing bugs

* change tests for new variant parse order
2020-05-12 10:23:42 -07:00
Amjad Kotobi
154c0f5771 new version r-rcurl (#16550)
* new version r-rcurl

* RCurl dependency R version updated

* Adding version conditions
2020-05-12 11:42:58 -05:00
Amjad Kotobi
78d8dd0815 new version r-cli (#16553)
* new version r-cli

* r-cli : dependencies updated

* Adding version conditions for dependencies
2020-05-12 11:42:20 -05:00
Amjad Kotobi
bfa707dfc4 new version r-ellipsis (#16556)
* new version r-ellipsis

* r-ellipsis : R dependency updated

* Adding version conditions for dependencies
2020-05-12 11:41:41 -05:00
Amjad Kotobi
d4c8c8b80d r-rematch2 : new package (#16563)
* r-rematch2 : new package

* Updating URL
2020-05-12 11:41:20 -05:00
Amjad Kotobi
b99a5369ce r-roxygen : dependencies and version updated (#16565)
* r-roxygen : dependencies and version updated

* Dependencies updated for condition
2020-05-12 11:40:55 -05:00
Amjad Kotobi
7528e1eb45 r-purrr : dependencies and version update (#16566)
* r-purrr : dependencies and version update

* Dependencies updated for condition
2020-05-12 11:39:39 -05:00
Amjad Kotobi
173823e77d r-rversions : new package (#16572)
* r-rversions : new package

* URL updated r-rversions
2020-05-12 11:39:08 -05:00
Amjad Kotobi
14b80ecaf2 r-withr : dependencies and version updated (#16577)
* r-withr : dependencies and version updated

* Adding version conditions for dependencies
2020-05-12 11:36:25 -05:00
Amjad Kotobi
7c327ed447 r-knitr : dependencies and version updated (#16579)
* r-knitr : dependencies and version updated

* Adding version conditions for dependencies
2020-05-12 11:35:41 -05:00
Tomoki, Karatsu
278f8eb7fe modylas: Add flag to use preprocessor when building with Fujitsu compiler. (#16598) 2020-05-12 11:34:28 -05:00
Jose E. Roman
8b06bd7198 New patch release SLEPc 3.13.2 (#16601) 2020-05-12 11:33:46 -05:00
Andrew W Elble
e36aa96392 py-horovod: link dependency for py-torch (#16600)
fix for same reasons as #16495.
2020-05-12 11:24:30 -05:00
Toyohisa Kameyama
7813e41464 caffe: fixed build error (#16520)
* opencv 3.2 requires cmake 3.11 or older.
caffe dependency is changed.

* revert opencv variant to caffe.
backport to opencv errors.
2020-05-12 09:39:19 -05:00
Sergey Kosukhin
d1a5dc792e py-dask: new version (#16531)
* py-dask: new version

* py-dask: update the constraints.

* py-dask: add a list of maintainers.
2020-05-12 09:35:11 -05:00
Michael Kuhn
15112f9dba gcc: fix several issues (#16599)
- GCC has moved to Git
- The develop/master version requires flex
- Add myself as a maintainer
- Set the library path in the zstd patch
2020-05-12 13:56:58 +02:00
Todd Gamblin
a44f487a1d z3: update python dependency (#16597)
-[x] `z3` needs a dependency on `py-setuptools`
-[x] `z3` has a run dependency on `python`, so we might as well make
     building with the python bindings default
2020-05-12 11:15:42 +02:00
Justin S
80e7a61597 prokka: new package at v1.14.6 (#16282) 2020-05-12 10:09:01 +02:00
Todd Gamblin
269bcfe1c8 clingo: update package (#16594)
`clingo` has some undocumented dependencies:
- `bison`, for which the default macos version is too old
- `re2c`, which isn't always available

Also, the python installation was not set up properly. Clingo by default
does an install in `~/.local`, so we need to disable that and add a few
other options to get things right.

- [x] add `bison` dependency
- [x] add `re2c` dependency
- [x] make `doxygen` dependency optional (and patch if needed)
- [x] add options to fix `python` build
- [x] make python build optional but on by default
2020-05-12 09:41:31 +02:00
Tomoki, Karatsu
a59b92d303 xabclib: added support for Fujitsu compiler. (#16596)
- Added Fujitsu compiler options that have the same functions as the options added for GCC
- Added option to link C objects
2020-05-12 09:40:11 +02:00
Sajid Ali
b526a90220 Charm++: fix build prefix; add ucx/pmi support (#15666)
* Add pmi support (required by ucx, ofi, and gni backends)
* Add support for ucx backend
* Add dependency on MPI for pmi=simplepmi, slurmpmi, or slurmpmi2
* Remove charmpp as an MPI provider since the changes in this PR can
  add MPI as a dependency (mentioned previously)
* Install into transport_protocol-OS-arch subdirectory to match
  default charmpp installation behavior (which helps dependents find it)
2020-05-11 16:27:38 -07:00
Greg Becker
fa702b8311 python: add -fwrapv to cflags for python@3.8.0: %intel (#16592) 2020-05-11 18:02:56 -05:00
Michael Kuhn
35c3478fcd fio: Add 3.19 (#16571)
Earlier versions are not compatible with gcc@10:.
2020-05-11 16:54:28 -05:00
Michael Kuhn
97779e3539 adios: Fix build with gcc@10: (#16569) 2020-05-11 16:54:08 -05:00
asmaahassan90
1367b63e99 Add avizo version 2020.1 (#16567) 2020-05-11 12:56:50 -05:00
Adam J. Stewart
98fd62254f py-plac: remove erroneous argparse dependency (#16584) 2020-05-11 12:56:07 -05:00
Michael Kuhn
5ed5c55ebd mpich: Fix build with gcc@10: (#16568) 2020-05-11 12:55:36 -05:00
Massimiliano Culpo
43c9ad3421 Remove 'spack bootstrap' and associated docs (#15179)
fixes #15145

This commit removes the outdated `spack bootstrap`
command and any reference to it in the documentation
and unit tests.
2020-05-11 10:55:18 -07:00
Amjad Kotobi
4c666034dc r-rstudioapi : new version (#16574) 2020-05-11 12:49:27 -05:00
Amjad Kotobi
3ddf6c0845 r-rlang : new version (#16575) 2020-05-11 12:48:51 -05:00
Amjad Kotobi
5e348f7133 r-digest : version updated (#16578) 2020-05-11 12:43:38 -05:00
Andrew Gaspar
2c009a3226 Map the spack skylake arch to Kokkos BDW, rather than SKX (#16583)
SKX includes AVX-512 extensions that consumer Skylake processors do
not have. Therefore, map Skylake to the prior arch to work on
these systems. Skylake-X processors will still map as the
skylake_avx512 spack arch and get the correct optimzations.
2020-05-11 12:33:34 -05:00
Justin S
20a4e5efe8 stata: add new libpng dependency (#16582) 2020-05-11 12:32:36 -05:00
Michael Kuhn
cd2e906702 netcdf-fortran: Fix build with gcc@10: (#16573) 2020-05-11 12:31:40 -05:00
Jen Herting
c220a22b69 New package: py-mmcv (#16536)
* [py-mmcv] Created template

* [py-mmcv] added description and homepage

* [py-mmcv] requires python 3.6+

* [py-mmcv] added dependencies

* [py-mmcv] depends on opencv

* [py-mmcv] cleaned up fixmes

* [py-mmcv] requires numpy >= 1.11.1
2020-05-11 12:14:22 -05:00
Michael Kuhn
03d0a7ee1e gcc: added v10.1.0 (#16525) 2020-05-11 16:22:19 +02:00
Sinan
ff6a0fc7b0 py-configobj: remove url function (#16522)
It seems the pypi version of the package somehow compiles just fine

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-05-11 10:43:56 +02:00
takanori-ihara
e08792cbcb py-jupyterlab: added package at v2.1.0 (#16562) 2020-05-11 10:35:44 +02:00
takanori-ihara
fa8dede6cd Add new package:py-jupyterlab-server (#16561) 2020-05-10 21:32:53 -05:00
Adam J. Stewart
c03d4688e4 PyTorch: fix master and mkldnn builds (#16560) 2020-05-10 19:40:00 -05:00
Amjad Kotobi
7d3b40fba4 new version r-rcpp (#16549) 2020-05-10 17:39:20 -05:00
Amjad Kotobi
6c820dd6b5 new version r-glue (#16558) 2020-05-10 17:38:51 -05:00
Amjad Kotobi
36941e3d94 new version r-pkgbuild (#16559) 2020-05-10 17:38:38 -05:00
Amjad Kotobi
5dc51c21bb new version r-jsonlite (#16557) 2020-05-10 17:38:26 -05:00
Amjad Kotobi
f32d561e9b new version r-dt (#16555) 2020-05-10 15:31:58 -05:00
Amjad Kotobi
3210e5999e new version r-covr (#16554) 2020-05-10 15:31:08 -05:00
Amjad Kotobi
ff869a7d68 new version r-callr (#16552) 2020-05-10 15:29:18 -05:00
Adam J. Stewart
358242d2a8 DGL: add new version (#16547) 2020-05-10 10:04:28 -05:00
Massimiliano Culpo
8c12030498 Fix MacOS tests on develop
The -u option allows to update the current head,
so tests won't fail if we are on develop
2020-05-09 17:41:57 -07:00
Axel Huebl
29105da445 macOS nightly: +1hr py-jupyter
check if failures ares actually a real timeout or an error that
just causes a hang.
2020-05-09 17:41:10 -07:00
Axel Huebl
2b234b7a66 macOS nightly: two cores
All GitHub actions provide two cores. Just make sure this does not
get oversubscribed with potentially visible additional physical
cores.
2020-05-09 17:41:10 -07:00
Massimiliano Culpo
05203ec3fb Add unit test on MacOS using Github Actions (#14220)
- Remove macos tests from travis
- Add macos tests in github actions.
2020-05-09 13:35:14 -07:00
vvolkl
69ea6de069 [dd4hep] variant and run env updates (#16524)
* [dd4hep] variant and run env updates

* address comments from #16524
2020-05-09 14:54:07 -05:00
Larry Knox
6e46603470 Add maintainers and variants for building with default earlier api versions. (#16534)
* Add maintainers.
Add variants for building with default earlier api versions.

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-09 13:05:55 -05:00
Jen Herting
54fee4b400 New package: py-addict (#16535)
* [py-addict] created template

* [py-addict] added homepage and description

* [py-addict] cleaned up fixmes

* [py-addict] depends on py-setuptools
2020-05-09 13:05:33 -05:00
Nichols A. Romero
a868b1c756 QMCPACK Update May 2020 (#16542)
* Add naromero77 as a maintainer for QMCPACK Spack package.

* Add QMCPACK 3.9.2

* Remove QE-to-QMCPACK wave function converter from QMCPACK Spack package. Already been moved to QE Spack package.
2020-05-09 13:05:11 -05:00
iarspider
b668bde7ec Fix dependency of geant4 (amends #16497) (#16504)
* Fix dependency of geant4 (amends #16497)

* Update geant4-data dependencies

* Reviewer comments (part 1/2)

* Reviewer comments (part 2/2)

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-09 19:04:20 +01:00
Massimiliano Culpo
b06bc31029 Increase coverage of spack.relocate (#16475)
- add docstrings and make parameter names consistent in `relocate.py`
- Make `replace_prefix_*` and other functions private (as they are implementation details)
- remove unused function _replace_prefix_nullterm()

- Add unit tests for `relocate.py` functions
  - add patchelf to Travis and use it during tests
  - add hello_world fixture with a compiled binary, so we can test relocation
2020-05-09 10:41:50 -07:00
Cyrus Harrison
8671ac6a1a update visit package with 3.1.1 release and add comments (#16498) 2020-05-09 10:28:33 -07:00
Todd Gamblin
7b8e5c8999 bugfix: don't use sys.stdout as a default arg value (#16541)
After migrating to `travis-ci.com`, we saw I/O issues in our tests --
tests that relied on `capfd` and `capsys` were failing. We've also seen
this in GitHub actions, and it's kept us from switching to them so far.

Turns out that the issue is that using streams like `sys.stdout` as
default arguments doesn't play well with `pytest` and output redirection,
as `pytest` changes the values of `sys.stdout` and `sys.stderr`. if these
values are evaluated before output redirection (as they are when used as
default arg values), output won't be captured properly later.

- [x] replace all stream default arg values with `None`, and only assign stream
      values inside functions.
- [x] fix tests we didn't notice were relying on this erroneous behavior
2020-05-09 00:56:18 -07:00
Todd Gamblin
5883e9df53 ci: update Travis badge in README.md to point to travis-ci.com 2020-05-09 00:56:18 -07:00
Adam J. Stewart
790e9ac6de spaCy: add new package for en_core_web_sm model (#16539) 2020-05-08 22:20:38 -05:00
Keita Iwabuchi
4c42946201 Metall: add version 0.2 (#16502) 2020-05-08 12:31:20 -05:00
takanori-ihara
89c92a0206 Add new package:py-pytest-check-links (#16503) 2020-05-08 12:30:47 -05:00
Sergey Kosukhin
e1c49d11bf py-netcdf4: a couple of improvements (#16505)
* py-netcdf4: avoid recompilation and make the older versions to work with HDF5@1.10:

* py-netcdf4: add a new version and introduce a maintainer list.
2020-05-08 12:27:28 -05:00
Frédéric Simonis
1e9313a191 precice: Fix conflict with boost 1.73.0 (#16507) 2020-05-08 12:26:37 -05:00
Christoph Junghans
b9415c6b53 graphviz: fix cairo backend (#16511) 2020-05-08 12:25:38 -05:00
iarspider
08528a7379 Gaudi: separate variant for building documentation (#16515)
* Gaudi: separate variant for building documentation

* Update package.py
2020-05-08 12:24:42 -05:00
h-denpo
fae55550f9 New package (#16519)
Large Scale Assembly, Structural Correspondence,
       Multi Dynamics Simulator.In this program,
       a part of functions of ADVENTURE_Solid ver.1.1 module
2020-05-08 12:22:04 -05:00
iarspider
652e179ae6 Gaudi: syntax fix (#16523) 2020-05-08 12:17:48 -05:00
Amjad Kotobi
33e88db2d6 new version xrootd-4.12.0 (#16528) 2020-05-08 12:05:54 -05:00
Amjad Kotobi
9eaf7e42c8 new version r-git2r-0.27.1 (#16529) 2020-05-08 12:05:30 -05:00
Axel Huebl
f5844d3d81 all_urls: add urls[0] for versions (#16435)
This adds the `url` alternative `urls` to `package.all_urls`. With
this addition, one can find again new versions with
`spack versions <package>` for packages that are populated with
from mixin mirror `urls`.

Example: `util-macros` from x.org mixin.
2020-05-08 10:12:45 +02:00
Erik Schnetter
4ebff5cef9 Documentation: typo in option description (#16518) 2020-05-07 22:23:16 -07:00
iarspider
e2d42672b7 Config option to disable setting S_ISGID bit when creating installation directory (#14479)
* Add config option to disable setting S_ISGID bit when creating installation directory. 

Co-authored-by: Ivan Razumov <ivan.razumov@cern.ch>
2020-05-07 17:21:53 -07:00
iarspider
08f449ae9a "spack checksum" QoL (#14311)
* Non-interactive mode for spack checksum; allow passing 'package@version' to spack checksum

* Flake8 fixes

* Update checksum.py

Fix typo

* Update spack-completion script

* Automatically set non-interactive mode if more than one version passed

* Update lib/spack/spack/cmd/checksum.py

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

* Add documentation and update spack-completion

* Flake8

* Rename option

* Update spack-completion

* Update lib/spack/spack/cmd/checksum.py

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

* Update checksum.py

* Update stage.py

* Update create.py

Use batch mode when adding a new package

Co-authored-by: Ivan Razumov <ivan.razumov@cern.ch>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-07 18:34:36 -05:00
Elizabeth Fischer
bff5708a4f Revert changes to qt (#16516)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-05-07 18:32:44 -05:00
Peter Scheibel
1ed564a1e6 Testing: fix unintended interactions between tests, part 2 (#16429)
This fixes some errors with setting up test configuration. These
errors do not cause current Spack tests to fail but do create
red herring issues elsewhere (see #15666). Fixing these errors
leads to more errors in tests that depended on the original
misconfigured state, so those are also addressed here.

This is an update to #16003 which accounts for some unit tests with
conflicting config/mutable_config fixtures. These conflicts were
not exposed until the mutable_config fixture was fixed. Details are
included below. The change which builds on #16003 is prefixed with
"(new)".

* For tests that use the real Spack package repository, the config
  needs to avoid using MPI providers that are not intended to be
  installed by Spack. Without this, it is possible that Spack tests
  which concretize the MPI virtual will end up trying to use an
  implementation that it shouldn't (e.g. one that is always
  provided externally). See #15666 for an example.
* The mutable_config test fixture was not initializing the scope
  roots to the right directories (so the resulting config was empty).
* The current_host fixture in the concretize.py tests was using the
  config fixture rather than mutable_config, and was polluting the
  config cache for other tests.
* One test in concretize.py was clearing a nonexistent cache
  (PackagePrefs._packages_config_cache). This reference has been
  removed.
* The test 'test_preferred_compilers' was was depending on cross
  test config pollution to succeed. The initial spec before
  concretization has been updated to updated to be explicit about
  the desired result.
* (new) For tests that use install_mockery and mutable_config,
  replace install_mockery with a separate install_mockery_mutable_config
  fixture that is exactly the same as install_mockery but uses the
  mutable_config fixture to avoid conflicts.
2020-05-07 14:01:58 -07:00
Adam J. Stewart
d7bd070ae9 GDAL: add 3.1.0 (#16509) 2020-05-07 14:41:38 -05:00
Themos Tsikas
3c3d431492 NAG Compiler 7.0 (Build 7017) download checksum (#16510) 2020-05-07 14:41:21 -05:00
Andrew Gaspar
0103084558 Add Rust 1.43.1 (#16512) 2020-05-07 14:38:21 -05:00
h-denpo
4b65efa8ae ADD New package revocap-refiner (#16499)
* ADD New package revocap-refiner
    """The University of Tokyo, CISS Project:
        Geometric processing, mesh processing, mesh generation"""

* Modify     homepage = "https://github.com/FrontISTR/REVOCAP_Refiner"
Modify    version('master', branch='master')
Modify    depends_on('swig', type='build')
Modify        install_tree('Refiner', prefix.include.refine)
Delete         mkdirp(prefix.include)
2020-05-07 08:44:23 -05:00
darmac
762e74e1e3 Add new package: ganglia (#16382)
* Add new package: ganglia

* ganglia: fix the libexpat depends
2020-05-07 08:41:28 -05:00
Hadrien G
14685ae552 Adapt to the latest Acts developments (#16385)
* Adapt to the latest Acts developments

A long time ago, the Acts project (whose name was then capitalized ACTS) used
to maintain multiple software repositories:

- The heart of the tracking toolkit was located in the `acts-core` repository
- Fast simulation extensions were located in the `acts-fatras` repository
- Advanced usage examples were located in the `acts-framework` repository

This multi-repository organization, however, has been a source of constant
pain, which is why the various projects were gradually merged into a single
mono-repo, called `acts`. Today, with the integration of `acts-framework`,
this merging process is reaching completion.

The present pull request adapts the Acts package to this evolution by...

- Renaming the package to `acts`, reflecting the new repository name
- Renaming the `test` variant to `unit_tests`, reflecting current CMake naming
- Adding the new build variants that were inherited from `acts-framework`
- Acknowledging the change of semantics of the `examples` variant, and only
  supporting the new ones (as the former variant was almost unused)
- Liberally using alphabetical order to make the package code more readable
- Recording a large number of conflicts, some of which are introduced by the
  merging of `acts-framework` and some of which already existed before
- Using the new capitalization of "Acts"

* Add acts v0.23

* Update dd4hep version requirement

* Add acts v0.22.1 bugfix
2020-05-07 08:40:31 -05:00
asmaahassan90
edd60f95c3 Add PGI version 19.7 and export OMPI variables (#16484)
* add PGI version 19.7

* use openmpi in pgi

exporting openmpi enviroment variables when installed with pgi

* fix lint
2020-05-07 08:38:05 -05:00
Todd Gamblin
b196e4396a bugfix: spack shouldn't fail in an incomplete environment (#16473)
Fixed #15884.

Spack asks every package linked into an environment to tell us how
environment variables should be modified when a spack environment is
activated. As part of this, specs in an environment are symlinked into
the environment's view (see #13249), and the package calculates
environment modifications with *the default view as the prefix*.

All of this works nicely for pointing the user's environment at the view
*if* every package is successfully linked. Unfortunately, right now we
only track what specs "should" be in a view, not which specs actually
are. So we end up calculating environment modifications on things that
aren't linked into thee view, and the exception isn't caught, so lots of
spack commands end up failing.

This fixes the issue by ignoring and warning about specs where
calculating environment modifications fails. So we can still keep using
Spack even if the current environment is incomplete.

We should probably also just avoid computing env modifications *entirely*
for unlinked packages, but right now that is a slow operation (requires a
lot of YAML parsing). We should revisit that when we have some better
state management for views, but the fix adopted here will still be
necessary, as we want spack commands to be resilient to other types of
bugs in `setup_run_environment()` and friends. That code is in packages
and we have to assume it could be buggy when we call it outside of builds
(as it might fail more than just the build).
2020-05-07 02:30:09 -07:00
Eisuke Kawashima
05dcfe829e neovim: added v0.4.3 (#16410)
Use neovim's vendored dependencies for 0.4 and later
2020-05-07 10:29:27 +02:00
Tomoki, Karatsu
830f3f79d9 openfoam: correspond to build with Fujitsu compiler. (#15941)
* openfoam: correspond to build with Fujitsu compiler.

* openfoam: add rules for Fujitsu compiler (on linuxARM64)

- the Fujitsu compiler is a clang derivative, so use a modified
  version of the clang rules if upstream does not supply anything
2020-05-06 21:55:09 -05:00
takanori-ihara
50a2690ce1 Add new package:py-json5 (#16273)
* Add new package:py-json5

* Remove unnecessary line
2020-05-06 21:53:16 -05:00
iarspider
8845358f10 New version of pylint + fix dependencies (#16443)
* New version of pylint + fix dependencies

* Update package.py

* Update package.py
2020-05-06 21:51:04 -05:00
Glenn Johnson
9c218079f0 Install RMPISNOW wrapper in prefix.bin for r-snow (#16479)
If using mpirun, the R sessions can be started with a wrapper script
that helps set up the R session cluster. Put this wrapper in the PATH so
it is easily accessible.
2020-05-06 21:49:46 -05:00
Adam J. Stewart
18e1e2424f py-shapely: fix unit tests (#16500) 2020-05-06 20:44:55 -05:00
Sergey Kosukhin
2139c8e53e py-netcdf4: make sure we don't use system hdf5. (#16492) 2020-05-06 18:14:10 -05:00
Adam J. Stewart
b14befe61a Bazel: add new versions (#16493) 2020-05-06 18:12:40 -05:00
Adam J. Stewart
d2709fd376 TensorFlow: add new version (#16494) 2020-05-06 18:12:28 -05:00
Kevin Manalo
e8753fe972 OpenMPI - Update to 3.1.6 (#16496) 2020-05-06 18:12:14 -05:00
iarspider
638784e4c3 Add new version of Geant4 (#16497) 2020-05-06 18:11:40 -05:00
Adam J. Stewart
74b3ae4803 PyTorch/Torchvision: fix deptype (#16495) 2020-05-06 18:05:26 -05:00
yellowhat
d1983d7395 blis: FIX threads option, HPL: enable opemp variant for 2.3 (#16476)
* blis: FIX threads option

* HPL: openmp variant is ignored for 2.3

* blis: FIX flake8

* blis: FIX spacing

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* hpl: FIX spec --> self.spec, FIX blas with amdblis

* HPL: fix flake8

* HPL: FIX flake8

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-06 15:36:29 -05:00
Elizabeth Fischer
1aacdc4e18 qscintilla (#16182)
* qscintilla

* Revert "qscintilla"

This reverts commit 00bd00ea3c.

* Move logic to qt package.

* flake8

Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-05-06 15:35:36 -05:00
Scott Wittenburg
6d1e9c3ff4 margo: update dependency on argobots (#16489) 2020-05-06 12:17:28 -07:00
Greg Becker
d0220a990c fix underscore/dash problems for mic_knl and skylake_avx512 (#16491) 2020-05-06 12:10:08 -07:00
Axel Huebl
bf203383bd macOS Package Builds (nightly) (#16345)
Add nightly builds for popular and commonly used packages on
macOS that should improve the onramp user experience if
working well.
2020-05-06 11:51:29 -07:00
Peter Scheibel
b030a81a5f Automatically find externals (#15158)
Add a `spack external find` command that tries to populate
`packages.yaml` with external packages from the user's `$PATH`. This
focuses on finding build dependencies. Currently, support has only been
added for `cmake`.

For a package to be discoverable with `spack external find`, it must define:
  * an `executables` class attribute containing a list of
    regular expressions that match executable names.
  * a `determine_spec_details(prefix, specs_in_prefix)` method

Spack will call `determine_spec_details()` once for each prefix where
executables are found, passing in the path to the prefix and the path to
all found executables. The package is responsible for invoking the
executables and figuring out what type of installation(s) are in the
prefix, and returning one or more specs (each with version, variants or
whatever else the user decides to include in the spec).

The found specs and prefixes will be added to the user's `packages.yaml`
file. Providing the `--not-buildable` option will mark all generated
entries in `packages.yaml` as `buildable: False`
2020-05-05 17:37:34 -07:00
Adam J. Stewart
7e5874c250 PyTorch: add patches to fix build (#16477) 2020-05-05 16:56:03 -05:00
Christoph Junghans
fbdd290877 kokkos: add v3.1.01 (#16470)
* kokkos: add v3.1.01

* kokkos: fix up versions

* kokkos-kernels: follow upstream versioning
2020-05-05 15:31:13 -06:00
Greg Becker
dd3762d0f9 cray platform: support cray Cluster and XC type machines (#12989)
Cray has two machine types. "XC" machines are the larger
machines more common in HPC, but "Cluster" machines are
also cropping up at some HPC sites. Cluster machines run
a slightly different form of the CrayPE programming environment,
and often come without default modules loaded. Cluster
machines also run different versions of some software, and run
a linux distro on the backend nodes instead of running Compute 
Node Linux (CNL).

Below are the changes made to support "Cluster" machines in
Spack. Some of these changes are semi-related general upkeep
of the cray platform.

* cray platform: detect properly after module purge

* cray platform: support machines running OSs other than CNL

Make Cray backend OS delegate to LinuxDistro when no cle_release file
favor backend over frontend OS when name clashes

* cray platform: target detection uses multiple strategies

This commit improves the robustness of target
detection on Cray by trying multiple strategies.

The first one that produces results wins. If
nothing is found only the generic family of the
frontend host is used as a target.

* cray-libsci: add package from NERSC

* build_env: unload cray-libsci module when not explicitly needed

cray-libsci is a package in Spack. The cray PrgEnv
modules load it implicitly when we set up the compiler.
We now unload it after setting up the compiler and
only reload it when requested via external package.

* util/module_cmd: more robust module parsing

Cray modules have documentation inside the module
that is visible to the `module show` command.
Spack module parsing is now robust to documentation 
inside modules.

* cce compiler: uses clang flags for versions >= 9.0

* build_env: push CRAY_LD_LIBRARY_PATH into everything

Some Cray modules add paths to CRAY_LD_LIBRARY_PATH
instead of LD_LIBRARY_PATH. This has performance benefits
at load time, but leads to Spack builds not finding their
dependencies from external modules.
Spack now prepends CRAY_LD_LIBRARY_PATH to
LD_LIBRARY_PATH before beginning the build.

* mvapich2: setup cray compilers when on cray

previously, mpich was the only mpi implementation to support
cray systems (because it is the MPI on Cray XC systems). 
Cray cluster systems use mvapich2, which now supports cray
compiler wrappers.

* build_env: clean pkgconf from environment

Cray modules silently add pkgconf to the user environment
This can break builds that do not user pkgconf.
Now we remove it frmo the environment and add it again if it
is in the spec. 

* cray platform: cheat modules for rome/zen2 module on naples/zen node

Cray modules for naples/zen architecture currently specify
rome/zen2. For now, we detect this and return zen for modules
named `craype-x86-rome`.

* compiler: compiler default versions

When detecting compiler default versions for target/compiler
compatibility checks, Spack previously ran the compiler without
setting up its environment. Now we setup a temporary environment
to run the compiler with its modules to detect its version.

* compilers/cce: improve logic to determine C/C++ std flags

* tests: fix existing tests to play nicely with new cray support

* tests: test new functionality

Some new functionality can only be tested on a cray system.
Add tests for what can be tested on a linux system.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-05-05 13:58:46 -07:00
Axel Huebl
7be7d672b7 OpenBLAS: Fix LLVM 9.0.0 ICE on macOS (#16471)
Recently added patch to port the LLVM 9.0.0 ICE with OpenBLAS and
AVX-512 instructions as well to AppleClang (11.0.3).
2020-05-05 13:45:01 -05:00
Sajid Ali
eff8e1d20b minor (#16467) 2020-05-05 13:43:00 -05:00
Massimiliano Culpo
aa9c98b6a2 Make usage example consistent with current MV variants (#16468)
Since #9481 Python's None is not permitted as a value for
MV variants. The string 'none' is used instead.

Add the same fix for the amgx and lammps packages
2020-05-05 20:22:32 +02:00
Jennifer Green
de71b2828f CMake: Cray XC40 system errors bootstrapping CMake (#16459)
* CMake: fix https://github.com/spack/spack/issues/16453 with a patch addressing both libhugetlbfs and icpc warnings on Cray XC40 systems

* Including CMake v3.17.2 in the patched versions
2020-05-05 14:02:49 -04:00
Christoph Junghans
ff3769e2e2 cabana: add v0.3.0 & shared variant (#16466) 2020-05-05 11:59:28 -05:00
Chris White
2cb4ae747d Add Axom spack package (#15432)
* Add OpenMP variant to Umpire

* Initial implementation of Axom package

* Add Axom spack package and fix required dependencies

* Fix overzealous tag replacement

* Attempt to fix version error

* Fix python version attempt #2

* Update raja and umpire

* remove sys_type check

* Address comments in axom package

* Address Greg's comments

* Fix flake8

* more flake8

* Simplify MPIEXEC and MPIEXEC_NUMPROC_FLAG

* Fix typo

* Revert back to slurm check, fix cuda_arch checks

* Fix cuda_arch variant forwarding

* Add cub variant

* Add py-shroud

* Address comments

* Fix shroud path in axom

* Fix merge conflict

* Fix backwards if

* Fix flake8 and add copyright

* format for consistency
2020-05-05 08:52:32 -07:00
Justin S
70c9dd37a7 exonerate-gff3: new package at 2.3.0 (#11830) 2020-05-05 10:51:59 -05:00
Justin S
0e60ec7f1c perl-bio-searchio-hmmer: new package at 1.7.3 (#16281)
* perl-bio-searchio-hmmer: new package at 1.7.3

* perl-bio-searchio-hmmer: add dependencies
2020-05-05 10:50:06 -05:00
Axel Huebl
6013060c60 WarpX: RZ + PSATD (#16464)
Add additionally required dependencies to WarpX that are needed
for transformations in RZ geometry with spectral (PSATD) solvers.
2020-05-05 10:48:23 -05:00
Tim Haines
33b129b919 Boost: Add version 1.73.0 (#16442) 2020-05-05 08:26:11 -05:00
vvolkl
c2791a4baa [dd4hep] fix python setup (#16461) 2020-05-05 08:25:26 -05:00
Benjamin Tovar
f1bb0f8aad cctools to 7.1.5 (#16450)
* change homepage to readthedocs

* update cctools version to 7.1.5

* change http to https
2020-05-05 08:24:42 -05:00
Christoph Junghans
04cb1800a6 lammps: added v20200505 (#16463) 2020-05-05 09:54:30 +02:00
Greg Becker
3ae76d8c1e bugfix: config:install_hash_length ignored (#15919) 2020-05-04 23:10:25 -07:00
Adam J. Stewart
b9ed788589 py-shapely: add master version (#16465) 2020-05-04 23:42:17 -05:00
Elizabeth Fischer
4c323e49bf libspatialite: Update for proj@6 (#16173)
* libspatialite

* flake8

* Added proper version constrain

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-04 19:44:54 -05:00
Elizabeth Fischer
76bd143c30 libsecret (#16174)
* libsecret

* Update package.py

Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-05-04 19:44:23 -05:00
vvolkl
e575ba2773 bugfix: Update run-time dependencies of py-xenv (#16460)
Otherwise, if I run `xenv` after `spack load py-xenv` it fails with:
```
Traceback (most recent call last):
  File "/home/vavolkl/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/py-xenv-develop_2018-12-20-lqbxakapsepqo5w3sjhhokj5o7c5jei2/bin/xenv", line 6, in <module>
    from pkg_resources import load_entry_point
ModuleNotFoundError: No module named 'pkg_resources'
```
2020-05-04 19:41:19 -05:00
vvolkl
befd472594 [gaudi] fixes and patches (#16433)
* [gaudi] fixes and patches

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Apply suggestions from code review

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* [gaudi] add older versions and fold +tests into +optional

* [gaudi] set run environment

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-04 19:40:13 -05:00
Greg Becker
8e2f5ba861 environments: allow sigils to apply to entire reference (#15245)
* environments: allow sigils to apply to entire reference
2020-05-04 15:11:10 -07:00
Amjad Kotobi
6c07260d27 ecFlow added UI & GUI flag with new version (#16444)
* ecFlow added UI & GUI flag with new version

* Fix1
2020-05-04 16:57:06 -05:00
Elizabeth Fischer
5adf703414 py-palletable: Add new version (#16445)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-05-04 16:55:54 -05:00
Elizabeth Fischer
43d2c7f3b5 py-cf-units: Add new version (#16446)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-05-04 16:53:12 -05:00
René Widera
e808a52176 update isaac and issac-server to v1.5.0 (#16452)
Update package.py with the latest release [ISAAC v1.5.0].
2020-05-04 16:47:12 -05:00
Matthias Diener
fe350224b6 pocl: add version 1.5 (#16455)
* pocl: add version 1.5

* update clang version
2020-05-04 16:46:30 -05:00
Matthias Diener
0a4e078648 hwloc: add version 2.2.0 (#16456) 2020-05-04 16:45:55 -05:00
Shintaro Iwasaki
0475edfbf2 BOLT: add 1.0 (#16457) 2020-05-04 16:45:28 -05:00
Shintaro Iwasaki
acf0c90283 argobots: mark 1.0 as preferred (#16458)
By default, Spack chooses 1.0rc2 instead of 1.0 though 1.0 is the stable and
newer release.  We manually mark the version 1.0 as preferred.
2020-05-04 16:44:50 -05:00
Oliver Breitwieser
1cff717ca8 Fix git-related commands not working in worktrees
If spack is checked out in a git worktree (see [1]), all git-related
commands fail because the `spack_is_git_repo()`-check is not thorough
enough.

When developing in a feature-branch in a seperate worktree, this is
annoying as all unittests regarding git-related spack commands fail,
cluttering the test results with false-positives.

[1]: https://git-scm.com/docs/git-worktree

Change-Id: I94b573a2c0e058e9ccc169e7ee6561626fbb06fd
2020-05-04 14:39:25 -07:00
Elizabeth Fischer
dea5d913db Updates to Python for macOS (#16449)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-05-04 16:30:59 -05:00
Elizabeth Fischer
7b31f5474b grass: new versions (#16181)
* grass

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-04 16:25:19 -05:00
Axel Huebl
87f78137a5 LAPACKC++: added "shared" variant (#16419)
We can control the shared/static build of CMake and the default in
Spack is to build shared libraries. The old, uncontrolled default
of this package is a static build.
2020-05-04 09:39:20 +02:00
Dr. Christian Tacke
d5adad6953 singularity: added missing dependencies (#16430)
See:

https://sylabs.io/guides/3.5/user-guide/quick_start.html#install-system-dependencies

for pkg-config and libseccomp
2020-05-04 09:02:38 +02:00
Nichols A. Romero
860c54335d QE-to-QMCPACK wave function converter relocation + some bug fixes (#16422)
* Revise description of patch variant.

* Add qmcpack variant. Apply QE-to-QMCPACK wave function converter patch.

* Clean-up, document, and re-organize.

* ELPA patches did not nead when=`+patch` variant.

* Need to be more precise here with QE version numbers.

* satisfies seems to be necessary here in order to get correct behaviour.

* Buglet with zlib link line.

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Fix for QE-to-QMCPACK wave function converter w.r.t. QE 6.3. Also adjust comments to reflect changes in code.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-05-03 14:53:01 -06:00
Adam J. Stewart
caad59e7c7 NumPy: add 1.18.4 (#16441) 2020-05-03 13:29:15 -05:00
vvolkl
ed9e19df06 Add new HEP package: fastjet (#16439)
* [fastjet] initial commit

* [fastjet] remove beta versions
2020-05-03 13:27:18 -05:00
vvolkl
3c2f46aabf Add new HEP package: Delphes (#16440)
* [delphes] initial commit

* [delphes] formatting fixes
2020-05-03 11:13:03 -05:00
Adam J. Stewart
1af31d24fd GEOS: add new version (#16437) 2020-05-02 23:38:46 -05:00
Adam J. Stewart
eb4451dd1e py-shapely: new version, Python 3.7 fix (#16438) 2020-05-02 23:38:30 -05:00
Adam J. Stewart
2e63e08192 py-cartopy: update package, fix PROJ.6 support (#16436) 2020-05-02 20:13:12 -05:00
Matthias Diener
1bc104e00e colordiff: add version 1.0.19 (#16431) 2020-05-02 13:26:56 -05:00
Jonathon Anderson
08f88b4be6 Add a gpfs variant to openmpi package (#15793)
Open MPI will detect and link against GPFS if it is present
on the system. This variant allows this to be disabled, even
if GPFS is present.
2020-05-02 11:07:50 -05:00
Sajid Ali
adafdf0644 add hydra/pmix conflict (#16428) 2020-05-01 20:51:54 -05:00
Matthias Diener
668dcb78a1 py-opentuner: add version 0.8.2 (#16423) 2020-05-01 20:50:54 -05:00
Jen Herting
acabe2deba [ncbi-magicblast] added version 1.5.0 (#16424) 2020-05-01 20:50:26 -05:00
Justin S
cf59220edc stata: add version 16 (#16425) 2020-05-01 20:50:13 -05:00
mic84
c7552c0c72 amrex: New version 20.05 (#16427) 2020-05-01 20:47:18 -05:00
Kelly (KT) Thompson
b5b7ef2ce6 Provide update for py-pyside2 version 5.14.2.1. (#16426) 2020-05-01 17:32:31 -05:00
Justin S
f38820f89c tbl2asn: new package at 20200301 (#16280)
* tbl2asn: new package at 20200301

* tbl2asn: remove unused url

* tbl2asn: use spack decompression, fix permissions

* tbl2asn: change version
2020-05-01 16:40:09 -05:00
Peter Scheibel
40df44e021 Revert "Testing: fix unintended interactions between tests (#16003)" (#16420)
This was breaking tests on develop.
2020-05-01 13:39:43 -07:00
Peter Scheibel
31d12d380f Testing: fix unintended interactions between tests (#16003)
* For tests that use the real Spack package repository, the config
  needs to avoid using MPI providers that are not intended to be
  installed by Spack. Without this, it is possible that Spack tests
  which concretize the MPI virtual will end up trying to use an
  implementation that it shouldn't (e.g. one that is always
  provided externally). See #15666 for an example.
* The mutable_config test fixture was not initializing the scope
  roots to the right directories (so the resulting config was empty).
* The current_host fixture in the concretize.py tests was using the
  config fixture rather than mutable_config, and was polluting the
  config cache for other tests.
* One test in concretize.py was clearing a nonexistent cache
  (PackagePrefs._packages_config_cache). This reference has been
  removed.
* The test 'test_preferred_compilers' was was depending on cross
  test config pollution to succeed. The initial spec before
  concretization has been updated to updated to be explicit about
  the desired result.
2020-05-01 10:47:46 -07:00
Axel Huebl
d0dfa1ea4d dev-build: --drop-in <shell> (#14887)
* dev-build: --drop-in <shell>

Add a `--drop-in <shell>` option to `spack dev-build`.
This option will automatically run a
`spack build-env <spec> -- <shell>` at the end of a `dev-build`, e.g.
to quickly drop-and-devel into a build phase of a package.

Example usage:
```
spack dev-build --before cmake --drop-in bash openpmd-api@develop
```

* build_env: drop in unit test

Co-authored-by: Greg Becker <becker33@llnl.gov>
2020-05-01 09:37:21 -07:00
Toyohisa Kameyama
40f70c4d4f mt-metis: New package. (#16380)
* mt-metis: New package.

* variant to 1 line.

* delete useless lines.
2020-05-01 10:51:27 -05:00
Matt Larsen
69a0fbd2cb raja: add awareness of the cuda architecture (#16377) 2020-05-01 10:07:12 +02:00
Jean-Laurent Picard
4f6c4743e3 arborx: fix build with new kokkos-legacy (#16413) 2020-05-01 09:30:27 +02:00
Christoph Junghans
7a56e6fce1 gromacs: add v2020.2 (#16408) 2020-04-30 19:01:07 -06:00
Satish Balay
4c69bc9d16 amrex: repo went through history rewrite - so use updates sha256sums (#16379) 2020-04-30 15:13:45 -05:00
Adam J. Stewart
022c287e47 Fix typos in new AutotoolsPackage function (#16406) 2020-04-30 15:13:04 -05:00
Michael Kuhn
a24a12f229 sqlite: Add 3.31.1 (#16404) 2020-04-30 15:12:51 -05:00
Michael Kuhn
efbd8c1555 readline: Fix homepage (#16403) 2020-04-30 15:12:38 -05:00
Michael Kuhn
9920684600 gettext: Add 0.20.2 (#16402) 2020-04-30 15:12:26 -05:00
Michael Kuhn
f04b0d99a8 glib: Add 2.64.2 (#16401) 2020-04-30 15:12:13 -05:00
Michael Kuhn
d2fc61a019 libffi: Add 3.3 (#16400) 2020-04-30 15:12:00 -05:00
Michael Kuhn
c2704a6037 perl: Add 5.30.2 (#16396) 2020-04-30 15:11:46 -05:00
Michael Kuhn
7adcb23978 libxml2: Add 2.9.10 (#16399) 2020-04-30 14:29:50 -05:00
Michael Kuhn
15c1fbc677 meson: Add 0.54.1 (#16398) 2020-04-30 14:29:36 -05:00
Michael Kuhn
6855e8e10f pcre: Add 8.44 (#16397) 2020-04-30 14:29:24 -05:00
Ben Bergen
6d7daf0def Resolves: https://github.com/spack/spack/issues/16394 (#16395)
Build problem with gcc 10.x
2020-04-30 11:16:00 -06:00
Adam J. Stewart
b55b7d5707 Fix kokkos-kernels tuple unpacking (#16393) 2020-04-30 11:36:50 -05:00
Christoph Junghans
cfb307b8e7 lammps: fix build with kokkos (#16390) 2020-04-30 10:29:08 -06:00
Adam J. Stewart
6c24142ebd Fix coreutils configure_args (#16391) 2020-04-30 11:13:23 -05:00
Christoph Junghans
74c9ba551a cabana: add v0.2 and fix kokkos deps (#16389) 2020-04-30 09:49:02 -06:00
darmac
b0ecaa1093 Add new package: bashtop (#16383) 2020-04-30 10:45:48 -05:00
Satish Balay
b2df39ea3a petsc: switch hdf5 spec from --with-hdf5-dir to --with-hdf5-lib (#16376)
This way - we can detect and use hdf5:hl,fortran - if enabled, but not require it as a dependency
2020-04-30 10:40:25 -05:00
Satish Balay
3a3f871718 xsdk: update to mfem and py-petsc4py changes (#16378)
mfem variant hypre is now rolled into variant mpi - so update spec accordingly

mfem@4.0.1-xsdk+superlu-dist is broken and unsupported - so disable it

with the addition of py-petsc4py@3.13.0 - conretizer gets confused and is not picking py-petsc4py@3.12.0 as a compatible dependency with petsc@3.12. So manually specify it.
Also depends_on('py-libensemble@0.5.2+petsc4py ^py-petsc4py@3.12.0' causes concretizer to hang forever
2020-04-30 10:33:02 -05:00
Christoph Junghans
d5d4e16f3d graphviz: fix cairo dep (#16387) 2020-04-30 10:29:20 -05:00
Christoph Junghans
f005ec016b kokkos: fix typos (#16388) 2020-04-30 09:09:13 -06:00
Jeremy
598c233f78 Update kokkos for new 3.x build systems (#16358)
* change old Makefile-based Kokkos to kokkos-legacy

* add Kokkos 3.x packages

Co-authored-by: Jeremiah J Wilke <jjwilke@kokkos-dev-2.sandia.gov>
2020-04-30 08:13:47 -06:00
Teodor Nikolov
9627cbbe1b lapackpp and blaspp: added packages (develop branch) (#16373) 2020-04-30 16:05:45 +02:00
Toyohisa Kameyama
54b71b2b69 JHPCN-DF: added package at v1.1.0 (#16384) 2020-04-30 15:03:35 +02:00
Benoit Coste
6c751f931c py-pyquaternion: added package at v0.9.5 (#16386) 2020-04-30 14:50:28 +02:00
Chris Green
9698907e74 Spack command extensions: error-handling (#13635)
Generally speaking, errors that are encountered when attempting to load
command extensions now terminate the running Spack instance.

* Added new exceptions `spack.cmd.PythonNameError` and
  `spack.cmd.CommandNameError`.
* New functions `spack.cmd.require_python_name(pname)` and
  `spack.cmd.require_cmd_name(cname)` check that `pname` and `cname`
  respectively meet requirements, throwing the appropriate error if not.
* `spack.cmd.get_module()` uses `require_cmd_name()` and passes through
  exceptions from module load attempts.
* `spack.cmd.get_command()` uses `require_cmd_name()` and invokes
  `get_module()` with the correct command-name form rather than the
  previous (incorrect) Python name.
* Added New exceptions `spack.extensions.CommandNotFoundError` and
  `spack.extensions.ExtensionNamingError`.
* `_extension_regexp` has a new leading underscore to indicate expected
  privacy.
* `spack.extensions.extension_name()` raises an `ExtensionNamingError`
  rather than using `tty.warn()`.
* `spack.extensions.load_command_extension()` checks command source
  existence early and bails out if missing. Also, exceptions raised by
  `load_module_from_file()` are passed through.
* `spack.extensions.get_module()` raises `CommandNotFoundError` as
  appropriate.
* Spack `main()` allows `parser.add_command()` exceptions to cause
  program end.

Tests:

* More common boilerplate has been pulled out into fixtures including
  `sys.modules` dictionary cleanup and resource-managed creation of a
  simple command extension with specified contents in the source file
  for a single named command.
* "Hello, World!" test now uses a command named `hello-world` instead of
  `hello` in order to verify correct handling of commands with hyphens.
* New tests for:
  * Missing (or misnamed) command.
  * Badly-named extension.
  * Verification that errors encountered during import of a command are
    propagated upward.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-04-29 18:18:48 -07:00
Carson Woods
d12e588c60 charliecloud: add more checksummed versions (#16146)
* Add more checksummed versions

* Remove all versions not supported by autotools build method

* Add old build system for older versions

* Add suggested changes
2020-04-29 17:22:22 -05:00
Adam J. Stewart
eef75ddd45 py-mypy: setuptools needed at run-time (#16375) 2020-04-29 13:50:34 -05:00
Dr. Christian Tacke
0385e84775 boost: Patch for boostorg/process/issues/116 (#16371)
Patch for "Unable to compile code using boost/process.hpp"
See: https://github.com/boostorg/process/issues/116
2020-04-29 12:53:58 -05:00
Nathan
b6b44948b8 prefix gets removed when adding additional configure options (#16335)
* prefix gets removed when adding additional configure options

* Update waf documentation to reflect the new change
2020-04-29 10:52:23 -05:00
darmac
42d7fd30c4 Add new package: brpc (#16309)
* Add new package: brpc

* change a patch for brpc

* refine brpc version

* refine brpc patch constraint
2020-04-29 09:58:35 -05:00
darmac
5697894b22 Add new package: graylog2-server (#16370) 2020-04-29 09:58:09 -05:00
darmac
890059c635 Add new package: libconfuse (#16368) 2020-04-29 09:57:38 -05:00
darmac
35b9901fa0 Add new package: fping (#16367) 2020-04-29 09:57:16 -05:00
darmac
0d9b003169 Add new package: trident (#16342)
* Add new package: trident

* remove unused source code
2020-04-29 08:20:05 -05:00
Jonathan R. Madsen
39bbe8f9d4 Update timemory to support new dependencies and expose more build options (#16241)
* Update timemory/package.py to support new dependencies and expose more build options

* Added missing 'use_arch' option handling

* Fixes for python 2.6

* Fix pyflake error F632

* F632 flake fixes

* Update package.py

* Update package.py

* 80 char width + added extra conflicts + fixed kokkos_modules reference

* 79 char width

* Removed submodule builds

- added allinea_map variant
- disabled caliper by default
- added ompt_{standalone,llvm} variants

* flake8 updates

* 79 char width
2020-04-29 08:19:17 -05:00
Joseph Ciurej
97e67b385c ffmpeg: add v1.0.10, v2.8.15; add '+avresample'; improve variant handling (#16359)
* ffmpeg: add older versions (i.e. 2.8.15, 1.0.10), add 'avresample' variant

* ffmpeg: update variant handling to support older versions (i.e. 2.8.15, 1.0.10)
2020-04-29 09:33:22 +02:00
Joseph Ciurej
c37857f995 openscenegraph: add v3.4.0, v3.4.1; add '+ffmpeg' (#16360)
* openscenegraph: add v3.4.0/3.4.1, update versioning to use git, improve dependency handling (esp. for ffmpeg, opengl)

* openscenegraph: add '+ffmpeg' variant, add 'jasper' dependency, clean up cmake config variables

* openscenegraph: reverted fetches to use checksums to improve reliability

* openscenegraph: add a few more explicit dependencies (e.g. png, tiff, glib).
2020-04-29 09:27:27 +02:00
Ryan Mast
6c0d4fb5e5 helics: fixed dependency on boost (#16363) 2020-04-29 09:10:33 +02:00
Dr. Christian Tacke
67ad8ed546 root: added v6.20.04, better variant handling (#16362)
* Add version 6.20.04
* This version still requires numpy for +python
* ROOT 6.20 renamed the define from python to pyroot:
  Add appropiate handling
2020-04-29 09:05:17 +02:00
Adam J. Stewart
8b4b7aacbb py-pandas: add 1.0.X release (#16366) 2020-04-28 23:14:17 -05:00
Ryan Mast
25c17e0ca6 helics: Add version 2.5.0 (#16364)
Add HELICS package version 2.5.0
2020-04-28 19:21:22 -05:00
Hadrien G
2d02769bea [dd4hep] Fix inappropriate patch line break (#16361)
Sometimes, text editors automate things a little too much...
2020-04-28 19:17:13 -05:00
Jeffrey Salmond
703111c01b Add amgx (#16357)
* add amgx package

* add amgx variants for mkl and magma support

* fix typo in cmake option

* flake8 fix formatting

* Apply suggestions from code review - use mkl virtual provider

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

* Apply suggestions from code review - fix copypasta

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-28 14:36:55 -05:00
Axel Huebl
00d83cd79d dev-build: stop before phase (#14699)
Add `-b,--before` option to dev-build command to stop before the phase in question.
2020-04-28 09:55:57 -07:00
Axel Huebl
7670ae468f Docs: Limit Microarch on Travis CI (#16200)
Update the travis CI docs: limiting the microarch is essential
for caching.
2020-04-28 11:54:02 -05:00
Carson Woods
6e63ff1688 netcdf-fortran: add new variants (#16046)
* Add additional variants to netcdf-fortran

* Fix duplicate variant

* Clean up variants based on review feedback

* Addtional variant changes

* Convert jna variant to single line

* Fix proper version constraints for jna variant
2020-04-28 11:15:19 -05:00
Stephen McDowell
4ed5cee940 jsoncpp add 1.9.2, patch %clang@10 for implicit conversion (#16153)
* add 1.9.2, patch %clang@10 for implicit conversion

* flake8: "fix" hanging indent (squash: because is that really more readable?)
2020-04-28 11:14:36 -05:00
darmac
af9c3b31de Add new package: figlet (#16355) 2020-04-28 11:12:50 -05:00
Cameron Smith
d3ffb12274 kokkos: add versions 3.0.00 and 3.1.00 (#16354) 2020-04-28 11:11:50 -05:00
darmac
48de131b08 bazel: support for aarch64 platform (#16350) 2020-04-28 11:07:46 -05:00
darmac
a1e03151b2 Add new package: etcd (#16348) 2020-04-28 11:07:02 -05:00
darmac
2f88af4d2c Add new package: kubernetes (#16347) 2020-04-28 11:06:24 -05:00
Jeffrey Salmond
4aed5daeba adjust petsc to build cuda only when requested explicitly (#16275)
* adjust petsc+cuda to build cuda only when requested explicitly

* activate petsc library support only when explicitly requested

* flake8 fixes
2020-04-28 10:52:39 -05:00
Carson Woods
27b7d4bd21 openmpi: add additional variants (#16044)
* Add variants to OpenMPI

* Add variant for toggling runpath

* Fix typo

* Remove blank line whitespace
2020-04-28 10:51:30 -05:00
Tom Payerle
aec3589679 netcdf-c: Patch to support hdf linked against libtirpc (#15994)
If hdf was built with +libtirpc, we need to add -ltirpc to our link
flags.
2020-04-28 09:43:53 -05:00
Massimiliano Culpo
50318e4ee3 travis: extend the list of e-mails being notified of failures (#16352) 2020-04-28 14:55:44 +02:00
Massimiliano Culpo
a540e36922 relocate: remove an assertion in _make_relative (#16351)
This was an oversight in #15654 since `os.path.isfile`
checks that the something is a file in the current
filesystem.
2020-04-28 14:53:22 +02:00
Christoph Junghans
9615ac42cf votca-*: fix stable deps (#16339) 2020-04-28 13:08:00 +02:00
darmac
cf31472e5a cassandra: added v3.11.6 and dependency on Java (#16341) 2020-04-28 13:04:31 +02:00
darmac
76e9171d25 colordiff: modified url to fix 404 error (#16349) 2020-04-28 10:59:52 +02:00
Christoph Junghans
fcbf0545c7 votca-*: add stable version (#16336)
* votca-*: add stable version

* votca-*: add myself as maintainer
2020-04-27 20:43:34 -05:00
Tiziano Müller
3115b5c758 CP2K: arch file improvements and blas-dependency simplification (#16074)
* cp2k: prettify arch-file, call pkg-config directly

this allows to re-use the arch-file without having to load the complete
Spack environment, for example after a dev-build

* cp2k: use consistency check instead of blas lib enum

this makes using other BLAS/LAPACK implementations possible without
explicitly adding support for them

* cp2k: add basic support for Cray and XL Compilers, correct Intel fp mode

* cp2k: add myself as maintainer

* cp2k: use "master" to denote the git version

* cp2k: use spack_cc/fc/cxx when possible, set CXX explicitly

* cp2k: set __MKL when using the MKL, not just the Intel compiler

* cp2k: drop self. when referencing spec where possible

* cp2k: add forgotten elpa+openmp dep

* cp2k: set C++14 for recent versions
2020-04-27 19:42:33 -05:00
Dr. Christian Tacke
f5a5a11c77 abseil-cpp: new Version, Build Shared Library (#16125)
* Add new version: "Abseil LTS branch, Feb 2020, Patch 1"
* Build shared libraries by default with new version
* Older versions do not support building shared libraries
2020-04-27 19:41:15 -05:00
Diego Magdaleno
f1a7fb2ffc Update bat and make the url dynamic (#16127)
* Update bat and make the url dynamic

- Now depending on the version it will calculate
the url

- This also fixes a weird issue that was reported
on Darwin, back when I reported that Rust wasn't
linking properly on Darwin #15887 on the comment
by hartzell i was also experiencing this issue

* Remove unnecessary stuff

- Removes the need for LLVM

- Removes the need for version calculation.

* Keep the versions on 1 line

* Pass flake8 tests
2020-04-27 19:40:35 -05:00
Diego Magdaleno
cd56882998 Add a new package Exa (#16126)
* Add new package exa

* Format and fix a silly typo

* Fix SHA256 SUM and make URL calculation dynamic

* Remove unnecessary URL calculation

* Update package.py

* Keep the version on 1 line

* Pass flake8 checks
2020-04-27 19:39:09 -05:00
asmaahassan90
b04b6e1449 Add ShengBTE (#16154)
* Add ShengBTE

Adding a new package; ShengBTE. I tried adding it a MakefilePackage, and use build_directory = 'Src', but it was as if the build_directory gets ignored and make complains about target not found. and using the make funtion here instead of os.system, I get errors that config.f90 is not found which is already available under Src as well.

* more enhancmenets

fix lint; use mkl spec; use build_directory variable

* one more fix

* Use Makefile template

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

use mkl instead of intel-mkl as a dependency

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

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

update recipe as suggested by reviewer

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

* enhance recipe

remove white space; changes as suggested by reviewer

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-27 19:38:15 -05:00
Joseph Ciurej
f314ff6639 python : fix SSL for older Python versions (#16217)
* Fixed SSL pathing for older versions of Python (i.e. @:3.6.999).

* Fixed an issue where the 'python~ssl' variant wasn't properly being respected.

* Improved the '~ssl' patch by making it functional instead of diff-based (enables 3.X.Y patches).

* Fixed comment formatting to satisfy 'flake8' style requirements.
2020-04-27 19:36:33 -05:00
Tim Haines
204179eed3 elfutils: Add version 0.179 (#16334) 2020-04-27 19:26:28 -05:00
Christoph Junghans
8060bc6523 graphviz: add poppler support (#16331)
* graphviz: add poppler support

* graphviz: actually needs poppler+glib

* poopler: fix glib build, new version
2020-04-27 15:18:03 -06:00
Mark W. Krentel
08e53b67f8 hpcviewer: add version 2020.04 (#16332)
* hpcviewer: add version 2020.04

* ibm-java: add version 8.0.6.7
2020-04-27 16:04:02 -05:00
Brian Van Essen
a4b17b9503 cuDNN: Help dependents find libs/includes on Power arch (#16128)
On Power architectures cuDNN will install in a target directory. This
sets cuDNN_ROOT to point to the subdirectory to help dependents use
this install.
2020-04-27 13:15:46 -07:00
Amjad Kotobi
1c45153e00 ecflow added version 4.12.0 (#16327) 2020-04-27 13:19:41 -05:00
Amjad Kotobi
31eff3578f cmake added version 3.17.1 (#16326) 2020-04-27 13:19:10 -05:00
Benjamin Tovar
505a511af4 update cctools to version 7.1.3 (#16324) 2020-04-27 13:18:44 -05:00
iarspider
a277b96b39 Make mariadb provide mysql-client... (#16322)
... as well as mariadb. Needed for ROOT.
2020-04-27 11:01:48 -05:00
vvolkl
77812845b8 update podio version formatting (#16321)
* update podio version formatting

* [podio] formatting fixes
2020-04-27 11:01:09 -05:00
vvolkl
eda886f627 [dd4hep] url and other fixes (#16320) 2020-04-27 11:00:10 -05:00
Toyohisa Kameyama
d59f7398a3 MODYLAS: New package (#16317) 2020-04-27 10:57:14 -05:00
darmac
5938499be7 Add new package: stinger (#16316) 2020-04-27 10:55:07 -05:00
darmac
81b5475f8e Add new package: smartdenovo (#16310) 2020-04-27 09:55:35 -05:00
Massimiliano Culpo
fe46919e19 tulip: added new package at v5.4.0 (#16319)
closes #3479

Co-authored-by: Kate Isaacs <kisaacs@cs.arizona.edu>

Co-authored-by: Kate Isaacs <kisaacs@cs.arizona.edu>
2020-04-27 09:54:49 -05:00
George Hartzell
3f54e73025 singularity: better info re post-install step (#16311)
The singularity info should actually suggest where you might find the info about the post-install steps.

Co-authored-by: george.hartzell <george.hartzell@sana.com>
2020-04-27 13:41:04 +02:00
Toyohisa Kameyama
0477f829a2 xabclib: added package at v1.03 (#16271) 2020-04-27 13:33:28 +02:00
asmaahassan90
35717b556b spglib: added libs property (#16318) 2020-04-27 13:26:10 +02:00
Christoph Junghans
3ea21fef4b votca-csg: Block gromacs@2020 and newer (#16315) 2020-04-27 04:57:26 -06:00
Massimiliano Culpo
6b648c6e89 Improve the coverage of spack.relocate (#15654)
This PR introduces trivial refactoring in:
- `get_existing_elf_rpaths`
- `get_relative_elf_rpaths`
- `get_normalized_elf_rpaths`
- `set_placeholder`

mainly to be more consistent with practices used in other 
parts of the code and to simplify functions locally. It also 
adds or reworks unit tests for these functions and extends 
their docstrings.

Co-authored-by: Patrick Gartung <gartung@fnal.gov>
Co-authored-by: Peter J. Scheibel <scheibel1@llnl.gov>
2020-04-27 12:17:32 +02:00
Toyohisa Kameyama
ca4de491ba ppOpen-APPL/AMR-FDM: New package (#16199)
* ppOpen-APPL/AMR-FDM: New package

* separate build and install.

* Fix description.
2020-04-26 22:09:06 -05:00
Axel Huebl
4f3cc19ec7 qt: fix macOS w/ AppleClang (mesa libs) (#16302)
Building the `py-jupyter` stack on macOS with AppleClang breaks on
the `py-qtconsole` -> `py-qtconsole` -> `qt +opengl` package build
environment setup with:
```
 ==> Error: AttributeError: Query of package 'mesa' for 'libs' failed
 ...
 ==> Error: Failed to install qt due to ChildError: AttributeError: Query of package 'mesa' for 'libs' failed
```

This tries to add more library targets build by `mesa` to avoid this.
2020-04-26 17:07:13 -07:00
Axel Huebl
199ce66a3c libpciaccess: mirror (#16312)
Support mirrors for libpciaccess downloads.
2020-04-26 17:06:37 -07:00
Axel Huebl
af7e323f67 libbsd: mirror (#16313)
Add a mirror for `libbsd` to improve fetch stability.
libbsd.freedesktop.org sometimes failes in my nightly CI/CD scripts.
2020-04-26 17:06:27 -07:00
Axel Huebl
e8efeda14a py-profilehooks (new package) (#16305)
Adds the py-profilehooks package.
2020-04-26 17:08:21 -05:00
Axel Huebl
f202023876 py-blosc (new package) (#16307)
Add the py-blosc python package.
2020-04-26 11:46:40 -05:00
Axel Huebl
31e8d646af py-h5py: master (new version) (#16306)
Add the `master` branch of h5py as a version.
2020-04-26 11:45:04 -05:00
Adam J. Stewart
63a0647282 PyTorch: disable XNNPACK build (#16304) 2020-04-26 11:29:52 -05:00
Axel Huebl
75042c381c LLVM lldb 10.0: Python Link Dependency (#16299)
* LLVM: Python Dependency

Effort to expose the linked python library when building LLVM.
This might fix the forward propagation of libintl that comes
with the static python library build on darwin.

* LLDB Py: Remove Ignored Old Flags

Changed in LLVM 10.0+
2020-04-25 21:36:08 -07:00
Adam J. Stewart
4cd537f6c7 py-pyyaml: add new version and variant (#16301) 2020-04-25 15:43:14 -05:00
Adam J. Stewart
b5be99cdb7 libyaml: add new version (#16300) 2020-04-25 15:42:40 -05:00
Sajid Ali
9b0e4cd20b ucx : add version, modify variants (#16252)
* fixes

* remove extra newline
2020-04-25 12:39:33 -05:00
Adam J. Stewart
9bd0b0fbe1 py-spacy: add new package (#16293) 2020-04-25 10:35:57 -05:00
Jonathon Anderson
b796d2736c Version bump: jdk 14 (#15821) 2020-04-25 10:35:33 -05:00
Adam J. Stewart
5fce2ac96b py-thinc: add new package (#16295) 2020-04-24 23:50:56 -05:00
Joseph Ciurej
914f380bb6 Improved the accuracy of the dependencies for the 'visit' package. (#16297)
Added a fix for the 'visit' package when building variant '@3%gcc'.
2020-04-24 21:25:48 -05:00
Adam J. Stewart
b5bf816577 py-preshed: add new package (#16292) 2020-04-24 21:24:33 -05:00
Adam J. Stewart
d0ccab7d17 py-srsly: add new package (#16294) 2020-04-24 20:01:22 -05:00
Adam J. Stewart
dbd0fe8190 py-wasabi: add new package (#16296) 2020-04-24 20:01:09 -05:00
Adam J. Stewart
7a2f47d181 py-plac: add new package (#16291) 2020-04-24 20:00:55 -05:00
Adam J. Stewart
510d8821e5 py-nltk: add new package (#16290) 2020-04-24 20:00:42 -05:00
Adam J. Stewart
0ee023d29f py-murmurhash: add new package (#16289) 2020-04-24 20:00:28 -05:00
Adam J. Stewart
ab87617d55 py-cymem: add new package (#16288) 2020-04-24 20:00:15 -05:00
Adam J. Stewart
3153610bb8 py-catalogue: add new package (#16287) 2020-04-24 20:00:02 -05:00
Adam J. Stewart
441c16bafb py-blis: add new package (#16286) 2020-04-24 19:59:48 -05:00
Adam J. Stewart
89914f521e py-wheel: add new version (#16285) 2020-04-24 19:59:30 -05:00
Adam J. Stewart
0606091775 py-tqdm: add new version (#16284) 2020-04-24 19:59:15 -05:00
Axel Huebl
5828a8f7e6 spack env: activate note (#16279)
print a note on how to activate a newly created environment
2020-04-24 13:24:52 -07:00
Toyohisa Kameyama
051d0d935a Chainer: New Package. (#16251)
* Chainer: New Package.

* 1. Add maintainers.
2. fix dependency.
3. Add typing-extention@3.6.6 and fix version dependency.

* afixed dependency.

* remove python dependency for version 6.
2020-04-24 11:56:10 -05:00
Jeffrey Salmond
95a03f6759 Add vscode files to gitignore (#16270) 2020-04-24 09:31:03 +02:00
Todd Gamblin
c6ada206af tests: each mock package now has its own class (#16157)
Packages in Spack are classes, and we need to be able to execute class
methods on mock packages.  The previous design used instances of a single
MockPackage class; this version gives each package its own class that can
spider depenencies.  This allows us to implement class methods like
`possible_dependencies()` on mock packages.

This design change moves mock package creation into the
`MockPackageMultiRepo`, and mock packages now *must* be created from a
repo.  This is required for us to mock `possible_dependencies()`, which
needs to be able to get dependency packages from the package repo.

Changes include:

* `MockPackage` is now `MockPackageBase`
* `MockPackageBase` instances must now be created with
  `MockPackageMultiRepo.add_package()`
* add `possible_dependencies()` method to `MockPackageBase`
* refactor tests to use new code structure
* move package mocking infrastructure into `spack.util.mock_package`,
  as it's becoming a more sophisticated class and it gets lots in `conftest.py`
2020-04-23 18:21:49 -07:00
Adam J. Stewart
433a0b243f oneDNN: add new version (#16267) 2020-04-23 19:50:22 -05:00
Jeffrey Salmond
9b3a0355bb add fontconfig as vim dependency (#16268) 2020-04-23 19:50:05 -05:00
Christoph Junghans
a844467c25 eospac: prefer 6.4.0 (#16266) 2020-04-23 15:53:51 -06:00
Todd Gamblin
0c0f11caf6 spack info: allow variants section to be as wide as the terminal (#16254)
The variants table in `spack info` is cramped, as the *widest* it can be
is 80 columns.  And that's actually only sort of true -- the padding
calculation is off, so it still wraps on terminals of size 80 because it
comes out *slightly* wider.

This change looks at the terminal size and calculates the width of the
description column based on it.  On larger terminals, the output looks
much nicer, and on small terminals, the output no longer wraps.

Here's an example  for `spack info qmcpack` with 110 columns.

Before:
    Name [Default]          Allowed values          Description
    ====================    ====================    ==============================

    afqmc [off]             on, off                 Install with AFQMC support.
                                                    NOTE that if used in
                                                    combination with CUDA, only
                                                    AFQMC will have CUDA.
    build_type [Release]    Debug, Release,         The build type to build
                            RelWithDebInfo
    complex [off]           on, off                 Build the complex (general
                                                    twist/k-point) version
    cuda [off]              on, off                 Build with CUDA

After:
    Name [Default]          Allowed values          Description
    ====================    ====================    ========================================================

    afqmc [off]             on, off                 Install with AFQMC support. NOTE that if used in
                                                    combination with CUDA, only AFQMC will have CUDA.
    build_type [Release]    Debug, Release,         The build type to build
                            RelWithDebInfo
    complex [off]           on, off                 Build the complex (general twist/k-point) version
    cuda [off]              on, off                 Build with CUDA
2020-04-23 12:14:40 -07:00
Mark W. Krentel
686f0e21de libunwind: add 1.4.0 release and 1.5 stable branch (#16261) 2020-04-23 12:34:19 -05:00
Andrew Gaspar
2a3942fa4c Rust 1.43.0 (#16260) 2020-04-23 12:33:02 -05:00
Andrew W Elble
d5d232e207 tensorflow: compile against spack-provided protobuf (#16258)
This allows horovod to be built with frameworks=pytorch,tensorflow.

I tracked down the crash I observed in #15719, where loading torch
before tensorflow would cause a crash in:

google::protobuf::internal::(anonymous
namespace)::InitSCC_DFS(google::protobuf::internal::SCCInfoBase*)

The solution is to make tensorflow compile against the protobuf
version Spack provides, instead of allowing it to use it's own.
It's likely we'll want to go after some of the others
that are listed in third_party/systemlibs/syslibs_configure.bzl
in the future.
2020-04-23 11:14:09 -05:00
jthies
ca67df6e3d phist: don't apply patch to 1.9.0 (#16257) 2020-04-23 11:11:54 -05:00
darmac
6cad7a585d Go: support for aarch64 (#16083) 2020-04-23 11:01:20 -05:00
darmac
df2cfd26cd ambari: added package at v2.7.5 (#16149) 2020-04-23 12:43:12 +02:00
Massimiliano Culpo
19c5843871 Travis: change the spec we concretize on MacOS (#16256)
Since CMake can't build with GCC on MacOS, choose a
spec that doesn't have CMake in the DAG.
2020-04-23 11:40:23 +02:00
Michael Kuhn
b1133cb5db py-setuptools: added v44.1.0 and v46.1.3 (#16171) 2020-04-23 10:09:09 +02:00
Michael Kuhn
f07cdd7f7a openssl: added 1.1.1g (#16247) 2020-04-23 10:01:23 +02:00
darmac
807a08a69b enca: added package at v1.19 (#16255) 2020-04-23 09:59:32 +02:00
Joseph Ciurej
044985af80 cryptopp : added 'shared' variant and sse detection (#16213) 2020-04-23 09:38:10 +02:00
darmac
7c0aee4127 cpp-httplib: added package at v0.5.9 (#16228) 2020-04-23 09:35:14 +02:00
darmac
04457fe031 Py coilmq (#16203)
* Add new package: py-coilmq

* remove FIXME comment

* fix depends_on
2020-04-22 23:13:44 -05:00
darmac
fb1498abac Add new package: dnsmasq (#16253) 2020-04-22 23:13:04 -05:00
darmac
15882d7868 Add new package: py-django (#16234) 2020-04-22 23:09:06 -05:00
darmac
7299de74c6 Add new package py-sqlparse (#16231)
* Update var/spack/repos/builtin/packages/py-sqlparse/package.py

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

* Add new package py-sqlparse

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-22 20:40:25 -05:00
Massimiliano Culpo
6f9373dd66 spack info: replace "True, False" with "on, off" (#16235)
fixes #16184
2020-04-22 17:48:52 -07:00
Axel Huebl
d0bff870a6 macOS+GCC: Conflicts CMake, libuv, CPython (#16249)
The major building blocks in many software stacks:
- CPython
- CMake (libuv)

do not build on macOS with GCC. The main problem is that some macOS
framework includes pull in objective-c code and that code does get
misinterpreted as (invalid) C by GCC by default.
2020-04-22 19:41:33 -05:00
Vicente Adolfo Bolea Sanchez
4166c97a82 vtk-m: update Vtk-m pkg to its latest version v1.5.1 (#16192)
Last month VTK-m releases its lastest version named `v1.5.1`. This new
release only contains bugfixes related to compiler error / warnings.

- Depends on CMake >= 3.12
- Set VTKm_NO_ASSERT=ON by default
- add maintainers

Signed-off-by: Vicente Adolfo Bolea Sanchez <vicente.bolea@kitware.com>
2020-04-22 18:54:55 -05:00
Mark W. Krentel
ec54f86c0b gotcha: add version 1.0.3 (#16239) 2020-04-22 16:48:41 -05:00
Kelly (KT) Thompson
650745746a Provide new version 0.6.10. (#16240) 2020-04-22 16:34:58 -05:00
Greg Becker
ec23e4ffe5 update compiler config with bootstrapped compiler when already installed (#16221)
Update compiler config with bootstrapped compiler when it was already installed and added config defaults to code so mutable_config test fixture works.
2020-04-22 14:26:29 -07:00
Adam J. Stewart
46e90692e8 PyTorch: add conflict for Apple Clang 11.0.3 (#16238)
* PyTorch: add conflict for Apple Clang 11.0.3

* Flake8 fix
2020-04-22 15:47:14 -05:00
Tim Haines
0d2ebbf996 hwloc: Add netloc variant (#16001)
hwloc depends on MPI when netloc is enabled. Note that OpenMPI depends on
netloc, so hwloc cannot use OpenMPI as the MPI provider when netloc is
enabled (this would result in a cyclic dependency).
2020-04-22 13:34:32 -07:00
George Hartzell
63ff121980 spack environments documentation: -E -> -e (#16242)
To specify an environment for a comment, the user can specify
"spack -e <env>". The documentation incorrectly specified "-E" (which
is actually used to ignore any implicit use of environments).
2020-04-22 13:04:17 -07:00
darmac
b874b3e1fe Add new package: isc-dhcp (#16230) 2020-04-22 11:23:40 -05:00
darmac
169b9bebd8 Add new package: kea (#16232) 2020-04-22 11:17:30 -05:00
darmac
769f350802 Add new package: py-asgiref (#16233) 2020-04-22 11:16:49 -05:00
Rao Garimella
d77576d85d update Jali version and dependent MSTK version (#16236)
Co-authored-by: Rao Garimella <rao@abyzou.lanl.gov>
2020-04-22 11:12:28 -05:00
Cameron Smith
e7906d6507 kokkos: generate_makefile calls cmake (#16237) 2020-04-22 11:11:55 -05:00
Sajid Ali
5f285fdd05 fix code-signing on macOS (#15592)
* rebase

* move if statement location

* remove whitespace

* spec to self.spec

* switch statements as per review

* fix erronous indent

* add missing cmake arg

* minor placement fix for cmake args

* edit comment

* fix erronous return

* clarify conflicts with messages

* remove duplicate comment

* simplify logic

* macos wasn't a variant, fix that

* remove extra blank line

* address reviewer comments on spaces
2020-04-22 09:49:07 -05:00
darmac
2a5592f419 Add new package: py-pid (#16202)
* Add new package: py-pid

* fix depends_on
2020-04-22 09:47:45 -05:00
asmaahassan90
d65b809f9b Add new versions to Avizo (#16204)
* Add new versions

add versions 2019.3 and 2019.4 and adjust the install stage accordingly

* one small fix

* fix lint

* re-ordering the versions
2020-04-22 09:44:03 -05:00
Joseph Ciurej
0419f2c6df Updated 'qt' to support '@5.12.7', '+debug', and '+opengl' with older OpenGL versions. (#16220) 2020-04-22 09:29:40 -05:00
Kelly (KT) Thompson
9c2819bdb3 libsm: added libuuid as dependency (#16226)
While building _visit_, I ran into an undefined symbol at link time. I tracked
the missing dependency to _libsm_ needing to know about _libuuid_ at link time.
2020-04-22 14:53:01 +02:00
darmac
be0aed9d8a libcgroup: added package at v0.41 (#16229) 2020-04-22 13:19:01 +02:00
Jeffrey Salmond
b065150354 metis: fix build when version > 5.0 (#16186) 2020-04-22 12:18:38 +02:00
Elizabeth Fischer
0b753b9a77 py-pyproj: added v2.6.0 (#16176)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-04-22 11:50:36 +02:00
Servesh
3e9af610e7 source-highlight: fix detection of boost (#16102)
Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-04-22 11:43:02 +02:00
darmac
ab35780fae buddy: added package at v2.4 (#16166) 2020-04-22 10:55:07 +02:00
darmac
4c9c6b2a68 linux-pam: added package at v1.3.1 (#16137)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-22 10:53:28 +02:00
darmac
1e243023d8 cmaq: added new package at v5.3.1 (#16224)
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-22 08:56:13 +02:00
jthies
ac228050ab Phist int64 variant (#16209)
* phist: add int64 variant and resulting conflicts and dependencies

* phist: use Trilinos TPLs as soon as they are in the spec, not just if +trilinos isexplicitly set
and remove a redundant depends-statement

* phist: use int as gotype for Trilinos dependency if ~int64

* phist: new version 1.9.0

* phist: remove trailing whitespace

* phist: updated checksum (version tag was moved)
2020-04-21 23:10:11 -05:00
darmac
1289d3589a Add new package: cmockery (#16225) 2020-04-21 23:01:49 -05:00
Axel Huebl
2f7e940872 Fix: Flex Reconfigure (#16194)
* Fix: Flex Reconfigure

Learn the `flex` package how to reconfigure itself when needed.
Fix #11551

Co-authored-by: Andrew W Elble <aweits@rit.edu>

* Autoreconf: only when actually desired

Co-authored-by: Andrew W Elble <aweits@rit.edu>
2020-04-21 22:36:02 -05:00
Andrew Gaspar
667fee0703 catch2 2.12.1 (#16211) 2020-04-21 16:52:50 -07:00
Axel Huebl
ca4c0b97ec Doc: Conflict Msg Pkg Guide (#16201)
Document the nice `msg=` argument in conflicts. Super useful
for less generic conflict guidance.
2020-04-21 16:22:30 -05:00
Joseph Ciurej
272c47207d Updated the 'opengl' package to include all older versions of the library. (#16219) 2020-04-21 16:20:45 -05:00
Adam J. Stewart
54ca52943d PyTorch: add 1.5.0 (#16212) 2020-04-21 16:20:11 -05:00
Michael Kuhn
f3aceddbfb py-tap-py: Add 3.0 and 2.6.2 (#16169) 2020-04-21 16:09:14 -05:00
Gregor Daiß
745804582b Add new package: sgpp (#15961)
* sgpp: Added recipe

* sgpp: Removed maintainer and updated patch

* sgpp: Added more conflicts

* sgpp: Added conflicts for older combigrid versions

* sgpp: Added one more maintainer

* sgpp: Add version 3.3.0 and sane defaults

* sgpp: Better description and c++11 conflicts

* sgpp: Updated maintainers

* sgpp: Fix flake8 errors

* sgpp: Fix dependencies and minor issues

- Added py-setuptools dependency
- Fixed zlib link dependency
- Added git url
- Using spec.satisfies where appropriate

* sgpp: Added testing to package

* sgpp: Remove simd variant and use spec instead

* sgpp: Remove java variant

* sgpp: Small bugfixes

* sgpp: Add datadriven patch and patch explanations
2020-04-21 16:03:46 -05:00
Andrew W Elble
f1050c4be2 compiler wrappers: don't override -isystem with -I (#16077)
If the Spack compiler wrapper encounters any "-isystem" option, then
when adding include directories for Spack dependencies, Spack will
use "-isystem" instead of "-I". This prevents Spack-generated "-I"
options from overriding the "-isystem" options generated by the build
system. To ensure that build-system "-isystem" directories are
searched first, Spack places all of its inserted "-isystem"
directories after.

The new ordering of -isystem includes is:

* -isystem from build system (not system directories)
* -isystem from Spack
* -isystem from build system (for directories like /usr/include)

The prior order of "-I" arguments is preserved (although as of this
commit Spack no longer generates -I if -isystem is detected):

* -I from build system (not system directories)
* -I from Spack (only if there are no "-isystem" options)
* -I from build system (for directories like /usr/include)
2020-04-21 13:56:50 -07:00
Glenn Johnson
74c159b883 New package: sumo (#16096)
* New package: sumo

This PR adds the sumo package, as well as the fox package as a
dependency. It also updates and adds some fixes for openscenegraph.

For fox, the patch is for the development version. That patch should not
be necessary in future versions as it has been applied upstream. The
stable version is 1.6.57 and is marked as preferred. This is the version
needed for sumo.

Added dependencies for openscenegraph as well as set constraints on qt
versions.

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

I had intended to set this version constraint but somehow did not.

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

* Add dependency types to sumo recipe

- googletest: 'test'
- swig: 'build'
- java: 'build', 'run'

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-21 13:27:34 -05:00
Adam J. Stewart
4f5bd044d6 py-torchvision: add new version (#16208) 2020-04-21 11:43:30 -05:00
Michael Kuhn
752342430b gettext: Fix typo (#16206) 2020-04-21 09:33:51 -07:00
Michael Kuhn
eb7c0e5d7d gettext: Fix typo (#16206) 2020-04-21 08:49:59 -07:00
Michael Kuhn
b9655636ce gettext: Fix typo (#16206) 2020-04-21 08:48:48 -07:00
Andrew Gaspar
a41b9365a9 catch2: added v2.12 (#16207) 2020-04-21 17:15:59 +02:00
Michael Kuhn
cd5d477db9 qgis: Fix pkgconfig dependency (#16188) 2020-04-21 08:02:45 -05:00
Axel Huebl
6c8e15ee18 gettext: add missing iconv dependency (#16193)
`gettext` will pick up a random `iconv` dependency if not
specified, which crashes python and its own builds on macOS.
2020-04-20 21:47:04 -07:00
Christoph Junghans
ca86e56572 votca-*: remove rc versions (#16197) 2020-04-20 20:30:43 -06:00
darmac
e4805bb75f Add new package: sse2neon (#16168) 2020-04-20 16:59:51 -05:00
Adam J. Stewart
45fee6edbd Python: add latest Python 2 releases (#16191) 2020-04-20 16:57:08 -05:00
G-Ragghianti
5e69125e51 Implemented +shared and +static_tools variants (#16105) 2020-04-20 16:54:44 -05:00
Toyohisa Kameyama
c6ef9c2b87 Add ppOpen-APPL/FDM and ppOpen-APPL/FDM-AT. (#16116) 2020-04-20 16:36:36 -05:00
Toyohisa Kameyama
8e7f55e6d6 ppOpen-APPL/DEM-util: New package (#16120) 2020-04-20 16:29:06 -05:00
darmac
c2ca832883 Add new package: audacious (#16121) 2020-04-20 16:24:33 -05:00
darmac
e8a7e4f5ec Add new package: bgpdump (#16122) 2020-04-20 16:23:47 -05:00
darmac
cf12541281 Add new package: byacc (#16123)
* Add new package: byacc

* refine byacc info
2020-04-20 16:22:37 -05:00
Amjad Kotobi
a70e76d043 Package Bonniepp adding sbin to PATH (#16124) 2020-04-20 16:19:55 -05:00
Michael Kuhn
8635c0d804 rocksdb: Add 6.7.3 (#16189)
This also adds a shared variant, so we can build both the static and
shared libraries at the same time. It also adds a pkg-config file.
2020-04-20 16:16:51 -05:00
Michael Kuhn
e3966d2791 pixman: Add 0.40.0 (#16190) 2020-04-20 16:16:39 -05:00
Amjad Kotobi
78f1940646 update package py-graphviz version (#16131) 2020-04-20 16:11:07 -05:00
Hadrien G
ac17d0783a Add Acts v0.22 (#16141) 2020-04-20 16:08:44 -05:00
darmac
eb0d82a7e4 Add new package: codec2 (#16142) 2020-04-20 16:07:44 -05:00
darmac
126491288a Add new package: libsamplerate (#16143) 2020-04-20 16:07:18 -05:00
darmac
cab1d06d6a Add new package: collectd (#16144) 2020-04-20 16:06:31 -05:00
darmac
ed13319a4b Add new Package: accumulo (#16148) 2020-04-20 15:59:16 -05:00
Justin S
73e0dd9f61 prism: new package at 4.5 (#16187) 2020-04-20 15:39:53 -05:00
Michael Kuhn
1f49fb8ceb python: Add 3.7.7 (#16170) 2020-04-20 15:32:58 -05:00
Elizabeth Fischer
742a4b7e2a proj (#16175)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-04-20 15:21:36 -05:00
Elizabeth Fischer
3a9ce3ac4a glib (#16179)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-04-20 15:15:38 -05:00
Adam J. Stewart
0db2f00635 PyTorch: remove CUDA conflicts (#16136) 2020-04-20 14:57:56 -05:00
Todd Gamblin
de13ea2284 autotools: remove FORCE_UNSAFE_CONFIGURE from docs, commands, code (#16145)
Since #16132, we've consolidated the setting of FORCE_UNSAFE_CONFIGURE to
`autotools.py`, so we don't need to use it in packages like `coreutils`,
in our commands, or in our container recipes.

- [x] Remove FORCE_UNSAFE_CONFIGURE from packages
- [x] Remove FORCE_UNSAFE_CONFIGURE from container recipes
- [x] Remove FORCE_UNSAFE_CONFIGURE from `spack ci` command
2020-04-20 08:32:03 -07:00
darmac
e9e2d1d3ca Httpd: added package at v2.4.43 (#16152) 2020-04-20 09:32:39 +02:00
Glenn Johnson
dff5a4ba57 ngmerge: added package at v0.3 (#16160) 2020-04-20 09:26:22 +02:00
George Hartzell
c62f18304d Typo: vew -> view (#16155) 2020-04-19 20:13:44 -05:00
Adam J. Stewart
9a522505e4 Cython: add new version (#16159) 2020-04-19 19:30:21 -05:00
Adam J. Stewart
f9733058a4 NumPy: add new version (#16158) 2020-04-19 17:28:18 -05:00
Toyohisa Kameyama
f1d48a2a8e FrontFlow/Red: New Package. (#15965)
* FrontFlow/Red: New Package.

* fix comment.
use libs.ld_flags.

* typo fix.

* typo fix.
2020-04-18 22:58:43 -05:00
Veselin Dobrev
d9992a778f CEED v3.0 release (#15500)
* [mfem] A few updates: add 'strumpack' variant; add 'zlib'
       variant (same as 'gzstream'); fix optmization flag
       for v4.0.

* [mfem] flake8 fix

* [mfem] Add version 4.1

* [mfem] Add/tweak some 'conflicts' directives.

* [gslib] Add new release versions + 'develop' version.

* [petsc] Restrict hdf5 version to <= 1.10.99 since 1.12.0 fails

* [metis] Use the original metis url for v4.0.3.

* [conduit] Remove restrictions to the used hdf5 variant to allow
          building with other packages that use hdf5, e.g. petsc.

* [mfem] Few updates:
* Replace the 'gzstream' variant with 'zlib' variant.
* Do not add system library paths with -L flags.
* Allow '+pumi+shared' variant.
* Update the 'test_builds.sh' script.

* [occa] Add version 1.0.9.

* [mfem] Some OCCA and RAJA updates.

* [gslib] Fix the build for new versions of the library.

* [mfem] Add 'gslib' variant for GSLIB.

* [mfem] Add 'cuda' variant.

* [mfem] Add 'libceed' variant + a few more tweaks.

* [mfem] Add 'umpire' variant.

* [ceed] Add a draft for v3.0. Not tested. Just made sure that
       concretization works for 'ceed' and 'ceed+cuda'.

* [nek] Fix Nek5000/NekCEM

* [nek] Add Nek5000-v19 & polishing Nek packages

* [flake8] Fix flake8 failure

* petsc: use of HDF5 does not care about +hl+fortran

* [petsc] Temporarily allow any hypre version with petsc@develop.

[ceed] Remove the requirement for hypre@develop.

* [libceed] Do not explicitly set NVCCFLAGS for v0.5 and later.

* [laghos] Add version 3.0, pointing to dev branch for now.
         Do not set CXX at the make command line.
         Simplify the dependecy directives a little.

[ceed] Use laghos v3.0 for ceed v3.0.0.

* [laghos] Keep the injection of CXX in the makefile for laghos
         versions <= 2.0.

* [nekcem] Recovert hash-versions used by older versions of the
         'ceed' package.

* [occa] Disable hip autodetection because it fails on some machines.

* [laghos] Update v3.0 with the actual release source.

* [suite-sparse] Explicitly add the c11 flag to CFLAGS.

* Update package.py (#15749)

* [magma] Add forgotten specification of the 'cuda_arch' variant.

* [ceed] Use magma v2.5.3 for ceed v3.0.

* libceed-0.6

* mfem: depend on libceed 0.6:, not 0.6.0:

* [libceed] Add 'magma' variant -- enable MAGMA backend.

* [ceed] In v3.0, use '+magma' variant of libceed when cuda is enabled.

* Initial package for Remhos (needs to be updated with actual sha256

* Adding Remhos to CEED-3.0, for now @develop

* petsc: add 3.13.0 (using petsc-lite) and 3.12.5

* ceed: update to petsc@3.13.0:3.13.99

* Temporary fix

* [nekcem] Add hash-version for ceed v3.0.

* [nek5000] Simplify source urls.

* [nektools] Use the same sources and versions as in nek5000.

* [ceed] Update Nek-related package versions.

* libceed: add v0.6 portabilty fix

* libceed: better v0.6 portabilty fix

* Adding Remhos 1.0 release in CEED-3.0

* Updating hash for Remhos-1.0

* [petsc] Add cuda variant.

* [libceed] Flake8 fix.

* [petsc] Add cuda variant.

* [ceed] Fix the OCCA version to 1.0.9. Enable petsc+cuda when
       compiling ceed@3.0.0+cuda.

* nek5000: fix python 2.7+ syntax

* [laghos] Fix testing.

* [remhos] Fix testing.

* [remhos] For testing use the 'tests' target instead of 'test'.

* Add/update the maintainers for ceed, libceed, mfem, laghos, and remhos.

* [ceed] Remove unnecessary dependencies.

* libceed: activate AVX when supported

Co-authored-by: Thilina Rathnayake <thilinarmtb@gmail.com>
Co-authored-by: Jed Brown <jed@jedbrown.org>
Co-authored-by: Stan Tomov <tomov@eecs.utk.edu>
Co-authored-by: Tzanio <tzanio@llnl.gov>
2020-04-18 16:57:57 -07:00
Diego Magdaleno
d640bf899a autotools: set FORCE_UNSAFE_CONFIGURE to 1 in autotools.py (#16132)
This commit sets the `FORCE_UNSAFE_CONFIGURE` environment variable to 1 in autotools builds.

We see a lot of builds popping up and complaining about `FORCE_UNSAFE_CONFIGURE`.  This behavior is not actually part of `autoconf` per se.  It comes from this patch to `mknod.m4`, which is used by a lot of autoconf builds:

    * https://lists.gnu.org/archive/html/bug-gnulib/2010-07/msg00282.html

Which originated from this problem that someone had on AIX:

    * https://lists.gnu.org/archive/html/bug-gnulib/2010-07/msg00279.html

The gist of the problem seems to be that they want to check whether `mknod` can do something as root, but instead of checking whether they're running as root and using `su` or something to test this, they just made it harder to run `configure` as root.

This seems very ad hoc and this is one of many checks that are run as root in `configure`.  Many of them run before this check, so it's not clear that the `FORCE_UNSAFE_CONFIGURE` thing is even preventing bad things from happening.

So:
1. This only happens in `autotools` builds, so we should go ahead and put it into `autotools.py` instead of in the global build environment, and

2. The variable does too little and provides a false sense of security in the first place, so we'll just disable it and avoid the nuisance.  If we really feel strongly about this we can put some warnings in Spack about running as root, but at the top level, not in the middle of an already running script like `configure`.
2020-04-18 14:25:19 -07:00
Christoph Junghans
5d008dc37b votca-*: add v1.6 (#16139) 2020-04-18 08:16:48 -07:00
Todd Gamblin
eaccc58156 remove files accidentally committed with 0.14.0 (#16138) 2020-04-17 22:28:33 -07:00
Daryl W. Grunau
6cb11d489b DDD bugfix (#16095)
* DDD: apply extended-prompt patch

* DDD: apply extended-prompt patch

* use the upstream patch

Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2020-04-17 21:34:49 -05:00
Levi Baber
73d78ae176 py-cutadapt: add version 2.9 (#16135) 2020-04-17 18:35:33 -07:00
Adam J. Stewart
def1d5e637 MPFR: fix patch checksum, add dependencies (#15783)
* MPFR: fix patch checksum, add dependencies

* Update checksum again
2020-04-17 16:30:45 -05:00
Adam J. Stewart
ea8793f8f5 AutotoolsPackage: add aclocal for all build deps (#15784) 2020-04-17 16:30:21 -05:00
Adam J. Stewart
28995b25bc OpenMPI: add +cxx variant (#15477)
* OpenMPI: add +cxx variant

* C++ support will be removed in 5.0.X release
2020-04-17 16:29:50 -05:00
Adam J. Stewart
284e450c91 Language-specific PIC flags (#15474)
* Language-specific PIC flags

* Add tests for every compiler flag

* Fix bad rebase

* pic_flag -> cxx_pic_flag
2020-04-17 16:28:51 -05:00
Jordan Ogas
ad8977467b charliecloud: fix url (#16133) 2020-04-17 13:51:18 -07:00
Nichols A. Romero
ebd86bd1eb LLVM libomptarget fixes (#16104)
* Throw an error at spack install invocation instead of most of the way through the build process when cuda_arch is unspecified.

* Clean-up of CMake booleans. No actual change.

* Use CMake variables for hwloc and libelf installation directories and avoid injecting extra flags into CMAKE_CXX_FLAGS

* Conflict should only exist for +cuda variant.
2020-04-17 15:18:27 -05:00
Todd Gamblin
ac54b7d5c1 coreutils: add variant for g prefix
- [x] Add a `gprefix` variant to coreutils, so that the 'g' prefix on
  binaries is optional.
- [x] Make un-prefixed binaries the default again
2020-04-17 11:21:50 -07:00
Adam J. Stewart
85e089e3fa NCCL: add new version (#16130) 2020-04-17 13:14:36 -05:00
Adam J. Stewart
435470a93b oneDNN: add new version (#16129) 2020-04-17 13:14:22 -05:00
Andrew W Elble
985af94c45 singularity: new variants to enable non-suid and non-network builds (#16088)
Defaults are left as they are currently
2020-04-17 17:38:22 +02:00
ilbiondo
854a82bbec New package: Biopandas python package (#16066)
* Biopandas python package

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

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

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

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

* remove scipy dependency

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-17 09:50:33 -05:00
Stan Tomov
950180ab03 magma: added v2.5.3 (#16097)
Also updated maintainer list
2020-04-17 11:33:24 +02:00
Michael Kuhn
791e354b2a py-gcovr: added new package at v4.2 (#16100) 2020-04-17 11:32:19 +02:00
darmac
4c81efcf0b open-iscsi: added new package at v2.1.1 (#16113) 2020-04-17 11:11:19 +02:00
darmac
330454acb0 aespipe: added new package at v2.4f (#16114) 2020-04-17 11:05:48 +02:00
Kai Germaschewski
a8eef2f812 sz: run "make clean" after configure (#15759)
At least the v2.0.2.0 tar ball contains compiled object files etc, which
cause the build to fail on other architectures (ppc64le in particular), so
this patch adds a `make clean` after configuring first.
2020-04-17 10:59:42 +02:00
darmac
dd3378bda4 asdcplib: added new package at v2.10.35 (#16118) 2020-04-17 10:42:14 +02:00
Harmen Stoppels
81a154de4a libtree: added v1.1.2 (#16119) 2020-04-17 10:30:05 +02:00
Axel Huebl
abbc47823d SourceForge: Mirror Mixin (#16112)
* SourceForge: Mirror Mixin

Add a mixing class for direct `CNAME`s to sourceforge mirrors.
Since the main gateway servers are often down, this could reduce
timeouts and fetch errors for sourceforge.net hosted software.

* SourceForge: unspectacular mirror replacement

add mirrors to all sourceforge packages with trivial
download logic.

tested fetch of latest version of each of these packages
with various mirrors before committing.

* SourceForge: xz

the author homepage is chronocially overrun and this is the offical
upload with many mirrors.
2020-04-16 21:35:30 -07:00
Todd Gamblin
e476a9061b bugfix: fix emacs support on macOS (#16110)
- fix missing self.spec
2020-04-16 17:40:37 -07:00
Axel Huebl
4d25632e59 macOS: Fix emacs Linking (#16106)
* macOS: Fix emacs Linking

Fix linking issue of emacs on macOS (clang and gcc).

Applies the same work-around as conda-forge:
  b051f6c928/recipe/build.sh

Homebrew avoids this by linking against the system ncurses lib:
  https://github.com/Homebrew/homebrew-core/blob/master/Formula/emacs.rb

* ncurses: fix outdated variant comment

this comment was build on the assumption that gnutls
triggers a termlib dependency in emacs. that's not the
case, ncurses itself depends on termlib when build with
this feature.
2020-04-16 17:30:24 -07:00
Axel Huebl
ddb6e99a28 libpng: github download
libpng still has its sourceforge page but is actively been
developed on github.

since the sourceforge urls are too often down (as seen in
my nightly CI/CD tests), just switch the download source to
GitHub instead.
2020-04-16 17:27:50 -07:00
Todd Gamblin
f6d26db939 macos: use DYLD_FALLBACK_LIBRARY_PATH instead of DYLD_LIBRARY_PATH
`DYLD_LIBRARY_PATH` can frequently break builtin macOS software when
pointed at Spack libraries.  This is because it takes *higher* precedence
than the default library search paths, which are used by system software.

`DYLD_FALLBACK_LIBRARY_PATH`, on the other hand, takes lower precedence.
At first glance, this might seem bad, because the software installed by
Spack in an environment needs to find *its* libraries, and it should not
use the defaults.  However, Spack's isntallations are always `RPATH`'d,
so they do not have this problem.

`DYLD_FALLBACK_LIBRARY_PATH` is thus useful for things built in an
environment that need to use Spack's libraries, that don't set *their*
RPATHs correctly for whatever reason. We now prefer it to
`DYLD_LIBRARY_PATH` in modules and in environments because it helps a
little bit, and it is much less intrusive.
2020-04-16 17:23:33 -07:00
Geoffrey Malcolm Oxberry
1f5ef5c876 darwin: cut DYLD_LIBRARY_PATH from default modules
This commit removes the DYLD_LIBRARY_PATH variable from the default
modules.yaml for darwin. The rationale behind deleting this
environment variable is that paths in this environment variable take
precedence over the default locations of libraries (usually the
install path of the library), which can lead to linking errors in some
circumstances. For example, executables intended to link with Apple's
system BLAS and LAPACK will instead link to a spack-installed
implementation (e.g., OpenBLAS), causing runtime errors.

These errors are resolved by instead relying on paths set in
DYLD_FALLBACK_LIBRARY_PATH, which is lower in precedence than default
locations of libraries.
2020-04-16 16:17:35 -07:00
Axel Huebl
bacbaeb563 ncurses: forward termlib libs (#16101)
These libs need to be forwarded, as in ncurses `pkg-config` file.
2020-04-16 17:27:30 -05:00
Axel Huebl
bb2849002b emacs: libxml2 deps (#16103)
emacs depends on libxml2.
2020-04-16 17:27:09 -05:00
Marc Allen
a704922c29 Bugfix: For spack buildcache check, Handle specs where only the hash is (#15663)
provided (#15662).

Prior to this fix, the checked Spec object would not be populated, and
concretization would fail.

Co-authored-by: Marc Allen <mrcall@amazon.com>
2020-04-16 14:06:13 -07:00
Glenn Johnson
07a4ac67b8 Add ncurses+termlib dependency to mesa (#16038)
Mesa links against libtinfo so needs to depend on ncurses. It also needs
a little help finding the library directory so an LDFLAGS configure
option is added.
2020-04-16 13:25:28 -05:00
Amjad Kotobi
2e4e34e6cc New version xrootd-4.11.3 (#16092) 2020-04-16 12:53:20 -05:00
Carlos Arango Gutierrez
5d7f4db9ad singularity: updated maintainer list (#16093) 2020-04-16 18:43:38 +02:00
athanasio
f912cce7ee openbabel: fix compilation errors (#16090)
- Disable maeparser as it is broken with CMake
- Added missing dependencies
2020-04-16 10:49:43 -05:00
Amjad Kotobi
e1777c5708 New package bonniepp added (#16091) 2020-04-16 10:49:30 -05:00
Harmen Stoppels
7dcc8a5463 Add new version 1.1.1 (#16087) 2020-04-16 09:50:48 -05:00
Antonio Arena
fd3cdffb40 New matlab versions (#16086) 2020-04-16 09:50:14 -05:00
Axel Huebl
125fc2e611 MPark.Variant: GCC 7.3.1 Conflict (#16081)
* MPark.Variant: GCC 7.3.1 Conflict

Due to an ICE in this specific patch-release of GCC, compile
errors in downstream packages should be avoided with a clean
conflict.

* Fix superfluous spaces

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

* Fix typo

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-16 09:48:19 -05:00
Tiziano Müller
7c5fc6acea dbcsr: expose all options, check openblas feats (#16034)
* dbcsr: expose all options, check openblas feats

* dbcsr: use Ninja to build, ensure serialized tests

* dbcsr: add myself as maintainer
2020-04-16 09:47:31 -05:00
asmaahassan90
7ac6f7fed9 Add Cubist (#16069)
* Add Cubist

* enhance recipe

* Not using OS module anymore

* remove white space

* Fix build shell

* make Flake8 happy

* use bash shell for build

* Convert it To MakefilePackage as per peer-review
2020-04-16 08:24:35 -05:00
ilbiondo
b0ec2788ab HAL: added new package at v2.1 (#16085)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-04-16 12:19:20 +02:00
darmac
04c6a781b6 Add new package: zookeeper-benchmark (#16067)
* Add new package: zookeeper-benchmark

* refine zookeeper version

* refine zookeeper version variant

* remove unused variant
2020-04-15 23:33:45 -05:00
darmac
f66bd41d9a Neo4j (#16068)
* Update var/spack/repos/builtin/packages/neo4j/package.py

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

* Add new package: neo4j

* refine neo4j package

* fix flake8 warning

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-15 20:45:46 -05:00
Harsh Bhatia
29e2475a68 update: memsurfer with python3 (#15636)
* update: memsurfer with python3

* flake8 compliance

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

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

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

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

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

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

* removed build_type preferences at adamjstewart's suggestion

* Added build/run dependency on python3.7

as suggested by adam stewart

* more flake8 horror!

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-15 20:11:48 -05:00
Rao Garimella
05afce85fa Upgrade MSTK versions (#16079) 2020-04-15 18:13:47 -05:00
Carson Woods
a28c127043 netcdf-cxx4: bugfix (#16080)
* Add new variants

* Fix missing config_args variable
2020-04-15 18:05:42 -05:00
Todd Gamblin
bd3f24afe1 Merge branch 'releases/v0.14' into develop 2020-04-15 15:27:00 -07:00
Michael Kuhn
277350ceed Make tags case insensitive
Currently, tags are case sensitive, which is unintuitive:
```console
$ spack list -t hpc
==> 2 packages.
nek5000  nektools
$ spack list -t HPC
==> 1 packages.
mfem
$ spack list -t Hpc
==> 0 packages.
```

This change makes them case insensitive:
```console
$ spack list -t hpc
==> 3 packages.
mfem  nek5000  nektools
$ spack list -t HPC
==> 3 packages.
mfem  nek5000  nektools
$ spack list -t Hpc
==> 3 packages.
mfem  nek5000  nektools
```
2020-04-15 14:56:25 -07:00
Axel Huebl
d9630b572a x.org packages: mirror mixin
overhaul all x.org packages to use available mirrors.
2020-04-15 14:44:13 -07:00
wspear
999c8e3a67 Added maintainers (#16078)
Co-authored-by: Wyatt Spear <wspear@cs.uoregon.edu>
2020-04-15 16:07:57 -05:00
ilbiondo
e41ac9af8a Sonlib (#16060)
* sonLib package as required by the HAL toolkit

* cleanup

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-15 16:04:06 -05:00
Kelly (KT) Thompson
fef4e80a6d New package: py-cmake-format (#16055)
* New package py-cmake-format

* wrap long lines

* Fix package description formatting.
2020-04-15 16:01:50 -05:00
Harmen Stoppels
f072d24c98 Bump version of libtree (#16051) 2020-04-15 15:57:21 -05:00
Axel Huebl
e1e804168a Tests: Mirror Mixin Classes 2020-04-15 11:44:14 -07:00
Axel Huebl
7e5257e44a x.org: mirror mixin
According to my nightly CI/CD tests, x.org is another large provider
of software in common build chains that is often down.

Added a hand-selected amount of mirrors that is well up-to-sync.
Tested with `util-macros` that has a quite "recent" patch release.

Other packages to follow in an individual PR.
2020-04-15 11:44:14 -07:00
Todd Gamblin
a563884af3 spack install terminal output handling in foreground/background (#15723)
Makes the following changes:

* (Fixes #15620) tty configuration was failing when stdout was 
  redirected. The implementation now creates a pseudo terminal for
  stdin and checks stdout properly, so redirections of stdin/out/err
  should be handled now.
* Handles terminal configuration when the Spack process moves between
  the foreground and background (possibly multiple times) during a
  build.
* Spack adjusts terminal settings to allow users to to enable/disable
  build process output to the terminal using a "v" toggle, abnormal
  exit cases (like CTRL-C) could leave the terminal in an unusable
  state. This is addressed here with a special-case handler which
  restores terminal settings.

Significantly extend testing of process output logger:

* New PseudoShell object for setting up a master and child process
  and configuring file descriptor inheritance between the two
* Tests for "v" verbosity toggle making use of the added PseudoShell
  object
* Added `uniq` function which takes a list of elements and replaces
  any consecutive sequence of duplicate elements with a single
  instance (e.g. "112211" -> "121")

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-15 11:05:41 -07:00
Federico Ficarelli
94aa368af8 Fix grcp@1.27.0: (#16052)
Current default version was missing a dependency.
2020-04-15 11:32:08 -05:00
darmac
6eee7b6bb8 Add new package: mrbench (#16062) 2020-04-15 11:25:49 -05:00
darmac
c470a8da6a Add new package: kinesis (#16063) 2020-04-15 11:25:21 -05:00
Robert Pavel
8935406756 Added Laghos v3 to Proxy Apps v3 (#16070)
Also fixed upper bound for v2 apps
2020-04-15 11:13:07 -05:00
Michael Kuhn
a157b479c8 julea: New package (#16071) 2020-04-15 11:12:28 -05:00
ilbiondo
4afdaa5f4b IQ-TREE: added new package at v1.6.12 (#16064) 2020-04-15 16:37:25 +02:00
ilbiondo
666bc844be Phylobayes MPI: added new package at v1.8b (#16065) 2020-04-15 13:26:37 +02:00
Massimiliano Culpo
ff0ec9cf61 openfoam: set run environment by sourcing bashrc (#15949) 2020-04-15 12:21:02 +02:00
ilbiondo
d41e366d0d py-sonlib: added new package (#16058)
Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-04-15 10:35:01 +02:00
Dan Lipsa
fd2e6ee50f Apply same patch to version 10. (#15963) 2020-04-14 22:30:45 -05:00
Adam J. Stewart
69f7bae8fe libssh2: fix linking on macOS (#16012)
* libssh2: fix linking on macOS

* Fix libgit2 linkage to libssh2
2020-04-14 17:10:45 -05:00
Tyler Reddy
cba5f71eee MAINT: Charliecloud OSX error (#16049)
* MAINT: Charliecloud OSX error

* raise an appropriate error when attempting to build
Charliecloud on Mac OSX, since it will otherwise fail
with a more confusing configure stage link check failure

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

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

* MAINT: PR 16049 revision

* remove an unused import

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-14 15:55:10 -06:00
Sajid Ali
9a18f8b1d7 fix typo (#16043) 2020-04-14 16:44:09 -05:00
Andrew W Elble
a031bc3166 new package: py-torch-nvidia-apex (#16050) 2020-04-14 16:43:30 -05:00
Carson Woods
993491c83c Add new variants (#16047) 2020-04-14 16:01:57 -05:00
Adam J. Stewart
293e4e80f1 py-memory-profiler: add new version (#16048) 2020-04-14 14:54:28 -05:00
Tiziano Müller
f917f7149e cp2k: add version 7.1 (#16037)
* cp2k: add version 7.1

* cp2k: add option to use COSMA for CP2K 8+
2020-04-14 13:33:49 -05:00
Carson Woods
8edd352c22 tau: remove deprecated variants (#16041)
* Add more tau variants

* Add more tau variants

* Remove deprecated packages

* Fix flake8 issue
2020-04-14 13:33:33 -05:00
Massimiliano Culpo
a11de1d29d Package extensions: fixed a link in docs (#16040)
* Moved link to the right place in the docs

* Fixed a few minor issues in extensions docs

Fixed a typo, added a subsubsection for better
navigation, reworded "modules in Python" as
"Python packages"
2020-04-14 12:54:53 -05:00
Andrew Gaspar
98cdd8777a Add support for pre-release builds of Rust (beta, master, nightly) (#16042) 2020-04-14 12:53:42 -05:00
Adam J. Stewart
94272cc7aa py-tokenizers: add 0.5.2 (#16039) 2020-04-14 12:41:33 -05:00
Harmen Stoppels
f393355781 libtree: new package at 1.0.3 (#16036)
* Add new package libtree

* Fix linter issues
2020-04-14 11:39:52 -05:00
Tom Payerle
e10c134745 pfft: fix to handle 'precision' variant in fftw (#16029)
* pfft: fix to handle 'precision' variant in fftw

pfft had been checking for +double, etc. in fftw spec, which no longer
are present (replaced by Multivalued variant precision).

* pfft: fix to handle 'precision' variant in fftw

pfft had been checking for +double, etc. in fftw spec, which no
longer are present (replaced by Multivalued variant precision).

(amended to use more idiomatic checks as suggested by @alalazo)
2020-04-14 11:14:20 -05:00
Justin S
71fb29fccf muscle: add 3.8.31 (#15974)
* muscle: add 3.8.31

* muscle: use build_directory property

* muscle: add url_for_version, fix version comparison
2020-04-14 11:13:16 -05:00
Axel Huebl
5acea35e82 sourceware.org: mirror urls (#15992)
sourceware.org is often quite overrun and times out or results in
certificate errors.

Since libffi, bzip2, elfutils, etc. are quite fundamental in
build chains, lets add some official mirrors.

libffi, bzip2, elfutils, lvm2, valgrind: add mirrors
2020-04-14 11:09:30 -05:00
Jordan Ogas
25e2548489 add charliecloud 0.15 (#16023) 2020-04-14 11:02:22 -05:00
Justin S
b131cc5ce0 py-vcf-kit: new package at 0.1.6 (#15976) 2020-04-14 15:51:52 +02:00
Antonio Arena
c6e257ae39 VMD: added new package at v1.9.3 (#16022) 2020-04-14 15:21:33 +02:00
darmac
5feed6bf6f httpress: added new package at v1.1.0 (#15935) 2020-04-14 12:25:30 +02:00
Adam J. Stewart
723fd5a101 Rust: add missing dependencies (#16015)
* Rust: add missing dependencies

* 1.43.X won't support Python 3 either
2020-04-13 17:02:37 -05:00
Andrew W Elble
92edc68922 bazel: increase logging during build, set job limit (#16024)
To better help in troubleshooting build issues. Job limit might also
help with the memory limit issues we've been seeing.
2020-04-13 16:35:39 -05:00
Antonio Arena
0a6d9f4c55 Patch Mathematica (#16019)
* Patch Mathematica

Mathematica installer moves all files and directories from installation directory to a backup one. The problem is that it also moves .spack to this backup location. Once it's done it does not move .spack back where it was.

My patch creates a copy of .spack to /tmp then moves it back right before exiting the install call.

* Make lint happy

* Use Spack native copy()

As suggested in peer-review let's:
- Copy .spack to stage directory so I don't have to use random
- Use Spack native copy() to do these operations

* Use join_path to create paths

As per peer-review suggestion:
- Use join_path to create paths
- Use copy_tree since we're copying a directory that could have sub-directories
2020-04-13 13:22:29 -05:00
Kai Torben Ohlhus
0c28a271ae suite-sparse: add version 5.7.2 (#16020)
Release notes: https://github.com/DrTimothyAldenDavis/SuiteSparse/releases/tag/v5.7.2
2020-04-13 11:03:30 -05:00
Jennifer Herting
0d364e71ec New version: py-notebook@6.0.3 (#15975)
* Update package.py to include py-notebook 6.0.3 and sha

* Update package.py

* [py-notebook] updated py-tornado version requirements

* [py-notebook] reworked and reordered for readability

* [py-notebook] updated version requirement for py-jupyter-client

* [py-notebook] updated version requirements for py-jupyter-core

Co-authored-by: ehdeec <ehdeec@rit.edu>
2020-04-13 10:59:54 -05:00
Adam J. Stewart
b0a39bd905 py-sacremoses: add new version (#16018) 2020-04-12 23:03:19 -05:00
Dr. Christian Tacke
ab0101ec69 boost: Fix for Version Comparison on Newer Clang on Darwin (#16014)
Applying to boost @1.56.0:1.72.0 as that's the version
range, where this patch can be cleanly applied. I was not
able to test this myself, but got positive feedback.

See: https://github.com/boostorg/build/issues/440
See: https://github.com/macports/macports-ports/pull/6726
2020-04-12 22:26:57 -05:00
Glenn Johnson
9a0dd631d5 new package: BART (#16016)
* new package: BART

This PR adds the BART (Berkeley Advanced Reconstruction Toolset)
package.

Despite the presence of CMake files, this package builds with a
Makefile. It looks like the project is moving away from cmake. The patch
for MKL has been committed upstream so should only be necessary for this
version of BART.  The Makefile patch is meant for working with Spack and
would not be useful upstream. The bart scripts are still setup to use
bart with the subcommands being individual binaries. This patches those
to use the single binary with built-in subcommands and assumes that
spack is providing the TOOLBOX environment variable and setting PATH.

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

Yes, '==' make more sense for a single string.

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

* The python dependencies are run time only.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-12 19:41:37 -05:00
Jose E. Roman
a1fc761f18 New patch release SLEPc 3.13.1 (#16013)
* New patch release SLEPc 3.13.1

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-12 16:35:40 -05:00
Massimiliano Culpo
7e46da73dd database: maintain in-memory consistency on remove (#15777)
The performance improvements done in #14693 where leaving the DB in an inconsistent state when specs were removed from it. This PR updates the DB internal state whenever the DB is written to a file.

Note that we still cannot properly enumerate installed dependents, so there is a TODO in this code. Fixing that will require the dependents dictionaries in specs to be re-keyed (either by hash, or not keyed at all -- a list would do).  See #11983 for details.
2020-04-12 13:14:59 -07:00
Glenn Johnson
9209af950a new package: py-youtube-dl + fixes for dependencies (#15978)
* new package: py-youtube-dl + fixes for dependencies

This PR adds the py-youtube-dl program. In addition, there are a couple
of dependency packages that needed to be updated.

* ffmpeg
This is needed by py-youtube-dl. However, the spack ffmpeg recipe does
not include a lot of options, specifically, a dependency on openssl for
working with the https protocol.

- Added updated version.
- Added variants for the different licensing options.
- Added "meta" variants for X and drawtext. These turn on/off several
  options.
- Set variants and dependencies for many options. The defaults are based
  on the configuration settings in ffmpeg.
- Set dependencies that were missing or that will likely get pulled in
  from the system.

* libxml2
The ffmpeg+libxml2 variant initially failed to build. The issue is that
libxml2 sets the headers property to

include_dir = self.spec.prefix.include.libxml2

The ffmpeg configure looks for prefix.include and fills in the rest.
This could probably be patched in ffmpeg but the headers property in the
libxml2 recipe is not consistent with the environment module or the
pkgconfig file, both of which set the headers path to prefix.include.
This PR sets the libxml2 headers property to

include_dir = self.spec.prefix.include

A spot check of a few libxml2 dependents did not rreveal any problems
with this change.

* Comment out libxml2 dependency in ffmpeg

The header property issue of the spack libxml2 package will need to be
resolved in another PR before libxml2 can be enabled in ffmpeg.
2020-04-12 13:50:49 -05:00
Adam J. Stewart
f14f97ea78 py-transformers: add new package (#16011) 2020-04-12 11:41:20 -05:00
Adam J. Stewart
17450e18e0 py-tokenizers: add new package (#16010) 2020-04-12 10:22:55 -05:00
Adam J. Stewart
e4aa10d0c9 py-sacremoses: add new package (#16009) 2020-04-12 09:17:03 -05:00
Adam J. Stewart
e1b308af58 py-setuptools-rust: add new package (#16008) 2020-04-12 09:16:49 -05:00
Carson Woods
97dcf7b8ee tau: added new variants (#16005)
* Add more tau variants

* Add more tau variants
2020-04-11 19:44:26 -05:00
Andrew W Elble
a5f7cc887a new package: openmm (#16002)
* new package: openmm

* dependency adjustments

* 1. modify dependencies
2. openmm dynamically compiles cuda kernels during runtime,
   attempt to set up an environment that will work.

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-11 16:29:56 -05:00
Jennifer Herting
91e22b8ae5 [py-jupyter-core] added version 4.6.3 (#15991)
* [py-jupyter-core] added version 4.6.3

* [py-jupyter-core] updated python version requirement
2020-04-10 15:59:00 -05:00
Christoph Junghans
78a9f73874 votca-tools: add mkl support (#15997)
* votca-tools: add mkl support

* Update package.py
2020-04-10 14:36:28 -05:00
Christoph Junghans
8e597e8a7a votca-*: add v1.6_rc2 (#15999)
* votca-*: add v1.6_rc2

* votca-*: develop -> master
2020-04-10 14:36:09 -05:00
Paul
7b7458a0f4 Add Go versions 1.14.2 and 1.13.10 (#16000) 2020-04-10 14:35:51 -05:00
Christoph Junghans
c4360a918b gromacs: install header files (#15996) 2020-04-10 13:36:26 -05:00
Tom Payerle
a29956d71e gdal: Patch to support hdf linked against libtirpc (#15995)
If hdf was built with +libtirpc, we need to add -ltirpc to our link
flags.
2020-04-10 13:36:08 -05:00
Tom Payerle
343a499aa8 hdf: Add option to link against libtirpc package (#15993)
This adds a boolean 'libtirpc' variant to the hdf package.
Default is false, which will reproduce previous behavior (which
was to rely either on system xdr headers/library, or have hdf use
it's builtin xdr lib/headers (which are only for 32 bit))

If true, a dependency is added on 'libtirpc', and the LIBS and
CPPFLAGS are updated in the configure command to find the libtirpc
library and xdr.h header.

This is needed as RHEL8 (and presumably other distros have or will be)
removed xdr.h from glib-headers package,which was breaking the previous
behavior of using system xdr headers.
2020-04-10 13:23:05 -05:00
Andrew W Elble
c01a968ada new package: py-torchsummary (#15990)
* new package: py-torchsummary

* add numpy
2020-04-10 13:13:51 -05:00
Andrew W Elble
42b63e6b7e new package: py-torchaudio (#15989) 2020-04-10 10:53:12 -05:00
Andrew W Elble
aeb628ea74 opencv: assorted fixes (#15971)
* opencv: assorted fixes

1. depends on blas when +lapack
2. set cuda nvcc flags for cuda_arch
3. let cuda/contrib builds work
4. depends on hdf5 when cuda/contrib
5. depends on ant when +java
6. allow protobuf version to be different
7. let opencv recompile it's protoc files.

* ant is a build-time dependency

* register +cuda~contrib as impossible.
2020-04-10 09:49:32 -05:00
Tomoki, Karatsu
08a491b062 fujitsu compiler: Delete custom environment function. (#15988) 2020-04-10 09:38:02 -05:00
Andrew W Elble
3b3bd6e173 New package: tensorboardX (#15955)
* New package: tensorboardX

* prune back to just what's in setup.py for now
2020-04-10 09:37:18 -05:00
iarspider
77e144d6e5 Add new version of py-hypothesis (#15942)
* Add new version of py-hypothesis

* Update package.py

* Update package.py
2020-04-10 09:36:16 -05:00
Jacob Merson
d0fbe1add2 Update yaml-cpp package to enable for build of old api (#15983)
The old api is found in version 0.3.0 which uses a different release
name, so the url function was updated to properly find the older
releases. Also, this removes the boost constraint on the 0.3.0 version
which does not need it.
2020-04-10 09:35:36 -05:00
tilne
0d96e8a27d update URL and sha256 for aws-parallelcluster 2.6.1 (#15980)
Signed-off-by: Tim Lane <tilne@amazon.com>
2020-04-09 22:00:03 -05:00
Justin S
2d220c8eb0 py-clint: new package at 0.5.1 (#15905)
* py-clint: new package at 0.5.1

* py-clint: update py-setuptools dep type
2020-04-09 17:12:17 -05:00
Michael Kuhn
35c4f614c4 meson: Add 0.54.0 (#15952)
* meson: Add 0.54.0

This change also improves the rpath patch we are using. Instead of never
removing the rpath, we now only keep it if running within Spack to
guarantee consistent behavior of Meson.

* meson: Make ninja a hard dependency
2020-04-09 17:11:52 -05:00
Jennifer Herting
e0e092050c [py-pygdal] added version 3.0.4.6 (#15973) 2020-04-09 16:58:50 -05:00
noguchi-k
834a520af4 aperture-photometry: add new version (#15967) 2020-04-09 12:04:27 -05:00
Ryan Pepper
f683d714f8 Update doxygen package (#15969)
* Update doxygen package

* Add new version releases 1.8.16 and 1.8.17
* Add mscgen as an optional dependency.

* Update doxygen package.py

Fix typo in mscgen dependency specification

* Remove whitespace for flake8
2020-04-09 12:03:30 -05:00
George Hartzell
1b2638c9b1 primer3: move to github, add 2.5.0, fix 2.3.7 (#15958)
* primer3: move to github, add 2.5.0, fix 2.3.7

- The Primer3 project moved to GitHub.

  - update the URL
  - compare the tarballs 2.3.7 from Sourceforge and github, no
    significant differences (e.g. the Sourceforge tarball contained a
    couple of "tmp" files).
  - update the signature for the 2.3.7 tarball.

- @2.3.7 doesn't build with gcc@8.4.0, there's a dubious pointer/int
  comparison that causes an error.  It was fixed upstream in newer
  versions, apply simple patch to this version so that it continues to
  be build-able with newer compilers.  See:

  - https://github.com/primer3-org/primer3/issues/2
  - https://github.com/primer3-org/primer3/issues/3

- Add info for @2.5.0, which builds cleanly.

* Flake8 cleanup
2020-04-09 11:53:34 -05:00
Sergey Kosukhin
05a80523c8 NetCDF packages: switch to the official FTP server. (#15641) 2020-04-09 09:57:07 -05:00
Jennifer Herting
b75ba93589 New package: gtk-doc (#15768)
* [gtk-doc] created template

* [gtk-doc] using custom url to standardize on dotted version

* [gtk-doc] added description and homepage

* [gtk-doc] added dependencies and added pdf variant

* [gtk-doc] commented out pdf variant

* [gtk-doc] cleaned up leftover fixmes

* [gtk-doc] flake8

* [gtk-doc] readded url

* [gtk-doc] python packages are build and run dependencies
2020-04-09 09:56:33 -05:00
Massimiliano Culpo
e53a98cb4f papi: check existence of a fortran compiler (#15968)
fixes #5029
2020-04-09 15:33:24 +02:00
vvolkl
5320268033 [podio] add recipe for podio (#15726) 2020-04-09 10:29:19 +01:00
Andrew W Elble
ee0cbd7a17 py-torch: Fix v1.4.0 by adding v1.4.1 (#15761)
* py-torch: Fix v1.4.0 by adding v1.4.1

version/tag hack so that 1.4.0 is still workable.
see pytorch/pytorch#35149

* delete/disable fbgemm support in 1.4.0

* moved conflict
2020-04-09 10:50:08 +02:00
Peter Scheibel
75640f0ed9 NAG compiler fix: skip implicit RPATH detection (#15902)
* Skip collection of compiler link paths if compiler does not define a verbose flag

* modules config bug: allow user to configure a compiler without an explicit entry for loaded modules
2020-04-09 10:48:29 +02:00
darmac
6d8a59be5b uchardet: added package at v0.6.0 (#15937) 2020-04-09 09:19:52 +02:00
G-Ragghianti
f9c833e078 Papi packge: refactored to inherit from AutotoolsPackage (#15962) 2020-04-09 09:13:35 +02:00
darmac
93a53f1faf elasticsearch: change depends on from jdk to java (#15964) 2020-04-08 22:35:46 -05:00
Michael Kuhn
3c8bd21dae glib: Add new stable versions (#15947)
Newer versions of glib require Meson, so this PR adds support for that
using a hybrid approach. glib@5.28: will be built using Meson, older
versions still make use of Autotools.
2020-04-08 22:32:08 -05:00
T.Tian
e96750472e py-gpaw: Add libvdwxc as variant (#15948)
* Add libvdwxc as variant

* py-gpaw: add missing line for libvdwxc conditions
2020-04-08 22:22:19 -05:00
Aniruddha Marathe
9035dc6b3d - Fixes build issues. (#15951)
- Updates Kripke URL to its Github repository.
- Adds previous Kripke versions.
- Adds 'caliper' variant.
2020-04-08 22:13:13 -05:00
Andrew W Elble
8abffd4189 py-tensorflow-estimator: fix build (#15953)
Change the build to work again, and be more in line with the other
tensorflow packages. Add version 2.1.
2020-04-08 22:10:37 -05:00
Paul Ferrell
d05f25a4d0 Fixed bad expand option for openjdk versions. (#15956)
The most recent change to the openjdk package set expand=False for all versions
of the package. This means only the unexpanded archive will be installed, which is not correct.
2020-04-08 22:07:00 -05:00
Justin S
4886a2d5ef py-awesome-slugify: new package at 1.6.5 (#15907)
* py-awesome-slugify: new package at 1.6.5

* py-awesome-slugify: fix typo in version range

* py-awesome-slugify: update dependencies
2020-04-08 21:45:33 -05:00
Nichols A. Romero
bf4eec94ca F18 update April 2020 (#15930)
* Update dependencies and support variant for Fortran Intermediate Representation.

* Add Cmake flags that toggle Fortran Intermediate Representation on/off. Exclude Flang tests for now.

* f18+fir variant needs next release of llvm or master.

* Only build tests if you are pass in --test to spack install
2020-04-08 20:32:56 -05:00
Andrew W Elble
c5b625ca90 New package: py-tensorboard (#15829)
* New package: py-tensorboard

* some basic dependencies based on requirements.txt
remove the older version that doesn't build

* requested changes

* add additional dependencies

* more dependency changes
2020-04-08 12:46:36 -05:00
Andrew W Elble
c6c53df916 py-onnx: only use py-typing if python < 3.5 (#15931)
* py-onnx: only use py-typing if python < 3.5

avoids a 'Callable has no attribute __abc_registry' error. See
onnx/onnx#2199 and python/typing#573

* add version 1.6.0 while we're here.
2020-04-08 12:46:16 -05:00
iarspider
8ed8bb0a76 MariaDB: added v10.4.12 (#15943) 2020-04-08 14:34:56 +02:00
iarspider
fcf0c6cb68 pytest: added v4.6.9 (#15944) 2020-04-08 14:34:09 +02:00
darmac
62cc8158de http-parser: added package at v2.9.4 (#15936) 2020-04-08 09:04:01 +02:00
Xavier Delaruelle
4031e9a2a7 environment-modules: add version 4.5.0 (#15938)
Add new version 4.5.0 and update quarantine variable list to also
include LD_PRELOAD in addition to LD_LIBRARY_PATH (to avoid side-effect
when the first depends on the latter).
2020-04-08 09:01:22 +02:00
George Hartzell
66cec5a151 Update hugo version and add extended variant (#15933)
- Add info for version 0.68.3
- Add variant to package that enables the "extended" features.  It
  works with both of the existing versions (not sure how far back it
  goes, but confirmed that it's valid fro 0.53).

Tested on OS X with go@1.14.1.
2020-04-07 22:27:23 -05:00
darmac
e16593e551 Add new package: open-isns (#15914)
* Add new package: open-isns

* refine args
2020-04-07 22:27:04 -05:00
Justin S
998dc7a121 py-cyvcf2: new package at 0.11.7 (#15908)
* py-cyvcf2: new package at 0.11.7

* py-cyvcf2: update dependencies
2020-04-07 20:41:18 -05:00
Justin S
7927394fb3 py-yahmm: new package at 1.1.3 (#15909)
* py-yahmm: new package at 1.1.3

* py-yahmm: update dependencies
2020-04-07 20:41:01 -05:00
Justin S
233fc5ff23 py-unidecode: new package at 1.1.1 (#15906)
* py-unidecode: new package at 1.1.1

* py-unidecode: update py-setuptools dep type

* py-unidecode: add python version
2020-04-07 20:40:33 -05:00
Justin S
9b33788573 py-utils: new package at 1.0.1 (#15904)
* py-utils: new package at 1.0.1

* py-utils: update py-setuptools dep type

* py-utils: fix dependency condition
2020-04-07 20:39:39 -05:00
Justin S
cc4bf086b9 py-args: new package at 0.1.0 (#15903)
* py-args: new package at 0.1.0

* py-args: update dependencies
2020-04-07 20:39:03 -05:00
Massimiliano Culpo
fb0bcf4127 openfoam: modified flex to be a build + link dependency (#15917)
fixes #15863

Since openfoam-org needs FlexInclude.h "flex" needs to
be also a link dependency.
2020-04-07 17:04:54 -05:00
ktsai7
0ac77b815f update gasnet spackage cmake args (#15920)
* update gasnet spackage cmake args

* fix style errors

* trailing whitespace
2020-04-07 17:03:32 -05:00
Benjamin Tovar
0074995ecf updates CCTools to version 7.1.2 (#15923) 2020-04-07 17:03:18 -05:00
Nichols A. Romero
46bcbac719 Make use of Spack's builtin CUDA build system. (#15924) 2020-04-07 17:02:38 -05:00
Robert Pavel
36f7def307 Addded Draco@7.5.0:7.6.0 (#15926)
Updated version hashes for draco spackage to specify 7.5 and 7.6
2020-04-07 17:01:06 -05:00
George Hartzell
153c888432 Fix lua build, missing deref of self for spec (#15927)
Looks like something changed and a case was missed.

Function doesn't have a spec arg, need to dereference it off of
self.

Builds on OS X.
2020-04-07 17:00:53 -05:00
Satish Balay
45fe9add2e update versions: petsc4py@3.13.0 and slepc4py@3.13.0 (#15928) 2020-04-07 17:00:34 -05:00
Hadrien G
b405278c43 [acts-core] Add version 0.21 (#15922)
* Add ACTS v0.21

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-07 17:00:01 -05:00
Scott Wittenburg
de95a9f5f3 pipelines: Document dynamic generation limitations 2020-04-07 15:20:01 -06:00
Carson Woods
fc19f7de6c ucx: add additional variants (#15925)
* Add more variants to ucx

* Fix flake8 issue
2020-04-07 15:18:40 -05:00
Jose E. Roman
fb841877c5 slepc 3.13 develop updates (#15897)
* slepc: updates for @devel

-  +arpack now works with int64
-  +blopex add conflict with int64
-  switch to using --with-arpack-lib [from --with-arpack-lib] with current slepc
-  use updated blopex with current slepc

* slepc: conflict with blopex should be in all versions

* slepc: add new downloads

* slepc: add whitespace around operator

Co-authored-by: Satish Balay <balay@mcs.anl.gov>
2020-04-07 15:13:32 -05:00
Andrew W Elble
dd463272e6 New package(s): py-pydeps and py-stdlib-list (#15828)
* New package(s): py-pydeps and py-stdlib-list

* requested changes

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-07 13:59:24 -05:00
darmac
cb9c86e526 Add new package: shark (#15913) 2020-04-07 11:57:21 -05:00
Mark Olesen
8b275080ea update OpenFOAM patch versions (#15916)
Co-authored-by: Mark Olesen <Mark.Olesen@esi-group.com>
2020-04-07 11:57:07 -05:00
Massimiliano Culpo
2dece3aee8 cryptsetup: restrict the version of automake if @2.2.1 (#15918)
* cryptsetup: restrict the version of automake if @2.2.1

fixes #15706

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-07 11:56:54 -05:00
Themos Tsikas
375e1c62c7 NAG Compiler 7.0 (Build 7014) download checksum (#15899)
* NAG Compiler 7.0 (Build 7009) download checksum

* NAG Compiler 7.0 (Build 7014) download checksum
2020-04-07 11:38:11 -05:00
Jennifer Herting
e34ea80d52 New package: boinc-client (#15770)
* [boinc-client] Created template

* [boinc-client] removed non-client version

* [boinc-client] added description and homepage

* [boinc-client] specifically specify this as a client release

* [boinc-client] added dependencies

* [boinc-client] added variant: manager

* [boinc-client] added graphics variant

* [boinc-client] added dependency version specificity

* [boinc-client] systemd install path fix

* [boinc-client] added sqlite dependency

* [boinc-client] flake8

* [boinc-client] cleaned up left over fixme
2020-04-07 11:21:49 -05:00
LPettey-Arm
da9ba2b254 Add build number to Arm compiler version identification (#15809)
* Add capability for detecting build number for Arm compilers

* Fixing fleck8 errors and updating test_arm_version_detection function for more detailed Arm compielr version detection

* Ran flake8 locally and corrected errors

* Altering Arm compielr version check to remove else clause and be more consistent with other compielr version checks. Added test case so both the 'if' and 'else' conditionals of the Arm compiler version check have a test case

Co-authored-by: EC2 Default User <ec2-user@ip-172-31-7-135.us-east-2.compute.internal>
2020-04-07 10:58:54 -05:00
Massimiliano Culpo
f83d46bb79 intel: fixed version number (update4 is 18.0.5) (#15915)
fixes #15811

See https://software.intel.com/en-us/articles/intel-compiler-and-composer-update-version-numbers-to-compiler-version-number-mapping
2020-04-07 15:47:22 +02:00
Toyohisa Kameyama
ae94c52f1c ppOpen-APPL/FEM: New package. (#15911)
* ppOpen-APPL/FEM: New package.

* typo fix.
Update patch.
2020-04-07 08:43:46 -05:00
Adam J. Stewart
93e22426a6 Don't run linux build tests for doc PRs (#15895) 2020-04-07 09:09:08 +02:00
Adam J. Stewart
34bce8f4a2 Simplify Build Error template (#15864) 2020-04-06 19:28:13 -05:00
Adam J. Stewart
783793426d Package rename: DNNL -> oneDNN (#15910) 2020-04-06 19:27:34 -05:00
Matthias Diener
e7a529322f fish: add version 3.1.0 and switch to cmake (#15812)
Versions < 3 do not support building with CMake.
2020-04-06 19:25:39 -05:00
Diego Magdaleno
2542d80e10 Update nano and fix coreutils on Darwin (#15883)
* Fixed building coreutils on Darwin

* Bump nano version to 4.9

* Coreutils: Add program prefix g so we don't conflict with Apple utilities

* Fix intendation

* Make format more spack like

* Removed unnecesary changes

* Merge branch 'develop' of github.com:DiegoMagdaleno/spack into develop

Fix linking libgit2 on Darwin

* Revert "Merge pull request #3 from spack/develop"

This reverts commit 58dbbdb82b, reversing
changes made to dd7a413f48.

* Revert "Revert "Merge pull request #3 from spack/develop""

This reverts commit f956aa7b13.

* Revert "Merge branch 'develop' of github.com:DiegoMagdaleno/spack into develop"

This reverts commit 50321f7986.
2020-04-06 19:23:05 -05:00
Andrew W Elble
6ad0ca27c2 new package: nccl-tests (#15890)
* new package: nccl-tests

* fix dependency types
2020-04-06 19:21:36 -05:00
Andrew W Elble
26a754c023 new package: py-tensorboard-plugin-wit (#15898)
* new package: py-tensorboard-plugin-wit

dependency for py-tensorboard >= 2.2.0

* incorporate feedback
2020-04-06 19:21:16 -05:00
Carson Woods
379319ee2d pdt: add PIC support as variant (#15851)
* Add fPIC support as variant

* Fix variant to use compiler agnostic fPIC option
2020-04-06 16:20:21 -05:00
Andrew W Elble
9d906658b3 nccl: supports infiniband/RoCE since 2.3.5-5 (#15889)
loads libibverbs via dlopen(), add dependency on rdma-core
2020-04-06 16:19:55 -05:00
Andrew W Elble
ebd0b14ad1 new package: py-google-auth-oauthlib (#15900) 2020-04-06 16:10:43 -05:00
Adam J. Stewart
fab1f68399 Docs: fix Spack Environments command (#15891) 2020-04-06 11:54:22 -05:00
Adam J. Stewart
18a9a265fd py-smart-open: fix url/checksum, add deps (#15892) 2020-04-06 11:16:20 -05:00
Dr. Christian Tacke
b1bea70df1 nanomsg: add new Package (#15894) 2020-04-06 11:15:57 -05:00
François Trahay
55d15fc07e new packages: libbacktrace, libpfm, numap, numamma (#15868)
* new packages: libbacktrace, libpfm, numap, numamma

* numap: use the existing libpfm4 package

* formatting
2020-04-06 08:01:58 -05:00
Massimiliano Culpo
06f3381dfd Blacklist Lmod variable modifications when sourcing files (#15778)
fixes #15775

Add all the variables listed here:

https://lmod.readthedocs.io/en/latest/090_configuring_lmod.html

to the list of those blacklisted when constructing environment
modifications by sourcing files.
2020-04-06 10:02:03 +02:00
Jonathon Anderson
359d7adf7e Source devnull in environment_after_sourcing_files (closes #15775) (#15791)
spack.util.environment_after_sourcing_files compares the local
environment against a shell environment after having sourced a
file; but this ends up including the default shell profile and
rc, which might differ from the local environment.

To change this, compare against the default shell environment,
expressed here as 'source /dev/null'.
2020-04-06 10:00:42 +02:00
Christoph Junghans
268c2a19da boost: boost-python in 1.72.0 broken with cxxstd=98 (#15885)
* boost: boost-python in 1.72.0 broken with cxxstd=98

* py-espressopp: depend on boost with cxxstd=11
2020-04-05 18:42:27 -05:00
Adam J. Stewart
1249d73630 py-spatialist: add maintainer and new version, fix url and deps (#15878) 2020-04-05 17:31:09 -05:00
Adam J. Stewart
a08d5fed0a py-flake8-polyfill: fix url and deps (#15872) 2020-04-05 15:45:29 -05:00
Adam J. Stewart
2a074ce445 py-gensim: fix url and deps, add maintainer (#15870) 2020-04-05 15:45:17 -05:00
Adam J. Stewart
638e6d0f9e py-humanfriendly: add new version, fix url and deps (#15873) 2020-04-05 15:45:04 -05:00
Adam J. Stewart
e359bb91e9 py-pep8-naming: add new version, fix url and deps (#15874) 2020-04-05 15:44:50 -05:00
Adam J. Stewart
4dc034a8e5 py-progressbar2: add new version, fix url (#15875) 2020-04-05 15:44:36 -05:00
Adam J. Stewart
f5fde735b6 py-python-utils: add new version, fix url and deps (#15876) 2020-04-05 15:44:23 -05:00
Adam J. Stewart
d87f44e987 py-scoop: fix url and deps (#15877) 2020-04-05 15:44:10 -05:00
Adam J. Stewart
cf68193ebe py-tblib: add new version, fix url and deps (#15879) 2020-04-05 15:43:20 -05:00
Adam J. Stewart
a3b9dbcbfb package urls: pypi.org -> pypi.io (#15880) 2020-04-05 15:43:09 -05:00
Adam J. Stewart
68b4beb725 py-sphinx: add 3.0.0 (#15881) 2020-04-05 15:42:57 -05:00
Adam J. Stewart
05532f9e27 py-ecdsa: add new version, fix download url (#15871) 2020-04-05 15:42:44 -05:00
Stephen McDowell
51fbe518b8 verify other.exe attr exists before use in __eq__ (#15882) 2020-04-05 14:08:13 -05:00
健美猞猁
34627fcbe5 py-pywcs: a new package. (#15826)
* py-pywcs: a new package.

* Fix a flake8 issue.

* Add missing dependencies.

* run -> build.

* Add version specifications.
2020-04-05 11:21:54 -05:00
François Trahay
c99a88128a Version bump: eztrace-1.1-10 (#15866)
* version bump: eztrace-1.1-10

* 'trahay' is the maintainer for package 'eztrace'
2020-04-05 09:39:57 -05:00
Christoph Junghans
b4271d1a26 py-espressopp: pin py-numpy to py2 version (#15865) 2020-04-04 13:00:04 -05:00
darmac
7f8102d6d0 openjdk: support aarch64 platform (#15840) 2020-04-04 11:35:46 -05:00
Adam J. Stewart
9b9b46c0a9 Package rename: intel-mkl-dnn -> dnnl (#15852) 2020-04-04 11:35:23 -05:00
Nichols A. Romero
4ee9fd46bc LLVM support for mlir (#15859) 2020-04-04 11:12:21 -05:00
Simon Pintarelli
4bb1392d7d SIRIUS add version 6.5.1 and 6.5.2 (#15860) 2020-04-04 11:11:17 -05:00
健美猞猁
a7f418e0b2 Check if CPU family is x86_64. (#15862)
* Check if CPU family is x86_64.

* Remove the leading space.
2020-04-04 11:10:48 -05:00
Jennifer Herting
0891c5d854 New package: py-gluoncv (#15856)
* [py-gluoncv] created template

* [py-gluoncv] added description and homepage

* [py-gluoncv] added dependencies

* [py-gluoncv] unicode in readme is causing build to fail

* [py-gluoncv] cleaned up fixmes

* [py-gluoncv] removed unnecessary python dependency listing

* [py-gluoncv] added cython
2020-04-03 15:49:21 -05:00
G-Ragghianti
bf8fea1d53 Added support for new config process for papi@6:+lmsensors (#15858)
* Added support for new configuration process of lmsensors component for papi@6:

* Removed extraneous blank lines
2020-04-03 15:48:44 -05:00
Matthieu Dorier
4173c27868 unqlite: restricted patch to version 1.1.9 (#15857)
* restricted unqlite patch to version 1.1.9

* putting back the URL of the PR corresponding to the patch
2020-04-03 15:48:29 -05:00
G-Ragghianti
bae4f91bfe Add option "--first" for "spack load" (#15622)
* Implemented --first option for "spack load"

* added test for "spack load --first"

Co-authored-by: gragghia <gragghia@localhost.localdomain>
2020-04-03 13:33:20 -07:00
Peter Scheibel
0b99cc2261 Environments/views: only override spec prefix for non-external packages (#15475)
* only override spec prefix for non-external packages

* add test that environment shell modifications respect explicitly-specified prefixes for external packages

* add clarifying comment
2020-04-03 13:26:33 -07:00
Jennifer Herting
0a9d4f6720 New package: py-portalocker (#15854)
* [py-portalocker] Create template

* [py-portalocker] added homepage and description

* [py-portalocker] specified dependencies

* [py-portalocker] cleaned up fixmes

* [py-portalocker] removed unnecessary python dependency listing
2020-04-03 13:58:02 -05:00
G-Ragghianti
5e5b68c063 Papi package: updating with new bugfix version and variant (#15849)
* Added new variant "sde" to papi

* Updated papi with new version and new variant "sde"
2020-04-03 11:39:29 -05:00
Frédéric Simonis
be57c0f6e7 precice: Add version 2.0.2 (#15846) 2020-04-03 11:33:47 -05:00
Jennifer Herting
1461332e97 New package: libnotify (#15769)
* [libnotify] created template

* [libnotify] added homepage and description

* [libnotify] added dependencies

* [libnotify] patch location to docbook

* [libnotify] more dependency work

* [libnotify] reorder dependencies

* [libnotify] added variant docbook

* [libnotify] more accurate dependency version

* [libnotify] xsltproc still needed

* [libnotify] created test variant

* [libnotify] added gtkdoc varient

* [libnotify] cleaned up leftover fixme

* [libnotify] flake8

* [libnotify] test variant became self.run_tests

* [libnotify] pkgconfig is build dependency

* [libnotify] commented out broken variants

* [libnotify] flake8
2020-04-03 11:07:25 -05:00
健美猞猁
c0d2f70d02 py-stsci-distutils: new package at v0.3.8 (#15845) 2020-04-03 11:12:59 +02:00
Toyohisa Kameyama
87444aef7e ppOpen-APPL/BEM-AT: added new package at v0.1.0 (#15841) 2020-04-03 11:11:46 +02:00
健美猞猁
e227a684b9 py-d2to1: added v0.2.12 (#15844) 2020-04-03 10:29:25 +02:00
Adam J. Stewart
75a2f8046a Add commands to facilitate Spack/Python/OS reporting (#15834)
* Add --version arg to spack python command
* Add `spack debug report` command
2020-04-02 23:12:03 -07:00
Carson Woods
1662c3581b pmix: add option for toggling pmi backwards compatibility (#15838)
* Add option for toggling pmi backwards compatibility

* Remove trailing whitespace
2020-04-02 21:09:33 -05:00
Jennifer Herting
1d14f74d19 New Package: py-astropy-helpers (#15658)
* [py-astropy-helpers] created template

* [py-astropy-helpers] - removed boilerplate - added homepage - added depends_on('py-astropy')

* [py-astropy-helpers] Setuptools versioning

* [py-astropy-helpers] cleaned up unused build_args method

* [py-astropy-helpers] py-astropy is a runtime dependency

* [py-astropy-helpers] requires python@3.6:

* [py-astropy-helpers] cleaned up unnecessary older versions

* [py-astropy-helpers] turns out py-astropy isn't actually a dependency
2020-04-02 20:11:48 -05:00
Shintaro Iwasaki
73ac853c3d argobots: new version 1.0 (#15786) 2020-04-02 20:11:06 -05:00
Robert Mijakovic
37e9e450c9 Updates versions of Intel packages (#15839)
* 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..

* Adds version entries for new versions of Intel packages.

Co-authored-by: Robert Mijakovic <robert.mijakovic@lrz.de>
2020-04-02 19:39:44 -05:00
Carson Woods
0083c87c26 mpip: add demangling and setjmp variants (#15837)
* Add demangling to mpip

* Add setjmp support to mpip

* Flake8 fixes
2020-04-02 19:37:35 -05:00
Adam J. Stewart
4d2de863ef intel-mkl-dnn: add 1.3 2020-04-02 15:20:18 -07:00
Michael Kuhn
06ebb94f37 go: Add 1.14.1 and 1.13.9 2020-04-02 15:17:00 -07:00
Matthieu Dorier
8b52f9f37d unqlite: Patching unqlite to be able to build a shared library (#15830)
* Patching unqlite to be able to build a shared library

* Correcting a whitespace for flake8 to pass

* added comment about PR on unqlite

* extra commit to force github to merge
2020-04-02 17:15:45 -05:00
iarspider
144557e945 c-blosc: Add variants to disable building tests and benchmarks (#15789)
* Add variants to disable building tests and benchmarks

* Flake8

* Update package.py

* Update package.py

* Update package.py
2020-04-02 08:52:37 -05:00
Toyohisa Kameyama
1f6f395337 ppOpen-APPL/BEM: added new package at v0.5.0 (#15819) 2020-04-02 12:08:09 +02:00
健美猞猁
d2b6ef98f1 py-pyfits: added new package at v3.5 (#15825) 2020-04-02 12:07:22 +02:00
健美猞猁
d921974db1 py-ephem: added new package at v3.7.71 (#15438) 2020-04-02 11:13:17 +02:00
Kelly (KT) Thompson
8078089914 cmake: added v3.17.0 (#15822) 2020-04-02 11:06:21 +02:00
Jonathon Anderson
7d44a0090d cryptsetup: added v2.2.2, v2.2.3 and v2.3.1 (#15823)
Also confined the included patch to the earlier versions, as
indicated.
2020-04-02 10:55:20 +02:00
Jonathon Anderson
60f29a9f80 qt: added v5.14.2 (#15824) 2020-04-02 10:54:05 +02:00
Michael Bentley
c3c057f2b3 package: update flit and py-pyelftools versions (#15817)
* Update flit package to v2.1.0 and add dependencies

* flit: comment out bash dependency

The host system should have bash available and compiling bash through
spack failed for me.  I'm not sure if binutils and coreutils should
be listed as dependencies as well.

* Add new version of py-pyelftools

* py-pyelftools: add py-setuptools as a build dependency

* Address review comments
2020-04-01 22:05:58 -05:00
Carson Woods
bb0c79b504 package: add variants to cgns (#15816)
* Add additional configuration options for cgns

* Fix syntax errors

* Further syntax fixes

* Convert tabs to spaces

Co-authored-by: Carson Woods <carwood@sandia.gov>
2020-04-01 20:39:57 -05:00
Carson Woods
9b1820c2de package: add static library build option for yaml-cpp (#15814)
* Add static build option

* Fix flake8 errors and standardize spacing of build commands

Co-authored-by: Carson Woods <carwood@sandia.gov>
2020-04-01 20:39:04 -05:00
takanori-ihara
814996eebc New package:dhpmm-f (#15798)
* New package:dhpmm-f

* Remove unnecessary line
2020-04-01 20:38:09 -05:00
Todd Gamblin
5a814ad0c5 hdf5: prefer version 1.10 for now (#15810)
HDF5 1.12 broke backward compatibility, so we're preferring version 1.10
for now.  Packages that need the new API should specify:

    depends_on("hdf5@1.12:")

to be explicit. We can eventually change the preference, but at the
moment most libraries have not udpated to use the new HDF5.
2020-04-01 20:36:04 -05:00
Jonathon Anderson
e260eb4775 Version bump for slurm package (#15790) 2020-04-01 16:51:59 -05:00
Christoph Junghans
37c0039eb9 openssl: add v1.1.1f (#15802) 2020-04-01 13:57:19 -06:00
Erik Schnetter
8552efe54f amrex: New version 20.04 (#15808) 2020-04-01 13:41:23 -05:00
Robert Pavel
47f135534c Added v3 of Laghos (#15806)
* Added v3 of Laghos

Added v3 of Laghos as per
https://github.com/CEED/Laghos/blob/v3.0/README.md

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

Changed develop->master as per PR

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

* Made Metis Dependency Explicit

Added explicit metis dependency

* Folded @develop Laghos Deps in to @3.0:

Theoretically there will be a difference between develop and 3.0: in the
future but currently there is not

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-04-01 13:32:15 -05:00
Adam J. Stewart
64b14b64c0 OpenDX: add new package (#15737) 2020-04-01 13:30:03 -05:00
Robert Pavel
6ad717cc9d Fixed Remaining Shared Objects in Static Lua (#15787)
Fixed removal of remaining references and symlinks to so files when
building lua with static libraries
2020-04-01 12:31:01 -05:00
Nichols A. Romero
917c0a0efd Minor LLVM libomptarget fixes (#15788)
* Add myself as a maintainer

* This was a regression that occured in previous PR. Flang has been excised from LLVM for now until f18 is merged upstream.

* Libraries only needed when a GPU backend is present.
2020-04-01 12:28:36 -05:00
Sinan
67fbf257f0 Package/sfcgal fix typo (#15796)
* fix typo in dependency definition

* remove arbitrary dependency constraint

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-04-01 12:05:53 -05:00
Andrew Gaspar
58cb2e5092 Add libgit2 1.0.0 and 0.28.5 (#15801) 2020-04-01 12:02:55 -05:00
Greg Sjaardema
c3e8825f8e Spelling fixes (#15805)
* Spelling fixes

* spelling fixes

* spelling fixes

* spelling fixes

* spelling fix

* spelling fix

* spelling fix

* spelling fixes

* spelling fix
2020-04-01 12:02:26 -05:00
Axel Huebl
c430ad91c3 pybind11 2.5.0: Include Change (#13905)
Add pybind11, version 2.5.0.
This release adds improved include helpers.
2020-04-01 08:58:09 -07:00
Sinan
49aa28790c new package: py-spatialite (#12597)
* new package: py-spatialite

* make flake8 happy

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-04-01 08:09:39 -05:00
Dr. Christian Tacke
97cfef320c slurm: new version, system configuration path (#15466)
* Add version 18-08-9-1
* Add variant to allow setting the sysconfdir: See below

About sysconfdir:

slurm has a server and a client.
To use the correct communication channel, the client needs
to be able to read the correct config.  This config is in
PREFIX/etc.

Let's assume one has the server part installed as a system
package.  This generally is a good idea, so that the server
gets started during boot.  This means, that the config is
in /etc/slurm.

If one now wants to use the client part (library!) via
spack, one has a problem: spack's slurm looks in
SPACK-PACKAGE-PREFIX/etc for the config.

There needs to be a way to let the spack installed package
use the system's config.

So add a variant to override the path during build:
sysconfdir=/etc/slurm.

This is much like what happened in #15307 for munge.
2020-04-01 08:07:41 -05:00
Adam J. Stewart
a4b3edd68a Allow Spack Environments with '-h' in the name (#15429)
If a user invoked "spack env activate example-henv", Spack would
mistakenly interpret the "-h" from "example-henv" as the "-h" option.
This commit allows users to create and activate environments with
"-h" in the name.

This issue existed for bash shell support as well as csh support, and
this commit addresses both, along with some other unrelated csh
support issues.
2020-03-31 16:57:14 -07:00
Phil Tooley
315faf8b77 Extrae: update package shasum and binutils version (#15516)
Co-authored-by: telemin <telemin@protonmail.ch>
2020-03-31 16:14:43 -07:00
Greg Becker
336191c251 packages.yaml: allow virtuals to specify buildable: false (#14934)
Currently, to force Spack to use an external MPI, you have to specify `buildable: False`
for every MPI provider in Spack in your packages.yaml file. This is both tedious and
fragile, as new MPI providers can be added and break your workflow when you do a
git pull.

This PR allows you to specify an entire virtual dependency as non-buildable, and
specify particular implementations to be built:

```
packages:
all:
    providers:
        mpi: [mpich]
mpi:
    buildable: false
    paths:
        mpich@3.2 %gcc@7.3.0: /usr/packages/mpich-3.2-gcc-7.3.0
```
will force all Spack builds to use the specified `mpich` install.
2020-03-31 16:09:08 -07:00
Adam J. Stewart
8748160984 GMT: add 6.0.0 (#15785) 2020-03-31 15:44:17 -05:00
Adam J. Stewart
25a65638ff autoconf-archive: add new package (#15782) 2020-03-31 13:02:20 -05:00
Adam J. Stewart
663c3d21b5 JasPer: add 2.0.16 (#15781) 2020-03-31 12:08:26 -05:00
Massimiliano Culpo
7357b7023e Update link for codecov's browser extensions (#15779) 2020-03-31 09:49:25 -05:00
Ben Morgan
77e1384902 geant4: new version 10.6 plus simplifications (#15447)
* geant4: new version 10.6 plus simplifications

Add new 10.6.0 release, migrating download of source to use Geant4's
public release repo on CERN GitLab. Change versioning scheme to use
clearer and standard semantic scheme.

Update geant4-data and g4XXX data packages with new versions. Migrate
geant4-data as a BundlePackage of the g4XXX packages, installing links
to each under a single directory under share for geant4-data. Ensure
each g4XXX package exports the environment variable pointing to its
location expected by Geant4.

Remove "data" variant from Geant4 package and always use geant4-data.

Simplify cxxstd variant transport to dependencies.

* g4<DATA>: Use self to resolve correct prefix

* geant4, data: Fix flake8 errors

* g4photonevaporation: flake8 fix

* geant4: vecgeom version depends_on

Geant4 major.minor versions have specific dependencies on vecgeom
versions. Add missing vecgeom version for geant4 10.5, and match
version requirements for vecgeom in geant4 depends_on.

* geant4: c++17 patch specific for 10.4.3

* geant4: simplify geant4-data setup

* geant4: Use new define_from_variant function

* geant4: fix flake8 errors
2020-03-31 09:54:31 +01:00
Toyohisa Kameyama
628516c761 ppOpen-APPL/FVM: new package. (#15772)
* ppOpen-APPL/FVM: new package.

* copy_tree -> install_tree.
2020-03-30 23:02:14 -05:00
Satish Balay
864960937d superlu-dist: add new version 6.3.0 (#15766) 2020-03-30 19:52:31 -05:00
Ryan Mast
8bc6b290e5 helics: add new package (#15763)
* helics: add new package

* Remove FIXME boilerplate

* Use open @master: verison range for git dependency and remove mpi fix branch version

* Add blank line after spack import
2020-03-30 19:50:53 -05:00
Satish Balay
a96b742797 Balay/petsc 3.13.0 (#15767)
* petsc: add 3.13.0 (using petsc-lite) and 3.12.5

* petsc@3.13.0: update hdf5 and superlu-dist dependencies

* flake8 fix

* fixes for comments

Co-authored-by: Jed Brown <jed@jedbrown.org>
2020-03-30 19:50:29 -05:00
Adam J. Stewart
3c18d2a0e8 py-torch: make sure unit tests are registered (#15765) 2020-03-30 17:44:58 -05:00
Axel Huebl
3f50b9e08d CUDA 10.1+ supports ICC 19.0 (#15764)
Fix the CUDA-ICC conflict check.
Simplify the XL 17 check.
2020-03-30 16:24:05 -05:00
Adam J. Stewart
ccc7c9b86d py-horovod: fix compilation of ~cuda (#15719)
* py-horovod: fix compilation of ~cuda

* Rewrite py-horovod with only 3 variants

* Add upstream patch to workaround compilation issue
2020-03-30 16:09:17 -05:00
Andrew W Elble
6747ecde16 py-onnx: depends on cmake >= 3.1 (#15762)
* py-onnx: depends on cmake >= 3.1

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-30 14:58:57 -05:00
Amjad Kotobi
0c7fff6065 Update git version to 2.26.0 (#15756)
* Update git version to 2.26.0

* Fix1
2020-03-30 11:56:40 -05:00
Robert Pavel
8d1e88658d Aded Option to Disable Shared Lua library Generation (#15758)
* Aded Option to Disable Shared Lua library

Added option to disable generation of shared object library for lua to
avoid build issues on static only platforms

* Fixed Flake8 Issue with Lua Spackage

Fixed indentation issue with lua spackage
2020-03-30 11:56:23 -05:00
Hadrien G
abdada03a8 Add ACTS v0.20 and take move to GitHub into account (#15757) 2020-03-30 16:48:36 +01:00
Fabian Brandt
605b7b5d23 New package: libnetworkit (#15714)
* New package libnetworkit

* Fixed artificial dependency restriction
2020-03-30 08:17:21 -05:00
Carson Woods
e9d573d110 package: add additional configuration options to lmod (#15682)
* Add further configuration options

* Convert auto-swap to auto_swap. Might eventually switch to key-value pair instead.
2020-03-30 08:14:07 -05:00
Carson Woods
05b7ec48c5 Add additional config options to gdb (#15754) 2020-03-29 23:05:24 -05:00
Carson Woods
3cbc26cfa6 Add additional configuration options for binutils (#15753) 2020-03-29 23:05:11 -05:00
Todd Gamblin
3310eaab99 spack-python should exec spack python (#15738)
The current implementation of `spack-python` will leave an extra shell
around while it runs.  That shell should really replace itself with
spack.

- [x] add exec to spack-python script
2020-03-29 19:38:15 -07:00
Adam J. Stewart
757d768a07 py-mayavi: add new package (#15751) 2020-03-29 21:11:13 -05:00
Adam J. Stewart
7bed5e7c1a py-envisage: add new package (#15748) 2020-03-29 20:41:24 -05:00
Adam J. Stewart
0372582bf0 py-apptools: add new package (#15747) 2020-03-29 20:08:52 -05:00
Carson Woods
61c1322430 new package: intel-mpi-benchmarks (#15745)
* Add initial attempt at intel-mpi-benchmarks package

* Add more checksummed versions

* Changes to how makefile is handled

* First working install version. Needs tuning to support building specific benchmarks

* Add variant for building specific benchmarks rather than all of them

* Minor syntax change
2020-03-29 19:46:16 -05:00
Adam J. Stewart
17cd359ddf py-traitsui: add new package (#15744) 2020-03-29 19:38:02 -05:00
Adam J. Stewart
f1aab835fe CitcomS: add maintainer, master version, python dep (#15742) 2020-03-29 17:23:21 -05:00
Adam J. Stewart
4287d2290c py-pyface: add new package (#15743) 2020-03-29 17:22:24 -05:00
Adam J. Stewart
df4e89770a py-traits: add new package (#15741) 2020-03-29 16:34:18 -05:00
Jean-Paul Pelteret
4b3b023284 deal.II: Update dependencies and fix target for vectorisation (#15731)
* Update ADOL-C homepage url

* Update SymEngine to v0.6

* deal.II: Add code to add target vectorisation flags
2020-03-29 10:56:15 -05:00
Adam J. Stewart
c3d0973c3e motif: add pkgconfig dependency (#15736) 2020-03-29 10:55:57 -05:00
Patrick Gartung
cbcac72254 Buildcache keys command speed up (#15727)
* Limit the spidering to depth=0 for keys

* depth=0 is default argument
2020-03-28 16:49:34 -05:00
Andrew W Elble
beaa4fbe3c New package: gdrcopy (#15732)
* New package: gdrcopy

provides the userspace libraries for gdrcopy.

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-28 16:44:23 -05:00
Daniele Cesarini
ddccad14c9 XIOS: add new versions (#15728)
* XIOS: add new versions

Patch has been removed because it was not applied to any previously
existing versions and it actually breaks the new versions added by this
PR.

* Sort versions from newest to oldest
2020-03-28 15:49:21 -05:00
Tom Scogland
a3e1b2bd58 llvm: libomptarget support (#14060)
This allows the llvm build to support:

* clang cuda
* libomptarget for:
  * current host
  * cuda
* bitcode compilation of libomptarget device runtime for inlining by 
  bootstrapping libomptarget
* split dwarf information support as an option for debug builds, if you need a
  debug build, for the love of all that's good in the universe use this flag
* adds necessary dependencies for shared library builds and libomp and
  libomp target to build correctly
* new version of z3 to make it sufficient to build recent llvm

The actual change is much smaller than the diff, this is because it's been formatted with black.  I realize this kinda sucks right now, but I'm hoping it will make future updates here less painful.
2020-03-28 13:20:06 -07:00
Kai Germaschewski
f3c2ebbfb8 fix gcc@8.4.0 build (#15729)
the gcc package.py includes patches for a sanitizer related bug that look
like they've been fixed in gcc 8.4.0, which caused `spack install` to fail.

This PR excludes patching gcc >= 8.4.0 and < 9.0.0.
2020-03-28 13:06:17 -05:00
Amjad Kotobi
c1d111af74 Add package swiftclient (#15700)
* Add package swiftclient

* Fix on url

* Package name changed to py-python-swiftclient and changes on dependencies
2020-03-28 12:14:05 -05:00
iarspider
6969526e0f py-statsmodels: update to 0.102 and fix dependencies (#15708)
* py-statsmodels: update to 0.102 and fix dependencies

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-28 12:13:47 -05:00
Daryl W. Grunau
8beeeeb74c new package ddd (#15717)
* new package ddd

* mitigate build/installs on case-insensitive filesystems

* add missing variants

* flake8 fixes

* flake8: E124 closing bracket does not match visual indentation

Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2020-03-28 12:12:49 -05:00
iarspider
33f424ff1d Update URL for new py2neo versions (#15324)
* Update URL for new py2neo versions

* Use pypi for py-py2neo

* Add version 4.3.0

* Update py2neo dependencies

* Apply suggestions from code review

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-28 09:15:28 -05:00
Christoph Junghans
0b1c0bdd6e xsbench: fix build of v19 (#15715)
* xsbench: fix build of v19

* Flake8
2020-03-28 09:11:37 -05:00
iarspider
27e4a4750d Hack to select iconv implementation - libiconv vs. libc iconv (#15437)
(re-do of #15213 due to changes in gnupg recipe)
2020-03-28 09:10:31 -05:00
Veselin Dobrev
9f7255da71 mesa: re-introduce the libs property (#15716)
They were originally added in #8904 and later removed (why?) in #10482.
2020-03-28 11:30:05 +01:00
Adam J. Stewart
db67b78fb9 py-petastorm: add new package (#15722) 2020-03-28 00:30:50 -05:00
Adam J. Stewart
33b19e7bf0 py-diskcache: add new package (#15721) 2020-03-27 22:20:15 -05:00
Greg Sjaardema
6e49f5f0e5 netcdf-c: remove maxdims and maxvars variant (#15524)
* NETCDF: Remove maxdims maxvars variant

I'm not sure of the correct protocol to do this, so decided to make a stab and hopefully it works or I'm told the correct way...

The `maxdims` and `maxvars` variants for the NetCDF package were, to the best of my knowledge, only ever used for the Exodus library in the SEACAS package.  In versions of NetCDF prior to 4.4.0, Exodus required that the `NC_MAX_DIMS` and `NC_MAX_VARS` be increased over the default values.  This requirement was removed in 4.4.0 and later.

I do not know of any way to make a variant depend on the version and since the `maxdims` and `maxvars` variants are integer values and not boolean, then every build of NetCDF will have  these variants.  Typically `maxdims=1024 maxvars=8192` and the build will patch the `netcdf.h` include file for every build even though it is (almost) never needed. 

The SEACAS package has a NetCDF version requirement of >4.6.2, so it no longer specifies the `maxdims` or `maxvars` variant and I could find no other package in spack that uses this variant either, so removal should not break anything *in* spack.  However, there is no guarantee that some other external package doesn't use the variant, so I'm not sure of the correct way to remove the variant.  

For this PR, I simply removed the variants.  If there is a way to specify use of the variant tied to a specific version, I couldn't find it anywhere...

* Address review comment

Removed `is_integral` and `import numbers` since `is_integral` was only place it was used.

* Add blank line for flake8
2020-03-27 21:55:04 -05:00
Sinan
f6f5604927 Package/qgis add versions 3.10.4 3.12.1 (#15720)
* add latest versions

* order dependencies alphabetically

* flake8

Co-authored-by: Sinan81 <Sinan81@github>
2020-03-27 21:36:33 -05:00
Andrew W Elble
aed516ad56 TensorFlow: let install take care of the headers (#15718)
* TensorFlow: let install take care of the headers

we don't need to manually install them.

* no longer need to import glob
2020-03-27 21:35:13 -05:00
Sinan
829bfb5788 magma now extends CudaPackage class, taking care of the gcc conflicts (#14471)
* magma now extends CudaPackage class, taking care of the gcc conflicts

* enforce +cuda; thus cuda is dependency via CudaPackage class

* add conflict

* use cuda_arch to set GPU_TARGET build option

* get rid of unnecessary constraint

* flake8

* impose cuda version dependency found empirically

* add variant description

* add conflict

Co-authored-by: Sinan81 <Sinan81@github>
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-03-27 15:28:54 -05:00
Benjamin Fovet
d909c6d89d Add new package CMinpack (#15606)
* Add new package CMinpack

* Add link to CMinpack PR#21
2020-03-27 14:29:49 -05:00
JeromeDuboisPro
2b915dc517 Adding mesa-glu 9.0.1 (2019) (#15705)
Adding mesa-glu 9.0.1 (2019)
2020-03-27 14:28:51 -05:00
iarspider
cd82228c78 py-multiprocess: add new version (0.70.9) and dependencies (#15710)
* py-multiprocess: add new version (0.70.9) and dependencies

* Add new version of py-dill

* Update package.py

* Update package.py
2020-03-27 12:57:29 -05:00
Daryl W. Grunau
f40080934e New package lesstif (#15703)
* new package lesstif

* incorporate more of the Homebrew build recipe

Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2020-03-27 12:57:04 -05:00
Adam J. Stewart
b6d2abf885 py-grpcio: add new version (#15713) 2020-03-27 11:43:16 -05:00
Sinan
b397af5d9c Package/qscintilla: python bindings via extend path (#15599)
* build python bindings within qscintilla package via extend_path trick

* add todo

* reflect new setup also in py-pyqt4 package

* get rid of qscintilla dependency

* also tweak qgis for the new setup

* generalize the building of python bindings

* generalize building of pythong bindings to all qt versions

* add qsci_api variant

* add qsci_variant for pyqt4 package as well; add comment

* pyqt dependency should build with +qsci_api variant enabled

* fix bugs

* improve style

* reflect recent changes

* flake8

* improve style

* more flake8

* more flake8

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-03-27 11:42:58 -05:00
Nichols A. Romero
c5e74fef32 QMCPACK Update March 2020 - Part 2 (#15616)
* Add some comments explaining the choice of flag_handler.

* Fix QMCPACK install method.

* Add support for ppconvert. This requires a custom build method.

* Fix QMCPACK setup_run_environment. Nexus should be properly supported now.

* Cleaner way to check for intel-mkl in spec.

* Remove build method and use build_targets property instead.

* Additional fixed for install method. Effectively restoring the original install method.

* Add the missing backslash to fix directory names.

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

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

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

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

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

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

* Omit these conflicts on mkl variants for now, will hopefully be supportted with new concretizer in a couple of months.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-27 11:38:28 -05:00
darmac
d7454baa55 util-linux: add libmount variant (#15631) 2020-03-27 11:35:08 -05:00
darmac
c3e41444ff Add new package: zfs (#15632) 2020-03-27 11:34:03 -05:00
Hector
fb5afb4cb4 add source-highlight variant to gdb (#15634) 2020-03-27 11:33:33 -05:00
noguchi-k
0ca5ad237a denovogear: fixed comparison error (#15638) 2020-03-27 11:29:30 -05:00
iarspider
953bd04cb3 Bison: add version 3.3.2 (#15707) 2020-03-27 11:21:42 -05:00
iarspider
0f8148b258 py-attrs: add version 19.3.0 (#15709) 2020-03-27 11:16:40 -05:00
Dr. Christian Tacke
16f104aafe intel-tbb: new download url, fix sha256 (#15675)
intel moved the repository around.
github changes the prefix inside the tar according to the
repository name.

So all sha256 have changed!

I verified that the tar contents for 2019.4 did not change
except for the prefix.
2020-03-27 10:59:05 -05:00
Amjad Kotobi
6e82761d4e New package Anaconda2 (#15676) 2020-03-27 10:58:50 -05:00
Andrew W Elble
108a0c99f1 TensorFlow: Make horovod compilation work (#15692)
* TensorFlow: Clean up/simplify the installation, make sure the headers are
installed so that horovod can find them successfully. Fix the 2.0.* builds.

* Backport of 837c8b6b upstream
"Remove contrib cloud bigtable and storage ops/kernels."
Allows 2.0.* releases to build with '--config=nogcp'

* comment regarding tensorflow issue #31187

Co-authored-by: Andrew W Elble <aweits@skl-a-00.rc.rit.edu>
2020-03-27 10:51:04 -05:00
Toyohisa Kameyama
7df7b65cec ppOpen-AT: New package (#15649)
* ppOpen-AT: New package

* use install instead of install-after.

* use install_tree.

* forget remove mkdir.
2020-03-27 08:16:48 -05:00
Brian Homerding
420b5dd4b9 MpiP: adding variant to build shared libraries (#10410) 2020-03-27 12:07:57 +01:00
darmac
e1238bae90 dpdk: added new package at v20.02 (#15635) 2020-03-27 10:21:16 +01:00
darmac
6a33c269bd sshpass: added new package (#15704) 2020-03-27 08:44:41 +01:00
iarspider
97c3addad3 cppgsl: added v2.1.0 (#15696)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-27 08:42:50 +01:00
Fabian Brandt
dcc4aabce1 New package libtlx (#15650)
* New package libtlx

* Replaced dash characters with ascii dash
2020-03-26 22:55:27 -05:00
Michael Kuhn
5f06e50902 meson: Add 0.53.2 and fix setuptools dependency (#15674)
py-setuptools is actually required for running meson.
2020-03-26 22:50:20 -05:00
Hector
0ebed5a618 fix gdb installation (#15679)
* fix gdb installation

* add reference url
2020-03-26 22:45:47 -05:00
Sinan
2828815a49 add new versions (#15688)
Co-authored-by: Sinan81 <Sinan81@github>
2020-03-26 22:41:57 -05:00
noguchi-k
5cb4db8570 gtkorvo-dill: fix argument type of clear_cache (#15689) 2020-03-26 22:41:25 -05:00
Toyohisa Kameyama
8293660217 ppOpen-MATH/MP: New package. (#15690)
* ppOpen-MATH/MP: New package.

* Fix quote.
2020-03-26 22:40:22 -05:00
Seth R. Johnson
e989c05cd0 Add include-what-you-use (#15691) 2020-03-26 22:38:56 -05:00
iarspider
209c7e3ddd xrootd: new version (4.11.2) (#15694) 2020-03-26 22:37:56 -05:00
iarspider
bbc76c3551 fmt: new version (6.1.2) (#15695) 2020-03-26 22:37:33 -05:00
iarspider
640df9c20b range-v3: add new version (0.10.0) (#15697) 2020-03-26 22:36:24 -05:00
Roman Briskine
ef7837410e Fix non-root installations; update homepage (#15701) 2020-03-26 22:32:19 -05:00
Jennifer Herting
7b4354b4c3 genometools: added v1.6.1 (#15657) 2020-03-26 15:01:24 +01:00
Andrew Gaspar
a0c8686105 catch2: added versions up to v2.11.3 (#15680) 2020-03-26 12:46:39 +01:00
Toyohisa Kameyama
9e51ba80c7 ppOpen-Math/VIS: added new package (#15665) 2020-03-26 08:37:25 +01:00
darmac
9f5873324e kmod: added package at v27 (#15633) 2020-03-26 07:50:28 +01:00
gauthier12
851fb173c8 med package: add version 4.0.0 (#15652) 2020-03-25 19:10:31 -07:00
iarspider
a2801a8deb OpenJDK: add version 8u222 (#15677) 2020-03-25 19:00:39 -07:00
Carson Woods
9f256ed953 darshan-util and darshan-runtime: add version 3.1.8 (#15681) 2020-03-25 19:00:15 -07:00
Dan Bonachea
e042bd9d89 UPC++ 2020.3.0 update (#15623)
## Summary

This PR updates and improves the Spack package for [UPC++](https://upcxx.lbl.gov).
I'm an LBL employee and developer on the UPC++ team, as well as the maintainer of this Spack package.

### Key Improvements:
* Adding new 2020.3.0 release and support for use of develop/master branches
    - Our build infrastructure underwent a major change in this release, switching from a hand-rolled Python2 script to a bash-based autoconf work-alike. 
    - The new build system is NOT using autotools (nor does it support some of the more esoteric autoconf options), but the user interface for common builds is similar.
* Add explicit support for an MPI optional dependency
    - New `mpi` variant enables use of the MPI-based spawner (most relevant on loosely coupled clusters), and the (unofficial) mpi-conduit backend
    - This variant is OFF by default, since UPC++ works fine without MPI on many systems, increasing the likelihood first-time Spack users get a working build without needing to correctly setup MPI
* Add support for post-install testing using the test support deployed in the new build infrastructure
* Fix or workaround a few bugs observed during testing 

### Status

The new package has been validated with a variety of specs across over seven different systems, including: NERSC cori, ALCF Theta, OLCF Summit, an in-house Linux cluster, and macOS laptops (Mojave and Catalina).
2020-03-25 16:05:13 -07:00
Axel Huebl
9c0b197460 WarpX: MPI, Backends, Ascent (#15647)
Expose serial/parallel build (MPI), CUDA/OpenMP backends, Clang, and
Ascent bindings.

Interestingly, `warpx +ascent` currently leads to an infinite loop in
the Spack concretizer.
2020-03-25 14:54:13 -07:00
Massimiliano Culpo
b42a96df98 provider index: removed import from + refactored a few parts (#15570)
Removed provider_index use of 'import from' and refactored a few routines to a further subclassing of _IndexBase for implementing user defined bindings of provider specs.
2020-03-25 09:48:05 -07:00
Axel Huebl
3aa225cd5c openPMD-api: added v0.11.1 (#15659)
Add the latest release with HDF5-1.12 compatibility.
2020-03-25 11:57:00 +01:00
xfzhao
f1aec94719 mothur: specify version of vsearch (#15661) 2020-03-25 11:50:30 +01:00
Ben Morgan
2480217387 gitconddb: new package at v0.1.1 (#15651)
Git-based conditions database for HEP and other experiments.

Use latest release version and current master to support Linux and
macOS. Add core known dependencies and conflicts related to C++17
support.

cxxstd variant added to help transitive dependencies, and for future
support for newer standards in future.
2020-03-25 11:28:06 +01:00
Hadrien G
b8db87e1dc ACTS: added v0.19 (#15671) 2020-03-25 10:49:53 +01:00
Sinan
24ca071652 pocl: add versions up to v1.4.0 (#15672)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-03-25 10:49:09 +01:00
Jeffrey Salmond
7e1e98cf8f julia: added v1.4.0 (#15673) 2020-03-25 10:46:04 +01:00
darmac
16eb86acf2 libwebp: fix sha256 checksum (#15639) 2020-03-25 00:07:34 -07:00
Stephanie Brink
4e6c07529d xz: add version 5.2.5 (#15656) 2020-03-24 23:05:26 -07:00
Matthias Diener
d099143999 charmpp: add version 6.10.1+cleanups
- change URL to http as our server only supports TLSv1.0, which
not all HTTPS clients accept anymore
- change name of development branch to 'master'
2020-03-24 23:04:41 -07:00
Carson Woods
25e50a9943 pmix: add version 2.2.3 (#15668) 2020-03-24 23:01:24 -07:00
Carson Woods
cfa8e69835 singularity: add version 3.5.3 (#15669) 2020-03-24 23:01:00 -07:00
Massimiliano Culpo
1a5e4232ed spack.repo: remove "import from" statements (#15505)
spack.repo: remove "import from" statements
2020-03-24 14:26:35 -07:00
eugeneswalker
862e13183d workaround for otf2's erroneous python2 configure requirement (#15653) 2020-03-24 14:11:38 -07:00
Amjad Kotobi
3b7c79b225 r-remotes: added v2.1.1 (#15627) 2020-03-24 10:10:33 +01:00
Tomoki, Karatsu
dfe4e980ea py-onnx: remove_dllexport_decl. (#15648) 2020-03-24 09:56:39 +01:00
Massimiliano Culpo
1b4de7813a spack.relocate: add unit test (#15610)
* relocate: removed import from statements
* relocate: renamed *Exception to *Error

This aims at consistency in naming with both
the standard library (ValueError, AttributeError,
etc.) and other errors in 'spack.error'.

Improved existing docstrings

* relocate: simplified search function by un-nesting conditionals

The search function that searches for patchelf has been
refactored to remove deeply nested conditionals.

Extended docstring.

* relocate: removed a condition specific to unit tests
* relocate: added test for _patchelf
2020-03-24 09:02:54 +01:00
Michael Kuhn
7e0ec0ec09 automake: Add 1.16.2 2020-03-23 18:52:02 -07:00
Peter Scheibel
8283068438 Bugfix: remove unit tests that install real packages (#15646)
Our unit tests run many times. Any unit test which actually installs
a package (which involves fetching code on the internet) is a severe
bug because it runs an installation many times (i.e. re-downloading
the same package for each version of Python that we run unit tests
for).

This reverts commit 25893f1, which added tests that install real
packages.
2020-03-23 18:10:44 -07:00
Andreas Baumbach
7b486fd84d py-ics: add version 0.7 2020-03-23 17:04:04 -07:00
Carson Woods
6a18bfbae8 CMake: add version 3.9.2 (#15644) 2020-03-23 17:03:25 -07:00
Carson Woods
e1f593b6c6 lmod: add version 7.8.1 (#15643) 2020-03-23 17:02:46 -07:00
Todd Gamblin
cde4375c96 Vendoring: remove dependency on Setuptools from vendored pytest (#15612)
If the Python used by Spack does not include Setuptools, then
'spack test' will fail because Spack's vendored pytest dependency
imports and uses Setuptools in some of its functions. It turns out
that Spack doesn't use the functionality those methods enable, so
this PR removes those functions and thereby allows 'spack test' to
run without Setuptools.
2020-03-23 16:55:07 -07:00
Todd Gamblin
54a6c25da6 Bugfix (config): enable "spack test" when in an active environment (#15618)
For any Spack test using Spack's YAML configuration, avoid using real
Spack configuration that has been cached by other tests and Spack
startup logic. Previously this was only done for tests using
'mutable_config' (i.e. those which expected to *change* the
configuration of Spack), but in fact all tests that read Spack config
should use it.

This was an issue when running tests within an environment, because
compiler configuration ends up being queried earlier, and the user's
real config "leaks" into the cache. Outside an environment, the cache
is never set until tests touch it, so we weren't seeing this issue.
2020-03-23 15:15:36 -07:00
Piotr Luszczek
d3c1a4c94b xsdk-examples: add new package at version 0.1.0 (#15621)
* xsdk-examples: add new package at version 0.1.0
2020-03-23 00:10:15 -05:00
Todd Gamblin
0323f84e79 bugfix: TERM may not be in the environment on Cray (#15630) 2020-03-22 20:47:04 -07:00
Todd Gamblin
d9c5b7de10 bugfix: spack test should not output [+] for mock installs (#15609)
`spack test` has a spurious '[+] ' in the output:

```
lib/spack/spack/test/install.py .........[+] ......
```

Output is properly suppressed:

```
lib/spack/spack/test/install.py ...............
```
2020-03-22 15:46:54 -07:00
Adam J. Stewart
62787a7a3b NCCL: add 1.2.2 (#15628) 2020-03-22 15:32:53 -05:00
Axel Huebl
a3e3413855 WarpX: Update ES and openPMD (#15611)
Update WarpX for recent developments:
- add openPMD I/O (default: ON)
- remove electro-static solver option (now a runtime option)
- enable tiny profiler by default
- depend on new CXX std support in make scripts for C++14
- WarpX only supports 2D and 3D in cartesian dims
2020-03-21 15:36:15 -07:00
Ben Morgan
bb4e9a7b32 davix: add cxxstd variant (#15593)
* davix: add cxxstd variant

Davix is written in C++, so add this variant to allow dependents to specify
this so a consistent ABI is used.

* davix: fix flake8 errors
2020-03-21 13:27:35 -05:00
Patrick Gartung
25893f154f Buildcache: attempt to build and install buildcaches in test environment (#15577)
* Put bindist.py on it's own branch

* Working on SL7 with python 3.6

* Flake8

* Put back clearing of compiler cache
2020-03-21 13:26:37 -05:00
Adam J. Stewart
983f9d3419 bash: add patches up to 5.0.16 (#15615) 2020-03-21 12:42:54 -05:00
Adam J. Stewart
7bde39d883 Fix bug in py-dgl installation, add unit tests (#15617) 2020-03-21 11:52:01 -05:00
darmac
4b771bc521 add new package: nfs-ganesha (#15580)
* add new pacakge: nfs-ganesha

* refine package.py

* update bison & flex as build depends
2020-03-21 10:42:08 -05:00
Todd Gamblin
5df9dd2b48 Merge branch 'releases/v0.14' into develop 2020-03-20 23:12:45 -07:00
Andrew W Elble
e4d225043f performance: add a verification file to the database (#14693)
Reading the database repeatedly can be quite slow.  We need a way to speed
up Spack when it reads the DB multiple times, but the DB has not been
modified between reads (which is nearly all the time).

- [x] Add a file containing a unique uuid that is regenerated at database
    write time. Use this uuid to suppress re-parsing the database
    contents if we know a previous uuid and the uuid has not changed.

- [x] Fix mutable_database fixture so that it resets the last seen
    verifier when it resets.

- [x] Enable not rereading the database immediately after a write. Make
    the tests reset the last seen verifier in between tests that use the
    database fixture.

- [x] make presence of uuid module optional
2020-03-20 17:05:51 -07:00
Patrick Gartung
e2125c26ce Buildcache: add unit tests for normalized path functions in relocate.py (#15607) 2020-03-20 16:54:27 -05:00
Ryan Mast
76c9e6d871 fix: change typo dependnecies to dependencies (#15602) 2020-03-20 16:02:01 -05:00
Ryan Mast
dc5c73968f swig: add version 4.0.1 (#15603) 2020-03-20 16:01:45 -05:00
Adam J. Stewart
64737e0632 py-torchtext: add new package (#15604) 2020-03-20 16:01:18 -05:00
Matthias Maiterth
42db143587 freeipmi: Initial commit (#15576)
* freeipmi: Initial commit

Added freeipmi package. Configure and build work fine, install only as root,
thus added warning and added reference to issue #4432 .

* freeipmi: fixed change requests
2020-03-20 14:51:51 -05:00
Benjamin Fovet
74ba247839 Add gmsh v4.5.4 with new options (#15591)
* Add gmsh v4.5.4 with new options

This adds OpenCASCADE as an alternative to the oce package.
A new variant 'privateapi' is added to enable the gmsh private API.

* Make oce conflict with opencascade in gmsh
2020-03-20 14:51:30 -05:00
Benjamin Fovet
d3fafaa868 Add Ceres Solver v1.14.0 with new variants (#15597)
* Add Ceres Solver version 1.14.0

* Add variants for Ceres Solver
2020-03-20 14:51:01 -05:00
Carson Woods
c45644afaa Add 33.2.1 version with checksum to lua-luaposix (#15600) 2020-03-20 14:50:07 -05:00
Adam J. Stewart
70577e4fd7 py-sentencepiece: add new package (#15601) 2020-03-20 14:42:54 -05:00
Dan Lipsa
9c45c44738 Add version 5.8 and fix sqlite+column_metadata mismatch. (#15450) 2020-03-20 15:26:41 -04:00
Greg Becker
75fafcece9 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:22:32 -07:00
Michael Kuhn
545fae8407 spack checksum: Use package's fetch_options (#15481)
This makes sure that a package's fetch_options are used when fetching
new versions to checksum. This allows working around problems with
slow servers or those requiring a cookie to be set.
2020-03-20 12:11:42 -07:00
eugeneswalker
2f8ff722a9 tau: add dependency on hwloc (#15589) 2020-03-20 11:44:03 -07:00
Adam J. Stewart
3f4d300c84 sentencepiece: add new package (#15596) 2020-03-20 13:39:39 -05:00
Adam J. Stewart
6f3983b1c7 py-dgl: add new package (#15594) 2020-03-20 12:42:24 -05:00
Benjamin Fovet
e66a7530a1 Add NLopt version 2.6.1 (#15595) 2020-03-20 12:42:01 -05:00
Kevin Manalo
3b70c932aa papi: add version 6.0.0 (#15590) 2020-03-20 10:08:54 -07:00
Dr. Christian Tacke
cf45d38d24 root: Add version 6.20.{00,02} (#15487)
* Add version 6.20.{00,02}, don't yet mark it preferred
* It needs zstd
* It needs numpy (at least for 6.20.00:6.20.03)
* Reorder python dependencies a bit

* Add mlp variant, default False
  Older versions always include mlp, so no conflicts there.
* Disable tmva, because it needs mlp
* tmva needs mlp, so add conflict
2020-03-20 16:55:48 +00:00
Dr. Christian Tacke
03945c2541 Show the packaga name for a missing patch sha256 (#15441)
When a patches sha256 is missing, also show the
packagename, so that analyzing is easier.
2020-03-20 11:39:04 -05:00
Matthieu Dorier
d14a6e6bc7 Added two new versions of spdlog (#15586) 2020-03-20 09:19:06 -05:00
darmac
5f63fc5316 add new package: glusterfs (#15565)
* add new package: glusterfs

* fix list_depth for url

* remove list_depth

* add list_url for glusterfs
2020-03-20 09:18:24 -05:00
darmac
6cccce4932 add new package lksctp-tools (#15564)
Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-03-20 10:11:12 +01:00
Adam J. Stewart
03a88a2d3f py-decorator: added v4.4.2 (#15581) 2020-03-20 10:10:19 +01:00
Adam J. Stewart
b4f1f42e4f py-networkx: add 2.4 (#15582) 2020-03-20 10:09:48 +01:00
Adam J. Stewart
9a71a76461 py-tfdlpack: add new package (#15583) 2020-03-20 10:08:54 +01:00
Hadrien G
fdf363eaad acts-core: added v0.18, updated boost dependency (#15584) 2020-03-20 10:06:45 +01:00
Andreas Baumbach
3f83d4d8f5 htop: add missing python build dependency (#15585) 2020-03-20 10:05:30 +01:00
Kevin Huck
625bf187d2 perfstubs: added new package (#15547) 2020-03-20 09:41:36 +01:00
Andrew Gaspar
e2cf6f5b1b Improvements to Rust's Installation (#15395)
* Add sources and resources for each version of Rust

* install bootstrapping compiler into stage

* Add libgit2

* Install bootstrapping compiler correctly

* implement full rust bootstrap

* Remove support for Rust pre-1.14

Also add lots of comments

* Support only Rust 1.17 and newer

* Remove < 1.23 versions of Rust

* Change the layout of rust_releases for maintainability

* Remove LLVM variant

* Address flake8 issues

* Make libgit2 curl variant default False, conflict 0.28 and newer

* Remove binutils dependency

* Add ARM64 while we're at it

* flake8

* use the 'python' routine rather than relying on the correct python to be picked up
2020-03-19 22:57:41 -05:00
darmac
a89c5b36f0 add new package: bcache (#15563)
* add new package: bcache

* add depends: gettext for libintl
2020-03-19 22:57:04 -05:00
darmac
ce7cd7a5ab add new package: libiscsi (#15579) 2020-03-19 22:35:59 -05:00
Nithin Senthil Kumar
b522296a5a Update MVAPICH2 package for 2.3.3 release (#15578)
Co-authored-by: senthilkumar.16 <senthilkumar.16@nowlab.cse.ohio-state.edu>
2020-03-19 20:59:00 -05:00
Greg Becker
e5f8b093a9 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-19 15:11:50 -07:00
Teodor Nikolov
a61c53a5c9 cosma: added package at v2.0.2 (#15497)
* [new package] COSMA

* Use virtual dependencies
2020-03-19 14:50:12 -05:00
Jordan Ogas
f9e58a52da add charliecloud/0.14; remove umoci/skopeo; remove builder variant (#15573)
* add charliecloud/0.14; remove umoci/skopeo; remove builder variant

* fix typo

* add maintainer; add explicit config doc options; add py-requests as run dependency

* add autoconf build dependencies
2020-03-19 14:49:11 -05:00
Kai Germaschewski
b583b0e112 petsc fix hdf5 (#15572)
* petsc: add checksum for 3.12.4

* petsc: constrain hdf5 to <= 1.10.x

Current petsc will error when being build with hdf5 1.12, so this ensures that
a compatible hdf5 will be used. Fix suggested by @balay.
2020-03-19 11:42:19 -05:00
darmac
ef68d1f5df add new package: ntirpc (#15561) 2020-03-19 11:22:03 -05:00
darmac
8142b2dc6b add new package: yarn (#15562) 2020-03-19 11:21:37 -05:00
Yannik Stradmann
bfa72ed926 Add package: py-deprecated (#15571)
https://github.com/tantale/deprecated
2020-03-19 11:15:19 -05:00
Todd Gamblin
3255eaba0d refactor: spack.package.possible_dependencies() handles virtuals
- [x] move some logic for handling virtual packages from the `spack
  dependencies` command into `spack.package.possible_dependencies()`

- [x] rework possible dependencies tests so that expected and actual
  output are on the left/right respectively
2020-03-19 09:00:40 -07:00
Todd Gamblin
7cfa497912 bugfix: spack.package.possible_dependencies() should return virtuals
`spack.package.possible_dependencies()` was forgetting to pass the
`visited` dict to recursive calls; this fixes it
2020-03-19 09:00:40 -07:00
Michael Kuhn
0b1b8c3936 openssl: added v1.1.1e and v1.0.2u (#15568) 2020-03-19 15:34:18 +01:00
darmac
363cf9f9b1 update attr version to 2.4.48 (#15535)
* update attr version to 2.4.48

* attr: remove redundant make() in install()
2020-03-19 09:24:35 -05:00
Toyohisa Kameyama
a3cb1b8e7e amdblis + blis: fix spack info and libs query (#15566) 2020-03-19 12:28:18 +01:00
Adam J. Stewart
14e2c42bce py-matplotlib: add 3.2.1 (#15560) 2020-03-18 22:58:39 -05:00
Patrick Gartung
8bffa57ac4 Buildcache: fix relocation of binaries with relative rpaths (#15558) 2020-03-18 22:37:09 -05:00
Mark W. Krentel
69231c7d18 hpctoolkit: restore binutils 2.34 for master (#15556)
Hpctoolkit master was recently updated to test for and allow old
binutils <= 2.33.1 and/or new binutils 2.34.  Older hpctoolkit up to
2030.03.01 will forever require :2.33.1.

Adjust the libunwind dependency for safety with the current
concretizer.
2020-03-18 22:19:25 -05:00
Axel Huebl
7bcc41018f Split: Fabtest/libfabric (#15557)
Fabtests provides runtime analysis tools and examples of libfabric.

As with other projects that are tightly version-bound, e.g.
`py-adios` and `adios`, the fact that releases stem from the same
repo does not imply they should be the same package.

Remove resources, which complicate the libfabric build, and update
the fabtests package accordingly.
2020-03-18 18:04:01 -07:00
Kai Germaschewski
3df712a385 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-18 16:41:18 -07:00
Kelly (KT) Thompson
1bcc80ec5d Trilinos: Add more variants (~netcdf ~matio ~glm) (#15483)
* Trilinos: Add more variants

+ Provide three new variants to allow building trilinos without netcdf, matio,
  or glm.
+ No change to defaults.

* Fix style issue.
2020-03-18 17:05:51 -05:00
Neil Flood
432bdeee85 Tuiview movetogithub (#15498)
* py-tuiview: Source has moved to github

* py-tuiview: Explicitly require +python on gdal dependency

* py-tuiview: Versions up to 1.1.99 are qt4 only

* py-tuiview: Add version 1.2.6, which is qt5 only

* Explicit version range on gdal dependency
2020-03-18 17:05:05 -05:00
Satish Balay
6a51d540f1 petsc@3.7 fix dependency of superlu-dist@5.1.3 (#15551) 2020-03-18 17:04:38 -05:00
Adam J. Stewart
51f8744ab7 py-horovod: set appropriate build env vars (#15548)
* py-horovod: set appropriate build env vars

* mxnet: add maintainer

* py-horovod: fetch git submodules

* py-torch: fix CUDA conflicts
2020-03-18 17:01:20 -05:00
ktsai7
77b11433b3 modified spackage for flecsi and cinch (#15555) 2020-03-18 15:46:29 -06:00
gauthier12
ff29599578 adol-c:updating sources location (#15532)
* adol-c:updating sources location

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-18 15:13:57 -05:00
Sinan
3bcb5b3a59 package/QGIS: fix cmake/FindPyqt.py (#15455)
* fix cmake/FindPyqt.py

* apply patch

* generalize patch

* rename patch

* fix typo

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@github>
2020-03-18 13:19:46 -05:00
Sinan
056fc99676 Use python extend_path as pyqt sip fix (#15297)
* try extend path to solve PyQt5.sip not found issue

* disable private sip installation in sippackage class

* undo manual PyQt5 dir creation in py-sip site-packages dir

* fix typo

* fix typo

* also apply fix to PyQt4

* tidy up

* flake8 and tidy up

* tidy and undo hardcoding of python_include_dir

* replace hardcoded python inc dir

* fix minor issues

* rethink include dir variable name

* improve style

* add new versions

* implement new sip setup to qsci installation

* set sip-incdir correctly for the new setup

* setup extend_path thing before qsci python bindings

* take care of conflict

* flake8

* also extend for PyQt4

* improve style

* improve style

* SipPackage build sys should depend on py-sip

* consolidate extend_path fixes into SipPackage

* fix typo

* fix bugs

* flake8

* revert sip doc to pre-resource setup

* import os module

* flake8

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-03-18 13:19:27 -05:00
Nick Booher
156b59c2f1 revbayes: Update pre-build process (#15485) 2020-03-18 13:18:45 -05:00
Benjamin Tovar
8cdd78cd1d Cctools 7.1.0 (#15506)
* update to 7.1.0

* adds gettext as dependency (needed to link with python)

* disable python2 or python3 as needed
2020-03-18 13:14:45 -05:00
darmac
9372783de6 add new package: acl (#15514) 2020-03-18 13:12:40 -05:00
darmac
b52b082627 add new package: userspace-rcu (#15515) 2020-03-18 13:12:02 -05:00
Greg Sjaardema
73321dd3ea CGNS: Version update (#15523)
* CGNS: Version update

The CGNS library has several new versions.   There was a format-changing change in 3.4.0 which was removed for 3.4.1.  The change was then added again and released with a change to the major version (4.0.0).  Note that 4.0.0 should be close to the functionality of 3.4.0.

* CGNS: Add shared variant

Added the `shared`variant to make the CMake build correctly pick up the RPATH settings.
2020-03-18 13:09:28 -05:00
darmac
c3434e230a update util-linux to version: 2.33:2.35.1 (#15529) 2020-03-18 13:04:51 -05:00
Toyohisa Kameyama
530e864671 triangle: add X11 dependency. (#15533) 2020-03-18 13:03:03 -05:00
Toyohisa Kameyama
0fce7df1e9 xsetpointer: fix wrong dependency type. (#15534) 2020-03-18 13:02:35 -05:00
gauthier12
cfc5f3caec adding the fortran option for hdf5 dependency for comptatibility with petsc requirement (#15536) 2020-03-18 13:01:04 -05:00
Toyohisa Kameyama
209ec03f7e xts: add some dependencies. (#15537) 2020-03-18 13:00:28 -05:00
Robert Kalescky
6bb8b92bc3 Remove trailing newline. (#15539) 2020-03-18 12:59:52 -05:00
Robert Kalescky
4d449790d0 r-openssl requires C99. (#15541) 2020-03-18 12:59:27 -05:00
Adam J. Stewart
8ad366a978 py-numpy: add 1.18.2 (#15546) 2020-03-18 11:50:12 -05:00
Amjad Kotobi
6993b81bfd Add package anaconda3 (#15404) 2020-03-18 11:49:50 -05:00
Brian Van Essen
57ad02ad43 Added a package for the DiHydrogen distributed linear algebra library. (#15426)
* Added a package for the DiHydrogen distributed linear algebra library.

* Updated recipe to provide cuda architecture constaints.

* Addressed reviewer comments

* Fixed flake 8
2020-03-18 11:46:49 -05:00
Nichols A. Romero
e59b506506 QMCPACK Update March 2020 (#15511)
* Clean-up description of variants.

* Support AFQMC with CUDA.
2020-03-18 11:21:48 -05:00
Axel Huebl
958f26073e openPMD-api: HDF5 1.12.0 Support (#15530)
Fix API breakage in HDF5 1.12.0 for released versions.
2020-03-18 06:47:01 -07:00
Jim Galarowicz
586609102b Previous qt package file changes broke the openspeedshop gui build. (#15471)
* Previous qt changes broke the openspeedshop gui build.  This puts back the changes that caused the breakage.

* Update the qt version to be more robust.

Co-authored-by: Galarowicz, James <jgalarowicz@newmexicoconsortium.org>
2020-03-18 14:45:17 +01:00
eugeneswalker
847d5d3459 update checksum for intel-tbb@2020.1 (#15528) 2020-03-17 18:45:56 -07:00
Greg Sjaardema
787f89b7db SEACAS: Add versions 2020-03-16 and 2020-01-16 (#15525) 2020-03-17 18:02:31 -07:00
Sergey Kosukhin
06bf93b270 MPICH: optional libxml2 support; NAG patches (#15235)
* Add patches when building with NAG
* Make libxml2 support optional. Also include conflict for
  @:3.2~hydra+libxml2 since @:3.2~hydra does not require libxml2
  support
* Add '--disable-silent-rules' to get more verbose output during
  the build
2020-03-17 11:41:47 -07:00
Patrick Gartung
be8841cbc5 Remove PatchelfError and change patchelf error message to a warning. (#15518) 2020-03-17 10:49:24 -05:00
wspear
304f0e9ef1 Corrected compiler filtering for TAU makefiles (#15342)
* Implemented working file filtering to replace spack compiler wrapper with real compiler.

* Using string=True instead of re.escape. Using self.prefix.lib instead of appending /lib.

Co-authored-by: Wyatt Spear <wspear@cs.uoregon.edu>
2020-03-17 08:38:53 -07:00
Tomoki, Karatsu
c2e0ee6383 geant4: Removed unnecessary definition of xerces-c. (#15513) 2020-03-17 10:31:31 +00:00
Seth R. Johnson
05d0c7b477 Update and exetend VecGeom (#14520)
* Add new vecgeom versions, add cuda support, automate target options

* Add ROOT, GDML, and external VecCore support to VecGeom

* Address reviewer comments

* Update vecgeom for CUDA

* Update versions
2020-03-17 10:18:40 +00:00
darmac
402d89afa2 nfs-utils: added package at v2.4.2 (#15491) 2020-03-17 08:49:35 +01:00
Massimiliano Culpo
e3f97b37e6 Module files won't use CPATH by default, but language specific vars (#14749)
fixes #11555

Every path in CPATH is equivalent to a -I path to the compiler,
while every path in *_INCLUDE_PATH is equivalent to -isystem.
The latter avoids the noise due to warnings coming from 3rd party
libraries that a project depends on.

Added INCLUDE env variable (Intel Fortran, .mod files)
2020-03-17 08:36:56 +01:00
eugeneswalker
c92847a30c cap binutils version @:2.33.1 due to build failures with 2.34 (#15504) 2020-03-16 17:47:24 -07:00
Patrick Gartung
e48d24ee45 Warn only if link target is not relative and outside of the install prefix (#15512) 2020-03-16 18:43:11 -05:00
Seth R. Johnson
c9a715b190 veccore: added package at v0.6.0 (#15472) 2020-03-16 20:55:16 +01:00
Patrick Gartung
3029dde7ec When replacing path text in ELF binaries do not include null byte padding in search string (#15508) 2020-03-16 14:49:55 -05:00
Seth R. Johnson
a8706cc89b CMakePackage: convert variants to CMake arguments (#14376)
Add a 'define_from_variant` helper function to CMake-based Spack
packages to convert package variants into CMake arguments. For
example:

  args.append('-DFOO=%s' % ('ON' if '+foo' in self.spec else 'OFF'))

can be replaced with:

  args.append(self.define_from_variant('foo'))

The following conversions are handled automatically:

* Flag variants will be converted to CMake booleans
* Multivalued variants will be converted to semicolon-separated strings
* Other variant values are converted to CMake string arguments

This also adds a 'define' helper method to convert any variable to
a CMake argument. It has the same conversion rules as
'define_from_variant' (but operates directly on values rather than
requiring the user to supply the name of a package variant).
2020-03-16 11:41:19 -07:00
Erik Schnetter
55d5adfecf silo: depends on hdf5@:1.10.999 (#15495)
Silo does not build with HDF5 1.12.
2020-03-16 19:10:06 +01:00
Patrick Gartung
17e4df1e41 Buildcache: Install into non-default directory layouts (#13797)
* Buildcache: Install into non-default directory layouts

Store a dictionary mapping of original dependency prefixes to dependency hashes

Use the loaded spec to grab the new dependency prefixes in the new directory layout.

Map the original dependency prefixes to the new dependency prefixes using the dependency hashes.

Use the dependency prefixes map to replace original rpaths with new rpaths preserving the order.
For mach-o binaries, use the dependency prefixes map to replace the dependency library entires for libraries and executables and the replace the library id for libraries.

On Linux, patchelf is used to replace the rpaths of elf binaries.
On macOS, install_name_tool is used to replace the rpaths and  dependency libraries  of mach-o binaries and the id of mach-o libraries.
On Linux, macholib is used to replace the dependency libraries of mach-o binaries and the id of mach-o libraries.

Binary text with padding replacement is attempted for all binaries for the following paths:
spack layout root
spack prefix
sbang script location
dependency prefixes
package prefix
 Text replacement is attempted for all text files using the paths above.

Symbolic links to the absolute path of the package install prefix are replaced, all others produce warnings.
2020-03-16 08:42:23 -05:00
Melven Roehrig-Zoellner
0301ec32b4 tixi: added package at v3.0.3 (#15490) 2020-03-16 09:02:10 +01:00
Erik Schnetter
77e845d53c swig: added v4.0.1 (#15496) 2020-03-16 08:45:25 +01:00
Erik Schnetter
1e547f58ab ncurses: added v6.2 (#15494) 2020-03-16 08:43:21 +01:00
Erik Schnetter
410ad0b158 cmake: added v3.16.5 (#15492) 2020-03-16 08:42:49 +01:00
Matthieu Dorier
d24c64c936 unqlite: added package at v1.1.9 (#15501) 2020-03-16 08:33:42 +01:00
Erik Schnetter
96a037adf7 gcc: Don't apply macOS 9.2.0 patch for 9.3.0 (#15493)
The patch neither applies nor is necessary.
2020-03-15 15:43:23 -07:00
Tim Haines
471f23e456 Limit binutils to <= 2.33.1 (#15470)
HPCToolKit <= 2020.03.01 does not build with binutils 2.34.
2020-03-14 07:45:00 -05:00
Hans Pabst
38d04e29eb LIBXSMM 1.15 (#15482)
* LIBXSMM 1.15

* LIBXSMM: renamed development version according to the related branch on GitHub.
2020-03-13 14:44:26 -05:00
Adam J. Stewart
262a69c0a9 py-astpretty: add new package (#15484)
* py-astpretty: add new package

* pkg_resources needed at run-time
2020-03-13 14:40:58 -05:00
Michael Kuhn
14441e00dc package: Add fetch_options variable (#15317)
PR #15212 added a new connect_timeout option that can be overridden
using fetch_options but had to specified per-version. This adds a new
per-package variable that can be used to override fetch_options for
all versions in the package. This includes connect_timeout as well
as 'cookie' (e.g. for the jdk package).

Packages can combine package-level fetch_options with per-version
fetch_options, in which case the version fetch_options completely
override the package-level fetch_options.

This commit includes tests for the added behavior.
2020-03-13 11:41:19 -07:00
Melven Roehrig-Zoellner
7b00712fff pgi: add missing paths in setup_run_environment (#15480) 2020-03-13 13:07:35 -05:00
Thomas Kluyver
27bd4a5cdd Add py-h5glance versions 0.5 & 0.6 (#15461)
* Add py-h5glance versions 0.5 & 0.6

* List versions newest to oldest
2020-03-13 08:05:31 -05:00
Hadrien G
a3c319979b Add new ACTS version (#15479) 2020-03-13 12:57:32 +00:00
Adam J. Stewart
d1bf433d19 gitignore: pytest cache directory (#15476) 2020-03-13 09:39:34 +01:00
Hector
7ddd84ac14 Add source highlight package (#15473)
* add GNU source-highlight package

* fix flake8

* Allows the package to download from GNU mirrors
2020-03-12 19:26:45 -05:00
Michael Kuhn
9806149145 gcc: Add 9.3.0 (#15469) 2020-03-12 16:10:21 -05:00
noguchi-k
fddca6312c cpprestsdk: fix common error and, use boost@1.69.0 or lower (#15463) 2020-03-12 16:09:07 -05:00
Tamara Dahlgren
f2a13af43e testing: increase installer coverage (#15237) 2020-03-12 21:20:20 +01:00
David Böhme
b8064df495 Add Caliper v2.3.0 (#15468) 2020-03-12 13:37:15 -05:00
Amjad Kotobi
ed5b10d11f Add package jblob-3.0 (#15400) 2020-03-12 13:35:30 -05:00
Joe Koning
d87f09cc5e Change py-merlinwf to py-merlin (#15453)
* Change py-merlinwf to py-merlin to match PyPi.
Change py-merlin to py-merlin-info.

Move to py-merlin_info.

Add py-merlin-info back in.

* Update dependent packages for the new merlin name.

* Remove non-working pyre and the associated packages, exchanger,
py-pythia and py-mlerin-info from citcoms.

* Remove blank line.
2020-03-12 13:27:02 -05:00
Bryce Allen
6887cb3da4 pfunit: add max_array_rank=(int) variant (#15348)
* pfunit: add max_array_rank=(int) variant

* pfunit: flake8 line length fixes
2020-03-12 10:58:18 -06:00
Zhiyi Wu
d95766756c Update plumed 2.5.4 and 2.6.0 (#15462)
Co-authored-by: zhiyiwu <zhiyi.wu@gtc.ox.ac.uk>
2020-03-12 10:47:26 -06:00
Thomas Gruber
e916a9424c likwid: add compiler selection for ARM and POWER architecture (#14183)
Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-03-12 14:44:43 +01:00
Jeffrey Salmond
ad1a28ee48 plumed: add cython as dependency (#15460) 2020-03-12 12:01:52 +01:00
Massimiliano Culpo
59b6822a47 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-12 09:21:19 +01:00
Massimiliano Culpo
a22d52a67d Minor updates to CI configuration (#15458)
* Check on Python versions uses action/checkout@v2
* Update the apt cache before installing system packages
2020-03-12 08:19:42 +01:00
darmac
f4a5eb2b6d add new package: lmbench (#15457)
* add new package: lmbench

* refine LDFLAGS append call
2020-03-11 22:49:22 -05:00
Nick Booher
8bdbd96e68 revbayes: Update URLs and hashes for old archives (#15451)
* revbayes: Update URLs and hashes for old archives

* Switch to url_for_version

* Fix whitespace
2020-03-11 22:04:59 -05:00
Les Kurz
99e465663a Update package.py for HDF5 1.12.0 release (#15430)
* Update package.py

* Update package.py

* add upper bounds to production config_option

* fix config_options

* Fix mistaken changes.
2020-03-11 20:08:49 -05:00
darmac
77434c24a8 add new package: php (#15435) 2020-03-11 19:36:23 -05:00
Daryl W. Grunau
3e8f873b03 cpio: icc -no-gcc (#15446)
Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2020-03-11 19:35:10 -05:00
Michael Kuhn
e01817cb15 binutils: Add missing texinfo dependency (#15444) 2020-03-11 19:34:24 -05:00
darmac
a9a59ea3b4 add new package: keyutils (#15433) 2020-03-11 19:29:31 -05:00
Stephanie Brink
6af8e19b2d add hatchet python package (#15428) 2020-03-11 19:23:32 -05:00
Dr. Christian Tacke
12940f3448 libfabric@1.9.1: Add fabtests (#15440)
The test utils for the new version 1.9.1 are missing.
Add them.
2020-03-11 14:51:35 -05:00
Anthony Scemama
83584afa35 Package for the resultsFile Python module (#15088)
* Added resultsFile package

* Added comments

* Fixed PEP8

* Added Python3 package

* Removed py-setuptools
2020-03-11 14:44:36 -05:00
rvinaybharadwaj
87e69eed1c Horovod (#15380) 2020-03-11 12:00:02 -06:00
Tamara Dahlgren
20c77cade5 bugfix: resolve undefined source_pkg_dir failure (#15339) 2020-03-11 11:39:23 +01:00
Greg Becker
299fa6b5ca fetch_strategy: remove vestigial code (#15431) 2020-03-11 11:24:38 +01:00
Neil Flood
9b114c486f kealib: moved to github, added v1.4.12 (#15436) 2020-03-11 11:06:18 +01:00
Hector
6d8cd446c5 Add valgrind variant to petsc (#15427)
* Add PETSc valgrind dependency

* Remove +debug on valgrind dependency

* enh variant description
2020-03-10 20:41:00 -05:00
Seth R. Johnson
8ac06ece3d Fix OpenBLAS 0.2 build, 0.38+ Intel builds, and variant name (#15419)
* Remove ARCH argument in OpenBLAS < 0.3.0

* Fix Intel OpenBLAS that uses lapack 0.3.9

* Improve variant name consistency

see https://github.com/spack/spack/issues/15239
2020-03-10 16:40:03 -05:00
Mathias Anselmann
fc78456547 gcc: backporting fix for glibc 2.31 (#15403)
* backporting fix for building gcc >= 8.1.0 and gcc <= 9.2.0 with binutils 2.31

* removed trailing whitespace
2020-03-10 16:27:07 -05:00
Nisarg Patel
4ef0442a01 fix static mumps build error - Added a space at the end of ar vr for the static build to run successfully (#15407) 2020-03-10 16:23:41 -05:00
Toyohisa Kameyama
94b686e32b libxpresent: Add some dependencies. (#15417)
* libxpresent: Add some dependencies.

* Change *proto dependency type from build to link.
2020-03-10 16:22:24 -05:00
Toyohisa Kameyama
9fba110372 libxpresent: Add some dependencies. (#15417)
* libxpresent: Add some dependencies.

* Change *proto dependency type from build to link.
2020-03-10 16:22:04 -05:00
Tomoki, Karatsu
03c684954e r: Lower optimization level when using Fujitsu compiler@4.1.0. (#15418) 2020-03-10 16:21:14 -05:00
Dr. Christian Tacke
6993a82cb4 cryptsetup: Add pkgconfig dependency (#15422) 2020-03-10 16:18:59 -05:00
Elsa Gonsiorowski, PhD
9debb7e1b6 SCR: build with components (#14931)
* scr: add develop, legacy branches; version 2.0.0

squash! scr: add develop and legacy versions

* filo: package for SCR component

* spath: package for SCR component

* axl: update for versions 0.3 and 0.2

* scr: build with components

* spath: structure of +mpi if/else

* 👌 capitalization of ecp-veloc

* scr: branches are always greater than any version
2020-03-10 15:27:41 -05:00
broderickpt
c4c6accace contrib-spiral: submit SPIRAL package recipe and HCOL package recipe … (#15188)
* contrib-spiral: submit SPIRAL package recipe and HCOL package recipe (extension package for SPIRAL) to spack

* contrib-spiral: fix flake8 complaints for spiral & hcol

* contrib-spiral: Revisions to package recipes to address comments

* contrib-spiral: remove unecessary 'test' function

* contrib-spiral: update hcol package to install in <prefix>/namespaces/packages/hcol

* contrib-spiral: don't import os to hcol

* contrib-spiral: tweak hcol package recipe
2020-03-10 13:07:53 -05:00
Greg Becker
bbbee6700b bugfix: fix install_missing_compilers option bug from v0.14.0 (#15416)
* bugfix: ensure bootstrapped compilers built before packages using the compiler
2020-03-10 10:35:20 -07:00
Christoph Junghans
577860761b decompressor: add support for bz2 (#15424) 2020-03-10 10:46:45 -06:00
Sergey Kosukhin
7118e24664 Parallel-netcdf: update package. (#15359)
* Parallel-netcdf: update package.

* Add a temporary patch for version 'develop'.

* Rename version 'develop' to 'master'.

* Drop the patch for 'master'.
2020-03-10 11:29:57 -05:00
Seth R. Johnson
21634e805e libfabric: added v1.9.1 (#15405) 2020-03-10 17:09:46 +01:00
Christoph Junghans
7744070787 gromacs: remove simd variants (#13636) 2020-03-10 09:08:10 -06:00
TZ
48f8f0ec58 likwid: added v5.0.1 (#15421)
includes fixes for likwid-mpirun, better support for ARM and POWER, 
other bugfixes.

For full support of ARM and POWER, #14183 has to be merged, too.

Added TomTheBear as maintainer. He is the current main developer of
LIKWID.
2020-03-10 16:03:14 +01:00
Melven Roehrig-Zoellner
ebe7590310 bazel: add missing dependency on zip (#15402) 2020-03-10 10:18:29 +01:00
Mathias Anselmann
da677b3cb8 update binutils to 2.34 (#15401) 2020-03-10 10:15:31 +01:00
Justin S
b86aa4ec18 eagle: new package at v1.1.2 (#15409) 2020-03-10 10:05:34 +01:00
Tim Haines
65b131f373 Ignore Eclipse files and folders (#15413) 2020-03-10 09:58:40 +01:00
Howard Pritchard
f87dfb9828 openmpi: add version 4.0.3 (#15414)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2020-03-10 09:01:02 +01:00
Patrick Gartung
c7dda38826 Revert to gzip as the default buildcache compression as bzip2 is not always available. (#15412)
* Revert to gzip as the default buildcache compression as bzip2 is not always available.

* Flake8
2020-03-09 16:46:54 -05:00
ktsai7
fd69994c68 added cmake_args (#15411) 2020-03-09 14:07:11 -06:00
TZ
3f69cc9ec8 Gromacs: new version 2020.1 (#15399) 2020-03-09 11:35:54 -06:00
Toyohisa Kameyama
c919a7e302 exiv2: add zlib and expat dependency. (#15396) 2020-03-09 10:31:20 +01:00
Toyohisa Kameyama
c783493ace fast-global-file-status: add openssl dependency. (#15398) 2020-03-09 10:29:02 +01:00
Stephen McDowell
2beefc6bfe eigen variants have been removed (#15392)
* eigen variants have been removed

ref: https://github.com/spack/spack/pull/15357

* opencv ^eigen is ('build', 'run') dependency
2020-03-09 09:35:31 +01:00
Todd Gamblin
49ec260a9a bugfix: installer.py shouldn't be executable (#15386)
This is a minor permission fix on the new installer.py introduced in #13100.
2020-03-07 23:48:18 -08:00
Adam J. Stewart
6f8d1b41d0 gnupg: add 2.2.19, add missing pinentry dep (#15390) 2020-03-07 17:00:14 -06:00
Adam J. Stewart
cd4530ca1f libgcrypt: fix macOS tests (#15389) 2020-03-07 16:43:38 -06:00
Adam J. Stewart
b385ba0aa9 libgpg-error: add 1.37 (#15388) 2020-03-07 16:43:23 -06:00
Adam J. Stewart
a1e4b72794 pinentry: add new package (#15387) 2020-03-07 16:26:56 -06:00
Sinan
4e10eb08a9 new package: GunRock (#15383)
* new package: GunRock

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

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

* improve

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Sinan81 <Sinan81@github>
2020-03-07 13:31:29 -06:00
Massimiliano Culpo
b444fd25bb ArchSpec: fix semantics of satisfies when not concrete and strict is true (#15319) 2020-03-07 13:58:33 +01:00
Peter Scheibel
697719c181 Only use stable versions for public mirror (#15100)
* add --skip-unstable-versions option to 'spack mirror create' which skips sources/resource for packages if their version is not stable (i.e. if they are the head of a git branch rather than a fixed commit)

* '--skip-unstable-versions' should skip all VCS sources/resources, not just those which are not cachable
2020-03-07 13:38:08 +01:00
Simon Pintarelli
9fd3b2be89 sirius: add versions 6.4.4, 6.5.0 (#15374)
- new versions 6.4.4, 6.5.0
2020-03-06 18:32:23 -06:00
Andrew W Elble
5b44a65881 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-06 16:29:01 -08:00
George Hartzell
5965a91880 New package: bat (#15345)
* New package: bat

Add package for bat:

     A cat(1) clone with wings.

* Update copyright date

* Embiggen comment re build env settings

Provide a bit more explanatory text about why setup_build_environment
needs to set LLVM_CONFIG_PATH and LIBCLANG_PATH.

Co-authored-by: George Hartzell <ghartzell@audentestx.com>
2020-03-06 18:12:31 -06:00
Dr. Christian Tacke
ce287bccf8 flatbuffers: Allow building shared libraries (#15375)
Added a shared variant, that switches between shared and
static library building, like with most cmake packages.
2020-03-06 12:16:30 -06:00
iarspider
6412b9e71a Add extra version of py-widgetsnbextension (#15372) 2020-03-06 11:21:33 -06:00
Robert Blake
cd38e87eef New package: gengetopt, tool for C command line parsers. (#15367)
* New package: gengetopt, tool for C command line parsers.

* Adding url for `spack version` and `spack checksum`
2020-03-06 10:59:08 -06:00
Massimiliano Culpo
58e57a6986 eigen: updated url to point to gitlab (#15357)
* eigen: updated url to point to gitlab

fixes #13890

Eigen migrated from bitbucket to gitlab

* eigen: simplified package (no dependencies other than stdlib)

* Added TODO list for future improvements
2020-03-06 15:53:24 +01:00
Mark W. Krentel
441340771d libunwind: remove version 2018.10.12, add stable branch (#15316)
* libunwind: remove version 2018.10.12, add stable branch

Finish cleaning up the libunwind version numbers.  The 2018.10.12
snapshot number didn't fit well with spack's ordering (my bad), and
1.4-rc1 is a near identical replacement.

Add a version for the 1.4-stable branch.

Add a variant for zlib compressed symbol tables (develop branch only).

Adjust packages caliper and hpctoolkit to adapt to the changes.

Add myself as maintainer.

* Flake

* Settle on renaming 'develop' to 'master' (to match the branch name)
and name the 'v1.4-stable' branch as '1.4-head'.  'stable' or
'1.4-stable' is a better name, but '1.4-head' (an infinity version)
sorts better.
2020-03-06 08:49:46 -06:00
Mathias Anselmann
8687ace8f9 Cscope: fix linking and update to v15.9 (#15358)
* explicitly link against libtinfo

* Update to v15.9

* fixed indentation

* fixed url definition

* added url vor current version again

* fixed indentation

* moving url_version to the bottom
2020-03-06 08:47:35 -06:00
Dr. Christian Tacke
83778f009e munge: new version, local state path, misc (#15307)
* Add version 0.5.14
* Add variant to allow setting the localstatedir: See below
* Add bzip2 dependency
* Add myself to maintainers (I just think, I can care for
  this package)

About localstatedir:

munge has a server and a client.
They communicate via unix domain sockets.
This socket is in PREFIX/var.
This package provides the client, the server, and
development part (headers, libraries).

Let's assume one has the server part installed as a system
package.  This generally is a good idea, so that the server
gets started during boot. This means, that the socket is in
the system's /var.

If one now wants to use the client part (library!) via
spack, one has a problem: spack's munge looks in
SPACK-PACKAGE-PREFIX/var for the socket.

There needs to be a way to let the spack installed package
use the system's socket.

So add a variant to override the path during build:
localstatedir=/var.
2020-03-06 08:03:20 -06:00
iarspider
4391bb5f23 Update pycairo to 1.18.1 and fix dependencies (#15352)
* Update pycairo to 1.18.1 and fix dependencies

* Typo
2020-03-06 08:01:45 -06:00
Axel Huebl
c40915db05 openPMD-api: 0.11.0 (#15371)
Add the latest release of openPMD-api.
2020-03-06 11:20:31 +01:00
Chris Green
da5144793e Allow overrides for spack.config set() and override(). (#14432)
Allows spack.config InternalConfigScope and Configuration.set() to
handle keys with trailing ':' to indicate replacement vs merge
behavior with respect to lower priority scopes.

Lists may now be replaced rather than merged (this behavior was
previously only available for dictionaries).

This commit adds tests for the new behavior.
2020-03-05 19:25:01 -08:00
Tamara Dahlgren
b2e7e7edaa Recover coverage from subprocesses during unit tests (#15354)
* Recover coverage from subprocesses during unit tests
2020-03-05 16:54:29 -08:00
Adam J. Stewart
dd8afca9d8 Add Checksum for 1.4.1.4 Release (#15363)
* Add Checksum for 1.4.1.4 Release

Add checksum for 1.4.1.4 release.  Mark myself as maintainer.  List develop version.

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

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

* Update package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-05 17:28:42 -06:00
Adam J. Stewart
aa0ab13a73 Python: add 3.8.2 (#15365) 2020-03-05 17:02:13 -06:00
Adam J. Stewart
656d1ac5ab Update legion versions (#15364) 2020-03-05 16:28:35 -06:00
eugeneswalker
8cce884078 unifyfs: add patch to fix #15292 (#15315)
It was reported that UnifyFS had a bug with the --enable-mpi-mount
config option, which corresponds to the auto-mount variant. This bug
was fixed in the UnifyFS dev branch, however remains broken for the
0.9.0 version.

This adds a patch to the unifyfs package to fix the auto-mount
variant when installing with version 0.9.0.

This also removes the openssl dependency as unifyfs does not directly
depend on it. This was said to be a non-explicit dependency in #15258.
However, if it is needed, it is likely a non-explicit dependency of
one of unifyfs's dependencies and should be added there.

Fixes: #15292
2020-03-05 13:54:25 -08:00
Adam J. Stewart
da853a5daa lammps: add most recent stable release (#15335)
* lammps: add most recent stable release

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-03-05 15:19:18 -06:00
Patrick Gartung
820d147e08 Allow buildcaches keys to find public keys on the e4s mirror (#15361) 2020-03-05 15:15:40 -06:00
Adam J. Stewart
28a75a4c35 lastz: declare ch as type int (#15350) 2020-03-05 15:06:20 -06:00
Adam J. Stewart
fde1b2088a update maintainers for bmi, darshan, and margo (#15356)
Signed-off-by: Phil Carns <carns@mcs.anl.gov>
2020-03-05 15:00:52 -06:00
Axel Huebl
24e6155bac New package: fd-find (#15344)
* New package: fd-find

Add package for fd-find:

    A simple, fast and user-friendly alternative to 'find'.

* Update copyright date
2020-03-05 10:14:40 -08:00
Axel Huebl
3a8800b6b4 New package: ripgrep (#15343)
Add package for ripgrep:

    ripgrep is a line-oriented search tool that recursively searches
    your current directory for a regex pattern.  ripgrep is similar to
    other popular search tools like The Silver Searcher, ack and grep.
2020-03-05 10:14:18 -08:00
Adam J. Stewart
9940392c2b New package: opensubdiv (#15310)
* [opensubdiv] created stub for opensubdiv

* [opensubdiv] added homepage and description

* [opensubdiv] removed boilerplate

* [opensubdiv] working on dependencies and variants

* [opensubdiv] fixed syntax error

* [opensubdiv] defined spec

* [opensubdiv] added dev version

* [opensubdiv] building on CudaPackage

* [opensubdiv] always build with open gl and depends_on('gl')

* [opensubdiv] applying cuda flags

* [opensubdiv] worked on doc variant

* [opensubdiv] added some x11 libraries

* [opensubdiv] depends on glfw

* [opensubdiv] locating glew

* [opensubdiv] added openmp variant

* [opensubdiv] flake8 fixing

* [opensubdiv] fixed develop version name

* [opensubdiv] fixed description to not need @
2020-03-05 10:52:20 -06:00
Massimiliano Culpo
752092f46a Correct pytest.raises matches to match (#15346) 2020-03-05 11:16:02 +01:00
Massimiliano Culpo
d9626cca50 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-05 10:26:50 +01:00
Adam J. Stewart
9edf812745 py-matplotlib: add 3.2.0 (#15349) 2020-03-04 21:56:00 -06:00
Peter Scheibel
c5dc4a722e xgboost: add version 0.90 (#15321) 2020-03-04 18:19:03 -08:00
Axel Huebl
1757ec9eae New version of simplejson (#15325) 2020-03-04 20:34:06 -05:00
Adam J. Stewart
b813887585 ADIOS2: Cleanup, Development Branch Name (#15334)
* ADIOS2: Version `master`

Rename branch version to supported, real development branch `master`.
The old name is legacy Spack when alternative development branch
names were not yet supported.

* ADIOS: Simplify via spec Variable

use the already defined local variable `spec` to shorten
lines
2020-03-04 19:24:16 -06:00
Adam J. Stewart
136a4897b7 ADIOS2: Testing Depends on Python (#15336)
Add the python dependency and CMake hints when build with tests.
`spack install --tests=root adios2`
2020-03-04 19:23:12 -06:00
Patrick Gartung
e2b3d52999 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-04 19:21:15 -06:00
Adam J. Stewart
d7f84c738e Fixed the sha has for 1.3.3. (#15331) 2020-03-04 19:19:16 -06:00
Adam J. Stewart
1973d1c53e libfabric: default 1.8.1 (#15337)
Since 1.9.0 is broken for Darwin, which impacts many developers, and
the fix is still a RC, let's keep the previous release as default.

This avoids distruption for OSX developers and CI.
2020-03-04 19:11:54 -06:00
Peter Scheibel
cf7dbbf65c Remove DB conversion of old index.yaml (#15298)
Removed the code that was converting the old index.yaml format into
index.json. Since the change happened in #2189 it should be
considered safe to drop this (untested) code.
2020-03-04 16:39:10 -08:00
Patrick Gartung
3ea0e91533 use os.sep instead of null byte to pad replacement paths in binaries (#15338)
* use os.sep instead of null byte to pad replacement paths in binaries

* Prefix the pading os.sep's
2020-03-04 17:15:09 -06:00
Adam J. Stewart
8eda1db50f precice: Add version 2.0.1 (#15318) 2020-03-04 13:19:41 -06:00
Adam J. Stewart
60439a5040 pgi-19.10 update version (#15330) 2020-03-04 13:18:46 -06:00
Adam J. Stewart
3be3b2d0e3 gcc: Add 8.4.0 (#15323) 2020-03-04 13:18:02 -06:00
Adam J. Stewart
1ade506f54 Add extra version of py-contextlib2 (#15322) 2020-03-04 13:17:09 -06:00
Adam J. Stewart
5cfd862f47 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-04 13:16:42 -06:00
Christoph Junghans
32a0f3274f ecp-proxy-apps: version bump (#14680) 2020-03-04 10:45:23 -07:00
Sergey Kosukhin
b472c13803 Fix FCFLAGS handling for Autotools packages (#14788)
Spack's fflags are meant for both f77 and fc. Therefore, they must
be passed as FFLAGS and FCFLAGS to the configure scripts of
Autotools-based packages.
2020-03-03 13:13:38 -08:00
sknigh
370e7c211d intel-xed does not support python>3.7 (#15308) 2020-03-03 13:38:55 -06:00
sknigh
cec341594d Added UQTk package (#14801)
* added UQTk package

* Add missing expat dependency to uqtk
2020-03-03 12:50:20 -06:00
Mark W. Krentel
fddb3f291c elfutils: increase connect timeout (#15262)
Increase the connect timeout for elfutils to 60 sec.  Elfutils (and
bzip2) tar files are on sourceware.org which is often slow to respond.
2020-03-03 11:27:57 -06:00
Brian Van Essen
f83d98a62d Protobuf's cmake environment does not properly handle being exported (#15293)
and found when using the RelWithDebInfo build type.  Change protobuf
to only support Release and Debug build types.
2020-03-03 11:27:01 -06:00
Mathias Anselmann
d6b0cf75ed cherry-picking global ordinal type variant from https://github.com/spack/spack/pull/14215 and setting dealii to GO int, to make it compile again (#15288)
Co-authored-by: Andrey Prokopenko <andrey.prok@gmail.com>
2020-03-03 11:26:20 -06:00
Dr. Christian Tacke
c4237e4a10 fairlogger: add version, other improvements (#15300)
* @develop needs the full git repo to use "git describe"
  properly

* If not specifying the cxxstd variant, let cmake use its
  default

* Improve fmt dependencies: fairlogger < 1.6.2 does not
  work with fmt >= 6.

* Small other stuff
2020-03-03 11:24:37 -06:00
Patrick Schratz
71855707ef Update package.py (#15299) 2020-03-03 11:02:02 -06:00
Jennifer Herting
a237781c48 Created package glfw (#15296)
* Created stub

* added description and homepage

* added dependencies

* removed extra boilerplae

* switched to the pkgconfig provider
2020-03-03 11:01:29 -06:00
Sergey Kosukhin
2d1592cca7 OpenMPI: patch for NAG. (#15301) 2020-03-03 11:00:27 -06:00
Mathias Anselmann
518d1439c7 Suite sparse compilation fix for 5.7.0 and 5.7.1 (#15289)
Suite-sparse 5.7.0 and 5.7.1 need separate make and make install run to be able to compile, too
2020-03-03 12:06:58 +01:00
George Hartzell
dc4e43682c Tmux should look for tinfo in -ltinfo (#15282)
Just `depend_on('ncurses')`, pkgconfig seems to cause the right thing
to happen if the package is built +termlib or ~termlib (tested both
ways on a CentOS 7 system).

Additional details in: https://github.com/spack/spack/issues/15281

Tested by building all of the releases of tmux on a CentOS 7 box.
2020-03-03 09:12:06 +01:00
Dr. Christian Tacke
b43812c7c4 boost: Add "container" library (#14878)
"container" is partly a misnomer, as it's realy
the extended allocators part of container.

But every part calls it container, so we do too.
2020-03-02 19:48:07 -06:00
Erik Schnetter
059203b2fd amrex: New version 20.03 (#15294) 2020-03-02 16:09:50 -06:00
Tamara Dahlgren
73f7301ec4 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-02 11:16:20 -08:00
Kai Torben Ohlhus
1db1ae6887 openblas: Add version 0.3.9. (#15287)
[OpenBLAS 0.3.9](https://github.com/xianyi/OpenBLAS/releases/tag/v0.3.9) was released.
2020-03-02 11:58:54 -06:00
Cody Melton
7df761564a Qmcpack: new variant +afqmc (#14882)
* add preliminary afqmc support in qmcpack

* afqmc updates

* fix spack typos

* edit AFQMC to only allow up 3.7 or above

* added NCCL library support for AFQMC build

* add CMAKE args for BUILD_AFQMC_WITH_NCCL

* update for just AFQMC support. No AFQMC+GPU support

* remove nccl for afqmc

* flake8 whitespace fix
2020-03-02 11:58:33 -06:00
Gregory Lee
8a4f02fb2d stat: new version 4.0.2 (#15290) 2020-03-02 09:51:28 -08:00
Sergey Kosukhin
e3b357ad87 Update flag_handler for 'netcdf-fortran'. (#14789)
* Update flag_handler for 'netcdf-fortran'.

* Refactoring.

* Enable old versions of netcdf-fortran for NAG.

* Disable parallel 'make check' for versions before 4.5.0.

* Fix shared libraries built with NAG instead of conflicting it.

* Add 'skosukhin' as a maintainer of 'netcdf-fortran'.
2020-03-02 08:40:37 -06:00
noguchi-k
aae59f4866 lastz: set compile commands for each compiler (#15284) 2020-03-02 08:05:31 -06:00
Glenn Johnson
c0032a3660 Update tcsh package (#15283)
This PR adds some fixes for the tcsh package.

- Adds new version
- adds list_url so fetching works for current and old tarballs
- sets ncurses dependency explicitly to `ncurses+termlib`

If `+termlib` is not set then it will link against the system libtinfo.
2020-03-01 22:00:57 -06:00
noguchi-k
27de7a2726 lastz: cast from char to signed char (#15263) 2020-03-01 19:58:27 -06:00
TZ
ac4d0c3af7 Quantum-Espresso: qe-6.5 fails to detect MKL for FFT (#15276)
* Quantum-Espresso: qe-6.5 fails to detect MKL for FFT

qe-6.5 fails to detect MKL for FFT if BLAS_LIBS is set due to
an unfortunate upsteam change in their autoconf/configure:
- qe-6.5/install/m4/x_ac_qe_blas.m4 only sets 'have_blas'
  but no 'have_mkl' if BLAS_LIBS is set (which seems to be o.k.)
- however, qe-6.5/install/m4/x_ac_qe_fft.m4 in 6.5 unfortunately
  relies on x_ac_qe_blas.m4 to detect MKL and set 'have_mkl'
- qe-5.4 up to 6.4.1 had a different logic and worked fine with
  BLAS_LIBS being set
However, MKL is correctly picked up by qe-6.5 for BLAS and FFT if
MKLROOT is set (which SPACK does automatically for ^intel-mkl).
Thus, do not set BLAS_LIBS when compiling qe-6.5 with intel-mkl.

* replace all '^intel-mkl' by '^mkl' to match other packages which also provide MKL

e.g. intel-parallel-studio+mkl as mentioned by @adamjstewart in #15276
2020-03-01 10:08:33 -06:00
George Hartzell
501fdc75b6 Update kallisto (with hackery on std_cmake_args) (#15278)
* Filter problematic flag from std_cmake_args

Including '-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON' in the cmake args causes
bits of cmake's output to end up in the autoconf-generated configure
script.  See https://github.com/spack/spack/issues/15274 and

* Don't build in parallel (sigh)

* Constrain hackery for newer versions...

... to newer versions.
2020-02-29 22:58:13 -06:00
Sinan
5fc43b3b0e QGIS: fix typos (#15279)
* fix typos

* minor improvement

* add version 3.4.15
2020-02-29 22:56:41 -06:00
Sinan
7150bd6224 New package: QGIS (#12388)
* [WIP] new package: qgis

* add maintainer

* further improvements

* reflect improvements to qscintilla installation paths

* comment out qtkeychain dependency as the package is created

* uncomment qtkeychaing dependency, since this package is now created

* a comment on webkit

* specify versions of dependencies, add variant

* fix variant description

* fix proj dependency logic

* adjust conflicts and dependencies so that one can compile qgis@2 with qt4, python2.7

* minor improvement

* fix some build errors, improve dependency specs

* qsci python bindings will be build by py-pyqt

* cmake variable QSCINTILLA_LIBRARY should point to library itself not the parent folder

* turn grass off explicitly, fix typo, turn qspatialite off explicitly

* fix typo

* specify more cmake options that doesn"t seem to be set properly, and use spack provided pkg-config

* fix libzip

* fix build issue with sqlite variant, add runtime dependencies

* add more runtime python package dependencies

* reflect variant name change in sqlite

* add maintainer, correct typo

* add TODO's

* add more versions

* improve style

* add latest versions

* netcdf -> netcdf-c

* add variants as shown in cmake config

* add conflict: v3.8.1 won't build if qt@5.13:

* change preferred version to latest long term release, 3.10.3

* add a zillion of build options

* improve style

* add descriptions for variants

* remove and already implemented compilation tip

* add "when" statements for optional dependencies

* make flake8 happy

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

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

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

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

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

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

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

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

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

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

* convert conflicts to depends_on

* undo str conversion for path objects

* fix flake8 E131

* fix flake8 E128, E124

* improve style

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-29 18:52:43 -06:00
Mark W. Krentel
4c506c88f0 hpctoolkit: add version 2020.03.01 (#15277)
Add version 2020.03.01, deprecate Blue Gene to 2019.12.28 and earlier,
tighten a few dependencies.
2020-02-29 18:30:42 -06:00
Richard Berg
d105807a48 Add kraken2 (#15053) 2020-02-29 15:44:42 -06:00
Robert Blake
7562d4e934 Caliper depends on python3. (#15260)
* Caliper depends on python3.

The package needs to be told where to find it.

* More flake8 formatting edits.

* Change explicit python3 to spec['python'].command.path

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

* Removing defunct import for flake8

* Flake8 trailing whitespace warning.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-29 15:32:51 -06:00
Anthony Scemama
ece5ec8ade opam: added versions up to v2.0.6 (#15178) 2020-02-29 14:47:44 +01:00
rtohid
ecc7afdad6 HPX: added v1.4.1 and "stable" branch (#15198) 2020-02-29 14:44:09 +01:00
Roberto Di Remigio
4dbeb3563b MRCPP: New package. (#15201) 2020-02-29 14:41:02 +01:00
plamborn
0187807621 libhio: specify use of external json (#15209)
libhio has been building it's own json.  With this change, libhio will rely on the json installed by spack.
2020-02-29 14:25:21 +01:00
Glenn Johnson
94c2e7e7b4 Set http:// in homepage for a few packages (#15275)
This PR adds 'http://' to the homepage setting of a few packages that do
not have it set. Not having that set can cause problems with some wiki
apps when embedding the homepage value into markdown syntax.

- bowtie2
- exuberant-ctags
- perl-want
- samtools
2020-02-29 13:47:56 +01:00
George Hartzell
53f4db938f Update tree for v1.8.0 (#15272)
- add version info for v1.8.0

- v1.8.0 adds a new source file, `file.c`, which need to be included
  in our hardcoded list of objects to link.

  I discovered this while demonstrating "how easy it is to add a new
  package to Spack", only to scratch my head when it failed `spack
  install` but worked when I ran `make` in the stage dir.  Finally
  looked at tree/package.py and it All Became Clear.

  Perhaps someone should rewrite this to use MakefilePackage, but the
  Makefile starts off with a bunch of twisty turny "uncomment these
  lines to run on this platform", so it might not be worth it.
2020-02-28 17:52:41 -06:00
Anthony Scemama
c10fb2a974 Added package py-versioneer (#15130)
* Added package py-versioneer

* Update python version

* Added python2 to versioneer

* Added python2 to versioneer

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

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

* Cleaning comments

* Removed temporarily @warner as a maintainer, waiting for answer

* Removed line

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-28 15:14:06 -06:00
George Hartzell
d3a2234af9 Add version info for the-silver-searcher@2.2.0 (#15270) 2020-02-28 15:13:05 -06:00
Rémi Lacroix
7ecee48c83 OpenMPI nolegacylaunchers: avoid a fork bomb (#15268)
Due to the use of backquotes, the replacement script for mpirun/mpiexec commands would recursively call itself, effectively causing a fork bomb.
2020-02-28 14:59:49 -06:00
Christoph Junghans
5329308b83 gromacs: add v2019.6 (#15267)
* gromacs: add v2019.6

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-28 14:58:31 -06:00
iarspider
97e909ef0c Fix expect on linux (#15230) (#15269)
* Fix expect on linux

* Flake8
2020-02-28 14:57:45 -06:00
Erik Schnetter
38d5d7304d ssht: Correct recipe (#15217)
- Tell make about the source code path
- Install actual header files, not a wrapper with wrong paths
- Add a patch to prevent compiler warnings
- Improve description
2020-02-28 11:32:41 -06:00
Adam J. Stewart
513f9235c3 Fix detection of redhat enterprise compute node (#15253)
* Fix detection of redhat enterprise compute node

* Add comma

* Remove space
2020-02-28 11:27:15 -06:00
Seth R. Johnson
f2fa4c1e4b Add new version of libfabric that builds on macOS (#15254)
* Add new version of libfabric that builds on macOS

See https://github.com/ofiwg/libfabric/issues/5339
Fixes https://github.com/spack/spack/issues/15244

Also reduced copy-paste of URLs with `url_for_version`.

* Address reviewer feedback
2020-02-28 11:26:48 -06:00
eugeneswalker
886e072f1d unifyfs depends on openssl (#15258) 2020-02-28 11:24:53 -06:00
Howard Pritchard
e519bbadc3 UCX: add 1.7.0 (#15266)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2020-02-28 11:22:37 -06:00
Ben Morgan
ec75011a69 Add @drbenmorgan as maintainer for core HEP packages (#15264) 2020-02-28 09:34:07 -06:00
Glenn Johnson
8ee7ee6105 Fixups for jupyter (#15136)
* Fixups for jupyter

This PR fixes a few things for some jupyter related packages.

py-ipython:
- make the python depends_on statements reflect needs of different
  versions
- remove an unneeded conflicts directive

py-ipywidgets:
- add new version
- set version constraints for py-widgetsnbextension

py-jupyter-console
- add new version
- set python dependencies for versions as needed
- set version constraint for py-ipython
- set version constraints for py-prompt-toolkit

py-pyqt5
- build with py-sip

py-qtconsole
- add dependency on py-pyqt5

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

Tweak version ranges.

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

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

Tweak version range.

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

* Make py-pyqt5 a run dependency

Also, make formatting more consistent.

* Fix site_packages_dir

Change reference of site_packages_dir to self.site_packages_dir. Oddly,
this did not show up as a problem until I regenerated the module.

* Restore py-pyqt5 to previous state

* Explicitly set path to site_packages_dir

This change prevents an error when regenerating the py-pyqt5 module
file.

* Fix flake8 errors

* Make sure prefix is in join_path

* Fix flake8 errors

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-27 22:31:46 -06:00
Anwar Koshakji
1616aa7119 Fixed url for SLEPc package (#15257)
* Fixed url for SLEPc package

* Fixed homepage url for SLEPc package
2020-02-27 22:29:29 -06:00
Christoph Junghans
c7d3dee2f7 gsl: build against external cblas (#15261) 2020-02-27 22:29:08 -06:00
Glenn Johnson
f10710d5cd New package: py-librosa (#15223)
* New package: py-librosa

This PR adds the py-librosa package, along with new dependency packages
and some updates of existing dependency packages.

- new package: py-audioread
- new package: py-resampy
- new package: py-soundfile
- update package: py-numba
- update package: py-llvmlite

py-numba:
- add updated version
- adjust constraints

py-llvmlite:
- add updated version
- adjust constraints
- fix version specifications for llvm
- add environment function to set PIC

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

Ah, yes, I see that `setuptools` is listed in the `install_requires` array. I missed that before.

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

* Fix dependency

- Add dependency of py-soundfile depends on libsndfile
- Add new libsndfile package

* Add py-pytest-runner build dep

* Make numpy a variant for py-soundfile

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-27 22:28:16 -06:00
Seth R. Johnson
09a1f09fd0 Mark GCC7 and newer as conflicting with rhel6 without binutils (#14706)
When building gcc7 and gcc8 on RHEL6 with Spack and installing it as
a spack-available compiler, OpenBLAS will fail to compile because GCC
generates newer instructions than rhel6's `as` assembler knows about
(e.g. "vpermpd").

Building gcc8 with binutils succeeds, and it generates a GCC that can
then successfully build OpenBLAS. This is also expected to work for
gcc7 on RHEL6.
2020-02-27 18:56:48 -08:00
L. Diana Amorim
17fbf78593 Added version 0.12.0 to py-pyfftw (#15252)
* Added version 0.12.0 to fix issue #15218

* Added dependencies specs with compatible versions

* Switched py-scipy dependency to variant (default F)

* Removed variant py-scipy and didn't add py-dask

* Fixed typo: missing '

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

Fixing typos from version ranges in dependencies.

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

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

Removed repeating dependency option.

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

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

Limited version of py-numpy dependency to <2.0.

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

Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-27 20:31:34 -06:00
Christoph Junghans
a785e302cc portage: needs to be linked against lapack:c (#15259) 2020-02-27 20:23:45 -06:00
Jean-Paul Pelteret
7217592c24 Fix Trilinos 12.18.1 build when using Apple Clang 8.0.0 2020-02-27 18:22:09 -08:00
Jean-Paul Pelteret
7fc908e0e1 Update package: Trilinos + Mesquite 2020-02-27 18:22:09 -08:00
Robert Blake
b88c66cb52 Adding an option to build the C api for Umpire. (#15238)
* Adding an option to build the C api for Umpire.

This is useful if you need to link to a C code and you're using
a compiler suite that doesn't support fortran.

* Also updating the versions while I'm here.

* Adding conflict: Fortran requires C.

To ease transition and confusion, default to C-bindings being
present.  This shouldn't hurt anyone who is upgrading an existing
installation.
2020-02-27 20:17:55 -06:00
Glenn Johnson
4d5e75d825 new package: py-auxlib (#15221) 2020-02-27 20:12:32 -06:00
Massimiliano Culpo
7e13c9a6a0 Remove "triage" label from feature request 2020-02-27 16:34:24 -08:00
Massimiliano Culpo
2fbc774c8b Use checkout v2 to avoid issues on retriggering 2020-02-27 16:34:24 -08:00
Massimiliano Culpo
89f4ce964b Improved the feature request template 2020-02-27 16:34:24 -08:00
Massimiliano Culpo
b6531a760b Improved the build error template 2020-02-27 16:34:24 -08:00
Massimiliano Culpo
d36100e429 Improved the bug report template 2020-02-27 16:34:24 -08:00
Mark W. Krentel
fc20b352e7 hpcviewer: add version 2020.02 2020-02-27 15:40:55 -08:00
Roberto Di Remigio
d083c17242 New package: XCFun (#15199) 2020-02-27 15:40:21 -08:00
Michael Kuhn
f580b340f8 Add new timeout fetch_option
This allows packages to override the global connect_timeout.
2020-02-27 10:52:52 -08:00
Michael Kuhn
b7cfd05ef7 Generalize curl_options into fetch_options
This allows us to support higher-level concepts such as 'cookie' and
'timeout' without users having to specify curl options.
2020-02-27 10:52:52 -08:00
Michael Kuhn
7325c20794 config: Add a new option connect_timeout
connect_timeout can be used to increase the time Spack waits for the
server to answer. This can be used to work around slow connections or
servers.

Fixes #14700
2020-02-27 10:52:52 -08:00
Sheng Di
ffb9591dc9 release sz 2.1.8.3 (#15250) 2020-02-27 12:25:06 -06:00
Adam J. Stewart
6153eea2c2 CudaPackage: add support for Tesla K80 and older CUDA (#15031)
* CudaPackage: add support for Tesla K80 and older CUDA

* Flake8 fixes

* Fix cuda_arch when no arch is set

* Fine-tune cuda_arch=37,50 supported CUDA versions

* CUDA 6.5+ supports SM_37

* Add @svenevs as a maintainer
2020-02-27 12:16:20 -06:00
Glenn Johnson
167c75842a new package: py-cnvkit and py-pomegranate (#15222)
The py-pomegranate package is a dependency of py-cnvkit
2020-02-27 12:06:19 -06:00
Glenn Johnson
c34ed6e6b5 new package: py-pycifrw (#15224) 2020-02-27 11:55:10 -06:00
Glenn Johnson
2d0ae0deb2 new package: py-pycosat (#15225) 2020-02-27 11:53:30 -06:00
Glenn Johnson
130a77f322 New packages: py-pymc3 and py-arviz (#15226)
This PR adds py-pymc3 and py-arviz as a dependency.
2020-02-27 11:51:15 -06:00
Paul
0d2f8e314b Added go 1.14 (#15249) 2020-02-27 11:42:48 -06:00
TZ
d6d095a868 Docs: "spack env" is in the meantime called "spack build-env" (#15233) 2020-02-27 09:13:09 +01:00
Kai Torben Ohlhus
b37d7b8ed7 arpack-ng: ILP64 support (#15103)
Details about ILP64 support: `INTERFACE64=1` are described on the [ARPACK-NG GitHub website](https://github.com/opencollab/arpack-ng).
2020-02-27 07:19:24 +01:00
Anthony Scemama
9c194b22dc f77-zmq: add version 4.3.2 (#15204)
Version 4.3.1 only works with Python3. Version 4.3.2 also works
with Python2. These constraints were not listed before and are added
by this commit.
2020-02-26 19:05:46 -08:00
Andreas Baumbach
f1a12966b0 py-git-review: add version 1.28 (#15203) 2020-02-26 19:02:51 -08:00
Luca Carrogu
350235ba71 AWS ParallelCluster: add version 2.6.0 (#15240) 2020-02-26 19:02:24 -08:00
genric
9a1a346999 h5py: add version 2.10.0 (#15205)
Also add dependency on py-cached-property
2020-02-26 19:01:22 -08:00
Tamara Dahlgren
ed15adbb9e 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-02-26 18:49:29 -08:00
Kevin Huck
ebd248b27e SQLite shouldn't be enabled by default for TAU package (#15228)
Also Adding conflict for SQLite and ADIOS2 for older TAU releases
2020-02-26 17:14:09 -06:00
Seth R. Johnson
578e8031ce Default to +termlib for ncurses for LLVM (#15039)
LLVM is the only package that explicitly sets the "termlib" variant
of ncurses and it specifies +termlib. ncurses defaults to ~termlib;
if a package depends on LLVM and ncurses, there is a concretizer bug
that incorrectly detects a constraint conflict (see #267). Setting
+termlib as the default is a stopgap measure to avoid this conflict.

If other packages were to explicitly request ~termlib in the future,
the same issue would come up again (and could not be resolved by
adjusting the default of "termlib").

Setting +termlib on ncurses moves some symbols into a separate
"libtinfo". Not all packages may be able to detect libtinfo properly
so may require an update; vim, samtools, and libedit have been
updated to use ncurses+termlib (in the case of libedit, the only
necessary action was to add a newer version where the build system
was updated to check libtinfo).
2020-02-26 11:27:12 -08:00
Seth R. Johnson
6c445a2c0f Uniquify suffixes added to module names (#14920) 2020-02-26 18:03:28 +01:00
Anthony Scemama
1c227db7a9 Basis set exchange command-line tool (#15126)
* Flake8 OK

* Update var/spack/repos/builtin/packages/py-basis-set-exchange/package.py

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

* Update var/spack/repos/builtin/packages/py-basis-set-exchange/package.py

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

* Added missing dependencies proposed by @adamjstewart

* Without py-versioneer

* Added py-versioneer

* Python2 for bse

* Python build error

* Update var/spack/repos/builtin/packages/py-basis-set-exchange/package.py

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

* Removed py-versioneer, according to @adamjstewart

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-26 07:27:02 -06:00
Glenn Johnson
a568db00b8 A few edits for the Basic Usage Doc page (#15215)
This PR corrects a few minor things and adds a note about colorized
output.
2020-02-26 10:03:03 +01:00
Patrick Gartung
ae87828520 buildcache cmd: add explicit message with default output dir for buildcaches. (#15090)
* Make -d directory a required option. Print messages about where buildcaches will be written.

* Add mutually exclusive required options

* spack commands --update-completion

* Apply @opadron's patch

* Update share/spack/spack-completion.bash

* Incorporate @opadron's suggestions
2020-02-25 17:49:25 -06:00
Omar Padron
00090f8f97 add --only option to buildcache create cmd (#14921)
* add --only option to buildcache create cmd

replaces the --no-deps option
2020-02-25 17:32:20 -05:00
Omar Padron
8d750db9de remove catch-all exception handling in buildcache command (#15185)
* remove catch-all exception handling in buildcache command

* fix test
2020-02-25 14:10:50 -06:00
Patrick Gartung
676eb56ab2 Buildcache cmd: add install -o/--otherarch option for installing macOS buildcaches on linux (#15192)
* Buildcache command: add install option -o/--otherarch
This will allow matching specs from other archs, for example
installing macOS buildcaches on linux hosts.

* spack commands --update-completion
2020-02-25 11:01:59 -06:00
Kai Torben Ohlhus
8d8925c725 qrupdate: ILP64 support (#15104)
- When compiling qrupdate with `FFLAGS=-fdefault-integer-8` it can be perfectly used for larger problem dimensions.
- Improved the readability of the file with the added rules.
2020-02-25 10:36:54 +01:00
Kevin Huck
21afb13be6 Adding ADIOS2 and SQLite3 output support to TAU. Also fixing MPI include and library paths. (#15189)
Setup package to use MPI the way Spack recommends, and remove extra iowrapper option from configure
Making flake happy
2020-02-24 22:33:05 -06:00
OliverPerks
5c68caeb1e Update of OpenFOAM package.py (#15190) 2020-02-24 22:28:13 -06:00
Kai Torben Ohlhus
4a0b7c9d20 suite-sparse: add version 5.7.1 (#15195)
Release notes: https://github.com/DrTimothyAldenDavis/SuiteSparse/releases/tag/v5.7.1

Version 5.7.0 was an incomplete release.
2020-02-24 22:22:00 -06:00
ktsai7
9b3f5f3890 update flecsi and legion package.py (#15159)
* update flecsi and legion package.py

* comment out a conflict

* update to use extend
2020-02-24 13:22:25 -06:00
Michael Kuhn
45306206c7 docs: Fix tiny typo (#15181) 2020-02-24 10:58:21 -06:00
Michael Kuhn
94acd8f235 cmd/load: Fix usage output (#15180)
args.specs is a list, which results in output like this:
```
eval `spack load --sh ['libxml2', 'xz']`
```

We want this instead:
```
eval `spack load --sh libxml2 xz`
```
2020-02-24 09:46:41 -06:00
Michael Kuhn
a38eb70e30 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-02-24 15:34:57 +01:00
darmac
b1e097b035 add new package : agrep (#15165)
* add new package : agrep

* agrep: move binary to bin/
2020-02-24 08:00:34 -06:00
Anthony Scemama
48d6da3b6e Added extra versions of OCaml (#15177)
* Aded extra versions for OCaml

* Added maintainer
2020-02-24 07:59:59 -06:00
Robert Underwood
79dcf835b2 sz: update to version 2.1.8.1 (#15154)
The newer versions of SZ now uses CMake to build.
2020-02-24 07:55:39 -06:00
Glenn Johnson
c2e1319f2d Update py-bx-python package (#15175)
* Update py-bx-python package

- add update to py-bx-python
- switch to pypi downloads
- set dependencies

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

I had initially pulled version 0.8.6 and then updated that to 0.8.8 but missed the change in the python specs between those two versions.

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

* Fix version 0.7.4

- set dependency on python2
- add dependency on py-python-lzo
- add py-python-lzo package
- set py-numpy dependency to correspond to latest version that works
  with python2

* Add constraint for py-six dependency

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

Ah, I had that `when` clause in and then took it out as it did not seem to be needed. I guess it is always better to be more explicit.

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

* Remove py-numpy constraint

Let the concretizer catch the conflict with python2 and py-numpy
versions.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-02-24 07:54:08 -06:00
Glenn Johnson
6615fbccbc Update py-rseqc package (#15176)
This PR depends on #15175
- add updated version
- set depedencies
2020-02-23 22:15:47 -06:00
darmac
edca0e9da2 add new package : batctl (#15160)
* add new package : batctl

* batctl: move binary to bin/
2020-02-23 22:08:03 -06:00
darmac
fd3c08e925 add new package : bubblewrap (#15162)
* add new package : bubblewrap

* bubblewrap: remove some comment in package.py
2020-02-23 22:07:39 -06:00
Todd Gamblin
5aa1739bfa Merge branch 'releases/v0.14' into develop 2020-02-23 17:32:12 -08:00
Michael Kuhn
a5461f5cba py-setproctitle: Add new package (#15170) 2020-02-23 12:46:22 -06:00
Michael Kuhn
b935d88282 create: Mention that python dependency does not have to be added (#15173)
A generic python dependency is already added implicitly by the
PythonPackage class.
2020-02-23 10:22:50 -08:00
iarspider
fd60977613 Separate HepMC2 and HepMC3 build recipes; Python3 support for HepMC3 (#15147)
* Fixes & additional variant(s) for HepMC3

* Syntax

* Restore recipe for HepMC2

* Remove FIXME

* Update package.py

* 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-23 12:07:00 -06:00
Seth R. Johnson
b927e3799f Fix silex build (#15172)
* Mark silo+silex as requiring QT4

* Add missing readline dependency to silo

* Fix silo QT4 usage and verify silex works on mac

```
-- darwin-mojave-x86_64 / clang@11.0.0-apple --------------------
7gdcud4 silo@4.10.2+fortran~mpi patches=7b5a1dc2a0e358e667088d77e7caa780967fa8ea60be89c44986605df9990abe +pic+shared+silex
pk3wbwd     hdf5@1.10.6~cxx~debug~fortran+hl~mpi+pic+shared+szip~threadsafe
slsy6ko         libszip@2.1.1
xj36ejk         zlib@1.2.11+optimize+pic+shared
u4662xx     libx11@1.6.4
3lpe6j3     qt@4.8.7~dbus~examples~framework freetype=none ~gtk~opengl patches=03f9893882c63a9a9617d9ecab9caf80661c96df13f596a9b24fc4579490144a,a4f37427b34d88df6a6adc16e1e6c805087d4f3a7c658e1797450b0912fcbf5d,f17e0b5fb1f43bccadf7298533eca57294f4acab11ed83b176c61c441f745c19 ~phonon+shared~sql~ssl~tools~webkit
shdhdbh         glib@2.56.3~libmount patches=c325997b72a205ad1638bb3e3ba0e5b73e3d32ce63b2d0d3282f3e3a2ff4663c tracing=none
msyeqht             gettext@0.20.1+bzip2+curses+git~libunistring+libxml2+tar+xz
ysmjykg                 bzip2@1.0.8+shared
w354vrb                 libxml2@2.9.9~python
jg6ekuh                     libiconv@1.16
b7n722h                     xz@5.2.4
zbgxvxi                 ncurses@6.1~symlinks~termlib
2e6sifw                 tar@1.32
7yg7qah             libffi@3.2.1
zg55iyu             pcre@8.43~jit+multibyte+utf
zqrlxlz             perl@5.30.0+cpanm+shared+threads
un7wzvl             python@3.7.4+bz2+ctypes+dbm~debug+libxml2+lzma~nis~optimizations patches=210df3f28cde02a8135b58cc4168e70ab91dbf9097359d05938f1e2843875e57 +pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tix~tkinter~ucs4+uuid+zlib
l4gxq46                 expat@2.2.9~libbsd
3t4dwsv                 gdbm@1.18.1
h2bjtz2                     readline@8.0
ugvknwc                 openssl@1.1.1d+systemcerts
hsmq6ou                 sqlite@3.30.1~column_metadata+fts~functions~rtree
lpfob23         icu4c@65.1 cxxstd=11
lf66vbr         inputproto@2.3.2
afovyhg         libjpeg-turbo@2.0.3
5dgw556         libmng@2.0.3 build_type=RelWithDebInfo
3z4lw2w             lcms@2.9
flleuyu                 libtiff@4.0.10
67tigfp         libpng@1.6.37
```
2020-02-23 10:45:19 -06:00
1783 changed files with 49719 additions and 21578 deletions

View File

@@ -4,8 +4,7 @@ coverage:
range: 60...90
status:
project:
default:
threshold: 0.3%
default: yes
ignore:
- lib/spack/spack/test/.*

View File

@@ -9,7 +9,7 @@
#
# Note that we also add *per-line* exemptions for certain patterns in the
# `spack flake8` command. This is where F403 for `from spack import *`
# is added (beause we *only* allow that wildcard).
# is added (because we *only* allow that wildcard).
#
# See .flake8 for regular exceptions.
#

View File

@@ -1,14 +1,11 @@
---
name: Bug report
about: Report a bug in the core of Spack (command not working as expected, etc.)
labels: bug
name: "\U0001F41E Bug report"
about: Report a bug in the core of Spack (command not working as expected, etc.)
labels: "bug,triage"
---
*Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
Example: "I ran Spack find to list all the installed packages and..."*
<!-- Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
Example: "I ran `spack find` to list all the installed packages and ..." -->
### Steps to reproduce the issue
@@ -20,30 +17,26 @@ $ spack <command2> <spec>
### Error Message
If Spack reported an error, provide the error message. If it did not report an error
but the output appears incorrect, provide the incorrect output. If there was no error
message and no output but the result is incorrect, describe how it does not match
what you expect. To provide more information you might re-run the commands with
the additional -d/--stacktrace flags:
<!-- If Spack reported an error, provide the error message. If it did not report an error but the output appears incorrect, provide the incorrect output. If there was no error message and no output but the result is incorrect, describe how it does not match what you expect. -->
```console
$ spack -d --stacktrace <command1> <spec>
$ spack -d --stacktrace <command2> <spec>
...
$ spack --debug --stacktrace <command>
```
that activate the full debug output.
### Information on your system
This includes:
<!-- Please include the output of `spack debug report` -->
1. which platform you are using
2. any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.)
<!-- If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well. -->
-----
### Additional information
We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
<!-- These boxes can be checked by replacing [ ] with [x] or by clicking them after submitting the issue. -->
- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform
- [ ] I have searched the issues of this repo and believe this is not a duplicate
- [ ] I have run the failing commands in debug mode and reported the output
<!-- We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
Other than that, thanks for taking the time to contribute to Spack!
Other than that, thanks for taking the time to contribute to Spack! -->

View File

@@ -1,78 +1,43 @@
---
name: Build error
about: Some package in Spack didn't build correctly
name: "\U0001F4A5 Build error"
about: Some package in Spack didn't build correctly
title: "Installation issue: "
labels: "build-error"
---
*Thanks for taking the time to report this build failure. To proceed with the
report please:*
<!-- Thanks for taking the time to report this build failure. To proceed with the report please:
1. Title the issue "Installation issue: <name-of-the-package>".
2. Provide the information required below.
3. Remove the template instructions before posting the issue.
We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
---
We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively! -->
### Steps to reproduce the issue
<!-- Fill in the exact spec you are trying to build and the relevant part of the error message -->
```console
$ spack install <spec> # Fill in the exact spec you are using
... # and the relevant part of the error message
$ spack install <spec>
...
```
### Platform and user environment
### Information on your system
Please report your OS here:
```commandline
$ uname -a
Linux nuvolari 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -d
Description: Ubuntu 18.04.1 LTS
```
and, if relevant, post or attach:
<!-- Please include the output of `spack debug report` -->
- `packages.yaml`
- `compilers.yaml`
to the issue
<!-- If you have any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.) you can add that here as well. -->
### Additional information
Sometimes the issue benefits from additional details. In these cases there are
a few things we can suggest doing. First of all, you can post the full output of:
```console
$ spack spec --install-status <spec>
...
```
to show people whether Spack installed a faulty software or if it was not able to
build it at all.
<!-- Please upload the following files. They should be present in the stage directory of the failing build. Also upload any config.log or similar file if one exists. -->
* [spack-build-out.txt]()
* [spack-build-env.txt]()
If your build didn't make it past the configure stage, Spack as also commands to parse
logs and report error and warning messages:
```console
$ spack log-parse --show=errors,warnings <file-to-parse>
```
You might want to run this command on the `config.log` or any other similar file
found in the stage directory:
```console
$ spack location -s <spec>
```
In case in `config.log` there are other settings that you think might be the cause
of the build failure, you can consider attaching the file to this issue.
<!-- Some packages have maintainers who have volunteered to debug build failures. Run `spack maintainers <name-of-the-package>` and @mention them here if they exist. -->
Rebuilding the package with the following options:
```console
$ spack -d install -j 1 <spec>
...
```
will provide additional debug information. After the failure you will find two files in the current directory:
### General information
1. `spack-cc-<spec>.in`, which contains details on the command given in input
to Spack's compiler wrapper
1. `spack-cc-<spec>.out`, which contains the command used to compile / link the
failed object after Spack's compiler wrapper did its processing
You can post or attach those files to provide maintainers with more information on what
is causing the failure.
<!-- These boxes can be checked by replacing [ ] with [x] or by clicking them after submitting the issue. -->
- [ ] I have run `spack debug report` and reported the version of Spack/Python/Platform
- [ ] I have run `spack maintainers <name-of-the-package>` and @mentioned any maintainers
- [ ] I have uploaded the build log and environment files
- [ ] I have searched the issues of this repo and believe this is not a duplicate

View File

@@ -1,28 +1,33 @@
---
name: Feature request
name: "\U0001F38A Feature request"
about: Suggest adding a feature that is not yet in Spack
labels: feature
---
*Please add a concise summary of your suggestion here.*
<!--*Please add a concise summary of your suggestion here.*-->
### Rationale
*Is your feature request related to a problem? Please describe it!*
<!--*Is your feature request related to a problem? Please describe it!*-->
### Description
*Describe the solution you'd like and the alternatives you have considered.*
<!--*Describe the solution you'd like and the alternatives you have considered.*-->
### Additional information
*Add any other context about the feature request here.*
<!--*Add any other context about the feature request here.*-->
-----
### General information
- [ ] I have run `spack --version` and reported the version of Spack
- [ ] I have searched the issues of this repo and believe this is not a duplicate
If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
Other than that, thanks for taking the time to contribute to Spack!
<!--If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
Other than that, thanks for taking the time to contribute to Spack!
-->

5
.github/workflows/install_spack.sh vendored Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env sh
git clone https://github.com/spack/spack.git
echo -e "config:\n build_jobs: 2" > spack/etc/spack/config.yaml
. spack/share/spack/setup-env.sh
spack compilers

View File

@@ -5,6 +5,7 @@ on:
branches:
- master
- develop
- releases/**
pull_request:
branches:
- master
@@ -18,6 +19,8 @@ on:
- '!var/spack/repos/builtin/packages/py-setuptools/**'
- '!var/spack/repos/builtin/packages/openjpeg/**'
- '!var/spack/repos/builtin/packages/r-rcpp/**'
# Don't run if we only modified documentation
- 'lib/spack/docs/**'
jobs:
build:
@@ -28,7 +31,7 @@ jobs:
matrix:
package: [lz4, mpich, tut, py-setuptools, openjpeg, r-rcpp]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Cache ccache's store
uses: actions/cache@v1
with:
@@ -42,6 +45,7 @@ jobs:
python-version: 3.8
- name: Install System Packages
run: |
sudo apt-get update
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

62
.github/workflows/linux_unit_tests.yaml vendored Normal file
View File

@@ -0,0 +1,62 @@
name: linux tests
on:
push:
branches:
- master
- develop
- releases/**
pull_request:
branches:
- master
- develop
jobs:
unittests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
steps:
- uses: actions/checkout@v2
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install System packages
run: |
sudo apt-get -y update
sudo apt-get install -y coreutils gfortran graphviz gnupg2 mercurial ninja-build patchelf
# Needed for kcov
sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev
- name: Install Python packages
run: |
pip install --upgrade pip six setuptools codecov coverage
- name: Setup git configuration
run: |
# Need this for the git tests to succeed.
git --version
git config --global user.email "spack@example.com"
git config --global user.name "Test User"
git fetch -u origin develop:develop
- name: Install kcov for bash script coverage
env:
KCOV_VERSION: 34
run: |
KCOV_ROOT=$(mktemp -d)
wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz
tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz
mkdir -p ${KCOV_ROOT}/build
cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd -
make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install
- name: Run unit tests
env:
COVERAGE: true
run: |
share/spack/qa/run-unit-tests
coverage combine
coverage xml
- name: Upload to codecov.io
uses: codecov/codecov-action@v1
with:
flags: unittests,linux

58
.github/workflows/macos_python.yml vendored Normal file
View File

@@ -0,0 +1,58 @@
# These are nightly package tests for macOS
# focus areas:
# - initial user experience
# - scientific python stack
name: macOS builds nightly
on:
schedule:
# nightly at 1 AM
- cron: '0 1 * * *'
# GitHub Action Limits
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
jobs:
install_gcc:
name: gcc with clang
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack install -v gcc
install_jupyter_clang:
name: jupyter
runs-on: macos-latest
timeout-minutes: 700
steps:
- uses: actions/checkout@v2
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack install -v py-jupyter %clang
install_scipy_clang:
name: scipy, mpl, pd
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack install -v py-scipy %clang
spack install -v py-matplotlib %clang
spack install -v py-pandas %clang
install_mpi4py_clang:
name: mpi4py, petsc4py
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack install -v py-mpi4py %clang
spack install -v py-petsc4py %clang

49
.github/workflows/macos_unit_tests.yaml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: macos tests
on:
push:
branches:
- master
- develop
- releases/**
pull_request:
branches:
- master
- develop
jobs:
build:
runs-on: macos-latest
strategy:
matrix:
python-version: [3.7]
steps:
- uses: actions/checkout@v2
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install Python packages
run: |
pip install --upgrade pip six setuptools
pip install --upgrade codecov coverage
pip install --upgrade flake8 pep8-naming
- name: Setup Homebrew packages
run: |
brew update
brew upgrade
brew install gcc gnupg2 dash kcov
- name: Run unit tests
run: |
git --version
git fetch -u origin develop:develop
. share/spack/setup-env.sh
coverage run $(which spack) test
coverage combine
coverage xml
- name: Upload to codecov.io
uses: codecov/codecov-action@v1
with:
file: ./coverage.xml
flags: unittests,macos

View File

@@ -5,6 +5,7 @@ on:
branches:
- master
- develop
- releases/**
pull_request:
branches:
- master
@@ -15,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v1
with:

11
.gitignore vendored
View File

@@ -4,6 +4,7 @@
/var/spack/environments
/var/spack/repos/*/index.yaml
/var/spack/repos/*/lock
__pycache__/
*.pyc
/opt
*~
@@ -22,8 +23,18 @@
.coverage
\#*
.#*
.cache
lib/spack/spack/test/.cache
/bin/spackc
*.in.log
*.out.log
*.orig
# Eclipse files
.project
.cproject
.pydevproject
# VSCode files
.vscode
.devcontainer

View File

@@ -12,7 +12,7 @@ branches:
# Build matrix
#=============================================================================
dist: xenial
dist: bionic
jobs:
fast_finish: true
@@ -22,45 +22,34 @@ jobs:
os: linux
language: python
env: TEST_SUITE=flake8
# Shell integration with module files
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=bootstrap ]
- stage: 'unit tests + documentation'
python: '2.6'
dist: trusty
os: linux
language: python
addons:
apt:
# Everything but patchelf, that is not available for trusty
packages:
- ccache
- gfortran
- graphviz
- gnupg2
- kcov
- mercurial
- ninja-build
- realpath
- zsh
- fish
env: [ TEST_SUITE=unit, COVERAGE=true ]
- python: '2.7'
os: linux
language: python
env: [ TEST_SUITE=unit, COVERAGE=true ]
- python: '3.5'
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.6'
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.7'
os: linux
language: python
env: TEST_SUITE=unit
- python: '3.8'
os: linux
language: python
env: [ TEST_SUITE=unit, COVERAGE=true ]
env: [ TEST_SUITE=shell, COVERAGE=true, KCOV_VERSION=38 ]
- python: '3.8'
os: linux
language: python
env: TEST_SUITE=doc
- os: osx
language: generic
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7, COVERAGE=true ]
if: type != pull_request
stages:
- 'style checks'
@@ -77,29 +66,15 @@ addons:
apt:
packages:
- ccache
- cmake
- coreutils
- gfortran
- graphviz
- gnupg2
- kcov
- mercurial
- ninja-build
- perl
- perl-base
- realpath
- r-base
- r-base-core
- r-base-dev
- patchelf
- zsh
# for Mac builds, we use Homebrew
homebrew:
packages:
- python@2
- gcc
- gnupg2
- ccache
- dash
- kcov
- fish
update: true
# ~/.ccache needs to be cached directly as Travis is not taking care of it
@@ -110,15 +85,18 @@ cache:
directories:
- ~/.ccache
# Work around Travis's lack of support for Python on OSX
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
pip2 install --upgrade pip;
pip2 install virtualenv;
virtualenv venv;
source venv/bin/activate;
fi
- ccache -M 2G && ccache -z
# Install kcov manually, since it's not packaged for bionic beaver
- if [[ "$KCOV_VERSION" ]]; then
sudo apt-get -y install cmake binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev;
KCOV_ROOT=$(mktemp -d);
wget --output-document=${KCOV_ROOT}/${KCOV_VERSION}.tar.gz https://github.com/SimonKagstrom/kcov/archive/v${KCOV_VERSION}.tar.gz;
tar -C ${KCOV_ROOT} -xzvf ${KCOV_ROOT}/${KCOV_VERSION}.tar.gz;
mkdir -p ${KCOV_ROOT}/build;
cd ${KCOV_ROOT}/build && cmake -Wno-dev ${KCOV_ROOT}/kcov-${KCOV_VERSION} && cd - ;
make -C ${KCOV_ROOT}/build && sudo make -C ${KCOV_ROOT}/build install;
fi
# Install various dependencies
install:
@@ -156,6 +134,10 @@ after_success:
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
fi
;;
shell)
codecov --env PYTHON_VERSION
--required
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
esac
#=============================================================================
@@ -163,6 +145,8 @@ after_success:
#=============================================================================
notifications:
email:
recipients: tgamblin@llnl.gov
recipients:
- tgamblin@llnl.gov
- massimiliano.culpo@gmail.com
on_success: change
on_failure: always

View File

@@ -1,4 +1,98 @@
# v0.14.2 (2019-04-15)
# v0.15.0 (2020-06-28)
`v0.15.0` is a major feature release.
## Major Features in this release
1. **Cray support** Spack will now work properly on Cray "Cluster"
systems (non XC systems) and after a `module purge` command on Cray
systems. See #12989
2. **Virtual package configuration** Virtual packages are allowed in
packages.yaml configuration. This allows users to specify a virtual
package as non-buildable without needing to specify for each
implementation. See #14934
3. **New config subcommands** This release adds `spack config add` and
`spack config remove` commands to add to and remove from yaml
configuration files from the CLI. See #13920
4. **Environment activation** Anonymous environments are **no longer**
automatically activated in the current working directory. To activate
an environment from a `spack.yaml` file in the current directory, use
the `spack env activate .` command. This removes a concern that users
were too easily polluting their anonymous environments with accidental
installations. See #17258
5. **Apple clang compiler** The clang compiler and the apple-clang
compiler are now separate compilers in Spack. This allows Spack to
improve support for the apple-clang compiler. See #17110
6. **Finding external packages** Spack packages can now support an API
for finding external installations. This allows the `spack external
find` command to automatically add installations of those packages to
the user's configuration. See #15158
## Additional new features of note
* support for using Spack with the fish shell (#9279)
* `spack load --first` option to load first match (instead of prompting user) (#15622)
* support the Cray cce compiler both new and classic versions (#17256, #12989)
* `spack dev-build` command:
* supports stopping before a specified phase (#14699)
* supports automatically launching a shell in the build environment (#14887)
* `spack install --fail-fast` allows builds to fail at the first error (rather than best-effort) (#15295)
* environments: SpecList references can be dereferenced as compiler or dependency constraints (#15245)
* `spack view` command: new support for a copy/relocate view type (#16480)
* ci pipelines: see documentation for several improvements
* `spack mirror -a` command now supports excluding packages (#14154)
* `spack buildcache create` is now environment-aware (#16580)
* module generation: more flexible format for specifying naming schemes (#16629)
* lmod module generation: packages can be configured as core specs for lmod hierarchy (#16517)
## Deprecations and Removals
The following commands were deprecated in v0.13.0, and have now been removed:
* `spack configure`
* `spack build`
* `spack diy`
The following commands were deprecated in v0.14.0, and will be removed in the next major release:
* `spack bootstrap`
## Bugfixes
Some of the most notable bugfixes in this release include:
* Spack environments can now contain the string `-h` (#15429)
* The `spack install` gracefully handles being backgrounded (#15723, #14682)
* Spack uses `-isystem` instead of `-I` in cases that the underlying build system does as well (#16077)
* Spack no longer prints any specs that cannot be safely copied into a Spack command (#16462)
* Incomplete Spack environments containing python no longer cause problems (#16473)
* Several improvements to binary package relocation
## Package Improvements
The Spack project is constantly engaged in routine maintenance,
bugfixes, and improvements for the package ecosystem. Of particular
note in this release are the following:
* Spack now contains 4339 packages. There are 430 newly supported packages in v0.15.0
* GCC now builds properly on ARM architectures (#17280)
* Python: patched to support compiling mixed C/C++ python modules through distutils (#16856)
* improvements to pytorch and py-tensorflow packages
* improvements to major MPI implementations: mvapich2, mpich, openmpi, and others
## Spack Project Management:
* Much of the Spack CI infrastructure has moved from Travis to GitHub Actions (#16610, #14220, #16345)
* All merges to the `develop` branch run E4S CI pipeline (#16338)
* New `spack debug report` command makes reporting bugs easier (#15834)
# v0.14.2 (2020-04-15)
This is a minor release on the `0.14` series. It includes performance
improvements and bug fixes:
@@ -13,7 +107,7 @@ improvements and bug fixes:
* Avoid adding spurious `LMOD` env vars to Intel modules (#15778)
* Don't output [+] for mock installs run during tests (#15609)
# v0.14.1 (2019-03-20)
# v0.14.1 (2020-03-20)
This is a bugfix release on top of `v0.14.0`. Specific fixes include:
@@ -40,7 +134,7 @@ This is a bugfix release on top of `v0.14.0`. Specific fixes include:
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
on Gitlab runners. Pipeline support is now integrated 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.
@@ -140,8 +234,8 @@ 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)
* avoid re-fetching already added patches (#13908)
* avoid re-fetching already 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)

View File

@@ -1,7 +1,10 @@
# <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)
[![MacOS Tests](https://github.com/spack/spack/workflows/macos%20tests/badge.svg)](https://github.com/spack/spack/actions)
[![Linux Tests](https://github.com/spack/spack/workflows/linux%20tests/badge.svg)](https://github.com/spack/spack/actions)
[![Linux Builds](https://github.com/spack/spack/workflows/linux%20builds/badge.svg)](https://github.com/spack/spack/actions)
[![macOS Builds (nightly)](https://github.com/spack/spack/workflows/macOS%20builds%20nightly/badge.svg?branch=develop)](https://github.com/spack/spack/actions?query=workflow%3A%22macOS+builds+nightly%22)
[![Build Status](https://travis-ci.com/spack/spack.svg?branch=develop)](https://travis-ci.com/spack/spack)
[![codecov](https://codecov.io/gh/spack/spack/branch/develop/graph/badge.svg)](https://codecov.io/gh/spack/spack)
[![Read the Docs](https://readthedocs.org/projects/spack/badge/?version=latest)](https://spack.readthedocs.io)
[![Slack](https://spackpm.herokuapp.com/badge.svg)](https://spackpm.herokuapp.com)
@@ -120,4 +123,4 @@ See [LICENSE-MIT](https://github.com/spack/spack/blob/develop/LICENSE-MIT),
SPDX-License-Identifier: (Apache-2.0 OR MIT)
LLNL-CODE-647188
LLNL-CODE-811652

View File

@@ -22,4 +22,4 @@
#
# This is compatible across platforms.
#
/usr/bin/env spack python "$@"
exec /usr/bin/env spack python "$@"

View File

@@ -75,6 +75,12 @@ config:
misc_cache: ~/.spack/cache
# Timeout in seconds used for downloading sources etc. This only applies
# to the connection phase and can be increased for slow connections or
# servers. 0 means no timeout.
connect_timeout: 10
# If this is false, tools like curl that use SSL will not verify
# certifiates. (e.g., curl will use use the -k option)
verify_ssl: true
@@ -151,3 +157,7 @@ config:
# Has no effect on macOS. DO NOT MIX these within the same install tree.
# See the Spack documentation for details.
shared_linking: 'rpath'
# Set to 'false' to allow installation on filesystems that doesn't allow setgid bit
# manipulation by unprivileged user (e.g. AFS)
allow_sgid: true

View File

@@ -16,8 +16,6 @@
modules:
prefix_inspections:
lib:
- DYLD_LIBRARY_PATH
- DYLD_FALLBACK_LIBRARY_PATH
lib64:
- DYLD_LIBRARY_PATH
- DYLD_FALLBACK_LIBRARY_PATH

View File

@@ -15,7 +15,11 @@
# -------------------------------------------------------------------------
packages:
all:
compiler: [clang, gcc, intel]
compiler:
- apple-clang
- clang
- gcc
- intel
providers:
elf: [libelf]
unwind: [apple-libunwind]

View File

@@ -30,7 +30,11 @@ modules:
lib64:
- LIBRARY_PATH
include:
- CPATH
- C_INCLUDE_PATH
- CPLUS_INCLUDE_PATH
# The INCLUDE env variable specifies paths to look for
# .mod file for Intel Fortran compilers
- INCLUDE
lib/pkgconfig:
- PKG_CONFIG_PATH
lib64/pkgconfig:

View File

@@ -27,6 +27,7 @@ packages:
glx: [mesa+glx, opengl]
glu: [mesa-glu, openglu]
golang: [gcc]
iconv: [libiconv]
ipp: [intel-ipp]
java: [openjdk, jdk, ibm-java]
jpeg: [libjpeg-turbo, libjpeg]
@@ -39,6 +40,7 @@ packages:
opencl: [pocl]
pil: [py-pillow]
pkgconfig: [pkgconf, pkg-config]
rpc: [libtirpc]
scalapack: [netlib-scalapack]
sycl: [hipsycl]
szip: [libszip, libaec]

View File

@@ -25,6 +25,14 @@ It is recommended that the following be put in your ``.bashrc`` file:
alias less='less -R'
If you do not see colorized output when using ``less -R`` it is because color
is being disabled in the piped output. In this case, tell spack to force
colorized output.
.. code-block:: console
$ spack --color always | less -R
--------------------------
Listing available packages
--------------------------
@@ -45,7 +53,7 @@ can install:
.. command-output:: spack list
:ellipsis: 10
There are thosands of them, so we've truncated the output above, but you
There are thousands of them, so we've truncated the output above, but you
can find a :ref:`full list here <package-list>`.
Packages are listed by name in alphabetical order.
A pattern to match with no wildcards, ``*`` or ``?``,
@@ -267,7 +275,7 @@ the ``spack gc`` ("garbage collector") command, which will uninstall all unneede
-- 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
In the example above Spack went through all the packages in the package database
and removed everything that is not either:
1. A package installed upon explicit request of the user
@@ -619,8 +627,8 @@ output metadata on specs and all dependencies as json:
"target": "x86_64"
},
"compiler": {
"name": "clang",
"version": "10.0.0-apple"
"name": "apple-clang",
"version": "10.0.0"
},
"namespace": "builtin",
"parameters": {
@@ -854,7 +862,7 @@ Variants are named options associated with a particular package. They are
optional, as each package must provide default values for each variant it
makes available. Variants can be specified using
a flexible parameter syntax ``name=<value>``. For example,
``spack install libelf debug=True`` will install libelf build with debug
``spack install libelf debug=True`` will install libelf built with debug
flags. The names of particular variants available for a package depend on
what was provided by the package author. ``spack info <package>`` will
provide information on what build variants are available.
@@ -917,7 +925,7 @@ contains any spaces. Any of ``cppflags=-O3``, ``cppflags="-O3"``,
``cppflags='-O3'``, and ``cppflags="-O3 -fPIC"`` are acceptable, but
``cppflags=-O3 -fPIC`` is not. Additionally, if the value of the
compiler flags is not the last thing on the line, it must be followed
by a space. The commmand ``spack install libelf cppflags="-O3"%intel``
by a space. The command ``spack install libelf cppflags="-O3"%intel``
will be interpreted as an attempt to set ``cppflags="-O3%intel"``.
The six compiler flags are injected in the order of implicit make commands
@@ -1067,13 +1075,13 @@ of failing:
In the snippet above, for instance, the microarchitecture was demoted to ``haswell`` when
compiling with ``gcc@4.8`` since support to optimize for ``broadwell`` starts from ``gcc@4.9:``.
Finally if Spack has no information to match compiler and target, it will
Finally, if Spack has no information to match compiler and target, it will
proceed with the installation but avoid injecting any microarchitecture
specific flags.
.. warning::
Currently Spack doesn't print any warning to the user if it has no information
Currently, Spack doesn't print any warning to the user if it has no information
on which optimization flags should be used for a given compiler. This behavior
might change in the future.
@@ -1083,7 +1091,7 @@ specific flags.
Virtual dependencies
--------------------
The dependence graph for ``mpileaks`` we saw above wasn't *quite*
The dependency graph for ``mpileaks`` we saw above wasn't *quite*
accurate. ``mpileaks`` uses MPI, which is an interface that has many
different implementations. Above, we showed ``mpileaks`` and
``callpath`` depending on ``mpich``, which is one *particular*
@@ -1226,6 +1234,8 @@ add a version specifier to the spec:
Notice that the package versions that provide insufficient MPI
versions are now filtered out.
.. _extensions:
---------------------------
Extensions & Python support
---------------------------
@@ -1233,8 +1243,7 @@ Extensions & Python support
Spack's installation model assumes that each package will live in its
own install prefix. However, certain packages are typically installed
*within* the directory hierarchy of other packages. For example,
modules in interpreted languages like `Python
<https://www.python.org>`_ are typically installed in the
`Python <https://www.python.org>`_ packages are typically installed in the
``$prefix/lib/python-2.7/site-packages`` directory.
Spack has support for this type of installation as well. In Spack,
@@ -1410,12 +1419,12 @@ packages listed as activated:
py-nose@1.3.4 py-numpy@1.9.1 py-setuptools@11.3.1
Now, when a user runs python, ``numpy`` will be available for import
*without* the user having to explicitly loaded. ``python@2.7.8`` now
*without* the user having to explicitly load it. ``python@2.7.8`` now
acts like a system Python installation with ``numpy`` installed inside
of it.
Spack accomplishes this by symbolically linking the *entire* prefix of
the ``py-numpy`` into the prefix of the ``python`` package. To the
the ``py-numpy`` package into the prefix of the ``python`` package. To the
python interpreter, it looks like ``numpy`` is installed in the
``site-packages`` directory.

View File

@@ -57,6 +57,12 @@ Build caches are installed via:
$ spack buildcache install
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
List of popular build caches
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* `Extreme-scale Scientific Software Stack (E4S) <https://e4s-project.github.io/>`_: `build cache <https://oaciss.uoregon.edu/e4s/inventory.html>`_
----------
Relocation

View File

@@ -124,6 +124,78 @@ The ``buildable`` does not need to be paired with external packages.
It could also be used alone to forbid packages that may be
buggy or otherwise undesirable.
Virtual packages in Spack can also be specified as not buildable, and
external implementations can be provided. In the example above,
OpenMPI is configured as not buildable, but Spack will often prefer
other MPI implementations over the externally available OpenMPI. Spack
can be configured with every MPI provider not buildable individually,
but more conveniently:
.. code-block:: yaml
packages:
mpi:
buildable: False
openmpi:
paths:
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
Implementations can also be listed immediately under the virtual they provide:
.. code-block:: yaml
packages:
mpi:
buildable: False
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
mpich@3.3 %clang@9.0.0 arch=linux-debian7-x86_64: /opt/mpich-3.3-intel
Spack can then use any of the listed external implementations of MPI
to satisfy a dependency, and will choose depending on the compiler and
architecture.
.. _cmd-spack-external-find:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Automatically Find External Packages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can run the :ref:`spack external find <spack-external-find>` command
to search for system-provided packages and add them to ``packages.yaml``.
After running this command your ``packages.yaml`` may include new entries:
.. code-block:: yaml
packages:
cmake:
paths:
cmake@3.17.2: /usr
Generally this is useful for detecting a small set of commonly-used packages;
for now this is generally limited to finding build-only dependencies.
Specific limitations include:
* Packages are not discoverable by default: For a package to be
discoverable with ``spack external find``, it needs to add special
logic. See :ref:`here <make-package-findable>` for more details.
* The current implementation only collects and examines executable files,
so it is typically only useful for build/run dependencies (in some cases
if a library package also provides an executable, it may be possible to
extract a meaningful Spec by running the executable - for example the
compiler wrappers in MPI implementations).
* The logic does not search through module files, it can only detect
packages with executables defined in ``PATH``; you can help Spack locate
externals which use module files by loading any associated modules for
packages that you want Spack to know about before running
``spack external find``.
* Spack does not overwrite existing entries in the package configuration:
If there is an external defined for a spec at any configuration scope,
then Spack will not add a new external entry (``spack config blame packages``
can help locate all external entries).
.. _concretization-preferences:

View File

@@ -233,7 +233,124 @@ You may have noticed that most of the Autotools flags are of the form
``--without-baz``. Since these flags are so common, Spack provides a
couple of helper functions to make your life easier.
TODO: document ``with_or_without`` and ``enable_or_disable``.
"""""""""""""""""
enable_or_disable
"""""""""""""""""
Autotools flags for simple boolean variants can be automatically
generated by calling the ``enable_or_disable`` method. This is
typically used to enable or disable some feature within the package.
.. code-block:: python
variant(
'memchecker',
default=False,
description='Memchecker support for debugging [degrades performance]'
)
config_args.extend(self.enable_or_disable('memchecker'))
In this example, specifying the variant ``+memchecker`` will generate
the following configuration options:
.. code-block:: console
--enable-memchecker
"""""""""""""""
with_or_without
"""""""""""""""
Autotools flags for more complex variants, including boolean variants
and multi-valued variants, can be automatically generated by calling
the ``with_or_without`` method.
.. code-block:: python
variant(
'schedulers',
values=disjoint_sets(
('auto',), ('alps', 'lsf', 'tm', 'slurm', 'sge', 'loadleveler')
).with_non_feature_values('auto', 'none'),
description="List of schedulers for which support is enabled; "
"'auto' lets openmpi determine",
)
if 'schedulers=auto' not in spec:
config_args.extend(self.with_or_without('schedulers'))
In this example, specifying the variant ``schedulers=slurm,sge`` will
generate the following configuration options:
.. code-block:: console
--with-slurm --with-sge
``enable_or_disable`` is actually functionally equivalent with
``with_or_without``, and accepts the same arguments and variant types;
but idiomatic autotools packages often follow these naming
conventions.
""""""""""""""""
activation_value
""""""""""""""""
Autotools parameters that require an option can still be automatically
generated, using the ``activation_value`` argument to
``with_or_without`` (or, rarely, ``enable_or_disable``).
.. code-block:: python
variant(
'fabrics',
values=disjoint_sets(
('auto',), ('psm', 'psm2', 'verbs', 'mxm', 'ucx', 'libfabric')
).with_non_feature_values('auto', 'none'),
description="List of fabrics that are enabled; "
"'auto' lets openmpi determine",
)
if 'fabrics=auto' not in spec:
config_args.extend(self.with_or_without('fabrics',
activation_value='prefix'))
``activation_value`` accepts a callable that generates the configure
parameter value given the variant value; but the special value
``prefix`` tells Spack to automatically use the dependenency's
installation prefix, which is the most common use for such
parameters. In this example, specifying the variant
``fabrics=libfabric`` will generate the following configuration
options:
.. code-block:: console
--with-libfabric=</path/to/libfabric>
""""""""""""""""""""
activation overrides
""""""""""""""""""""
Finally, the behavior of either ``with_or_without`` or
``enable_or_disable`` can be overridden for specific variant
values. This is most useful for multi-values variants where some of
the variant values require atypical behavior.
.. code-block:: python
def with_or_without_verbs(self, activated):
# Up through version 1.6, this option was named --with-openib.
# In version 1.7, it was renamed to be --with-verbs.
opt = 'verbs' if self.spec.satisfies('@1.7:') else 'openib'
if not activated:
return '--without-{0}'.format(opt)
return '--with-{0}={1}'.format(opt, self.spec['rdma-core'].prefix)
Defining ``with_or_without_verbs`` overrides the behavior of a
``fabrics=verbs`` variant, changing the configure-time option to
``--with-openib`` for older versions of the package and specifying an
alternative dependency name:
.. code-block::
--with-openib=</path/to/rdma-core>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Configure script in a sub-directory

View File

@@ -128,17 +128,20 @@ Adding flags to cmake
^^^^^^^^^^^^^^^^^^^^^
To add additional flags to the ``cmake`` call, simply override the
``cmake_args`` function:
``cmake_args`` function. The following example defines values for the flags
``WHATEVER``, ``ENABLE_BROKEN_FEATURE``, ``DETECT_HDF5``, and ``THREADS`` with
and without the :py:meth:`~.CMakePackage.define` and
:py:meth:`~.CMakePackage.define_from_variant` helper functions:
.. code-block:: python
def cmake_args(self):
args = []
if '+hdf5' in self.spec:
args.append('-DDETECT_HDF5=ON')
else:
args.append('-DDETECT_HDF5=OFF')
args = [
'-DWHATEVER:STRING=somevalue',
self.define('ENABLE_BROKEN_FEATURE', False),
self.define_from_variant('DETECT_HDF5', 'hdf5'),
self.define_from_variant('THREADS'), # True if +threads
]
return args

View File

@@ -37,7 +37,7 @@ In order to use it, just add another base class to your package, for example:
if '+cuda' in spec:
options.append('-DWITH_CUDA=ON')
cuda_arch = spec.variants['cuda_arch'].value
if cuda_arch is not None:
if cuda_arch != 'none':
options.append('-DCUDA_FLAGS=-arch=sm_{0}'.format(cuda_arch[0]))
else:
options.append('-DWITH_CUDA=OFF')

View File

@@ -553,7 +553,7 @@ follow `the next section <intel-install-libs_>`_ instead.
f77: stub
fc: stub
Replace ``18.0.3`` with the version that you determined in the preceeding
Replace ``18.0.3`` with the version that you determined in the preceding
step. The contents under ``paths:`` do not matter yet.
You are right to ask: "Why on earth is that necessary?" [fn8]_.
@@ -696,7 +696,7 @@ follow `the next section <intel-install-libs_>`_ instead.
- /home/$user/spack-stage
Do not duplicate the ``config:`` line if it already is present.
Adapt the location, which here is the same as in the preceeding example.
Adapt the location, which here is the same as in the preceding example.
3. Retry installing the large package.
@@ -965,7 +965,7 @@ a *virtual* ``mkl`` package is declared in Spack.
Likewise, in a
:ref:`MakefilePackage <makefilepackage>`
or similiar package that does not use AutoTools you may need to provide include
or similar package that does not use AutoTools you may need to provide include
and link options for use on command lines or in environment variables.
For example, to generate an option string of the form ``-I<dir>``, use:
@@ -1055,6 +1055,6 @@ Footnotes
2. Set the hash length in ``install-path-scheme``, also in ``config.yaml``
(:ref:`q.v. <config-yaml>`).
3. You will want to set the *same* hash length for
:ref:`tcl module files <modules-naming-scheme>`
if you have Spack produce them for you, under ``naming_scheme`` in
``modules.yaml``. Other module dialects cannot be altered in this manner.
:ref:`module files <modules-projections>`
if you have Spack produce them for you, under ``projections`` in
``modules.yaml``.

View File

@@ -51,10 +51,8 @@ Build system dependencies
``SIPPackage`` requires several dependencies. Python is needed to run
the ``configure.py`` build script, and to run the resulting Python
libraries. Qt is needed to provide the ``qmake`` command. SIP is also
needed to build the package. SIP is an unusual dependency in that it
must be installed in the same installation directory as the package,
so instead of a ``depends_on``, we use a ``resource``. All of these
dependencies are automatically added via the base class
needed to build the package. All of these dependencies are automatically
added via the base class
.. code-block:: python
@@ -62,11 +60,7 @@ dependencies are automatically added via the base class
depends_on('qt', type='build')
resource(name='sip',
url='https://www.riverbankcomputing.com/static/Downloads/sip/4.19.18/sip-4.19.18.tar.gz',
sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e',
destination='.')
depends_on('py-sip', type='build')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Passing arguments to ``configure.py``

View File

@@ -47,8 +47,9 @@ Each phase provides a ``<phase>`` function that runs:
where ``<jobs>`` is the number of parallel jobs to build with. Each phase
also has a ``<phase_args>`` function that can pass arguments to this call.
All of these functions are empty except for the ``configure_args``
function, which passes ``--prefix=/path/to/installation/prefix``.
All of these functions are empty. The ``configure`` phase
automatically adds ``--prefix=/path/to/installation/prefix``, so you
don't need to add that in the ``configure_args``.
^^^^^^^
Testing

View File

@@ -44,7 +44,7 @@ Environments:
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps
# Install the software, remove unnecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Strip all the binaries
@@ -108,7 +108,7 @@ are currently supported are summarized in the table below:
- ``ubuntu:16.04``
- ``spack/ubuntu-xenial``
* - Ubuntu 18.04
- ``ubuntu:16.04``
- ``ubuntu:18.04``
- ``spack/ubuntu-bionic``
* - CentOS 6
- ``centos:6``
@@ -165,7 +165,7 @@ of environments:
# 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
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:
@@ -266,7 +266,7 @@ following ``Dockerfile``:
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps
# Install the software, remove unnecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Strip all the binaries
@@ -304,4 +304,4 @@ following ``Dockerfile``:
.. 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``.
from them is ``3.5.3``.

View File

@@ -385,8 +385,8 @@ coverage. This helps us tell what percentage of lines of code in Spack are
covered by unit tests. Although code covered by unit tests can still contain
bugs, it is much less error prone than code that is not covered by unit tests.
Codecov provides `browser extensions <https://github.com/codecov/browser-extension>`_
for Google Chrome, Firefox, and Opera. These extensions integrate with GitHub
Codecov provides `browser extensions <https://github.com/codecov/sourcegraph-codecov>`_
for Google Chrome and Firefox. These extensions integrate with GitHub
and allow you to see coverage line-by-line when viewing the Spack repository.
If you are new to Spack, a great way to get started is to write unit tests to
increase coverage!

View File

@@ -130,7 +130,7 @@ To activate an environment, use the following command:
By default, the ``spack env activate`` will load the view associated
with the Environment into the user environment. The ``-v,
--with-view`` argument ensures this behavior, and the ``-V,
--without-vew`` argument activates the environment without changing
--without-view`` argument activates the environment without changing
the user environment variables.
The ``-p`` option to the ``spack env activate`` command modifies the
@@ -167,15 +167,6 @@ Any directory can be treated as an environment if it contains a file
$ spack env activate -d /path/to/directory
Spack commands that are environment sensitive will also act on the
environment any time the current working directory contains a
``spack.yaml`` file. Changing working directory to a directory
containing a ``spack.yaml`` file is equivalent to the command:
.. code-block:: console
$ spack env activate -d /path/to/dir --without-view
Anonymous specs can be created in place using the command:
.. code-block:: console
@@ -281,18 +272,18 @@ in the lockfile, nor does it install the spec.
The ``spack add`` command is environment aware. It adds to the
currently active environment. All environment aware commands can also
be called using the ``spack -E`` flag to specify the environment.
be called using the ``spack -e`` flag to specify the environment.
.. code-block:: console
$ spack activate myenv
$ spack env activate myenv
$ spack add mpileaks
or
.. code-block:: console
$ spack -E myenv add python
$ spack -e myenv add python
.. _environments_concretization:
@@ -602,7 +593,7 @@ files are identical.
spack:
definitions:
- first: [libelf, libdwarf]
- compilers: ['%gcc', '^intel']
- compilers: ['%gcc', '%intel']
- second:
- $first
- matrix:
@@ -647,7 +638,7 @@ named list ``compilers`` is ``['%gcc', '%clang', '%intel']`` on
spack:
definitions:
- compilers: ['%gcc', '%clang']
- when: target == 'x86_64'
- when: arch.satisfies('x86_64:')
compilers: ['%intel']
.. note::
@@ -666,8 +657,12 @@ The valid variables for a ``when`` clause are:
#. ``target``. The target string of the default Spack
architecture on the system.
#. ``architecture`` or ``arch``. The full string of the
default Spack architecture on the system.
#. ``architecture`` or ``arch``. A Spack spec satisfying the default Spack
architecture on the system. This supports querying via the ``satisfies``
method, as shown above.
#. ``arch_str``. The architecture string of the default Spack architecture
on the system.
#. ``re``. The standard regex module in Python.
@@ -676,6 +671,40 @@ The valid variables for a ``when`` clause are:
#. ``hostname``. The hostname of the system (if ``hostname`` is an
executable in the user's PATH).
""""""""""""""""""""""""
SpecLists as Constraints
""""""""""""""""""""""""
Dependencies and compilers in Spack can be both packages in an
environment and constraints on other packages. References to SpecLists
allow a shorthand to treat packages in a list as either a compiler or
a dependency using the ``$%`` or ``$^`` syntax respectively.
For example, the following environment has three root packages:
``gcc@8.1.0``, ``mvapich2@2.3.1 %gcc@8.1.0``, and ``hdf5+mpi
%gcc@8.1.0 ^mvapich2@2.3.1``.
.. code-block:: yaml
spack:
definitions:
- compilers: [gcc@8.1.0]
- mpis: [mvapich2@2.3.1]
- packages: [hdf5+mpi]
specs:
- $compilers
- matrix:
- [$mpis]
- [$%compilers]
- matrix:
- [$packages]
- [$^mpis]
- [$%compilers]
This allows for a much-needed reduction in redundancy between packages
and constraints.
^^^^^^^^^^^^^^^^^^^^^^^^^
Environment-managed Views
^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -71,10 +71,6 @@ This automatically adds Spack to your ``PATH`` and allows the ``spack``
command to be used to execute spack :ref:`commands <shell-support>` and
:ref:`useful packaging commands <packaging-shell-support>`.
If :ref:`environment-modules <InstallEnvironmentModules>` is
installed and available, the ``spack`` command can also load and unload
:ref:`modules <modules>`.
^^^^^^^^^^^^^^^^^
Clean Environment
^^^^^^^^^^^^^^^^^
@@ -482,7 +478,7 @@ Fortran.
cxx: /usr/bin/clang++
f77: /path/to/bin/gfortran
fc: /path/to/bin/gfortran
spec: clang@11.0.0-apple
spec: apple-clang@11.0.0
If you used Spack to install GCC, you can get the installation prefix by
@@ -851,7 +847,7 @@ from websites and from git.
.. warning::
This workaround should be used ONLY as a last resort! Wihout SSL
This workaround should be used ONLY as a last resort! Without SSL
certificate verification, spack and git will download from sites you
wouldn't normally trust. The code you download and run may then be
compromised! While this is not a major issue for archives that will
@@ -900,9 +896,8 @@ Core Spack Utilities
^^^^^^^^^^^^^^^^^^^^
Core Spack uses the following packages, mainly to download and unpack
source code, and to load generated environment modules: ``curl``,
``env``, ``git``, ``go``, ``hg``, ``svn``, ``tar``, ``unzip``,
``patch``, ``environment-modules``.
source code: ``curl``, ``env``, ``git``, ``go``, ``hg``, ``svn``,
``tar``, ``unzip``, ``patch``
As long as the user's environment is set up to successfully run these
programs from outside of Spack, they should work inside of Spack as
@@ -910,10 +905,6 @@ well. They can generally be activated as in the ``curl`` example above;
or some systems might already have an appropriate hand-built
environment module that may be loaded. Either way works.
If you find that you are missing some of these programs, ``spack`` can
build some of them for you with ``spack bootstrap``. Currently supported
programs are ``environment-modules``.
A few notes on specific programs in this list:
""""""""""""""""""""""""""
@@ -941,45 +932,6 @@ other programs will also not work, because they also rely on OpenSSL.
Once ``curl`` has been installed, you can similarly install the others.
.. _InstallEnvironmentModules:
"""""""""""""""""""
Environment Modules
"""""""""""""""""""
In order to use Spack's generated module files, you must have
installed ``environment-modules`` or ``lmod``. The simplest way
to get the latest version of either of these tools is installing
it as part of Spack's bootstrap procedure:
.. code-block:: console
$ spack bootstrap
.. warning::
At the moment ``spack bootstrap`` is only able to install ``environment-modules``.
Extending its capabilities to prefer ``lmod`` where possible is in the roadmap,
and likely to happen before the next release.
Alternatively, on many Linux distributions, you can install a pre-built binary
from the vendor's repository. On Fedora/RHEL/CentOS, for example, this can be
done with the command:
.. code-block:: console
$ yum install environment-modules
Once you have the tool installed and available in your path, you can source
Spack's setup file:
.. code-block:: console
$ source share/spack/setup-env.sh
This activates :ref:`shell support <shell-support>` and makes commands like
``spack load`` available for use.
^^^^^^^^^^^^^^^^^
Package Utilities
^^^^^^^^^^^^^^^^^

View File

@@ -17,22 +17,16 @@ Spack integrates with `Environment Modules
<http://lmod.readthedocs.io/en/latest/>`_ by
providing post-install hooks that generate module files and commands to manipulate them.
.. note::
If your machine does not already have a module system installed,
we advise you to use either Environment Modules or LMod. See :ref:`InstallEnvironmentModules`
for more details.
.. _shell-support:
----------------------------
Using module files via Spack
----------------------------
If you have installed a supported module system either manually or through
``spack bootstrap``, you should be able to run either ``module avail`` or
``use -l spack`` to see what module files have been installed. Here is
sample output of those programs, showing lots of installed packages:
If you have installed a supported module system you should be able to
run either ``module avail`` or ``use -l spack`` to see what module
files have been installed. Here is sample output of those programs,
showing lots of installed packages:
.. code-block:: console
@@ -93,9 +87,7 @@ Note that in the latter case it is necessary to explicitly set ``SPACK_ROOT``
before sourcing the setup file (you will get a meaningful error message
if you don't).
When ``bash`` and ``ksh`` users update their environment with ``setup-env.sh``, it will check for spack-installed environment modules and add the ``module`` command to their environment; This only occurs if the module command is not already available. You can install ``environment-modules`` with ``spack bootstrap`` as described in :ref:`InstallEnvironmentModules`.
Finally, if you want to have Spack's shell support available on the command line at
If you want to have Spack's shell support available on the command line at
any login you can put this source line in one of the files that are sourced
at startup (like ``.profile``, ``.bashrc`` or ``.cshrc``). Be aware though
that the startup time may be slightly increased because of that.
@@ -165,8 +157,6 @@ used ``gcc``. You could therefore just type:
To identify just the one built with the Intel compiler.
.. _extensions:
.. _cmd-spack-module-loads:
^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -469,14 +459,14 @@ is compiled with ``gcc@4.4.7``, with the only exception of any ``gcc``
or any ``llvm`` installation.
.. _modules-naming-scheme:
.. _modules-projections:
"""""""""""""""""""""""""""
Customize the naming scheme
"""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""
Customize the naming of modules
"""""""""""""""""""""""""""""""
The names of environment modules generated by spack are not always easy to
fully comprehend due to the long hash in the name. There are two module
fully comprehend due to the long hash in the name. There are three module
configuration options to help with that. The first is a global setting to
adjust the hash length. It can be set anywhere from 0 to 32 and has a default
length of 7. This is the representation of the hash in the module file name and
@@ -510,20 +500,46 @@ version of python a set of python extensions is associated with. Likewise, the
``openblas`` string is attached to any program that has openblas in the spec,
most likely via the ``+blas`` variant specification.
The most heavyweight solution to module naming is to change the entire
naming convention for module files. This uses the projections format
covered in :ref:`adding_projections_to_views`.
.. code-block:: yaml
modules:
tcl:
projections:
all: '{name}/{version}-{compiler.name}-{compiler.version}-module'
^mpi: '{name}/{version}-{^mpi.name}-{^mpi.version}-{compiler.name}-{compiler.version}-module'
will create module files that are nested in directories by package
name, contain the version and compiler name and version, and have the
word ``module`` before the hash for all specs that do not depend on
mpi, and will have the same information plus the MPI implementation
name and version for all packages that depend on mpi.
When specifying module names by projection for Lmod modules, we
recommend NOT including names of dependencies (e.g., MPI, compilers)
that are already in the LMod hierarchy.
.. note::
TCL module files
A modification that is specific to ``tcl`` module files is the possibility
to change the naming scheme of modules.
TCL modules
TCL modules also allow for explicit conflicts between modulefiles.
.. code-block:: yaml
modules:
tcl:
naming_scheme: '{name}/{version}-{compiler.name}-{compiler.version}'
all:
conflict:
- '{name}'
- 'intel/14.0.1'
modules:
enable:
- tcl
tcl:
projections:
all: '{name}/{version}-{compiler.name}-{compiler.version}'
all:
conflict:
- '{name}'
- 'intel/14.0.1'
will create module files that will conflict with ``intel/14.0.1`` and with the
base directory of the same module, effectively preventing the possibility to
@@ -548,6 +564,8 @@ most likely via the ``+blas`` variant specification.
lmod:
core_compilers:
- 'gcc@4.8'
core_specs:
- 'python'
hierarchy:
- 'mpi'
- 'lapack'
@@ -557,6 +575,15 @@ most likely via the ``+blas`` variant specification.
implementations of ``mpi`` and ``lapack``, and let LMod switch safely from one to the
other.
All packages built with a compiler in ``core_compilers`` and all
packages that satisfy a spec in ``core_specs`` will be put in the
``Core`` hierarchy of the lua modules.
.. warning::
Consistency of Core packages
The user is responsible for maintining consistency among core packages, as ``core_specs``
bypasses the hierarchy that allows LMod to safely switch between coherent software stacks.
.. warning::
Deep hierarchies and ``lmod spider``
For hierarchies that are deeper than three layers ``lmod spider`` may have some issues.

View File

@@ -1675,15 +1675,15 @@ can see the patches that would be applied to ``m4``::
Concretized
--------------------------------
m4@1.4.18%clang@9.0.0-apple patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=darwin-highsierra-x86_64
^libsigsegv@2.11%clang@9.0.0-apple arch=darwin-highsierra-x86_64
m4@1.4.18%apple-clang@9.0.0 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv arch=darwin-highsierra-x86_64
^libsigsegv@2.11%apple-clang@9.0.0 arch=darwin-highsierra-x86_64
You can also see patches that have been applied to installed packages
with ``spack find -v``::
$ spack find -v m4
==> 1 installed package
-- darwin-highsierra-x86_64 / clang@9.0.0-apple -----------------
-- darwin-highsierra-x86_64 / apple-clang@9.0.0 -----------------
m4@1.4.18 patches=3877ab548f88597ab2327a2230ee048d2d07ace1062efe81fc92e91b7f39cd00,c0a408fbffb7255fcc75e26bd8edab116fc81d216bfd18b473668b7739a4158e,fc9b61654a3ba1a8d6cd78ce087e7c96366c290bc8d2c299f09828d793b853c8 +sigsegv
.. _cmd-spack-resource:
@@ -1713,7 +1713,7 @@ wonder where the extra boost patches are coming from::
$ spack spec dealii ^boost@1.68.0 ^hdf5+fortran | grep '\^boost'
^boost@1.68.0
^boost@1.68.0%clang@9.0.0-apple+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199,b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f ~pic+program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=darwin-highsierra-x86_64
^boost@1.68.0%apple-clang@9.0.0+atomic+chrono~clanglibcpp cxxstd=default +date_time~debug+exception+filesystem+graph~icu+iostreams+locale+log+math~mpi+multithreaded~numpy patches=2ab6c72d03dec6a4ae20220a9dfd5c8c572c5294252155b85c6874d97c323199,b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f ~pic+program_options~python+random+regex+serialization+shared+signals~singlethreaded+system~taggedlayout+test+thread+timer~versionedlayout+wave arch=darwin-highsierra-x86_64
$ spack resource show b37164268
b37164268f34f7133cbc9a4066ae98fda08adf51e1172223f6a969909216870f
path: /home/spackuser/src/spack/var/spack/repos/builtin/packages/dealii/boost_1.68.0.patch
@@ -2169,13 +2169,17 @@ Adding the following to a package:
.. code-block:: python
conflicts('%intel', when='@1.2')
conflicts('%intel', when='@:1.2',
msg='<myNicePackage> <= v1.2 cannot be built with Intel ICC, '
'please use a newer release.')
we express the fact that the current package *cannot be built* with the Intel
compiler when we are trying to install version "1.2". The ``when`` argument can
be omitted, in which case the conflict will always be active.
compiler when we are trying to install a version "<=1.2". The ``when`` argument
can be omitted, in which case the conflict will always be active.
Conflicts are always evaluated after the concretization step has been performed,
and if any match is found a detailed error message is shown to the user.
You can add an additional message via the ``msg=`` parameter to a conflict that
provideds more specific instructions for users.
.. _packaging_extensions:
@@ -2197,7 +2201,7 @@ property to ``True``, e.g.:
extendable = True
...
To make a package into an extension, simply add simply add an
To make a package into an extension, simply add an
``extends`` call in the package definition, and pass it the name of an
extendable package:
@@ -2212,6 +2216,10 @@ Now, the ``py-numpy`` package can be used as an argument to ``spack
activate``. When it is activated, all the files in its prefix will be
symbolically linked into the prefix of the python package.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Adding additional constraints
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Some packages produce a Python extension, but are only compatible with
Python 3, or with Python 2. In those cases, a ``depends_on()``
declaration should be made in addition to the ``extends()``
@@ -2231,8 +2239,7 @@ variant(s) are selected. This may be accomplished with conditional
.. code-block:: python
class FooLib(Package):
variant('python', default=True, description= \
'Build the Python extension Module')
variant('python', default=True, description='Build the Python extension Module')
extends('python', when='+python')
...
@@ -2913,7 +2920,7 @@ discover its dependencies.
If you want to see the environment that a package will build with, or
if you want to run commands in that environment to test them out, you
can use the :ref:`cmd-spack-env` command, documented
can use the :ref:`cmd-spack-build-env` command, documented
below.
^^^^^^^^^^^^^^^^^^^^^
@@ -3607,7 +3614,7 @@ the command line.
For most compilers, ``$rpath_flag`` is ``-Wl,-rpath,``. However, NAG
passes its flags to GCC instead of passing them directly to the linker.
Therefore, its ``$rpath_flag`` is doubly wrapped: ``-Wl,-Wl,,-rpath,``.
``$rpath_flag`` can be overriden on a compiler specific basis in
``$rpath_flag`` can be overridden on a compiler specific basis in
``lib/spack/spack/compilers/$compiler.py``.
The compiler wrappers also pass the compiler flags specified by the user from
@@ -4041,6 +4048,70 @@ File functions
:py:func:`touch(path) <spack.touch>`
Create an empty file at ``path``.
.. _make-package-findable:
----------------------------------------------------------
Making a package discoverable with ``spack external find``
----------------------------------------------------------
To make a package discoverable with
:ref:`spack external find <cmd-spack-external-find>` you must
define one or more executables associated with the package and must
implement a method to generate a Spec when given an executable.
The executables are specified as a package level ``executables``
attribute which is a list of strings (see example below); each string
is treated as a regular expression (e.g. 'gcc' would match 'gcc', 'gcc-8.3',
'my-weird-gcc', etc.).
The method ``determine_spec_details`` has the following signature:
.. code-block:: python
def determine_spec_details(prefix, exes_in_prefix):
# exes_in_prefix = a set of paths, each path is an executable
# prefix = a prefix that is common to each path in exes_in_prefix
# return None or [] if none of the exes represent an instance of
# the package. Return one or more Specs for each instance of the
# package which is thought to be installed in the provided prefix
``determine_spec_details`` takes as parameters a set of discovered
executables (which match those specified by the user) as well as a
common prefix shared by all of those executables. The function must
return one or more Specs associated with the executables (it can also
return ``None`` to indicate that no provided executables are associated
with the package).
Say for example we have a package called ``foo-package`` which
builds an executable called ``foo``. ``FooPackage`` would appear as
follows:
.. code-block:: python
class FooPackage(Package):
homepage = "..."
url = "..."
version(...)
# Each string provided here is treated as a regular expression, and
# would match for example 'foo', 'foobar', and 'bazfoo'.
executables = ['foo']
@classmethod
def determine_spec_details(cls, prefix, exes_in_prefix):
candidates = list(x for x in exes_in_prefix
if os.path.basename(x) == 'foo')
if not candidates:
return
# This implementation is lazy and only checks the first candidate
exe_path = candidates[0]
exe = spack.util.executable.Executable(exe_path)
output = exe('--version')
version_str = ... # parse output for version string
return Spec('foo-package@{0}'.format(version_str))
.. _package-lifecycle:
-----------------------------
@@ -4096,16 +4167,23 @@ want to clean up the temporary directory, or if the package isn't
downloading properly, you might want to run *only* the ``fetch`` stage
of the build.
Spack performs best-effort installation of package dependencies by default,
which means it will continue to install as many dependencies as possible
after detecting failures. If you are trying to install a package with a
lot of dependencies where one or more may fail to build, you might want to
try the ``--fail-fast`` option to stop the installation process on the first
failure.
A typical package workflow might look like this:
.. code-block:: console
$ spack edit mypackage
$ spack install mypackage
$ spack install --fail-fast mypackage
... build breaks! ...
$ spack clean mypackage
$ spack edit mypackage
$ spack install mypackage
$ spack install --fail-fast mypackage
... repeat clean/install until install works ...
Below are some commands that will allow you some finer-grained
@@ -4174,23 +4252,29 @@ Does this in one of two ways:
``spack clean``
^^^^^^^^^^^^^^^
Cleans up all of Spack's temporary and cached files. This can be used to
Cleans up Spack's temporary and cached files. This command can be used to
recover disk space if temporary files from interrupted or failed installs
accumulate in the staging area.
accumulate.
When called with ``--stage`` or without arguments this removes all staged
files.
When called with ``--downloads`` this will clear all resources
:ref:`cached <caching>` during installs.
The ``--downloads`` option removes cached :ref:`cached <caching>` downloads.
When called with ``--user-cache`` this will remove caches in the user home
directory, including cached virtual indices.
You can force the removal of all install failure tracking markers using the
``--failures`` option. Note that ``spack install`` will automatically clear
relevant failure markings prior to performing the requested installation(s).
Long-lived caches, like the virtual package index, are removed using the
``--misc-cache`` option.
The ``--python-cache`` option removes `.pyc`, `.pyo`, and `__pycache__`
folders.
To remove all of the above, the command can be called with ``--all``.
When called with positional arguments, cleans up temporary files only
for a particular package. If ``fetch``, ``stage``, or ``install``
When called with positional arguments, this command cleans up temporary files
only for a particular package. If ``fetch``, ``stage``, or ``install``
are run again after this, Spack's build process will start from scratch.
@@ -4332,31 +4416,31 @@ directory, install directory, package directory) and others change to
core spack locations. For example, ``spack cd --module-dir`` will take you to
the main python source directory of your spack install.
.. _cmd-spack-env:
.. _cmd-spack-build-env:
^^^^^^^^^^^^^
``spack env``
^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^
``spack build-env``
^^^^^^^^^^^^^^^^^^^
``spack env`` functions much like the standard unix ``env`` command,
but it takes a spec as an argument. You can use it to see the
``spack build-env`` functions much like the standard unix ``build-env``
command, but it takes a spec as an argument. You can use it to see the
environment variables that will be set when a particular build runs,
for example:
.. code-block:: console
$ spack env mpileaks@1.1%intel
$ spack build-env mpileaks@1.1%intel
This will display the entire environment that will be set when the
``mpileaks@1.1%intel`` build runs.
To run commands in a package's build environment, you can simply
provide them after the spec argument to ``spack env``:
provide them after the spec argument to ``spack build-env``:
.. code-block:: console
$ spack cd mpileaks@1.1%intel
$ spack env mpileaks@1.1%intel ./configure
$ spack build-env mpileaks@1.1%intel ./configure
This will cd to the build directory and then run ``configure`` in the
package's build environment.

View File

@@ -32,30 +32,47 @@ 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
#. Add a ``.gitlab-ci.yml`` at the root containing two jobs (one to generate
the pipeline dynamically, and one to run the generated jobs), similar to
this one:
.. code-block:: yaml
pipeline-job:
stages: [generate, build]
generate-pipeline:
stage: generate
tags:
- <custom-tag>
...
script:
- spack ci start
- spack env activate .
- spack ci generate
--output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/pipeline.yml"
artifacts:
paths:
- "${CI_PROJECT_DIR}/jobs_scratch_dir/pipeline.yml"
build-jobs:
stage: build
trigger:
include:
- artifact: "jobs_scratch_dir/pipeline.yml"
job: generate-pipeline
strategy: depend
#. 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.
The ``<custom-tag>``, above, is used to pick one of your configured runners to
run the pipeline generation phase (this is implemented in the ``spack ci generate``
command, which assumes the runner has an appropriate version of spack installed
and configured for use). Of course, there are many 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
@@ -64,21 +81,30 @@ Gitlab to Google Kubernetes Engine (`GKE <https://cloud.google.com/kubernetes-en
or Amazon Elastic Kubernetes Service (`EKS <https://aws.amazon.com/eks>`_), though those
topics are outside the scope of this document.
Spack's pipelines are now making use of the
`trigger <https://docs.gitlab.com/12.9/ee/ci/yaml/README.html#trigger>` syntax to run
dynamically generated
`child pipelines <https://docs.gitlab.com/12.9/ee/ci/parent_child_pipelines.html>`.
Note that the use of dynamic child pipelines requires running Gitlab version
``>= 12.9``.
-----------------------------------
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
Spack provides a command ``ci`` with two sub-commands: ``spack ci generate`` generates
a pipeline (a .gitlab-ci.yml file) from a spack environment, and ``spack ci rebuild``
checks a spec against a remote mirror and possibly rebuilds it from source and updates
the binary mirror with the latest built package. Both ``spack ci ...`` commands must
be run from within the same 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:
.. _cmd-spack-ci:
^^^^^^^^^^^^^^^^^^
``spack ci``
@@ -87,16 +113,7 @@ file. These environment variables are described in more detail
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:
.. _cmd-spack-ci-generate:
^^^^^^^^^^^^^^^^^^^^^
``spack ci generate``
@@ -105,19 +122,7 @@ by ``spack ci pushyaml``.
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:
.. _cmd-spack-ci-rebuild:
^^^^^^^^^^^^^^^^^^^^
``spack ci rebuild``
@@ -132,7 +137,7 @@ A pipeline-enabled spack environment
------------------------------------
Here's an example of a spack environment file that has been enhanced with
sections desribing a build pipeline:
sections describing a build pipeline:
.. code-block:: yaml
@@ -158,14 +163,14 @@ sections desribing a build pipeline:
- os=ubuntu18.04
runner-attributes:
tags:
- spack-k8s
image: spack/spack_builder_ubuntu_18.04
- spack-kube
image: spack/ubuntu-bionic
- match:
- os=centos7
runner-attributes:
tags:
- spack-k8s
image: spack/spack_builder_centos_7
- spack-kube
image: spack/centos7
cdash:
build-group: Release Testing
url: https://cdash.spack.io
@@ -368,22 +373,30 @@ 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:
the ``generate-pipeline`` job from the top of this document, updated to clone
a custom spack and make sure the generated rebuild jobs will clone it too:
.. code-block:: yaml
pipeline-job:
generate-pipeline:
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>
- spack env activate .
- spack ci generate
--spack-repo ${SPACK_REPO} --spack-ref ${SPACK_REF}
--output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/pipeline.yml"
after_script:
- rm -rf ./spack
artifacts:
paths:
- "${CI_PROJECT_DIR}/jobs_scratch_dir/pipeline.yml"
If the ``spack ci start`` command receives those extra command line arguments,
If the ``spack ci generate`` 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``).
@@ -430,10 +443,3 @@ 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

@@ -280,16 +280,16 @@ you install it, you can use ``spack spec -N``:
Concretized
--------------------------------
builtin.hdf5@1.10.0-patch1%clang@7.0.2-apple+cxx~debug+fortran+mpi+shared~szip~threadsafe arch=darwin-elcapitan-x86_64
^builtin.openmpi@2.0.1%clang@7.0.2-apple~mxm~pmi~psm~psm2~slurm~sqlite3~thread_multiple~tm~verbs+vt arch=darwin-elcapitan-x86_64
^builtin.hwloc@1.11.4%clang@7.0.2-apple arch=darwin-elcapitan-x86_64
^builtin.libpciaccess@0.13.4%clang@7.0.2-apple arch=darwin-elcapitan-x86_64
^builtin.libtool@2.4.6%clang@7.0.2-apple arch=darwin-elcapitan-x86_64
^builtin.m4@1.4.17%clang@7.0.2-apple+sigsegv arch=darwin-elcapitan-x86_64
^builtin.libsigsegv@2.10%clang@7.0.2-apple arch=darwin-elcapitan-x86_64
^builtin.pkg-config@0.29.1%clang@7.0.2-apple+internal_glib arch=darwin-elcapitan-x86_64
^builtin.util-macros@1.19.0%clang@7.0.2-apple arch=darwin-elcapitan-x86_64
^builtin.zlib@1.2.8%clang@7.0.2-apple+pic arch=darwin-elcapitan-x86_64
builtin.hdf5@1.10.0-patch1%apple-clang@7.0.2+cxx~debug+fortran+mpi+shared~szip~threadsafe arch=darwin-elcapitan-x86_64
^builtin.openmpi@2.0.1%apple-clang@7.0.2~mxm~pmi~psm~psm2~slurm~sqlite3~thread_multiple~tm~verbs+vt arch=darwin-elcapitan-x86_64
^builtin.hwloc@1.11.4%apple-clang@7.0.2 arch=darwin-elcapitan-x86_64
^builtin.libpciaccess@0.13.4%apple-clang@7.0.2 arch=darwin-elcapitan-x86_64
^builtin.libtool@2.4.6%apple-clang@7.0.2 arch=darwin-elcapitan-x86_64
^builtin.m4@1.4.17%apple-clang@7.0.2+sigsegv arch=darwin-elcapitan-x86_64
^builtin.libsigsegv@2.10%apple-clang@7.0.2 arch=darwin-elcapitan-x86_64
^builtin.pkg-config@0.29.1%apple-clang@7.0.2+internal_glib arch=darwin-elcapitan-x86_64
^builtin.util-macros@1.19.0%apple-clang@7.0.2 arch=darwin-elcapitan-x86_64
^builtin.zlib@1.2.8%apple-clang@7.0.2+pic arch=darwin-elcapitan-x86_64
.. warning::

View File

@@ -284,8 +284,10 @@ have some drawbacks:
The ``spack load`` and ``spack module tcl loads`` commands, on the
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 load`` commands that fail.
fail. This default behavior may change in the future. For now,
the workaround is to either be more specific on any failing ``spack load``
commands or to use ``spack load --first`` to allow spack to load the
first matching spec.
""""""""""""""""""""""
@@ -444,7 +446,7 @@ environment.
A single-prefix filesystem view is a single directory tree that is the
union of the directory hierarchies of a number of installed packages;
it is similar to the directory hiearchy that might exist under
it is similar to the directory hierarchy that might exist under
``/usr/local``. The files of the view's installed packages are
brought into the view by symbolic or hard links, referencing the
original Spack installation.
@@ -1237,7 +1239,7 @@ you can also manually set them in your ``.bashrc``.
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
3. If you are on a shared workstation, or don't have sudo privileges, you
can't do this.
If you still want to do this anyway, there are several ways around SIP.
@@ -1356,6 +1358,14 @@ The main points that are implemented below:
the spack builds in the config.
(The Travis yaml parser is a bit buggy on the echo command.)
#. Without control for the user, Travis jobs will run on various
``x86_64`` microarchitectures. If you plan to cache build results,
e.g. to accelerate dependency builds, consider building for the
generic ``x86_64`` target only.
Limiting the microarchitecture will also find more packages when
working with the
`E4S Spack build cache <https://oaciss.uoregon.edu/e4s/e4s_buildcache_inventory.html>`_.
#. Builds over 10 minutes need to be prefixed with ``travis_wait``.
Alternatively, generate output once with ``spack install -v``.
@@ -1398,7 +1408,9 @@ The main points that are implemented below:
- if ! which spack >/dev/null; then
mkdir -p $SPACK_ROOT &&
git clone --depth 50 https://github.com/spack/spack.git $SPACK_ROOT &&
echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml;
echo -e "config:""\n build_jobs:"" 2" > $SPACK_ROOT/etc/spack/config.yaml **
echo -e "packages:""\n all:""\n target:"" ['x86_64']"
> $SPACK_ROOT/etc/spack/packages.yaml;
fi
- travis_wait spack install cmake@3.7.2~openssl~ncurses
- travis_wait spack install boost@1.62.0~graph~iostream~locale~log~wave
@@ -1430,12 +1442,7 @@ The following functionality is prepared:
#. Base image: the example starts from a minimal ubuntu.
#. Installing as root: docker images are usually set up as root.
Since some autotools scripts might complain about this being unsafe, we set
``FORCE_UNSAFE_CONFIGURE=1`` to avoid configure errors.
#. Pre-install the spack dependencies, including modules from the packages.
This avoids needing to build those from scratch via ``spack bootstrap``.
#. Pre-install the spack dependencies.
Package installs are followed by a clean-up of the system package index,
to avoid outdated information and it saves space.
@@ -1464,10 +1471,9 @@ In order to build and run the image, execute:
# general environment for docker
ENV DEBIAN_FRONTEND=noninteractive \
SPACK_ROOT=/usr/local \
FORCE_UNSAFE_CONFIGURE=1
SPACK_ROOT=/usr/local
# install minimal spack depedencies
# install minimal spack dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
autoconf \

50
lib/spack/env/cc vendored
View File

@@ -15,9 +15,9 @@
# 1. It allows Spack to swap compilers into and out of builds easily.
# 2. It adds several options to the compile line so that spack
# packages can find their dependencies at build time and run time:
# -I arguments for dependency /include directories.
# -L arguments for dependency /lib directories.
# -Wl,-rpath arguments for dependency /lib directories.
# -I and/or -isystem arguments for dependency /include directories.
# -L arguments for dependency /lib directories.
# -Wl,-rpath arguments for dependency /lib directories.
#
# This is an array of environment variables that need to be set before
@@ -43,7 +43,7 @@ parameters=(
# The compiler input variables are checked for sanity later:
# SPACK_CC, SPACK_CXX, SPACK_F77, SPACK_FC
# The default compiler flags are passed from these variables:
# SPACK_CFLAGS, SPACK_CXXFLAGS, SPACK_FCFLAGS, SPACK_FFLAGS,
# SPACK_CFLAGS, SPACK_CXXFLAGS, SPACK_FFLAGS,
# SPACK_LDFLAGS, SPACK_LDLIBS
# Debug env var is optional; set to "TRUE" for debug logging:
# SPACK_DEBUG
@@ -251,10 +251,11 @@ input_command="$*"
#
# Parse the command line arguments.
#
# We extract -L, -I, and -Wl,-rpath arguments from the command line and
# recombine them with Spack arguments later. We parse these out so that
# we can make sure that system paths come last, that package arguments
# come first, and that Spack arguments are injected properly.
# We extract -L, -I, -isystem and -Wl,-rpath arguments from the
# command line and recombine them with Spack arguments later. We
# parse these out so that we can make sure that system paths come
# last, that package arguments come first, and that Spack arguments
# are injected properly.
#
# All other arguments, including -l arguments, are treated as
# 'other_args' and left in their original order. This ensures that
@@ -273,12 +274,24 @@ system_libdirs=()
system_rpaths=()
libs=()
other_args=()
isystem_system_includes=()
isystem_includes=()
while [ -n "$1" ]; do
# an RPATH to be added after the case statement.
rp=""
case "$1" in
-isystem*)
arg="${1#-isystem}"
isystem_was_used=true
if [ -z "$arg" ]; then shift; arg="$1"; fi
if system_dir "$arg"; then
isystem_system_includes+=("$arg")
else
isystem_includes+=("$arg")
fi
;;
-I*)
arg="${1#-I}"
if [ -z "$arg" ]; then shift; arg="$1"; fi
@@ -425,12 +438,6 @@ then
esac
fi
# Prepend include directories
IFS=':' read -ra include_dirs <<< "$SPACK_INCLUDE_DIRS"
if [[ $mode == cpp || $mode == cc || $mode == as || $mode == ccld ]]; then
includes=("${includes[@]}" "${include_dirs[@]}")
fi
IFS=':' read -ra rpath_dirs <<< "$SPACK_RPATH_DIRS"
if [[ $mode == ccld || $mode == ld ]]; then
@@ -481,9 +488,22 @@ args=()
# flags assembled earlier
args+=("${flags[@]}")
# include directory search paths
# Insert include directories just prior to any system include directories
for dir in "${includes[@]}"; do args+=("-I$dir"); done
for dir in "${isystem_includes[@]}"; do args+=("-isystem$dir"); done
IFS=':' read -ra spack_include_dirs <<< "$SPACK_INCLUDE_DIRS"
if [[ $mode == cpp || $mode == cc || $mode == as || $mode == ccld ]]; then
if [[ "$isystem_was_used" == "true" ]] ; then
for dir in "${spack_include_dirs[@]}"; do args+=("-isystem$dir"); done
else
for dir in "${spack_include_dirs[@]}"; do args+=("-I$dir"); done
fi
fi
for dir in "${system_includes[@]}"; do args+=("-I$dir"); done
for dir in "${isystem_system_includes[@]}"; do args+=("-isystem$dir"); done
# Library search paths
for dir in "${libdirs[@]}"; do args+=("-L$dir"); done

View File

@@ -88,10 +88,11 @@
* Homepage: https://pypi.python.org/pypi/pytest
* Usage: Testing framework used by Spack.
* Version: 3.2.5 (last version supporting Python 2.6)
* Note: This package has been slightly modified to improve
Python 2.6 compatibility. See the following commit if the
vendored copy ever needs to be updated again:
https://github.com/spack/spack/pull/6801/commits/ff513c39f2c67ff615de5cbc581dd69a8ec96526
* Note: This package has been slightly modified:
* We improve Python 2.6 compatibility. See:
https://github.com/spack/spack/pull/6801.
* We have patched pytest not to depend on setuptools. See:
https://github.com/spack/spack/pull/15612
ruamel.yaml
------
@@ -125,4 +126,5 @@
* Homepage: https://altgraph.readthedocs.io/en/latest/index.html
* Usage: dependency of macholib
* Version: 0.16.1
"""

View File

@@ -1028,34 +1028,13 @@ def _consider_importhook(self, args):
except SystemError:
mode = 'plain'
else:
self._mark_plugins_for_rewrite(hook)
# REMOVED FOR SPACK: This routine imports `pkg_resources` from
# `setuptools`, but we do not need it for Spack. We have removed
# it from Spack to avoid a dependency on setuptools.
# self._mark_plugins_for_rewrite(hook)
pass
self._warn_about_missing_assertion(mode)
def _mark_plugins_for_rewrite(self, hook):
"""
Given an importhook, mark for rewrite any top-level
modules or packages in the distribution package for
all pytest plugins.
"""
import pkg_resources
self.pluginmanager.rewrite_hook = hook
# 'RECORD' available for plugins installed normally (pip install)
# 'SOURCES.txt' available for plugins installed in dev mode (pip install -e)
# for installed plugins 'SOURCES.txt' returns an empty list, and vice-versa
# so it shouldn't be an issue
metadata_files = 'RECORD', 'SOURCES.txt'
package_files = (
entry.split(',')[0]
for entrypoint in pkg_resources.iter_entry_points('pytest11')
for metadata in metadata_files
for entry in entrypoint.dist._get_metadata(metadata)
)
for name in _iter_rewritable_modules(package_files):
hook.mark_rewrite(name)
def _warn_about_missing_assertion(self, mode):
try:
assert False
@@ -1081,7 +1060,12 @@ def _preparse(self, args, addopts=True):
self._checkversion()
self._consider_importhook(args)
self.pluginmanager.consider_preparse(args)
self.pluginmanager.load_setuptools_entrypoints('pytest11')
# REMOVED FOR SPACK: This routine imports `pkg_resources` from
# `setuptools`, but we do not need it for Spack. We have removed
# it from Spack to avoid a dependency on setuptools.
# self.pluginmanager.load_setuptools_entrypoints('pytest11')
self.pluginmanager.consider_env()
self.known_args_namespace = ns = self._parser.parse_known_args(args, namespace=self.option.copy())
if self.known_args_namespace.confcutdir is None and self.inifile:

View File

@@ -497,26 +497,6 @@ def check_pending(self):
"unknown hook %r in plugin %r" %
(name, hookimpl.plugin))
def load_setuptools_entrypoints(self, entrypoint_name):
""" Load modules from querying the specified setuptools entrypoint name.
Return the number of loaded plugins. """
from pkg_resources import (iter_entry_points, DistributionNotFound,
VersionConflict)
for ep in iter_entry_points(entrypoint_name):
# is the plugin registered or blocked?
if self.get_plugin(ep.name) or self.is_blocked(ep.name):
continue
try:
plugin = ep.load()
except DistributionNotFound:
continue
except VersionConflict as e:
raise PluginValidationError(
"Plugin %r could not be loaded: %s!" % (ep.name, e))
self.register(plugin, name=ep.name)
self._plugin_distinfo.append((plugin, ep.dist))
return len(self._plugin_distinfo)
def list_plugin_distinfo(self):
""" return list of distinfo/plugin tuples for all setuptools registered
plugins. """

View File

@@ -139,9 +139,12 @@
@contributor: U{Reka Albert <http://www.phys.psu.edu/~ralbert/>}
'''
import pkg_resources
__version__ = pkg_resources.require('altgraph')[0].version
# import pkg_resources
# __version__ = pkg_resources.require('altgraph')[0].version
# pkg_resources is not finding the altgraph import despite the fact that it is in sys.path
# there is no .dist-info or .egg-info for pkg_resources to query the version from
# so it must be set manually
__version__ = '0.16.1'
class GraphError(ValueError):
pass

View File

@@ -64,6 +64,7 @@
'enterpriseenterprise': 'oracle', # Oracle Enterprise Linux
'redhatenterpriseworkstation': 'rhel', # RHEL 6, 7 Workstation
'redhatenterpriseserver': 'rhel', # RHEL 6, 7 Server
'redhatenterprisecomputenode': 'rhel', # RHEL 6 ComputeNode
}
#: Translation table for normalizing the distro ID derived from the file name

View File

@@ -45,18 +45,18 @@ def __init__(self, prog, description, usage,
class ArgparseWriter(argparse.HelpFormatter):
"""Analyzes an argparse ArgumentParser for easy generation of help."""
def __init__(self, prog, out=sys.stdout, aliases=False):
def __init__(self, prog, out=None, aliases=False):
"""Initializes a new ArgparseWriter instance.
Parameters:
prog (str): the program name
out (file object): the file to write to
out (file object): the file to write to (default sys.stdout)
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.out = sys.stdout if out is None else out
self.aliases = aliases
def parse(self, parser, prog):
@@ -167,7 +167,7 @@ def write(self, parser):
class ArgparseRstWriter(ArgparseWriter):
"""Write argparse output as rst sections."""
def __init__(self, prog, out=sys.stdout, aliases=False,
def __init__(self, prog, out=None, aliases=False,
rst_levels=_rst_levels):
"""Create a new ArgparseRstWriter.
@@ -178,6 +178,7 @@ def __init__(self, prog, out=sys.stdout, aliases=False,
rst_levels (list of str): list of characters
for rst section headings
"""
out = sys.stdout if out is None else out
super(ArgparseRstWriter, self).__init__(prog, out, aliases)
self.rst_levels = rst_levels

View File

@@ -204,10 +204,22 @@ def optimization_flags(self, compiler, version):
compiler (str): name of the compiler to be used
version (str): version of the compiler to be used
"""
# If we don't have information on compiler return an empty string
if compiler not in self.compilers:
# If we don't have information on compiler at all
# return an empty string
if compiler not in self.family.compilers:
return ''
# If we have information but it stops before this
# microarchitecture, fall back to the best known target
if compiler not in self.compilers:
best_target = [
x for x in self.ancestors if compiler in x.compilers
][0]
msg = ("'{0}' compiler is known to optimize up to the '{1}'"
" microarchitecture in the '{2}' architecture family")
msg = msg.format(compiler, best_target, best_target.family)
raise UnsupportedMicroarchitecture(msg)
# If we have information on this compiler we need to check the
# version being used
compiler_info = self.compilers[compiler]
@@ -219,15 +231,10 @@ def optimization_flags(self, compiler, version):
def satisfies_constraint(entry, version):
min_version, max_version = entry['versions'].split(':')
# Check version suffixes
min_version, min_suffix = version_components(min_version)
max_version, max_suffix = version_components(max_version)
version, suffix = version_components(version)
# If the suffixes are not all equal there's no match
if ((suffix != min_suffix and min_version) or
(suffix != max_suffix and max_version)):
return False
# Extract numeric part of the version
min_version, _ = version_components(min_version)
max_version, _ = version_components(max_version)
version, _ = version_components(version)
# Assume compiler versions fit into semver
tuplify = lambda x: tuple(int(y) for y in x.split('.'))

View File

@@ -61,12 +61,14 @@
"flags": "-march={name} -mtune={name}"
}
],
"clang": [
"apple-clang": [
{
"versions": "0.0.0-apple:",
"versions": ":",
"name": "x86-64",
"flags": "-march={name}"
},
}
],
"clang": [
{
"versions": ":",
"name": "x86-64",

View File

@@ -215,20 +215,22 @@ def cextra(string):
return len(''.join(re.findall(r'\033[^m]*m', string)))
def cwrite(string, stream=sys.stdout, color=None):
def cwrite(string, stream=None, color=None):
"""Replace all color expressions in string with ANSI control
codes and write the result to the stream. If color is
False, this will write plain text with no color. If True,
then it will always write colored output. If not supplied,
then it will be set based on stream.isatty().
"""
stream = sys.stdout if stream is None else stream
if color is None:
color = get_color_when()
stream.write(colorize(string, color=color))
def cprint(string, stream=sys.stdout, color=None):
def cprint(string, stream=None, color=None):
"""Same as cwrite, but writes a trailing newline to the stream."""
stream = sys.stdout if stream is None else stream
cwrite(string + "\n", stream, color)

View File

@@ -5,7 +5,7 @@
#: major, minor, patch version for Spack, in a tuple
spack_version_info = (0, 14, 2)
spack_version_info = (0, 15, 0)
#: String containing Spack version joined with .'s
spack_version = '.'.join(str(v) for v in spack_version_info)

View File

@@ -209,14 +209,15 @@ def optimization_flags(self, compiler):
compiler_version = compiler.version
version_number, suffix = cpu.version_components(compiler.version)
if not version_number or suffix not in ('', 'apple'):
# Try to deduce the correct version. Depending on where this
# function is called we might get either a CompilerSpec or a
# fully fledged compiler object
# Try to deduce the underlying version of the compiler, regardless
# of its name in compilers.yaml. Depending on where this function
# is called we might get either a CompilerSpec or a fully fledged
# compiler object.
import spack.spec
if isinstance(compiler, spack.spec.CompilerSpec):
compiler = spack.compilers.compilers_for_spec(compiler).pop()
try:
compiler_version = compiler.cc_version(compiler.cc)
compiler_version = compiler.get_real_version()
except spack.util.executable.ProcessError as e:
# log this and just return compiler.version instead
tty.debug(str(e))

View File

@@ -10,6 +10,9 @@
import shutil
import tempfile
import hashlib
import glob
import platform
from contextlib import closing
import ruamel.yaml as yaml
@@ -22,6 +25,7 @@
import spack.cmd
import spack.config as config
import spack.database as spack_db
import spack.fetch_strategy as fs
import spack.util.gpg
import spack.relocate as relocate
@@ -29,7 +33,6 @@
import spack.mirror
import spack.util.url as url_util
import spack.util.web as web_util
from spack.spec import Spec
from spack.stage import Stage
from spack.util.gpg import Gpg
@@ -53,7 +56,7 @@
BUILD_CACHE_INDEX_ENTRY_TEMPLATE = ' <li><a href="{path}">{path}</a></li>'
class NoOverwriteException(Exception):
class NoOverwriteException(spack.error.SpackError):
"""
Raised when a file exists and must be overwritten.
"""
@@ -68,14 +71,18 @@ class NoGpgException(spack.error.SpackError):
"""
Raised when gpg2 is not in PATH
"""
pass
def __init__(self, msg):
super(NoGpgException, self).__init__(msg)
class NoKeyException(spack.error.SpackError):
"""
Raised when gpg has no default key added.
"""
pass
def __init__(self, msg):
super(NoKeyException, self).__init__(msg)
class PickKeyException(spack.error.SpackError):
@@ -84,7 +91,7 @@ class PickKeyException(spack.error.SpackError):
"""
def __init__(self, keys):
err_msg = "Multi keys available for signing\n%s\n" % keys
err_msg = "Multiple keys available for signing\n%s\n" % keys
err_msg += "Use spack buildcache create -k <key hash> to pick a key."
super(PickKeyException, self).__init__(err_msg)
@@ -107,7 +114,9 @@ class NewLayoutException(spack.error.SpackError):
"""
Raised if directory layout is different from buildcache.
"""
pass
def __init__(self, msg):
super(NewLayoutException, self).__init__(msg)
def build_cache_relative_path():
@@ -137,15 +146,21 @@ def read_buildinfo_file(prefix):
return buildinfo
def write_buildinfo_file(prefix, workdir, rel=False):
def write_buildinfo_file(spec, workdir, rel=False):
"""
Create a cache file containing information
required for the relocation
"""
prefix = spec.prefix
text_to_relocate = []
binary_to_relocate = []
link_to_relocate = []
blacklist = (".spack", "man")
prefix_to_hash = dict()
prefix_to_hash[str(spec.package.prefix)] = spec.dag_hash()
deps = spack.build_environment.get_rpath_deps(spec.package)
for d in deps:
prefix_to_hash[str(d.prefix)] = d.dag_hash()
# Do this at during tarball creation to save time when tarball unpacked.
# Used by make_package_relative to determine binaries to change.
for root, dirs, files in os.walk(prefix, topdown=True):
@@ -162,8 +177,8 @@ def write_buildinfo_file(prefix, workdir, rel=False):
link_to_relocate.append(rel_path_name)
else:
msg = 'Absolute link %s to %s ' % (path_name, link)
msg += 'outside of stage %s ' % prefix
msg += 'cannot be relocated.'
msg += 'outside of prefix %s ' % prefix
msg += 'should not be relocated.'
tty.warn(msg)
if relocate.needs_binary_relocation(m_type, m_subtype):
@@ -184,6 +199,7 @@ def write_buildinfo_file(prefix, workdir, rel=False):
buildinfo['relocate_textfiles'] = text_to_relocate
buildinfo['relocate_binaries'] = binary_to_relocate
buildinfo['relocate_links'] = link_to_relocate
buildinfo['prefix_to_hash'] = prefix_to_hash
filename = buildinfo_file_name(workdir)
with open(filename, 'w') as outfile:
outfile.write(syaml.dump(buildinfo, default_flow_style=True))
@@ -266,31 +282,47 @@ def sign_tarball(key, force, specfile_path):
def generate_package_index(cache_prefix):
"""Create the build cache index page.
Creates (or replaces) the "index.html" page at the location given in
Creates (or replaces) the "index.json" page at the location given in
cache_prefix. This page contains a link for each binary package (*.yaml)
and public key (*.key) under cache_prefix.
"""
tmpdir = tempfile.mkdtemp()
try:
index_html_path = os.path.join(tmpdir, 'index.html')
file_list = (
entry
for entry in web_util.list_url(cache_prefix)
if (entry.endswith('.yaml')
or entry.endswith('.key')))
db_root_dir = os.path.join(tmpdir, 'db_root')
db = spack_db.Database(None, db_dir=db_root_dir,
enable_transaction_locking=False,
record_fields=['spec', 'ref_count'])
with open(index_html_path, 'w') as f:
f.write(BUILD_CACHE_INDEX_TEMPLATE.format(
title='Spack Package Index',
path_list='\n'.join(
BUILD_CACHE_INDEX_ENTRY_TEMPLATE.format(path=path)
for path in file_list)))
file_list = (
entry
for entry in web_util.list_url(cache_prefix)
if entry.endswith('.yaml'))
tty.debug('Retrieving spec.yaml files from {0} to build index'.format(
cache_prefix))
for file_path in file_list:
try:
yaml_url = url_util.join(cache_prefix, file_path)
tty.debug('fetching {0}'.format(yaml_url))
_, _, yaml_file = web_util.read_from_url(yaml_url)
yaml_contents = codecs.getreader('utf-8')(yaml_file).read()
# yaml_obj = syaml.load(yaml_contents)
# s = Spec.from_yaml(yaml_obj)
s = Spec.from_yaml(yaml_contents)
db.add(s, None)
except (URLError, web_util.SpackWebError) as url_err:
tty.error('Error reading spec.yaml: {0}'.format(file_path))
tty.error(url_err)
try:
index_json_path = os.path.join(db_root_dir, 'index.json')
with open(index_json_path, 'w') as f:
db._write_to_file(f)
web_util.push_to_url(
index_html_path,
url_util.join(cache_prefix, 'index.html'),
index_json_path,
url_util.join(cache_prefix, 'index.json'),
keep_original=False,
extra_args={'ContentType': 'text/html'})
extra_args={'ContentType': 'application/json'})
finally:
shutil.rmtree(tmpdir)
@@ -308,7 +340,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.bz2')
tarfile_name = tarball_name(spec, '.tar.gz')
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(
@@ -356,7 +388,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
os.remove(temp_tarfile_path)
# create info for later relocation and create tar
write_buildinfo_file(spec.prefix, workdir, rel=rel)
write_buildinfo_file(spec, workdir, rel)
# optionally make the paths in the binaries relative to each other
# in the spack install tree before creating tarball
@@ -370,15 +402,15 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
tty.die(e)
else:
try:
make_package_placeholder(workdir, spec, allow_root)
check_package_relocatable(workdir, spec, allow_root)
except Exception as e:
shutil.rmtree(workdir)
shutil.rmtree(tarfile_dir)
shutil.rmtree(tmpdir)
tty.die(e)
# create compressed tarball of the install prefix
with closing(tarfile.open(tarfile_path, 'w:bz2')) as tar:
# create gzip compressed tarball of the install prefix
with closing(tarfile.open(tarfile_path, 'w:gz')) as tar:
tar.add(name='%s' % workdir,
arcname='%s' % os.path.basename(spec.prefix))
# remove copy of install directory
@@ -400,6 +432,7 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
buildinfo = {}
buildinfo['relative_prefix'] = os.path.relpath(
spec.prefix, spack.store.layout.root)
buildinfo['relative_rpaths'] = rel
spec_dict['buildinfo'] = buildinfo
spec_dict['full_hash'] = spec.full_hash()
@@ -433,6 +466,9 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
web_util.push_to_url(
specfile_path, remote_specfile_path, keep_original=False)
tty.msg('Buildache for "%s" written to \n %s' %
(spec, remote_spackfile_path))
try:
# create an index.html for the build_cache directory so specs can be
# found
@@ -478,100 +514,144 @@ def make_package_relative(workdir, spec, allow_root):
"""
prefix = spec.prefix
buildinfo = read_buildinfo_file(workdir)
old_path = buildinfo['buildpath']
old_layout_root = buildinfo['buildpath']
orig_path_names = list()
cur_path_names = list()
for filename in buildinfo['relocate_binaries']:
orig_path_names.append(os.path.join(prefix, filename))
cur_path_names.append(os.path.join(workdir, filename))
if spec.architecture.platform == 'darwin':
if (spec.architecture.platform == 'darwin' or
spec.architecture.platform == 'test' and
platform.system().lower() == 'darwin'):
relocate.make_macho_binaries_relative(cur_path_names, orig_path_names,
old_path, allow_root)
else:
old_layout_root)
if (spec.architecture.platform == 'linux' or
spec.architecture.platform == 'test' and
platform.system().lower() == 'linux'):
relocate.make_elf_binaries_relative(cur_path_names, orig_path_names,
old_path, allow_root)
old_layout_root)
relocate.raise_if_not_relocatable(cur_path_names, allow_root)
orig_path_names = list()
cur_path_names = list()
for filename in buildinfo.get('relocate_links', []):
orig_path_names.append(os.path.join(prefix, filename))
cur_path_names.append(os.path.join(workdir, filename))
for linkname in buildinfo.get('relocate_links', []):
orig_path_names.append(os.path.join(prefix, linkname))
cur_path_names.append(os.path.join(workdir, linkname))
relocate.make_link_relative(cur_path_names, orig_path_names)
def make_package_placeholder(workdir, spec, allow_root):
def check_package_relocatable(workdir, spec, allow_root):
"""
Check if package binaries are relocatable.
Change links to placeholder links.
"""
prefix = spec.prefix
buildinfo = read_buildinfo_file(workdir)
cur_path_names = list()
for filename in buildinfo['relocate_binaries']:
cur_path_names.append(os.path.join(workdir, filename))
relocate.check_files_relocatable(cur_path_names, allow_root)
cur_path_names = list()
for filename in buildinfo.get('relocate_links', []):
cur_path_names.append(os.path.join(workdir, filename))
relocate.make_link_placeholder(cur_path_names, workdir, prefix)
relocate.raise_if_not_relocatable(cur_path_names, allow_root)
def relocate_package(workdir, spec, allow_root):
def relocate_package(spec, allow_root):
"""
Relocate the given package
"""
workdir = str(spec.prefix)
buildinfo = read_buildinfo_file(workdir)
new_path = str(spack.store.layout.root)
new_prefix = str(spack.paths.prefix)
old_path = str(buildinfo['buildpath'])
old_prefix = str(buildinfo.get('spackprefix',
'/not/in/buildinfo/dictionary'))
rel = buildinfo.get('relative_rpaths', False)
new_layout_root = str(spack.store.layout.root)
new_prefix = str(spec.prefix)
new_rel_prefix = str(os.path.relpath(new_prefix, new_layout_root))
new_spack_prefix = str(spack.paths.prefix)
old_layout_root = str(buildinfo['buildpath'])
old_spack_prefix = str(buildinfo.get('spackprefix'))
old_rel_prefix = buildinfo.get('relative_prefix')
old_prefix = os.path.join(old_layout_root, old_rel_prefix)
rel = buildinfo.get('relative_rpaths')
prefix_to_hash = buildinfo.get('prefix_to_hash', None)
if (old_rel_prefix != new_rel_prefix and not prefix_to_hash):
msg = "Package tarball was created from an install "
msg += "prefix with a different directory layout and an older "
msg += "buildcache create implementation. It cannot be relocated."
raise NewLayoutException(msg)
# older buildcaches do not have the prefix_to_hash dictionary
# need to set an empty dictionary and add one entry to
# prefix_to_prefix to reproduce the old behavior
if not prefix_to_hash:
prefix_to_hash = dict()
hash_to_prefix = dict()
hash_to_prefix[spec.format('{hash}')] = str(spec.package.prefix)
new_deps = spack.build_environment.get_rpath_deps(spec.package)
for d in new_deps:
hash_to_prefix[d.format('{hash}')] = str(d.prefix)
prefix_to_prefix = dict()
for orig_prefix, hash in prefix_to_hash.items():
prefix_to_prefix[orig_prefix] = hash_to_prefix.get(hash, None)
prefix_to_prefix[old_prefix] = new_prefix
prefix_to_prefix[old_layout_root] = new_layout_root
tty.msg("Relocating package from",
"%s to %s." % (old_path, new_path))
path_names = set()
tty.debug("Relocating package from",
"%s to %s." % (old_layout_root, new_layout_root))
def is_backup_file(file):
return file.endswith('~')
# Text files containing the prefix text
text_names = list()
for filename in buildinfo['relocate_textfiles']:
path_name = os.path.join(workdir, filename)
text_name = os.path.join(workdir, filename)
# Don't add backup files generated by filter_file during install step.
if not path_name.endswith('~'):
path_names.add(path_name)
relocate.relocate_text(path_names, oldpath=old_path,
newpath=new_path, oldprefix=old_prefix,
newprefix=new_prefix)
# If the binary files in the package were not edited to use
# relative RPATHs, then the RPATHs need to be relocated
if rel:
if old_path != new_path:
files_to_relocate = list(filter(
lambda pathname: not relocate.file_is_relocatable(
pathname, paths_to_relocate=[old_path, old_prefix]),
map(lambda filename: os.path.join(workdir, filename),
buildinfo['relocate_binaries'])))
if not is_backup_file(text_name):
text_names.append(text_name)
if len(old_path) < len(new_path) and files_to_relocate:
tty.debug('Cannot do a binary string replacement with padding '
'for package because %s is longer than %s.' %
(new_path, old_path))
else:
for path_name in files_to_relocate:
relocate.replace_prefix_bin(path_name, old_path, new_path)
else:
path_names = set()
for filename in buildinfo['relocate_binaries']:
path_name = os.path.join(workdir, filename)
path_names.add(path_name)
if spec.architecture.platform == 'darwin':
relocate.relocate_macho_binaries(path_names, old_path,
new_path, allow_root)
else:
relocate.relocate_elf_binaries(path_names, old_path,
new_path, allow_root)
path_names = set()
for filename in buildinfo.get('relocate_links', []):
path_name = os.path.join(workdir, filename)
path_names.add(path_name)
relocate.relocate_links(path_names, old_path, new_path)
# If we are installing back to the same location don't replace anything
if old_layout_root != new_layout_root:
paths_to_relocate = [old_spack_prefix, old_layout_root]
paths_to_relocate.extend(prefix_to_hash.keys())
files_to_relocate = list(filter(
lambda pathname: not relocate.file_is_relocatable(
pathname, paths_to_relocate=paths_to_relocate),
map(lambda filename: os.path.join(workdir, filename),
buildinfo['relocate_binaries'])))
# If the buildcache was not created with relativized rpaths
# do the relocation of path in binaries
if (spec.architecture.platform == 'darwin' or
spec.architecture.platform == 'test' and
platform.system().lower() == 'darwin'):
relocate.relocate_macho_binaries(files_to_relocate,
old_layout_root,
new_layout_root,
prefix_to_prefix, rel,
old_prefix,
new_prefix)
if (spec.architecture.platform == 'linux' or
spec.architecture.platform == 'test' and
platform.system().lower() == 'linux'):
relocate.relocate_elf_binaries(files_to_relocate,
old_layout_root,
new_layout_root,
prefix_to_prefix, rel,
old_prefix,
new_prefix)
# Relocate links to the new install prefix
links = [link for link in buildinfo.get('relocate_links', [])]
relocate.relocate_links(
links, old_layout_root, old_prefix, new_prefix
)
# For all buildcaches
# relocate the install prefixes in text files including dependencies
relocate.relocate_text(text_names,
old_layout_root, new_layout_root,
old_prefix, new_prefix,
old_spack_prefix,
new_spack_prefix,
prefix_to_prefix)
# relocate the install prefixes in binary files including dependencies
relocate.relocate_text_bin(files_to_relocate,
old_prefix, new_prefix,
old_spack_prefix,
new_spack_prefix,
prefix_to_prefix)
def extract_tarball(spec, filename, allow_root=False, unsigned=False,
@@ -589,16 +669,16 @@ 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.bz2')
tarfile_name = tarball_name(spec, '.tar.gz')
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
# some buildcache tarfiles use bzip2 compression
if not os.path.exists(tarfile_path):
tarfile_name = tarball_name(spec, '.tar.gz')
tarfile_name = tarball_name(spec, '.tar.bz2')
tarfile_path = os.path.join(tmpdir, tarfile_name)
if not unsigned:
if os.path.exists('%s.asc' % specfile_path):
@@ -607,7 +687,7 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
Gpg.verify('%s.asc' % specfile_path, specfile_path, suppress)
except Exception as e:
shutil.rmtree(tmpdir)
tty.die(e)
raise e
else:
shutil.rmtree(tmpdir)
raise NoVerifyException(
@@ -636,22 +716,30 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
# if the original relative prefix is in the spec file use it
buildinfo = spec_dict.get('buildinfo', {})
old_relative_prefix = buildinfo.get('relative_prefix', new_relative_prefix)
rel = buildinfo.get('relative_rpaths')
# if the original relative prefix and new relative prefix differ the
# directory layout has changed and the buildcache cannot be installed
if old_relative_prefix != new_relative_prefix:
shutil.rmtree(tmpdir)
msg = "Package tarball was created from an install "
msg += "prefix with a different directory layout.\n"
msg += "It cannot be relocated."
raise NewLayoutException(msg)
# if it was created with relative rpaths
info = 'old relative prefix %s\nnew relative prefix %s\nrelative rpaths %s'
tty.debug(info %
(old_relative_prefix, new_relative_prefix, rel))
# if (old_relative_prefix != new_relative_prefix and (rel)):
# shutil.rmtree(tmpdir)
# msg = "Package tarball was created from an install "
# msg += "prefix with a different directory layout. "
# msg += "It cannot be relocated because it "
# msg += "uses relative rpaths."
# raise NewLayoutException(msg)
# extract the tarball in a temp directory
with closing(tarfile.open(tarfile_path, 'r')) as tar:
tar.extractall(path=tmpdir)
# the base of the install prefix is used when creating the tarball
# so the pathname should be the same now that the directory layout
# is confirmed
workdir = os.path.join(tmpdir, os.path.basename(spec.prefix))
# get the parent directory of the file .spack/binary_distribution
# this should the directory unpacked from the tarball whose
# name is unknown because the prefix naming is unknown
bindist_file = glob.glob('%s/*/.spack/binary_distribution' % tmpdir)[0]
workdir = re.sub('/.spack/binary_distribution$', '', bindist_file)
tty.debug('workdir %s' % workdir)
# install_tree copies hardlinks
# create a temporary tarfile from prefix and exract it to workdir
# tarfile preserves hardlinks
@@ -669,10 +757,10 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
os.remove(specfile_path)
try:
relocate_package(spec.prefix, spec, allow_root)
relocate_package(spec, allow_root)
except Exception as e:
shutil.rmtree(spec.prefix)
tty.die(e)
raise e
else:
manifest_file = os.path.join(spec.prefix,
spack.store.layout.metadata_dir,
@@ -682,6 +770,8 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
tty.warn('No manifest file in tarball for spec %s' % spec_id)
finally:
shutil.rmtree(tmpdir)
if os.path.exists(filename):
os.remove(filename)
# Internal cache for downloaded specs
@@ -729,7 +819,7 @@ def get_spec(spec=None, force=False):
tty.debug("No Spack mirrors are currently configured")
return {}
if spec in _cached_specs:
if _cached_specs and spec in _cached_specs:
return _cached_specs
for mirror in spack.mirror.MirrorCollection().values():
@@ -751,54 +841,61 @@ def get_spec(spec=None, force=False):
return try_download_specs(urls=urls, force=force)
def get_specs(force=False, allarch=False):
def get_specs(allarch=False):
"""
Get spec.yaml's for build caches available on mirror
"""
global _cached_specs
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)
tty.msg("Finding buildcaches at %s" %
url_util.format(fetch_url_build_cache))
return try_download_specs(urls=urls, force=force)
index_url = url_util.join(fetch_url_build_cache, 'index.json')
try:
_, _, file_stream = web_util.read_from_url(
index_url, 'application/json')
index_object = codecs.getreader('utf-8')(file_stream).read()
except (URLError, web_util.SpackWebError) as url_err:
tty.error('Failed to read index {0}'.format(index_url))
tty.debug(url_err)
# Just return whatever specs we may already have cached
return _cached_specs
tmpdir = tempfile.mkdtemp()
index_file_path = os.path.join(tmpdir, 'index.json')
with open(index_file_path, 'w') as fd:
fd.write(index_object)
db_root_dir = os.path.join(tmpdir, 'db_root')
db = spack_db.Database(None, db_dir=db_root_dir,
enable_transaction_locking=False)
db._read_from_file(index_file_path)
spec_list = db.query_local(installed=False)
for indexed_spec in spec_list:
spec_arch = architecture.arch_for_spec(indexed_spec.architecture)
if (allarch is True or spec_arch == arch):
_cached_specs.add(indexed_spec)
return _cached_specs
def get_keys(install=False, trust=False, force=False):
"""
Get pgp public keys available on mirror
with suffix .key or .pub
"""
if not spack.mirror.MirrorCollection():
tty.die("Please add a spack mirror to allow " +
@@ -813,18 +910,20 @@ def get_keys(install=False, trust=False, force=False):
mirror_dir = url_util.local_file_path(fetch_url_build_cache)
if mirror_dir:
tty.msg("Finding public keys in %s" % mirror_dir)
files = os.listdir(mirror_dir)
files = os.listdir(str(mirror_dir))
for file in files:
if re.search(r'\.key', file):
if re.search(r'\.key', file) or re.search(r'\.pub', file):
link = url_util.join(fetch_url_build_cache, file)
keys.add(link)
else:
tty.msg("Finding public keys at %s" %
url_util.format(fetch_url_build_cache))
p, links = web_util.spider(fetch_url_build_cache, depth=1)
# For s3 mirror need to request index.html directly
p, links = web_util.spider(
url_util.join(fetch_url_build_cache, 'index.html'))
for link in links:
if re.search(r'\.key', link):
if re.search(r'\.key', link) or re.search(r'\.pub', link):
keys.add(link)
for link in keys:

View File

@@ -32,6 +32,7 @@
Skimming this module is a nice way to get acquainted with the types of
calls you can make from within the install() function.
"""
import re
import inspect
import multiprocessing
import os
@@ -53,6 +54,7 @@
import spack.paths
import spack.schema.environment
import spack.store
import spack.architecture as arch
from spack.util.string import plural
from spack.util.environment import (
env_flag, filter_system_paths, get_path, is_system_path,
@@ -60,7 +62,7 @@
from spack.util.environment import system_dirs
from spack.error import NoLibrariesError, NoHeadersError
from spack.util.executable import Executable
from spack.util.module_cmd import load_module, get_path_from_module
from spack.util.module_cmd import load_module, get_path_from_module, module
from spack.util.log_parse import parse_log_events, make_log_context
@@ -145,6 +147,32 @@ def clean_environment():
env.unset('CPATH')
env.unset('LD_RUN_PATH')
env.unset('DYLD_LIBRARY_PATH')
env.unset('DYLD_FALLBACK_LIBRARY_PATH')
# On Cray "cluster" systems, unset CRAY_LD_LIBRARY_PATH to avoid
# interference with Spack dependencies.
# CNL requires these variables to be set (or at least some of them,
# depending on the CNL version).
hostarch = arch.Arch(arch.platform(), 'default_os', 'default_target')
on_cray = str(hostarch.platform) == 'cray'
using_cnl = re.match(r'cnl\d+', str(hostarch.os))
if on_cray and not using_cnl:
env.unset('CRAY_LD_LIBRARY_PATH')
for varname in os.environ.keys():
if 'PKGCONF' in varname:
env.unset(varname)
# Unset the following variables because they can affect installation of
# Autotools and CMake packages.
build_system_vars = [
'CC', 'CFLAGS', 'CPP', 'CPPFLAGS', # C variables
'CXX', 'CCC', 'CXXFLAGS', 'CXXCPP', # C++ variables
'F77', 'FFLAGS', 'FLIBS', # Fortran77 variables
'FC', 'FCFLAGS', 'FCLIBS', # Fortran variables
'LDFLAGS', 'LIBS' # linker variables
]
for v in build_system_vars:
env.unset(v)
build_lang = spack.config.get('config:build_language')
if build_lang:
@@ -170,6 +198,9 @@ def set_compiler_environment_variables(pkg, env):
compiler = pkg.compiler
spec = pkg.spec
# Make sure the executables for this compiler exist
compiler.verify_executables()
# Set compiler variables used by CMake and autotools
assert all(key in compiler.link_paths for key in (
'cc', 'cxx', 'f77', 'fc'))
@@ -348,10 +379,6 @@ def set_build_environment_variables(pkg, env, dirty):
extra_rpaths = ':'.join(compiler.extra_rpaths)
env.set('SPACK_COMPILER_EXTRA_RPATHS', extra_rpaths)
implicit_rpaths = compiler.implicit_rpaths()
if implicit_rpaths:
env.set('SPACK_COMPILER_IMPLICIT_RPATHS', ':'.join(implicit_rpaths))
# Add bin directories from dependencies to the PATH for the build.
for prefix in build_prefixes:
for dirname in ['bin', 'bin64']:
@@ -414,7 +441,7 @@ def _set_variables_for_single_module(pkg, module):
if getattr(module, marker, False):
return
jobs = spack.config.get('config:build_jobs') if pkg.parallel else 1
jobs = spack.config.get('config:build_jobs', 16) if pkg.parallel else 1
jobs = min(jobs, multiprocessing.cpu_count())
assert jobs is not None, "no default set for config:build_jobs"
@@ -531,7 +558,7 @@ def _static_to_shared_library(arch, compiler, static_lib, shared_lib=None,
# TODO: Compiler arguments should not be hardcoded but provided by
# the different compiler classes.
if 'linux' in arch:
if 'linux' in arch or 'cray' in arch:
soname = os.path.basename(shared_lib)
if compat_version:
@@ -608,7 +635,7 @@ def get_rpaths(pkg):
# module show output.
if pkg.compiler.modules and len(pkg.compiler.modules) > 1:
rpaths.append(get_path_from_module(pkg.compiler.modules[1]))
return rpaths
return list(dedupe(filter_system_paths(rpaths)))
def get_std_cmake_args(pkg):
@@ -716,11 +743,21 @@ def setup_package(pkg, dirty):
load_module("cce")
load_module(mod)
# kludge to handle cray libsci being automatically loaded by PrgEnv
# modules on cray platform. Module unload does no damage when
# unnecessary
module('unload', 'cray-libsci')
if pkg.architecture.target.module_name:
load_module(pkg.architecture.target.module_name)
load_external_modules(pkg)
implicit_rpaths = pkg.compiler.implicit_rpaths()
if implicit_rpaths:
build_env.set('SPACK_COMPILER_IMPLICIT_RPATHS',
':'.join(implicit_rpaths))
# Make sure nothing's strange about the Spack environment.
validate(build_env, tty.warn)
build_env.apply_modifications()
@@ -800,12 +837,11 @@ def child_process(child_pipe, input_stream):
setup_package(pkg, dirty=dirty)
return_value = function()
child_pipe.send(return_value)
except StopIteration as e:
# StopIteration is used to stop installations
# before the final stage, mainly for debug purposes
tty.msg(e)
child_pipe.send(None)
except StopPhase as e:
# Do not create a full ChildError from this, it's not an error
# it's a control statement.
child_pipe.send(e)
except BaseException:
# catch ANYTHING that goes wrong in the child process
exc_type, exc, tb = sys.exc_info()
@@ -857,15 +893,20 @@ def child_process(child_pipe, input_stream):
child_result = parent_pipe.recv()
p.join()
# If returns a StopPhase, raise it
if isinstance(child_result, StopPhase):
# do not print
raise child_result
# let the caller know which package went wrong.
if isinstance(child_result, InstallError):
child_result.pkg = pkg
# If the child process raised an error, print its output here rather
# than waiting until the call to SpackError.die() in main(). This
# allows exception handling output to be logged from within Spack.
# see spack.main.SpackCommand.
if isinstance(child_result, ChildError):
# If the child process raised an error, print its output here rather
# than waiting until the call to SpackError.die() in main(). This
# allows exception handling output to be logged from within Spack.
# see spack.main.SpackCommand.
child_result.print_context()
raise child_result
@@ -1054,3 +1095,13 @@ def __reduce__(self):
def _make_child_error(msg, module, name, traceback, build_log, context):
"""Used by __reduce__ in ChildError to reconstruct pickled errors."""
return ChildError(msg, module, name, traceback, build_log, context)
class StopPhase(spack.error.SpackError):
"""Pickle-able exception to control stopped builds."""
def __reduce__(self):
return _make_stop_phase, (self.message, self.long_message)
def _make_stop_phase(msg, long_msg):
return StopPhase(msg, long_msg)

View File

@@ -11,6 +11,7 @@
import shutil
import stat
import sys
import re
from subprocess import PIPE
from subprocess import check_call
@@ -56,8 +57,9 @@ class AutotoolsPackage(PackageBase):
#: This attribute is used in UI queries that need to know the build
#: system base class
build_system_class = 'AutotoolsPackage'
#: Whether or not to update ``config.guess`` on old architectures
patch_config_guess = True
#: Whether or not to update ``config.guess`` and ``config.sub`` on old
#: architectures
patch_config_files = True
#: Whether or not to update ``libtool``
#: (currently only for Arm/Clang/Fujitsu compilers)
patch_libtool = True
@@ -86,72 +88,109 @@ def archive_files(self):
return [os.path.join(self.build_directory, 'config.log')]
@run_after('autoreconf')
def _do_patch_config_guess(self):
"""Some packages ship with an older config.guess and need to have
this updated when installed on a newer architecture. In particular,
config.guess fails for PPC64LE for version prior to a 2013-06-10
build date (automake 1.13.4) and for ARM (aarch64)."""
def _do_patch_config_files(self):
"""Some packages ship with older config.guess/config.sub files and
need to have these updated when installed on a newer architecture.
In particular, config.guess fails for PPC64LE for version prior
to a 2013-06-10 build date (automake 1.13.4) and for ARM (aarch64)."""
if not self.patch_config_guess or (
if not self.patch_config_files or (
not self.spec.satisfies('target=ppc64le:') and
not self.spec.satisfies('target=aarch64:')
):
return
my_config_guess = None
config_guess = None
if os.path.exists('config.guess'):
# First search the top-level source directory
my_config_guess = 'config.guess'
# TODO: Expand this to select the 'config.sub'-compatible architecture
# for each platform (e.g. 'config.sub' doesn't accept 'power9le', but
# does accept 'ppc64le').
if self.spec.satisfies('target=ppc64le:'):
config_arch = 'ppc64le'
elif self.spec.satisfies('target=aarch64:'):
config_arch = 'aarch64'
else:
# Then search in all sub directories.
# We would like to use AC_CONFIG_AUX_DIR, but not all packages
# ship with their configure.in or configure.ac.
d = '.'
dirs = [os.path.join(d, o) for o in os.listdir(d)
if os.path.isdir(os.path.join(d, o))]
for dirname in dirs:
path = os.path.join(dirname, 'config.guess')
config_arch = 'local'
my_config_files = {'guess': None, 'sub': None}
config_files = {'guess': None, 'sub': None}
config_args = {'guess': [], 'sub': [config_arch]}
for config_name in config_files.keys():
config_file = 'config.{0}'.format(config_name)
if os.path.exists(config_file):
# First search the top-level source directory
my_config_files[config_name] = os.path.join(
self.configure_directory, config_file)
else:
# Then search in all sub directories recursively.
# We would like to use AC_CONFIG_AUX_DIR, but not all packages
# ship with their configure.in or configure.ac.
config_path = next((os.path.join(r, f)
for r, ds, fs in os.walk(
self.configure_directory) for f in fs
if f == config_file), None)
my_config_files[config_name] = config_path
if my_config_files[config_name] is not None:
try:
config_path = my_config_files[config_name]
check_call([config_path] + config_args[config_name],
stdout=PIPE, stderr=PIPE)
# The package's config file already runs OK, so just use it
continue
except Exception as e:
tty.debug(e)
else:
continue
# Look for a spack-installed automake package
if 'automake' in self.spec:
automake_dir = 'automake-' + str(self.spec['automake'].version)
automake_path = os.path.join(self.spec['automake'].prefix,
'share', automake_dir)
path = os.path.join(automake_path, config_file)
if os.path.exists(path):
my_config_guess = path
config_files[config_name] = path
# Look for the system's config.guess
if (config_files[config_name] is None and
os.path.exists('/usr/share')):
automake_dir = [s for s in os.listdir('/usr/share') if
"automake" in s]
if automake_dir:
automake_path = os.path.join('/usr/share', automake_dir[0])
path = os.path.join(automake_path, config_file)
if os.path.exists(path):
config_files[config_name] = path
if config_files[config_name] is not None:
try:
config_path = config_files[config_name]
my_config_path = my_config_files[config_name]
if my_config_guess is not None:
try:
check_call([my_config_guess], stdout=PIPE, stderr=PIPE)
# The package's config.guess already runs OK, so just use it
return
except Exception as e:
tty.debug(e)
else:
return
check_call([config_path] + config_args[config_name],
stdout=PIPE, stderr=PIPE)
# Look for a spack-installed automake package
if 'automake' in self.spec:
automake_path = os.path.join(self.spec['automake'].prefix, 'share',
'automake-' +
str(self.spec['automake'].version))
path = os.path.join(automake_path, 'config.guess')
if os.path.exists(path):
config_guess = path
# Look for the system's config.guess
if config_guess is None and os.path.exists('/usr/share'):
automake_dir = [s for s in os.listdir('/usr/share') if
"automake" in s]
if automake_dir:
automake_path = os.path.join('/usr/share', automake_dir[0])
path = os.path.join(automake_path, 'config.guess')
if os.path.exists(path):
config_guess = path
if config_guess is not None:
try:
check_call([config_guess], stdout=PIPE, stderr=PIPE)
mod = os.stat(my_config_guess).st_mode & 0o777 | stat.S_IWUSR
os.chmod(my_config_guess, mod)
shutil.copyfile(config_guess, my_config_guess)
return
except Exception as e:
tty.debug(e)
m = os.stat(my_config_path).st_mode & 0o777 | stat.S_IWUSR
os.chmod(my_config_path, m)
shutil.copyfile(config_path, my_config_path)
continue
except Exception as e:
tty.debug(e)
raise RuntimeError('Failed to find suitable config.guess')
raise RuntimeError('Failed to find suitable ' + config_file)
@run_before('configure')
def _set_autotools_environment_variables(self):
"""Many autotools builds use a version of mknod.m4 that fails when
running as root unless FORCE_UNSAFE_CONFIGURE is set to 1.
We set this to 1 and expect the user to take responsibility if
they are running as root. They have to anyway, as this variable
doesn't actually prevent configure from doing bad things as root.
Without it, configure just fails halfway through, but it can
still run things *before* this check. Forcing this just removes a
nuisance -- this is not circumventing any real protection.
"""
os.environ["FORCE_UNSAFE_CONFIGURE"] = "1"
@run_after('configure')
def _do_patch_libtool(self):
@@ -169,7 +208,9 @@ def _do_patch_libtool(self):
line = 'wl="-Wl,"\n'
if line == 'pic_flag=""\n':
line = 'pic_flag="{0}"\n'\
.format(self.compiler.pic_flag)
.format(self.compiler.cc_pic_flag)
if self.spec.satisfies('%fj') and 'fjhpctag.o' in line:
line = re.sub(r'/\S*/fjhpctag.o', '', line)
sys.stdout.write(line)
@property
@@ -219,11 +260,11 @@ def autoreconf(self, spec, prefix):
# This line is what is needed most of the time
# --install, --verbose, --force
autoreconf_args = ['-ivf']
if 'pkgconfig' in spec:
autoreconf_args += [
'-I',
os.path.join(spec['pkgconfig'].prefix, 'share', 'aclocal'),
]
for dep in spec.dependencies(deptype='build'):
if os.path.exists(dep.prefix.share.aclocal):
autoreconf_args.extend([
'-I', dep.prefix.share.aclocal
])
autoreconf_args += self.autoreconf_extra_args
m.autoreconf(*autoreconf_args)
@@ -263,6 +304,12 @@ def flags_to_build_system_args(self, flags):
if values:
values_str = '{0}={1}'.format(flag.upper(), ' '.join(values))
self.configure_flag_args.append(values_str)
# Spack's fflags are meant for both F77 and FC, therefore we
# additionaly set FCFLAGS if required.
values = flags.get('fflags', None)
if values:
values_str = 'FCFLAGS={0}'.format(' '.join(values))
self.configure_flag_args.append(values_str)
def configure(self, spec, prefix):
"""Runs configure with the arguments specified in

View File

@@ -147,33 +147,129 @@ def _std_args(pkg):
except KeyError:
build_type = 'RelWithDebInfo'
define = CMakePackage.define
args = [
'-G', generator,
'-DCMAKE_INSTALL_PREFIX:PATH={0}'.format(pkg.prefix),
'-DCMAKE_BUILD_TYPE:STRING={0}'.format(build_type),
define('CMAKE_INSTALL_PREFIX', pkg.prefix),
define('CMAKE_BUILD_TYPE', build_type),
]
if primary_generator == 'Unix Makefiles':
args.append('-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON')
args.append(define('CMAKE_VERBOSE_MAKEFILE', True))
if platform.mac_ver()[0]:
args.extend([
'-DCMAKE_FIND_FRAMEWORK:STRING=LAST',
'-DCMAKE_FIND_APPBUNDLE:STRING=LAST'
define('CMAKE_FIND_FRAMEWORK', "LAST"),
define('CMAKE_FIND_APPBUNDLE', "LAST"),
])
# Set up CMake rpath
args.append('-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=FALSE')
rpaths = ';'.join(spack.build_environment.get_rpaths(pkg))
args.append('-DCMAKE_INSTALL_RPATH:STRING={0}'.format(rpaths))
args.extend([
define('CMAKE_INSTALL_RPATH_USE_LINK_PATH', False),
define('CMAKE_INSTALL_RPATH',
spack.build_environment.get_rpaths(pkg)),
])
# CMake's find_package() looks in CMAKE_PREFIX_PATH first, help CMake
# to find immediate link dependencies in right places:
deps = [d.prefix for d in
pkg.spec.dependencies(deptype=('build', 'link'))]
deps = filter_system_paths(deps)
args.append('-DCMAKE_PREFIX_PATH:STRING={0}'.format(';'.join(deps)))
args.append(define('CMAKE_PREFIX_PATH', deps))
return args
@staticmethod
def define(cmake_var, value):
"""Return a CMake command line argument that defines a variable.
The resulting argument will convert boolean values to OFF/ON
and lists/tuples to CMake semicolon-separated string lists. All other
values will be interpreted as strings.
Examples:
.. code-block:: python
[define('BUILD_SHARED_LIBS', True),
define('CMAKE_CXX_STANDARD', 14),
define('swr', ['avx', 'avx2'])]
will generate the following configuration options:
.. code-block:: console
["-DBUILD_SHARED_LIBS:BOOL=ON",
"-DCMAKE_CXX_STANDARD:STRING=14",
"-DSWR:STRING=avx;avx2]
"""
# Create a list of pairs. Each pair includes a configuration
# option and whether or not that option is activated
if isinstance(value, bool):
kind = 'BOOL'
value = "ON" if value else "OFF"
else:
kind = 'STRING'
if isinstance(value, (list, tuple)):
value = ";".join(str(v) for v in value)
else:
value = str(value)
return "".join(["-D", cmake_var, ":", kind, "=", value])
def define_from_variant(self, cmake_var, variant=None):
"""Return a CMake command line argument from the given variant's value.
The optional ``variant`` argument defaults to the lower-case transform
of ``cmake_var``.
This utility function is similar to
:py:meth:`~.AutotoolsPackage.with_or_without`.
Examples:
Given a package with:
.. code-block:: python
variant('cxxstd', default='11', values=('11', '14'),
multi=False, description='')
variant('shared', default=True, description='')
variant('swr', values=any_combination_of('avx', 'avx2'),
description='')
calling this function like:
.. code-block:: python
[define_from_variant('BUILD_SHARED_LIBS', 'shared'),
define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'),
define_from_variant('SWR')]
will generate the following configuration options:
.. code-block:: console
["-DBUILD_SHARED_LIBS:BOOL=ON",
"-DCMAKE_CXX_STANDARD:STRING=14",
"-DSWR:STRING=avx;avx2]
for ``<spec-name> cxxstd=14 +shared swr=avx,avx2``
"""
if variant is None:
variant = cmake_var.lower()
if variant not in self.variants:
raise KeyError(
'"{0}" is not a variant of "{1}"'.format(variant, self.name))
value = self.spec.variants[variant].value
if isinstance(value, (tuple, list)):
# Sort multi-valued variants for reproducibility
value = sorted(value)
return self.define(cmake_var, value)
def flags_to_build_system_args(self, flags):
"""Produces a list of all command line arguments to pass the specified
compiler flags to cmake. Note CMAKE does not have a cppflags option,
@@ -235,9 +331,9 @@ def cmake_args(self):
def cmake(self, spec, prefix):
"""Runs ``cmake`` in the build directory"""
options = [os.path.abspath(self.root_cmakelists_dir)]
options += self.std_cmake_args
options = self.std_cmake_args
options += self.cmake_args()
options.append(os.path.abspath(self.root_cmakelists_dir))
with working_dir(self.build_directory, create=True):
inspect.getmodule(self).cmake(*options)

View File

@@ -13,39 +13,65 @@ class CudaPackage(PackageBase):
"""Auxiliary class which contains CUDA variant, dependencies and conflicts
and is meant to unify and facilitate its usage.
"""
maintainers = ['ax3l', 'svenevs']
# FIXME: keep cuda and cuda_arch separate to make usage easier untill
# https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
# https://developer.nvidia.com/cuda-gpus
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported
cuda_arch_values = [
'10', '11', '12', '13',
'20', '21',
'30', '32', '35', '37',
'50', '52', '53',
'60', '61', '62',
'70', '72', '75',
]
# FIXME: keep cuda and cuda_arch separate to make usage easier until
# Spack has depends_on(cuda, when='cuda_arch!=None') or alike
variant('cuda', default=False,
description='Build with CUDA')
# see http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
# https://developer.nvidia.com/cuda-gpus
variant('cuda_arch',
description='CUDA architecture',
values=spack.variant.any_combination_of(
'20', '30', '32', '35', '50', '52', '53', '60', '61',
'62', '70', '72', '75'
))
values=spack.variant.any_combination_of(*cuda_arch_values))
# see http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-examples
# and http://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code
# https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#nvcc-examples
# https://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code
@staticmethod
def cuda_flags(arch_list):
return [('--generate-code arch=compute_{0},code=sm_{0} '
'--generate-code arch=compute_{0},code=compute_{0}').format(s)
for s in arch_list]
depends_on("cuda@7:", when='+cuda')
depends_on('cuda', when='+cuda')
# CUDA version vs Architecture
depends_on("cuda@8:", when='cuda_arch=60')
depends_on("cuda@8:", when='cuda_arch=61')
depends_on("cuda@8:", when='cuda_arch=62')
depends_on("cuda@9:", when='cuda_arch=70')
depends_on("cuda@9:", when='cuda_arch=72')
depends_on("cuda@10:", when='cuda_arch=75')
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported
depends_on('cuda@:6.0', when='cuda_arch=10')
depends_on('cuda@:6.5', when='cuda_arch=11')
depends_on('cuda@2.1:6.5', when='cuda_arch=12')
depends_on('cuda@2.1:6.5', when='cuda_arch=13')
depends_on('cuda@:8', when='cuda_arch=20')
depends_on('cuda@3.0:8.0', when='cuda_arch=20')
depends_on('cuda@3.2:8.0', when='cuda_arch=21')
depends_on('cuda@5.0:10.2', when='cuda_arch=30')
depends_on('cuda@5.0:10.2', when='cuda_arch=32')
depends_on('cuda@5.0:10.2', when='cuda_arch=35')
depends_on('cuda@6.5:10.2', when='cuda_arch=37')
depends_on('cuda@6.0:', when='cuda_arch=50')
depends_on('cuda@6.5:', when='cuda_arch=52')
depends_on('cuda@6.5:', when='cuda_arch=53')
depends_on('cuda@8.0:', when='cuda_arch=60')
depends_on('cuda@8.0:', when='cuda_arch=61')
depends_on('cuda@8.0:', when='cuda_arch=62')
depends_on('cuda@9.0:', when='cuda_arch=70')
depends_on('cuda@9.0:', when='cuda_arch=72')
depends_on('cuda@10.0:', when='cuda_arch=75')
# There are at least three cases to be aware of for compiler conflicts
# 1. Linux x86_64
@@ -114,12 +140,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.2.89')
conflicts('%intel@19.0:', when='+cuda ^cuda@:10.0')
# 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:10.2.89')
conflicts('%xl@17:', when='+cuda ^cuda@:10.2.89')
# Mac OS X
# platform = ' platform=darwin'
@@ -130,18 +156,8 @@ def cuda_flags(arch_list):
# `clang-apple@x.y.z as a possible fix.
# Compiler conflicts will be eventual taken from here:
# https://docs.nvidia.com/cuda/cuda-installation-guide-mac-os-x/index.html#abstract
conflicts('platform=darwin', when='+cuda ^cuda@11.0:')
# Make sure cuda_arch can not be used without +cuda
conflicts('~cuda', when='cuda_arch=20')
conflicts('~cuda', when='cuda_arch=30')
conflicts('~cuda', when='cuda_arch=32')
conflicts('~cuda', when='cuda_arch=35')
conflicts('~cuda', when='cuda_arch=50')
conflicts('~cuda', when='cuda_arch=52')
conflicts('~cuda', when='cuda_arch=53')
conflicts('~cuda', when='cuda_arch=60')
conflicts('~cuda', when='cuda_arch=61')
conflicts('~cuda', when='cuda_arch=62')
conflicts('~cuda', when='cuda_arch=70')
conflicts('~cuda', when='cuda_arch=72')
conflicts('~cuda', when='cuda_arch=75')
for value in cuda_arch_values:
conflicts('~cuda', when='cuda_arch=' + value)

View File

@@ -1073,6 +1073,15 @@ def _setup_dependent_env_callback(
# which performs dizzyingly similar but necessarily different
# actions, and (b) function code leaves a bit more breathing
# room within the suffocating corset of flake8 line length.
# Intel MPI since 2019 depends on libfabric which is not in the
# lib directory but in a directory of its own which should be
# included in the rpath
if self.version >= ver('2019'):
d = ancestor(self.component_lib_dir('mpi'))
libfabrics_path = os.path.join(d, 'libfabric', 'lib')
env.append_path('SPACK_COMPILER_EXTRA_RPATHS',
libfabrics_path)
else:
raise InstallError('compilers_of_client arg required for MPI')

View File

@@ -5,9 +5,10 @@
import inspect
from llnl.util.filesystem import working_dir
from spack.directives import depends_on, extends, resource
from spack.package import PackageBase, run_before, run_after
from llnl.util.filesystem import working_dir, join_path
from spack.directives import depends_on, extends
from spack.package import PackageBase, run_after
import os
class SIPPackage(PackageBase):
@@ -40,33 +41,12 @@ class SIPPackage(PackageBase):
extends('python')
depends_on('qt')
resource(name='sip',
url='https://www.riverbankcomputing.com/static/Downloads/sip/4.19.18/sip-4.19.18.tar.gz',
sha256='c0bd863800ed9b15dcad477c4017cdb73fa805c25908b0240564add74d697e1e',
destination='.')
depends_on('py-sip')
def python(self, *args, **kwargs):
"""The python ``Executable``."""
inspect.getmodule(self).python(*args, **kwargs)
@run_before('configure')
def install_sip(self):
args = [
'--sip-module={0}'.format(self.sip_module),
'--bindir={0}'.format(self.prefix.bin),
'--destdir={0}'.format(inspect.getmodule(self).site_packages_dir),
'--incdir={0}'.format(inspect.getmodule(self).python_include_dir),
'--sipdir={0}'.format(self.prefix.share.sip),
'--stubsdir={0}'.format(inspect.getmodule(self).site_packages_dir),
]
with working_dir('sip-4.19.18'):
self.python('configure.py', *args)
inspect.getmodule(self).make()
inspect.getmodule(self).make('install')
def configure_file(self):
"""Returns the name of the configure file to use."""
return 'configure.py'
@@ -77,12 +57,15 @@ def configure(self, spec, prefix):
args = self.configure_args()
python_include_dir = 'python' + str(spec['python'].version.up_to(2))
args.extend([
'--verbose',
'--confirm-license',
'--qmake', spec['qt'].prefix.bin.qmake,
'--sip', prefix.bin.sip,
'--sip-incdir', inspect.getmodule(self).python_include_dir,
'--sip', spec['py-sip'].prefix.bin.sip,
'--sip-incdir', join_path(spec['py-sip'].prefix.include,
python_include_dir),
'--bindir', prefix.bin,
'--destdir', inspect.getmodule(self).site_packages_dir,
])
@@ -131,3 +114,14 @@ def import_module_test(self):
# Check that self.prefix is there after installation
run_after('install')(PackageBase.sanity_check_prefix)
@run_after('install')
def extend_path_setup(self):
# See github issue #14121 and PR #15297
module = self.spec['py-sip'].variants['module'].value
if module != 'sip':
module = module.split('.')[0]
with working_dir(inspect.getmodule(self).site_packages_dir):
with open(os.path.join(module, '__init__.py'), 'a') as f:
f.write('from pkgutil import extend_path\n')
f.write('__path__ = extend_path(__path__, __name__)\n')

View File

@@ -0,0 +1,40 @@
# 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)
import spack.util.url
import spack.package
class SourceforgePackage(spack.package.PackageBase):
"""Mixin that takes care of setting url and mirrors for Sourceforge
packages."""
#: Path of the package in a Sourceforge mirror
sourceforge_mirror_path = None
#: List of Sourceforge mirrors used by Spack
base_mirrors = [
'https://prdownloads.sourceforge.net/',
'https://freefr.dl.sourceforge.net/',
'https://netcologne.dl.sourceforge.net/',
'https://pilotfiber.dl.sourceforge.net/',
'https://downloads.sourceforge.net/',
'http://kent.dl.sourceforge.net/sourceforge/'
]
@property
def urls(self):
self._ensure_sourceforge_mirror_path_is_set_or_raise()
return [
spack.util.url.join(m, self.sourceforge_mirror_path,
resolve_href=True)
for m in self.base_mirrors
]
def _ensure_sourceforge_mirror_path_is_set_or_raise(self):
if self.sourceforge_mirror_path is None:
cls_name = type(self).__name__
msg = ('{0} must define a `sourceforge_mirror_path` attribute'
' [none defined]')
raise AttributeError(msg.format(cls_name))

View File

@@ -0,0 +1,37 @@
# 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)
import spack.util.url
import spack.package
class SourcewarePackage(spack.package.PackageBase):
"""Mixin that takes care of setting url and mirrors for Sourceware.org
packages."""
#: Path of the package in a Sourceware mirror
sourceware_mirror_path = None
#: List of Sourceware mirrors used by Spack
base_mirrors = [
'https://sourceware.org/pub/',
'https://mirrors.kernel.org/sourceware/',
'https://ftp.gwdg.de/pub/linux/sources.redhat.com/'
]
@property
def urls(self):
self._ensure_sourceware_mirror_path_is_set_or_raise()
return [
spack.util.url.join(m, self.sourceware_mirror_path,
resolve_href=True)
for m in self.base_mirrors
]
def _ensure_sourceware_mirror_path_is_set_or_raise(self):
if self.sourceware_mirror_path is None:
cls_name = type(self).__name__
msg = ('{0} must define a `sourceware_mirror_path` attribute'
' [none defined]')
raise AttributeError(msg.format(cls_name))

View File

@@ -75,13 +75,14 @@ def waf(self, *args, **kwargs):
def configure(self, spec, prefix):
"""Configures the project."""
args = self.configure_args()
args = ['--prefix={0}'.format(self.prefix)]
args += self.configure_args()
self.waf('configure', *args)
def configure_args(self):
"""Arguments to pass to configure."""
return ['--prefix={0}'.format(self.prefix)]
return []
def build(self, spec, prefix):
"""Executes the build."""

View File

@@ -0,0 +1,42 @@
# 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)
import spack.util.url
import spack.package
class XorgPackage(spack.package.PackageBase):
"""Mixin that takes care of setting url and mirrors for x.org
packages."""
#: Path of the package in a x.org mirror
xorg_mirror_path = None
#: List of x.org mirrors used by Spack
# Note: x.org mirrors are a bit tricky, since many are out-of-sync or off.
# A good package to test with is `util-macros`, which had a "recent"
# release.
base_mirrors = [
'https://www.x.org/archive/individual/',
'https://mirrors.ircam.fr/pub/x.org/individual/',
'https://mirror.transip.net/xorg/individual/',
'ftp://ftp.freedesktop.org/pub/xorg/individual/',
'http://xorg.mirrors.pair.com/individual/'
]
@property
def urls(self):
self._ensure_xorg_mirror_path_is_set_or_raise()
return [
spack.util.url.join(m, self.xorg_mirror_path,
resolve_href=True)
for m in self.base_mirrors
]
def _ensure_xorg_mirror_path_is_set_or_raise(self):
if self.xorg_mirror_path is None:
cls_name = type(self).__name__
msg = ('{0} must define a `xorg_mirror_path` attribute'
' [none defined]')
raise AttributeError(msg.format(cls_name))

View File

@@ -50,8 +50,9 @@ def _fetch_cache():
class MirrorCache(object):
def __init__(self, root):
def __init__(self, root, skip_unstable_versions):
self.root = os.path.abspath(root)
self.skip_unstable_versions = skip_unstable_versions
def store(self, fetcher, relative_dest):
"""Fetch and relocate the fetcher's target into our mirror cache."""
@@ -84,5 +85,3 @@ def symlink(self, mirror_ref):
#: Spack's local cache for downloaded source archives
fetch_cache = llnl.util.lang.Singleton(_fetch_cache)
mirror_cache = None

View File

@@ -24,7 +24,6 @@
import spack.compilers as compilers
import spack.config as cfg
import spack.environment as ev
from spack.dependency import all_deptypes
from spack.error import SpackError
import spack.hash_types as ht
from spack.main import SpackCommand
@@ -34,6 +33,10 @@
import spack.util.web as web_util
JOB_RETRY_CONDITIONS = [
'always',
]
spack_gpg = SpackCommand('gpg')
spack_compiler = SpackCommand('compiler')
@@ -342,25 +345,24 @@ def compute_spec_deps(spec_list):
],
"specs": [
{
"root_spec": "readline@7.0%clang@9.1.0-apple arch=darwin-...",
"spec": "readline@7.0%clang@9.1.0-apple arch=darwin-highs...",
"root_spec": "readline@7.0%apple-clang@9.1.0 arch=darwin-...",
"spec": "readline@7.0%apple-clang@9.1.0 arch=darwin-highs...",
"label": "readline/ip6aiun"
},
{
"root_spec": "readline@7.0%clang@9.1.0-apple arch=darwin-...",
"spec": "ncurses@6.1%clang@9.1.0-apple arch=darwin-highsi...",
"root_spec": "readline@7.0%apple-clang@9.1.0 arch=darwin-...",
"spec": "ncurses@6.1%apple-clang@9.1.0 arch=darwin-highsi...",
"label": "ncurses/y43rifz"
},
{
"root_spec": "readline@7.0%clang@9.1.0-apple arch=darwin-...",
"spec": "pkgconf@1.5.4%clang@9.1.0-apple arch=darwin-high...",
"root_spec": "readline@7.0%apple-clang@9.1.0 arch=darwin-...",
"spec": "pkgconf@1.5.4%apple-clang@9.1.0 arch=darwin-high...",
"label": "pkgconf/eg355zb"
}
]
}
"""
deptype = all_deptypes
spec_labels = {}
specs = []
@@ -380,7 +382,7 @@ def append_dep(s, d):
rkey, rlabel = spec_deps_key_label(spec)
for s in spec.traverse(deptype=deptype):
for s in spec.traverse(deptype=all):
if s.external:
tty.msg('Will not stage external pkg: {0}'.format(s))
continue
@@ -392,7 +394,7 @@ def append_dep(s, d):
}
append_dep(rlabel, slabel)
for d in s.dependencies(deptype=deptype):
for d in s.dependencies(deptype=all):
dkey, dlabel = spec_deps_key_label(d)
if d.external:
tty.msg('Will not stage external dep: {0}'.format(d))
@@ -400,11 +402,11 @@ def append_dep(s, d):
append_dep(slabel, dlabel)
for l, d in spec_labels.items():
for spec_label, spec_holder in spec_labels.items():
specs.append({
'label': l,
'spec': d['spec'],
'root_spec': d['root'],
'label': spec_label,
'spec': spec_holder['spec'],
'root_spec': spec_holder['root'],
})
deps_json_obj = {
@@ -431,8 +433,24 @@ def pkg_name_from_spec_label(spec_label):
return spec_label[:spec_label.index('/')]
def format_job_needs(phase_name, strip_compilers, dep_jobs,
osname, build_group, enable_artifacts_buildcache):
needs_list = []
for dep_job in dep_jobs:
needs_list.append({
'job': get_job_name(phase_name,
strip_compilers,
dep_job,
osname,
build_group),
'artifacts': enable_artifacts_buildcache,
})
return needs_list
def generate_gitlab_ci_yaml(env, print_summary, output_file,
custom_spack_repo=None, custom_spack_ref=None):
custom_spack_repo=None, custom_spack_ref=None,
run_optimizer=False, use_dependencies=False):
# FIXME: What's the difference between one that opens with 'spack'
# and one that opens with 'env'? This will only handle the former.
with spack.concretize.disable_compiler_existence_check():
@@ -466,6 +484,10 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
tty.verbose("Using CDash auth token from environment")
cdash_auth_token = os.environ.get('SPACK_CDASH_AUTH_TOKEN')
is_pr_pipeline = (
os.environ.get('SPACK_IS_PR_PIPELINE', '').lower() == 'true'
)
# Make sure we use a custom spack if necessary
before_script = None
after_script = None
@@ -473,10 +495,9 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
if not custom_spack_ref:
custom_spack_ref = 'master'
before_script = [
('git clone "{0}" --branch "{1}" --depth 1 '
'--single-branch'.format(custom_spack_repo, custom_spack_ref)),
# Next line just shows spack version in pipeline output
'pushd ./spack && git rev-parse HEAD && popd',
('git clone "{0}"'.format(custom_spack_repo)),
'pushd ./spack && git checkout "{0}" && popd'.format(
custom_spack_ref),
'. "./spack/share/spack/setup-env.sh"',
]
after_script = [
@@ -538,6 +559,9 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
stage_names = []
max_length_needs = 0
max_needs_job = ''
for phase in phases:
phase_name = phase['name']
strip_compilers = phase['strip-compilers']
@@ -588,7 +612,10 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
if 'enable-debug-messages' in gitlab_ci:
debug_flag = '-d '
job_scripts = ['spack {0}ci rebuild'.format(debug_flag)]
job_scripts = [
'spack env activate .',
'spack {0}ci rebuild'.format(debug_flag),
]
compiler_action = 'NONE'
if len(phases) > 1:
@@ -601,25 +628,35 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
root_spec, main_phase, strip_compilers),
'SPACK_JOB_SPEC_PKG_NAME': release_spec.name,
'SPACK_COMPILER_ACTION': compiler_action,
'SPACK_IS_PR_PIPELINE': str(is_pr_pipeline),
}
job_dependencies = []
if spec_label in dependencies:
for dep_label in dependencies[spec_label]:
dep_pkg = pkg_name_from_spec_label(dep_label)
dep_spec = spec_labels[dep_label]['rootSpec'][dep_pkg]
dep_job_name = get_job_name(
phase_name, strip_compilers, dep_spec, osname,
build_group)
job_dependencies.append(dep_job_name)
if enable_artifacts_buildcache:
dep_jobs = [
d for d in release_spec.traverse(deptype=all,
root=False)
]
else:
dep_jobs = []
for dep_label in dependencies[spec_label]:
dep_pkg = pkg_name_from_spec_label(dep_label)
dep_root = spec_labels[dep_label]['rootSpec']
dep_jobs.append(dep_root[dep_pkg])
job_dependencies.extend(
format_job_needs(phase_name, strip_compilers, dep_jobs,
osname, build_group,
enable_artifacts_buildcache))
# This next section helps gitlab make sure the right
# bootstrapped compiler exists in the artifacts buildcache by
# creating an artificial dependency between this spec and its
# compiler. So, if we are in the main phase, and if the
# compiler we are supposed to use is listed in any of the
# bootstrap spec lists, then we will add one more dependency to
# "job_dependencies" (that compiler).
# bootstrap spec lists, then we will add more dependencies to
# the job (that compiler and maybe it's dependencies as well).
if is_main_phase(phase_name):
compiler_pkg_spec = compilers.pkg_spec_for_compiler(
release_spec.compiler)
@@ -627,12 +664,25 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
bs_arch = bs['spec'].architecture
if (bs['spec'].satisfies(compiler_pkg_spec) and
bs_arch == release_spec.architecture):
c_job_name = get_job_name(bs['phase-name'],
bs['strip-compilers'],
bs['spec'],
str(bs_arch),
build_group)
job_dependencies.append(c_job_name)
# We found the bootstrap compiler this release spec
# should be built with, so for DAG scheduling
# purposes, we will at least add the compiler spec
# to the jobs "needs". But if artifact buildcache
# is enabled, we'll have to add all transtive deps
# of the compiler as well.
dep_jobs = [bs['spec']]
if enable_artifacts_buildcache:
dep_jobs = [
d for d in bs['spec'].traverse(deptype=all)
]
job_dependencies.extend(
format_job_needs(bs['phase-name'],
bs['strip-compilers'],
dep_jobs,
str(bs_arch),
build_group,
enable_artifacts_buildcache))
if enable_cdash_reporting:
cdash_build_name = get_cdash_build_name(
@@ -647,7 +697,7 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
job_vars['SPACK_CDASH_BUILD_NAME'] = cdash_build_name
job_vars['SPACK_RELATED_BUILDS_CDASH'] = ';'.join(
related_builds)
sorted(related_builds))
variables.update(job_vars)
@@ -657,7 +707,12 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
]
if enable_artifacts_buildcache:
artifact_paths.append('local_mirror/build_cache')
bc_root = 'local_mirror/build_cache'
artifact_paths.extend([os.path.join(bc_root, p) for p in [
bindist.tarball_name(release_spec, '.spec.yaml'),
bindist.tarball_name(release_spec, '.cdashid'),
bindist.tarball_directory_name(release_spec),
]])
job_object = {
'stage': stage_name,
@@ -668,9 +723,18 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
'paths': artifact_paths,
'when': 'always',
},
'dependencies': job_dependencies,
'needs': sorted(job_dependencies, key=lambda d: d['job']),
'retry': {
'max': 2,
'when': JOB_RETRY_CONDITIONS,
}
}
length_needs = len(job_dependencies)
if length_needs > max_length_needs:
max_length_needs = length_needs
max_needs_job = job_name
if before_script:
job_object['before_script'] = before_script
@@ -691,6 +755,9 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
tty.debug('{0} build jobs generated in {1} stages'.format(
job_id, stage_id))
tty.debug('The max_needs_job is {0}, with {1} needs'.format(
max_needs_job, max_length_needs))
# Use "all_job_names" to populate the build group for this set
if enable_cdash_reporting and cdash_auth_token:
try:
@@ -701,7 +768,7 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
else:
tty.warn('Unable to populate buildgroup without CDash credentials')
if final_job_config:
if final_job_config and not is_pr_pipeline:
# Add an extra, final job to regenerate the index
final_stage = 'stage-rebuild-index'
final_job = {
@@ -721,8 +788,22 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
output_object['stages'] = stage_names
sorted_output = {}
for output_key, output_value in sorted(output_object.items()):
sorted_output[output_key] = output_value
# TODO(opadron): remove this or refactor
if run_optimizer:
import spack.ci_optimization as ci_opt
sorted_output = ci_opt.optimizer(sorted_output)
# TODO(opadron): remove this or refactor
if use_dependencies:
import spack.ci_needs_workaround as cinw
sorted_output = cinw.needs_to_dependencies(sorted_output)
with open(output_file, 'w') as outf:
outf.write(syaml.dump_config(output_object, default_flow_style=True))
outf.write(syaml.dump_config(sorted_output, default_flow_style=True))
def url_encode_string(input_string):
@@ -947,8 +1028,9 @@ def read_cdashid_from_mirror(spec, mirror_url):
def push_mirror_contents(env, spec, yaml_path, mirror_url, build_id):
if mirror_url:
tty.debug('Creating buildcache')
buildcache._createtarball(env, yaml_path, None, mirror_url, None,
True, True, False, False, True, False)
buildcache._createtarball(env, spec_yaml=yaml_path, add_deps=False,
output_location=mirror_url, force=True,
allow_root=True)
if build_id:
tty.debug('Writing cdashid ({0}) to remote mirror: {1}'.format(
build_id, mirror_url))

View File

@@ -0,0 +1,47 @@
# 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)
import collections
try:
# dynamically import to keep vermin from complaining
collections_abc = __import__('collections.abc')
except ImportError:
collections_abc = collections
get_job_name = lambda needs_entry: (
needs_entry.get('job') if (
isinstance(needs_entry, collections_abc.Mapping) and
needs_entry.get('artifacts', True))
else
needs_entry if isinstance(needs_entry, str)
else None)
def convert_job(job_entry):
if not isinstance(job_entry, collections_abc.Mapping):
return job_entry
needs = job_entry.get('needs')
if needs is None:
return job_entry
new_job = {}
new_job.update(job_entry)
del new_job['needs']
new_job['dependencies'] = list(filter(
(lambda x: x is not None),
(get_job_name(needs_entry) for needs_entry in needs)))
return new_job
def needs_to_dependencies(yaml):
return dict((k, convert_job(v)) for k, v in yaml.items())

View File

@@ -0,0 +1,394 @@
# 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)
import collections
try:
# dynamically import to keep vermin from complaining
collections_abc = __import__('collections.abc')
except ImportError:
collections_abc = collections
import copy
import hashlib
import spack.util.spack_yaml as syaml
def sort_yaml_obj(obj):
if isinstance(obj, collections_abc.Mapping):
return syaml.syaml_dict(
(k, sort_yaml_obj(v))
for k, v in
sorted(obj.items(), key=(lambda item: str(item[0]))))
if isinstance(obj, collections_abc.Sequence) and not isinstance(obj, str):
return syaml.syaml_list(sort_yaml_obj(x) for x in obj)
return obj
def matches(obj, proto):
"""Returns True if the test object "obj" matches the prototype object
"proto".
If obj and proto are mappings, obj matches proto if (key in obj) and
(obj[key] matches proto[key]) for every key in proto.
If obj and proto are sequences, obj matches proto if they are of the same
length and (a matches b) for every (a,b) in zip(obj, proto).
Otherwise, obj matches proto if obj == proto.
Precondition: proto must not have any reference cycles
"""
if isinstance(obj, collections_abc.Mapping):
if not isinstance(proto, collections_abc.Mapping):
return False
return all(
(key in obj and matches(obj[key], val))
for key, val in proto.items()
)
if (isinstance(obj, collections_abc.Sequence) and
not isinstance(obj, str)):
if not (isinstance(proto, collections_abc.Sequence) and
not isinstance(proto, str)):
return False
if len(obj) != len(proto):
return False
return all(
matches(obj[index], val)
for index, val in enumerate(proto)
)
return obj == proto
def subkeys(obj, proto):
"""Returns the test mapping "obj" after factoring out the items it has in
common with the prototype mapping "proto".
Consider a recursive merge operation, merge(a, b) on mappings a and b, that
returns a mapping, m, whose keys are the union of the keys of a and b, and
for every such key, "k", its corresponding value is:
- merge(a[key], b[key]) if a[key] and b[key] are mappings, or
- b[key] if (key in b) and not matches(a[key], b[key]),
or
- a[key] otherwise
If obj and proto are mappings, the returned object is the smallest object,
"a", such that merge(a, proto) matches obj.
Otherwise, obj is returned.
"""
if not (isinstance(obj, collections_abc.Mapping) and
isinstance(proto, collections_abc.Mapping)):
return obj
new_obj = {}
for key, value in obj.items():
if key not in proto:
new_obj[key] = value
continue
if (matches(value, proto[key]) and
matches(proto[key], value)):
continue
if isinstance(value, collections_abc.Mapping):
new_obj[key] = subkeys(value, proto[key])
continue
new_obj[key] = value
return new_obj
def add_extends(yaml, key):
"""Modifies the given object "yaml" so that it includes an "extends" key
whose value features "key".
If "extends" is not in yaml, then yaml is modified such that
yaml["extends"] == key.
If yaml["extends"] is a str, then yaml is modified such that
yaml["extends"] == [yaml["extends"], key]
If yaml["extends"] is a list that does not include key, then key is
appended to the list.
Otherwise, yaml is left unchanged.
"""
has_key = ('extends' in yaml)
extends = yaml.get('extends')
if has_key and not isinstance(extends, (str, collections_abc.Sequence)):
return
if extends is None:
yaml['extends'] = key
return
if isinstance(extends, str):
if extends != key:
yaml['extends'] = [extends, key]
return
if key not in extends:
extends.append(key)
def common_subobject(yaml, sub):
"""Factor prototype object "sub" out of the values of mapping "yaml".
Consider a modified copy of yaml, "new", where for each key, "key" in yaml:
- If yaml[key] matches sub, then new[key] = subkeys(yaml[key], sub).
- Otherwise, new[key] = yaml[key].
If the above match criteria is not satisfied for any such key, then (yaml,
None) is returned. The yaml object is returned unchanged.
Otherwise, each matching value in new is modified as in
add_extends(new[key], common_key), and then new[common_key] is set to sub.
The common_key value is chosen such that it does not match any preexisting
key in new. In this case, (new, common_key) is returned.
"""
match_list = set(k for k, v in yaml.items() if matches(v, sub))
if not match_list:
return yaml, None
common_prefix = '.c'
common_index = 0
while True:
common_key = ''.join((common_prefix, str(common_index)))
if common_key not in yaml:
break
common_index += 1
new_yaml = {}
for key, val in yaml.items():
new_yaml[key] = copy.deepcopy(val)
if not matches(val, sub):
continue
new_yaml[key] = subkeys(new_yaml[key], sub)
add_extends(new_yaml[key], common_key)
new_yaml[common_key] = sub
return new_yaml, common_key
def print_delta(name, old, new, applied=None):
delta = new - old
reldelta = (1000 * delta) // old
reldelta = (reldelta // 10, reldelta % 10)
if applied is None:
applied = (new <= old)
print('\n'.join((
'{0} {1}:',
' before: {2: 10d}',
' after : {3: 10d}',
' delta : {4:+10d} ({5:=+3d}.{6}%)',
)).format(
name,
('+' if applied else 'x'),
old,
new,
delta,
reldelta[0],
reldelta[1]
))
def try_optimization_pass(name, yaml, optimization_pass, *args, **kwargs):
"""Try applying an optimization pass and return information about the
result
"name" is a string describing the nature of the pass. If it is a non-empty
string, summary statistics are also printed to stdout.
"yaml" is the object to apply the pass to.
"optimization_pass" is the function implementing the pass to be applied.
"args" and "kwargs" are the additional arguments to pass to optimization
pass. The pass is applied as
>>> (new_yaml, *other_results) = optimization_pass(yaml, *args, **kwargs)
The pass's results are greedily rejected if it does not modify the original
yaml document, or if it produces a yaml document that serializes to a
larger string.
Returns (new_yaml, yaml, applied, other_results) if applied, or
(yaml, new_yaml, applied, other_results) otherwise.
"""
result = optimization_pass(yaml, *args, **kwargs)
new_yaml, other_results = result[0], result[1:]
if new_yaml is yaml:
# pass was not applied
return (yaml, new_yaml, False, other_results)
pre_size = len(syaml.dump_config(
sort_yaml_obj(yaml), default_flow_style=True))
post_size = len(syaml.dump_config(
sort_yaml_obj(new_yaml), default_flow_style=True))
# pass makes the size worse: not applying
applied = (post_size <= pre_size)
if applied:
yaml, new_yaml = new_yaml, yaml
if name:
print_delta(name, pre_size, post_size, applied)
return (yaml, new_yaml, applied, other_results)
def build_histogram(iterator, key):
"""Builds a histogram of values given an iterable of mappings and a key.
For each mapping "m" with key "key" in iterator, the value m[key] is
considered.
Returns a list of tuples (hash, count, proportion, value), where
- "hash" is a sha1sum hash of the value.
- "count" is the number of occurences of values that hash to "hash".
- "proportion" is the proportion of all values considered above that
hash to "hash".
- "value" is one of the values considered above that hash to "hash".
Which value is chosen when multiple values hash to the same "hash" is
undefined.
The list is sorted in descending order by count, yielding the most
frequently occuring hashes first.
"""
buckets = collections.defaultdict(int)
values = {}
num_objects = 0
for obj in iterator:
num_objects += 1
try:
val = obj[key]
except (KeyError, TypeError):
continue
value_hash = hashlib.sha1()
value_hash.update(syaml.dump_config(sort_yaml_obj(val)).encode())
value_hash = value_hash.hexdigest()
buckets[value_hash] += 1
values[value_hash] = val
return [(h, buckets[h], float(buckets[h]) / num_objects, values[h])
for h in sorted(buckets.keys(), key=lambda k: -buckets[k])]
def optimizer(yaml):
original_size = len(syaml.dump_config(
sort_yaml_obj(yaml), default_flow_style=True))
# try factoring out commonly repeated portions
common_job = {
'variables': {
'SPACK_COMPILER_ACTION': 'NONE',
'SPACK_RELATED_BUILDS_CDASH': ''
},
'after_script': ['rm -rf "./spack"'],
'artifacts': {
'paths': ['jobs_scratch_dir', 'cdash_report'],
'when': 'always'
},
}
# look for a list of tags that appear frequently
_, count, proportion, tags = next(iter(
build_histogram(yaml.values(), 'tags')),
(None,) * 4)
# If a list of tags is found, and there are more than one job that uses it,
# *and* the jobs that do use it represent at least 70% of all jobs, then
# add the list to the prototype object.
if tags and count > 1 and proportion >= 0.70:
common_job['tags'] = tags
# apply common object factorization
yaml, other, applied, rest = try_optimization_pass(
'general common object factorization',
yaml, common_subobject, common_job)
# look for a common script, and try factoring that out
_, count, proportion, script = next(iter(
build_histogram(yaml.values(), 'script')),
(None,) * 4)
if script and count > 1 and proportion >= 0.70:
yaml, other, applied, rest = try_optimization_pass(
'script factorization',
yaml, common_subobject, {'script': script})
# look for a common before_script, and try factoring that out
_, count, proportion, script = next(iter(
build_histogram(yaml.values(), 'before_script')),
(None,) * 4)
if script and count > 1 and proportion >= 0.70:
yaml, other, applied, rest = try_optimization_pass(
'before_script factorization',
yaml, common_subobject, {'before_script': script})
# Look specifically for the SPACK_ROOT_SPEC environment variables.
# Try to factor them out.
h = build_histogram((
getattr(val, 'get', lambda *args: {})('variables')
for val in yaml.values()), 'SPACK_ROOT_SPEC')
# In this case, we try to factor out *all* instances of the SPACK_ROOT_SPEC
# environment variable; not just the one that appears with the greatest
# frequency. We only require that more than 1 job uses a given instance's
# value, because we expect the value to be very large, and so expect even
# few-to-one factorizations to yield large space savings.
counter = 0
for _, count, proportion, spec in h:
if count <= 1:
continue
counter += 1
yaml, other, applied, rest = try_optimization_pass(
'SPACK_ROOT_SPEC factorization ({count})'.format(count=counter),
yaml,
common_subobject,
{'variables': {'SPACK_ROOT_SPEC': spec}})
new_size = len(syaml.dump_config(
sort_yaml_obj(yaml), default_flow_style=True))
print('\n')
print_delta('overall summary', original_size, new_size)
print('\n')
return yaml

View File

@@ -9,6 +9,7 @@
import re
import sys
import argparse
import ruamel.yaml as yaml
import six
@@ -16,7 +17,7 @@
from llnl.util.lang import attr_setdefault, index_by
from llnl.util.tty.colify import colify
from llnl.util.tty.color import colorize
from llnl.util.filesystem import working_dir
from llnl.util.filesystem import join_path
import spack.config
import spack.error
@@ -26,6 +27,7 @@
import spack.store
import spack.util.spack_json as sjson
import spack.util.string
from ruamel.yaml.error import MarkedYAMLError
# cmd has a submodule called "list" so preserve the python list module
@@ -43,11 +45,28 @@ def python_name(cmd_name):
return cmd_name.replace("-", "_")
def require_python_name(pname):
"""Require that the provided name is a valid python name (per
python_name()). Useful for checking parameters for function
prerequisites."""
if python_name(pname) != pname:
raise PythonNameError(pname)
def cmd_name(python_name):
"""Convert module name (with ``_``) to command name (with ``-``)."""
return python_name.replace('_', '-')
def require_cmd_name(cname):
"""Require that the provided name is a valid command name (per
cmd_name()). Useful for checking parameters for function
prerequisites.
"""
if cmd_name(cname) != cname:
raise CommandNameError(cname)
#: global, cached list of all commands -- access through all_commands()
_all_commands = None
@@ -91,6 +110,7 @@ def get_module(cmd_name):
cmd_name (str): name of the command for which to get a module
(contains ``-``, not ``_``).
"""
require_cmd_name(cmd_name)
pname = python_name(cmd_name)
try:
@@ -102,8 +122,6 @@ def get_module(cmd_name):
tty.debug('Imported {0} from built-in commands'.format(pname))
except ImportError:
module = spack.extensions.get_module(cmd_name)
if not module:
raise
attr_setdefault(module, SETUP_PARSER, lambda *args: None) # null-op
attr_setdefault(module, DESCRIPTION, "")
@@ -116,14 +134,16 @@ def get_module(cmd_name):
def get_command(cmd_name):
"""Imports the command's function from a module and returns it.
"""Imports the command function associated with cmd_name.
The function's name is derived from cmd_name using python_name().
Args:
cmd_name (str): name of the command for which to get a module
(contains ``-``, not ``_``).
cmd_name (str): name of the command (contains ``-``, not ``_``).
"""
require_cmd_name(cmd_name)
pname = python_name(cmd_name)
return getattr(get_module(pname), pname)
return getattr(get_module(cmd_name), pname)
def parse_specs(args, **kwargs):
@@ -177,7 +197,7 @@ def elide_list(line_list, max_num=10):
return line_list
def disambiguate_spec(spec, env, local=False, installed=True):
def disambiguate_spec(spec, env, local=False, installed=True, first=False):
"""Given a spec, figure out which installed package it refers to.
Arguments:
@@ -190,10 +210,11 @@ def disambiguate_spec(spec, env, local=False, installed=True):
database query. See ``spack.database.Database._query`` for details.
"""
hashes = env.all_hashes() if env else None
return disambiguate_spec_from_hashes(spec, hashes, local, installed)
return disambiguate_spec_from_hashes(spec, hashes, local, installed, first)
def disambiguate_spec_from_hashes(spec, hashes, local=False, installed=True):
def disambiguate_spec_from_hashes(spec, hashes, local=False,
installed=True, first=False):
"""Given a spec and a list of hashes, get concrete spec the spec refers to.
Arguments:
@@ -213,6 +234,9 @@ def disambiguate_spec_from_hashes(spec, hashes, local=False, installed=True):
if not matching_specs:
tty.die("Spec '%s' matches no installed packages." % spec)
elif first:
return matching_specs[0]
elif len(matching_specs) > 1:
format_string = '{name}{@version}{%compiler}{arch=architecture}'
args = ["%s matches multiple packages." % spec,
@@ -411,8 +435,39 @@ def format_list(specs):
def spack_is_git_repo():
"""Ensure that this instance of Spack is a git clone."""
with working_dir(spack.paths.prefix):
return os.path.isdir('.git')
return is_git_repo(spack.paths.prefix)
def is_git_repo(path):
dotgit_path = join_path(path, '.git')
if os.path.isdir(dotgit_path):
# we are in a regular git repo
return True
if os.path.isfile(dotgit_path):
# we might be in a git worktree
try:
with open(dotgit_path, "rb") as f:
dotgit_content = yaml.load(f)
return os.path.isdir(dotgit_content.get("gitdir", dotgit_path))
except MarkedYAMLError:
pass
return False
class PythonNameError(spack.error.SpackError):
"""Exception class thrown for impermissible python names"""
def __init__(self, name):
self.name = name
super(PythonNameError, self).__init__(
'{0} is not a permissible Python name.'.format(name))
class CommandNameError(spack.error.SpackError):
"""Exception class thrown for impermissible command names"""
def __init__(self, name):
self.name = name
super(CommandNameError, self).__init__(
'{0} is not a permissible Spack command name.'.format(name))
########################################

View File

@@ -1,80 +0,0 @@
# 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)
import llnl.util.cpu
import llnl.util.tty as tty
import spack.repo
import spack.spec
import spack.cmd.common.arguments as arguments
description = "Bootstrap packages needed for spack to run smoothly"
section = "admin"
level = "long"
def setup_parser(subparser):
arguments.add_common_arguments(subparser, ['jobs'])
subparser.add_argument(
'--keep-prefix', action='store_true', dest='keep_prefix',
help="don't remove the install prefix if installation fails")
subparser.add_argument(
'--keep-stage', action='store_true', dest='keep_stage',
help="don't remove the build stage if installation succeeds")
arguments.add_common_arguments(subparser, ['no_checksum'])
subparser.add_argument(
'-v', '--verbose', action='store_true', dest='verbose',
help="display verbose build output while installing")
cache_group = subparser.add_mutually_exclusive_group()
cache_group.add_argument(
'--use-cache', action='store_true', dest='use_cache', default=True,
help="check for pre-built Spack packages in mirrors (default)")
cache_group.add_argument(
'--no-cache', action='store_false', dest='use_cache', default=True,
help="do not check for pre-built Spack packages in mirrors")
cache_group.add_argument(
'--cache-only', action='store_true', dest='cache_only', default=False,
help="only install package from binary mirrors")
cd_group = subparser.add_mutually_exclusive_group()
arguments.add_common_arguments(cd_group, ['clean', 'dirty'])
def bootstrap(parser, args, **kwargs):
kwargs.update({
'keep_prefix': args.keep_prefix,
'keep_stage': args.keep_stage,
'install_deps': 'dependencies',
'verbose': args.verbose,
'dirty': args.dirty,
'use_cache': args.use_cache,
'cache_only': args.cache_only
})
# Define requirement dictionary defining general specs which need
# to be satisfied, and the specs to install when the general spec
# isn't satisfied.
requirement_dict = {
# Install environment-modules with generic optimizations
'environment-modules': 'environment-modules~X target={0}'.format(
llnl.util.cpu.host().family
)
}
for requirement in requirement_dict:
installed_specs = spack.store.db.query(requirement)
if(len(installed_specs) > 0):
tty.msg("Requirement %s is satisfied with installed "
"package %s" % (requirement, installed_specs[0]))
else:
# Install requirement
spec_to_install = spack.spec.Spec(requirement_dict[requirement])
spec_to_install.concretize()
tty.msg("Installing %s to satisfy requirement for %s" %
(spec_to_install, requirement))
kwargs['explicit'] = True
package = spack.repo.get(spec_to_install)
package.do_install(**kwargs)

View File

@@ -1,45 +0,0 @@
# 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)
import spack.cmd.configure as cfg
import llnl.util.tty as tty
from spack.build_systems.autotools import AutotoolsPackage
from spack.build_systems.cmake import CMakePackage
from spack.build_systems.qmake import QMakePackage
from spack.build_systems.scons import SConsPackage
from spack.build_systems.waf import WafPackage
from spack.build_systems.python import PythonPackage
from spack.build_systems.perl import PerlPackage
from spack.build_systems.meson import MesonPackage
from spack.build_systems.sip import SIPPackage
description = 'DEPRECATED: stops at build stage when installing a package'
section = "build"
level = "long"
build_system_to_phase = {
AutotoolsPackage: 'build',
CMakePackage: 'build',
QMakePackage: 'build',
SConsPackage: 'build',
WafPackage: 'build',
PythonPackage: 'build',
PerlPackage: 'build',
MesonPackage: 'build',
SIPPackage: 'build',
}
def setup_parser(subparser):
cfg.setup_parser(subparser)
def build(parser, args):
tty.warn("This command is deprecated. Use `spack install --until` to"
" select an end phase instead. The `spack build` command will be"
" removed in a future version of Spack")
cfg._stop_at_phase_during_install(args, build, build_system_to_phase)

View File

@@ -52,16 +52,35 @@ def setup_parser(subparser):
create.add_argument('-k', '--key', metavar='key',
type=str, default=None,
help="Key for signing.")
create.add_argument('-d', '--directory', metavar='directory',
type=str, default='.',
help="directory in which to save the tarballs.")
create.add_argument('--no-rebuild-index', action='store_true',
default=False, help="skip rebuilding index after " +
"building package(s)")
output = create.add_mutually_exclusive_group(required=True)
output.add_argument('-d', '--directory',
metavar='directory',
type=str,
help="local directory where " +
"buildcaches will be written.")
output.add_argument('-m', '--mirror-name',
metavar='mirror-name',
type=str,
help="name of the mirror where " +
"buildcaches will be written.")
output.add_argument('--mirror-url',
metavar='mirror-url',
type=str,
help="URL of the mirror where " +
"buildcaches will be written.")
create.add_argument('--rebuild-index', action='store_true',
default=False, help="Regenerate buildcache index " +
"after building package(s)")
create.add_argument('-y', '--spec-yaml', default=None,
help='Create buildcache entry for spec from yaml file')
create.add_argument('--no-deps', action='store_true', default='false',
help='Create buildcache entry wo/ dependencies')
create.add_argument('--only', default='package,dependencies',
dest='things_to_install',
choices=['package', 'dependencies'],
help=('Select the buildcache mode. the default is to'
' build a cache for the package along with all'
' its dependencies. Alternatively, one can'
' decide to build a cache for only the package'
' or only the dependencies'))
arguments.add_common_arguments(create, ['specs'])
create.set_defaults(func=createtarball)
@@ -76,6 +95,10 @@ def setup_parser(subparser):
install.add_argument('-u', '--unsigned', action='store_true',
help="install unsigned buildcache" +
" tarballs for testing")
install.add_argument('-o', '--otherarch', action='store_true',
help="install specs from other architectures" +
" instead of default platform and OS")
arguments.add_common_arguments(install, ['specs'])
install.set_defaults(func=installtarball)
@@ -85,8 +108,6 @@ def setup_parser(subparser):
action='store_true',
dest='variants',
help='show variants in output (can be long)')
listcache.add_argument('-f', '--force', action='store_true',
help="force new download of specs")
listcache.add_argument('-a', '--allarch', action='store_true',
help="list specs for all available architectures" +
" instead of default platform and OS")
@@ -252,7 +273,8 @@ def find_matching_specs(pkgs, allow_multiple_matches=False, env=None):
return specs_from_cli
def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False):
def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False,
other_arch=False):
"""Returns a list of specs matching the not necessarily
concretized specs given from cli
@@ -266,8 +288,8 @@ def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False):
# List of specs that match expressions given via command line
specs_from_cli = []
has_errors = False
allarch = False
specs = bindist.get_specs(force, allarch)
allarch = other_arch
specs = bindist.get_specs(allarch)
for pkg in pkgs:
matches = []
tty.msg("buildcache spec(s) matching %s \n" % pkg)
@@ -299,8 +321,10 @@ def match_downloaded_specs(pkgs, allow_multiple_matches=False, force=False):
return specs_from_cli
def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
rel, unsigned, allow_root, no_rebuild_index):
def _createtarball(env, spec_yaml=None, packages=None, add_spec=True,
add_deps=True, output_location=os.getcwd(),
signing_key=None, force=False, make_relative=False,
unsigned=False, allow_root=False, rebuild_index=False):
if spec_yaml:
packages = set()
with open(spec_yaml, 'r') as fd:
@@ -313,23 +337,22 @@ def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
elif packages:
packages = packages
elif env:
packages = env.concretized_user_specs
else:
tty.die("build cache file creation requires at least one" +
" installed package argument or else path to a" +
" yaml file containing a spec to install")
" installed package spec, an activate environment," +
" or else a path to a yaml file containing a spec" +
" to install")
pkgs = set(packages)
specs = set()
outdir = '.'
if directory:
outdir = directory
mirror = spack.mirror.MirrorCollection().lookup(outdir)
mirror = spack.mirror.MirrorCollection().lookup(output_location)
outdir = url_util.format(mirror.push_url)
signkey = None
if key:
signkey = key
msg = 'Buildcache files will be output to %s/build_cache' % outdir
tty.msg(msg)
matches = find_matching_specs(pkgs, env=env)
@@ -342,14 +365,23 @@ def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
tty.debug('skipping external or virtual spec %s' %
match.format())
else:
tty.debug('adding matching spec %s' % match.format())
specs.add(match)
if no_deps is True:
if add_spec:
tty.debug('adding matching spec %s' % match.format())
specs.add(match)
else:
tty.debug('skipping matching spec %s' % match.format())
if not add_deps:
continue
tty.debug('recursing dependencies')
for d, node in match.traverse(order='post',
depth=True,
deptype=('link', 'run')):
# skip root, since it's handled above
if d == 0:
continue
if node.external or node.virtual:
tty.debug('skipping external or virtual dependency %s' %
node.format())
@@ -360,14 +392,10 @@ def _createtarball(env, spec_yaml, packages, directory, key, no_deps, force,
tty.debug('writing tarballs to %s/build_cache' % outdir)
for spec in specs:
tty.msg('creating binary cache file for package %s ' % spec.format())
try:
bindist.build_tarball(spec, outdir, force, rel,
unsigned, allow_root, signkey,
not no_rebuild_index)
except Exception as e:
tty.warn('%s' % e)
pass
tty.debug('creating binary cache file for package %s ' % spec.format())
bindist.build_tarball(spec, outdir, force, make_relative,
unsigned, allow_root, signing_key,
rebuild_index)
def createtarball(args):
@@ -376,9 +404,50 @@ def createtarball(args):
# restrict matching to current environment if one is active
env = ev.get_env(args, 'buildcache create')
_createtarball(env, args.spec_yaml, args.specs, args.directory,
args.key, args.no_deps, args.force, args.rel, args.unsigned,
args.allow_root, args.no_rebuild_index)
output_location = None
if args.directory:
output_location = args.directory
# User meant to provide a path to a local directory.
# Ensure that they did not accidentally pass a URL.
scheme = url_util.parse(output_location, scheme='<missing>').scheme
if scheme != '<missing>':
raise ValueError(
'"--directory" expected a local path; got a URL, instead')
# User meant to provide a path to a local directory.
# Ensure that the mirror lookup does not mistake it for a named mirror.
output_location = 'file://' + output_location
elif args.mirror_name:
output_location = args.mirror_name
# User meant to provide the name of a preconfigured mirror.
# Ensure that the mirror lookup actually returns a named mirror.
result = spack.mirror.MirrorCollection().lookup(output_location)
if result.name == "<unnamed>":
raise ValueError(
'no configured mirror named "{name}"'.format(
name=output_location))
elif args.mirror_url:
output_location = args.mirror_url
# User meant to provide a URL for an anonymous mirror.
# Ensure that they actually provided a URL.
scheme = url_util.parse(output_location, scheme='<missing>').scheme
if scheme == '<missing>':
raise ValueError(
'"{url}" is not a valid URL'.format(url=output_location))
add_spec = ('package' in args.things_to_install)
add_deps = ('dependencies' in args.things_to_install)
_createtarball(env, spec_yaml=args.spec_yaml, packages=args.specs,
add_spec=add_spec, add_deps=add_deps,
output_location=output_location, signing_key=args.key,
force=args.force, make_relative=args.rel,
unsigned=args.unsigned, allow_root=args.allow_root,
rebuild_index=args.rebuild_index)
def installtarball(args):
@@ -387,7 +456,7 @@ def installtarball(args):
tty.die("build cache file installation requires" +
" at least one package spec argument")
pkgs = set(args.specs)
matches = match_downloaded_specs(pkgs, args.multiple, args.force)
matches = match_downloaded_specs(pkgs, args.multiple, args.otherarch)
for match in matches:
install_tarball(match, args)
@@ -419,7 +488,7 @@ def install_tarball(spec, args):
def listspecs(args):
"""list binary packages available from mirrors"""
specs = bindist.get_specs(args.force, args.allarch)
specs = bindist.get_specs(args.allarch)
if args.specs:
constraints = set(args.specs)
specs = [s for s in specs if any(s.satisfies(c) for c in constraints)]
@@ -541,7 +610,7 @@ def get_concrete_spec(args):
if spec_str:
try:
spec = Spec(spec_str)
spec = find_matching_specs(spec_str)[0]
spec.concretize()
except SpecError as spec_error:
tty.error('Unable to concrectize spec {0}'.format(args.spec))

View File

@@ -26,6 +26,9 @@ def setup_parser(subparser):
subparser.add_argument(
'--keep-stage', action='store_true',
help="don't clean up staging area when command completes")
subparser.add_argument(
'-b', '--batch', action='store_true',
help="don't ask which versions to checksum")
arguments.add_common_arguments(subparser, ['package'])
subparser.add_argument(
'versions', nargs=argparse.REMAINDER,
@@ -33,6 +36,11 @@ def setup_parser(subparser):
def checksum(parser, args):
# Did the user pass 'package@version' string?
if len(args.versions) == 0 and '@' in args.package:
args.versions = [args.package.split('@')[1]]
args.package = args.package.split('@')[0]
# Make sure the user provided a package and not a URL
if not valid_fully_qualified_module_name(args.package):
tty.die("`spack checksum` accepts package names, not URLs.")
@@ -56,7 +64,9 @@ def checksum(parser, args):
tty.die("Could not find any versions for {0}".format(pkg.name))
version_lines = spack.stage.get_checksums_for_versions(
url_dict, pkg.name, keep_stage=args.keep_stage)
url_dict, pkg.name, keep_stage=args.keep_stage,
batch=(args.batch or len(args.versions) > 0),
fetch_options=pkg.fetch_options)
print()
print(version_lines)

View File

@@ -34,42 +34,11 @@ def setup_parser(subparser):
setup_parser.parser = subparser
subparsers = subparser.add_subparsers(help='CI sub-commands')
start = subparsers.add_parser('start', help=ci_start.__doc__)
start.add_argument(
'--output-file', default=None,
help="Absolute path to file where generated jobs file should be " +
"written. The default is .gitlab-ci.yml in the root of the " +
"repository.")
start.add_argument(
'--copy-to', default=None,
help="Absolute path of additional location where generated jobs " +
"yaml file should be copied. Default is not to copy.")
start.add_argument(
'--spack-repo', default=None,
help="Provide a url for this argument if a custom spack repo " +
"should be cloned as a step in each generated job.")
start.add_argument(
'--spack-ref', default=None,
help="Provide a git branch or tag if a custom spack branch " +
"should be checked out as a step in each generated job. " +
"This argument is ignored if no --spack-repo is provided.")
start.add_argument(
'--downstream-repo', default=None,
help="Url to repository where commit containing jobs yaml file " +
"should be pushed.")
start.add_argument(
'--branch-name', default='default-branch',
help="Name of current branch, used in generation of pushed commit.")
start.add_argument(
'--commit-sha', default='none',
help="SHA of current commit, used in generation of pushed commit.")
start.set_defaults(func=ci_start)
# Dynamic generation of the jobs yaml from a spack environment
generate = subparsers.add_parser('generate', help=ci_generate.__doc__)
generate.add_argument(
'--output-file', default=None,
help="Absolute path to file where generated jobs file should be " +
help="Path to file where generated jobs file should be " +
"written. The default is .gitlab-ci.yml in the root of the " +
"repository.")
generate.add_argument(
@@ -85,22 +54,17 @@ def setup_parser(subparser):
help="Provide a git branch or tag if a custom spack branch " +
"should be checked out as a step in each generated job. " +
"This argument is ignored if no --spack-repo is provided.")
generate.add_argument(
'--optimize', action='store_true', default=False,
help="(Experimental) run the generated document through a series of "
"optimization passes designed to reduce the size of the "
"generated file.")
generate.add_argument(
'--dependencies', action='store_true', default=False,
help="(Experimental) disable DAG scheduling; use "
' "plain" dependencies.')
generate.set_defaults(func=ci_generate)
# Commit and push jobs yaml to a downstream CI repo
pushyaml = subparsers.add_parser('pushyaml', help=ci_pushyaml.__doc__)
pushyaml.add_argument(
'--downstream-repo', default=None,
help="Url to repository where commit containing jobs yaml file " +
"should be pushed.")
pushyaml.add_argument(
'--branch-name', default='default-branch',
help="Name of current branch, used in generation of pushed commit.")
pushyaml.add_argument(
'--commit-sha', default='none',
help="SHA of current commit, used in generation of pushed commit.")
pushyaml.set_defaults(func=ci_pushyaml)
# Check a spec against mirror. Rebuild, create buildcache and push to
# mirror (if necessary).
rebuild = subparsers.add_parser('rebuild', help=ci_rebuild.__doc__)
@@ -120,18 +84,22 @@ def ci_generate(args):
copy_yaml_to = args.copy_to
spack_repo = args.spack_repo
spack_ref = args.spack_ref
run_optimizer = args.optimize
use_dependencies = args.dependencies
if not output_file:
gen_ci_dir = os.getcwd()
output_file = os.path.join(gen_ci_dir, '.gitlab-ci.yml')
output_file = os.path.abspath(".gitlab-ci.yml")
else:
gen_ci_dir = os.path.dirname(output_file)
output_file_path = os.path.abspath(output_file)
gen_ci_dir = os.path.dirname(output_file_path)
if not os.path.exists(gen_ci_dir):
os.makedirs(gen_ci_dir)
# Generate the jobs
spack_ci.generate_gitlab_ci_yaml(
env, True, output_file, spack_repo, spack_ref)
env, True, output_file, spack_repo, spack_ref,
run_optimizer=run_optimizer,
use_dependencies=use_dependencies)
if copy_yaml_to:
copy_to_dir = os.path.dirname(copy_yaml_to)
@@ -140,64 +108,6 @@ def ci_generate(args):
shutil.copyfile(output_file, copy_yaml_to)
def ci_pushyaml(args):
"""Push the generated jobs yaml file to a remote repository. The file
(.gitlab-ci.yaml) is expected to be in the current directory, which
should be the root of the repository."""
downstream_repo = args.downstream_repo
branch_name = args.branch_name
commit_sha = args.commit_sha
if not downstream_repo:
tty.die('No downstream repo to push to, exiting')
working_dir = os.getcwd()
jobs_yaml = os.path.join(working_dir, '.gitlab-ci.yml')
git_dir = os.path.join(working_dir, '.git')
if not os.path.exists(jobs_yaml):
tty.die('.gitlab-ci.yml must exist in current directory')
if not os.path.exists(git_dir):
tty.die('.git directory must exist in current directory')
# Create a temporary working directory
with spack_ci.TemporaryDirectory() as temp_dir:
git = exe.which('git', required=True)
# Push a commit with the generated file to the downstream ci repo
saved_git_dir = os.path.join(temp_dir, 'original-git-dir')
shutil.move('.git', saved_git_dir)
git('init', '.')
git('config', 'user.email', 'robot@spack.io')
git('config', 'user.name', 'Spack Build Bot')
git('add', '.')
# If the environment contains a spack directory, do not commit
# or push it with any other generated products
if os.path.exists('./spack') and os.path.isdir('./spack'):
git('rm', '-rf', '--cached', 'spack')
tty.msg('git commit')
commit_message = '{0} {1} ({2})'.format(
'Auto-generated commit testing', branch_name, commit_sha)
git('commit', '-m', '{0}'.format(commit_message))
tty.msg('git push')
git('remote', 'add', 'downstream', downstream_repo)
push_to_branch = 'master:multi-ci-{0}'.format(branch_name)
git('push', '--force', 'downstream', push_to_branch)
shutil.rmtree('.git')
shutil.move(saved_git_dir, '.git')
git('reset', '--hard', 'HEAD')
def ci_rebuild(args):
"""This command represents a gitlab-ci job, corresponding to a single
release spec. As such it must first decide whether or not the spec it
@@ -239,6 +149,7 @@ def ci_rebuild(args):
compiler_action = get_env_var('SPACK_COMPILER_ACTION')
cdash_build_name = get_env_var('SPACK_CDASH_BUILD_NAME')
related_builds = get_env_var('SPACK_RELATED_BUILDS_CDASH')
pr_env_var = get_env_var('SPACK_IS_PR_PIPELINE')
gitlab_ci = None
if 'gitlab-ci' in yaml_root:
@@ -283,8 +194,6 @@ def ci_rebuild(args):
spack_cmd = exe.which('spack')
os.environ['FORCE_UNSAFE_CONFIGURE'] = '1'
cdash_report_dir = os.path.join(ci_artifact_dir, 'cdash_report')
temp_dir = os.path.join(ci_artifact_dir, 'jobs_scratch_dir')
job_log_dir = os.path.join(temp_dir, 'logs')
@@ -293,11 +202,18 @@ def ci_rebuild(args):
local_mirror_dir = os.path.join(ci_artifact_dir, 'local_mirror')
build_cache_dir = os.path.join(local_mirror_dir, 'build_cache')
spack_is_pr_pipeline = True if pr_env_var == 'True' else False
enable_artifacts_mirror = False
artifact_mirror_url = None
if 'enable-artifacts-buildcache' in gitlab_ci:
enable_artifacts_mirror = gitlab_ci['enable-artifacts-buildcache']
if enable_artifacts_mirror:
if enable_artifacts_mirror or spack_is_pr_pipeline:
# If this is a PR pipeline, we will override the setting to
# make sure that artifacts buildcache is enabled. Otherwise
# jobs will not have binary deps available since we do not
# allow pushing binaries to remote mirror during PR pipelines
enable_artifacts_mirror = True
artifact_mirror_url = 'file://' + local_mirror_dir
mirror_msg = 'artifact buildcache enabled, mirror url: {0}'.format(
artifact_mirror_url)
@@ -443,9 +359,12 @@ def ci_rebuild(args):
spack_ci.copy_stage_logs_to_artifacts(job_spec, job_log_dir)
# 4) create buildcache on remote mirror
spack_ci.push_mirror_contents(env, job_spec, job_spec_yaml_path,
remote_mirror_url, cdash_build_id)
# 4) create buildcache on remote mirror, but not if this is
# running to test a spack PR
if not spack_is_pr_pipeline:
spack_ci.push_mirror_contents(
env, job_spec, job_spec_yaml_path, remote_mirror_url,
cdash_build_id)
# 5) create another copy of that buildcache on "local artifact
# mirror" (only done if cash reporting is enabled)
@@ -470,13 +389,6 @@ def ci_rebuild(args):
job_spec, build_cache_dir, True, remote_mirror_url)
def ci_start(args):
"""Kicks of the CI process (currently just calls ci_generate() then
ci_push())"""
ci_generate(args)
ci_pushyaml(args)
def ci(parser, args):
if args.func:
args.func(args)

View File

@@ -23,9 +23,9 @@
class AllClean(argparse.Action):
"""Activates flags -s -d -m and -p simultaneously"""
"""Activates flags -s -d -f -m and -p simultaneously"""
def __call__(self, parser, namespace, values, option_string=None):
parser.parse_args(['-sdmp'], namespace=namespace)
parser.parse_args(['-sdfmp'], namespace=namespace)
def setup_parser(subparser):
@@ -35,6 +35,9 @@ def setup_parser(subparser):
subparser.add_argument(
'-d', '--downloads', action='store_true',
help="remove cached downloads")
subparser.add_argument(
'-f', '--failures', action='store_true',
help="force removal of all install failure tracking markers")
subparser.add_argument(
'-m', '--misc-cache', action='store_true',
help="remove long-lived caches, like the virtual package index")
@@ -42,15 +45,15 @@ def setup_parser(subparser):
'-p', '--python-cache', action='store_true',
help="remove .pyc, .pyo files and __pycache__ folders")
subparser.add_argument(
'-a', '--all', action=AllClean, help="equivalent to -sdmp", nargs=0
'-a', '--all', action=AllClean, help="equivalent to -sdfmp", nargs=0
)
arguments.add_common_arguments(subparser, ['specs'])
def clean(parser, args):
# If nothing was set, activate the default
if not any([args.specs, args.stage, args.downloads, args.misc_cache,
args.python_cache]):
if not any([args.specs, args.stage, args.downloads, args.failures,
args.misc_cache, args.python_cache]):
args.stage = True
# Then do the cleaning falling through the cases
@@ -70,6 +73,10 @@ def clean(parser, args):
tty.msg('Removing cached downloads')
spack.caches.fetch_cache.destroy()
if args.failures:
tty.msg('Removing install failure marks')
spack.installer.clear_failures()
if args.misc_cache:
tty.msg('Removing cached information on repositories')
spack.caches.misc_cache.destroy()

View File

@@ -78,9 +78,10 @@ def setup_parser(subparser):
class SpackArgparseRstWriter(ArgparseRstWriter):
"""RST writer tailored for spack documentation."""
def __init__(self, prog, out=sys.stdout, aliases=False,
def __init__(self, prog, out=None, aliases=False,
documented_commands=[],
rst_levels=['-', '-', '^', '~', ':', '`']):
out = sys.stdout if out is None else out
super(SpackArgparseRstWriter, self).__init__(
prog, out, aliases, rst_levels)
self.documented = documented_commands

View File

@@ -111,7 +111,7 @@ def __call__(self, parser, namespace, jobs, option_string):
def default(self):
# This default is coded as a property so that look-up
# of this value is done only on demand
return min(spack.config.get('config:build_jobs'),
return min(spack.config.get('config:build_jobs', 16),
multiprocessing.cpu_count())
@default.setter

View File

@@ -37,7 +37,7 @@ def setup_parser(subparser):
find_parser.add_argument('add_paths', nargs=argparse.REMAINDER)
find_parser.add_argument(
'--scope', choices=scopes, metavar=scopes_metavar,
default=spack.config.default_modify_scope(),
default=spack.config.default_modify_scope('compilers'),
help="configuration scope to modify")
# Remove
@@ -49,7 +49,7 @@ def setup_parser(subparser):
remove_parser.add_argument('compiler_spec')
remove_parser.add_argument(
'--scope', choices=scopes, metavar=scopes_metavar,
default=spack.config.default_modify_scope(),
default=spack.config.default_modify_scope('compilers'),
help="configuration scope to modify")
# List
@@ -159,7 +159,19 @@ def compiler_list(args):
tty.msg("Available compilers")
index = index_by(spack.compilers.all_compilers(scope=args.scope),
lambda c: (c.spec.name, c.operating_system, c.target))
ordered_sections = sorted(index.items(), key=lambda item: item[0])
# For a container, take each element which does not evaluate to false and
# convert it to a string. For elements which evaluate to False (e.g. None)
# convert them to '' (in which case it still evaluates to False but is a
# string type). Tuples produced by this are guaranteed to be comparable in
# Python 3
convert_str = (
lambda tuple_container:
tuple(str(x) if x else '' for x in tuple_container))
index_str_keys = list(
(convert_str(x), y) for x, y in index.items())
ordered_sections = sorted(index_str_keys, key=lambda item: item[0])
for i, (key, compilers) in enumerate(ordered_sections):
if i >= 1:
print()

View File

@@ -5,12 +5,14 @@
from __future__ import print_function
import os
import re
import llnl.util.tty as tty
import spack.config
import spack.schema.env
import spack.environment as ev
import spack.util.spack_yaml as syaml
from spack.util.editor import editor
description = "get and set configuration options"
@@ -58,24 +60,48 @@ def setup_parser(subparser):
sp.add_parser('list', help='list configuration sections')
add_parser = sp.add_parser('add', help='add configuration parameters')
add_parser.add_argument(
'path', nargs='?',
help="colon-separated path to config that should be added,"
" e.g. 'config:default:true'")
add_parser.add_argument(
'-f', '--file',
help="file from which to set all config values"
)
remove_parser = sp.add_parser('remove', aliases=['rm'],
help='remove configuration parameters')
remove_parser.add_argument(
'path',
help="colon-separated path to config that should be removed,"
" e.g. 'config:default:true'")
# Make the add parser available later
setup_parser.add_parser = add_parser
def _get_scope_and_section(args):
"""Extract config scope and section from arguments."""
scope = args.scope
section = args.section
section = getattr(args, 'section', None)
path = getattr(args, 'path', None)
# w/no args and an active environment, point to env manifest
if not args.section:
if not section:
env = ev.get_env(args, 'config edit')
if env:
scope = env.env_file_config_scope_name()
# set scope defaults
elif not args.scope:
if section == 'compilers':
scope = spack.config.default_modify_scope()
else:
scope = 'user'
elif not scope:
scope = spack.config.default_modify_scope(section)
# special handling for commands that take value instead of section
if path:
section = path[:path.find(':')] if ':' in path else path
if not scope:
scope = spack.config.default_modify_scope(section)
return scope, section
@@ -135,11 +161,126 @@ def config_list(args):
print(' '.join(list(spack.config.section_schemas)))
def set_config(args, section, new, scope):
if re.match(r'env.*', scope):
e = ev.get_env(args, 'config add')
e.set_config(section, new)
else:
spack.config.set(section, new, scope=scope)
def config_add(args):
"""Add the given configuration to the specified config scope
This is a stateful operation that edits the config files."""
if not (args.file or args.path):
tty.error("No changes requested. Specify a file or value.")
setup_parser.add_parser.print_help()
exit(1)
scope, section = _get_scope_and_section(args)
# Updates from file
if args.file:
# Get file as config dict
data = spack.config.read_config_file(args.file)
if any(k in data for k in spack.schema.env.keys):
data = ev.config_dict(data)
# update all sections from config dict
# We have to iterate on keys to keep overrides from the file
for section in data.keys():
if section in spack.config.section_schemas.keys():
# Special handling for compiler scope difference
# Has to be handled after we choose a section
if scope is None:
scope = spack.config.default_modify_scope(section)
value = data[section]
existing = spack.config.get(section, scope=scope)
new = spack.config.merge_yaml(existing, value)
set_config(args, section, new, scope)
if args.path:
components = spack.config.process_config_path(args.path)
has_existing_value = True
path = ''
override = False
for idx, name in enumerate(components[:-1]):
# First handle double colons in constructing path
colon = '::' if override else ':' if path else ''
path += colon + name
if getattr(name, 'override', False):
override = True
else:
override = False
# Test whether there is an existing value at this level
existing = spack.config.get(path, scope=scope)
if existing is None:
has_existing_value = False
# We've nested further than existing config, so we need the
# type information for validation to know how to handle bare
# values appended to lists.
existing = spack.config.get_valid_type(path)
# construct value from this point down
value = syaml.load_config(components[-1])
for component in reversed(components[idx + 1:-1]):
value = {component: value}
break
if has_existing_value:
path, _, value = args.path.rpartition(':')
value = syaml.load_config(value)
existing = spack.config.get(path, scope=scope)
# append values to lists
if isinstance(existing, list) and not isinstance(value, list):
value = [value]
# merge value into existing
new = spack.config.merge_yaml(existing, value)
set_config(args, path, new, scope)
def config_remove(args):
"""Remove the given configuration from the specified config scope
This is a stateful operation that edits the config files."""
scope, _ = _get_scope_and_section(args)
path, _, value = args.path.rpartition(':')
existing = spack.config.get(path, scope=scope)
if not isinstance(existing, (list, dict)):
path, _, value = path.rpartition(':')
existing = spack.config.get(path, scope=scope)
value = syaml.load(value)
if isinstance(existing, list):
values = value if isinstance(value, list) else [value]
for v in values:
existing.remove(v)
elif isinstance(existing, dict):
existing.pop(value, None)
else:
# This should be impossible to reach
raise spack.config.ConfigError('Config has nested non-dict values')
set_config(args, path, existing, scope)
def config(parser, args):
action = {
'get': config_get,
'blame': config_blame,
'edit': config_edit,
'list': config_list,
}
action = {'get': config_get,
'blame': config_blame,
'edit': config_edit,
'list': config_list,
'add': config_add,
'rm': config_remove,
'remove': config_remove}
action[args.config_command](args)

View File

@@ -1,85 +0,0 @@
# 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)
import argparse
import llnl.util.tty as tty
import spack.cmd
import spack.cmd.common.arguments as arguments
import spack.cmd.install as inst
from spack.build_systems.autotools import AutotoolsPackage
from spack.build_systems.cmake import CMakePackage
from spack.build_systems.qmake import QMakePackage
from spack.build_systems.waf import WafPackage
from spack.build_systems.perl import PerlPackage
from spack.build_systems.intel import IntelPackage
from spack.build_systems.meson import MesonPackage
from spack.build_systems.sip import SIPPackage
description = 'DEPRECATED: stage and configure a package but do not install'
section = "build"
level = "long"
build_system_to_phase = {
AutotoolsPackage: 'configure',
CMakePackage: 'cmake',
QMakePackage: 'qmake',
WafPackage: 'configure',
PerlPackage: 'configure',
IntelPackage: 'configure',
MesonPackage: 'meson',
SIPPackage: 'configure',
}
def setup_parser(subparser):
subparser.add_argument(
'-v', '--verbose',
action='store_true',
help="print additional output during builds"
)
arguments.add_common_arguments(subparser, ['spec'])
def _stop_at_phase_during_install(args, calling_fn, phase_mapping):
if not args.package:
tty.die("configure requires at least one package argument")
# TODO: to be refactored with code in install
specs = spack.cmd.parse_specs(args.package, concretize=True)
if len(specs) != 1:
tty.error('only one spec can be installed at a time.')
spec = specs.pop()
pkg = spec.package
try:
key = [cls for cls in phase_mapping if isinstance(pkg, cls)].pop()
phase = phase_mapping[key]
# Install package dependencies if needed
parser = argparse.ArgumentParser()
inst.setup_parser(parser)
tty.msg('Checking dependencies for {0}'.format(args.spec[0]))
cli_args = ['-v'] if args.verbose else []
install_args = parser.parse_args(cli_args + ['--only=dependencies'])
install_args.spec = args.spec
inst.install(parser, install_args)
# Install package and stop at the given phase
cli_args = ['-v'] if args.verbose else []
install_args = parser.parse_args(cli_args + ['--only=package'])
install_args.spec = args.spec
inst.install(parser, install_args, stop_at=phase)
except IndexError:
tty.error(
'Package {0} has no {1} phase, or its {1} phase is not separated from install'.format( # NOQA: ignore=E501
spec.name, calling_fn.__name__)
)
def configure(parser, args):
tty.warn("This command is deprecated. Use `spack install --until` to"
" select an end phase instead. The `spack configure` command will"
" be removed in a future version of Spack.")
_stop_at_phase_during_install(args, configure, build_system_to_phase)

View File

@@ -245,7 +245,9 @@ class PythonPackageTemplate(PackageTemplate):
base_class_name = 'PythonPackage'
dependencies = """\
# FIXME: Add dependencies if required.
# FIXME: Add dependencies if required. Only add the python dependency
# if you need specific versions. A generic python dependency is
# added implicity by the PythonPackage class.
# depends_on('python@2.X:2.Y,3.Z:', type=('build', 'run'))
# depends_on('py-setuptools', type='build')
# depends_on('py-foo', type=('build', 'run'))"""
@@ -627,7 +629,7 @@ def get_versions(args, name):
versions = spack.stage.get_checksums_for_versions(
url_dict, name, first_stage_function=guesser,
keep_stage=args.keep_stage)
keep_stage=args.keep_stage, batch=True)
else:
versions = unhashed_versions

View File

@@ -3,7 +3,10 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from __future__ import print_function
import os
import platform
import re
from datetime import datetime
from glob import glob
@@ -11,7 +14,9 @@
import llnl.util.tty as tty
from llnl.util.filesystem import working_dir
import spack.architecture as architecture
import spack.paths
from spack.main import get_version
from spack.util.executable import which
description = "debugging commands for troubleshooting Spack"
@@ -23,6 +28,7 @@ def setup_parser(subparser):
sp = subparser.add_subparsers(metavar='SUBCOMMAND', dest='debug_command')
sp.add_parser('create-db-tarball',
help="create a tarball of Spack's installation metadata")
sp.add_parser('report', help='print information useful for bug reports')
def _debug_tarball_suffix():
@@ -78,6 +84,16 @@ def create_db_tarball(args):
tty.msg('Created %s' % tarball_name)
def report(args):
print('* **Spack:**', get_version())
print('* **Python:**', platform.python_version())
print('* **Platform:**', architecture.Arch(
architecture.platform(), 'frontend', 'frontend'))
def debug(parser, args):
action = {'create-db-tarball': create_db_tarball}
action = {
'create-db-tarball': create_db_tarball,
'report': report,
}
action[args.debug_command](args)

View File

@@ -3,12 +3,15 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import sys
import llnl.util.tty as tty
from llnl.util.tty.colify import colify
import spack.cmd
import spack.cmd.common.arguments as arguments
import spack.environment as ev
import spack.package
import spack.repo
import spack.store
@@ -42,7 +45,9 @@ def dependencies(parser, args):
spec = spack.cmd.disambiguate_spec(specs[0], env)
format_string = '{name}{@version}{%compiler}{/hash:7}'
tty.msg("Dependencies of %s" % spec.format(format_string, color=True))
if sys.stdout.isatty():
tty.msg(
"Dependencies of %s" % spec.format(format_string, color=True))
deps = spack.store.db.installed_relatives(
spec, 'children', args.transitive, deptype=args.deptype)
if deps:
@@ -52,22 +57,15 @@ def dependencies(parser, args):
else:
spec = specs[0]
if not spec.virtual:
packages = [spec.package]
else:
packages = [
spack.repo.get(s.name)
for s in spack.repo.path.providers_for(spec)]
dependencies = set()
for pkg in packages:
possible = pkg.possible_dependencies(
args.transitive, args.expand_virtuals, deptype=args.deptype)
dependencies.update(possible)
dependencies = spack.package.possible_dependencies(
spec,
transitive=args.transitive,
expand_virtuals=args.expand_virtuals,
deptype=args.deptype
)
if spec.name in dependencies:
dependencies.remove(spec.name)
del dependencies[spec.name]
if dependencies:
colify(sorted(dependencies))

View File

@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import sys
import llnl.util.tty as tty
from llnl.util.tty.colify import colify
@@ -30,7 +32,7 @@ def setup_parser(subparser):
def inverted_dependencies():
"""Iterate through all packages and return a dictionary mapping package
names to possible dependnecies.
names to possible dependencies.
Virtual packages are included as sources, so that you can query
dependents of, e.g., `mpi`, but virtuals are not included as
@@ -84,7 +86,8 @@ def dependents(parser, args):
spec = spack.cmd.disambiguate_spec(specs[0], env)
format_string = '{name}{@version}{%compiler}{/hash:7}'
tty.msg("Dependents of %s" % spec.cformat(format_string))
if sys.stdout.isatty():
tty.msg("Dependents of %s" % spec.cformat(format_string))
deps = spack.store.db.installed_relatives(
spec, 'parents', args.transitive)
if deps:

View File

@@ -38,9 +38,17 @@ def setup_parser(subparser):
'-q', '--quiet', action='store_true', dest='quiet',
help="do not display verbose build output while installing")
subparser.add_argument(
'--drop-in', type=str, dest='shell', default=None,
help="drop into a build environment in a new shell, e.g. bash, zsh")
arguments.add_common_arguments(subparser, ['spec'])
stop_group = subparser.add_mutually_exclusive_group()
stop_group.add_argument(
'-b', '--before', type=str, dest='before', default=None,
help="phase to stop before when installing (default None)")
stop_group.add_argument(
'-u', '--until', type=str, dest='until', default=None,
help="phase to stop after when installing (default None)")
arguments.add_common_arguments(subparser, ['spec'])
cd_group = subparser.add_mutually_exclusive_group()
arguments.add_common_arguments(cd_group, ['clean', 'dirty'])
@@ -91,4 +99,10 @@ def dev_build(self, args):
verbose=not args.quiet,
keep_stage=True, # don't remove source dir for dev build.
dirty=args.dirty,
stop_before=args.before,
stop_at=args.until)
# drop into the build environment of the package?
if args.shell is not None:
spack.build_environment.setup_package(package, dirty=False)
os.execvp(args.shell, [args.shell])

View File

@@ -1,20 +0,0 @@
# 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)
import spack.cmd.dev_build
import llnl.util.tty as tty
description = "DEPRECATED: do-it-yourself: build from local source directory"
section = "build"
level = "long"
def setup_parser(subparser):
spack.cmd.dev_build.setup_parser(subparser)
def diy(self, args):
tty.warn("`spack diy` has been renamed to `spack dev-build`."
"The `diy` command will be removed in a future version of Spack")
spack.cmd.dev_build.dev_build(self, args)

View File

@@ -52,6 +52,9 @@ def env_activate_setup_parser(subparser):
shells.add_argument(
'--csh', action='store_const', dest='shell', const='csh',
help="print csh commands to activate the environment")
shells.add_argument(
'--fish', action='store_const', dest='shell', const='fish',
help="print fish commands to activate the environment")
view_options = subparser.add_mutually_exclusive_group()
view_options.add_argument(
@@ -127,6 +130,9 @@ def env_deactivate_setup_parser(subparser):
shells.add_argument(
'--csh', action='store_const', dest='shell', const='csh',
help="print csh commands to deactivate the environment")
shells.add_argument(
'--fish', action='store_const', dest='shell', const='fish',
help="print fish commands to activate the environment")
def env_deactivate(args):
@@ -208,10 +214,14 @@ def _env_create(name_or_path, init_file=None, dir=False, with_view=None):
env = ev.Environment(name_or_path, init_file, with_view)
env.write()
tty.msg("Created environment in %s" % env.path)
tty.msg("You can activate this environment with:")
tty.msg(" spack env activate %s" % env.path)
else:
env = ev.create(name_or_path, init_file, with_view)
env.write()
tty.msg("Created environment '%s' in %s" % (name_or_path, env.path))
tty.msg("You can activate this environment with:")
tty.msg(" spack env activate %s" % (name_or_path))
return env

View File

@@ -0,0 +1,271 @@
# 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
from collections import defaultdict, namedtuple
import argparse
import os
import re
import six
import spack
import spack.error
import llnl.util.tty as tty
import spack.util.spack_yaml as syaml
import spack.util.environment
import llnl.util.filesystem
description = "add external packages to Spack configuration"
section = "config"
level = "short"
def setup_parser(subparser):
sp = subparser.add_subparsers(
metavar='SUBCOMMAND', dest='external_command')
find_parser = sp.add_parser('find', help=external_find.__doc__)
find_parser.add_argument(
'--not-buildable', action='store_true', default=False,
help="packages with detected externals won't be built with Spack")
find_parser.add_argument('packages', nargs=argparse.REMAINDER)
def is_executable(path):
return os.path.isfile(path) and os.access(path, os.X_OK)
def _get_system_executables():
"""Get the paths of all executables available from the current PATH.
For convenience, this is constructed as a dictionary where the keys are
the executable paths and the values are the names of the executables
(i.e. the basename of the executable path).
There may be multiple paths with the same basename. In this case it is
assumed there are two different instances of the executable.
"""
path_hints = spack.util.environment.get_path('PATH')
search_paths = llnl.util.filesystem.search_paths_for_executables(
*path_hints)
path_to_exe = {}
# Reverse order of search directories so that an exe in the first PATH
# entry overrides later entries
for search_path in reversed(search_paths):
for exe in os.listdir(search_path):
exe_path = os.path.join(search_path, exe)
if is_executable(exe_path):
path_to_exe[exe_path] = exe
return path_to_exe
ExternalPackageEntry = namedtuple(
'ExternalPackageEntry',
['spec', 'base_dir'])
def _generate_pkg_config(external_pkg_entries):
"""Generate config according to the packages.yaml schema for a single
package.
This does not generate the entire packages.yaml. For example, given some
external entries for the CMake package, this could return::
{ 'paths': {
'cmake@3.17.1': '/opt/cmake-3.17.1/',
'cmake@3.16.5': '/opt/cmake-3.16.5/'
}
}
"""
paths_dict = syaml.syaml_dict()
for e in external_pkg_entries:
if not _spec_is_valid(e.spec):
continue
paths_dict[str(e.spec)] = e.base_dir
pkg_dict = syaml.syaml_dict()
pkg_dict['paths'] = paths_dict
return pkg_dict
def _spec_is_valid(spec):
try:
str(spec)
except spack.error.SpackError:
# It is assumed here that we can at least extract the package name from
# the spec so we can look up the implementation of
# determine_spec_details
tty.warn('Constructed spec for {0} does not have a string'
' representation'.format(spec.name))
return False
try:
spack.spec.Spec(str(spec))
except spack.error.SpackError:
tty.warn('Constructed spec has a string representation but the string'
' representation does not evaluate to a valid spec: {0}'
.format(str(spec)))
return False
return True
def external_find(args):
if args.packages:
packages_to_check = list(spack.repo.get(pkg) for pkg in args.packages)
else:
packages_to_check = spack.repo.path.all_packages()
pkg_to_entries = _get_external_packages(packages_to_check)
_update_pkg_config(pkg_to_entries, args.not_buildable)
def _group_by_prefix(paths):
groups = defaultdict(set)
for p in paths:
groups[os.path.dirname(p)].add(p)
return groups.items()
def _convert_to_iterable(single_val_or_multiple):
x = single_val_or_multiple
if x is None:
return []
elif isinstance(x, six.string_types):
return [x]
elif isinstance(x, spack.spec.Spec):
# Specs are iterable, but a single spec should be converted to a list
return [x]
try:
iter(x)
return x
except TypeError:
return [x]
def _determine_base_dir(prefix):
# Given a prefix where an executable is found, assuming that prefix ends
# with /bin/, strip off the 'bin' directory to get a Spack-compatible
# prefix
assert os.path.isdir(prefix)
if os.path.basename(prefix) == 'bin':
return os.path.dirname(prefix)
def _get_predefined_externals():
# Pull from all scopes when looking for preexisting external package
# entries
pkg_config = spack.config.get('packages')
already_defined_specs = set()
for pkg_name, per_pkg_cfg in pkg_config.items():
paths = per_pkg_cfg.get('paths', {})
already_defined_specs.update(spack.spec.Spec(k) for k in paths)
modules = per_pkg_cfg.get('modules', {})
already_defined_specs.update(spack.spec.Spec(k) for k in modules)
return already_defined_specs
def _update_pkg_config(pkg_to_entries, not_buildable):
predefined_external_specs = _get_predefined_externals()
pkg_to_cfg = {}
for pkg_name, ext_pkg_entries in pkg_to_entries.items():
new_entries = list(
e for e in ext_pkg_entries
if (e.spec not in predefined_external_specs))
pkg_config = _generate_pkg_config(new_entries)
if not_buildable:
pkg_config['buildable'] = False
pkg_to_cfg[pkg_name] = pkg_config
cfg_scope = spack.config.default_modify_scope()
pkgs_cfg = spack.config.get('packages', scope=cfg_scope)
spack.config.merge_yaml(pkgs_cfg, pkg_to_cfg)
spack.config.set('packages', pkgs_cfg, scope=cfg_scope)
def _get_external_packages(packages_to_check, system_path_to_exe=None):
if not system_path_to_exe:
system_path_to_exe = _get_system_executables()
exe_pattern_to_pkgs = defaultdict(list)
for pkg in packages_to_check:
if hasattr(pkg, 'executables'):
for exe in pkg.executables:
exe_pattern_to_pkgs[exe].append(pkg)
pkg_to_found_exes = defaultdict(set)
for exe_pattern, pkgs in exe_pattern_to_pkgs.items():
compiled_re = re.compile(exe_pattern)
for path, exe in system_path_to_exe.items():
if compiled_re.search(exe):
for pkg in pkgs:
pkg_to_found_exes[pkg].add(path)
pkg_to_entries = defaultdict(list)
resolved_specs = {} # spec -> exe found for the spec
for pkg, exes in pkg_to_found_exes.items():
if not hasattr(pkg, 'determine_spec_details'):
tty.warn("{0} must define 'determine_spec_details' in order"
" for Spack to detect externally-provided instances"
" of the package.".format(pkg.name))
continue
# TODO: iterate through this in a predetermined order (e.g. by package
# name) to get repeatable results when there are conflicts. Note that
# if we take the prefixes returned by _group_by_prefix, then consider
# them in the order that they appear in PATH, this should be sufficient
# to get repeatable results.
for prefix, exes_in_prefix in _group_by_prefix(exes):
# TODO: multiple instances of a package can live in the same
# prefix, and a package implementation can return multiple specs
# for one prefix, but without additional details (e.g. about the
# naming scheme which differentiates them), the spec won't be
# usable.
specs = _convert_to_iterable(
pkg.determine_spec_details(prefix, exes_in_prefix))
if not specs:
tty.debug(
'The following executables in {0} were decidedly not'
'part of the package {1}: {2}'
.format(prefix, pkg.name, ', '.join(exes_in_prefix))
)
for spec in specs:
pkg_prefix = _determine_base_dir(prefix)
if not pkg_prefix:
tty.debug("{0} does not end with a 'bin/' directory: it"
" cannot be added as a Spack package"
.format(prefix))
continue
if spec in resolved_specs:
prior_prefix = ', '.join(resolved_specs[spec])
tty.debug(
"Executables in {0} and {1} are both associated"
" with the same spec {2}"
.format(prefix, prior_prefix, str(spec)))
continue
else:
resolved_specs[spec] = prefix
pkg_to_entries[pkg.name].append(
ExternalPackageEntry(spec=spec, base_dir=pkg_prefix))
return pkg_to_entries
def external(parser, args):
action = {'find': external_find}
action[args.external_command](args)

View File

@@ -7,6 +7,7 @@
import copy
import os
import sys
import llnl.util.tty as tty
import llnl.util.tty.color as color
@@ -236,7 +237,7 @@ def find(parser, args):
else:
if env:
display_env(env, args, decorator)
if args.groups:
if sys.stdout.isatty() and args.groups:
tty.msg("%s" % plural(len(results), 'installed package'))
cmd.display_specs(
results, args, decorator=decorator, all_headers=True)

View File

@@ -8,6 +8,7 @@
import textwrap
from six.moves import zip_longest
import llnl.util.tty as tty
import llnl.util.tty.color as color
from llnl.util.tty.colify import colify
@@ -53,11 +54,9 @@ def variant(s):
class VariantFormatter(object):
def __init__(self, variants, max_widths=(30, 20, 30)):
def __init__(self, variants):
self.variants = variants
self.headers = ('Name [Default]', 'Allowed values', 'Description')
# Set max headers lengths
self.max_column_widths = max_widths
# Formats
fmt_name = '{0} [{1}]'
@@ -67,7 +66,7 @@ def __init__(self, variants, max_widths=(30, 20, 30)):
# than that
self.column_widths = [len(x) for x in self.headers]
# Update according to line lengths
# Expand columns based on max line lengths
for k, v in variants.items():
candidate_max_widths = (
len(fmt_name.format(k, self.default(v))), # Name [Default]
@@ -81,12 +80,18 @@ def __init__(self, variants, max_widths=(30, 20, 30)):
max(self.column_widths[2], candidate_max_widths[2])
)
# Reduce to at most the maximum allowed
self.column_widths = (
min(self.column_widths[0], self.max_column_widths[0]),
min(self.column_widths[1], self.max_column_widths[1]),
min(self.column_widths[2], self.max_column_widths[2])
# Don't let name or possible values be less than max widths
_, cols = tty.terminal_size()
max_name = min(self.column_widths[0], 30)
max_vals = min(self.column_widths[1], 20)
# allow the description column to extend as wide as the terminal.
max_description = min(
self.column_widths[2],
# min width 70 cols, 14 cols of margins and column spacing
max(cols, 70) - max_name - max_vals - 14,
)
self.column_widths = (max_name, max_vals, max_description)
# Compute the format
self.fmt = "%%-%ss%%-%ss%%s" % (
@@ -114,10 +119,8 @@ def lines(self):
'{0} [{1}]'.format(k, self.default(v)),
width=self.column_widths[0]
)
allowed = textwrap.wrap(
v.allowed_values,
width=self.column_widths[1]
)
allowed = v.allowed_values.replace('True, False', 'on, off')
allowed = textwrap.wrap(allowed, width=self.column_widths[1])
description = textwrap.wrap(
v.description,
width=self.column_widths[2]

View File

@@ -32,6 +32,7 @@ def update_kwargs_from_args(args, kwargs):
that will be passed to Package.do_install API"""
kwargs.update({
'fail_fast': args.fail_fast,
'keep_prefix': args.keep_prefix,
'keep_stage': args.keep_stage,
'restage': not args.dont_restage,
@@ -78,6 +79,9 @@ def setup_parser(subparser):
subparser.add_argument(
'--overwrite', action='store_true',
help="reinstall an existing spec, even if it has dependents")
subparser.add_argument(
'--fail-fast', action='store_true',
help="stop all builds if any build fails (default is best effort)")
subparser.add_argument(
'--keep-prefix', action='store_true',
help="don't remove the install prefix if installation fails")

View File

@@ -32,6 +32,17 @@ def setup_parser(subparser):
shells.add_argument(
'--csh', action='store_const', dest='shell', const='csh',
help="print csh commands to load the package")
shells.add_argument(
'--fish', action='store_const', dest='shell', const='fish',
help="print fish commands to load the package")
subparser.add_argument(
'--first',
action='store_true',
default=False,
dest='load_first',
help="load the first match if multiple packages match the spec"
)
subparser.add_argument(
'--only',
@@ -47,10 +58,11 @@ def setup_parser(subparser):
def load(parser, args):
env = ev.get_env(args, 'load')
specs = [spack.cmd.disambiguate_spec(spec, env)
specs = [spack.cmd.disambiguate_spec(spec, env, first=args.load_first)
for spec in spack.cmd.parse_specs(args.specs)]
if not args.shell:
specs_string = ' '.join(args.specs)
msg = [
"This command works best with Spack's shell support",
""
@@ -58,8 +70,8 @@ def load(parser, args):
'Or, if you want to use `spack load` without initializing',
'shell support, you can run one of these:',
'',
' eval `spack load --sh %s` # for bash/sh' % args.specs,
' eval `spack load --csh %s` # for csh/tcsh' % args.specs,
' eval `spack load --sh %s` # for bash/sh' % specs_string,
' eval `spack load --csh %s` # for csh/tcsh' % specs_string,
]
tty.msg(*msg)
return 1

View File

@@ -45,7 +45,19 @@ def setup_parser(subparser):
" (this requires significant time and space)")
create_parser.add_argument(
'-f', '--file', help="file with specs of packages to put in mirror")
create_parser.add_argument(
'--exclude-file',
help="specs which Spack should not try to add to a mirror"
" (listed in a file, one per line)")
create_parser.add_argument(
'--exclude-specs',
help="specs which Spack should not try to add to a mirror"
" (specified on command line)")
create_parser.add_argument(
'--skip-unstable-versions', action='store_true',
help="don't cache versions unless they identify a stable (unchanging)"
" source code")
create_parser.add_argument(
'-D', '--dependencies', action='store_true',
help="also fetch all dependencies")
@@ -229,9 +241,7 @@ def _read_specs_from_file(filename):
return specs
def mirror_create(args):
"""Create a directory to be used as a spack mirror, and fill it with
package archives."""
def _determine_specs_to_mirror(args):
if args.specs and args.all:
raise SpackError("Cannot specify specs on command line if you"
" chose to mirror all specs with '--all'")
@@ -261,6 +271,7 @@ def mirror_create(args):
tty.die("Cannot pass specs on the command line with --file.")
specs = _read_specs_from_file(args.file)
env_specs = None
if not specs:
# If nothing is passed, use environment or all if no active env
if not args.all:
@@ -270,12 +281,9 @@ def mirror_create(args):
env = ev.get_env(args, 'mirror')
if env:
mirror_specs = env.specs_by_hash.values()
env_specs = env.all_specs()
else:
specs = [Spec(n) for n in spack.repo.all_package_names()]
mirror_specs = spack.mirror.get_all_versions(specs)
mirror_specs.sort(
key=lambda s: (s.name, s.version))
else:
# If the user asked for dependencies, traverse spec DAG get them.
if args.dependencies:
@@ -294,11 +302,38 @@ def mirror_create(args):
msg = 'Skipping {0} as it is an external spec.'
tty.msg(msg.format(spec.cshort_spec))
if env_specs:
if args.versions_per_spec:
tty.warn("Ignoring '--versions-per-spec' for mirroring specs"
" in environment.")
mirror_specs = env_specs
else:
if num_versions == 'all':
mirror_specs = spack.mirror.get_all_versions(specs)
else:
mirror_specs = spack.mirror.get_matching_versions(
specs, num_versions=num_versions)
mirror_specs.sort(
key=lambda s: (s.name, s.version))
exclude_specs = []
if args.exclude_file:
exclude_specs.extend(_read_specs_from_file(args.exclude_file))
if args.exclude_specs:
exclude_specs.extend(
spack.cmd.parse_specs(str(args.exclude_specs).split()))
if exclude_specs:
mirror_specs = list(
x for x in mirror_specs
if not any(x.satisfies(y, strict=True) for y in exclude_specs))
return mirror_specs
def mirror_create(args):
"""Create a directory to be used as a spack mirror, and fill it with
package archives."""
mirror_specs = _determine_specs_to_mirror(args)
mirror = spack.mirror.Mirror(
args.directory or spack.config.get('config:source_cache'))
@@ -308,7 +343,8 @@ def mirror_create(args):
existed = web_util.url_exists(directory)
# Actually do the work to create the mirror
present, mirrored, error = spack.mirror.create(directory, mirror_specs)
present, mirrored, error = spack.mirror.create(
directory, mirror_specs, args.skip_unstable_versions)
p, m, e = len(present), len(mirrored), len(error)
verb = "updated" if existed else "created"

View File

@@ -119,8 +119,9 @@ def one_spec_or_raise(specs):
" this command with debug output enabled for more details.")
def loads(module_type, specs, args, out=sys.stdout):
def loads(module_type, specs, args, out=None):
"""Prompt the list of modules associated with a list of specs"""
out = sys.stdout if out is None else out
# Get a comprehensive list of specs
if args.recurse_dependencies:
@@ -288,15 +289,18 @@ def refresh(module_type, specs, args):
msg = 'Nothing to be done for {0} module files.'
tty.msg(msg.format(module_type))
return
# If we arrived here we have at least one writer
module_type_root = writers[0].layout.dirname()
spack.modules.common.generate_module_index(module_type_root, writers)
# Proceed regenerating module files
tty.msg('Regenerating {name} module files'.format(name=module_type))
if os.path.isdir(module_type_root) and args.delete_tree:
shutil.rmtree(module_type_root, ignore_errors=False)
filesystem.mkdirp(module_type_root)
# Dump module index after potentially removing module tree
spack.modules.common.generate_module_index(
module_type_root, writers, overwrite=args.delete_tree)
for x in writers:
try:
x.write(overwrite=True)

View File

@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from __future__ import print_function
import os
import sys
import code
@@ -20,6 +22,9 @@
def setup_parser(subparser):
subparser.add_argument(
'-V', '--version', action='store_true',
help='print the Python version number and exit')
subparser.add_argument(
'-c', dest='python_command', help='command to execute')
subparser.add_argument(
@@ -31,6 +36,10 @@ def setup_parser(subparser):
def python(parser, args, unknown_args):
if args.version:
print('Python', platform.python_version())
return
if args.module:
sys.argv = ['spack-python'] + unknown_args + args.python_args
runpy.run_module(args.module, run_name="__main__", alter_sys=True)

View File

@@ -8,10 +8,9 @@
import os
import llnl.util.tty as tty
import spack.spec
import spack.config
from spack.repo import Repo, create_repo, canonicalize_path, RepoError
import spack.repo
import spack.util.path
description = "manage package source repositories"
section = "config"
@@ -61,7 +60,9 @@ def setup_parser(subparser):
def repo_create(args):
"""Create a new package repository."""
full_path, namespace = create_repo(args.directory, args.namespace)
full_path, namespace = spack.repo.create_repo(
args.directory, args.namespace
)
tty.msg("Created repo with namespace '%s'." % namespace)
tty.msg("To register it with spack, run this command:",
'spack repo add %s' % full_path)
@@ -72,7 +73,7 @@ def repo_add(args):
path = args.path
# real_path is absolute and handles substitution.
canon_path = canonicalize_path(path)
canon_path = spack.util.path.canonicalize_path(path)
# check if the path exists
if not os.path.exists(canon_path):
@@ -83,7 +84,7 @@ def repo_add(args):
tty.die("Not a Spack repository: %s" % path)
# Make sure it's actually a spack repository by constructing it.
repo = Repo(canon_path)
repo = spack.repo.Repo(canon_path)
# If that succeeds, finally add it to the configuration.
repos = spack.config.get('repos', scope=args.scope)
@@ -104,9 +105,9 @@ def repo_remove(args):
namespace_or_path = args.namespace_or_path
# If the argument is a path, remove that repository from config.
canon_path = canonicalize_path(namespace_or_path)
canon_path = spack.util.path.canonicalize_path(namespace_or_path)
for repo_path in repos:
repo_canon_path = canonicalize_path(repo_path)
repo_canon_path = spack.util.path.canonicalize_path(repo_path)
if canon_path == repo_canon_path:
repos.remove(repo_path)
spack.config.set('repos', repos, args.scope)
@@ -116,14 +117,14 @@ def repo_remove(args):
# If it is a namespace, remove corresponding repo
for path in repos:
try:
repo = Repo(path)
repo = spack.repo.Repo(path)
if repo.namespace == namespace_or_path:
repos.remove(path)
spack.config.set('repos', repos, args.scope)
tty.msg("Removed repository %s with namespace '%s'."
% (repo.root, repo.namespace))
return
except RepoError:
except spack.repo.RepoError:
continue
tty.die("No repository with path or namespace: %s"
@@ -136,8 +137,8 @@ def repo_list(args):
repos = []
for r in roots:
try:
repos.append(Repo(r))
except RepoError:
repos.append(spack.repo.Repo(r))
except spack.repo.RepoError:
continue
msg = "%d package repositor" % len(repos)

View File

@@ -39,13 +39,6 @@ def setup_parser(subparser):
arguments.add_common_arguments(cd_group, ['clean', 'dirty'])
def spack_transitive_include_path():
return ';'.join(
os.path.join(dep, 'include')
for dep in os.environ['SPACK_DEPENDENCIES'].split(os.pathsep)
)
def write_spconfig(package, dirty):
# Set-up the environment
spack.build_environment.setup_package(package, dirty)
@@ -57,8 +50,8 @@ def write_spconfig(package, dirty):
paths = os.environ['PATH'].split(':')
paths = [item for item in paths if 'spack/env' not in item]
env['PATH'] = ':'.join(paths)
env['SPACK_TRANSITIVE_INCLUDE_PATH'] = spack_transitive_include_path()
env['CMAKE_PREFIX_PATH'] = os.environ['CMAKE_PREFIX_PATH']
env['SPACK_INCLUDE_DIRS'] = os.environ['SPACK_INCLUDE_DIRS']
env['CC'] = os.environ['SPACK_CC']
env['CXX'] = os.environ['SPACK_CXX']
env['FC'] = os.environ['SPACK_FC']
@@ -84,7 +77,7 @@ def cmdlist(str):
if name.find('PATH') < 0:
fout.write('env[%s] = %s\n' % (repr(name), repr(val)))
else:
if name == 'SPACK_TRANSITIVE_INCLUDE_PATH':
if name == 'SPACK_INCLUDE_DIRS':
sep = ';'
else:
sep = ':'

View File

@@ -26,7 +26,8 @@
error_message = """You can either:
a) use a more specific spec, or
b) use `spack uninstall --all` to uninstall ALL matching specs.
b) specify the spec by its hash (e.g. `spack uninstall /hash`), or
c) use `spack uninstall --all` to uninstall ALL matching specs.
"""
# Arguments for display_specs when we find ambiguity
@@ -39,6 +40,18 @@
def setup_parser(subparser):
epilog_msg = ("Specs to be uninstalled are specified using the spec syntax"
" (`spack help --spec`) and can be identified by their "
"hashes. To remove packages that are needed only at build "
"time and were not explicitly installed see `spack gc -h`."
"\n\nWhen using the --all option ALL packages matching the "
"supplied specs will be uninstalled. For instance, "
"`spack uninstall --all libelf` uninstalls all the versions "
"of `libelf` currently present in Spack's store. If no spec "
"is supplied, all installed packages will be uninstalled. "
"If used in an environment, all packages in the environment "
"will be uninstalled.")
subparser.epilog = epilog_msg
subparser.add_argument(
'-f', '--force', action='store_true', dest='force',
help="remove regardless of whether other packages or environments "
@@ -47,12 +60,8 @@ def setup_parser(subparser):
subparser, ['recurse_dependents', 'yes_to_all', 'installed_specs'])
subparser.add_argument(
'-a', '--all', action='store_true', dest='all',
help="USE CAREFULLY. Remove ALL installed packages that match each "
"supplied spec. i.e., if you `uninstall --all libelf`,"
" ALL versions of `libelf` are uninstalled. If no spec is "
"supplied, all installed packages will be uninstalled. "
"If used in an environment, all packages in the environment "
"will be uninstalled.")
help="remove ALL installed packages that match each supplied spec"
)
def find_matching_specs(env, specs, allow_multiple_matches=False, force=False):

View File

@@ -31,6 +31,9 @@ def setup_parser(subparser):
shells.add_argument(
'--csh', action='store_const', dest='shell', const='csh',
help="print csh commands to activate the environment")
shells.add_argument(
'--fish', action='store_const', dest='shell', const='fish',
help="print fish commands to load the package")
subparser.add_argument('-a', '--all', action='store_true',
help='unload all loaded Spack packages.')

View File

@@ -1,214 +0,0 @@
# 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)
# TODO: This will be merged into the buildcache command once
# everything is working.
import os
import re
import sys
try:
import boto3
import botocore
have_boto3_support = True
except ImportError:
have_boto3_support = False
import llnl.util.tty as tty
from spack.error import SpackError
import spack.tengine as template_engine
from spack.spec import Spec
import spack.binary_distribution as bindist
description = "temporary command to upload buildcaches to 's3.spack.io'"
section = "packaging"
level = "long"
def setup_parser(subparser):
setup_parser.parser = subparser
subparsers = subparser.add_subparsers(help='upload-s3 sub-commands')
# sub-command to upload a built spec to s3
spec = subparsers.add_parser('spec', help=upload_spec.__doc__)
spec.add_argument('-s', '--spec', default=None,
help='Spec to upload')
spec.add_argument('-y', '--spec-yaml', default=None,
help='Path to spec yaml file containing spec to upload')
spec.add_argument('-b', '--base-dir', default=None,
help='Path to root of buildcaches')
spec.add_argument('-e', '--endpoint-url',
default='https://s3.spack.io', help='URL of mirror')
spec.set_defaults(func=upload_spec)
# sub-command to update the index of a buildcache on s3
index = subparsers.add_parser('index', help=update_index.__doc__)
index.add_argument('-e', '--endpoint-url',
default='https://s3.spack.io', help='URL of mirror')
index.set_defaults(func=update_index)
def get_s3_session(endpoint_url):
if not have_boto3_support:
raise SpackError('boto3 module not available')
session = boto3.Session()
s3 = session.resource('s3', endpoint_url=endpoint_url)
bucket_names = []
for bucket in s3.buckets.all():
bucket_names.append(bucket.name)
if len(bucket_names) > 1:
raise SpackError('More than one bucket associated with credentials')
bucket_name = bucket_names[0]
return s3, bucket_name
def update_index(args):
"""Update the index of an s3 buildcache"""
s3, bucket_name = get_s3_session(args.endpoint_url)
bucket = s3.Bucket(bucket_name)
exists = True
try:
s3.meta.client.head_bucket(Bucket=bucket_name)
except botocore.exceptions.ClientError as e:
# If a client error is thrown, then check that it was a 404 error.
# If it was a 404 error, then the bucket does not exist.
error_code = e.response['Error']['Code']
if error_code == '404':
exists = False
if not exists:
tty.error('S3 bucket "{0}" does not exist'.format(bucket_name))
sys.exit(1)
build_cache_dir = os.path.join(
'mirror', bindist.build_cache_relative_path())
spec_yaml_regex = re.compile('{0}/(.+\\.spec\\.yaml)$'.format(
build_cache_dir))
spack_regex = re.compile('{0}/([^/]+)/.+\\.spack$'.format(
build_cache_dir))
top_level_keys = set()
for key in bucket.objects.all():
m = spec_yaml_regex.search(key.key)
if m:
top_level_keys.add(m.group(1))
print(m.group(1))
continue
m = spack_regex.search(key.key)
if m:
top_level_keys.add(m.group(1))
print(m.group(1))
continue
index_data = {
'top_level_keys': top_level_keys,
}
env = template_engine.make_environment()
template_dir = 'misc'
index_template = os.path.join(template_dir, 'buildcache_index.html')
t = env.get_template(index_template)
contents = t.render(index_data)
index_key = os.path.join(build_cache_dir, 'index.html')
tty.debug('Generated index:')
tty.debug(contents)
tty.debug('Pushing it to {0} -> {1}'.format(bucket_name, index_key))
s3_obj = s3.Object(bucket_name, index_key)
s3_obj.put(Body=contents, ACL='public-read')
def upload_spec(args):
"""Upload a spec to s3 bucket"""
if not args.spec and not args.spec_yaml:
tty.error('Cannot upload spec without spec arg or path to spec yaml')
sys.exit(1)
if not args.base_dir:
tty.error('No base directory for buildcache specified')
sys.exit(1)
if args.spec:
try:
spec = Spec(args.spec)
spec.concretize()
except Exception as e:
tty.debug(e)
tty.error('Unable to concrectize spec from string {0}'.format(
args.spec))
sys.exit(1)
else:
try:
with open(args.spec_yaml, 'r') as fd:
spec = Spec.from_yaml(fd.read())
except Exception as e:
tty.debug(e)
tty.error('Unable to concrectize spec from yaml {0}'.format(
args.spec_yaml))
sys.exit(1)
s3, bucket_name = get_s3_session(args.endpoint_url)
build_cache_dir = bindist.build_cache_relative_path()
tarball_key = os.path.join(
build_cache_dir, bindist.tarball_path_name(spec, '.spack'))
tarball_path = os.path.join(args.base_dir, tarball_key)
specfile_key = os.path.join(
build_cache_dir, bindist.tarball_name(spec, '.spec.yaml'))
specfile_path = os.path.join(args.base_dir, specfile_key)
cdashidfile_key = os.path.join(
build_cache_dir, bindist.tarball_name(spec, '.cdashid'))
cdashidfile_path = os.path.join(args.base_dir, cdashidfile_key)
tty.msg('Uploading {0}'.format(tarball_key))
s3.meta.client.upload_file(
tarball_path, bucket_name,
os.path.join('mirror', tarball_key),
ExtraArgs={'ACL': 'public-read'})
tty.msg('Uploading {0}'.format(specfile_key))
s3.meta.client.upload_file(
specfile_path, bucket_name,
os.path.join('mirror', specfile_key),
ExtraArgs={'ACL': 'public-read'})
if os.path.exists(cdashidfile_path):
tty.msg('Uploading {0}'.format(cdashidfile_key))
s3.meta.client.upload_file(
cdashidfile_path, bucket_name,
os.path.join('mirror', cdashidfile_key),
ExtraArgs={'ACL': 'public-read'})
def upload_s3(parser, args):
if args.func:
args.func(args)

View File

@@ -21,6 +21,10 @@
def setup_parser(subparser):
subparser.add_argument('-s', '--safe-only', action='store_true',
help='only list safe versions of the package')
subparser.add_argument(
'-c', '--concurrency', default=32, type=int,
help='number of concurrent requests'
)
arguments.add_common_arguments(subparser, ['package'])
@@ -45,7 +49,7 @@ def versions(parser, args):
if sys.stdout.isatty():
tty.msg('Remote versions (not yet checksummed):')
fetched_versions = pkg.fetch_remote_versions()
fetched_versions = pkg.fetch_remote_versions(args.concurrency)
remote_versions = set(fetched_versions).difference(safe_versions)
if not remote_versions:

View File

@@ -33,8 +33,6 @@
YamlFilesystemView.
'''
import os
import llnl.util.tty as tty
from llnl.util.link_tree import MergeConflictError
from llnl.util.tty.color import colorize
@@ -45,13 +43,15 @@
import spack.schema.projections
from spack.config import validate
from spack.filesystem_view import YamlFilesystemView
from spack.filesystem_view import view_symlink, view_hardlink, view_copy
from spack.util import spack_yaml as s_yaml
description = "project packages to a compact naming scheme on the filesystem."
section = "environments"
level = "short"
actions_link = ["symlink", "add", "soft", "hardlink", "hard"]
actions_link = ["symlink", "add", "soft", "hardlink", "hard", "copy",
"relocate"]
actions_remove = ["remove", "rm"]
actions_status = ["statlink", "status", "check"]
@@ -111,7 +111,10 @@ def setup_parser(sp):
help='add package files to a filesystem view via symbolic links'),
"hardlink": ssp.add_parser(
'hardlink', aliases=['hard'],
help='add packages files to a filesystem via via hard links'),
help='add packages files to a filesystem view via hard links'),
"copy": ssp.add_parser(
'copy', aliases=['relocate'],
help='add package files to a filesystem view via copy/relocate'),
"remove": ssp.add_parser(
'remove', aliases=['rm'],
help='remove packages from a filesystem view'),
@@ -125,7 +128,7 @@ def setup_parser(sp):
act.add_argument('path', nargs=1,
help="path to file system view directory")
if cmd in ("symlink", "hardlink"):
if cmd in ("symlink", "hardlink", "copy"):
# invalid for remove/statlink, for those commands the view needs to
# already know its own projections.
help_msg = "Initialize view using projections from file."
@@ -157,7 +160,7 @@ def setup_parser(sp):
so["nargs"] = "+"
act.add_argument('specs', **so)
for cmd in ["symlink", "hardlink"]:
for cmd in ["symlink", "hardlink", "copy"]:
act = file_system_view_actions[cmd]
act.add_argument("-i", "--ignore-conflicts", action='store_true')
@@ -179,11 +182,19 @@ def view(parser, args):
else:
ordered_projections = {}
# What method are we using for this view
if args.action in ("hardlink", "hard"):
link_fn = view_hardlink
elif args.action in ("copy", "relocate"):
link_fn = view_copy
else:
link_fn = view_symlink
view = YamlFilesystemView(
path, spack.store.layout,
projections=ordered_projections,
ignore_conflicts=getattr(args, "ignore_conflicts", False),
link=os.link if args.action in ["hardlink", "hard"] else os.symlink,
link=link_fn,
verbose=args.verbose)
# Process common args and specs

Some files were not shown because too many files have changed in this diff Show More