Compare commits

..

3109 Commits

Author SHA1 Message Date
Gregory Becker
afe1fd89b9 WIP -- wait for 18205 to continue 2020-10-21 18:37:21 -07:00
Tamara Dahlgren
1452020f22 Added raja smoke tests; updated build dir for cmake-based package tests 2020-10-14 19:35:45 -07:00
Tamara Dahlgren
9afff8eb60 Resolved eleven unit test failures (#18979) 2020-10-06 10:54:29 -07:00
Tamara Dahlgren
c6cd52f616 Remove unused test_compiler in intel.py (#18950) 2020-09-25 14:04:26 -07:00
Tamara Dahlgren
8bbfbc741d Added __init__.py to address test collection on the tty.py test (#18903) 2020-09-25 14:04:24 -07:00
Tamara Dahlgren
3f31fffe65 Resolved all basic flake8 errors 2020-09-25 14:04:23 -07:00
Tamara Dahlgren
fa023354c6 Restore test subcommand list limited to the first line though (#18723) 2020-09-23 12:44:27 -07:00
Tamara Dahlgren
02bd3d55a0 Bugfix: correct test find stage directory; fix flake8 errors (#18704) 2020-09-23 12:44:22 -07:00
Tamara Dahlgren
e58d4f8cb7 Fix test subcommand help/description (#18721) 2020-09-23 12:44:19 -07:00
Tamara Dahlgren
37a77e0d12 Preliminary binutils install tests (#18645) 2020-09-23 12:44:17 -07:00
Tamara Dahlgren
f10864b96e openmpi: Remove unneeded references to test part status values (#18644) 2020-09-23 12:44:14 -07:00
Greg Becker
19e226259c Features/spack test refactor cmds (#18518)
* no clean -t option, use 'spack test remove'

* refactor commands to make better use of TestSuite objects
2020-09-23 12:44:12 -07:00
Tamara Dahlgren
102b91203a Rename and make escaped text file utility readily available to packages (#18339) 2020-09-23 12:44:09 -07:00
Tamara Dahlgren
04ca718051 Updated hdf smoke test (#18337) 2020-09-23 12:44:06 -07:00
Tamara Dahlgren
61abc75bc6 Add remaining bugfixes and consistency changes from #18210 (#18334) 2020-09-23 12:44:03 -07:00
Greg Becker
86eececc5c Features/spack test refactor (#18277)
* refactor test code into a TestSuite object and install_test module

* update mpi tests

* refactor tests suites to use content hash for name and record reproducibility info

* update unit tests and fix bugs

* Fix tests using data dir for new format
Use new `self.test_stage` object to access current data dir

Co-authored by: Tamara Dahlgren <dahlgren1@llnl.gov>
2020-09-23 12:44:00 -07:00
Tamara Dahlgren
7551b66cd9 Smoke tests: handle package syntax errors (#17919) 2020-09-23 12:43:58 -07:00
Tamara Dahlgren
c9a00562c4 Preliminary HDF smoke tests (#18076) 2020-09-23 12:43:55 -07:00
Gregory Becker
dafda1ab1a update tests to use status=0 over status=None 2020-09-23 12:43:53 -07:00
Greg Becker
d6b9871169 Features/compiler tests (#17353)
* fix setup of run environment for tests

* remove unnecessary 'None' option from run_tests status arg

* allow package files for virtuals

* run tests for all virtuals provided by each package

* add tests for mpi

* add compiler tests for virtual packages

* run compiler tests automatically like virtuals

* use working_dir instead of os.chdir

* Move knowledge of virtual-ness from spec to repo

* refactor test/cmd/clean

* update cmd/pkg tests for correctness
2020-09-23 12:43:50 -07:00
Tamara Dahlgren
b6d1704729 Smoke tests: Preliminary berkeley-db tests (#17899) 2020-09-23 12:43:46 -07:00
Tamara Dahlgren
f49fa74bf7 Smoke test: Add test of a sequence of hdf5 commands (#17686) 2020-09-23 12:43:44 -07:00
Tamara Dahlgren
0b8bc43fb0 smoke test: preliminary sqlite tests 2020-09-23 12:43:40 -07:00
Tamara Dahlgren
70eb1960fb smoke test: Ensure expected test results and options are lists 2020-09-23 12:43:37 -07:00
Tamara Dahlgren
a7c109c3aa Smoke tests: cmake version checks (#17359)
* Smoke tests: cmake version checks

* Simplified cmake install checks: dict-to-list

Co-authored-by: Greg Becker <becker33@llnl.gov>
2020-09-23 12:43:34 -07:00
Tamara Dahlgren
da62f89f4a Smoke tests: hdf5 version checks and check_install (#17360) 2020-09-23 12:43:31 -07:00
Tamara Dahlgren
d9f0170024 Smoke tests: switched warn to debug plus bugfix (#17576) 2020-09-23 12:43:28 -07:00
Tamara Dahlgren
171ebd8189 Features/spack test emacs (#17363)
* Smoke tests: emacs version checks
2020-09-23 12:43:24 -07:00
Tamara Dahlgren
6d986b4478 Smoke tests: Preliminary Umpire install tests (#17178)
* Preliminary install tests for the Umpire package
2020-09-23 12:43:20 -07:00
Tamara Dahlgren
03569dee8d Add install tests for libsigsegv (#17064) 2020-09-23 12:43:18 -07:00
Tamara Dahlgren
e2ddd7846c bugfix: fix cache_extra_test_sources' file copy; add unit tests (#17057) 2020-09-23 12:43:16 -07:00
Gregory Becker
32693fa573 fixup bugs after rebase 2020-09-23 12:43:14 -07:00
Gregory Becker
e221ba6ba7 update macos test for new unit-test command 2020-09-23 12:43:12 -07:00
Gregory Becker
4146c3d135 flake 2020-09-23 12:43:10 -07:00
Gregory Becker
f5b165a76f flake 2020-09-23 12:43:08 -07:00
Tamara Dahlgren
3508362dde smoke tests: grab and run build examples (openmpi) (#16365)
* Snapshot smoke tests that grab and run examples

* Resolved openmpi example test issues for 2.0.0-4.0.3

* Use spec.satisfies; copy extra packages after install (vs. prior to install tests

* Added smoke tests for selected openmpi installed binaries

* Use which() to determine if install exe exists

* Switched onus for installer test source grab from installer to package

* Resolved (local) flake8 issues with package.py

* Use runner.name; use string format for *run_test* messages

* Renamed copy_src_to_install to cache_extra_test_source and added comments

* Metadata path cleanup: added metadata_dir property to and its use in package

* Support list of source paths to cache for install testing (with unit test)

* Added test subdir to install_test_root; changed skip_file to lambda
2020-09-23 12:43:05 -07:00
Tamara Dahlgren
fb145df4f4 bugfix: Resolve perl install test bug (#16501) 2020-09-23 12:43:02 -07:00
Tamara Dahlgren
fd46f67d63 smoke tests: Refined openmpi version checks (#16337)
* Refined openmpi version checks to pass for 2.1.0 through 4.0.3

* Allow skipping install tests with exe not in bin dir and revised openmpi version tests
2020-09-23 12:43:00 -07:00
Greg Becker
edf3e91a12 Add --fail-first and --fail-fast options to spack test run (#16277)
`spack test run --fail-first` exits after the first failed package.

`spack test run --fail-fast` stops each package test after the first
failure.
2020-09-23 12:42:58 -07:00
Gregory Becker
bca630a22a make output comparisons regex 2020-09-23 12:42:56 -07:00
Gregory Becker
5ff9ba320d remove debug log parser from ctest 2020-09-23 12:42:54 -07:00
Gregory Becker
50640d4924 update from Error to FAILED 2020-09-23 12:42:51 -07:00
Gregory Becker
f5cfcadfc5 change test headings from {name}-{hash} to {name}-{version}-{hash} 2020-09-23 12:42:49 -07:00
Gregory Becker
a5c534b86d update bash completion 2020-09-23 12:42:46 -07:00
Gregory Becker
99364b9c3f refactor 2020-09-23 12:42:43 -07:00
Gregory Becker
749ab2e79d Make Spack tests record their errors and continue
previously, tests would fail on the first error
now, we wrap them in a TestFailure object that records all failures
2020-09-23 12:42:40 -07:00
Greg Becker
1b3e1897ca Features/spack test subcommands (#16054)
* spack test: subcommands for asynchronous tests

* commands are `run`, `list`, `status`, `results`, `remove`.
2020-09-23 12:42:36 -07:00
Tamara Dahlgren
3976b2a083 tests: Preliminary libsigsegv smoke tests (updated) (#15981)
* tests: Preliminary libsigsegv smoke tests (updated)

* Cleaned up and added doc to libsigsegv smoke test
2020-09-23 12:42:33 -07:00
Tamara Dahlgren
54603cb91f tests: Update openmpi smoke tests to new run_test api (#15982)
* tests: Update openmpi smoke tests to new run_test api

* Removed version check try-except tracking per discussion

* Changed openmpi orted command status values to list
2020-09-23 12:42:29 -07:00
Tamara Dahlgren
aa630b8d71 install tests: added support for multiple test command status values (#15979)
* install tests: added support for multiple test command status values
2020-09-23 12:42:25 -07:00
Gregory Becker
77acf8ddc2 spack unit-test: fix pytest help command 2020-09-23 12:42:22 -07:00
Gregory Becker
dfb02e6d45 test runner: add options to check installation dir and print purpose 2020-09-23 12:42:18 -07:00
Gregory Becker
cf4a0cbc01 python: use self.command to get exe name in test 2020-09-23 12:42:16 -07:00
Gregory Becker
b0eb02a86f cmd/test.py: fix typo in spdx license header 2020-09-23 12:42:14 -07:00
Gregory Becker
73f76bc1b5 update bash completions 2020-09-23 12:42:12 -07:00
Gregory Becker
6f39d8011e spack test: factor out common args 2020-09-23 12:42:10 -07:00
Gregory Becker
97dc74c727 python: fix tests, remove intentional debug failures 2020-09-23 12:42:08 -07:00
Gregory Becker
d53eefa69f fix docs 2020-09-23 12:42:05 -07:00
Gregory Becker
bae57f2ae8 spack test: update existing docs for moved unit-test cmd 2020-09-23 12:41:23 -07:00
Gregory Becker
ba58ae9118 simplify error handling using language features 2020-09-23 12:36:23 -07:00
Gregory Becker
fdb8a59bae fix get_package_context check whether in a package file 2020-09-23 12:36:22 -07:00
Gregory Becker
d92f52ae02 fix handling of asserts for python3 2020-09-23 12:36:22 -07:00
Gregory Becker
3229bf04f5 fix 'belt and suspenders' for config values 2020-09-23 12:36:21 -07:00
Gregory Becker
ccf519daa5 update travis 2020-09-23 12:36:20 -07:00
Gregory Becker
c5ae92bf3f flake 2020-09-23 12:36:19 -07:00
Gregory Becker
f83280cb58 standardize names for configure_test, build_test, install_test 2020-09-23 12:36:18 -07:00
Gregory Becker
6e80de652c unbreak zlib 2020-09-23 12:36:17 -07:00
Gregory Becker
0dc212e67d tests and bugfixes 2020-09-23 12:36:16 -07:00
Gregory Becker
3ce2efe32a update bash completions 2020-09-23 12:36:14 -07:00
Gregory Becker
76ce5d90ec fixup unit-test from develop 2020-09-23 12:36:14 -07:00
Gregory Becker
e5a9a376bf fix cmd/clean tests 2020-09-23 12:36:13 -07:00
Gregory Becker
d6a497540d fixup reporter work 2020-09-23 12:36:12 -07:00
Gregory Becker
b996d65a96 bugfix 2020-09-23 12:36:11 -07:00
Gregory Becker
991a2aae37 test name message 2020-09-23 12:36:10 -07:00
Tamara Dahlgren
8ba45e358b Initial OpenMPI smoke tests: version checks 2020-09-23 12:36:09 -07:00
Gregory Becker
28e76be185 spack clean: option to clean test stage (-t) 2020-09-23 12:36:09 -07:00
Gregory Becker
70e91cc1e0 spack test: add dirty/clean flags to command 2020-09-23 12:36:08 -07:00
Gregory Becker
b52113aca9 move test dir to config option 2020-09-23 12:36:07 -07:00
Gregory Becker
ce06e24a2e refactor run_test to Package level 2020-09-23 12:36:06 -07:00
Gregory Becker
dd0fbe670c continue testing after error 2020-09-23 12:36:05 -07:00
Tamara Dahlgren
6ad70b5f5d Preliminary libxml2 tests (#15092)
* Initial libxml2 tests (using executables)

* Expanded libxml2 tests using installed bins

* Refactored/generalized _run_tests
2020-09-23 12:36:04 -07:00
wspear
dadf4d1ed9 Fixed import string (#15094) 2020-09-23 12:36:03 -07:00
Gregory Becker
64bac977f1 add spack test-env command, refactor to combine with build-env 2020-09-23 12:36:02 -07:00
Gregory Becker
2f1d26fa87 allow tests to require compiler 2020-09-23 12:36:02 -07:00
Gregory Becker
cf713c5320 Modify existing test methods to naming scheme <phase_name>test
Existing test methods run via callbacks at install time when run with `spack install --run-tests`
These methods are tied into the package build system, and cannot be run arbitrarily
New naming scheme for these tests based on the build system phase after which they should be run
The method name `test` is now reserved for methods run via the `spack test` command
2020-09-23 12:36:01 -07:00
Tamara Dahlgren
035e7b3743 tests: Added preliminary smoke test for perl (#14592)
* Added install test for perl, including use statements
2020-09-23 12:35:59 -07:00
Tamara Dahlgren
473457f2ba tests: Preliminary m4 smoke tests (#14553)
* Preliminary m4 smoke tests
2020-09-23 12:35:59 -07:00
Tamara Dahlgren
490bca73d1 Change variable name to 'standard' file to avoid confusion with function (#14589) 2020-09-23 12:35:58 -07:00
Tamara Dahlgren
59e885bd4f tests: Preliminary patchelf smoke tests (#14551)
* Initial patchelf smoke tests
2020-09-23 12:35:57 -07:00
Gregory Becker
966fc427a9 copy test data into './data' in test environment 2020-09-23 12:35:56 -07:00
Gregory Becker
8a34511789 improved error printing 2020-09-23 12:35:55 -07:00
Gregory Becker
8f255f9e6a fix reporter call for install command 2020-09-23 12:35:54 -07:00
Gregory Becker
4d282ad4d9 Changes in cmd/test.py in develop mirrored to cmd/unit-test.py 2020-09-23 12:35:53 -07:00
Gregory Becker
7216451ba7 tests occur in temporary directory, can be kept for debugging 2020-09-23 12:35:52 -07:00
Gregory Becker
e614cdf007 improve error catching/handling/re-raising 2020-09-23 12:35:51 -07:00
Gregory Becker
bc486a961c make test fail 2020-09-23 12:35:50 -07:00
Gregory Becker
a13eab94ce improve logging and add junit basics 2020-09-23 12:35:49 -07:00
Gregory Becker
6574c6779b python3 syntax for re-raising an error with the old traceback 2020-09-23 12:35:48 -07:00
Gregory Becker
d2cfbf177d make cdash test reporter work for testing 2020-09-23 12:35:46 -07:00
Gregory Becker
bfb97e4d57 add reporting format options to spack test 2020-09-23 12:35:14 -07:00
Gregory Becker
4151224ef2 WIP infrastructure for Spack test command to test existing installations 2020-09-23 12:22:26 -07:00
darmac
e294a1e0a6 fasttext: new package at v0.9.2 (#18890) 2020-09-23 18:53:31 +02:00
eugeneswalker
9eb87d1026 OLCF Ascent gitlab ci trigger: pass SPACK_REF (#18875) 2020-09-23 09:35:29 -07:00
vvolkl
394a23d392 py-uproot4: added new package at v0.0.27 (#18891) 2020-09-23 18:17:57 +02:00
vvolkl
3c418d9faa py-awkward1: added new package at v0.3.1 (#18892) 2020-09-23 18:15:32 +02:00
Matthieu Dorier
4277bc6429 nlohmann-json-schema-validator: new package at v2.1.0 (#18837) 2020-09-23 17:28:33 +02:00
Howard Pritchard
aedc056f9a trilinos: patch for cray cce fortran compiler (#18164)
two patchfiles needed since this file changed between 12.12.1 and 12.14.1

Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
2020-09-23 09:54:51 -05:00
darmac
562f504000 Add new package: addrwatch (#18728)
* Add new package: addrwatch

* addrwatch: refine url
2020-09-23 14:02:03 +02:00
Andre Sailer
8fac02e437 LCIO: added v2.15.[0123] (#18841) 2020-09-23 13:55:01 +02:00
Mathias Anselmann
b578d55d12 setting old GO default values for older trilinos versioins to (hopefully) not break the installation. Adjusting dealii package to just explicitly set GO if trilinos >= 12.18.1 is installed (#15439) 2020-09-22 18:52:05 -05:00
Jen Herting
bbb6b14540 treelite: new package at v0.93 (#18861) 2020-09-22 22:30:04 +02:00
Massimiliano Culpo
92b8177b77 gromacs: remove 'rdtscp' variant, deduce the flag from the target (#18868)
refers #18858
2020-09-22 13:11:35 -06:00
Miroslav Stoyanov
acf4dc2e12 Heffte: add magma variant (#18849) 2020-09-22 15:05:00 -04:00
Martin Pokorny
a23d67f7ea casacore: added v3.3.0 (#18870) 2020-09-22 20:55:58 +02:00
Andrew Gaspar
0d0ba79bfb Rust: added v1.46.0 (#18863) 2020-09-22 20:54:54 +02:00
Jordan Ogas
435c8862a6 charliecloud: added v0.19 (#18866) 2020-09-22 20:45:29 +02:00
Glenn Johnson
84dbf6948e Set conflicts parameter for cuda-11 (#18847)
Magma is not currently compatible with CUDA-11. While this is reflected
in the package, it is done with a comment in a `depends_on` directive,
which has the effect of trying to install a version of CUDA that may be
different from the one in the current environment, without any message
to the end user. A `conflicts` is a better way to handle this.
2020-09-22 12:35:13 -04:00
Adam J. Stewart
9558377f0f Bash: fix build with Xcode 12 (#18843) 2020-09-22 12:25:54 -04:00
Ganesh Kumar
9e906e2d47 ROCm 3.8 Stage1 Components (#18830)
* ROCm 3.8 Stage1 Components

* version review comments

* 3.5 dependency restrictions

Co-authored-by: root <root@mlseqa-hyd-virt-srv-07.amd.com>
2020-09-22 11:09:03 -05:00
Simon Pintarelli
7d0ae0f295 sirius: use -DCUDA_ARCH for develop, version >7.0.0 (#18852)
Also remove master branch
2020-09-22 17:35:11 +02:00
victorusu
a078e2ba13 ReFrame: added v3.1 (#18860) 2020-09-22 17:19:51 +02:00
Chris White
30d24db116 Added RAJA v0.12.1`and Umpire v4.0.1 (#18756)
Also renamed 'master' to 'main'
2020-09-22 15:40:16 +02:00
Hadrien G
a1e19de8e1 acts: added v1.0 (#18859) 2020-09-22 15:05:59 +02:00
Christoph Junghans
bdefac6964 miniqmc: fix install (#18857) 2020-09-21 18:15:27 -06:00
Robert Blake
b272e00d6a util-linux: fix bash completion install errors. (#18696)
* Disable bash completion by default.

* flake8

* Adding explicit dependence on libuuid

* Adding explicit dependence on cryptsetup

This way we don't pick up host crypto packages by mistake.

* Fixing the completion directory.

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

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

* flake8

* Removing libuuid linkage according to @michaelkuhn on #18696

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-21 16:11:44 -05:00
Christoph Junghans
0dd7f140b0 nut: fix install (#18848)
* nut: fix install

* flake8
2020-09-21 16:09:53 -05:00
Christoph Junghans
165dbf719d fix spack-build usages (#18846) 2020-09-21 12:19:06 -05:00
Greg Becker
5565b6494d typo (#18845) 2020-09-21 11:54:23 -05:00
Joseph Wang
88187bc63c add groff and ghostscript (#18803)
Without these packages, graphviz will set groff/ghostscript to false which will cause the build to fail.
2020-09-21 17:39:13 +02:00
Adam J. Stewart
678e9f5ad2 libksba: add new version (#18798) 2020-09-20 08:53:42 -04:00
Adam J. Stewart
7d5ddb1fc6 readline: simplify linking to ncurses (#18801) 2020-09-19 16:32:42 -05:00
Adam J. Stewart
489377d051 SciPy: add patch to fix XCode 12 build (#18800) 2020-09-19 16:32:26 -05:00
Adam J. Stewart
458dc81878 ncurses: fix libs method (#18799) 2020-09-19 16:32:05 -05:00
Adam J. Stewart
f570d7a45c graphviz: fix build with Apple Clang 12.0.0 (#18797) 2020-09-19 16:29:42 -05:00
Adam J. Stewart
36e9c1eba3 fish: relax ncurses dependency constraints (#18796) 2020-09-19 16:29:27 -05:00
Massimiliano Culpo
fcb4dfc307 Ensure variant defaults are parsable from CLI. (#18661)
- Add a unit test to check if there are unparsable defaults
- Fix 'rust' and 'nsimd' variants
2020-09-19 07:54:26 +02:00
Larry Knox
fff2f34de8 Hdf5 1.10.7 (#18712)
* Update hdf5/package.py for HDF5 1.10.7 release and obsolete home url.
Add maintainer to hdf/package.py.

* remove stray space.

* Remove unnecessary /diplay/support from homepage urls.
2020-09-18 21:38:56 -05:00
Tom Payerle
e36498cb46 bedtools2: Add missing python build dependency (#18744) (#18746)
Makefile invokes python to build some scripts
See #18744
2020-09-18 21:38:21 -05:00
Michael Kuhn
6198963ede popt: Add missing libiconv dependency (#18731)
Without this dependency, the build fails due to undefined references.
2020-09-18 18:00:00 -04:00
Adam J. Stewart
b44cf08cb2 py-notebook: add new version (#18638) 2020-09-18 14:46:12 -05:00
Greg Becker
7585b37865 do out of source builds in hashed directories (#18574) 2020-09-18 12:21:13 -07:00
Shahzeb Siddiqui
58fb6cdaad trigger ascent e4s pipeline on merge to spack develop (#18655)
* trigger ascent e4s pipeline on merge to spack develop

* change pipeline name ecpcitest/e4s is the pipeline that will be triggered for merge on develop its the E4S use-case.
2020-09-18 10:38:29 -07:00
Glenn Johnson
6e82776773 Add mumax-3.10 release version (#18740)
This PR adds the current release version of mumax and tweaks the install
of the previous beta version.

- Set the url parameter to reflect the release version over the beta
  version. Hopefully, this will be consistent going forward.
- Set an explicit url for the previous beta version.
- Accept values for `cuda_arch`. The previous version had its own list
  but the release version does not.
- Replace the built in cuda compute capabilities list with the one
  provided by Spack for the 3.10beta version.
2020-09-18 13:36:00 -04:00
Seth R. Johnson
71c7e28ca7 swig: add version 4.0.2 and 4.0.2-fortran (#18741) 2020-09-18 13:35:33 -04:00
Greg Becker
2e4892c111 env view failures: print underlying error message (#18713) 2020-09-18 10:21:14 -07:00
Jen Herting
44c7826892 [py-pyarrow] added variant cuda (#18716)
* [py-pyarrow] added variant cuda

* [py-pyarrow] simplifying variant dependencies
2020-09-18 10:28:28 -05:00
darmac
8cb1192050 util-linux: fix build error (#18647)
* util-linux: fix build error

* refine install stage
2020-09-18 10:04:28 -05:00
darmac
a4cdf664c6 Add new package: shiro (#18541)
* Add new package: shiro

* refine description and dependencies
2020-09-18 10:03:32 -05:00
ketsubouchi
403ea4384e ocaml: support 4.11 (#18705) 2020-09-18 10:02:50 -05:00
Toyohisa Kameyama
7d0a46c051 iwyu: Require llvm+all_targets on non-x86_64 systems (#18710) 2020-09-18 10:31:03 -04:00
Axel Huebl
a8b6faf430 py-recommonmark: fix URL and docutils version (#18714) 2020-09-18 12:07:57 +02:00
Axel Huebl
275583c02f py-breathe: added v4.21.0 (#18722) 2020-09-18 07:44:54 +02:00
Mark W. Krentel
80fe51046c libpfm4: add version 4.11.0 (#18720)
Add version 4.11.0 for libpfm4.
Add myself as maintainer.
2020-09-17 15:58:23 -05:00
Jen Herting
e329e13f32 [arrow] added cuda variant (#18715) 2020-09-17 15:26:51 -05:00
Glenn Johnson
4b41d56bc3 Add bart-0.6.00 (#18717)
This PR adds version 0.6.00 of bart.
2020-09-17 15:25:08 -05:00
Adam J. Stewart
f9699fd3ff py-nbconvert: add new version (#18636) 2020-09-17 15:23:59 -05:00
Adam J. Stewart
69d8417d8a py-nbclient: add new package (#18628) 2020-09-17 12:54:03 -07:00
Adam J. Stewart
01df552149 py-matplotlib: add v3.2.2 (#18681) 2020-09-17 12:46:20 -07:00
t-nojiri
b66d756da6 bowtie : Fix for aarch64 (#18709) 2020-09-17 11:42:32 -05:00
Glenn Johnson
7c01c64d53 gpu-burn: allow to build with non-gcc compilers (#18707)
This PR modifies the patch to use $(CXX) rather than g++ to allow the
spack compiler to be used.
2020-09-17 17:24:22 +02:00
Glenn Johnson
2576d8d767 Update libbeagle (#18703)
This PR fixes a couple of things with the libbeagle package.

- libbeagle can only be built for one GPU type. Add a test for that.
- version 2 had the arch statement in
  libhmsbeagle/GPU/kernels/Makefile.am but version 3 has it in
  configure.ac. Put the variant specified value in configure.ac for
  consistency.
2020-09-17 10:04:21 -05:00
Ganesh Kumar
0f332c73a6 Rocm 3.7 miopen, miopengemm, rocalution and rocm-opencl (#18690)
* ROCm 3.5 miopen recipe

* fixing flake8 issues

* cmake variant fix

* min support fix

* variant possible values

* rocm3.7 change for miopen, rocalution and rocm-opencl

* review comments
2020-09-17 10:00:45 -05:00
Enrico Usai
91bd99b4b2 aws-parallelcluster: add 2.9.1 and 2.9.0 releases (#18676)
Checked all the third party dependencies for all the versions.
2020-09-17 09:59:11 -05:00
arjun-raj-kuppala
7fb83047fd Hipify clang with AMD rocm 3.7.0 update (#18672)
* Hipify clang with rocm 3.7.0 update

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

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2020-09-16 22:18:48 -05:00
Greg Sjaardema
9a5f043ce6 seacas: Force use of non-mpi-enabled hdf5 (#18702)
Due to recent changes in the `netcdf-c` package, it is now necessary to explicitly request a non-mpi-enabled hdf5 build if building a non-mpi-enabled seacas.
2020-09-16 16:37:13 -05:00
Robert Blake
f95d7959b2 lustre: Adding external support. Closing #18698 (#18700) 2020-09-16 16:29:59 -05:00
Simon Frasch
91649763ab spla: Add version 1.1.1 and fix cmake flag when build with +cuda (#18699) 2020-09-16 16:27:00 -05:00
Sajid Ali
7c23498f1d bump CGAL version (#18693)
* bump CGAL version

* Address reviewer comments

* flake8 fix

* Address reviewer comments

* Address reviewer comments
2020-09-16 16:22:40 -05:00
Andre Sailer
635b8243fe [dd4hep]: add variant lcio (#18691) 2020-09-16 17:33:14 +01:00
Tiziano Müller
0d5c065678 libvdwxc: unbreak concretization, request fftw-api (#18688)
* libvdwxc: unbreak concretization, request fftw-api

mixing both fftw and fftw-api in a dependency tree can trigger the
following:

```
$ spack spec cp2k@master +sirius
==> [2020-09-16-12:36:06.552981] sirius applying constraint gsl
==> [2020-09-16-12:36:06.554270] sirius applying constraint openblas@0.3.10%gcc@7.5.0~consistent_fpcsr~ilp64+pic+shared threads=none arch=linux-opensuse_leap15-sandybridge
Traceback (most recent call last):
  File "./bin/spack", line 64, in <module>
    sys.exit(spack.main.main())
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/main.py", line 762, in main
    return _invoke_command(command, parser, args, unknown)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/main.py", line 490, in _invoke_command
    return_val = command(parser, args)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/cmd/spec.py", line 103, in spec
    spec.concretize()
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2228, in concretize
    user_spec_deps=user_spec_deps),
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2716, in normalize
    visited, all_spec_deps, provider_index, tests)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2654, in _normalize_helper
    dep, visited, spec_deps, provider_index, tests)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2613, in _merge_dependency
    visited, spec_deps, provider_index, tests)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2654, in _normalize_helper
    dep, visited, spec_deps, provider_index, tests)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2554, in _merge_dependency
    provider = self._find_provider(dep, provider_index)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/spec.py", line 2489, in _find_provider
    providers = provider_index.providers_for(vdep)
  File "/data/tiziano/debug-spack/spack2/lib/spack/spack/provider_index.py", line 80, in providers_for
    return sorted(s.copy() for s in result)
  File "/data/tiziano/debug-spack/spack2/lib/spack/llnl/util/lang.py", line 249, in <lambda>
    lambda s, o: o is not None and s._cmp_key() < o._cmp_key())
TypeError: '<' not supported between instances of 'str' and 'NoneType'
```

while at the same point disallowing MKL as a fftw provider.
Solving both issues by depending on `fftw-api@3` instead and adding a
conflict on `^fftw~mpi` when using `+mpi` (thanks to alalazo).

* cp2k: use conflicts instead of runtime checks for fftw/openblas variants
2020-09-16 10:41:46 -05:00
t-nojiri
cb218058bc fraggenescan: Modify build_targets for aarch64 (#18687) 2020-09-16 10:40:33 -05:00
Xavier Delaruelle
0b3e860608 environment-modules: add version 4.6.0 (#18686) 2020-09-16 10:39:55 -05:00
Robert Pavel
2f0565de64 Added spackage for cosmoflow-benchmark proxy app (#18685)
* Initial Draft of Cosmoflow Spackage

Need to add in logic to streamline cpu/gpu builds

* Added ~cuda logic to cosmoflow spackage

Added logic to support a ~cuda build for cosmoflow

* Requested Changes to Cosmoflow Spackage

Made requested changes to cosmoflow spackage
2020-09-16 10:18:01 -05:00
Severin Strobl
e41c3ad1fc Likwid versions >= 5.0.0 depend on Lua 5.2. (#18675)
* Likwid versions >= 5.0.0 depend on Lua 5.2.

According to https://github.com/RRZE-HPC/likwid/issues/324 recent
versions of Likwid require Lua 5.2.

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-16 10:16:08 -05:00
Jason Lee
1a9f97fd0d jemalloc: Use AutotoolsPackage and allow for arbitrary public API prefixes (#18680)
Removed je variant
2020-09-15 20:37:05 -05:00
Greg Sjaardema
6a3583f181 MatIO: Update repository and add new versions (#18683)
MatIO development has switched to github from sourceforge.  Updated the `git` and `url` variables and added the four new versions (1.5.14 -- 1.5.17) that have been released since the last update of this package.
2020-09-15 16:43:45 -05:00
arjun-raj-kuppala
bad9f2bc28 AMD ROCmValidationSuite recipe for 3.5.0 and 3.7.0 (#18678)
* AMD ROCmValidationSuite recipe for 3.5.0 and 3.7.0

* Updated the PR comments for rocmvalidationsuite recipe
2020-09-15 13:16:41 -05:00
Nikolay Simakov
1b1bfd883a namd: Added optimization auto-selection for skylake-X+ CPU for 2.14 and 2.15a1 (AVX512 tile) (#18671) 2020-09-15 10:08:26 -05:00
Sergey Kosukhin
5cff304809 CLAW: update the package (#18673) 2020-09-15 10:04:59 -05:00
Tom Payerle
6752a1c377 Qbox minor issues 18664 (#18665)
* qbox: install to correct directory structure

* qbox: Have qb executable put in bin rather than src subdir

* qbox: Fix python script shebangs to use python from path

* qbox: Add dependencies on gnuplot, python2 for utilities

* qbox: fix flake8 issue

* qbox: Add $prefix/util to PATH
2020-09-15 09:54:26 -05:00
ketsubouchi
33e8dcad99 nseg: add return 0; to void functions (#18481) 2020-09-15 10:24:51 +02:00
Adam J. Stewart
5e6875008c fish: add dependencies, patch MacOS (#18526) 2020-09-15 08:43:53 +02:00
Adam J. Stewart
5f0c3427ae py-cmocean: added new package at v2.0 (#18614) 2020-09-15 08:36:26 +02:00
Adam J. Stewart
2af9e44340 Add setuptools run-time dependency to various Python packages (#18616) 2020-09-15 08:30:59 +02:00
Adam J. Stewart
b3ee04c6ef py-jupyterlab-pygments: added new package at v0.1.1 (#18627) 2020-09-15 08:30:08 +02:00
Adam J. Stewart
f7030287d3 py-nest-asyncio: add new package at v1.4.0 (#18629) 2020-09-15 08:28:51 +02:00
Adam J. Stewart
445988011c py-ipykernel: added v5.3.4, moved url to PyPI (#18630) 2020-09-15 08:28:17 +02:00
Adam J. Stewart
ef37852bb4 py-ipython: added v7.18.1 (#18631) 2020-09-15 08:26:27 +02:00
Adam J. Stewart
40a66317e8 py-jupyter-client: added v6.1.7, moved url to PyPI (#18632) 2020-09-15 08:25:39 +02:00
Adam J. Stewart
792c48a558 py-jupyter-core: updated the type of the setuptools dependency (#18633) 2020-09-15 07:42:28 +02:00
Adam J. Stewart
0448ade7b5 py-jupyterlab-server: added v1.2.0 (#18634) 2020-09-15 07:39:30 +02:00
Adam J. Stewart
defde398c4 py-argon2-cffi: added new package at v20.1.0 (#18626) 2020-09-15 07:38:16 +02:00
Adam J. Stewart
77d20906c0 py-jupyterlab: added v2.2.7 (#18635) 2020-09-15 07:20:15 +02:00
Adam J. Stewart
682223f1f4 py-nbformat: add v5.0.7, moved url to PyPI (#18637) 2020-09-15 07:18:12 +02:00
Adam J. Stewart
60a5a176fb py-terminado: added v0.8.3 (#18639) 2020-09-15 07:15:38 +02:00
Adam J. Stewart
c59836222e py-traitlets: added v5.0.4, moved url to PyPI (#18640) 2020-09-15 07:15:00 +02:00
Robert Pavel
4fc2370559 Added Missing Tag to Cradl Spackage (#18669)
Added missing proxy apps tag to cradl spackage
2020-09-14 18:55:53 -06:00
Robert Pavel
a2673aeddd CRADL Machine Learning Proxy Spackage (#18668)
* Initial CRADL Spackage Work

Currently resolving ```--single-version-externally-managed``` error

* Fixed GPUtil Issues

Thanks to Vinay Ramakrishnaiah for overwriting install

* Finished CRADL Install Function

Finished CRADL install function which is basically copying the scripts
to the install directory. Also resolved flake8 issues for PR purposes
2020-09-14 14:25:49 -06:00
Simon Frasch
49512e21ab SIRIUS: Update dependencies (#18622)
* sirius: Fixed dependency spfft when build with +rocm

* sirius: Added new dependency spla for develop build

* sirius: Added maintainer
2020-09-14 12:23:32 -05:00
Scott Wittenburg
f537d5bb58 Make sure each develop pipeline tests associated commit 2020-09-14 10:37:42 -06:00
Scott Wittenburg
28ef5b1204 Do not assume we sit in the directory where the env file lives. 2020-09-14 10:37:42 -06:00
Scott Wittenburg
031490f6aa Remove :<name> interpolation, add SPACK_VERSION variables
Also fix issues with documentation to reflect changes
2020-09-14 10:37:42 -06:00
Scott Wittenburg
bf90cdd6c7 Document pipeline keys which can be global but overridden
Update pipelines documentation to describe how 'tags', 'variables',
'image', 'before_script', 'script', and 'after_script' can be
supplied at the top level, to be used by any of the runner mappings,
and also overridden by any of the runner mappings.

Also show an example of capturing the custom spack SHA at pipeline
generation time, so all jobs are sure to run with the same version
of spack, as a means to illustrate the $env:VARIABLE_NAME syntax.
2020-09-14 10:37:42 -06:00
Scott Wittenburg
d9e0718c9d Allow overridable global runner attributes 2020-09-14 10:37:42 -06:00
Scott Wittenburg
e686f1500e Update pipeline documentation to describe user-provided scripts 2020-09-14 10:37:42 -06:00
Scott Wittenburg
e18612a321 Add test for variable interpolation and scripts 2020-09-14 10:37:42 -06:00
Scott Wittenburg
2386f7582a Support variable interpolation at pipeline generation time 2020-09-14 10:37:42 -06:00
Scott Wittenburg
ace52bd476 Provide your own script, before_script, and after_script 2020-09-14 10:37:42 -06:00
Massimiliano Culpo
4ca7d46e15 Fix a typo in test/concretize.pyi (#18662) 2020-09-14 09:58:14 -05:00
darmac
5f47170492 Add new package: webbench (#18650)
* Add new package: webbench

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-14 09:57:40 -05:00
ketsubouchi
41b68741ec cpio: add --rtlib=compiler-rt for %fj (#18619)
* cpio: add --rtlib=compiler-rt for %fj

* cpio: simplify if

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

This seems better.

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-14 09:55:47 -05:00
t-nojiri
a250006449 ngmlr: support for aarch64 (#18621)
* ngmlr: support for aarch64

* ngmlr: Fixed patch file
2020-09-13 23:14:59 -05:00
ketsubouchi
3cfce42563 nek5000: Support Fujitsu fortran (#18659) 2020-09-13 23:14:04 -05:00
Paul
c29b74e7ad Updated FZF package for newer versions. (#18608)
* Support for external find.
* Added latest version (0.22.0) and conditions to package to continue
support for older versions.
2020-09-13 11:27:56 -05:00
Joseph Wang
58f101de88 use github for download (#18657) 2020-09-13 10:23:46 -05:00
Andrew W Elble
a734dabf2b new package: py-reproject (#18641)
* new package: py-reproject
add setuptools build/run dep to py-astropy-healpix

* fixes

* fix
2020-09-12 15:37:34 -05:00
darmac
85f7a8bf71 Add new package: delta (#18648) 2020-09-12 15:37:14 -05:00
darmac
10dab474ce cvs: add a patch for segv issue (#18649) 2020-09-12 09:47:39 -05:00
darmac
e355fc16ad Add new package: dbxtool (#18651) 2020-09-12 09:45:05 -05:00
darmac
3211ac5136 Add new package: geoip-api-c (#18653) 2020-09-12 09:44:28 -05:00
darmac
cde4654525 Add new package: libspiro (#18654) 2020-09-12 09:44:02 -05:00
darmac
6d39e6ebea Add new package: hping (#18311)
* Add new package: hping

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

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

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

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

* Update package.py

Fix flake8 errors

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-12 09:36:30 -05:00
darmac
128731ec74 Add new package: jetty-project (#18555)
* Add new package: jetty-project

* refine dependency

* refine maven version
2020-09-12 09:35:38 -05:00
Richarda Butler
8116153f2a bugfix: include configuration ignoring files with the same basename (#18487)
* Use the config path instead of the basename

* Removing unused variables

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

* Test
Making sure if there are 2 include config files with the same basename they are both implemented

* Edit test assert

Co-authored-by: Greg Becker <becker33@llnl.gov>
2020-09-11 16:45:36 -07:00
Robert Blake
afb0883762 ncurses: adding external support. (#18609)
* ncurses: adding external support.

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

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

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

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

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

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

* Fixing includes.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-11 16:00:11 -05:00
Massimiliano Culpo
8ad2cc2acf Environments: Avoid inconsistent state on failed write (#18538)
Fixes #18441 

When writing an environment, there are cases where the lock file for
the environment may be removed. In this case there was a period 
between removing the lock file and writing the new manifest file
where an exception could leave the manifest in its old state (in
which case the lock and manifest would be out of sync).

This adds a context manager which is used to restore the prior lock
file state in cases where the manifest file cannot be written.
2020-09-11 10:57:29 -07:00
Adam J. Stewart
e7040467f2 NumPy: added v1.19.2 (#18615) 2020-09-11 15:38:24 +02:00
srekolam
1aceb38b89 Changes for hipsparse, rocthrust recipes for rocm_3.7.0 (#18497)
* changes for hipsparse,rocthrust recipes for rocm_3.7.0

* changes to rocrand for 3.7.0

* version changes
2020-09-10 17:33:21 -05:00
srekolam
4a474d9d67 recipes changes for hipblas, rocprim, rocfft, rocsolver for rocm3.7.0 (#18495)
* recipes changes for rocprim,rocfft,rocsolver for rocm3.7.0

* changes to hipcub recipe for rocm-3.7.0

* changes to address review comments
2020-09-10 17:32:41 -05:00
Robert Pavel
29645ceba5 Adding Missing Versions for Flux-Sched/Flux-Core and Compiler Flags (#18612)
* Checksummed New Flux Versions

Checksummed new flux versions to let spack detect them

* Added CXXFlags to build Flux-sched

Added missing cxxflags to build flux-sched
2020-09-10 16:53:28 -05:00
Robert Pavel
3fabdb6e9b Adding Cuda Variant to SW4Lite (#18590)
* Adding Cuda Variant to SW4Lite

Added cuda variant of sw4lite  as per guidance in README

* Updated SW4Lite+cuda to Current Header Conventions

Updated sw4lite+cuda to use current conventions for spackage include
dirs

* Fixing FLake8 Issue with Sw4lite+cuda Fix

Fixed overly long line and further underlined sticky note reminding me
to run flake8 BEFORE pushing

* Switching to Spack Compiler Wrapper

Switching to spack compiler wrapper for consistency
2020-09-10 16:53:13 -05:00
Tim Haines
ff6ca57dda Dyninst: add v10.2.1 (#18611) 2020-09-10 16:09:06 -05:00
Rémi Lacroix
114317464b Orca: update the package. (#18593)
* Orca: Add new versions.

* Orca: Support OpenMPI without the legacy wrappers.

By default, Spack builds OpenMPI without the legacy wrappers when using the Slurm scheduler. This breaks Orca since its binaries are hardcoded to call "mpirun". To workaround this issue, add a "mpirun" wrapper which calls "srun" when required.
2020-09-10 11:55:13 -05:00
Johannes Blaschke
757dad370f Bugfix for fish support: overly zealous arg matching (#18528)
* bugfix for issue 18369

* fix typo

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-10 10:01:44 -05:00
Tiziano Müller
2bc9821c43 update CP2K pkg for 8+ (#18607)
* cp2k: do not support ~openmp for v8+

* sirius: version bump

* cp2k: fix overlapping deps for elpa

fixes #18029

* cp2k: update SIRIUS dependency for v8+

* spfft: requires CMake 3.11+

* cp2k: fix build with +sirius
2020-09-10 10:00:31 -05:00
Toyohisa Kameyama
34f4049815 dpdk: Avoid option conflicts between spack wrappers and Makefiles on aarch64 gcc. (#18603) 2020-09-10 09:59:18 -05:00
t-nojiri
e13e2b0d54 prism: support for aarch64 (#18562)
* prism: support for aarch64

* prism: Change patch file.
2020-09-10 09:56:19 -05:00
Adam J. Stewart
25291cf01c GDAL: fixed Java bindings, added v3.1.3 (#18494) 2020-09-10 15:08:24 +02:00
Tomoki, Karatsu
778e659a03 openfoam: Set 'FOAM_SIGFPE' when using Fujitsu compiler. (#18601) 2020-09-10 15:01:50 +02:00
Tomoki, Karatsu
d4535f3115 fj: fixed homepage URL. (#18602) 2020-09-10 14:55:52 +02:00
Fabian Brandt
fc919e490e NetworKit: update to v7.1, including dependencies (#18604) 2020-09-10 14:53:16 +02:00
srekolam
651cffae0a Rocprofiler changes for rocm-3.7.0 release (#18599)
* rocprofiler changes for rocm-3.7.0 release

* fix flake8 errors
2020-09-09 21:43:07 -05:00
Brian Van Essen
87dc324f36 Support older cuda arch capabilties. (#18597) 2020-09-09 21:42:34 -05:00
ketsubouchi
b014ffcd3d darshan-util: remove return(-1) from void function (#18504)
* darshan-util: remove return(-1) from void function

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-09 21:03:59 -05:00
psakievich
7b2c59e6cf Fix typo in nalu-wind package (#18596) 2020-09-09 19:12:14 -05:00
Paul
9eac1ed6a8 Support external find for gpgme. (#18594) 2020-09-09 17:39:33 -05:00
Christoph Junghans
691e46c4f5 Packages/gamess ri mp2 mini app (#18595)
* gamess-ri-mp2-miniapp: initial import

* flake8

* Update var/spack/repos/builtin/packages/gamess-ri-mp2-miniapp/package.py

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-09 16:10:59 -06:00
Glenn Johnson
f1652e89af Add new versions of intel-mkl (#18592) 2020-09-09 15:27:36 -05:00
arjun-raj-kuppala
9c8cfcca0f Adding hipify-clang and aomp recipe for rocm (#18333)
* Adding aomp recipe for rocm 3.5.0 release

* hipify-clang rocm recipe

* incorporated suggested changes on PR#18333 for rocm aomp recipe

* remove binutils dependency and update to devicelibs tar path
2020-09-09 13:47:51 -05:00
Jen Herting
857530c5ae [parallel] added version 20200822 (#18591) 2020-09-09 10:58:07 -07:00
Robert Brunner
1ae50f8022 Added specific "@master" version specifier for component libraries when building (#18579)
the develop version of SCR
2020-09-09 12:52:36 -05:00
Jen Herting
f7d1f845f4 [py-thinc] fixed checksum (#18571) 2020-09-09 11:25:06 -05:00
Rémi Lacroix
fa04ad5d92 tcl module files: fix configuration overriding (#18514)
This is a special case of overriding since each section is being matched with the current spec.

The trailing ':' for sections with override is now removed when parsing the configuration so the special handling for the modules configuration stopped working but it went unnoticed.
2020-09-09 18:05:58 +02:00
Garth N. Wells
3dedd2e321 (py-)fenics-dolfinx: fix dependencies (#18586)
* Fix (py-)fenics-dolfinx dependencies

* flake8 updates
2020-09-09 10:55:06 -05:00
Ganesh Kumar
4c5151327f Rocm 3.7 rccl (#18587)
* ROCm 3.5 miopen recipe

* fixing flake8 issues

* cmake variant fix

* min support fix

* variant possible values

* ROCm 3.7 RCCL changes
2020-09-09 10:49:40 -05:00
Ganesh Kumar
a18700a86a Rocm 3.7 rocm smi (#18522)
* ROCm 3.5 miopen recipe

* fixing flake8 issues

* cmake variant fix

* min support fix

* variant possible values

* ROCm 3.7 support for rocm-smi

* review comments change

* miopen merge conflict resolve

* reverting back from copy_tree to install_tree
2020-09-09 08:22:40 -05:00
Simon Frasch
290b77fe43 spla: Add version 1.1.0 and ROCm support (#18561) 2020-09-09 07:22:53 -05:00
Toyohisa Kameyama
4472914847 audacious: added gettext and iconv dependency. (#18584) 2020-09-09 11:23:01 +02:00
Adam J. Stewart
8494d26c0a nn-c: fix pic flags (#18478) 2020-09-09 10:25:57 +02:00
Adam J. Stewart
ba47a057f0 py-torchvision: add variant to set image backend (#18500) 2020-09-09 10:16:50 +02:00
Adam J. Stewart
96364235e3 readline: fix build with ncurses~termlib (#18524) 2020-09-09 10:12:46 +02:00
Adam J. Stewart
4307b73299 pcre2: fix libs property (#18525) 2020-09-09 10:11:29 +02:00
Hadrien G
d24532f574 acts: added v0.32 and adapt to latest master changes (#18563) 2020-09-09 09:44:44 +02:00
Adam J. Stewart
346d12dc6c Pandas: added v1.1.2 (#18580) 2020-09-09 09:32:56 +02:00
t-nojiri
d11705f9d0 r-ff: support for aarch64 (#18585) 2020-09-09 09:01:51 +02:00
darmac
e3cd3fb9eb Add new package: quartz (#18539) 2020-09-08 21:29:26 -05:00
Martin Aumüller
ab51edecb5 openscenegraph: remove dependency on Qt for newer versions (#18531)
Starting with OpenSceneGraph 3.5.5, support for windows managed by Qt
has been moved to the seperate project osgQt. Hence, a dependency on Qt
is not needed any longer for version 3.5.5 or newer.
In order to still satisfy the dependency on OpenGL, a depends_on('gl')
has been added.
2020-09-08 21:28:27 -05:00
darmac
b1cea5c23e Add new package: kylin (#18537)
Co-authored-by: root <root@localhost.localdomain>
2020-09-08 21:27:01 -05:00
darmac
275ac86925 Add new package: sqlite-jdbc (#18540) 2020-09-08 21:26:11 -05:00
darmac
0f4f4a2e95 Add new package: orientdb (#18542) 2020-09-08 21:21:35 -05:00
darmac
97b7af01d9 Add new package: nacos (#18543) 2020-09-08 21:20:41 -05:00
darmac
0325cb564b Add new package: fastjson (#18545) 2020-09-08 21:17:19 -05:00
darmac
a0ba89d84a Add new package: guacamole-client (#18546) 2020-09-08 21:15:52 -05:00
darmac
a12ced781c Add new package: jansi-native (#18547) 2020-09-08 21:14:49 -05:00
darmac
fe05fc7fd5 Add new package: jline3 (#18548) 2020-09-08 21:14:00 -05:00
darmac
1ac24aca96 refine efivar install flow (#18557) 2020-09-08 21:08:38 -05:00
Jaroslav Hron
e2e90e4d6b Update package.py (#18552)
without setting the build enviroment, the installation fails with

```
1 error found in build log:
     35946    fmtutil [INFO]: /usr/local/pkg/Installs/linux-ubuntu18.04-skylake_avx512/gcc7.4.0/texlive/20190410/rgs2nakycorkgzno/t
              exmf-var/web2c/pdftex/pdfcslatex.fmt installed.
     35947    fmtutil [INFO]: Disabled formats: 6
     35948    fmtutil [INFO]: Successfully rebuilt formats: 45
     35949    fmtutil [INFO]: Total formats: 51
     35950    fmtutil [INFO]: exiting with status 0
     35951    ==> [2020-09-07-21:23:21.482745] '/usr/local/pkg/Installs/linux-ubuntu18.04-skylake_avx512/gcc7.4.0/texlive/20190410/
              rgs2nakycorkgzno/bin/x86_64-linux/mtxrun' '--generate'
  >> 35952    /usr/bin/env: 'texlua': No such file or directory
```

May be there is a better way...
2020-09-08 21:05:18 -05:00
Garth N. Wells
af189e3ed9 Fix linking problem on macos (#18564) 2020-09-08 21:01:21 -05:00
Andrew W Elble
520308ad2b astra: update checksum, add other executables (#18567) 2020-09-08 21:00:27 -05:00
Tom Payerle
7165795c4a libxmms: add python build dependency (#18566) (#18568)
Build of libxmms requires python, but not in spack dependency list.
See  #18566
2020-09-08 20:59:22 -05:00
Michael Kuhn
017331684e go: Add 1.15.1 and 1.14.8 (#18575) 2020-09-08 20:56:08 -05:00
Michael Kuhn
e43855bc8f node-js: Add 14.10.0 and 12.18.3 (#18576) 2020-09-08 20:55:40 -05:00
Michael Kuhn
9c4d79f8cd npm: Add 6.14.8 (#18577) 2020-09-08 20:55:12 -05:00
Adam J. Stewart
2f4d493744 Cython: add setuptools run-dependency (#18572)
Cython requires a library that is available in Python 3.8, or before
Python 3.8 with setuptools. This specifies that setuptools is a run
dependency to allow running with Python < 3.8
2020-09-08 17:27:49 -07:00
Tamara Dahlgren
88749de5c9 Clarify manual download required if unable to fetch package (#18242)
Clarify manual download required if unable to fetch (from mirror(s)); support (and tests) for package-specific download instructions
2020-09-08 17:15:48 -07:00
Tamara Dahlgren
6b30cd18d6 Update cray-libsci homepage and install error (#18581) 2020-09-08 16:22:25 -06:00
Richarda Butler
d721bd8070 commands: update help for spack install --yes-to-all (#18367)
`spack install --yes-to-all` doesn't actually make the build non-interactive,
but that is why people typically use it. This documents that you must also
specify `--no-checksum` for a fully non-interactive build.
2020-09-08 13:18:25 -07:00
Peter Josef Scheibel
ccd65895a6 print out debug information about which specs are applying which constraints 2020-09-08 12:19:02 -07:00
Adam J. Stewart
94e694b19f spack docs: http -> https (#18573) 2020-09-08 20:19:20 +02:00
Michal Sudwoj
7205a75427 Added nvptx variant to rust (#18209)
Co-authored-by: Andrew Gaspar <andrew.gaspar@outlook.com>

Co-authored-by: Andrew Gaspar <andrew.gaspar@outlook.com>
2020-09-08 11:28:59 -05:00
Rémi Lacroix
92bf9493cf Modules: Deduplicate suffixes but don't sort them. (#18351)
* Modules: Deduplicate suffixes but don't sort them.

The suffixes' order is defined by the order in which they appear in the configuration file.

* Modules: Modify tests to use spack_yaml.load_config.

spack_yaml.load_config ensures that the configuration is stored in an ordered manner. Without this change, the behavior of the tests did not match Spack's.

* Modules: Tweak the suffixes test to better catch ordering issues.
2020-09-08 08:43:03 -06:00
Gvozden Neskovic
c2b33b4444 gromacs: add zen2 target SIMD optimizations (#18551)
Co-authored-by: Gvozden Nešković <neskovic@dev06.compeng.uni-frankfurt.de>
2020-09-08 06:52:56 -06:00
Piotr Luszczek
73110b415d hpcc: add explicit C99 flag for older GCC versions (#18556) 2020-09-08 08:30:02 +02:00
Mark W. Krentel
850924e423 hpctoolkit: adjust some dependencies (#18558)
Hpctoolkit master and upcoming releases now want the +pic variant for
two dependencies, libunwind and xz.
2020-09-08 08:27:39 +02:00
Axel Huebl
64273da2cc openPMD-api: added v0.12.0 (#18560) 2020-09-08 08:18:21 +02:00
Massimiliano Culpo
28c6ce9714 SpecList: remove mutable types from __init__ arguments (#18515)
fixes #18439
2020-09-07 11:53:59 -07:00
jthies
dcee0a1d5d phist: added v1.9.1 (#18529) 2020-09-07 17:52:07 +02:00
ketsubouchi
03a808ec2d kim-api: add support for Fujitsu compilers (#18533) 2020-09-07 17:47:55 +02:00
Andre Sailer
138e2ad0a1 [LCIO]: changes to install/CPATH for python bindings (#18512) 2020-09-07 10:16:16 -05:00
darmac
b2b7bcd86a Add new package: kbd (#18436)
* Add new package: kbd

* fix description error
2020-09-07 10:12:47 -05:00
Tim Haines
8b7ca5ef50 capstone: added v4.0.2 (#18534)
This also adds the git branches "master" and "next".
2020-09-07 16:04:23 +02:00
darmac
5e86a131d2 jansi: added new package at v1.18 (#18549) 2020-09-07 16:02:18 +02:00
ketsubouchi
80691fa6d5 gconf: add dependencies (#18406)
* gconf: add dependencies

* gconf: add run type to perl-xml-parser
2020-09-06 22:33:42 -05:00
Andrew W Elble
8ad581e7b3 new package: py-textblob (#18516)
* new package: py-textblob

add variant to py-nltk to allow for data download/installation
add dependencies to py-nltk so that bin/nltk works

* add resources and resource generation script
2020-09-05 11:50:03 -05:00
Satish Balay
b494f50489 petsc4py: repo is migrated from bitbucket to gitlab (#18519) 2020-09-05 10:18:48 -05:00
Massimiliano Culpo
ba257914b3 fujitsu: added new package (#18021)
The package is at the moment not installable, just detectable.

Co-authored-by: Toyohisa Kameyama <kameyama@riken.jp>
2020-09-05 10:40:52 +02:00
Robert Blake
ea57171712 Make spack environment configurations writable from spack external and spack compiler find (#18165)
* spack config: default modification scope can be an environment

The previous model was that environments are the highest priority config
scope for config reading operations, but were not considered for config
writing operations. Now, the active environment is the highest priority
config scope for both reading and writing operations.

Now spack config add, spack external find and spack compiler set environment 
configuration in the environment by default if an environment is active. This is a
change in default behavior for these routines, but better matches the mental
model for an environment taking precedence over the user's default config file.

* add scope argument to 'spack external find' to choose non-default scope

* Increase testing for config modifications on environments

Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-09-05 01:12:26 -07:00
Ganesh Kumar
704fc475e3 ROCm3.5 miopen recipe (#18442)
* ROCm 3.5 miopen recipe

* fixing flake8 issues

* cmake variant fix

* min support fix

* variant possible values
2020-09-04 17:02:33 -05:00
Nick Booher
61ae21ee4d energyplus: add version 9.1 (#18485) 2020-09-04 16:13:53 -05:00
mic84
c5e50b73ef amrex:: new version 20.09 (#18486) 2020-09-04 16:13:20 -05:00
Tom Payerle
2cc7718edd bml: Add build dependency on python (#18489) (#18491)
At some point in the build phase a script
spack-src/scripts/convert-template
has a shebang looking for python in the path.

Currently this picks up system python if in invoker's path, but should
be using python from spack, so add a build dependency on python.
2020-09-04 16:12:53 -05:00
Michael Kuhn
518372ccd1 mariadb-c-client: Add 3.1.9 (#18501) 2020-09-04 16:03:43 -05:00
Michael Kuhn
ca2760381b py-setuptools: Add 50.1.0 and 49.6.0 (#18502) 2020-09-04 16:03:20 -05:00
Michael Kuhn
f836d93da1 rocksdb: Add 6.11.4 (#18503) 2020-09-04 16:01:30 -05:00
Michael Kuhn
f2adf531b3 glib: Add 2.64.5 (#18505) 2020-09-04 16:00:07 -05:00
Michael Kuhn
262edde2c1 libbson, mongo-c-driver: Add 1.17.0 (#18506) 2020-09-04 15:59:43 -05:00
Michael Kuhn
14983401a1 libidn2: Add 2.3.0 (#18507) 2020-09-04 15:59:16 -05:00
Michael Kuhn
972caba882 curl: Add 7.72.0 (#18508) 2020-09-04 15:58:52 -05:00
Michael Kuhn
53bf97298f gettext: Add 0.21 (#18509) 2020-09-04 15:58:30 -05:00
iarspider
0c03248537 Add madgraph 2.8.0; fix recipe (#18510) 2020-09-04 15:58:04 -05:00
Luke Dalessandro
8e41208c65 Build libtinfo.so "--with-versioned-syms" when it is enabled in ncurses. (#18511)
Many system-installed binaries (at least in Debian) are built against a
libtinfo.so that has versioned symbols. If spack builds a version without this
functionality, and it winds up in the user's LD_LIBRARY_PATH via spack load,
system binaries will begin to complain.

```
$ less log.txt
less: /opt/spack/.../libtinfo.so.6: no version information available (required by less)
```

Co-authored-by: Luke D'Alessandro <ldalessa@uw.edu>
2020-09-04 15:54:44 -05:00
Andrew W Elble
f4d3a1a0cb new package: py-markovify (#18517) 2020-09-04 15:46:38 -05:00
t-nojiri
f3c4747318 fermikit: added support for aarch64 (#18480) 2020-09-04 19:52:10 +02:00
Scott Wittenburg
597b43e30a Rely on E4S project variable for SPACK_REPO 2020-09-04 11:18:56 -06:00
Adam J. Stewart
6fcec1dcff Python: default to Python 3.8 (#17798) 2020-09-03 16:15:43 -07:00
Adam J. Stewart
0eca977cc9 py-pillow-simd: fix concretization (#18490) 2020-09-03 15:36:20 -07:00
Adam J. Stewart
7d9f2bf4ed depends_on cannot handle ^ sigil (#18220)
* depends_on cannot handle ^ sigil

* cardioid+mfem+cuda requires hypre+cuda

* Document this limitation

* Move warning message to Known Issues docs

* Better handling of parmetis dep
2020-09-03 17:31:00 -05:00
Adam J. Stewart
7728b0737b Add new MavenPackage build system base class (#18185)
* Add new MavenPackage build system base class

* Fix flake8 and doc tests

* More specific regex

* Java 8 required for these packages
2020-09-03 17:30:39 -05:00
Massimiliano Culpo
fab2622a71 Hashing: force hash consistency for values read from config (#18446)
The 'external_modules' attribute on a Spec, when read from a YAML
configuration file, may contain extra formatting that is lost when
that Spec is written-to/read-from JSON format. This was resulting in
a hashing instability (when the Spec was read back, it would report a
different hash). This commit adds a function which removes the extra
formatting from 'external_modules' as it is passed to the Spec in
__init__ to ensure a consistent hash.
2020-09-03 10:49:36 -07:00
Adam J. Stewart
741bb9bafe install/install_tree: glob support (#18376)
* install/install_tree: glob support

* Add unit tests

* Update existing packages

* Raise error if glob finds no files, document function raises
2020-09-03 10:47:19 -07:00
Adam J. Stewart
098beee295 Pillow-SIMD: use as default PIL provider (#18097)
* Pillow-SIMD: use as default PIL provider

* Fix concretization of pil

* Fix build of older versions of pillow
2020-09-03 10:39:35 -07:00
Michael Kuhn
8c264a9f26 freetype: Add custom headers property (#18440)
freetype's headers are installed in the `freetype2` subdirectory, use a
custom headers property to fix this in dependent packages.
2020-09-03 11:32:41 -05:00
Tamara Dahlgren
84381fbc80 Bugfix: terminate if a spack.yaml include path does not exist (#18074) 2020-09-03 14:37:24 +02:00
t-nojiri
3a562c0cec fermi: added patch to support aarch64 (#18479) 2020-09-03 10:06:15 +02:00
psakievich
7c0b356e79 Add test tolerance variant to nalu-wind pkg (#18455)
* Add test tolerance variant to nalu-wind pkg

* flake8 fixes
2020-09-02 20:31:58 -05:00
Gabriel Rockefeller
ced0a8f068 eospac: add version 6.4.1 (#18476) 2020-09-02 20:28:48 -05:00
Andrew W Elble
879bb063f7 new package: corenlp (#18467)
* new package: corenlp

* import os, not os.path
2020-09-02 20:27:56 -05:00
Robert Blake
638f44d842 CUDA_HOME needs to be set, or CUDA is found based on user's PATH. (#18475) 2020-09-02 19:52:00 -05:00
Harmen Stoppels
6d87cbdb52 Add rocm 3.7.0 libs (#18366)
* Add rocm 3.7.0 libs

* Make 3.7.0-only dependency on numactl explicit

* Add rocm-device-libs dep to rocm-clang-ocl

* Update the cmakelists dir in rocm-debug-agant

* Make rocm-debug-agent work on 3.7.0

* Disable tensile host; following rocm-arch recommendations
2020-09-02 19:50:05 -05:00
Adam J. Stewart
443407cda5 Add new RubyPackage build system base class (#18199)
* Add new RubyPackage build system base class

* Ruby: add spack external find support

* Add build tests for RubyPackage
2020-09-02 16:26:36 -07:00
Chris White
e22a0ca5cf mfem: fix transitive hdf5 static libs (#18457) 2020-09-02 15:06:45 -07:00
Adam J. Stewart
e58db067c3 PythonPackage: update documentation (#18181) 2020-09-02 15:05:10 -07:00
Adam J. Stewart
8eb375bf81 spack test: no gpg signing for git commits (#18454) 2020-09-02 14:48:48 -07:00
Adam J. Stewart
6b20687b26 python: switch to +uuid by default (#18252) 2020-09-02 14:46:58 -07:00
Adam J. Stewart
1992fdf712 Document test dependency type (#18365) 2020-09-02 13:46:52 -07:00
Jose E. Roman
601f97d8a5 New patch release SLEPc 3.13.4 (#18466) 2020-09-02 15:24:07 -05:00
Rémi Lacroix
447ea50bf9 Aria2: Add version 1.35.0. (#18465) 2020-09-02 15:23:40 -05:00
Adam J. Stewart
ba317b01c3 Packages: headers should be lists (#18445) 2020-09-02 13:19:22 -07:00
Nick Booher
0116c44714 ldak: new package at 5.1 (#18431)
* ldak: new package at 5.1

* flake8

* Re-run tests

* Apply suggestions from code review

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-02 11:29:40 -05:00
Auriane R
24843844ae Add HPX 1.5.0 release and update the homepage (#18464) 2020-09-02 10:34:05 -05:00
Sinan
e5fdb2a46c new package: py-python-fmask (#18382)
* new package: py-python-fmask

* flake8

* add missing dependency

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@earth>
2020-09-02 10:29:02 -05:00
Sinan
712e7bd2bf new package: py-gitdb (#18386)
* new package: py-gitdb

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

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

* Update package.py

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-02 10:28:33 -05:00
Jordan Moxon
aa8e046073 Add blaze versions 3.6-3.8 (#18424) 2020-09-02 10:15:38 -05:00
darmac
f268f65733 Add new package: rasdaemon (#18434) 2020-09-02 10:08:34 -05:00
Gvozden Neskovic
1e05321c8f gromacs: add support for opencl build (#18461)
Co-authored-by: Gvozden Nešković <neskovic@dev06.compeng.uni-frankfurt.de>
2020-09-02 09:07:43 -06:00
Seth R. Johnson
d904c57d2b Flibcpp: update version (#18448)
Update available versions and add Fortran check
2020-09-02 11:07:10 -04:00
Paul
1b78a010d8 Updated Hugo package. (#18443)
* Set GOPATH in build environment to avoid creating files in the user's
default GOPATH (e.g. ~/go).
* Support for external find.
* Added latest releease 0.74.3.
2020-09-02 10:03:56 -05:00
ketsubouchi
1026ace6b6 r-boot: checksum mismatch @1.3-23 (#18458) 2020-09-02 10:00:12 -05:00
Weston Ortiz
bf2ded5269 Add gdb TUI variant (#18459) 2020-09-02 09:59:19 -05:00
Mark Olesen
5c94827201 scotch: update to 6.0.10 (released 31-AUG-2020) (#18462)
- added gitlab location, updated the homepage location

Co-authored-by: Mark Olesen <Mark.Olesen@esi-group.com>
2020-09-02 09:57:48 -05:00
Seth R. Johnson
9e51b8d165 New package: ForTrilinos (#18456)
Remove prior built-in Trilinos subrepository.

Added a Trilinos conflict discovered while documenting ForTrilinos:
```
   ***
   *** ERROR: Setting Trilinos_ENABLE_SEACASExodus=OFF which was 'ON' because SEACASExodus has a required library dependence on disabled TPL Netcdf!
   ***
```
2020-09-02 08:14:20 -04:00
Rui Xue
d9b945f663 Mac OS: support Python >= 3.8 by using fork-based multiprocessing (#18124)
As detailed in https://bugs.python.org/issue33725, starting new
processes with 'fork' on Mac OS is not guaranteed to work in general.
As of Python 3.8 the default process spawning mechanism was changed
to avoid this issue.

Spack depends on the fork-based method to preserve file descriptors
transparently, to preserve global state, and to avoid pickling some
objects. An effort is underway to remove dependence on fork-based
process spawning (see #18205). In the meantime, this allows Spack to
run with Python 3.8 on Mac OS by explicitly choosing to use 'fork'.

Co-authored-by: Peter Josef Scheibel <scheibel1@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2020-09-02 00:15:39 -07:00
Axel Huebl
0740a4ac7e ADIOS: Fix no-MPI Build (#18453)
Do not apply this patch in no-MPI builds. I think this autotools
check logic is generally borked, this will just set it manually to
on/off now.
2020-09-01 18:17:51 -07:00
Adam J. Stewart
17f7b23783 Deprecate spack setup (#18240) 2020-09-01 18:07:48 -07:00
t-nojiri
ae3f3887a6 ccs-qcd: Change compile option for aarch64 (#17516)
* ccs-qcd: Change compile option for aarch64
2020-09-01 18:03:47 -07:00
Patrick Gartung
ae44a8ff64 test/relocate.py: skip tests involving patchelf on macOS (#18451) 2020-09-01 14:49:05 -05:00
Rao Garimella
ea97b37f60 Jali: Fix bugs in CMake section (#18447)
Fix variant name and cmake variable.

Co-authored-by: Rao Garimella <rao@abyzou.lanl.gov>
2020-09-01 15:18:24 -04:00
Jen Herting
e7f1eeb7af Update dependencies: py-torch-geometric (#18265)
* [py-torch-geometric] depends on py-torch-sparse

* [py-torch-geometric] setting TORCH_CUDA_ARCH_LIST

* [py-torch-geometric] added the rest of the dependencies

* [py-torch-geometric] added cuda variant and added more build env vars

* [py-torch-geometric] added variant info for depenedencies

* [py-torch-geometric] flake8

* [py-torch-geometric] add variant description
2020-09-01 13:44:12 -05:00
darmac
f9a330ae99 Add new package: efivar (#18392) 2020-09-01 10:09:59 -05:00
Nikolay Simakov
12078382b6 Added HPC Challenge Benchmark (#18323)
* HPCC Benchmark: added HPC Challenge (HPCC) benchmark

* HPCC Benchmark: modified error message on lack of fftw2 interface in MKL

* hpcc: fixed styling add one more installation example

* hpcc: styling fix

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

* hpcc: changed include and lib location setter

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

* hpcc: fixed styling add one more installation example

* hpcc: removed readme.md

* hpcc: develop repo now is in github

* hpcc: march arguments are set explicitly in case of intel compilers, added -restrict flag, which needed for older intel compilers (at least <=19.0.5.281)

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-01 09:59:06 -05:00
ketsubouchi
3a5746c6c7 orbit2: new package at v2.14.19 (#18405) 2020-09-01 13:11:55 +02:00
darmac
3701633937 fuse-overlayfs: added new package at v1.1.2 (#18435) 2020-09-01 08:28:27 +02:00
Joseph Wang
ebeb8fb8df ocaml: allow v4.08 and v4.09 to build with gcc10 (#18254)
fixes #18228.  

This patch doesn't cover all old versions but it allows packages like whizard to build.
2020-09-01 05:53:13 +02:00
Sinan
1c67a304c8 py-tpot: added new package at v0.11.5 (#18385)
Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@earth>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-09-01 05:51:23 +02:00
Xavier Delaruelle
efff025787 environment-modules: added v4.5.3 (#18425) 2020-09-01 05:46:13 +02:00
Brian Van Essen
28ef5c0e27 dihydrogen, hydrogen: dependency on CUB is conditional on CUDA version (#18427)
In CUDA 11, CUB is integrated into the CUDA library.
2020-09-01 05:42:21 +02:00
Tim Haines
7926f84022 elfutils: add support for debuginfod (#18227) 2020-09-01 05:35:18 +02:00
Jeffrey Salmond
9b6c2e80fe py-llvmlite: added v0.34 (#18432) 2020-09-01 05:33:27 +02:00
Toyohisa Kameyama
b2d2bb694e openfoam: delete print to screen and updated docstrings/comments (#17985) 2020-09-01 05:31:49 +02:00
darmac
49b47864e9 libpam: added new package at v1.0.9 (#18418) 2020-09-01 05:19:48 +02:00
MichaelLaufer
16e3e28cc8 new package: wrf (#18398)
* wrf: new package

* wrf: fix install dir

* wrf: ndown location

* Add more compiler and nesting options to wrf package

* Fix configure that didn't find pgf90, use tempfile and compile in parallel

* WRF v4.2 with parallel I/O support through pnetcdf

Signed-off-by: michael laufer <michael.laufer@toganetworks.com>

* extend Package, compiler wrapper now used, small fixes

Signed-off-by: michael laufer <michael.laufer@toganetworks.com>

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

fixed typo

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

Co-authored-by: Levi Baber <baberlevi@gmail.com>
Co-authored-by: eXact lab <info@exact-lab.it>
Co-authored-by: michael laufer <michael.laufer@toganetworks.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-31 20:38:36 -05:00
Howard Pritchard
712d80955b OPENMPI: add 4.0.5 (#18332)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2020-08-31 20:38:06 -05:00
Julien Loiseau
2d718b56ca Update package.py (#18426)
Correct boost version to match flecsi
2020-08-31 17:09:39 -06:00
Sinan
e7447f266a new package: py-update-checker (#18396)
* new package: py-update-checker

* add test deps

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

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

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

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

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

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

* remove lint stuff.

Co-authored-by: Sinan81 <Sinan81@earth>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-31 15:50:21 -05:00
Jen Herting
bc93632c06 New package: py-torch-sparse (#18270)
* [py-torch-sparse] created template

* [py-torch-sparse] added dependencies

* [py-torch-sparse] extends py-torch-scatter

* [py-torch-sparse] added variant cuda and setting env vars

* [py-torch-sparse] added homepage and description. removed fixmes

* [py-torch-sparse] flake8

* [py-torch-sparse] added variant description

* [py-torch-sparse] extends -> depends on

* [py-torch-sparse] added dependencies of py-setuptools and py-pytest-runner
2020-08-31 15:43:30 -05:00
Harmen Stoppels
7c9fe7bcbd Add more cmake patch versions (#18422) 2020-08-31 10:52:18 -05:00
ketsubouchi
fc251e62d1 new package: dbus-glib (#18400) 2020-08-31 10:52:01 -05:00
darmac
3287050226 Add new package: dosfstools (#18410) 2020-08-31 10:49:50 -05:00
darmac
0d08071e95 Add new package: tesseract (#18411) 2020-08-31 10:49:05 -05:00
darmac
b2e1036316 Add new package: fipscheck (#18412) 2020-08-31 10:48:34 -05:00
darmac
1d54eb3fee Add new package: libfuse (#18413) 2020-08-31 10:48:10 -05:00
darmac
7ba20239fb Add new package: hardlink (#18414) 2020-08-31 10:47:46 -05:00
darmac
b8bf34b348 Add new package: libhbaapi (#18415) 2020-08-31 10:47:14 -05:00
darmac
ecc7f19177 Add new package: jimtcl (#18416) 2020-08-31 10:46:48 -05:00
Xavier Delaruelle
7036f41ea5 environment-modules: fix version 4.5.2 install (#18421)
`configure` script of Modules 4.5.2 is a bit too strict and breaks when
special options like `--disable-dependency-tracking` are set. This issue
will be fixed on Modules project starting version 4.5.3
(cea-hpc/modules#354).

This change adapts `configure` options set when installing version 4.5.2
to avoid options unrecognized on this version.

Fix #18420
2020-08-31 10:43:31 -05:00
Toyohisa Kameyama
97f7378097 neovim: build on aarch64 (#18136)
* libvterm: renumber version and add 1.0.3
neovim: build on aarrch64

* Remove unneeded comment.

* libvterm:   newer bazaar snapshot version is set to version 0.0.
neovim: change for libvterm version change, and libtermkey version bug is fixed.

* update libvterm versions.
2020-08-31 10:31:41 -05:00
darmac
c4e966f162 Add new package: byte-unixbench (#18257)
* Add new package: byte-unixbench

* refine install flow

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-31 10:28:53 -05:00
t-nojiri
b0a1a7e9aa cp2k: Add depend on libxc@4.3.4. (#18346)
* cp2k: Add depend on libxc@4.3.4.

* cp2k: The fix of depend of libxc@4.3.4 was redone.
2020-08-31 10:27:23 -05:00
Jen Herting
122a4719ca New packages: py-torch-cluster (#18262)
* [py-torch-cluster] created template

* [py-torch-cluster] added dependencies

* [py-torch-cluster] setting TORCH_CUDA_ARCH_LIST

* [py-torch-cluster] limited extends

* [py-torch-cluster] depends on scipy

* [py-torch-cluster] added variant cuda and set env vars

* [py-torch-cluster] added homepage and description. removed fixmes

* [py-torch-cluster] flake8

* [py-torch-cluster] switched to depends_on from extends.

* [py-torch-cluster] added variant description

* [py-torch-cluster] added py-setuptools and py-pytest-runner as dependencies
2020-08-31 10:11:53 -05:00
Jen Herting
f659927938 New package: py-torch-scatter (#18263)
* [py-torch-scatter] created template

* [py-torch-scatter] listed specific version of python

* [py-torch-scatter] extends py-torch

* [py-torch-scatter] setting TORCH_CUDA_ARCH_LIST

* [py-torch-scatter] setting more environemnt variables and added variant cuda

* [py-torch-scatter] added homepage and description. removed fixmes

* [py-torch-scatter] flake8

* [py-torch-scatter] Added variant description

* [py-torch-scatter] extends -> depends_on

* [py-torch-scatter] added dependencies of setup tools and pytest-runner
2020-08-31 10:11:00 -05:00
Jen Herting
47ef8d9deb New package: py-torch-spline-conv (#18273)
* [py-torch-spline-conv] created template

* [py-torch-spline-conv] specified version of python

* [py-torch-spline-conv] extends py-torch-cluster

* [py-torch-spline-conv] setting TORCH_CUDA_ARCH_LIST

* [py-torch-spline-conv] limiting extension to py-torch

* [py-torch-spline-conv] added cuda variant and setting env vars

* [py-torch-spline-conv] added homepage and description. removed fixmes

* [py-torch-spline-conv] added variant cuda

* [py-torch-spline-conv] flake8

* [py-torch-spline-conv] added variant description

* [py-torch-spline-conv] extends -> depends_on

* [py-torch-spline-conv] added dependencies py-setuptools and py-pytorch-runner
2020-08-31 10:10:21 -05:00
Adam J. Stewart
f4a37b2dc2 Remove unmatched triple quotes (#18272) 2020-08-31 13:05:07 +02:00
Weston Ortiz
86eac24f36 trilinos: added v13.0.0 and PYTHONPATH for exodus.py (#18266) 2020-08-31 12:56:37 +02:00
Dr. Christian Tacke
18fde34d38 singularity: added v3.6.2 (#18353) 2020-08-31 12:21:08 +02:00
Dr. Christian Tacke
c07204d661 glew: added v2.1.0 (#18394) 2020-08-31 11:48:46 +02:00
srekolam
d73db33005 atmi,rocgdb,rocm-dbgapi changes for rocm3.7 (#18404) 2020-08-31 11:36:38 +02:00
ketsubouchi
06ad858be2 libidl: added new package at v0.8.14 (#18403) 2020-08-31 11:34:11 +02:00
Sinan
3a0d273dae py-py6s: added new package at v1.8.0 (#18407)
Co-authored-by: Sinan81 <Sinan81@earth>
2020-08-31 11:30:22 +02:00
h-denpo
55f490b093 lesstif: added dependency on 'libxext' (#18408) 2020-08-31 11:12:48 +02:00
darmac
1fdaffed3f minizip: support minizip and miniunz building (#17925)
* minizip: support minizip and miniunz building

* minizip: remove comment

* refine build flow
2020-08-30 22:22:48 -05:00
Toyohisa Kameyama
7f9018e893 lua-luajit: remove duplicated lua-jit and merge to lua-luajit. (#18348) 2020-08-30 19:16:53 -05:00
Sinan
665e5ce0fd new package: py-planet (#18377)
* new package: py-planet

* flake8

* specify checksum type

* improve dependency specs

* specify dependency

* add test dependencies

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@earth>
2020-08-30 10:45:17 -05:00
Sinan
06b551f98e new package: py-deap (#18378)
* new package: py-deap

* flake8

* fix sha sum

* add missing dependency

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@earth>
2020-08-30 10:44:43 -05:00
Sinan
855e77036e new package: py-pypeg2 (#18379)
* new package: py-pypeg2

* add missing dependency

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@earth>
2020-08-30 10:44:21 -05:00
Sinan
a43dc51551 new package: py-pysolar (#18380)
* new package: py-pysolar

* latest version depends on python@3, flake8

* add missing dependencies

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Sinan81 <Sinan81@earth>
2020-08-30 10:43:54 -05:00
Sinan
376d6119ce new package: py-rios (#18381)
* new package: py-rios

* flake8

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

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

Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-30 10:43:26 -05:00
Sinan
fc6cf29f0f new package: py-ssmap (#18383)
Co-authored-by: sbulut <sbulut@3vgeomatics.com>
2020-08-29 15:50:59 -05:00
Sinan
884e707810 new package: py-stopit (#18384)
Co-authored-by: sbulut <sbulut@3vgeomatics.com>
2020-08-29 15:50:07 -05:00
vvolkl
a475ef20dd [heppdt] fix broken url (#18388) 2020-08-29 15:43:27 -05:00
darmac
89df727e5f Add new pacakge: termcap (#18389) 2020-08-29 15:42:51 -05:00
darmac
e9ea8d1e81 Add new package: wrk (#18390) 2020-08-29 15:42:19 -05:00
darmac
66e006608a Add new package: cgdcbxd (#18391) 2020-08-29 15:41:52 -05:00
Wouter Deconinck
49df20f1ef [libdrm] AutotoolsPackage; %gcc@10.0.0 requires CFLAGS=-fcommon (#18393)
* [libdrm] AutotoolsPackage; %gcc@10.0.0 requires CFLAGS=-fcommon

* [libdrm] placate flake8
2020-08-29 15:39:02 -05:00
darmac
586fbe05b5 Bcache (#18103)
* bcache:add pkg-config to find blkid.h in linux-utils

* bcache: fix libuuid race condition in pkgconfig
2020-08-29 11:54:46 -05:00
darmac
b4042f23d0 Add new package: re2 (#18302)
* Add new package: re2

* re2: refine versions
2020-08-29 11:53:29 -05:00
darmac
cf170b5ff1 Add new package: varnish-cache (#18258)
* Add new package: varnish-cache

* Add dependency: python
2020-08-29 11:52:09 -05:00
darmac
8b212c7845 Add new package: leptonica (#18306)
* Add new package: leptonica

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-29 11:51:41 -05:00
Christoph Junghans
2204ba18b5 flexiblas: initial add (#18364)
* flexiblas: initial add

* Update package.py
2020-08-29 09:48:48 -06:00
darmac
e58c7af1a3 Add new package: weighttp (#18255) 2020-08-28 23:12:56 -05:00
darmac
e19f971b7b Add new package: librdkafka (#18256) 2020-08-28 23:12:32 -05:00
srekolam
6739908144 mathlibs- rocrand recipe for amd rocm-3.5.0 release (#18283)
* mathlibs- rocrand recipe for amd rocm-3.5.0 release

* fixing review comments
2020-08-28 23:11:46 -05:00
Andrew W Elble
4b649b2d2b py-spacy: new version 2.3.2 (#18294)
* py-spacy: new version 2.3.2

update en-core-web-sm to @2.3.1
add en-vectors-web-lg@2.3.0

* update deps

* wasabi

Co-authored-by: Andrew Elble <aweits@localhost.localdomain>
2020-08-28 23:11:13 -05:00
Andrew W Elble
d08d0f2732 new package: qcachegrind@20.08.0 (#18295)
Co-authored-by: Andrew Elble <aweits@localhost.localdomain>
2020-08-28 23:10:58 -05:00
darmac
654f52bc08 Add new package: rinetd (#18303) 2020-08-28 23:06:04 -05:00
darmac
a206d2aebd Add new package: rsyslog (#18304) 2020-08-28 23:05:30 -05:00
darmac
50d7467715 Add new package: tengine (#18305) 2020-08-28 23:04:48 -05:00
darmac
e09d906a35 Add new package: fastdb (#18308) 2020-08-28 23:03:30 -05:00
vvolkl
62128f1351 [whizard] update ocaml dependency (#18309)
up
2020-08-28 23:02:45 -05:00
darmac
2c155d4fe2 Add new package: sysbench (#18310) 2020-08-28 23:02:11 -05:00
darmac
d5da8e7543 Add new package: foundationdb (#18312) 2020-08-28 22:59:28 -05:00
darmac
eaf843c3e8 Add new package: pflask (#18313) 2020-08-28 22:58:54 -05:00
darmac
a1230d1910 Add new package: shc (#18314) 2020-08-28 22:58:29 -05:00
darmac
b799b983bb Add new package: vsftpd (#18317) 2020-08-28 22:55:44 -05:00
darmac
0eeed1f7f7 Add new package: iniparser (#18318) 2020-08-28 22:53:57 -05:00
darmac
c85dc3a5b4 Add new package: fcgi (#18320) 2020-08-28 22:51:03 -05:00
darmac
6113be0919 Add new package: faust (#18321) 2020-08-28 22:50:05 -05:00
Kelly (KT) Thompson
48bfffd32c [new version] Draco package (#18336)
* Update version for package Draco

+ Add support for `draco-7.7.0`.
  + Introduces new `+cuda` variant.  This variant is only allowed in version
    `7.7.0:`.
  + Restrict `random123` to compatible versions.
  + Restrict `libquo` to compatible versions.
  + Moving forward, require `python@3:`
  + Moving forward, the ``+superlu_dist` variant is not longer supported.
+ Improve printed output for `--test` mode by adding `ctest` option
  `--output-on-failure`
+ Provide a patch to support for IBM Spectrum-MPI in version `7.7.0:`
+ Provide a patch to allow variant `~cuda` to actually disable GPU portions of
  the code when a GPU is discovered on the local system.

* Remove unnecessary function decoration.
2020-08-28 22:42:15 -05:00
Chris Richardson
25021ec228 Add setuptools as a direct dependency (#18324) 2020-08-28 16:24:43 -05:00
Gabriel Rockefeller
8a408a6571 eospac: add versions 6.4.1alpha.2 and 6.4.1beta (#18329) 2020-08-28 16:23:30 -05:00
Rémi Lacroix
b27cd9d75d NetCDF-Fortran: Add version 4.5.3. (#18350) 2020-08-28 16:22:42 -05:00
Robert Blake
eb8ff0bc81 Adding externals for bison and flex (#18358)
* Adding externals for bison and flex

Added because bison actually pulls in a ton of stuff.

* Need to escape parentheses.

* Need to add re package.

* Adding re package.
2020-08-28 16:22:28 -05:00
Robert Blake
aca370a3a2 External recognition for find. (#18360)
* External recognition for find.

* Adding re package.
2020-08-28 16:22:05 -05:00
Robert Blake
c9fd2983dc texinfo: Adding external support (#18362)
* texinfo: Adding external support for texinfo.

* Adding re package.
2020-08-28 16:21:51 -05:00
Dr. Christian Tacke
65fda72d7c davix: Improve shared library building on macOS (#18352)
Add -DCMAKE_MACOSX_RPATH=ON to cmake.
2020-08-28 16:13:53 -05:00
Keita Iwabuchi
9525c530d5 Add Metall v0.3 (#18340)
* Metall: add version 0.2

* Add Metall v0.3
2020-08-28 14:42:02 -05:00
Jonathan R. Madsen
0bf696a29d Timemory: Fix python dependencies + NCCL (#18342)
* Fix python dependencies + NCCL

* Removed trailing whitespace
2020-08-28 14:40:34 -05:00
Dr. Christian Tacke
6bb2dd40b6 fairlogger: Update cmake options and version (#18354)
* Add version 1.7.0 and 1.8.0
* Better support for boost < 1.70
* No color in output
2020-08-28 14:31:09 -05:00
Nikolay Simakov
9b654fe60c namd: added patching charmrun location, as it stored in prefix.bin (#18355) 2020-08-28 14:29:53 -05:00
Robert Blake
6ceb3d4be0 spectrum-mpi: external support, compiler detection (#18055)
* spectrum-mpi: adding external support.

* Package is tested, works on LLNL lassen

* Spectrum external now detects the correct compiler

* Changing code to not output all compilers

Done per becker33's request on #18055
2020-08-28 11:53:27 -07:00
eugeneswalker
9befc43708 binutils: add build dep: diffutils (provides cmp) (#18361) 2020-08-28 11:31:43 -07:00
Rémi Lacroix
b006123331 Add new package: AutoDock-GPU. (#17808)
The project currently only has a develop branch and no versioned releases so only provide a git-based "develop" version.
2020-08-28 11:02:52 -05:00
ketsubouchi
1d0650b2cb looptools: skip UNDERSCORE check and add -Fwide (#18135) 2020-08-28 10:03:38 -05:00
ketsubouchi
abffcefadd genometools: use signed char for %fj (#18126)
* genometools: use signed char for %fj

* genometools: update patch to use int

* use int
2020-08-28 10:02:42 -05:00
ketsubouchi
7dd58c7ed0 ghostscript: patched sources to allow building with Fujitsu compilers (#18345) 2020-08-28 11:52:11 +02:00
ajw1980
1251919318 Add type=link for libxml2 and libxslt for py-lxml (#18293) and add version 4.5.2 (#18325)
Co-authored-by: Andy Wettstein <andy.wettstein@xrtrading.com>
2020-08-27 15:03:23 -05:00
Greg Becker
d10dff1b89 docs: add main version to docs for develop-like versions (#18328) 2020-08-27 12:35:11 -07:00
Hector
9f5d0c0007 Fix Zoltan installation with gcc 10.2.0 (#18301) 2020-08-27 20:57:53 +02:00
Andrew W Elble
77a28b81ac thrift: add missing py-six dependency (#18285)
* thrift: add missing py-six dependency

* add more missing dependencies (+extras)

* small fix

* gssapi variant / setuptools run dep

Co-authored-by: Andrew Elble <aweits@localhost.localdomain>
2020-08-27 13:24:42 -05:00
psakievich
ccae9cff3a Add nalu-wind test structure (#13640)
- Add custom function to checkout submoudles if testing is enabled
2020-08-27 12:09:56 -05:00
Chen Wang
680c1b339a New version: Recorder 2.1.5 (#18327) 2020-08-27 11:55:04 -05:00
darmac
a81106757d Add new package: libmnl (#18316) 2020-08-27 16:05:21 +02:00
Itaru Kitayama
1746799087 CUDA Toolkit: added v11.0.2 for Arm (#17845)
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
2020-08-27 14:56:18 +02:00
Chen Wang
9fc6bdabef Add a new package: Recorder (#18297)
* Add a new package: Recorder

* Delete all FIXMEs

* Update package.py

* Remove extra spaces.
2020-08-27 07:47:21 -05:00
Simon Pintarelli
22329c4f92 sirius, q-e-sirius (#18286)
* sirius: fix bug in shared spec

make +shared the default

* q-e-sirius: depend on sirius+shared, fix gcc@10

- add missing whitespace in -fallow-argument-mismatch.
- require sirius+shared
2020-08-27 07:45:55 -05:00
Adam J. Stewart
7fd8f74c23 SLOCCount: add new package (#18271) 2020-08-27 14:39:46 +02:00
Seth R. Johnson
ba470137c8 nlohmann-json: added v3.9.1 and v3.8.0 (#18287)
Also use 'define' helper function.
2020-08-27 14:31:00 +02:00
Axel Huebl
a6c0b7ab3a CMake: Update GCC on macOS Conflict message (#18253)
* CMake 3.18.0+: Builds with GCC on macOS

The latest release of CMake updates libuv, which fixes ObjC code
usage on macOS. Passing ObjC code to non apple-clang compilers
crashed the build before.

Refs.:
- https://gitlab.kitware.com/cmake/cmake/-/issues/20620
- https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4687

* CMake: Further issues GCC+macOS

There are further issues to fix before this will work.
https://gitlab.kitware.com/cmake/cmake/-/issues/21135
2020-08-27 08:51:00 +02:00
Richarda Butler
416afa0059 docs: fix bugs in contribution, getting started guides (#18216)
Co-authored-by: Greg Becker <becker33@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-27 08:23:26 +02:00
darmac
5d3ad70e0a Add new package: sysget (#18259) 2020-08-26 21:11:40 -05:00
Weston Ortiz
1a17921fa5 Add new package: sparse (#18264)
* Add new package: sparse

* flake8 fixes
2020-08-26 21:02:16 -05:00
Tom Payerle
273a158f1b dbus: Add libsm dependency (fix for issue #18267) (#18268)
dbus has a dependency on libSM which was not being declared (and would
normally be satisfied by using system libraries).
2020-08-26 20:57:54 -05:00
Tim Haines
1536691bc9 caliper: Remove support for deprecated Dyninst versions (#18275) 2020-08-26 20:51:00 -05:00
darmac
080625c3af Jpegoptim (#18279)
* Add new package: jpegoptim

* refine homepage
2020-08-26 20:49:34 -05:00
arjun-raj-kuppala
24f2850cab update to rocm hip,hsa-rocr-dev,rocm-dbgapi (#18280)
* update to rocm hip,hsa-rocr-dev,rocm-dbgapi

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

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2020-08-26 20:47:55 -05:00
darmac
b93e65065a Add new package: libestr (#18281) 2020-08-26 20:45:51 -05:00
darmac
369e691ec2 Add new package: libfastjson (#18282) 2020-08-26 20:45:27 -05:00
Satish Balay
67e72bf1f5 sowing: update to version 1.1.26-p1 (#18298) 2020-08-26 20:17:05 -05:00
Seth R. Johnson
81bb372d75 Trilinos: Require parallel HDF5 when +hdf5+mpi (#17606)
EpetraExt requires parallel IO. It does after all make sense to require
the parallel version of HDF5 when building a parallel solver library.
2020-08-26 14:54:05 -05:00
Seth R. Johnson
26bab9d4d6 Fix build when +stratimikos +xpetra (#17971)
If Thyra isn't explicitly enabled at the package level, trilinos fails
to build.

```
/var/folders/gy/mrg1ffts2h945qj9k29s1l1dvvmbqb/T/s3j/spack-stage/spack-stage-trilinos-12.18.1-vfmemkls4ncta6qoptm5s7bcmrxnjhnd/spack-src/packages/muelu/adapters/stratimikos/Thyra_XpetraLinearOp_def.hpp:167:15: error:
      no member named 'ThyraUtils' in namespace 'Xpetra'
      Xpetra::ThyraUtils<Scalar,LocalOrdinal,GlobalOrdinal,Node>::toXpetra(rcpFromRef(X_in), comm);
      ~~~~~~~~^
```
2020-08-26 14:51:57 -05:00
Massimiliano Culpo
96ac5add9d release procedure: add step to activate the documentation on readthedocs (#18288) 2020-08-26 12:47:47 -07:00
ketsubouchi
02dc84a2b3 conduit: added patch to build with Fujitsu compilers (#18284) 2020-08-26 18:55:09 +02:00
eugeneswalker
f7d156af05 binutils: add version 2.35 (#18291) 2020-08-26 11:54:33 -05:00
Adam J. Stewart
20d37afafa TensorFlow: added v2.3.0 (#17736)
* Workaround for Spack-installed proto support

Co-authored-by: Andrew W Elble <aweits@rit.edu>
2020-08-26 14:32:14 +02:00
Veselin Dobrev
ad437bff8f [GnuTLS] Add gnutls-specific headers property. (#7259) 2020-08-25 19:00:49 -05:00
Christoph Junghans
afa907f549 kokkos: add v3.2.00 (#18274) 2020-08-25 15:26:43 -05:00
darmac
878d0b793c Add new package: influxdb (#17909)
* Add new package: influxdb

* put usr/* in prefix
2020-08-25 07:45:30 -05:00
Axel Huebl
11a3ac25ac CCache: added v3.7.11 and support for external detection (#18246) 2020-08-25 14:30:16 +02:00
lpoirel
b562154423 petsc: new version add support for +mumps +int64 (#18170)
* petsc: new version add support for +mumps +int64

The latest petsc release allows using mumps while using 64 bit integers :
https://www.mcs.anl.gov/petsc/documentation/changes/313.html
https://gitlab.com/petsc/petsc/-/merge_requests/2591/

* petsc: use conflicts for mumps dependency
2020-08-25 14:07:59 +02:00
Adam J. Stewart
b305990ee8 pkgconfig: add conflict for PGI (#18236) 2020-08-25 11:33:36 +02:00
Tim Haines
9b07669ab3 libmicrohttpd: added new package at v0.9.71 (#18226) 2020-08-25 10:24:04 +02:00
Adam J. Stewart
df51cf20c5 libtiff: added v4.1.0 (#18247) 2020-08-25 10:00:56 +02:00
Adam J. Stewart
cb322300cb libgeotiff: added v1.6.0 (#18248) 2020-08-25 10:00:39 +02:00
Adam J. Stewart
5aef9f8f83 PROJ: added versions up to v7.1.0 (#18249) 2020-08-25 10:00:18 +02:00
Adam J. Stewart
c6736653cd py-shapely: added v1.7.1 (#18250) 2020-08-25 09:59:36 +02:00
Adam J. Stewart
d4ef804b15 py-cartopy: added v0.18.0 (#18251) 2020-08-25 09:59:12 +02:00
Tim Haines
eebcd6b24f Dyninst: added conflicts for unsupported compilers and platforms (#18245) 2020-08-25 09:56:27 +02:00
Joseph Wang
ac6d7dcdf6 freeglut: added v3.2.1 and patch to build with GCC 10 (#18229) 2020-08-25 09:53:27 +02:00
Elizabeth Fischer
c13bc308db py-basemap: Update for proj@6 (#16183)
* py-basemap

* Updated versions + URL attribute

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

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

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

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

* Removed unnecssary comment

* flake8

Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-24 23:24:56 -05:00
Robert Blake
5e1909c00a mvapich2: Adding external find support. (#18177)
* Adding external support for mvapich2.

This picks up all the options that are currently settable by
the spack package. It also detects the compiler and sets it
appropriately.

* Removing debugging printing.

* Adding changes suggested by @nithintsk
2020-08-24 20:53:42 -05:00
Satish Balay
b885dbcd85 pflotran: requires hdf5+hl (#18224) 2020-08-24 19:13:47 -05:00
Paul
9e7029d806 Added Go 1.15 and find external package. (#18235) 2020-08-24 19:05:48 -05:00
Robert Underwood
6f2f02366a sz: version bump, cmake bug-fix, add maintainer (#18238)
+ Added version 2.1.9
+ Previously the SZ package incorrectly depended on CMake without a
  version dependancy, but actually version 3.13 or newer is required
+ Added myself as a maintainer for the SZ spack package
2020-08-24 19:05:08 -05:00
Benjamin Tovar
d6ca3be63a Update to CCTools 7.1.7 (#18241)
This is a bug release with some new features and bug fixes. Among them:

[Batch] Set number of MPI processes for SLURM. (Ben Tovar)
[General] Use the right signature when overriding gettimeofday. (Tim
Shaffer)
[Resource Monitor] Add context-switch count to final summary. (Ben
Tovar)
[Resource Monitor] Fix kbps to Mbps typo in final summary. (Ben Tovar)
[WorkQueue] Update example apps to python3. (Douglas Thain)
2020-08-24 19:04:08 -05:00
Axel Huebl
a483b0b9dd CMake: 3.18.2 (#18244)
Adds the latest CMake release, which fixes a Spectrum-MPI + CUDA<10.2
issue, among others. Relevant for Summit.
2020-08-24 19:03:11 -05:00
Adam J. Stewart
5ef7d5e792 CUDA: add v10.1.243 for ppc64le (#18237)
Closes #18174 

@smarocchi @ax3l @svenevs 

The error message in #18174 isn't great, but I'm hoping that #18127 will improve that.
2020-08-24 14:50:10 -07:00
Daryl W. Grunau
f5102cd582 call the universal 'mpifc' instead of hardcode 'mpif90' (#18162)
Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2020-08-24 15:44:20 -05:00
Harmen Stoppels
17f7d9f44c openmpi: fix concretization (#18233) 2020-08-24 19:05:39 +02:00
Erik Schnetter
53cfca1f59 simulatioion: Declare dependency on asdf-cxx (#18018)
* simulationio: Declare dependency on asdf-cxx

* Rename "develop" to master"; add descriptions to variants

* Add maintainer
2020-08-24 11:25:43 -05:00
David Gardner
3c866294e1 add github url as backup (#18223) 2020-08-23 16:43:57 -05:00
t-nojiri
b721a2e54b soapdenovo-trans: build on aarch64 (#18187)
* samtools: Add version 0.1.8 for OSS soapdenovo-trans.

* Add depend on zlib and samtools to build on aarch64.

* soapdenovo-trans: Change the condition of depend on zlib and samtools.
2020-08-22 22:11:19 -05:00
David Gardner
a6ca236c26 add tcl 6.8.10 (#18221) 2020-08-22 22:02:57 -05:00
Sergey Kosukhin
b5e78bce06 OpenMPI: sanitize dependent build environment. (#15360) 2020-08-22 22:01:41 -05:00
Sergey Kosukhin
9fdb945383 NetCDF: fix constraints. (#16719) 2020-08-22 16:06:17 -05:00
Teodor Nikolov
dc5176fbae [hpx] Two new variants for upcoming v1.5, stable and master (#18022)
* New package: cxxopts

* Use +unicode instead of unicode=True

- Make the unicode option more explicit

* Add two new variants to spack for upcoming 1.5, stable and develop

* Add as maintainer

* Add depends_on on clauses

* Remove unrelated change
2020-08-22 16:00:11 -05:00
Carson Woods
c743d219aa qthreads: add additional configuration options (#15833)
* Add new config options for qthreads

* Fix syntax error and add option for specifying stack size

* Fix flake8 issues

* Add input validation for the stack size variant and add explicit enable for spawn cache

* Fix flake8 issues with input validation code
2020-08-22 15:58:41 -05:00
Jianwen
e26e532eb3 vifi: a new package. [WIP] (#14287)
* vifi: a new package.

* Fix url.

* Add dependencies.
2020-08-22 15:23:04 -05:00
noguchi-k
15facf2171 ibm-java: add conflicts for aarch64 (#13728) 2020-08-22 15:22:50 -05:00
Ruben Di Battista
f902202b5e Add scantailor package (#12833)
* Add scantailor

* qt: Fix build w/ GCC9 for @4:

* qt: Fix patch filename and qt version

* Fix typo in patch name

* scantailor: Fix version

* scantailor: Use a more-modern fork

* scantailor: Remove unused patch file

Co-authored-by: Ruben Di Battista <ruben.di-battista@polytechnique.edu>
2020-08-22 15:22:37 -05:00
Andreas Baumbach
27b9727926 Add new package arbor (#11914)
* Add new package arbor

Change-Id: I70a442d6ad74979d13bd9f599df238c085d4baf9

* Update package.py

* add additional dependencies

* change download to tar-ball

* py26 compatibility

* restrict noqas and expand comment

Co-authored-by: Eric Müller <mueller@kip.uni-heidelberg.de>
2020-08-22 14:42:46 -05:00
Brian Homerding
2e2c06121a llvm-openmp-ompt: Additional dependencies and adding variant (#11266)
* llvm-openmp-ompt: Additional dependencies and adding variant for disabling building libomptarget

* Flake8 fixes
2020-08-22 14:23:04 -05:00
Levi Baber
d65b9ad195 mark: added new package (#10513)
* mark: Create new package.

* mark: change description.

* mark: change description.

* mark: Delete set_up environment.

* mark: replace join_path(prefix.bin, mark) with prefix.bin.mark

* mark: new license and sha256 hash

Co-authored-by: lingnanyuan <1297162327@qq.com>
2020-08-22 14:01:00 -05:00
George Hartzell
b53b9fd17e Fix redundant reset of terminal in prompt example (#17698)
I know that it's just an example, but I was trying to figure out what was going on and it wasn't making sense....

`tput sgr0` resets the terminal state (http://linuxcommand.org/lc3_adv_tput.php) and I can't see any reason to do it twice.  Deleting the second occurrence doesn't seem to break the fancy prompt effect.
2020-08-22 13:27:39 -05:00
Elizabeth Fischer
8ce5718922 qgis: Updates for proj@6 (#16172)
* qgis

* Update package.py

QGIS 3.12.1 can use PROJ >= 4.9.3.  Therefore both version restrictions on PROJ were incorrect.
https://github.com/qgis/QGIS/blob/final-3_12_1/INSTALL

* Update package.py

Add explanation to (hopefully temporary) removal of hdf5 dependency.

* Remove overly restrictive GRASS version number.

* flake8

Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-08-22 13:22:57 -05:00
Erik Schnetter
488d8ae747 openmpi: Update hwloc version bounds (#18040)
`openmpi @4:` can use `hwloc @2:`.
2020-08-22 13:10:11 -05:00
Greg Becker
3c6544fcbf fix mailmap for becker33 (#18215) 2020-08-22 12:46:48 -05:00
Christoph Junghans
adc98ae409 votca*: add v1.6.2 (#18218) 2020-08-22 11:38:41 -06:00
darmac
74d274f02f Add new package: consul (#18044)
* Add new package: consul

* fix package type

* refine install phase
2020-08-22 10:51:20 -05:00
Richarda Butler
d599e4d9d4 Added the file path for running a specific test (#18214) 2020-08-21 17:42:24 -05:00
srekolam
febc8ccb15 new recipe for rocalution and fix for rocm-smi-lib (#18211) 2020-08-21 13:34:06 -05:00
Jen Herting
512aa40151 [py-numba] added version 0.50.1 (#17880)
* [py-numba] fixing upper limit for conditional dependency

* [py-numba] added version 0.50.1

* [py-numba] Specifying llvmlite version for new version
2020-08-21 12:45:57 -05:00
Jen Herting
c24b838407 [py-llvmlite] new version 0.33.0 (#17878)
* [py-llvmlite] new version 0.33.0

* [py-llvmlite] newer version of python required
2020-08-21 10:54:06 -05:00
g-mathias
d222551185 namd: latest version 2.14 (#18167)
* upgrade to version 2.14; added target architecture optimization

* renamed devel-> (adamjstuart); keep 2.14bx versions

Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-08-21 09:55:53 -05:00
Adam J. Stewart
07fc495c94 py-pandas: added v1.1.1 (#18206) 2020-08-21 08:49:32 +02:00
Ryan Mast
3a1334bc6a helics: Add version 2.6.0 (#18208)
* helics: Add version 2.6.0

* Remove bms version from HELICS package
2020-08-20 22:24:46 -05:00
Jordan Ogas
1666db60d0 charliecloud: add 0.18 (#18200)
* add 0.18, remove older versions

* update url

* fix typo
2020-08-20 20:16:34 -05:00
Michael Kuhn
fc3b4657ce sqlite: Add 3.33.0 (#18145) 2020-08-20 17:17:02 -05:00
g-mathias
880ff1d795 new dakota version 6.12; included boost versions limit; changed default url (#18168)
Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-08-20 17:14:40 -05:00
Michael Kuhn
11b1ce84cf docs: List tar and some compressors in prerequisites (#18169)
Fixes #18152
2020-08-20 17:13:47 -05:00
vvolkl
6b6f6db431 [gaudi] sadly, the cmake fixes are postponed to next version (#18171) 2020-08-20 17:11:45 -05:00
vvolkl
cd06100001 [podio] new version, cxxstd 17 now mandatory (#18191) 2020-08-20 17:06:52 -05:00
Harmen Stoppels
ebe5a5652c Add rocSPARSE, rocSOLVER, hipSPARSE and hipBLAS (#18108) 2020-08-20 14:55:02 -05:00
Greg Becker
ad9cd25285 allow external packages that violate conflicts (#18183) 2020-08-20 10:16:48 -07:00
Massimiliano Culpo
573ce3fe81 gcc: fixed compilation on OpenSUSE (#18190)
Set location for dependencies specifying explicitly both
the include and lib path. This permits to handle cases where
the libraries are installed in lib64 instead of lib.

fixes #17556
fixes #10842
closes #18150
2020-08-20 17:42:18 +02:00
Massimiliano Culpo
1addcff724 Test "is_extension" after a round trip to dict (#18188)
closes #3887
closes #3853
2020-08-20 08:08:49 -07:00
Marc Mengel
d5c3b876e0 detatch binutils usage from bootstrap in gcc variants (#18116) 2020-08-20 17:06:22 +02:00
vvolkl
286c3d6cbc [lcio] set up run time paths (#18109)
* [lcio] set up run time paths

* [lcio] update runtime

* [lcio] flake8
2020-08-20 09:43:59 -05:00
Greg Becker
aa4fc2ac44 codecov: set project threshold to 0.2% (#18184) 2020-08-20 09:43:24 -05:00
Isaac Whitfield
b9adbac5c6 libimobiledevice: new package (#10819) 2020-08-20 11:22:04 +02:00
ketsubouchi
8a02ef4d51 bwa: patch Makefile to permit the use of compilers other than GCC (#18189) 2020-08-20 09:55:05 +02:00
Tim Haines
c786eb46bb dyninst: use elfutils for all versions (#18063) 2020-08-20 08:36:02 +02:00
Elizabeth Fischer
306f3a1232 Make finding of NetCDF and HDF5 more explicit. (#18166)
Co-authored-by: Elizabeth Fischer <elizabeth.fischer@alaska.edu>
2020-08-20 08:34:53 +02:00
Greg Becker
ccf94ded67 Compilers: use Compiler._real_version for flag version checks (#18179)
Compilers can have strange versions, as the version is provided by the user.  We know the real version internally, (by querying the compiler) so expose it as a property and use it in places we don't trust the user.  Eventually we'll refactor this with compilers as dependencies, but this is the best fix we've got for now.

- [x] Make `real_version` a property and cache the version returned by the compiler
- [x] Use `real_version` to make C++ language level flags work
2020-08-19 21:56:06 -07:00
darmac
1650824ef5 Add new package: phoenix (#18143) 2020-08-19 20:33:37 -05:00
darmac
0187884591 qemu: add pkgconfig to avoid build error (#17929) 2020-08-19 20:32:47 -05:00
darmac
d9722e2730 nfs-ganesha: fix compile error on debian (#18102)
* nfs-ganesha: fix compile error on debian

* add type for py-stsci-distutils
2020-08-19 20:32:02 -05:00
darmac
bc2ff81a64 Add new package: presto (#18142) 2020-08-19 20:31:10 -05:00
darmac
472a32fb41 brigand: fix build error (#18173) 2020-08-19 20:30:33 -05:00
eugeneswalker
b5db5cf259 prepend ${NINJA_ROOT}/misc to PYTHONPATH in run environment (#18182) 2020-08-19 15:06:08 -07:00
Tamara Dahlgren
1c0a92662b Restore curl progress output (#18127)
Restores the fetching progress bar sans failure outputs; restores non-debug reporting of using fetch cache for installed packages; and adds a unit test.

* Add status bar check to test and fetch output when already installed
2020-08-19 12:10:18 -07:00
Filippo Spiga
8e8071ffb6 [WIP] Adding Quantum ESPRESSO v6.6 (#18091)
* Adding v6.6 (latest stable)

* There is no '-' in Quantum ESPRESSO

Co-authored-by: Filippo Spiga <fspiga@nvidia.com>
2020-08-19 11:10:54 -05:00
Michael Kuhn
b6321cdfa9 microarchitectures: Fix icelake (#18151)
Some of the feature flags are named differently and clwb is missing on
my i7-1065G7. cascadelake and cannonlake might have similar problems but
I do not have access to those architectures to test.
2020-08-19 11:49:43 +02:00
Pieter Ghysels
2945babdad STRUMPACK: added v4.0.0 (#18159)
- add cuda variant, enabled by default, but conflicting with
  strumpack@:3.9.999
- add zfp variant, enabled by default, but conflicting with
  strumpack@:3.9.999
- update minimum CMake version to 3.11
- for version 4.0.0:, do not use mpi wrappers. v4.0.0 uses CMake
  MPI targets
- for version 4.0.0, add dependency on butterflypack@1.2.0:
- remove versions 3.1.0 and older
- make parmetis variant True by default
- add TODO for slate variant (spack package not ready yet)
2020-08-19 10:15:02 +02:00
Kai Germaschewski
3cbd4c8dcf adios: relax libtool restriction (#18056)
While I believe there must have been a reason to restrict libtool to <=
2.4.2, adios compiles just fine with libtool 2.4.6 for me.

In fact, without this change, I'm getting this error:

libtool: Version mismatch error.  This is libtool 2.4.6, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6

This doesn't make much sense, since spack did build libtool@2.4.2 as a
dependency, and was supposedly trying to use it. My guess is that on
this system (NERSC's cori) the system libtool in /usr/bin, which is
2.4.6 somehow got picked up partially.
2020-08-19 08:49:54 +02:00
Michael Kuhn
fd0d79ecc5 meson: added v0.55.1 (#18146) 2020-08-19 08:32:13 +02:00
Luke Dalessandro
76f3d84a1b libfabric: added v1.10.0, v1.10.1 and v1.11.0. (#18161) 2020-08-19 08:26:22 +02:00
Robert Pavel
bc34ab4701 lua: specified better the dependency on ncurses (needs +termlib) (#18163)
Semi-recently the lua spackage was updated to explicitly add libtinfow
to the lua build line. Ncurses provides this but only when the +termlib
variant is enabled
2020-08-19 08:23:56 +02:00
Massimiliano Culpo
bef560636d intel: added external detection capabilities (#17991) 2020-08-19 08:20:57 +02:00
ketsubouchi
71748a3b7a moab: delete -march=native from generated files (#18137)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-08-19 07:40:40 +02:00
Christoph Junghans
c7096eb537 ninja: add v1.10.1 (#18160) 2020-08-18 14:51:55 -06:00
Greg Becker
08dd826891 emacs: add 27.1 and conflict 26.3 on macos catalina (#18157)
* emacs: add version 27.1

* emacs: 26.3 does not work on macos catalina
2020-08-18 11:26:09 -07:00
Adam J. Stewart
00e9e1b3c7 Java: add spack external find support (#18006) 2020-08-18 20:17:08 +02:00
Massimiliano Culpo
1ed70d0e2c 'spack env update' can handle overrides (#18149)
fixes #18147

Before this commit the command erroneously reported
"Additional properties not allowed" for keys with a
double colon.
2020-08-18 17:05:25 +02:00
Michael Kuhn
319d160ed1 glib: added v2.64.4 (#18144) 2020-08-18 15:15:19 +02:00
Adam J. Stewart
17d96b615a py-accimage: add new package (#18122) 2020-08-18 12:10:18 +02:00
Toyohisa Kameyama
3210d6b64e unibilium: added v2.0.0 (#18132) 2020-08-18 12:03:06 +02:00
Pieter Ghysels
9b65bdeca8 ButterflyPACK: added v1.2.0 (#18133) 2020-08-18 12:02:16 +02:00
Hadrien G
d466e9224f acts: added v0.31 (#18138) 2020-08-18 11:55:45 +02:00
Harmen Stoppels
25d27a38de SpFFT: added v0.9.13 (#18139) 2020-08-18 11:53:27 +02:00
ketsubouchi
71b7b353d8 ocaml: fix building with Fujitsu compilers (#17918) 2020-08-18 11:49:09 +02:00
darmac
060731a824 ape: fix build error and update version (#17952)
* ape: fix build error and update version

* ape: fix 2.3.0 & 2.3.1

* ape: only refine libxc version constraintion

* ape: fix flake8 error
2020-08-17 21:22:53 -05:00
Toyohisa Kameyama
264958fc18 lua-jit: New pacjage. (#18099) 2020-08-17 21:17:08 -05:00
Toyohisa Kameyama
ad8418fbbf libluv: New package. (#18100) 2020-08-17 21:15:11 -05:00
Toyohisa Kameyama
b3535d909e libuc: Add version 1.38.1. (#18104) 2020-08-17 21:07:43 -05:00
Harmen Stoppels
f582ebbaa0 Add master and develop for spfft (#18105) 2020-08-17 21:05:26 -05:00
Hadrien G
97ca824487 Add acts v0.30 (#18106) 2020-08-17 21:04:17 -05:00
Paul
12c4b8a73e Find external package for git-lfs. (#18107) 2020-08-17 21:02:41 -05:00
Levi Baber
6127a6faf6 canu: new version (#18112) 2020-08-17 20:58:50 -05:00
Marc Mengel
fdddbc9ae7 libsm: new version, depends_on libuuid (#18117)
* libsm: new version, depends_on libuuid

* blank lines

Co-authored-by: Marc Mengel <mengel@fnal.gov>
2020-08-17 20:52:26 -05:00
Toyohisa Kameyama
4f624727ef lua-lpeg: Add version 1.0.2-1. (#18128) 2020-08-17 20:51:29 -05:00
Rao Garimella
da1135cd19 Fix typo in CMake options (#18125)
* New interface reconstruction package

* forgot to put in CMake option for Jali

* cleanup whitespace

* fix lines with more than 79 chars

* more long line cleanup

* fix typo WONTON_ENABLE_Kokkos ---> TANGRAM_ENABLE_Kokkos

Co-authored-by: Rao Garimella <rao@abyzou.lanl.gov>
2020-08-17 20:41:04 -05:00
Marc Mengel
3da40a5c61 dependency fix for python3 (#18118)
* dependency fix for python3

* version cleanup

Co-authored-by: Marc Mengel <mengel@fnal.gov>
2020-08-17 16:51:17 -05:00
Nithin Senthil Kumar
9c3b4e4d28 Changes to url port and a bug fix in mvapich2x package (#18096)
Co-authored-by: nithintsk <nithintsk@github.com>
2020-08-17 15:33:26 -05:00
Adam J. Stewart
cc06181ef9 ALSA-lib only works on Linux (#18075) 2020-08-17 15:22:25 -05:00
eugeneswalker
1b965ac507 Binary Distribution: Relocate RPATH on Cray (#18110)
* make_package_relative: relocate rpaths on cray

* relocate_package: relocate rpaths on cray

* platforms: add `binary_formats` property

We need to know which binary formats are supported on a platform so we
know which types of relocations to try. This adds a list of binary
formats to the platform and removes a bunch of special cases from
`binary_distribution.py`.

Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2020-08-17 13:21:36 -07:00
vvolkl
525a9f02ca xrootd: added v5.0.0, updated dependency on root (#18101) 2020-08-17 20:02:45 +02:00
Rao Garimella
1498d076c3 New package Tangram (#17944)
* New interface reconstruction package

* forgot to put in CMake option for Jali

* cleanup whitespace

* fix lines with more than 79 chars

* more long line cleanup

Co-authored-by: Rao Garimella <rao@abyzou.lanl.gov>
2020-08-17 13:00:43 -05:00
Adam J. Stewart
9350ecf046 py-torchvision: fix linking to -lavcodec (#18093) 2020-08-17 11:24:19 -05:00
vvolkl
022586b11d [delphes] align env var with lcg release (#18080) 2020-08-17 09:20:41 -05:00
t-nojiri
a19ac05d3e openmolcas: fix build on aarch64. (#17923) 2020-08-17 11:54:48 +02:00
vvolkl
b51e48732c pythia8: added environment variable (#18081) 2020-08-17 11:51:16 +02:00
Adam J. Stewart
8a8d36d828 hdf+external-xdr does not build on macOS (#18085) 2020-08-17 10:54:30 +02:00
Wouter Deconinck
7618b4e25c cppzmq: added versions up to v4.6.0 (#18087)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-17 10:32:38 +02:00
Harmen Stoppels
207eadc1b2 Add rocBLAS (#18069)
* Add rocBLAS

* Add rocBLAS support to SIRIUS
2020-08-16 19:42:43 -05:00
darmac
f56b521bb5 Add new package: hudi (#18041) 2020-08-16 17:36:03 -05:00
darmac
a9116ac95c Add new package: slf4j (#18042) 2020-08-16 17:35:12 -05:00
darmac
3e7e07f2fd Add new package: h2database (#18046) 2020-08-16 17:33:09 -05:00
darmac
4428f59ad5 kaldi:refine dependency openfst (#18047) 2020-08-16 17:32:23 -05:00
darmac
34b7d99bec Add new package: mahout (#18048) 2020-08-16 17:30:03 -05:00
darmac
06a0fe9d94 util-linux: remove libintl link (#18065) 2020-08-16 17:28:38 -05:00
darmac
bef02e9d89 nfs-utils: fix compile error on ubuntu (#18066) 2020-08-16 17:27:47 -05:00
Tomoki, Karatsu
af9a3dc69a fenics: split 'parmetis' dependency definition. (#18067) 2020-08-16 17:25:16 -05:00
Harmen Stoppels
fd82cff737 Make spfft build with rocm (#18068) 2020-08-16 17:23:04 -05:00
Tom Payerle
0ffe64dee0 libssh: add gssapi variant and include krb5 as a dependency accordingly (#18070)
See #18033

libssh seemed to detect and link to system krb5 libraries if found
to provide gssapi support, causing issues/system dependencies/etc.

We add a boolean variant gssapi

If +gssapi, the spack krb5 package is added as a dependency.
If ~gssapi, the Cmake flags are adjusted to not use gssapi so that
does not link to any krb5 package.
2020-08-16 17:16:44 -05:00
vvolkl
b89c794806 [xrootd] new version and updated dependency (#18079) 2020-08-16 17:14:08 -05:00
vvolkl
2916ebe743 [dd4hep] align runtime env with lcg release (#18082) 2020-08-16 17:11:28 -05:00
Filippo Spiga
0788a69fa8 Adding osu-micro-benchmarks version 5.6.3 (#18090)
Co-authored-by: Filippo Spiga <fspiga@nvidia.com>
2020-08-16 17:03:54 -05:00
Mark W. Krentel
6e1f9b65e4 xz: add +pic variant (#18092)
xz-utils already builds a shared library.  The +pic variant adds the
compiler pic flag to the static archive so that it can be linked into
another shared library.
2020-08-16 17:02:43 -05:00
Auriane R
93221f8bf9 Add boost 1.74.0 package (#18088) 2020-08-16 16:13:55 -05:00
iarspider
6fdbdaf5b6 New packages: madgraph, syscalc, collier, gosam-contrib (#17601)
* Add Collier and SysCalc recipes

* Remove extra syscalc version

* Build collier with -j1 for @:1.2.4

* Add recipe for gosam-contrib

* Update gosam-contrib recipe with 'provides'

* Madgraph recipe, first version

* Finalize madgraph recipe + flake8

* Make py2 version of madgraph default; fix hash for syscalc; fix patch

* Handle virtual packages (#3)

* Update package.py

* Update packages.yaml

* Remove virtual packages - pt. 1

* Remove virtual packages - pt. 2

* Changes from review - pt. 1

* Changes from code review - pt. 2

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

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

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

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

* Add hash for version 2.7.2 (available in our private mirror)

* Fixes for 2.7.3 family

* Patches for 2.7.3{.py3,}{.atlas,}

* Fix hash of syscalc

* Hack to fix concretization (2.7.3 matches 2.7.3.py3)

* Add conflict statement (reported to devs)

* Apply suggestions from code review

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

* Update package.py

* Delete madgraph5amc-2.7.2.atlas.patch

* Delete madgraph5amc-2.7.2.patch

* Update package.py

* Apply suggestions from code review

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

Co-authored-by: iarspider <iarpsider@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-16 12:07:14 -05:00
Nithin Senthil Kumar
6ececa6976 New packages Mvapich2x and Mvapich2-GDR (#17883)
* Adding new packages Mvapich2x and Mvapich2-GDR which can be installed only via binary mirrors

* Added docstring descriptions to both packages

* Removed variant wrapper for cuda dependencies

* Fixed multiple flake8 errors

* Updated APIs to pass unit tests

* Updated APIs for MVAPICH2-X package and fixed flake8 warnings for MVAPICH2-GDR

* Changed url back to single line

* Removed extra parantesis around URL string

Co-authored-by: nithintsk <nithintsk@github.com>
2020-08-16 08:56:22 -05:00
vvolkl
46fb456b54 [root] add dataframe cmake option (#17962)
* [root] add dataframe cmake option

@chissg @HadrienG2  @drbenmorgan


This has been a separate cmake option starting v6-19 I believe: 31292b9082
It should default to true -- not sure why, but this recipe sets it to off.

I could add a variant too, but since it has become an integral part of root and doesn't introduce extra dependencies, I'd propose to just set it to true like I do here.

* Update package.py
2020-08-15 10:13:11 -05:00
Massimiliano Culpo
395b478b1b spack config update (bugfix): packages.yaml with empty attributes (#18057)
Before this PR, packages.yaml files that contained an
empty "paths" or "modules" attribute were not updated
correctly, since the update function was not reporting
them as changed after the update.

This PR fixes that issue and adds a unit test to
avoid regression.
2020-08-14 19:31:55 -07:00
Chuck Atkins
a6a5708c44 pugixml: add version 1.10, add option for shared libs (#18072) 2020-08-14 17:45:30 -07:00
Adam J. Stewart
9ab8521a1c Python: add spack external find support (#16684) 2020-08-14 16:08:42 +02:00
Adam J. Stewart
512ef506a7 pkgconfig: add spack external find support (#16690) 2020-08-14 16:07:17 +02:00
Adam J. Stewart
c18167d01f Autoconf: add spack external find support (#16692) 2020-08-14 16:06:26 +02:00
Adam J. Stewart
73fe3ce158 M4: add spack external find support (#16693) 2020-08-14 16:05:30 +02:00
darmac
f901947f69 bmake: fix compilation error and added v20200710 (#17956) 2020-08-14 11:32:06 +02:00
Adam J. Stewart
2430ac5b7c GDAL: add spack external find support (#18004) 2020-08-14 08:59:34 +02:00
Adam J. Stewart
c27e82f0ac gmake: add spack external find support (#18009) 2020-08-14 08:58:22 +02:00
Levi Baber
5eea09d43d nextflow: added v20.07.1 (#18058) 2020-08-14 08:53:16 +02:00
Adam J. Stewart
be046d7341 Bazel: add spack external find support (#18008) 2020-08-14 08:48:49 +02:00
Adam J. Stewart
84a16e62d6 OpenGL: add spack external find support (#18003) 2020-08-14 08:48:11 +02:00
Adam J. Stewart
70419c752d GMT: add spack external find support (#18007) 2020-08-14 08:44:32 +02:00
Robert Blake
bcae9e354b Adding external package support for tar. (#18002)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-14 08:43:27 +02:00
Robert Blake
a9b1f22ba1 External package recognition for git. (#18010)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-14 08:42:53 +02:00
Adam J. Stewart
a14648ffd0 external packages: redirect stderr too (#18037) 2020-08-14 08:40:58 +02:00
Greg Sjaardema
8ade93d09d NETCDF-C: added v4.7.4 (#18051) 2020-08-14 08:25:41 +02:00
Greg Sjaardema
4f14d67537 SEACAS: added v2020-05-12 and v2020-08-13 (#18053) 2020-08-14 08:25:06 +02:00
Jed Brown
fe718afaa5 ceed: fix @3.0.0 dependency on hypre@2.18.2 (#17983)
Co-authored-by: Veselin Dobrev <dobrev1@llnl.gov>
2020-08-14 08:18:58 +02:00
Adam J. Stewart
2dad0e5825 Matplotlib: added v3.3.1 (#18061) 2020-08-14 08:01:37 +02:00
Adam J. Stewart
32710f1f28 py-certifi: add v2020.6.20 (#18060) 2020-08-14 08:00:57 +02:00
Adam J. Stewart
35bba4223f Bash: add v5.0.18, external package detection (#18062) 2020-08-14 08:00:25 +02:00
Kai Germaschewski
1d152a44fd fix configure.ac/autotools issue that casues problems on RHEL 7.7 (#17465) 2020-08-13 16:20:05 -07:00
Massimiliano Culpo
31f660bd90 Improve output of the external find command (#18017)
This commit adds output to the "spack external find"
command to inform users of the result of the operation.

It also fixes a bug introduced in #17804 due to the fact
that a function was not updated to conform to the new
packages.yaml format (_get_predefined_externals).
2020-08-13 14:36:58 -07:00
Jim Galarowicz
c0342e4152 Update the change to add gomp compatibity to llvm-openmp. (#17400)
* Update the change to add gomp compatibity to llvm-openmp.

* Update the change to add gomp compatibity to llvm-openmp using append instead of extend.

* Fix flake8 issue.

Co-authored-by: Jim Galarowicz <jgalarowicz@newmexicoconsortium.org>
2020-08-13 15:41:20 -05:00
Alicia Klinvex
8398265638 Add support for pFUnit version 4 (#17683)
* pFUnit: Added support for version 4

pFUnit v4 uses submodules, so we must fetch from the repo rather
than grabbing the tarball (see #11642).

* pFUnit: Added conflicts

pFUnit 4 causes an internal compiler error with gcc 7.2.0, and
several pFUnit versions are incompatible with shared libraries.

* pFUnit: Added conflicts for version 4

Verson 4 uses Fortran 2008 features and cannot be built with gcc
compilers prior to 8.4.

* pFUnit: Fixed conflicts/dependencies as suggested

* pFUnit: Version 4 no longer fetches from git

Checksummable files are fetched instead.

* pFUnit: Simplify major version check

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

* pFUnit: Removed unnecessary patch for v4

The patch is still applied to v3.

* pFUnit: Modified MPI flag for v4

pFUnit v3 and v4 use different CMake flags to enable/disable MPI
support. Also added a conflict for v3 with MPI enabled using
gfortran 10, since newer gfortran is more finicky about datatypes.

* pFUnit: Rearranged mpi logic

* pFUnit: changed m4 to a build dependency

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

* pFUnit: Added URL back

I did not realize it was needed by "spack versions" and
"spack checksum". Thanks @adamjstewart!

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-13 15:35:00 -05:00
Ganesh Kumar
3dfd99c57a AMD ROCm Mathlibs (#17699)
* ROCm Mathlibs

* fixed the review comments

* fixed flake8 issues
2020-08-13 15:34:30 -05:00
Massimiliano Culpo
4a2136670d gcc: improve detection functions (#17988)
* Don't detect Apple's clang as gcc@4.2.1
* Avoid inspecting links except for Cray platforms
* Always return string paths from compiler properties
* Improved name-based filtering (apt-based packages)
2020-08-13 12:17:02 -07:00
Nikolay Simakov
f61b14106a IOR package: added 3.3.0rc1 and develop version (#18036)
* IOR package: added 3.3.0rc1 and develop version

* IOR package: reordered versions, set 3.2.1 as preferred
2020-08-13 13:28:50 -05:00
Harmen Stoppels
f5d3b82bcd Make mpich buildable without fortran (#17964)
When the user explicitly sets ~fortran, mpich builds without fortran
support. This will make building C/C++ libraries using clang easier,
since clang does not offer a fortran compiler by default (yet).

Since the user has to disable Fortran support explicitly, this change
is not breaking.
2020-08-13 13:25:55 -05:00
Harmen Stoppels
d6587ea365 fix buildcache create for environments with uninstalled root specs (#17859)
* Handle uninstalled rootspecs in buildcache

- Do not parse specs / find matching specs when in an environment and no
package string is provided
- Error only when a spec.yaml or spec string are not installed. In an
environment it is fine when the root spec does not exist.
- When iterating through the matched specs, simply skip uninstalled
packages
2020-08-13 09:59:20 -07:00
Massimiliano Culpo
d2f56830f1 "spack config update" can handle comments in YAML files (#18045)
fixes #18031

With this fix "spack config update" can update YAML
files that contain comments, while previously it
couldn't.
2020-08-13 09:54:07 -07:00
Matt Larsen
29818fda00 update vtk-h release (#18052) 2020-08-13 09:30:32 -07:00
Todd Gamblin
b476f8aa63 Merge tag 'v0.15.4' into develop 2020-08-13 07:23:02 -07:00
Massimiliano Culpo
ecf4829de7 llvm: added external detection capabilities (#17989)
* llvm: added external detection capabilities

* Added comment with reference to external package detection docs

* Fix typo in a comment
2020-08-13 09:03:09 -05:00
Todd Gamblin
764cafc1ce update CHANGELOG.md for 0.15.4 2020-08-13 00:41:59 -07:00
Todd Gamblin
091b45c3c7 bump version number for 0.15.4 2020-08-13 00:33:31 -07:00
Massimiliano Culpo
1707448fde Move Python 2.6 unit tests to Github Actions (#17279)
* Run Python2.6 unit tests on Github Actions
* Skip url tests on Python 2.6 to reduce waiting times
* Skip foreground background tests on Python 2.6 to reduce waiting times
* Removed references to Travis in the documentation
* Deleted install_patchelf.sh (can be installed from repo on CentOS 6)
2020-08-13 00:33:31 -07:00
Patrick Gartung
4d25481473 Buildcache: bindist test without invoking spack compiler wrappers. (#15687)
* Buildcache:
   * Try mocking an install of quux, corge and garply using prebuilt binaries
   * Put patchelf install after ccache restore
   * Add script to install patchelf from source so it can be used on Ubuntu:Trusty which does not have a patchelf pat package. The script will skip building on macOS
   * Remove mirror at end of bindist test
   * Add patchelf to Ubuntu build env
   * Revert mock patchelf package to allow other tests to run.
   * Remove depends_on('patchelf', type='build') relying instead on
   * Test fixture to ensure patchelf is available.

* Call g++ command to build libraries directly during test build

* Flake8

* Install patchelf in before_install stage using apt unless on Trusty where a build is done.

* Add some symbolic links between packages

* Flake8

* Flake8:

* Update mock packages to write their own source files

* Create the stage because spec search does not create it any longer

* updates after change of list command arguments

* cleanup after merge

* flake8
2020-08-13 00:33:31 -07:00
Massimiliano Culpo
ecbfa5e448 Use "fetch-depth: 0" to retrieve all history from remote 2020-08-13 00:33:31 -07:00
Massimiliano Culpo
c00773521e Simplified YAML files for Github Actions workflows
Updated actions where needed
2020-08-13 00:33:31 -07:00
Massimiliano Culpo
a4b0239635 Group tests with similar duration together
Style and documentation tests take just a few minutes
to run. Since in Github actions one can't restart a single
job but needs to restart an entire workflow, here we group
tests with similar duration together.
2020-08-13 00:33:31 -07:00
Todd Gamblin
303882834a docs: document releases and branches in Spack
- [x] Remove references to `master` branch
- [x] Document how release branches are structured
- [x] Document how to make a major release
- [x] Document how to make a point release
- [x] Document how to do work in our release projects
2020-08-13 00:33:31 -07:00
Todd Gamblin
5b63ec8652 Remove references to master from CI
- [x] remove master from github actions
- [x] remove master from .travis.yml
- [x] make `develop` the default branch for `spack ci`
2020-08-13 00:30:51 -07:00
Massimiliano Culpo
fc94dde3fc Moved flake8, shell and documentation tests to Github Action (#17328)
* Move flake8 tests on Github Actions

* Move shell test to Github Actions

* Moved documentation build to Github Action

* Don't run coverage on Python 2.6

Since we get connection errors consistently on Travis
when trying to upload coverage results for Python 2.6,
avoid computing coverage entirely to speed-up tests.
2020-08-13 00:30:51 -07:00
Robert Blake
c064088cf3 Bugfix for #17999: use cudart instead of cuda. (#18000)
This is needed because libcuda is used by the driver,
whereas libcudart is used by the runtime. CMake searches
for cudart instead of cuda.

On LLNL LC systems, libcuda is only found in compat and
stubs directories, meaning that the lookup of libraries
fails.
2020-08-12 23:58:10 -07:00
Todd Gamblin
c05fa25057 bugfix: fix spack -V with releases/latest and shallow clones (#17884)
`spack -V` stopped working when we added the `releases/latest` tag to
track the most recent release. It started just reporting the version,
even on a `develop` checkout. We need to tell it to *only* search for
tags that start with `v`, so that it will ignore `releases/latest`.

`spack -V` also would print out unwanted git eror output on a shallow
clone.

- [x] add `--match 'v*'` to `git describe` arguments
- [x] route error output to `os.devnull`
2020-08-12 23:58:10 -07:00
Patrick Gartung
8e2f41fe18 Buildcache create: change NoOverwriteException back to a warning as in v0.14 (#17832)
* Change buildcache create `NoOverwriteException` back to a warning.
2020-08-12 23:58:10 -07:00
Axel Huebl
50f76f6131 Hotfix: move CUDAHOSTCXX (#17826)
* Hotfix: move CUDAHOSTCXX

Set only in dependent packages.

* dependent compiler
2020-08-12 23:58:10 -07:00
Todd Gamblin
5f8ab69396 bugfix: fix spack buildcache list --allarch
`spack buildcache list` was trying to construct an `Arch` object and
compare it to `arch_for_spec(<spec>)`. for each spec in the buildcache.
`Arch` objects are only intended to be constructed for the machine they
describe. The `ArchSpec` object (part of the `Spec`) is the descriptor
that lets us talk about architectures anywhere.

- [x] Modify `spack buildcache list` and `spack buildcache install` to
      filter with `Spec` matching instead of using `Arch`.
2020-08-12 23:58:10 -07:00
Todd Gamblin
aff0e8b592 architecture: make it easier to get a Spec for the default arch
- [x] Make it easier to get a `Spec` with a proper `ArchSpec` from an
      `Arch` object via new `Arch.to_spec()` method.

- [x] Pull `spack.architecture.default_arch()` out of
      `spack.architecture.sys_type()` so we can get an `Arch` instead of
      a string.
2020-08-12 23:58:10 -07:00
h-denpo
5512340a51 gotcha: fixed building v0.0.2 on ARM (#18012) 2020-08-13 08:16:23 +02:00
eugeneswalker
7302dd834f allow GNUPGHOME to come from SPACK_GNUPGHOME in env, if set (#17139) 2020-08-12 22:57:57 -07:00
ketsubouchi
ae23f33a31 eztrace: add space, --linkfortran, -Wl (#17801) 2020-08-12 20:16:59 -05:00
Chris White
105caa7297 Axom + Conduit updates (#17863)
* Loosen Axom's variants, add shared variant for axom, fix clang/xlf rpath'ing problem on blueos

* Fix flake8

* Add main branch to list of known git branches
2020-08-12 20:15:59 -05:00
Massimiliano Culpo
fa216e5f15 mpich, mvapich2: fixed setup_*_environment (#18032)
fixes #18028

Since now external packages support multiple modules
the correct thing to do is to check if the name of the
*first* module to be loaded contains the string "cray"
2020-08-12 20:04:03 -05:00
Harmen Stoppels
075e9428a1 Make the build stage of OpenSSL parallel (#18024) 2020-08-12 19:58:36 -05:00
Erik Schnetter
3fbbf539d1 libpciaccess: New version 0.16 (#18035) 2020-08-12 19:57:00 -05:00
Erik Schnetter
c024a55da8 cmake: Add version 3.16.3 (#18034)
`cmake @3.16.3` is the version provided by Ubuntu 20.04. Adding this version here avoids the warning
```
==> Warning: Missing a source id for cmake@3.16.3
```
when using the system `cmake`.
2020-08-12 19:53:55 -05:00
srekolam
ad060c7870 Spack recipes for ROCm software components-Phase1 (#17422)
* Spack recipes for ROCm Stage 1 Build components

* fix flake8 errors

* fixes for flake8 errors

* Add a patch for cmake 3.x suport

* Fix rpath issue where hsa-rocr-dev does not allow it to be filled in by spack

* Remove inherited cmake args from comgr

* Make hsakmt-roct compile: no -Werror because with const cast in numa, and actually add the numa dependency

* Remove redundant cmake args which is inherited

* Fix some dependencies

* Fix some python 2.x compatibilities

* Add amd gpu targets to rocfft

* Make comgr a link dep of rocm-dbgapi and remove redundant cmake args

* Remove redundant cmake args

* Remove more redundant cmake args

* Final redundant args

* Use cmake 3.x instead of a fixed version

* Remove random variable

* Use installed rocclr instead of nonexisting directory

* Don't build outside the staging folder

* Deploy some missing cmake target file

* Formatting

* Fix target list

* Properly handle the rocclr dependency

* Formatting

* Fix vermin test

* Make all 3.5.0 package depend exactly on eachother

* Add a few missing link dependencies

* Fix flake8

* Remove some other redundant flags

* Add gcc install prefix for gcc builds of llvm-amdgpu

* review changes for the spack recipes

* Do not hard-code versions

* Fix atmi install

- no more relative rpaths outside of install directory (required patch)
- fix build -> link dependencies
- remove unused build dependency

* Fix flake8 errors

* Remove unused variable and make things python 2.x compatible

* Fix flake8

* Move compiler config from rocfft -> hipcc

* Remove redundant dependency on fftw-api

* Remove redundant import

* Avoid hitting the ROCM_PATH variable altogether with a patch; also just fill in all variables

* Add missing deps z3, zlib and ncurses+termlib to llvm-amdgpu

* Fix perl shebang and add dep

* Fix typo and patch HIP_CLANG_ROOT detection in hip's cmake files

* fixing build failure due z3 and adding zlib for rocgdb

* new changes to add z3,curses dependency for llvm-amdgpu

* fix flake8 error

Co-authored-by: root <root@localhost.localdomain>
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2020-08-12 19:36:35 -05:00
eugeneswalker
25a0d89b58 petsc: add explicit build dependency: diffutils (#17979) 2020-08-12 13:42:03 -07:00
Julien Loiseau
015ea82bd5 Update FleCSPH package (#17997)
* Update FleCSPH package

* Flake8 corrections

* Update FleCSI version
2020-08-12 11:49:30 -06:00
Robert Blake
b4ff584bc0 Adding externals support for CUDA. (#18011)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-08-12 19:30:57 +02:00
Jon Rood
193c3535e1 Use configure-release instead of configure for UCX (#17941)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-12 15:14:53 +02:00
Michele Martone
d1fae90f84 librsb: added v1.2.0.9 (#18015) 2020-08-12 14:09:49 +02:00
Andrew W Elble
de053ca2ea weechat: added new package at v2.9 (#17996) 2020-08-12 14:09:09 +02:00
Harmen Stoppels
edcc334631 Respect $PATH ordering when registering compilers (#17967) 2020-08-12 13:38:08 +02:00
Ethan Stam
12aa6d221c ParaView: added v5.8.1 (#17995) 2020-08-12 13:18:32 +02:00
Robert Blake
f73141c6af Bugfix for #17999: use cudart instead of cuda. (#18000)
This is needed because libcuda is used by the driver,
whereas libcudart is used by the runtime. CMake searches
for cudart instead of cuda.

On LLNL LC systems, libcuda is only found in compat and
stubs directories, meaning that the lookup of libraries
fails.
2020-08-12 13:13:57 +02:00
Thomas Madlener
041e21802e podio: added dependency on jinja2 for newer versions (#17990) 2020-08-12 08:56:11 +02:00
Robert Blake
80a382c218 Adding external recognition to perl (#17756)
* Perl now has external recognition.

* Changing code to use the new external packages API.
2020-08-11 17:06:20 -07:00
Adam J. Stewart
2f0fd44b97 Libtool: add spack external find support (#16691)
* Libtool: add spack external find support

* Less specific regex

* match -> search

* Clarify that min returns first alphabetically, not shortest

* Simplify version determination
2020-08-11 10:16:15 -05:00
Harmen Stoppels
313511bf1d elpa: add cuda support, add libtool dep, fix parallel build failure (#17969) 2020-08-11 17:01:49 +02:00
Adam J. Stewart
09cc89a449 py-pyinstrument: added v3.1.3 (#17976) 2020-08-11 10:23:10 +02:00
Adam J. Stewart
db3ecb2fdf py-sphinx: added v3.2.0 (#17977) 2020-08-11 10:22:18 +02:00
Adam J. Stewart
1fdd19bcc2 py-sphinx-rtd-theme: added v0.5.0 (#17978) 2020-08-11 10:21:55 +02:00
darmac
9e54570b4c libcroco: added build dependency on pkg-config (#17970) 2020-08-11 10:14:22 +02:00
Massimiliano Culpo
6cda20472e Fix loading of compiler modules on CRAY (#17984)
The modifications in 193e8333fa
introduced a bug in the loading of compiler modules, since a
function that was expecting a list of string was just getting
a string.

This commit fixes the bug and adds an assertion to verify the
prerequisite of the function.
2020-08-11 10:11:01 +02:00
Adam J. Stewart
f0c0cd5c3f Fix typo in spack external debug msg (#17982) 2020-08-11 09:55:44 +02:00
Sajid Ali
30dc0baa34 openssl: added detection capabilities (#16653) 2020-08-11 09:44:51 +02:00
Kurt Sansom
07422f95de sprng: added new package (#17570)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-11 09:15:13 +02:00
Howard Pritchard
18d2682f75 UCX: add version 1.8.1 (#17972)
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
2020-08-10 23:10:59 -05:00
Jeffrey Salmond
6ccc430e8f Add fenicsx packages (#17743)
* add py-ufl package from fenics

* add py-fiat package from fenics

* add py-ffcx package from fenics

* add py-dijitso package from fenics

* add dolfinx library from fenics

* amend ffcx to use ufl and fiat master branches

* setup variants complex and int64 of dolfinx

* add dolfinx python library as package

* add test dependencies to py-dolfinx

* remove broken doc variant

* remove test dependencies from py-dolfinx

* flake8 fixes to dolfinx and py-dolfinx

* make sure dolfinx cmake picks up the correct python version

* list build phases in py-dolfinx package

* remove unnecessary package url

* make pkgconf a build dependency

* make all python dependencies build+run

* py-ffcx needs py-setuptools to be a build/run dependency to support ffcx executable

* remove unnecessary variants from dolfinx

* add missing dependencies to py-dijitso

* remove stray line from py-dolfinx

* simplify definition of build_directory in py-dolfinx

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

* use depends_on("python") rather than extends("python") in py-ffcx

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

* use depends_on("python") rather than extends("python") in py-fiat

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

* use depends_on("python") rather than extends("python") in py-ufl

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

* rename py-fiat to py-fenics-fiat

* rename py-ufl to py-fenics-ufl

* fix error in depends_on(petsc) definition

* add missing dep on numpy to py-fenics-fiat

* specify python@3.8: as requirement for all fenics components

* use tuples rather than list for depends_on type=

* specify eigen@3.3.7: as dependency for dolfinx

* add js947 and chrisrichardson as maintainers for the fenics packages

* remove scipy dependency from py-dolfinx

* rename package py-ffcx -> py-fenics-ffcx

* rename package dolfinx -> fenics-dolfinx

* rename package py-dolfinx -> py-fenics-dolfinx

* remove pointless URL from py-fenics-dolfinx package

* rename package py-dijitso -> py-fenics-dijitso

* formatting

* remove unecessary cmake args from fenics-dolfinx

* revert py-fenics-fiat python version to 3:

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

* revert py-fenics-ufl python version to 3.5:

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

* add conflict to fenics-dolfinx for C++17 support

* revert py-fenics-ffcx python version to 3.5:

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-10 21:43:43 -05:00
Nithin Senthil Kumar
38f2a0a92b Updated docstring description for MVAPICH2 (#17921)
* Updated docstring description for MVAPICH2

* Fixed flake8 character count warning and added maintainers

* Removed trailing whitespaces

Co-authored-by: nithintsk <nithintsk@github.com>
2020-08-10 21:35:41 -05:00
darmac
08beb7aa30 aperture-photometry: add v2.8.4 (#17953) 2020-08-10 21:35:20 -05:00
darmac
00bdff81ae Add new package: tiptop (#17907)
* Add new package: tiptop

* fix flake8 error

* tiptop: remove sha256 value
2020-08-10 21:26:21 -05:00
darmac
84a97d8372 pbbam: fix build error (#17955)
* pbbam: fix build error

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-10 21:25:45 -05:00
darmac
9fbfd6b58c kibana: support aarch64 (#17910)
* kibana: support aarch64

* kibana: change jdk to java
2020-08-10 21:25:08 -05:00
darmac
c322bea8f8 fix apex sha256 and depends constraint (#17902) 2020-08-10 20:36:58 -05:00
Massimiliano Culpo
1dba0ce81b Removed references to BlueGene/Q in docs and comments 2020-08-10 17:09:09 -07:00
Massimiliano Culpo
f128e7de54 Removed references to BlueGene/Q in Spack builtin packages 2020-08-10 17:09:09 -07:00
Massimiliano Culpo
98701279df Removed references to BlueGene/Q in core Spack 2020-08-10 17:09:09 -07:00
Satish Balay
1920d125e8 petsc: update hypre dependency wrt 2.18.2 -> 2.19.0 API change (#17973) 2020-08-10 13:41:35 -07:00
Massimiliano Culpo
c0d490ffbe Simplify the detection protocol for packages
Packages can implement “detect_version” to support detection
of external instances of a package. This is generally easier
than implementing “determine_spec_details”. The API for
determine_version is similar: for example you can return
“None” to indicate that an executable is not an instance
of a package.

Users may implement a “determine_variants” method for a package.
When doing external detection, executables are grouped by version
and each group results in a single invocation of “determine_variants”
for the associated spec. The method returns a string specifying
the variants for the package. The method may additionally return
a dictionary representing extra attributes for the package.

These will be stored in the spec yaml and can be retrieved
from self.spec.extra_attributes

The Spack GCC package has been updated with an implementation
of “determine_variants” which adds the following extra
attributes to the package: c, cxx, fortran
2020-08-10 11:59:05 -07:00
Massimiliano Culpo
193e8333fa Update packages.yaml format and support configuration updates
The YAML config for paths and modules of external packages has
changed: the new format allows a single spec to load multiple
modules. Spack will automatically convert from the old format
when reading the configs (the updates do not add new essential
properties, so this change in Spack is backwards-compatible).

With this update, Spack cannot modify existing configs/environments
without updating them (e.g. “spack config add” will fail if the
configuration is in a format that predates this PR). The user is
prompted to do this explicitly and commands are provided. All
config scopes can be updated at once. Each environment must be
updated one at a time.
2020-08-10 11:59:05 -07:00
Amjad Kotobi
1398038bee git: new version 2.28 (#17848)
* git: new version 2.28

* git: man page version 2.28
2020-08-10 07:48:03 -04:00
Michael Kuhn
8c1329958c Hotfix for config singleton initialization (#17263)
Fixes #17262
2020-08-10 07:48:33 +02:00
Brian Van Essen
aa79d565b3 DiHydrogen: adding blas and associated variants (#17911) 2020-08-10 07:31:41 +02:00
Todd Gamblin
7c9c486d07 deptypes: move deptype formatting code from Spec.format to dependency.py (#17843)
- This simplifies Spec.format somewhat
- Makes code to generate deptype strings (e.g., '[blrt]') reusable
2020-08-09 15:33:31 -07:00
darmac
6309c5eff5 Add new package: libhugetlbfs (#17904) 2020-08-09 14:05:28 -05:00
Nichols A. Romero
c015b8538d LLVM minor cleanup (#17905)
* Since LLVM already depends on the CUDA build system, these lines are redundant.

* This conflict doesn't do anything.
2020-08-09 14:04:53 -05:00
darmac
6c4c7c4b72 libtirpc: fix krb5 depends and remove --disable-gssapi configure (#17926) 2020-08-09 13:52:17 -05:00
darmac
3b8a5dea44 Add new package: hazelcast (#17928) 2020-08-09 13:51:25 -05:00
Rémi Lacroix
ab6e74f6ac FFTW: "configure" script failed with Intel compilers on some systems. (#17936)
Next version of FFTW won't use `-no-gcc` so add a patch to backport the fix to older versions.

Fixes #17810.
2020-08-09 13:47:26 -05:00
Teodor Nikolov
902fac185a blaspp: added explicit dependency on CUDA (#17965) 2020-08-09 20:44:05 +02:00
eugeneswalker
bad8734316 add variant tests which can be one of (none, tests, benchmarks) (#17949) 2020-08-09 13:40:46 -05:00
darmac
5965522bbe libxscrnsaver: fix depends scrnsaverproto error (#17951) 2020-08-09 13:38:55 -05:00
darmac
e0e73c6ea1 blaze: fix build error (#17954) 2020-08-09 13:30:39 -05:00
Alex Margolin
c0492efc11 KNEM and XPMEM support for UCX (#17215)
* KNEM url updated

Signed-off-by: Alex Margolin <alex.margolin@huawei.com>

* Allow UCX to be built against KNEM and XPMEM

Signed-off-by: Alex Margolin <alex.margolin@huawei.com>
2020-08-09 12:55:49 -05:00
Wouter Deconinck
4493d31170 dire: new package at v2.004 (#17749)
Older versions do not compile correctly. New users should use 2.004,
not any of the older versions.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-09 19:03:26 +02:00
Adam J. Stewart
3b6c16ee9f py-scikit-learn: added v0.23.2 (#17876) 2020-08-09 15:57:07 +02:00
Jordan Ogas
f243291334 charliecloud: added v0.17 (#17855) 2020-08-09 15:55:53 +02:00
Harmen Stoppels
512fa8e460 Fix cpio clang build error (#17963)
undefined reference to '__muloti4', using the proposed fix from
https://bugs.llvm.org/show_bug.cgi?id=16404
2020-08-09 15:45:53 +02:00
ketsubouchi
0642216c31 eospac: added support for fujitsu compiler (#17922) 2020-08-09 15:45:35 +02:00
Cameron Stanavige
7631013975 unifyfs: remove flatcc dependency and add spath (#17913)
FlatCC has been removed from UnifyFS as a dependency on the develop
branch and for future releases.

spath is now an optional dependency for UnifyFS to normalize relative
paths provided by the user.
2020-08-09 15:14:44 +02:00
ketsubouchi
c6ad321838 r-rcppparallel: fix for fujitsu compiler (#17924) 2020-08-09 15:01:19 +02:00
vvolkl
e83f639c13 HEP versions update (#17927)
* [whizard] bug fix for ~openloops

* [lcio] new version

* [gaudi] new version

* [lcio] add delphes dependency for examples
2020-08-09 14:54:26 +02:00
Dr. Christian Tacke
dfd5da85c3 pythia8: added v8302 and maintainer (#17931) 2020-08-09 14:43:47 +02:00
Rémi Lacroix
9979aa28ce hypre: added v2.19.0 (#17809) 2020-08-09 14:42:52 +02:00
Adam J. Stewart
eda170665f oneDNN: added v1.6 and v1.6.1 (#17822) 2020-08-09 14:40:05 +02:00
Adam J. Stewart
33ec8cd86a py-azureml-sdk: add v1.11.0 (and deps) (#17939) 2020-08-09 14:31:28 +02:00
Sinan
f340b81ca8 py-netket: added new package at v2.1.1 (#17515)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-09 14:05:26 +02:00
Brian Van Essen
1fc02b801e cub: added v1.9.10, fixed typo in url (#17942) 2020-08-09 13:59:42 +02:00
Glenn Johnson
8eef488e2c Replace [] with () in description (#17940)
The tcl module for r-dorng will fail to load due to the [] characters in
the description. This happens for Tcl formatted modules loaded by Lmod
at least.

```
module load r-dorng-1.7.1-gcc-9.2.0-wtq7bne
Lmod has detected the following error: .../spack/share/spack/modules/linux-centos7-broadwell/r-dorng-1.7.1-gcc-9.2.0-wtq7bne:(r-dorng-1.7.1-gcc-9.2.0-wtq7bne):
invalid command name "L'Ecuyer"
```

Split text for short and long descriptions.
2020-08-09 13:54:28 +02:00
Adam J. Stewart
a3a571e5c3 PIL: add py-pillow 7.2.0 (#17933) 2020-08-09 13:43:29 +02:00
Sinan
d7ae244a14 llvm: added v10.0.1 (#17950)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-08-09 13:39:11 +02:00
Adam J. Stewart
09223e5c0b wcslib: added v7.3 (#17836) 2020-08-09 13:24:48 +02:00
Satish Balay
61735f3847 petsc: added v3.13.2,v3.13.3,v3.13.4 (#17957) 2020-08-09 13:19:59 +02:00
Adam J. Stewart
aa14c9d1d1 libimagequant: added new package at v2.12.6 (#17959) 2020-08-09 13:09:52 +02:00
Satish Balay
2954eb39c9 saws: added v0.1.1 (#17958) 2020-08-09 13:05:21 +02:00
Mark W. Krentel
cef729e39c mbedtls: fix min cmake version, added v2.16.7 (#17960)
Mbedtls 2.16.x uses target_sources() from cmake >= 3.1.0
2020-08-09 12:52:21 +02:00
Daniel Topa
61cf6d9c8f cassandra: fixed checksum for v3.11.6 (#17961)
Signed-off-by: Daniel Topa <dantopa@gmail.com>
2020-08-09 12:47:03 +02:00
Glenn Johnson
023a057f20 Add variants to petsc (#17218)
* Add variants to petsc

This PR adds the follolwing variants to the petsc package

- gmp
- jpeg
- libpng
- giflib
- mpfr
- netcdf
- pnetcdf (parallel-netcdf)
- moab
- eigen
- random123
- exodusii
- mstk
- cgns
- memkind
- muparser
- p4est
- saws
- libyaml
- zstd

* Fix flake8 errors

* Additional changes to Petsc recipe

This commit addresses the issues with dependencies that were brought up
in the comments. There are also a few other enhancements.

- the language of the new variant descriptions was changed to be more
  consistent with what was already in the recipe
- an explicit '+mpi' was added to the depends_on('hypre...') directives
- an explicit '+mpi' was added to the depends_on('trilinos...')
  directives
- the run time error checking for '~mpi' was replaced with 'conflicts()'
  directives that will cause the install to fail sooner
- additional variants that were 'parallel only' were added to the '~mpi'
  check

* Set the '~mpi`' conflicts msg to a variable
2020-08-08 11:07:51 -05:00
Sinan
e4a7cb4d60 new package: py-cmake (#17588)
* new package: py_cmake

* sync cmake and py-cmake versions

* new package: py_cmake

* sync cmake and py-cmake versions

* flake8, improve dependency specifics

* replace template stuff with actual values

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-08-08 11:04:41 -05:00
Sinan
775c14e0c1 package/cmake: add versions 1.18.0 and 1.18.1 (#17945)
* package/cmake: add versions 1.18.0 and 1.18.1

* fix shasums

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-08-08 00:42:02 -05:00
Adrien Bernede
3978db91dc Feature/raja chai umpire update (#17665)
* Changing raja, chai, and umpire packages so all will compile with each other.

* Need a CUDA version of CHAI when compiling with raja+cuda+chai

* Updating checks for commit.

* Adding comments explaining why chai+umpire tests were disabled

* Reactivating tests for CHAI and Umpire

* reordering versions

* Unified handling of Cuda Arch

* Adding latest versions

* Unused/Untested: removed

* Aesthetic and test mode in Chai

* Unified handling of Cuda Arch

* Using 'ON' consistently, instead of 'On'

* Apply suggestions from code review

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

* Fix, suggestion and patch:

Chai depends on RAJA, not the other way.
Apply suggested master-main version mapping.
Add Umpire version 3.0.0 and patch.

Co-authored-by: Robert Blake <blake14@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-07 17:42:07 -05:00
eugeneswalker
ceed9c4bc0 conduit: dont use cmake >= 3.18 because of FindHDF5 bug (#17937) 2020-08-07 13:50:14 -07:00
Glenn Johnson
1a11449c86 New package - REDItools (#17703)
* New package - REDItools

This PR adds the REDItools package, along with a new package dependency,
py-fisher. This contains a patch generated from the python 2to3 script
as well as some other fixes. I am not sure if the project is ready to
support python-3 yet but I submitted the other patches upstream.

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-07 14:40:52 -05:00
Adam J. Stewart
11f2d01051 py-inference-schema: add new package (#17912) 2020-08-07 12:09:34 -05:00
Tomoki, Karatsu
c83236d3a4 Fujitsu compiler: Accept alphabet as version. (#17890)
* Fujitsu compiler: Accept alphabet as version.

* Fujitsu copiler: Updated test pattern.
2020-08-07 09:06:22 -05:00
g-mathias
c1efa09928 gromacs: new version 2020.3; variant nosuffix and mkl support (#17908)
* new version 2020.3; new variants nosuffix and fft; version selections for plumed

* fixed too long lines

* fixed whitespaces

* revised fft interface according to @haampie 's suggestions

Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-08-07 07:03:14 -06:00
darmac
6fc6f1ea9d activeharmony: add version 4.6.0 (#17867) 2020-08-06 23:51:47 -07:00
Adam J. Stewart
463aaef092 py-rasterio: add v1.1.5 2020-08-06 23:50:02 -07:00
Robert Pavel
07e426ce00 New package: ProfugusMC (#17914)
Added spackage for profugusMC
2020-08-06 23:45:19 -07:00
Mark W. Krentel
7d348268fb hpctoolkit: fix commit hash for version 2020.08.03 (#17920) 2020-08-06 23:42:52 -07:00
Rao Garimella
cff383802a Wonton (package): Fix sha 256 sum for version (#17916) 2020-08-06 23:41:48 -07:00
Justin S
7a5c0e0326 stacks (package): add version 2.53 (#17915) 2020-08-06 23:40:41 -07:00
Justin S
0f8ad5be1b isescan: new package at 1.7.2.1 (#16589)
* isescan: new package at 1.7.2.1

* isescan: update external program paths

* isescan: use spack compiler
2020-08-06 22:26:52 -05:00
Rao Garimella
9a7834949d New Package Wonton (#17882)
* new package Wonton

* remove the flecsi variant because flecsi-sp does not have a spackage

* fix url, clean up whitespaces

* formatting

* put in explicit else clauses for variants in CMake section because CMake's behavior is system-dependent

Co-authored-by: Rao Garimella <rao@abyzou.lanl.gov>
2020-08-06 13:55:24 -05:00
Adam J. Stewart
051e124533 Bazel: relax Java dependency (#17734)
* Bazel: relax Java dependency

* Flake8 fix
2020-08-06 13:02:02 -04:00
Julius-Plehn
f3ec1d445d New package: HDFView (#17707)
* HDFView

* adds support for version 3.1.1
2020-08-06 09:02:40 -05:00
Todd Gamblin
9dbe1d7776 bugfix: fix spack -V with releases/latest and shallow clones (#17884)
`spack -V` stopped working when we added the `releases/latest` tag to
track the most recent release. It started just reporting the version,
even on a `develop` checkout. We need to tell it to *only* search for
tags that start with `v`, so that it will ignore `releases/latest`.

`spack -V` also would print out unwanted git eror output on a shallow
clone.

- [x] add `--match 'v*'` to `git describe` arguments
- [x] route error output to `os.devnull`
2020-08-05 17:01:18 -07:00
Robert Mijakovic
aee95fe9a9 GPI-2 new package (#17875)
* 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.

* Adds hashes for new versions of Intel packages.

* Adds missing hash of Intel compiler.

* Adds the newest version of Intel MPI 2019.8.

* Fixes hash for intel-parallel-studio and intel-tbb.

* Fixes version number of Intel MPI.

* Adds GPI-2 package.

* Fixes flake8 noticed issues.

* Second try to fix flake8 comment

* Fixes some issues adamjstewart noticed.

* Fixes package according to flake8 complains.

* Fixes flake8 issue.

* Renames next version to master and removes master.

* Adds maintainer into gpi-2 and returns master branch for the git
repository.

Co-authored-by: Robert Mijakovic <robert.mijakovic@lrz.de>
2020-08-05 16:38:23 -05:00
carlabguillen
cc0a1283c4 Variant with fortran for likwid package (#17889)
* Option to build likwid with fortran interface

* Removing white spaces

* Flake8 conform
2020-08-05 16:31:49 -05:00
h-denpo
a5914cecb4 add depends_on('zlib', type='link') (#17887) 2020-08-05 16:24:49 -05:00
darmac
dc321abb72 bcache:add pkg-config to find blkid.h in linux-utils (#17888) 2020-08-05 16:24:14 -05:00
Greg Becker
acfa2ea018 remove hypre variant from mfem and all references to it (#17885) 2020-08-05 09:19:22 -07:00
darmac
afaae70855 nodejs: add version 8.11.4 (#17824)
* nodejs: add version 8.11.4

* node-js: refine configure() for different version
2020-08-05 10:12:14 -05:00
Ronak Buch
e64e600fbb charmpp: added v6.10.2 (#17886) 2020-08-05 15:03:51 +02:00
Jen Herting
96f5075eb1 [py-smart-open] fixing dependencies (#17640)
* version 1.8.4 requires py-boto at 2.3.2:
* google-cloud-storage only in newer versions
2020-08-04 16:44:30 -07:00
Jen Herting
118948cb0a [bowtie] added version 1.3.0. Patch fixed for new version (#17744) 2020-08-04 14:52:51 -07:00
Tim Haines
f9ee76a817 Dyninst: 10.2 release (#17847)
* Dyninst: 10.2 release

* Use 'elf' instead of 'elfutils'

* Use v10.2.0 tag

* Change minimum elfutils to 0.173

* Move STERILE_BUILD option to correct cmake_args

* make a sacrifice to the flake8 gods

* Add maintainer

* Revert to using elf@1 for elfutils
2020-08-04 13:48:08 -05:00
Brian Van Essen
54dc871524 Renamed the aluminum variant for thhe intra-node RMA functions. (#17861) 2020-08-04 12:52:59 -05:00
Ethan Stam
b3dd90b95c ParaView: Allow all ParaView versions to depend on Python 2 (#17484)
* Allow all ParaView versions to depend on Python 2

* Keep conflict for 5.9 and up with python 2

* Fix line too long

* Don't use backslash

* Try fixing indent

* Clean logic for python cmake flags

* Try fixing indent
2020-08-04 12:51:49 -05:00
Toyohisa Kameyama
d77f388a0d yorick: avoid hang to fputest on aarch64. (#17865) 2020-08-04 12:27:27 -05:00
Simon Frasch
cb676eab0f Added new package: spla (#17868) 2020-08-04 12:24:07 -05:00
Robert Underwood
4eb3558d20 Prefer dynamic linking for Python in vim when +python (#17870)
Previously the python package for vim used static linking, and depending
on what system libraries were available and linked against could cause
symbol conflicts for python leading to segfaults in loading c modules in
the standard library (i.e. heapq).  This patch address this issue by
dynamically linking them.
2020-08-04 12:22:53 -05:00
Robert Underwood
b35b950ee2 Add openssh runtime dependency to git (#17872)
If you use git to clone a repository ssh, git transfers control the ssh
binary available on your path, if that ssh binary was built with
contradictory version of openssl/kerberos, then your git commands will
fail.
2020-08-04 12:21:55 -05:00
Adam J. Stewart
91671be7cc py-keras-preprocessing: add new version (#17735) 2020-08-04 12:12:15 -05:00
t-nojiri
8977f7377a abyss 2.1.4: fails to build with GCC 8 (#17614)
* abyss 2.1.4: fails to build with GCC 8

* abyss 2.1.4: fails to build with GCC 8

* abyss 2.1.4: Revise the points indicated by the review.
2020-08-04 12:11:52 -05:00
vvolkl
9d2b60ac0c [delphes] pythia8 variant and cleanup (#17664)
* [delphes] new version

* [delphes] pythia8 variant

* [delphes] flake8
2020-08-04 12:11:13 -05:00
Zicklag
b85cc363c1 Add Espanso Package and its xdotool Dependency (#17586) 2020-08-04 12:06:46 -05:00
Simon Pintarelli
c3a38e0b14 sirius (new versions, fixes), q-e-sirius (new package), nlcglib (new package) (#17844)
* sirius, update versions, fixes, add missing options

- sirius/spfft: depend on fftw-api
- cleanup +shared option
- sirius add option for memory pool
- sirius add version 6.5.3 and 6.5.4
- sirius: add spfft dependency for @master, @develop

* add nlcglib package

Robust wave function optimization for SIRIUS.

* add q-e-sirius package

based on q-e package

* Update var/spack/repos/builtin/packages/q-e-sirius/package.py

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

* nlcglib: pass nvcc_wrapper to cmake

* Add 6.5.6

* Make flake8 happy

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2020-08-04 12:03:04 -05:00
Mark W. Krentel
3a02d1a847 hpctoolkit: add v2020.08.03 (#17860)
Add version 2020.08.03.  Adjust the cuda args.  The --with-cupti arg
was redundant, even for old versions of hpctoolkit.
2020-08-04 13:39:47 +02:00
Enrico Usai
bd0fb35ff0 AWS ParallelCluster: added v2.8.1 (#17866) 2020-08-04 13:25:27 +02:00
Brian Van Essen
c203898663 Added versions for cuDNN 8.0.2. (#17862) 2020-08-04 13:05:29 +02:00
t-nojiri
23f61ae2b0 subread: extend support for aarch64 to v2.0.0 (#17864) 2020-08-04 13:01:39 +02:00
g-mathias
9c8d4be569 new plumed versions 2.5.5 and 2.6.1; bumped default to 2.5.5 (#17850)
Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-08-03 23:15:57 -05:00
albestro
7154351860 HPX: fix wrong method name and use define/define_from_variant methods (#17851)
* bug fix: wrong method name

* refactoring using define_from_variant and define

* flake8 style fix

* revert change string format
2020-08-03 23:15:23 -05:00
Harmen Stoppels
9318029b63 Bump cmake (#17852) 2020-08-03 23:12:07 -05:00
Harmen Stoppels
c07102ac9f Fix typo: yaml -> json (#17854) 2020-08-03 23:11:41 -05:00
mic84
1c4b6bad43 amrex:: new version 20.08 (#17856) 2020-08-03 23:08:42 -05:00
darmac
8e1e3ac8c3 canu: fix depends issue & using java instead of jdk (#17599)
* canu: fix depends issue & using java instead of jdk

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-03 23:05:37 -05:00
darmac
a7f1565efb Add new package: ycsb (#17788)
* Add new package: ycsb

* refine mongodb-async-driver jar path
2020-08-03 23:04:48 -05:00
darmac
1884822b56 Add new package: slider (#17799)
* Add new package: slider

* refine version check
2020-08-03 23:04:09 -05:00
darmac
0cc2377de6 Add new package: giraph (#17790)
* Add new package: giraph

* refine version check
2020-08-03 23:03:25 -05:00
Claire Guilbaud
ce7aefbb4f Packages/py colorspacious (#17623)
* typo error correction

* Adding recipe for `colorspacious` (a python package)

* Copyright year changed

* revert last commit on basic_usage.rst

* better with a good description

* fix according to failed test

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

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

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-03 23:01:03 -05:00
Massimiliano Culpo
b1133fab22 MacOS nightly builds: use Python 3.7 in CI
Nightly builds with MacOS started failing again
due to an upgrade of the default virtual environment
that now uses Python 3.8

This makes us hit #14102 and every build fails. This
commit should be reverted along with the fix to #14102.
2020-08-03 17:23:10 -07:00
Harmen Stoppels
827ca72c26 Fix docs about containers on cray (#17431)
* For detecting Cray: CRAYPE_VERSION is not used, but MODULEPATH

* Fix typo and write Cray with a capital
2020-08-03 16:16:18 -07:00
Adam J. Stewart
a67a0e3181 py-astropy: add version 4.0.1.post1, update header finding (#17838)
* Add install tests
* Add pkgconfig dependency to find dependency headers (specifically
  wcslib)
2020-08-03 11:51:29 -07:00
Adam J. Stewart
8b50433cd7 ERFA (package): add version 1.7.0 (#17837) 2020-08-03 11:40:50 -07:00
Paul
4c97a0ea1c Added Go 1.14.6 and 1.13.14 (#17574) 2020-08-03 09:42:05 -05:00
ketsubouchi
a480507a92 python: RPATH on fj (#17783)
* python: RPATH on fj

* python: patch _is_gcc
2020-08-02 22:53:14 -05:00
Francesco Di Natale
ac433134e5 Updates to jsonschema to include newer versions. (#17613)
* Additional versions of py-jsonschema.

* Tweak to force Maestro to use jsonschema@3.2.0:

* Correction of whitespace (flake8 error).

* Merges importlib's Python  version conditons

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-02 19:42:56 -05:00
Harmen Stoppels
e199f3f245 Add new versions of spfft (#17841)
* Add new versions of spfft

* Extend CudaPackage and use virtual fftw package

Co-authored-by: Simon Pintarelli <simon.pintarelli@cscs.ch>

* Add CUDA 11 compatibility note

* Depend on older cuda <= 10 for spfft <= 0.9.11

Co-authored-by: Simon Pintarelli <simon.pintarelli@cscs.ch>
2020-08-02 19:42:07 -05:00
René Widera
d560d83b76 fix isaac-server dependency (#17569)
isaac-server can not find jansson if jansson2.10+ is used.
2020-08-02 19:41:18 -05:00
Jon Rood
041fcbfa59 Gnuplot also depends on libsm with +wx. (#17575) 2020-08-02 16:46:42 -05:00
darmac
53b7f381c7 krb5: fix url parse and update versions (#17581) 2020-08-02 16:46:04 -05:00
darmac
044b9d3e85 mariadb: add depends package krb5 (#17583) 2020-08-02 16:45:05 -05:00
Harsh Bhatia
b25055c7e8 new package: ibm databroker (#17591) 2020-08-02 16:40:44 -05:00
Patrick Gartung
33116d730d Buildcache create: change NoOverwriteException back to a warning as in v0.14 (#17832)
* Change buildcache create `NoOverwriteException` back to a warning.
2020-08-02 13:52:15 -07:00
Patrick Gartung
f29dd48101 Add bindist tests for macOS. 2020-08-02 13:51:14 -07:00
albestro
ef3338a49b Improve HPX package management of coroutines implementation (#17654)
* introduce logic for boost+context dependency and generic_context variant

* fix OTF2 instrumentation minor problem

* default coroutine impl depends on platform

* fix flake8

* add reference to ~generic_coroutines conflict info

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-02 09:56:50 -05:00
Rémi Lacroix
8e6fe883eb Octopus: Add support for version 10.0. (#17782)
* Octopus: Add support for version 10.0.

Fix compilation when using the MKL as a provider for BLAS/LAPACK. Octopus will now detect that the MKL also provides the FFTW API and will refuse to compile when both the FFTW library and the MKL are given to the configure script.

* Octopus: Add supported version range for libxc.
2020-08-02 09:55:08 -05:00
Todd Gamblin
b94a837760 berkeley-db: add version 18.1.40, update build options in package (#17839)
* berkeley-db: add version 18.1.40, update build options in package

* combine adamjstewart's changes

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-01 19:33:35 -05:00
Wouter Deconinck
7e6a77d907 New package: kassiopeia (#17742)
* [kassiopeia] New package

* [kassiopeia] Remove master branch, update dependencies

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

Unable to test since I do not have a license to intel-parallel-studio, but I see no reason why it would not work if.

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

* [kassiopeia] depends_on mpi

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

* [kassiopeia] cmake_args with self.spec.satisfies and elses

* [kassiopeia] args.extend -> args.append

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-01 17:40:21 -05:00
Simon Pintarelli
75f34126fc h5py does not correctly recognize hdf5 version on Cray (#17831)
* h5py: explicitly specify version

hdf5@1.10.5 on Cray is wrongly detected as 1.8.4.

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

Thanks. Also had this first, then CI was complaining about line length ...

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-08-01 16:26:41 -05:00
Mark W. Krentel
b0eb771b19 elfutils: add version 0.180 (#17835) 2020-08-01 16:26:13 -05:00
Axel Huebl
7498336f3d Hotfix: move CUDAHOSTCXX (#17826)
* Hotfix: move CUDAHOSTCXX

Set only in dependent packages.

* dependent compiler
2020-08-01 15:29:17 -05:00
Todd Gamblin
f3cb3a2eb8 license: fix up MIT license so it's an exact match
Before:

```console
$ licensee diff --license mit LICENSE-MIT
Comparing to MIT License:
Input Length:      1092
License length:    1020
Similarity:      92.46%
diff --git a/LICENSE b/LICENSE
index 0ce42af..be0ff1c 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,4 @@
{+spack project developers. see the top-level copyright file for details.+}
permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "software"), to deal in
the software without restriction, including without limitation the rights to
```

After:

```console
$ licensee diff --license mit LICENSE-MIT
Comparing to MIT License:
Input Length:       1020
License length:     1020
Similarity:      100.00%
Exact match!
```

This gets us a 100% license match from GitHub's `licensee` tool.
2020-08-01 10:06:28 -07:00
darmac
3ea9b9a014 Add new package: findbugs (#17825) 2020-08-01 11:46:02 -05:00
darmac
52858be668 Openfst: upgrade version and gcc constraint (#17830)
* openfst: upgrade version and gcc constraint

* refine version format
2020-08-01 11:41:12 -05:00
Todd Gamblin
ff27233e30 bugfix: fix spack buildcache list --allarch
`spack buildcache list` was trying to construct an `Arch` object and
compare it to `arch_for_spec(<spec>)`. for each spec in the buildcache.
`Arch` objects are only intended to be constructed for the machine they
describe. The `ArchSpec` object (part of the `Spec`) is the descriptor
that lets us talk about architectures anywhere.

- [x] Modify `spack buildcache list` and `spack buildcache install` to
      filter with `Spec` matching instead of using `Arch`.
2020-08-01 08:36:12 -07:00
Todd Gamblin
0c48f0a15d architecture: make it easier to get a Spec for the default arch
- [x] Make it easier to get a `Spec` with a proper `ArchSpec` from an
      `Arch` object via new `Arch.to_spec()` method.

- [x] Pull `spack.architecture.default_arch()` out of
      `spack.architecture.sys_type()` so we can get an `Arch` instead of
      a string.
2020-08-01 08:36:12 -07:00
Massimiliano Culpo
c65cde4cf8 Avoid update and upgrades to brew (#17815)
Ci is currently failing on brew update with the error:
```
Error: Cannot install bazelisk because conflicting formulae are installed.
  bazel: because Bazelisk replaces the bazel binary

Please `brew unlink bazel` before continuing.

Unlinking removes a formula's symlinks from /usr/local. You can
link the formula again after the install finishes. You can --force this
install, but the build may fail or cause obscure side effects in the
resulting software.
```
Avoiding:
```
$ brew update
$ brew upgrade
```
solves the issue by preventing the risk of conflicting formulae
2020-08-01 07:45:39 +02:00
Brian Van Essen
5c2b34e43b cuDNN (package): add version 7.6.5.32-10.2-linux-ppc64le (#17821) 2020-07-31 17:48:03 -07:00
Harmen Stoppels
d4831181ea Add libxc 5.0.0 (#17807)
With experimental CUDA support and some patches to make it compile.

Currently +shared and +cuda conflict, this has to be fixed upstream.
2020-07-31 18:01:39 -05:00
Michael Kuhn
346977f501 meson: Add 0.55.0 (#17816) 2020-07-31 18:01:12 -05:00
Adam J. Stewart
9d942df352 py-wheel: add new version (#17819) 2020-07-31 15:58:00 -07:00
Adam J. Stewart
89759cc1f1 py-setuptools: add new version (#17818) 2020-07-31 15:57:42 -07:00
Adam J. Stewart
4c35cc1b20 py-pip: add new version (#17817) 2020-07-31 15:57:27 -07:00
Massimiliano Culpo
9dbad500bc Move Python 2.6 unit tests to Github Actions (#17279)
* Run Python2.6 unit tests on Github Actions
* Skip url tests on Python 2.6 to reduce waiting times
* Skip foreground background tests on Python 2.6 to reduce waiting times
* Removed references to Travis in the documentation
* Deleted install_patchelf.sh (can be installed from repo on CentOS 6)
2020-07-31 15:01:12 -07:00
Adam J. Stewart
4aaa39d091 py-torchvision: add v0.7.0 2020-07-31 14:34:55 -07:00
Adam J. Stewart
58d383877d PyTorch: add v1.6.0 2020-07-31 14:32:56 -07:00
Adam J. Stewart
198ccfae4e Pandas: add v1.1.0 2020-07-31 14:20:17 -07:00
darmac
c2cd728e03 cp2k: support for aarch64 (#17786) 2020-07-31 16:17:31 -05:00
Brian Van Essen
46e7fbe120 LBANN: add versions, update CUDA support and dependencies (#17813)
* Update LBANN, Hydrogen, Aluminum to inherit CudaPackage
* Update CMake constraints: LBANN, Hydrogen, and Aluminum now require
  cmake@3.16.0: (better support for pthreads with nvcc)
* Aluminum: add variants for host-enabled MPI and RMA features in a
  MPI-GPU RDMA-enabled library
* NCCL: add versions 2.7.5-1, 2.7.6-1, and 2.7.8-1
* Hydrogen: add version 1.4.0
* LBANN: add versions 0.99 and 0.100
* Aluminum: add versions 0.4.0 and 0.5.0
2020-07-31 13:53:51 -07:00
Andrew W Elble
d89bc1d998 new package(s): py-gql (#17769)
* new package(s): py-gql

and related dependencies:
py-aiohttp
py-async-timeout
py-graphql-core
py-idna-ssl
py-multidict
py-websockets
py-yarl

new versions:
py-requests

* fixes

Co-authored-by: Andrew W Elble <aweits@skl-a-00.rc.rit.edu>
2020-07-31 14:54:25 -05:00
Rémi Lacroix
0303ef72ac libxc: Add version 4.3.4. (#17781) 2020-07-31 14:48:48 -05:00
darmac
e938e439b9 Add new package: mongodb-async-driver (#17787) 2020-07-31 14:45:35 -05:00
darmac
8df17d3830 open-iscsi: refine runtime environment (#17789) 2020-07-31 14:43:40 -05:00
Xavier Delaruelle
c7e83a8375 environment-modules: add version 4.5.2 (#17795) 2020-07-31 14:42:08 -05:00
Andrew Gaspar
c436414352 Add Rust versions 1.45.1 and 1.44.1 (#17812) 2020-07-31 14:30:00 -05:00
darmac
b7e0fec5f0 Alluxio (package): update url, add versions (#17805)
* Add versions 2.2.1 and 2.2.0
* Remove version 2.1.0
* Add dependency on Java
2020-07-31 11:25:22 -07:00
Justin S
cab2af9a71 py-mixedhtseq: new package at 0.1.0 (#17702)
* py-mixedhtseq: new package at 0.1.0

* py-mixedhtseq: flake8 fixes
2020-07-31 11:58:53 -05:00
Justin S
da5bbe3cef py-gpy: add 0.8.8 (#17548)
* py-gpy: add 0.8.8

* py-gpy: remove unneeded dep

* py-gpy: make cython build-only
2020-07-31 11:55:49 -05:00
Edoardo Aprà
154870da0b NWChem 7.0.0 (#17779)
* NWChem 7.0.0

* add python2 for 6.8.1. removed 6.8 https://github.com/spack/spack/pull/17779#discussion_r462700413

* nwchem 6.8.1 breaks with gcc 10 and later

* restored extra python bits for version 6.8.1. add env. definition of basis libraries

* changes for flake8

* url fixed

* prevent 6.8.1 being compiled with gcc 10
2020-07-31 10:45:27 -05:00
Andrew W Elble
edba70557d new package(s): py-torch-geometric (#17768)
* new package(s): py-torch-geometric
(with related dependencies: py-rdflib, py-googledrivedownloader)

* fixes
2020-07-31 10:41:24 -05:00
Claire Guilbaud
fd15fc9c70 sphinx copybutton: new package at v0.2.12 (#17632) 2020-07-31 11:41:56 +02:00
Claire Guilbaud
41f743b45d recommonmark: new package at v0.6.0 (#17629) 2020-07-31 11:39:53 +02:00
Rémi Lacroix
ccb316964d Improve Ferret package (#17620)
* Ferret: Add missing dependency with curl.

* Ferret: Don't force using the static version of libgfortran.

* Ferret: Ensure Spack's compiler wrappers are used.

This allows properly setting the rpaths.

* Ferret: Add support for versions 7.3 to 7.6.

* Ferret: Add a variant to install Ferret standard datasets.

* Ferret: Define some useful runtime environnement variables.

* Ferret: Fix flake8.

Also add myself as a maintainer as suggested by @alalazo.
2020-07-30 22:23:49 -05:00
Tom Payerle
58911d8248 kahip: Fix issue #17638 (make SConstruct files python3 friendly) (#17642)
As discussed in issue #17638, wherein kahip fails to build when
scons is dependent on python@3.

This converts the print statements in various SConstruct files
into python3 friendly print functions.

I found most of the affected SConstruct files in both @2.00 and
the later versions I found on web, but some files were only in @2.00.
I split the patches into two files for that reason, but have not
tried the later versions.
2020-07-30 22:22:40 -05:00
vvolkl
f09656e3f8 New Versions: dd4hep, podio (#17659)
* [dd4hep] add new patch version

* [podio] add new version and update env vars

* [dd4hep] add hepmc3 variant
2020-07-30 22:21:02 -05:00
Rémi Lacroix
d609a6dde7 Update LAMMPS package (#17715)
* LAMMPS: Use LATTE 1.2.2 starting with version 20200602.

Version 20200602 and upper requires Latte 1.2.2. This caused the internal Latte distribution to be used instead of the Latte install provided by Spack.

* LAMMPS: Add new versions 20200630 and 20200721.
2020-07-30 22:19:59 -05:00
ketsubouchi
45a67fa0f3 dcmtk: fixed type error (#17758)
* dcmtk: fixed type error

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-30 22:18:55 -05:00
Francine Lapid
32b070a76b New package: IDL (#17451)
* New package: IDL

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

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

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

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

* added license header and changed url_for_version to just url

* removed unused imports, addressed comments

* removed trailing whitespace on line 14

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-30 22:17:35 -05:00
darmac
9c7c4a739f mozjs@1.8.5: fix compile issue (#17594)
* mozjs@1.8.5: fix compile issue

* mozjs: refine method
2020-07-30 22:15:53 -05:00
Tomoki, Karatsu
50f96e15de vtk: Support for new option to enable MPI. (#17727) 2020-07-30 22:05:20 -05:00
Daryl W. Grunau
7dd5793b75 backport Mesa MR#6053 to prevent multiply-defined symbols (#17720)
Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
2020-07-30 22:04:24 -05:00
G-Ragghianti
b86e620743 Fixing problems caused by a comfused spack concretizer (#17797) 2020-07-30 22:01:48 -05:00
Harmen Stoppels
6fb8946dd5 Add variants to squashfs for different compression algorithms (#17755) 2020-07-30 22:01:13 -05:00
Lucas Frérot
cfbcf719db New package: py-uvw (#17719)
* py-uvw: added package for versions 0.0.7 and 0.3.1

* py-uvw: added py-setuptools as dependency
2020-07-30 21:52:17 -05:00
Dr Owain Kenway
8b515f3ba0 flang: make sure to find libstdc++ if needed (#17480) 2020-07-30 14:55:16 +02:00
Adam J. Stewart
d512537417 Python: added v3.8.4, v3.8.5, v3.7.7, v3.7.8, v3.6.11 (#17775)
Also added older version in the 3.6 and 3.5 series
2020-07-30 14:49:01 +02:00
G-Ragghianti
2f5e4e1664 MAGMA isn't compatible with CUDA 11 (#17753)
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-30 11:24:21 +02:00
G-Ragghianti
7b051df83f slate package: resolve issues with cuda version and fortran compiler name (#17759)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-30 11:21:49 +02:00
darmac
b96448269a couchdb: new package at v3.1.0 (#17595) 2020-07-30 11:17:19 +02:00
Wouter Deconinck
b24a9a383a lhapdf5: new package at v5.9.1 (#17746)
During configure lhapdf5 searches for python. On one system
I tested on (ubuntu 19.10) it finds a system installed python3
and fails to create the python extension.

Variant named to make explicit that this is only a python2 extension.
2020-07-30 11:11:17 +02:00
Rémi Lacroix
cd1647af66 latte: added v1.2.2 and master (#17714)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-30 10:19:59 +02:00
darmac
d5fc3f267c zipkin: new package at v2.21.5 (#17780) 2020-07-30 10:03:52 +02:00
Glenn Johnson
f0ce129c43 New package: r-hh (#17667)
* New package: r-hh

* Add short description

Add the project one liner for a short description that will be used for
`module whatis`.
2020-07-29 22:25:01 -05:00
ilbiondo
d61f362211 Updated iq-tree package (#17690) 2020-07-29 22:20:44 -05:00
Robert Mijakovic
8ea597c79a Intel packages: new versions (#17692)
* 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.

* Adds hashes for new versions of Intel packages.

* Adds missing hash of Intel compiler.

* Adds the newest version of Intel MPI 2019.8.

* Fixes hash for intel-parallel-studio and intel-tbb.

* Fixes version number of Intel MPI.

Co-authored-by: Robert Mijakovic <robert.mijakovic@lrz.de>
2020-07-29 22:18:32 -05:00
Rémi Lacroix
e7fbd6c53e CMake: Fix compilation with Intel compilers on some systems. (#17693)
Systems with older GNU compilers were not affected.

This commit fixes #15901 and fixes #17605.
2020-07-29 22:17:32 -05:00
Tiziano Müller
8e49cac433 pgi: update to 20.4 (#17696) 2020-07-29 22:16:30 -05:00
Shayna Kapadia
867e64cb4f libmodbus: new package (#17778)
* libmodbus:adding new package

* fixing testing failures

* fixing flake 8 errors

* fixing flake 8 errors

Co-authored-by: Kapadia <kapadia2@llnl.gov>
2020-07-29 22:13:58 -05:00
Rao Garimella
3a8815ea7a update version to 1.1.5 (#17701)
Co-authored-by: Rao Garimella <rao@abyzou.lanl.gov>
2020-07-29 22:12:10 -05:00
Toyohisa Kameyama
d14baf4532 use libquadmath only x86_4 and ppcle. (#17728) 2020-07-29 21:47:18 -05:00
Mark Olesen
badd11e71c openfoam package updates, scotch version update (#17731)
* openfoam: use MPI 'headers' property (fixes #17730)

* openfoam: +spdp variant, usable for OpenFOAM 1906 and later

in contrast to +float32, which uses single-precision throughout, +spdp
uses the following:

- single-precision for most internals
- double-precision for linear solver

* openfoam: add m4 as build dependency

* scotch: update to 6.0.9 released Oct 2019

Co-authored-by: Mark Olesen <Mark.Olesen@esi-group.com>
2020-07-29 21:45:40 -05:00
Valentin Clement (バレンタイン クレメン)
42dec9eb12 CLAW: Add version 2.0.2 (#17733) 2020-07-29 21:43:14 -05:00
Wouter Deconinck
6b3f9c5d60 New package: vgm (#17741)
* [vgm] new package Virtual Geometry Model (VGM)

* [vgm] Updated description
2020-07-29 21:04:37 -05:00
Wouter Deconinck
ba5aa67303 New package: geant4-vmc (#17745)
* [geant4-vmc] New package

* [geant4-vmc] aligned spacing
2020-07-29 20:44:16 -05:00
David Böhme
21ca7abf8d Add Caliper v2.4.0 (#17750)
* Add Caliper v2.4.0

* Use built-in gotcha
2020-07-29 20:41:41 -05:00
Julien Loiseau
efb456cb0a Adding pic support for Kokkos (#17751)
* Adding pic support for Kokkos

* Update pic for kokkos
2020-07-29 20:40:12 -05:00
h-denpo
4e12dc3303 elang add depends_on('ncurses', type='link') (#17761) 2020-07-29 20:30:04 -05:00
Mark W. Krentel
896e83e3e6 libunwind: add +pic variant (#17762)
Libunwind already builds a shared library.  The +pic variant adds the
compiler pic flag to the static archive so that it can be linked into
another shared library.
2020-07-29 20:29:24 -05:00
ketsubouchi
8435016a43 eagle: fix CC=gcc and delete march=native (#17763) 2020-07-29 20:28:31 -05:00
Justin S
416a929f7f spades: add 3.14.1 (#17776) 2020-07-29 20:03:58 -05:00
Robert Pavel
af778aac0a Tweak to EOSPAC for gcc@10 Support (#17777)
Eospac's build breaks on gcc@10: due to dependence on -fcommon behavior
and gnu changing to -fno-common. Added conditional argument to support
bleeding edge compilers
2020-07-29 20:03:12 -05:00
tilne
5a5f2c00a8 update URL and sha256 for aws-parallelcluster 2.8.0 (#17685)
Signed-off-by: Tim Lane <tilne@amazon.com>
2020-07-29 19:35:43 -05:00
Jen Herting
5243f97c3b [bowtie2] added version 2.4.1 (#17748) 2020-07-29 15:15:33 -07:00
Rémi Lacroix
5a42883528 Boost: Update conflicts for version 1.73.0. (#17774)
Variant "+mpi+python cxxstd=98" is fixed in 1.73.0.
2020-07-29 12:08:20 -07:00
ketsubouchi
1827db2859 express: add cast for %fj (#17764) 2020-07-29 11:53:39 -07:00
Toyohisa Kameyama
5b12c0f4a0 clamcv: Add curl dependency. (#17765) 2020-07-29 11:48:07 -07:00
darmac
a0e6145884 Add new package: solr (#17597)
* Add new package: solr

* refine version order
2020-07-29 11:38:44 -07:00
Massimiliano Culpo
e47e972cf2 zlib: style changes to check if set of changed files is computed correctly 2020-07-29 11:23:34 -07:00
Massimiliano Culpo
3e1661a183 Use "fetch-depth: 0" to retrieve all history from remote 2020-07-29 11:23:34 -07:00
Massimiliano Culpo
c4f29c6384 Simplified YAML files for Github Actions workflows
Updated actions where needed
2020-07-29 11:23:34 -07:00
Massimiliano Culpo
1f7f076189 Group tests with similar duration together
Style and documentation tests take just a few minutes
to run. Since in Github actions one can't restart a single
job but needs to restart an entire workflow, here we group
tests with similar duration together.
2020-07-29 11:23:34 -07:00
Matthias Wolf
90648bb477 qt: fix build with ~ssl. (#17767)
OpenSSL was pulled from the spec too early, leading to failures when
attempting to build with ~ssl.
2020-07-29 10:53:01 -07:00
Andrew W Elble
d1494fe8da perl: add missing berkeley-db dependency (#17771) 2020-07-29 10:46:24 -07:00
Massimiliano Culpo
cad21d6eb1 lmod: change variant defaults to match Lmod's defaults (#17770) 2020-07-29 10:35:46 -07:00
mic84
a212bb0577 Amrvis: update branch name (#17718) 2020-07-28 09:12:00 -07:00
Todd Gamblin
f24dd29cd2 Merge tag 'v0.15.3' into develop 2020-07-28 02:18:30 -07:00
Todd Gamblin
0f25462ea6 update CHANGELOG.md for 0.15.3 2020-07-28 02:11:06 -07:00
Todd Gamblin
ae4bbbd241 bump version number for 0.15.3 2020-07-28 02:05:26 -07:00
Greg Becker
24bd9e3039 bugfix: allow relative view paths (#17721)
Relative paths in views have been broken since #17608 or earlier.

- [x] Fix by passing base path of the environment into the `ViewDescriptor`.
      Relative paths are calculated from this path.
2020-07-27 23:48:59 -07:00
Greg Becker
158ee6ac25 bugfix: allow relative view paths (#17721)
Relative paths in views have been broken since #17608 or earlier.

- [x] Fix by passing base path of the environment into the `ViewDescriptor`.
      Relative paths are calculated from this path.
2020-07-27 23:44:56 -07:00
Todd Gamblin
cefb4ba014 tutorial: Add boto3 installation to setup script (#17722) 2020-07-27 16:55:33 -07:00
Todd Gamblin
0efb8ef412 tutorial: Add boto3 installation to setup script 2020-07-27 15:55:44 -07:00
Patrick Gartung
7c61d6d45f Update darshan package with mpi variant (#17717)
* Update darshan package with nompi variant.

* Change variant to mpi and default to True
2020-07-27 16:30:29 -05:00
Glenn Johnson
ff529e6dc1 r-adespatial: added new package (#17700)
This PR adds the r-adesaptial package and several other new packages as
dependencies.

- r-adegraphics
- r-adephylo
- r-phylobase
- r-rncl
- r-rnexml
2020-07-27 22:08:48 +02:00
Glenn Johnson
1c0abaa6eb r-dss: added new package at v2.36.0 with dependencies (#17661)
This PR adds the r-dss package and the r-bsseq package, also new, as a
dependency. This includes the latest versions, which required updates to
the following dependencies:

- r-biocgenerics
- r-iranges
- r-s4vectors
- r-summarizedexperiment

Older versions of r-dss and r-bsseq are included as well to ensure
compatibility with older versions of the above dependencies.
2020-07-27 20:51:27 +02:00
Patrick Gartung
69775fcc07 Relocation of sbang needs to be done when the spack prefix changes even if the install tree has not changed. (#17455) 2020-07-27 11:38:48 -07:00
Patrick Gartung
ce772420dd Relocate rpaths for all binaries, then do text bin replacement if the rpaths still exist after running patchelf/otool (#17418) 2020-07-27 11:28:50 -07:00
Seth R. Johnson
6c2749536e qt: fixed build with apple-clang (#17706) 2020-07-27 18:32:29 +02:00
Adam J. Stewart
4e4b8d8249 SciPy: added v1.5.2 (#17708) 2020-07-27 18:26:30 +02:00
ketsubouchi
032a52e006 scons: added support to Fujitsu compilers (#17710) 2020-07-27 18:23:53 +02:00
Hadrien G
e3cc7fc38c acts: added v0.29 (#17712) 2020-07-27 18:13:56 +02:00
Amjad Kotobi
f2e66730d0 openmpi: added lustre variant to openmpi (#17478) 2020-07-27 18:11:57 +02:00
Claire Guilbaud
0ebdfb3c37 sphinxcontrib-mermaid: new package at v0.4.0 (#17630) 2020-07-27 17:30:22 +02:00
Claire Guilbaud
fdb21e3e91 json logger: new package at v0.1.11 (#17628) 2020-07-27 16:32:56 +02:00
Claire Guilbaud
d66d430ab5 pygments pytest: new package at v1.2.0 (#17626) 2020-07-27 15:44:26 +02:00
Claire Guilbaud
bbfc9fd448 commonmark: new package at v0.9.0 (#17624) 2020-07-27 15:02:56 +02:00
Claire Guilbaud
e960e016af hieroglyph: new package at v1.0.0 (#17625) 2020-07-27 14:34:40 +02:00
Claire Guilbaud
074c0d622f python docs theme: new package at v2020.1 (#17627) 2020-07-27 12:53:04 +02:00
Claire Guilbaud
458a9f22da yolk3k: new package at v0.9 (#17635) 2020-07-27 12:48:58 +02:00
Claire Guilbaud
38730c6e68 sphinxcontrib trio: new package at v1.1.2 (#17631) 2020-07-27 12:14:12 +02:00
Claire Guilbaud
21a4edb1f3 sphinx gallery: new package at v0.7.0 (#17633) 2020-07-27 11:21:48 +02:00
Greg Becker
9cc01dc574 add tutorial setup script to share/spack (#17705)
* add tutorial setup script to share/spack

* Add check for Ubuntu 18, fix xvda check, fix apt-get errors
  - now works on t2.micro, t2.small, and m instances
  - apt-get needs retries around it to work

Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2020-07-27 01:18:16 -07:00
Greg Becker
1ceec31422 add tutorial setup script to share/spack (#17705)
* add tutorial setup script to share/spack

* Add check for Ubuntu 18, fix xvda check, fix apt-get errors
  - now works on t2.micro, t2.small, and m instances
  - apt-get needs retries around it to work

Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2020-07-27 01:17:58 -07:00
Todd Gamblin
8d8cf6201b bugfix: don't redundantly print ChildErrors (#17709)
A bug was introduced in #13100 where ChildErrors would be redundantly
printed when raised during a build. We should eventually revisit error
handling in builds and figure out what the right separation of
responsibilities is for distributed builds, but for now just skip
printing.

- [x] SpackErrors were designed to be printed by the forked process, not
      by the parent, so check if they've already been printed.
- [x] update tests
2020-07-26 22:43:10 -07:00
Todd Gamblin
d351946194 bugfix: don't redundantly print ChildErrors (#17709)
A bug was introduced in #13100 where ChildErrors would be redundantly
printed when raised during a build. We should eventually revisit error
handling in builds and figure out what the right separation of
responsibilities is for distributed builds, but for now just skip
printing.

- [x] SpackErrors were designed to be printed by the forked process, not
      by the parent, so check if they've already been printed.
- [x] update tests
2020-07-26 22:41:55 -07:00
Hadrien G
907f9e8411 [root] Add version 6.22 (#17459)
* Add ROOT v6.22

* Hello xext my old friend...
2020-07-26 10:08:53 -05:00
Patrick Gartung
66d59a90ed Rename sas static-analysis-package (#17695) 2020-07-24 17:07:01 -07:00
Nicholas Sly
5795f1d7da Add Totalview package (#17643)
* Add initial totalview package.

* Add maintainer and helpful comments/information.

Co-authored-by: sly <sly@lanl.gov>
2020-07-24 16:01:32 -07:00
t-nojiri
de6dfe3707 brltty (package): Add dependency on alsa-lib (#17616) 2020-07-24 15:56:34 -07:00
Jen Herting
148acfefcc py-gensim (package): add version 3.8.3; update dependency constraints (#17641) 2020-07-24 15:47:19 -07:00
Matthieu Dorier
b04f9e6774 MPICH (package): add optional support for argobots (#17678) 2020-07-24 15:42:00 -07:00
Christian Tacke
0e090064c4 singularity: Add version 3.6.1 2020-07-24 15:35:40 -07:00
vvolkl
be06803804 WHIZARD (package): add LCIO dependency, Openloops support (#17658)
* WHIZARD: add versions 2.8.4 and 2.8.3
* New package: LCIO
* WHIZARD: add optional dependency on LCIO
* WHIZARD: add optional dependency on Openloops
* WHIZARD: allow building with either hepmc or hepmc3 dependencies
* Openloops: set process_lib_dir in configure
* Openloops: fix reference to variant
2020-07-24 15:25:57 -07:00
Dennis Klein
0c63c94103 Relax architecture compatibility check (#15972)
* Relax architecture compatibility check
* Add test coverage for the spack.abi module
2020-07-24 10:00:55 -07:00
Andrew W Elble
99c46e8186 py-astropy: force re-cythonization of distributed .pyx files (#17567)
astropy 3.2.1 fails to build with python 3.8.3 with
errors similar to this:

astropy/stats/_stats.c:318:11: error: too many arguments to function 'PyCode_New'
PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)

These are files that are generated by cython, but are included in the
tarball. Since there's apparently been an API change to PyCode_New, they will
need to be re-cythonized to compile correctly.
2020-07-24 17:46:56 +02:00
Andrew W Elble
30d0347825 py-astropy-healpix: new package (#17568) 2020-07-24 17:39:45 +02:00
jdomke
ea50e4036e scorep: add libunwind dependency (#17580) 2020-07-24 17:30:50 +02:00
Adam J. Stewart
f73a3d35a8 spack help --spec: add compiler flags (#17584) 2020-07-24 17:27:43 +02:00
Dmitriy
02f14fd857 Initialize new_specs in Environment.remove() (#17592) 2020-07-24 17:18:40 +02:00
Harmen Stoppels
54bce00d4d Ensure that the stubs directory does not end up in the rpath (#17619) 2020-07-24 17:02:58 +02:00
Jon Rood
d3e4b14997 imagemagick: added dependency on libsm (#17577) 2020-07-24 17:00:25 +02:00
rempke
6bad79fca0 netlib-scalapack: fixed compilation with gcc 10 (#17647) 2020-07-24 16:53:32 +02:00
t-nojiri
13b3578d2f camx: change compile option for aarch64 (#17653) 2020-07-24 16:39:40 +02:00
Adam J. Stewart
08b5b56566 Qhull: add v2019.1 and v2020.1 (#17648)
* Qhull: add v2019.1 and v2020.1
* Fix compilation with Apple Clang
2020-07-24 16:16:53 +02:00
Adam J. Stewart
c1a2d66804 py-matplotlib: fix freetype and qhull dependencies (#17649) 2020-07-24 16:15:50 +02:00
Mark Olesen
c95c183bc4 openfoam: install META-INFO directory (#17673)
Co-authored-by: Mark Olesen <Mark.Olesen@esi-group.com>
2020-07-24 15:32:18 +02:00
Michael Kuhn
ed4b770e1a gcc: added v10.2.0 (#17681) 2020-07-24 15:24:12 +02:00
Federico Ficarelli
b8c3e3e16f hipsycl: switch to renamed default branch (#17689) 2020-07-24 15:19:59 +02:00
Rémi Lacroix
d9c1b62d38 CMake: added v3.18.0. (#17688) 2020-07-24 15:02:08 +02:00
ilbiondo
1aa1ddcd78 Updated elmer-fem recipe (#17687) 2020-07-24 09:47:09 +02:00
Adam J. Stewart
5fed42eae8 NumPy: add v1.19.1 2020-07-23 17:56:48 -07:00
ketsubouchi
1bbf8c0635 libgd (package): update configure to find jpeg dependency (#17655) 2020-07-23 17:55:34 -07:00
ketsubouchi
1fe07891e3 cctools (package): remove fstack-protector-all for Fujitsu compiler (#17656)
The Fujitsu C compiler does not support the "fstack-protector-all" option.
2020-07-23 17:49:37 -07:00
Tamara Dahlgren
a88675ffa9 XBraid (package): Switch to Github URL (#17670) 2020-07-23 17:27:25 -07:00
Gregory Becker
63db5499ee Merge tag 'v0.15.2' into develop 2020-07-23 16:55:22 -07:00
Gregory Becker
d6d839cd3e update changelog for 0.15.2 2020-07-23 16:04:26 -07:00
Gregory Becker
3534717151 bump version number for 0.15.2 2020-07-23 16:04:08 -07:00
Chuck Atkins
547c71ad78 Revert "Add libglvnd packages/Add EGL support (#14572)" (#17682)
This reverts commit 573489db71.
2020-07-23 17:41:48 -04:00
Greg Becker
e289d481ea add tutorial public key to share/spack/keys dir (#17684) 2020-07-23 14:38:26 -07:00
Greg Becker
cdab4bdee0 add tutorial public key to share/spack/keys dir (#17684) 2020-07-23 14:35:25 -07:00
Greg Becker
ed8250e055 cray: detect shasta os properly (#17467)
Fixes #17299

Cray Shasta systems appear to use an unmodified Sles or other Linux operating system on the backend (like Cray "Cluster" systems and unlike Cray "XC40" systems that use CNL).

This updates the CNL version detection to properly note that this is the underlying OS instead of CNL and delegate to LinuxDistro.
2020-07-23 14:01:09 -07:00
robo-wylder
40cd845479 environment-views: fix bug where missing recipe/repo breaks env commands (#17608)
* environment-views: fix bug where missing recipe/repo breaks env commands

When a recipe or a repo has been removed from Spack and an environment
is active, it causes the view activation to crash Spack before any
commands can be executed. Further, the error message it not at all clear
in explaining the issue.

This forces view regeneration to always start from scratch to avoid the
missing package recipes, and defaults add_view=False in main for views activated
by the `spack -e` option.

* add messages to env status and deactivate

Warn users that a view may be corrupt when deactivating an environment
or checking its status while active. Updated message for activate.

* tests for view checking

Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-07-23 14:00:42 -07:00
Peter Scheibel
3b45241566 Update fetch order to match iteration order of MirrorReference (#17572) 2020-07-23 14:00:14 -07:00
Tamara Dahlgren
d5b0f85ea3 Reduce output verbosity with debug levels (#17546)
* switch from bool to int debug levels

* Added debug options and changed lock logging to use more detailed values

* Limit installer and timestamp PIDs to standard debug output

* Reduced verbosity of fetch/stage/install output, changing most to debug level 1

* Combine lock log methods; change build process install to debug

* Changed binary cache install messages to extraction messages
2020-07-23 13:59:12 -07:00
eugeneswalker
c6241e72a6 bugfix: use getattr for variation.prefix/suffix (#17669) 2020-07-23 13:56:45 -07:00
Todd Gamblin
f528022a7d bugfix: make compiler preferences slightly saner (#17590)
* bugfix: make compiler preferences slightly saner

This fixes two issues with the way we currently select compilers.

If multiple compilers have the same "id" (os/arch/compiler/version), we
currently prefer them by picking this one with the most supported
languages.  This can have some surprising effects:

* If you have no `gfortran` but you have `gfortran-8`, you can detect
  `clang` that has no configured C compiler -- just `f77` and `f90`. This
  happens frequently on macOS with homebrew. The bug is due to some
  kludginess about the way we detect mixed `clang`/`gfortran`.

* We can prefer suffixed versions of compilers to non-suffixed versions,
  which means we may select `clang-gpu` over `clang` at LLNL. But,
  `clang-gpu` is not actually clang, and it can break builds. We should
  prefer `clang` if it's available.

- [x] prefer compilers that have C compilers and prefer no name variation
  to variation.

* tests: add test for which()
2020-07-23 13:56:18 -07:00
Harmen Stoppels
665a47607e ci pipelines: activate environment without view (#17440) 2020-07-23 13:55:46 -07:00
Todd Gamblin
12958497dc bugfix: ignore Apple's "gcc" by default (#17589)
Apple's gcc is really clang. We previously ignored it by default but
there was a regression in #17110.

Originally we checked for all clang versions with this, but I know of
none other than `gcc` on macos that actually do this, so limiting to
`apple-clang` should be ok.

- [x] Fix check for `apple-clang` in `gcc.py` to use version detection
  from `spack.compilers.apple_clang`
2020-07-23 13:55:11 -07:00
Scott Wittenburg
3a8bc7ffc6 buildcache: list all mirrors even if one fails 2020-07-23 13:54:36 -07:00
Scott Wittenburg
9cbe358f84 Bugfix/install missing compiler from buildcache (#17536)
Ensure compilers installed from buildcache are registered.
2020-07-23 13:53:46 -07:00
Scott Wittenburg
27af499b52 adept-utils: 1.0.1 does not build w/ boost 1.73.0 or newer (#17560) 2020-07-23 13:52:37 -07:00
Harmen Stoppels
24dff9cf20 Fix security issue in CI (#17545)
The `spack-build-env.txt` file may contains many secrets, but the obvious one is the private signing key in `SPACK_SIGNING_KEY`. This file is nonetheless uploaded as a build artifact to gitlab. For anyone running CI on a public version of Gitlab this is a major security problem. Even for private Gitlab instances it can be very problematic.

Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
2020-07-23 13:52:09 -07:00
Dr Owain Kenway
e4265d3135 llvm-flang: Only build offload code if cuda enabled (#17466)
* llvm-flang Only build offload code if cuda enabled

The current version executes `cmake(*args)` always as part of the post install.  If device offload is not part of the build, this results in referencing `args` without it being set and the error:

```
==> Error: UnboundLocalError: local variable 'args' referenced before assignment

```

Looking at prevoous version of `llvm-package.py` this whole routine appears to be only required for offload, some indent `cmake/make/install` to be under the `if`.

* Update package.py

Add comment
2020-07-23 13:51:35 -07:00
Sajid Ali
5e5cc99147 clear mpicc and friends before each build (#17450)
* clear mpi env vars
2020-07-23 13:48:47 -07:00
Greg Becker
44bc176d08 cray: detect shasta os properly (#17467)
Fixes #17299

Cray Shasta systems appear to use an unmodified Sles or other Linux operating system on the backend (like Cray "Cluster" systems and unlike Cray "XC40" systems that use CNL).

This updates the CNL version detection to properly note that this is the underlying OS instead of CNL and delegate to LinuxDistro.
2020-07-23 13:20:03 -07:00
robo-wylder
3c145b42bc environment-views: fix bug where missing recipe/repo breaks env commands (#17608)
* environment-views: fix bug where missing recipe/repo breaks env commands

When a recipe or a repo has been removed from Spack and an environment
is active, it causes the view activation to crash Spack before any
commands can be executed. Further, the error message it not at all clear
in explaining the issue.

This forces view regeneration to always start from scratch to avoid the
missing package recipes, and defaults add_view=False in main for views activated
by the `spack -e` option.

* add messages to env status and deactivate

Warn users that a view may be corrupt when deactivating an environment
or checking its status while active. Updated message for activate.

* tests for view checking

Co-authored-by: Gregory Becker <becker33@llnl.gov>
2020-07-23 11:00:58 -07:00
Peter Scheibel
ae82650174 Update fetch order to match iteration order of MirrorReference (#17572) 2020-07-23 10:58:59 -07:00
Greg Becker
e8aa737b09 util.executable.which: handle path separators like /bin/which (#17668)
* util.executable.which: handle path separators like /bin/which

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-07-23 10:54:25 -07:00
ilbiondo
f42394daf5 csa-c: added new package at master (#17676)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-07-23 17:07:48 +02:00
ilbiondo
10dacc2588 nn-c: added new package at v1.86.2 (#17675)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-07-23 17:06:35 +02:00
ilbiondo
5067b956f4 Shapeit4: added new package at v4.1.3 (#17674) 2020-07-23 13:22:58 +02:00
Tamara Dahlgren
605c1a76e0 Reduce output verbosity with debug levels (#17546)
* switch from bool to int debug levels

* Added debug options and changed lock logging to use more detailed values

* Limit installer and timestamp PIDs to standard debug output

* Reduced verbosity of fetch/stage/install output, changing most to debug level 1

* Combine lock log methods; change build process install to debug

* Changed binary cache install messages to extraction messages
2020-07-23 00:49:57 -07:00
Nick Robison
39cfa9630c [M4] Add missing compiler flag on Cray Compiler (#17604)
* [M4] Add missing compiler flag on Cray Compiler

The new version of the Cray Compiler are based on Clang, which means we
need to add the same LDFLAG as other clang environments.
2020-07-22 23:55:03 -07:00
Adam J. Stewart
4b33558707 Cython: add v0.29.21 (#17650) 2020-07-22 18:36:55 -07:00
Jen Herting
48e8072b26 New Package: py-boto (#17639)
Added py-boto package
2020-07-22 17:52:36 -07:00
Frédéric Simonis
37fa6fe343 precice: Add version 2.1.0 (#17644) 2020-07-22 16:49:36 -07:00
eugeneswalker
f1eec05d0e bugfix: use getattr for variation.prefix/suffix (#17669) 2020-07-22 16:15:25 -07:00
Mark W. Krentel
4c7e52adaa hpctoolkit: add version 2020.07.21 (#17645) 2020-07-22 13:53:41 -07:00
Ben Bergen
4ca6d1f0f7 Added variant to enable Legion SPY logging. (#17637) 2020-07-22 11:41:20 -06:00
Hadrien G
b8135bd205 [acts] Add version 0.28.0 (#17622)
Add acts v0.28.0
2020-07-22 09:14:51 -07:00
Justin S
dedadcd2ea hisat2 (package): add version 2.2.0, update homepage (#17600) 2020-07-21 19:29:18 -07:00
Adam J. Stewart
983aeea850 New packages: py-azure-cli and dependencies (#17585) 2020-07-21 19:21:29 -07:00
Todd Gamblin
0c44a9a504 bugfix: make compiler preferences slightly saner (#17590)
* bugfix: make compiler preferences slightly saner

This fixes two issues with the way we currently select compilers.

If multiple compilers have the same "id" (os/arch/compiler/version), we
currently prefer them by picking this one with the most supported
languages.  This can have some surprising effects:

* If you have no `gfortran` but you have `gfortran-8`, you can detect
  `clang` that has no configured C compiler -- just `f77` and `f90`. This
  happens frequently on macOS with homebrew. The bug is due to some
  kludginess about the way we detect mixed `clang`/`gfortran`.

* We can prefer suffixed versions of compilers to non-suffixed versions,
  which means we may select `clang-gpu` over `clang` at LLNL. But,
  `clang-gpu` is not actually clang, and it can break builds. We should
  prefer `clang` if it's available.

- [x] prefer compilers that have C compilers and prefer no name variation
  to variation.

* tests: add test for which()
2020-07-21 18:48:37 -07:00
Hadrien G
b81339cf80 [acts] Add 0.27.x series (#17621)
Add acts v0.27 and v0.27.1
2020-07-21 10:56:18 -07:00
Harmen Stoppels
6c69b8a4d4 ci pipelines: activate environment without view (#17440) 2020-07-21 10:15:43 -07:00
Tiziano Müller
ec1237479e cp2k: make libint optional (#17618) 2020-07-21 09:13:59 -07:00
t-nojiri
40e2a41477 aegean (package): remove -m64 on aarch64 (#17615) 2020-07-20 23:57:09 -07:00
Hadrien G
f168d63586 acts: added v0.26 (#17602) 2020-07-21 08:37:21 +02:00
Nick Robison
78a84efb4b flatbuffers: added v0.12.0 (#17603) 2020-07-21 08:30:44 +02:00
Seth R. Johnson
c6891376f4 qt4: add missing libSM dependency (#17611)
See https://github.com/spack/spack/issues/15082 and
https://github.com/spack/spack/pull/16226
2020-07-21 08:12:36 +02:00
Mark W. Krentel
83b281f36b hpcviewer, ibm-java: new versions (#17612)
Add hpcviewer version 2020.07 and ibm-java 8.0.6.11.
2020-07-21 08:09:53 +02:00
Tamara Dahlgren
86ec698a33 Bugfix: Do not raise InstallError for ascent_ver (#17578) 2020-07-20 18:32:56 -07:00
Todd Gamblin
897e80e596 bugfix: ignore Apple's "gcc" by default (#17589)
Apple's gcc is really clang. We previously ignored it by default but
there was a regression in #17110.

Originally we checked for all clang versions with this, but I know of
none other than `gcc` on macos that actually do this, so limiting to
`apple-clang` should be ok.

- [x] Fix check for `apple-clang` in `gcc.py` to use version detection
  from `spack.compilers.apple_clang`
2020-07-20 18:24:18 -07:00
Massimiliano Culpo
ab32799b52 Fix MacOS build tests (#17542)
* MacOS build tests

- Run on PR that modify the YAML file of the workflow
- Don't clone Spack, since we are in the Spack repo now

* Try to add opengl to configuration to build jupyter

* fixup
2020-07-20 17:25:42 -07:00
Dr. Christian Tacke
bd236918dd Configuration: allow usage of command-line scopes with environments (#14608)
Spack did not support usage of the `--config-scope` option in
combination with an environment: In `lib/spack/spack/main.py`,
`spack.config.command_line_scopes` is set equal to any config scopes
passed by the `--config-scope` option. However, this is done after
activating an environment. In the process of activating an environment,
the `spack.config.config` singleton is instantiated, so later setting of
`spack.config.command_line_scopes` is ignored.

This commit sets command line scopes before activating an environment to
ensure that they are included in the configuration.

Co-authored-by: Tim Fuller <tjfulle@sandia.gov>
2020-07-20 13:58:06 -07:00
Justin S
3949a85f9a py-dp-gp-cluster: new package at 2019-09-22 (#17549)
* py-dp-gp-cluster: new package

* py-dp-gp-cluster: remove master, add 2019-09-22

* py-dp-gp-cluster: require python2, older gpy, sklearn

* py-dp-gp-cluster: remove cython runtime dep
2020-07-20 10:48:17 -05:00
Cyrus Harrison
bab1852340 update ascent package with recent ver dep logic, and dray support (#17502)
* update ascent package with recent ver dep logic, and dray support

* update pmt name, make babelflow logic dep on mpi
2020-07-18 08:53:48 -05:00
Jon Rood
ef814b7a32 Add texlive 2020 version (#17559)
* Add new versions of texlive and poppler.

* Add new versions of harfbuzz which also relocated source location to github.

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

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

* Restore deleted url line in harfbuzz.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-18 08:49:32 -05:00
eugeneswalker
96fa6f0c1b allow GNUPGHOME to come from SPACK_GNUPGHOME in env, if set (#17139) 2020-07-17 13:29:30 -07:00
Amjad Kotobi
e4ba1c1daf r-devtools: add version 2.3.0; update dependencies (#17408) 2020-07-17 12:11:29 -07:00
Fabien Bruneval
bbbf0466dc libint (package): add tuning options for MOLGW (#17329) 2020-07-17 12:10:05 -07:00
Cyrus Harrison
dc18b3e3d4 New package: parallelmergetree (#17501) 2020-07-17 12:03:11 -07:00
Scott Wittenburg
b5f82696e2 Bugfix/install missing compiler from buildcache (#17536)
Ensure compilers installed from buildcache are registered.
2020-07-17 11:13:36 -07:00
Adam J. Stewart
a5aa150a98 py-matplotlib: add v3.3.0 2020-07-17 11:05:41 -07:00
Scott Wittenburg
ae03782032 buildcache: list all mirrors even if one fails 2020-07-17 10:04:05 -06:00
Amjad Kotobi
c729c6b93c subversion: added v1.14.0 amd v1.13.0, added new url (#17519) 2020-07-17 16:33:46 +02:00
Cyrus Harrison
324c383d8e add devil ray package (#17495)
* add dray with mid-review changes

* remove env import since its impliclity included
2020-07-16 19:51:41 -07:00
Francesco Di Natale
35b7a69456 Updates to maestrowf package (#17470)
* Addition of Chainmap to satisfy Maestro dependency.

* Additional versions and dependencies for Maestro.

* Updated URL to point to pypi.

* Updates to chainmap hashes.

* Updates to pull version from PyPi.

* Corrections to flake8 errors.

* Stricter restrictions on Python versioning.

Maestro actually supports Python 3.5 and later.

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

* Only install chainmap for Python2 versions.

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

* Removal of setuptools python cond.

* Removal of version constaints on setuptools.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-16 19:38:45 -05:00
Kelly (KT) Thompson
d69c32d7ef Version 1.13.2 still needs the XL patch. (#17561) 2020-07-16 19:35:33 -05:00
Scott Wittenburg
27aaff3dc2 adept-utils: 1.0.1 does not build w/ boost 1.73.0 or newer (#17560) 2020-07-16 19:34:47 -05:00
Seth R. Johnson
fc8847cf4e Mark old icu4c as conflicting (#17562)
GCC 4.8.5 on rhel6:
```
utext.cpp:572:5: error: 'max_align_t' in namespace 'std' does not name a
type
     std::max_align_t    extension;
     ^
utext.cpp: In function 'UText* utext_setup_67(UText*, int32_t,
UErrorCode*)':
utext.cpp:587:73: error: 'max_align_t' is not a member of 'std'
             spaceRequired = sizeof(ExtendedUText) + extraSpace -
sizeof(std::max_align_t);
                                                                         ^
utext.cpp:587:73: note: suggested alternative:
In file included from
/projects/spack/opt/spack/gcc-4.4.7/gcc/6ln2t7b/include/c++/4.8.5/cstddef:42:0,
                 from utext.cpp:19:
/projects/spack/opt/spack/gcc-4.4.7/gcc/6ln2t7b/lib/gcc/x86_64-unknown-linux-gnu/4.8.5/include/stddef.h:
425:3: note:   'max_align_t'
 } max_align_t;
   ^
utext.cpp:598:57: error: 'struct ExtendedUText' has no member named
'extension'
                 ut->pExtra    = &((ExtendedUText *)ut)->extension;
                                                         ^
   g++   ...  loadednormalizer2impl.cpp
   g++   ...  chariter.cpp
```
2020-07-16 19:34:02 -05:00
Harmen Stoppels
1fcc00df96 Fix security issue in CI (#17545)
The `spack-build-env.txt` file may contains many secrets, but the obvious one is the private signing key in `SPACK_SIGNING_KEY`. This file is nonetheless uploaded as a build artifact to gitlab. For anyone running CI on a public version of Gitlab this is a major security problem. Even for private Gitlab instances it can be very problematic.

Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
2020-07-16 17:27:37 -07:00
Jon Rood
697c2183d3 Add new dependencies required in latest rsync. (#17558) 2020-07-16 19:25:22 -05:00
Nichols A. Romero
b320be70cb PySCF new package (#17474)
* Initial version of PySCF.

* Add master branch to xcfun library

* PySCF only compatible with specific commit of xcfun library

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

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

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

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

* Revert "PySCF only compatible with specific commit of xcfun library"

This reverts commit 8296005400.

* Revert "Add master branch to xcfun library"

This reverts commit f2b6998931.

* Issues conflict for xcfun library version rather than relying on a random commit.

* Add version xcfun 2.0.0a2 which is needed by PySCF.

* Remove xcfun conflict and express dependency more explictly. Add comment as to why this is necessary.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-16 15:58:52 -05:00
downloadico
3f24188d19 Abinit+wannier90 fix (#17417)
* wannier90: add versions 3.0.0 and 3.1.0 and 'shared variant'

Added versions 3.0.0 and 3.1.0

Added shared variant

Added url_for_version function as versions less than 3 are from the
wannier.org site and versions 3 and up are from github.com

Added the MPI libraries to the list of libs substituted into the make.sys file
in place of @LIBS

Made it possible to build a shared object version of the library for versions
< 3 by filtering the src/Makefile.2 file (based off of the patch from a src rpm
from RHEL for version 2.0.1)

Create a modules directory in the install prefix root directory and copy the
Fortran .mod files there.

Set the MPIFC variable to the Spack Fortran MPI compiler wrapper.

* abinit: added 'wannier90' variant  which enables building abinit with wannier90

Added wannier90 variant

Made abinit depend on the shared object ('shared') variant of
wannier90 if the wannier90 variant is selected

Add configure args for wannier90 libs, includes, and binaries and to
set MPIFC

set the dft-flavor to wannier90 when wannier90 is enabled and only
set the dft flavor to 'atompaw+libxc' if wannier90 is not selected

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

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

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

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

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

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

* incorporated bbecker's suggestion for making the strings less ugly!

* incorporated bbecker's suggestion to fix the logic for picking which
"DFT flavor" configure argument.
If the wannier variant is enabled, it passes --with-dft-flavor=wannier90
to configure, otherwise it passes --with-dft-flavor=atompaw+libxc to configure

* Changed to using plain strings

* Fixed version tests

* incorporated @adamjstewart's fix for testing if the major version is > 2

* incorporated @adamjstewart's fix to check if mpi is enabled and
only set the MPIFC variable if it is.

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

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

* Only set MPIFC if '+mpi' is set

* incorporated fixes from @adamjstewart including:
	- using the string=True argument to filter_file (and removed the unneeded
 	  escapes)
	- changing the url to the github location
	- fixing the version checks
	- building a libwannier.dylib on darwin

* incorporated fixes suggested by @adamjstewart including:
	- using the string=True argument to filter_file and cleaned up the escapes
	- only pass the MPIFC argument to configure when '+mpi' is set
	- chaned the url to the github site for Wannier090
	- fixed the version checks
	- build a 'libwannier.dylib' file when building the shared variant on darwin

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

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

* moved a configure argument from it's own '+mpi' check to under the lower one

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

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

* Cleaned up syntax as suggested by @adamjstewart
It looks *so much better* now!  Thanks!

* removed unneeded import of 'find' from 'llnl.util.filesystem' package
as suggested by @adamjstewart

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

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

* incorporated changes from @adamjstewart
changed check to "if '@:2 +shared' in spec:" instead of a nested check of '@:2' and
'+shared'
removed unneeded joins used in filter_file and spliced the list of objs directly into
the filter_file call
used the dso_suffix instead of testing for darwin to determine the name of the
shared library

* removed whitespace from blank line

* fixed bug with '../../wannier90.x: .*' not being treated as a regexp.  Thanks Adam!

* fixed missing whitespace when modifying Makefile.2

Co-authored-by: Greg Becker <becker33@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-16 15:57:42 -05:00
Harmen Stoppels
3449087284 Make the largest layer of the docker image cacheable (#17553) 2020-07-16 13:15:04 -04:00
Themos Tsikas
8e9f4d0078 Update for Build 7020 of nagfor compiler (#17555) 2020-07-16 10:39:06 -05:00
darmac
d7794540b2 Add new package: hibench (#17552) 2020-07-16 08:47:33 -05:00
iarspider
ae44b1d7b9 New package: openloops (#17520)
* New package: OpenLoops

* install() for openloops

* Working OpenLoops recipe

* Flake-8

* Only copy collection file if required; add clarification to num_jobs

* Add __future__ import just in case

* Fix missing space

* Remove __future__ import

* Changes from review, pt. 1

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

* Replace print() with write()

* Flake-8

Co-authored-by: iarspider <iarpsider@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-16 08:33:23 -05:00
Tom Payerle
df12b2bd15 kallisto: remove mpich dependency (#17551)
kallisto does not depend on mpich or MPI, except possibly indirectly
through hdf5 (but that should be handled by hdf5).
2020-07-16 08:28:50 +02:00
darmac
148a6a8860 Add new package: prometheus (#17541) 2020-07-15 21:56:14 -05:00
darmac
efba3731e5 storm: update url, version & runtime depends (#17523)
* storm: update url, version & runtime depends

* fix list_url error
2020-07-15 21:39:03 -05:00
fcannini
6eb332a984 vasp: New package. (#15187)
* vasp: New package.

* Remove unneeded `#noqa`

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

* Removed a completely needless tty.debug()

* Add compiler conflicts() and minute fixes

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-15 21:33:53 -05:00
Cyrus Harrison
d0a83f318b add apcomp package (#17494)
* add apcomp package

* add maintainers

* fake8

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

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

* review suggestions

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-15 21:31:58 -05:00
Rémi Lacroix
0f67b97065 Update icu4c package (#17461)
* icu4c: Add new versions for older releases.

The old URLs for versions 60.1, 58.2 and 57.1 do not work anymore so add the versions available on Github.

The old versions are kept for reference (cf. #15896).

* icu4c: Add versions 66.1 and 67.1.

* icu4c: Fix compilation of versions 58 and 59 with recent glibc.
2020-07-15 18:57:19 -05:00
kolamsrinivas
d2c2e000a7 changes to py-torch recipe to enable rocm build (#17410)
* changes to recipe to enable rocm build

* fixing flake8 issue

* addressed the review comment
2020-07-15 18:45:22 -05:00
Julius-Plehn
4ac1a532f3 Adds new R package: GSODR (#17529)
* R GSODR package

* use cloud mirror
2020-07-15 12:05:39 -05:00
vvolkl
f42dc4fa4d [root] fix cmake args for r variant (#17487)
* [root] fix cmake args for r variant

* [root] add readline dependency to +r
2020-07-15 12:04:05 -05:00
Paul
d25c7ddd6f spack containerize: added --fail-fast argument to containerize install. (#17533) 2020-07-15 11:13:04 +02:00
Paul
48a9ad3652 Go: added v1.14.5 and v1.13.13. (#17539) 2020-07-15 09:31:49 +02:00
Cyrus Harrison
d55541919d visit package update, add glu as a linux dep (#17537)
* visit: add glu as a dep for linux

* add note to suggested install command about mesa
2020-07-15 00:01:05 -07:00
Dr. Christian Tacke
0d4740d1b1 curl: add dependency on libidn2 (#17526)
If the system has libidn2 installed, then curl will use it.
spack has a libidn2 package, so let's use that!

Related: #16514
2020-07-15 08:43:38 +02:00
yellowhat
d56711f799 namd: added v2.14b2 (#17395)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-15 08:04:39 +02:00
ketsubouchi
99a47e407e cantera: better specify dependency on sundials (#17540) 2020-07-15 07:53:36 +02:00
Julius-Plehn
7efb0e541e New Package: GrADS (#17476)
* grads minimal package

* udpt template

* grads minima

* grads & shapelib package

* hdf4

* cleanup

* hdf5, netcdf variants

* updates environment function

* updating paths and pkgconfig

* cleanup
2020-07-14 22:30:39 -05:00
Hadrien G
7340be98f6 [acts] Add 0.25.x series (#17485)
* Add Acts v0.25 support

* Add Acts v0.25.1

* Add acts v0.25.2
2020-07-14 22:23:07 -05:00
vvolkl
c281eaf69f [acts] remove false dependency (#17511) 2020-07-14 22:07:39 -05:00
Amjad Kotobi
2110b98829 r-glue: new version (#17517) 2020-07-14 21:56:05 -05:00
darmac
88537d02e4 gpdb: fix runtime issue (#17521) 2020-07-14 21:47:29 -05:00
Jon Rood
a2729fcd7f zsh (package): add versions; switch to .xz archives (#17489)
* Add new versions including 5.8
* Download .xz archives for existing versions (this requires updating
  the associated checksums)
2020-07-14 19:47:03 -07:00
darmac
bcd41cec71 Add new package: minio (#17522) 2020-07-14 21:45:47 -05:00
Cyrus Harrison
6f6e896795 New package: babelflow (#17500) 2020-07-14 19:42:38 -07:00
darmac
28a25080ca py-lockfile: depends on py-pbr by setup.py (#17524) 2020-07-14 21:34:59 -05:00
ketsubouchi
14f3f230c1 scons: support Fujitsu Fortran moddir option (#17538) 2020-07-14 21:24:18 -05:00
Jon Rood
d32bbae431 rsync (package): add version 3.2.2 (#17504) 2020-07-14 16:41:11 -07:00
Frank Willmore
710ff8d7ce libyogrt (package): add variant to enable static builds (#17535) 2020-07-14 16:36:18 -07:00
Jon Rood
683881f912 py-protobuf (package): add version 3.12.2 (#17532)
This matches the current latest version of protobuf in Spack.
Generally the version of py-protobuf and protobuf should match,
but this constraint is not currently recorded in py-protobuf.
2020-07-14 16:31:15 -07:00
vvolkl
11d8aed6cd dd4hep (package): add version 1.13.0 (#17528) 2020-07-14 16:24:33 -07:00
Andrey Prokopenko
ab68410c4c Trilinos (package): remove maintainer (#17534) 2020-07-14 16:23:19 -07:00
darmac
fa614404e6 smartdenovo: added patch to fix compile error (debian) (#17435) 2020-07-14 13:02:31 +02:00
Axel Huebl
a6abd530bd CUDA 11.0.2 (#17423)
- [x] wait for general release candidate
- [x] compute capability support
- [x] compiler conflicts
  - [x] ppc64le
- [x] new download links
2020-07-13 18:32:28 -05:00
Harmen Stoppels
2b809a5374 Add -o flag to tar decompressor (#17427)
For normal users, `-o` or `--no-same-owner` (GNU extension) is
the default behavior, but for the root user, `tar` attempts to preserve
the ownership from the tarball.

This makes `tar` use `-o` all the time.  This should improve untarring
files owned by users not available in rootless Docker builds.
2020-07-13 15:19:04 -07:00
Cyrus Harrison
3e13137f6e add share libs variant to raja (#17496) 2020-07-13 14:57:25 -07:00
Cyrus Harrison
6aa6e19d34 add shared libs variant to umpire (#17497) 2020-07-13 14:57:04 -07:00
Cyrus Harrison
c2d8d8acbd update vtk-m with pinned version for ascent and related packages (#17498)
* add ascent_ver to vtk-m pkg

* vtk-m:: add patches used by ascent
2020-07-13 14:56:45 -07:00
Cyrus Harrison
299dcdd3eb update vtk-h package with new version and options (#17499) 2020-07-13 14:55:38 -07:00
Jon Rood
e0f13b298d tmux (package): add version 3.1b (#17486) 2020-07-13 13:56:33 -07:00
Jon Rood
d2ac26f844 gdb (package): add version 9.2 (#17490) 2020-07-13 13:46:27 -07:00
Jon Rood
fae57d1422 cppcheck (package): add version 2.1 (#17491) 2020-07-13 13:45:37 -07:00
Jon Rood
c84a05b809 bison (package): add versions including 3.6.4 and 3.5.3 (#17492) 2020-07-13 13:44:37 -07:00
Jon Rood
05e8918076 curl (package): add version 7.71.0 (#17493) 2020-07-13 13:42:42 -07:00
Jon Rood
929cb9e62e vim (package): add version 8.2.1201 (#17503) 2020-07-13 13:31:37 -07:00
Jon Rood
7d1f2abd56 screen (package): add version 4.8.0 (#17505) 2020-07-13 13:28:58 -07:00
Jon Rood
ab5f28aceb stow (package): add version 2.3.1 (#17506) 2020-07-13 13:28:18 -07:00
Jon Rood
4450377794 gnutls: add version 3.6.14 (#17507) 2020-07-13 13:27:28 -07:00
Jon Rood
45eaa442c3 Global (package): add version 6.6.4 (#17508) 2020-07-13 13:26:39 -07:00
darmac
4fa519134f bwa: support for aarch64 (#17473)
* bwa: support for aarch64

* bwa: fix build error for non-aarch64 machine
2020-07-13 10:52:23 -05:00
Rémi Lacroix
815f62ce0c Update gdk-pixbuf package. (#17458)
* gdk-pixbuf: Add new stable versions.

* gdk-pixbuf: Add a missing dependency with libx11.

Also add a variant disabled by default to make it optional since it is considered deprecated
(cf. 3362e94c25).
2020-07-13 10:49:17 -05:00
Mark Olesen
b3b5ea4064 updated sha256 for openfoam-1806 patch (#17483)
- perhaps related to gitlab migration and/or upgrade (Dec 2019)

Co-authored-by: Mark Olesen <Mark.Olesen@esi-group.com>
2020-07-13 10:47:06 -05:00
Omar Padron
573489db71 Add libglvnd packages/Add EGL support (#14572)
* add new package: "libglvnd-frontend"

* add +glvnd variant to opengl package

* add +glvnd variant to mesa package

* add +egl variant to paraview package

* add libglvnd-frontend entries to default packages config

* fix style

* add default providers for glvnd virtuals

add default providers for glvnd-gl, glvnd-glx, and glvnd-egl

* WIP: rough start to external OpenGL documentation

* rename libglvnd-frontend package and backend virtual dependencies

* update documentation

* fix ligvnd-be-* typos

* fix libglvnd-fe package class name

* fix doc parse error
2020-07-13 11:32:36 -04:00
darmac
9c42f246ed Add new package: atf (#17472) 2020-07-12 21:32:02 -05:00
Jannek Squar
dbdd2cb92f Magics fix and update (#17477)
* Added new versions to magics and began to set not-so-optional netcdf dependency

* Added enforced netcdf dependency

* Fix also works for version 4.1.0
2020-07-12 21:20:12 -05:00
Greg Becker
406596af70 update docs on point releases (#17463) 2020-07-11 14:35:25 -07:00
darmac
73f02b10de lmbench: fix scripts path for aarch64 (#17456) 2020-07-11 12:53:53 -05:00
Dr Owain Kenway
9629f571bc llvm-flang: Only build offload code if cuda enabled (#17466)
* llvm-flang Only build offload code if cuda enabled

The current version executes `cmake(*args)` always as part of the post install.  If device offload is not part of the build, this results in referencing `args` without it being set and the error:

```
==> Error: UnboundLocalError: local variable 'args' referenced before assignment

```

Looking at prevoous version of `llvm-package.py` this whole routine appears to be only required for offload, some indent `cmake/make/install` to be under the `if`.

* Update package.py

Add comment
2020-07-11 09:02:53 -05:00
Peter Josef Scheibel
5e50dc5acb Merge branch 'releases/v0.15' into develop 2020-07-10 23:14:36 -07:00
Jen Herting
59bfc22d40 [glew] depends on libsm and libice (#17428)
* [glew] depends on libsm

* [glew] depends on libice
2020-07-10 19:32:26 -05:00
Justin S
1a8a147fe5 energyplus: add 9.3.0 (#17452)
* energyplus: add 9.3.0

* energyplus: fix version order

* energyplus: more concise links

* energyplus: avoid join_path
2020-07-10 19:23:04 -05:00
figroc
0612a9e8e9 tensorflow-serving-client: add new version 2.2.0 (#17462) 2020-07-10 19:10:04 -05:00
Peter Josef Scheibel
1741279f16 Bump version to 0.15.1; update CHANGELOG and version references 2020-07-10 16:54:49 -07:00
Greg Becker
c2393fe566 spack install: improve error message with no args (#17454)
The error message was not updated when the behavior of Spack environments
was changed to not automatically activate the local environment in #17258.
The previous error message no longer makes sense.
2020-07-10 13:05:49 -07:00
Greg Becker
afbb4a5cba installation: skip repository metadata for externals (#16954)
When Spack installs a package, it stores repository package.py files
for it and all of its dependencies - any package with a Spack metadata
directory in its installation prefix.

It turns out this was too broad: this ends up including external
packages installed by Spack (e.g. installed by another Spack instance).
Currently Spack doesn't store the namespace properly for such packages,
so even though the package file could be fetched from the external,
Spack is unable to locate it.

This commit avoids the issue by skipping any attempt to locate and copy
from the package repository of externals, regardless of whether they
have a Spack repo directory.
2020-07-10 13:05:49 -07:00
Peter Scheibel
e2bec75057 add public spack mirror (#17077) 2020-07-10 13:05:49 -07:00
Todd Gamblin
054e0d1d11 bugfix: no infinite recursion in setup-env.sh on Cray
On Cray platforms, we rely heavily on the module system to figure out
what targets, compilers, etc. are available. This unfortunately means
that we shell out to the `module` command as part of platform
initialization.

Because we run subcommands in a shell, we can get infinite recursion if
`setup-env.sh` and friends are in some init script like `.bashrc`.

This fixes the infinite loop by adding guards around `setup-env.sh`,
`setup-env.csh`, and `setup-env.fish`, to prevent recursive
initializations of Spack. This is safe because Spack never shells out to
itself, so we do not need it to be initialized in subshells.

- [x] add recursion guard around `setup-env.sh`
- [x] add recursion guard around `setup-env.csh`
- [x] add recursion guard around `setup-env.fish`
2020-07-10 13:05:49 -07:00
cedricchevalier19
c8a83661c2 Fix gcc + binutils compilation. (#9024)
* fix binutils deptype for gcc

binutils needs to be a run dependency of gcc

* Fix gcc+binutils build on RHEL7+

static-libstdc++ is not available with system gcc.
Anyway, as it is for bootstraping, we do not really care depending on
a shared libstdc++.

Co-authored-by: Michael Kuhn <michael@ikkoku.de>
2020-07-10 13:05:49 -07:00
Michael Kuhn
4e4de51f0d autotools bugfix: handle missing config.guess (#17356)
Spack was attempting to calculate abspath on the located config.guess
path even when it was not found (None); this commit skips the abspath
calculation when config.guess is not found.
2020-07-10 13:05:49 -07:00
TZ
28549f300d inel-mpi: fix for wrong structure name instroduced in ea8a0be4 (#17382)
it's    mpi_compiler_wrappers
and not mpi_compiler._wrappers

fixes 2nd part of #17371
2020-07-10 13:05:49 -07:00
Adam J. Stewart
7717f00dac Fix Intel MPI super invocation, again (#17378) 2020-07-10 13:05:49 -07:00
Michael Kuhn
44681dbca5 autotools: Fix config.guess detection, take two (#17333)
The previous fix from #17149 contained a thinko that produced errors for
packages that overwrite configure_directory.
2020-07-10 13:05:49 -07:00
Greg Becker
f2889e698a spack install: improve error message with no args (#17454)
The error message was not updated when the behavior of Spack environments
was changed to not automatically activate the local environment in #17258.
The previous error message no longer makes sense.
2020-07-10 10:45:11 -07:00
Rémi Lacroix
ea546425e8 Update the bbcp package (#17436)
* bbcp: Update the URLs to use HTTPS.

The HTTP URLs do not work anymore.

* bbcp: Add missing libnsl dependency.

* bbcp: Rename the git-based version to match the branch name.

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-10 08:27:07 -05:00
ketsubouchi
7269a5bf51 py-pysam: add LDFLAGS to curl (#17434)
* py-pysam: add LDFLAGS to curl

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-10 08:26:21 -05:00
figroc
00d7e817c6 grpc: add versions 1.28/1.29/1.30 (#17433) 2020-07-10 08:25:47 -05:00
iarspider
ed7d485b58 New packages: thepeg, herwig++ (2.x) (#17443)
* New packages: Rivet, Herwig++ 2

* Add patches for thepeg

* Flake-8

* Update package.py

* Delete thepeg-2.1.6.patch

* Delete thepeg-2.1.5.patch

* Delete thepeg-2.1.3.patch

* Delete thepeg-2.2.0.patch
2020-07-10 08:25:21 -05:00
iarspider
38d387c9a5 New packages: looptools + vbfnlo (#17446)
* New package: vbfnlo

* Add new package: vbfnlo

* Add recipe for looptools

* Add patch for looptools

* LoopTools: patch not needed (fixed by developers without changing version)

* Remove patch file as well

* Update package.py

* Update package.py

* Fix vbfnlo recipe for old version

Co-authored-by: iarspider <iarpsider@gmail.com>
2020-07-10 08:24:14 -05:00
Julius-Plehn
02dd90ebf9 New Package: ChaNGa (#17442)
* WIP: changa package

* changa cleanup

* flake8 format

* adds master branch to ChaNGa

* positional arguments

* use install instead of copy
2020-07-10 08:22:20 -05:00
Patrick Gartung
e72e2568dd Relocation of sbang needs to be done when the spack prefix changes even if the install tree has not changed. (#17455) 2020-07-09 22:28:51 -05:00
Rémi Lacroix
d9923a05e0 ltrace: Disable "-Werror". (#17444)
Some functions used by ltrace have been deprecated in recent versions of glibc.
2020-07-09 22:27:30 -05:00
Rémi Lacroix
8c6fa66b2a openslide: Add missing dependencies. (#17445) 2020-07-09 22:26:37 -05:00
Harmen Stoppels
84eae97f91 aspirin for buildaches (#17437) 2020-07-09 22:00:38 -05:00
Sajid Ali
12099ed55e clear mpicc and friends before each build (#17450)
* clear mpi env vars
2020-07-09 16:14:49 -05:00
Greg Becker
d0f5b69a19 installation: skip repository metadata for externals (#16954)
When Spack installs a package, it stores repository package.py files
for it and all of its dependencies - any package with a Spack metadata
directory in its installation prefix.

It turns out this was too broad: this ends up including external
packages installed by Spack (e.g. installed by another Spack instance).
Currently Spack doesn't store the namespace properly for such packages,
so even though the package file could be fetched from the external,
Spack is unable to locate it.

This commit avoids the issue by skipping any attempt to locate and copy
from the package repository of externals, regardless of whether they
have a Spack repo directory.
2020-07-09 11:08:51 -07:00
Peter Scheibel
ce9d30f80f add public spack mirror (#17077) 2020-07-08 15:59:24 -07:00
Sinan
e02d955aed new package: ligra (#17425)
* new package: ligra

* setup run environment

* tidy up

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

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

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

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

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

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

* flake8

Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-08 16:30:53 -05:00
Frank Willmore
b3fff20d1f enable flatcc to be built with gcc@9.X.X (#17430)
`gcc` 9 and above have more warnings that break the `flatcc` build by default, because `-Werror` is enabled.  This loosens the build up so that we can build with more compilers in Spack.

- [x] Add `-DFLATCC_ALLOW_WERROR=OFF` to `flatcc` CMake arguments

Co-authored-by: Frank Willmore <willmore@anl.gov>
2020-07-08 13:57:09 -07:00
Patrick Gartung
8c41173678 Buildcache: bindist test without invoking spack compiler wrappers. (#15687)
* Buildcache:
   * Try mocking an install of quux, corge and garply using prebuilt binaries
   * Put patchelf install after ccache restore
   * Add script to install patchelf from source so it can be used on Ubuntu:Trusty which does not have a patchelf pat package. The script will skip building on macOS
   * Remove mirror at end of bindist test
   * Add patchelf to Ubuntu build env
   * Revert mock patchelf package to allow other tests to run.
   * Remove depends_on('patchelf', type='build') relying instead on
   * Test fixture to ensure patchelf is available.

* Call g++ command to build libraries directly during test build

* Flake8

* Install patchelf in before_install stage using apt unless on Trusty where a build is done.

* Add some symbolic links between packages

* Flake8

* Flake8:

* Update mock packages to write their own source files

* Create the stage because spec search does not create it any longer

* updates after change of list command arguments

* cleanup after merge

* flake8
2020-07-08 15:05:58 -05:00
iarspider
0bed621d0c Add missing file (#17426)
Co-authored-by: Ivan Razumov <ivan.razumov@cern.ch>
2020-07-08 10:50:47 -05:00
Amjad Kotobi
1d2754c3f6 r-usethis: new version and dependencies (#17411)
* r-usethis: new version and dependencies

* r-usethis: fix in dependency
2020-07-08 08:44:47 -05:00
tcojean
ae2a867a7f Ginkgo: new versions (#17413)
* Add new Ginkgo versions with HIP support.

* Drop HIP support until more ROCm packages are integrated.
2020-07-08 08:42:56 -05:00
Adam J. Stewart
207e496162 spack create: ask how many to download (#17373) 2020-07-08 09:38:42 +02:00
ketsubouchi
f0391db096 typhon: fix build with Fujitsu compilers (#17424) 2020-07-08 09:28:41 +02:00
TZ
084994db9c ncl: fix compilation errors with Intel compilers (#17391)
The Intel compilers are more strict and require special command
line options (like -std=c99) to properly compile NCL.
2020-07-08 08:42:49 +02:00
Simon Byrne
f85da868ac Improve Travis sample in the docs (#17420)
- printf is better than echo for multiline strings
- ** should be &&
- use line continuation
- Use multiline block
2020-07-08 07:25:37 +02:00
iarspider
f1f31e3dfe Fix YODA and Rivet recipes (#17412)
* Fix Rivet recipe; restrict Yoda versions for a give Rivet version

* Fix YODA recipe

* More tweaks to YODA version requirements

* Flake-8
2020-07-07 22:24:48 -05:00
Patrick Gartung
7f8e827db8 Relocate rpaths for all binaries, then do text bin replacement if the rpaths still exist after running patchelf/otool (#17418) 2020-07-07 16:46:39 -05:00
Adam J. Stewart
a63761f875 oneDNN: add v1.5.1 (#17419) 2020-07-07 16:38:47 -05:00
Adam J. Stewart
3ce16c89b7 GDAL: add v3.1.2 (#17416) 2020-07-07 15:45:25 -05:00
Massimiliano Culpo
f4ac3770b4 CudaPackage: maintainers are listed in the docstring (#17409)
fixes #17396

This prevents the class attribute to be inherited and
saves current maintainers from becoming the default
maintainers of every Cuda package.
2020-07-07 20:45:41 +02:00
Todd Gamblin
b0506a722e releases: document releases/latest tag (#17402)
We got rid of `master` after #17377, but users still want a way to get
the latest stable release without knowing its number.

We've added a `releases/latest` tag to replace what was once `master`.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-07-07 11:44:15 -07:00
Peter Scheibel
650ab563f4 Uninstall: tolerate hook failures when force=true (#16513)
Fixes #16478

This allows an uninstall to proceed even when encountering pre-uninstall
hook failures if the user chooses the --force option for the uninstall.

This also prevents post-uninstall hook failures from raising an exception,
which would terminate a sequence of uninstalls. This isn't likely essential
for #16478, but I think overall it will improve the user experience: if
the post-uninstall hook fails, there isn't much point in terminating a
sequence of spec uninstalls because at the point where the post-uninstall
hook is run, the spec has already been removed from the database (so it
will never have another chance to run).

Notes:

* When doing spack uninstall -a, certain pre/post-uninstall hooks aren't
  important to run, but this isn't easy to track with the current model.
  For example: if you are uninstalling a package and its extension, you
  do not have to do the activation check for the extension.
* This doesn't handle the uninstallation of specs that are not in the DB,
  so it may leave "dangling" specs in the installation prefix
2020-07-07 11:37:36 -07:00
Christoph Junghans
90285c7d61 votca-tools: fix build with mkl (#17414) 2020-07-07 13:27:10 -05:00
Frank Willmore
6c300ab717 snappy: added v1.1.8 (#17397) 2020-07-07 17:25:26 +02:00
g-mathias
05d8ba170b jube: added v2.4.0 (#17404)
Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-07-07 16:11:53 +02:00
figroc
51f65152a5 abseil-cpp: added v20200225.2 (#17383) 2020-07-07 14:02:21 +02:00
Harmen Stoppels
1113357e35 libtree: fixed checksums (#17393)
The hash was wrongly computed for the `tar.gz` 
that Github provides, not the custom tarball which 
includes submodules as well.
2020-07-07 12:56:57 +02:00
ketsubouchi
d65a076c0d bliss: add spaces to __DATE__ (#17385)
C++11 requires a space between literal and string macro.
2020-07-07 11:28:55 +02:00
Glenn Johnson
845139740f mumax: new package at v3.10beta (#17398)
This PR creates a new spack package for

mumax: GPU accelerated micromagnetic simulator.

This uses the current beta version because
- it is somewhat dated, ~2018
- it is the only one that supports recent GPU kernels
2020-07-07 11:01:59 +02:00
TZ
1f87b07689 nco: added v4.8.[0,1] and v4.9.[0-3] (#17389) 2020-07-07 10:18:27 +02:00
TZ
cbaa1bca1c ncview: added v2.1.8 (#17388) 2020-07-07 10:09:27 +02:00
Sinan
5fb6a06c37 gunrock: improved package recipe (added variants for applications and others) (#17340)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-07-07 10:02:37 +02:00
Adam Moody
6e38fc56f6 mpifileutils: add v0.10.1 2020-07-06 18:19:29 -07:00
Todd Gamblin
c00a05bfba bugfix: no infinite recursion in setup-env.sh on Cray
On Cray platforms, we rely heavily on the module system to figure out
what targets, compilers, etc. are available. This unfortunately means
that we shell out to the `module` command as part of platform
initialization.

Because we run subcommands in a shell, we can get infinite recursion if
`setup-env.sh` and friends are in some init script like `.bashrc`.

This fixes the infinite loop by adding guards around `setup-env.sh`,
`setup-env.csh`, and `setup-env.fish`, to prevent recursive
initializations of Spack. This is safe because Spack never shells out to
itself, so we do not need it to be initialized in subshells.

- [x] add recursion guard around `setup-env.sh`
- [x] add recursion guard around `setup-env.csh`
- [x] add recursion guard around `setup-env.fish`
2020-07-06 13:55:14 -07:00
Todd Gamblin
9ec9327f5a docs: document releases and branches in Spack
- [x] Remove references to `master` branch
- [x] Document how release branches are structured
- [x] Document how to make a major release
- [x] Document how to make a point release
- [x] Document how to do work in our release projects
2020-07-06 11:39:19 -07:00
Todd Gamblin
11088df402 Remove references to master from CI
- [x] remove master from github actions
- [x] remove master from .travis.yml
- [x] make `develop` the default branch for `spack ci`
2020-07-06 11:39:19 -07:00
Todd Gamblin
4ea76dc95c change master/child to controller/minion in pty docstrings
PTY support used the concept of 'master' and 'child' processes. 'master'
has been renamed to 'controller' and 'child' to 'minion'.
2020-07-06 11:39:19 -07:00
cedricchevalier19
f0275d7e1b Fix gcc + binutils compilation. (#9024)
* fix binutils deptype for gcc

binutils needs to be a run dependency of gcc

* Fix gcc+binutils build on RHEL7+

static-libstdc++ is not available with system gcc.
Anyway, as it is for bootstraping, we do not really care depending on
a shared libstdc++.

Co-authored-by: Michael Kuhn <michael@ikkoku.de>
2020-07-06 13:02:35 -05:00
Michael Kuhn
516c3e659f autotools bugfix: handle missing config.guess (#17356)
Spack was attempting to calculate abspath on the located config.guess
path even when it was not found (None); this commit skips the abspath
calculation when config.guess is not found.
2020-07-06 10:53:02 -07:00
iarspider
e62ddcb582 Add Rivet and YODA (#17372)
* Add Rivet and YODA

* Add patches

* Flake-8

* Set level for Rivet patches

* Syntax fix

* Fix dependencies of Rivet

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-06 10:51:36 -05:00
TZ
b3bc538df6 esmf: set ESMF_COMM=intelmpi also for ^intel-mpi (#17387)
Not only intel-parallel-studio+mpi provides Intel MPI but also
intel-mpi.
2020-07-06 11:40:11 +02:00
fcannini
29fc94e29e psi4: fix "filter_compilers" signature (#17375) 2020-07-06 09:07:26 +02:00
Adam J. Stewart
466f7fd996 GMT: add v6.1.0 (#17384) 2020-07-05 21:06:05 -05:00
darmac
58cfe4e078 acl: fix depends error (#17341) 2020-07-05 15:28:29 -05:00
darmac
00f7577273 brpc: fix depends issue (#17347) 2020-07-05 15:27:49 -05:00
Wouter Deconinck
4e6d189a94 [opencascade] depends_on freetype, tcl, tk, gl (#17357)
* [opencascade] depends_on freetype, tcl, tk, gl

* [opencascade] new version 7.4.0p1 and url_for_version
2020-07-05 15:25:38 -05:00
iarspider
9abadd4985 New version of LHAPDF: 6.3.0 (#17367) 2020-07-05 15:23:03 -05:00
figroc
66d4bc3f3c protobuf: add versions (#17381) 2020-07-05 15:22:31 -05:00
yellowhat
52cafe6c96 amdblis bump to 2.2. (#17369) 2020-07-05 15:22:11 -05:00
g-mathias
8d5aa46765 package Amber: amber tools 20 (#17374)
* package amber: added amber_tools 20 hash; added minor version for amber_tools

* fix flake8 issues

Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-07-05 15:17:38 -05:00
Gilles Gouaillardet
e5ec89ad5b openblas: fix fj compiler support in 0.3.10 (#17376)
The latest 0.3.10 version openblas changed how Fortran libraries
are detected, and this broke Fujitsu compiler support.

This (new) openblas patch addresses that issue.
2020-07-05 15:14:36 -05:00
Timo Heister
7bba9cd2a5 update aspect to 2.2.0 (#17379) 2020-07-05 15:13:22 -05:00
Adam J. Stewart
cce629e791 SciPy: add v1.5.1 (#17380) 2020-07-05 14:58:26 -05:00
TZ
bb15addad5 inel-mpi: fix for wrong structure name instroduced in ea8a0be4 (#17382)
it's    mpi_compiler_wrappers
and not mpi_compiler._wrappers

fixes 2nd part of #17371
2020-07-05 11:10:28 -05:00
Adam J. Stewart
e9e3e88f63 Fix Intel MPI super invocation, again (#17378) 2020-07-05 11:09:24 -05:00
fcannini
c797a0611c dtfbplus: New package. (#15191)
* dtfbplus: New package.

* dftbplus: Addresses @adamjstewart's comments on PR #15191

* dftbplus: Fixes format() calls that slipped in previous commit.

* dftbplus: Appease flake8.

* dftbplus: Change 'url' and misc. fixes.

* Add a resource to do the job of './utils/get_opt_externals'
2020-07-04 08:27:32 -05:00
Shahzeb Siddiqui
04f3000646 Pipelines doc: fixed two broken links (#17355) 2020-07-03 12:29:45 +02:00
Amjad Kotobi
f3eba3c482 py-python-swiftclient: added v3.10.0 (#17352) 2020-07-03 12:25:54 +02:00
g-mathias
02fa7b680f elpa: added v2019.11.001 and v2020.05.001 (#17368)
Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-07-03 11:52:02 +02:00
Paul R. C. Kent
8fcd917e51 libelf: added extra url (#17358) 2020-07-03 11:49:58 +02:00
g-mathias
9c85d87b90 jube: added v2.3.0 (#17366)
Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-07-03 10:13:37 +02:00
yellowhat
b45fc97564 Package request: HPCG (#17350)
* use patch from upstream

Co-authored-by: Michael Kuhn <michael.kuhn@informatik.uni-hamburg.de>
2020-07-03 10:05:24 +02:00
ketsubouchi
986f68f7ed blktrace: use Spack compiler wrappers (#17365) 2020-07-02 23:39:04 -07:00
ketsubouchi
2cd9e1eb62 blat: use SPACK_CC (#17364) 2020-07-02 23:38:23 -07:00
darmac
61804f201a glusterfs: add pkgconfig dependency (#17343) 2020-07-02 23:35:38 -07:00
g-mathias
cf104b0f10 jmol: add version 14.31.0 (#17351)
Also:

* Add url_for_version function
* Add Java to PATH for run environment
* Update `install` method to handle old and new version

Co-authored-by: lu64bag3 <gerald.mathias@lrz.de>
2020-07-02 23:34:00 -07:00
Kelly (KT) Thompson
17106a131d Random123: add versions 1.10, 1.13.2 (#17361) 2020-07-02 23:25:53 -07:00
Christoph Junghans
cc0dda95c4 quicksilver: add v1.0 2020-07-02 23:24:44 -07:00
takanori-ihara
7679e20e83 py-tensorflow: Fix for tensorflow issue #40688 (#17324)
* py-tensorflow: Fix for #40688

* py-tensorflow:  Fix for tensorflow issue #40688
2020-07-02 21:49:29 -05:00
Michio Ogawa
4349c091e7 FrontISTR: add version 5.1 (#17349) 2020-07-02 15:34:25 -07:00
darmac
ff60f51a7a keepalived: openssl is a link and build dependency (#17346) 2020-07-02 15:13:24 -07:00
Amjad Kotobi
06da1f195c openmpi: add singularity variant (#17288) 2020-07-02 15:10:06 -07:00
iarspider
3d98ad3f4c New packages: heputils and mcutils (#17330)
heputils is a (conditional) dependency of mcutils
2020-07-02 15:05:20 -07:00
Harmen Stoppels
f1bb8999ab cpprestsdk: add version 2.10.16 (#17331)
Also

* Patch is only needed for 2.9.1
* Add openssl dependency
* Build with -DWERROR:BOOL=Off
2020-07-02 15:02:12 -07:00
Sinan
1e75dde7b2 mapnik: add version 3.0.23, update boost dependency (#17338) 2020-07-02 14:56:36 -07:00
manifest
f780839b87 examl + (#17265)
* examl +

* examl style fix

* examl flake8 fix

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

using `working_dir`

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-02 09:43:47 -05:00
Andrew Gaspar
204f15b4c1 py-fortran-language-server: new package at v1.11.1 (#17318)
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-07-02 10:22:01 +02:00
Michael Kuhn
a4fff39d7e py-shroud: added v0.12.1 (#17332)
py-setuptools is also needed at runtime, otherwise we get errors:
```
ModuleNotFoundError: No module named 'pkg_resources'
```
2020-07-02 10:14:57 +02:00
Michael Kuhn
10016a34e0 autotools: Fix config.guess detection, take two (#17333)
The previous fix from #17149 contained a thinko that produced errors for
packages that overwrite configure_directory.
2020-07-02 00:45:41 -07:00
Sinan
e133b44da6 py-opt-einsum: added v3.2.1, v3.2.0 and v2.3.2 (#17339)
Co-authored-by: Sinan81 <sbulut@3vgeomatics.com>
2020-07-02 09:14:39 +02:00
Paul R. C. Kent
5732d8de50 py-sphinxcontrib-bibtex: added v1.0.0 (#17336) 2020-07-02 08:32:26 +02:00
mic84
509b3c3016 amrex: added v20.07 (#17337)
Also added support for hdf5, petsc and hypre
2020-07-02 08:28:57 +02:00
ketsubouchi
8a9fa9bd18 biobloom: use the correct standard library for Fujitsu compilers (#17327) 2020-07-02 08:11:56 +02:00
Massimiliano Culpo
a5eabfad91 Moved flake8, shell and documentation tests to Github Action (#17328)
* Move flake8 tests on Github Actions

* Move shell test to Github Actions

* Moved documentation build to Github Action

* Don't run coverage on Python 2.6

Since we get connection errors consistently on Travis
when trying to upload coverage results for Python 2.6,
avoid computing coverage entirely to speed-up tests.
2020-07-01 11:58:53 -05:00
Adam J. Stewart
6a77f1ff45 Fix hashlib function capitalization (#17323) 2020-07-01 09:46:20 -05:00
Glenn Johnson
60283775b3 Documentation update for container example (#17321)
This updates the documentation to reflect #17316.
2020-07-01 08:40:36 +02:00
Greg Becker
4433e4de2d Use apple-clang for MacOS nightly tests (#17320) 2020-07-01 08:21:08 +02:00
darmac
aaf6f80d4c hbase: refine url , java and version (#17306)
* hbase: refine url , java and version

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

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-06-30 22:22:32 -05:00
Gregory Becker
59fb789290 Merge branch 'releases/v0.15' into develop 2020-06-30 19:19:12 -05:00
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
Todd Gamblin
7a68a4d851 update CHANGELOG.md for 0.14.2 2020-04-15 14:32:01 -07:00
Todd Gamblin
a3bcd88f8d version bump: 0.14.2 2020-04-15 14:30:58 -07:00
Todd Gamblin
740f8fe1a9 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-04-15 14:30:58 -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
Todd Gamblin
430ca7c7cf 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 12:47:41 -07:00
Massimiliano Culpo
55f5afaf3c 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-15 12:47:16 -07:00
Andrew W Elble
6b559912c1 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-04-15 12:47:00 -07:00
Peter Scheibel
9b5805a5cd 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-04-15 12:45:57 -07:00
Adam J. Stewart
c6c1d01ab6 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-04-15 12:38:31 -07:00
Peter Scheibel
b9688a8c35 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-15 12:37:37 -07:00
Jonathon Anderson
ed2781973c 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-15 12:37:16 -07:00
Todd Gamblin
99bb88aead bugfix: TERM may not be in the environment on Cray (#15630) 2020-04-15 12:37:03 -07:00
Massimiliano Culpo
a85cce05a1 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-15 12:36:53 -07: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
Todd Gamblin
e2b1737a42 update CHANGELOG.md for 0.14.1 2020-03-20 12:29:44 -07:00
Todd Gamblin
ff0abb9838 version bump: 0.14.1 2020-03-20 12:29:36 -07:00
Dan Lipsa
9c45c44738 Add version 5.8 and fix sqlite+column_metadata mismatch. (#15450) 2020-03-20 15:26:41 -04:00
Greg Becker
3826cdf139 multiprocessing: allow Spack to run uninterrupted in background (#14682)
Spack currently cannot run as a background process uninterrupted because some of the logging functions used in the install method (especially to create the dynamic verbosity toggle with the v key) cause the OS to issue a SIGTTOU to Spack when it's backgrounded.

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

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

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

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

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

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

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

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

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

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

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

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

fixes #14798
fixes #13733

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

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

* Reformatting for flake8

* More flake8 changes.

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

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

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

* Update dependencies

* Update dependencies + flake8

* Add py-pyrsistent package

* Update package.py

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

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

* Update package.py

* Update package.py

* Apply suggestions from code review

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

* Apply suggestions from code review

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

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

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

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

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

* Remove `-skip qtquick3d` unless QT 5.14

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

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Apply suggestions from code review

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

* Update package.py

* Update package.py

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

* Update package.py

* Update package.py

* Update package.py

* Update package.py

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

Commit suggestion

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

* Update package.py

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

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

* Cleaning mkdirp

* Removed install function

* Renamed to f77-zmq

* Fixed Flake8

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

* Update package.py

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

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

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

* Update package.py

* Update package.py

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

* Update package.py

* Fix typo

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

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

* Update dependency version

* Update package.py

* Update package.py

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

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

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

* Update package.py

* Update package.py

* Update package.py

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

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

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

* Update package.py

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

* Update package.py

* Update package.py

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

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

* Update package.py

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

* Explicitly require binutils bootstrapping and mark conflict with nvptx

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

* removing some remaining initial boilerplate

* changing path construction to be more correct

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

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

* Update package.py

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

* Add test dependencies

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

* Update package.py

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

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

* PEP8

* SHA256

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

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

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

* Update dependency version

* Add url_for_version

* Flake-8

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

* Update py-packaging

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

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

* Add optional dependency on enum34

* Update package.py

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

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

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

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

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

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

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

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

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

* Fix dependencies

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

* Update package.py

* Update package.py

Correct dependency types

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

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

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

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

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

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

* Add py-parso package

* Remove boilerplate from py-parso

* Flake-8

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

* Update package.py

* Update package.py

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

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

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

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

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

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

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

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

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

* Update package.py

* Add extra dependencies for py-dask+distributed

* Update package.py

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

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

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

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

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

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

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

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

* Update package.py

* Update package.py

* Update package.py

* Update package.py

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

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

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

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

* Update package.py

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

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

* Update package.py

* Flake-8

* Add patch step for py-distributed

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Catch2: Simplify Package

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

* Catch: Remove Variant

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

* openPMD-api: Catch Lost single_header

... variant is gone :)

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

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

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

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

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

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

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

This PR does the following:

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

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

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

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

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

* More cleanup of Julia package

This commit does more cleanup and sets more constraints.

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

* Fix flake8 error

Remove 'import sys' that is no longer used.

* More dependency tweaks

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

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

* Fix spec for curl certs

Only depending on curl through 0.5.0.

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

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

* Update package.py

* Update package.py

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

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

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

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

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

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

* Update package.py

* Flake-8

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

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

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

* obey the flake8

* address comments, fix versions.

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

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

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

* Update package.py

* Update package.py

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

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

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

* Update package.py

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

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

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

* Update package.py

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

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

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

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

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

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

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

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

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

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

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

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

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

* Update package.py

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

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

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

* Update package.py

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

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

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

* Update package.py

* Update package.py

* I think I've finally got it

* Update package.py

* Update package.py

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

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

* correct format errors

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Combine patches for missing qt3 headers and remove krell variant

The variant should have always been applied.

* Restrict QT patches to actual applicable versions/situations

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

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

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

* Update dependency

* Update package.py

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

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

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

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

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

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

* Extra variants for py-lxml

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

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

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

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

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

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

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

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

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

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

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

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

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

* Add extra version of highfive

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

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

* Flang parallel build has a race condition.

* llvm-flang now uses built-in CudaPackage.

* Add variant for different build releases.

* Fix OpenMP target offload for NVidia GPUs.

* Additional commong flags that are needed with comments.

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

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

* Fix errors in metall/package.py

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

Change to https style URL

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

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

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

* Update metall/package.py. Removed a comment

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

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

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

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

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

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

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

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

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

This commit also

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

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

* Remove unused patchelf definition.

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

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

    python -m pyinstrument script.py

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

    spack python -m pyinstrument ./test.py

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

* Fixing some minor issues.

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

* Only for the latest version.
2020-02-12 13:24:09 -05:00
2945 changed files with 96012 additions and 15981 deletions

View File

@@ -5,7 +5,7 @@ coverage:
status:
project:
default:
threshold: 0.3%
threshold: 0.2%
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!
-->

20
.github/workflows/install_spack.sh vendored Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env sh
. share/spack/setup-env.sh
echo -e "config:\n build_jobs: 2" > etc/spack/config.yaml
spack config add "packages:all:target:[x86_64]"
# TODO: remove this explicit setting once apple-clang detection is fixed
cat <<EOF > etc/spack/compilers.yaml
compilers:
- compiler:
spec: apple-clang@11.0.3
paths:
cc: /usr/bin/clang
cxx: /usr/bin/clang++
f77: /usr/local/bin/gfortran-9
fc: /usr/local/bin/gfortran-9
modules: []
operating_system: catalina
target: x86_64
EOF
spack compiler info apple-clang
spack debug report

View File

@@ -3,12 +3,12 @@ name: linux builds
on:
push:
branches:
- master
- develop
- releases/**
pull_request:
branches:
- master
- develop
- releases/**
paths-ignore:
# Don't run if we only modified packages in the built-in repository
- 'var/spack/repos/builtin/**'
@@ -18,33 +18,41 @@ on:
- '!var/spack/repos/builtin/packages/py-setuptools/**'
- '!var/spack/repos/builtin/packages/openjpeg/**'
- '!var/spack/repos/builtin/packages/r-rcpp/**'
- '!var/spack/repos/builtin/packages/ruby-rake/**'
# Don't run if we only modified documentation
- 'lib/spack/docs/**'
jobs:
build:
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
package: [lz4, mpich, tut, py-setuptools, openjpeg, r-rcpp]
package:
- lz4 # MakefilePackage
- mpich # AutotoolsPackage
- tut # WafPackage
- py-setuptools # PythonPackage
- openjpeg # CMakePackage
- r-rcpp # RPackage
- ruby-rake # RubyPackage
steps:
- uses: actions/checkout@v1
- name: Cache ccache's store
uses: actions/cache@v1
- uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: ~/.ccache
key: ccache-build-${{ matrix.package }}
restore-keys: |
ccache-build-${{ matrix.package }}
- name: Setup Python
uses: actions/setup-python@v1
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install System Packages
run: |
sudo apt-get -yqq install ccache gfortran perl perl-base r-base r-base-core r-base-dev findutils openssl libssl-dev libpciaccess-dev
sudo apt-get update
sudo apt-get -yqq install ccache gfortran perl perl-base r-base r-base-core r-base-dev ruby findutils openssl libssl-dev libpciaccess-dev
R --version
perl --version
ruby --version
- name: Copy Configuration
run: |
ccache -M 300M && ccache -z

114
.github/workflows/linux_unit_tests.yaml vendored Normal file
View File

@@ -0,0 +1,114 @@
name: linux tests
on:
push:
branches:
- develop
- releases/**
pull_request:
branches:
- develop
- releases/**
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
with:
fetch-depth: 0
- 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
. .github/workflows/setup_git.sh
- 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
- uses: codecov/codecov-action@v1
with:
flags: unittests,linux
shell:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install System packages
run: |
sudo apt-get -y update
sudo apt-get install -y coreutils gfortran gnupg2 mercurial ninja-build patchelf zsh fish
# 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
. .github/workflows/setup_git.sh
- name: Install kcov for bash script coverage
env:
KCOV_VERSION: 38
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 shell tests
env:
COVERAGE: true
run: |
share/spack/qa/run-shell-tests
- uses: codecov/codecov-action@v1
with:
flags: shelltests,linux
centos6:
# Test for Python2.6 run on Centos 6
runs-on: ubuntu-latest
container: spack/github-actions:centos6
steps:
- name: Run unit tests
env:
HOME: /home/spack-test
run: |
whoami && echo $HOME && cd $HOME
git clone https://github.com/spack/spack.git && cd spack
git fetch origin ${{ github.ref }}:test-branch
git checkout test-branch
share/spack/qa/run-unit-tests

79
.github/workflows/macos_python.yml vendored Normal file
View File

@@ -0,0 +1,79 @@
# 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 * * *'
pull_request:
branches:
- develop
paths:
# Run if we modify this yaml file
- '.github/workflows/macos_python.yml'
# TODO: run if we touch any of the recipes involved in this
# 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
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: spack install
run: |
. .github/workflows/install_spack.sh
# 9.2.0 is the latest version on which we apply homebrew patch
spack install -v --fail-fast gcc@9.2.0 %apple-clang
install_jupyter_clang:
name: jupyter
runs-on: macos-latest
timeout-minutes: 700
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack config add packages:opengl:paths:opengl@4.1:/usr/X11R6
spack install -v --fail-fast py-jupyter %apple-clang
install_scipy_clang:
name: scipy, mpl, pd
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack install -v --fail-fast py-scipy %apple-clang
spack install -v --fail-fast py-matplotlib %apple-clang
spack install -v --fail-fast py-pandas %apple-clang
install_mpi4py_clang:
name: mpi4py, petsc4py
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: spack install
run: |
. .github/workflows/install_spack.sh
spack install -v --fail-fast py-mpi4py %apple-clang
spack install -v --fail-fast py-petsc4py %apple-clang

41
.github/workflows/macos_unit_tests.yaml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: macos tests
on:
push:
branches:
- develop
- releases/**
pull_request:
branches:
- develop
- releases/**
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-python@v2
with:
python-version: 3.8
- 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 install gcc gnupg2 dash kcov
- name: Run unit tests
run: |
git --version
. .github/workflows/setup_git.sh
. share/spack/setup-env.sh
coverage run $(which spack) unit-test
coverage combine
coverage xml
- uses: codecov/codecov-action@v1
with:
file: ./coverage.xml
flags: unittests,macos

View File

@@ -1,30 +0,0 @@
name: python version check
on:
push:
branches:
- master
- develop
pull_request:
branches:
- master
- develop
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install Python Packages
run: |
pip install --upgrade pip
pip install --upgrade vermin
- name: Minimum Version (Spack's Core)
run: vermin --backport argparse -t=2.6- -t=3.5- -v lib/spack/spack/ lib/spack/llnl/ bin/
- name: Minimum Version (Repositories)
run: vermin --backport argparse -t=2.6- -t=3.5- -v var/spack/repos

9
.github/workflows/setup_git.sh vendored Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env sh
git config --global user.email "spack@example.com"
git config --global user.name "Test User"
# With fetch-depth: 0 we have a remote develop
# but not a local branch. Don't do this on develop
if [ "$(git branch --show-current)" != "develop" ]
then
git branch develop origin/develop
fi

65
.github/workflows/style_and_docs.yaml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: style and docs
on:
push:
branches:
- develop
- releases/**
pull_request:
branches:
- develop
- releases/**
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install Python Packages
run: |
pip install --upgrade pip
pip install --upgrade vermin
- name: Minimum Version (Spack's Core)
run: vermin --backport argparse -t=2.6- -t=3.5- -v lib/spack/spack/ lib/spack/llnl/ bin/
- name: Minimum Version (Repositories)
run: vermin --backport argparse -t=2.6- -t=3.5- -v var/spack/repos
flake8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install Python packages
run: |
pip install --upgrade pip six setuptools flake8
- name: Setup git configuration
run: |
# Need this for the git tests to succeed.
git --version
. .github/workflows/setup_git.sh
- name: Run flake8 tests
run: |
share/spack/qa/run-flake8-tests
documentation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install System packages
run: |
sudo apt-get -y update
sudo apt-get install -y coreutils ninja-build graphviz
- name: Install Python packages
run: |
pip install --upgrade pip six setuptools
pip install --upgrade -r lib/spack/docs/requirements.txt
- name: Build documentation
run: |
share/spack/qa/run-doc-tests

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

@@ -20,8 +20,8 @@ Geoffrey Oxberry <oxberry1@llnl.gov> Geoffrey Oxberry
Glenn Johnson <glenn-johnson@uiowa.edu> Glenn Johnson <gjohnson@argon-ohpc.hpc.uiowa.edu>
Glenn Johnson <glenn-johnson@uiowa.edu> Glenn Johnson <glennpj@gmail.com>
Gregory Becker <becker33@llnl.gov> Gregory Becker <becker33.llnl.gov>
Gregory Becker <becker33@llnl.gov> becker33 <becker33.llnl.gov>
Gregory Becker <becker33@llnl.gov> becker33 <becker33@llnl.gov>
Gregory Becker <becker33@llnl.gov> Gregory Becker <becker33.llnl.gov>
Gregory Becker <becker33@llnl.gov> Gregory Becker <becker33@llnl.gov>
Gregory L. Lee <lee218@llnl.gov> Greg Lee <lee218@llnl.gov>
Gregory L. Lee <lee218@llnl.gov> Gregory L. Lee <lee218@cab687.llnl.gov>
Gregory L. Lee <lee218@llnl.gov> Gregory L. Lee <lee218@cab690.llnl.gov>

View File

@@ -1,168 +0,0 @@
#=============================================================================
# Project settings
#=============================================================================
# Only build master and develop on push; do not build every branch.
branches:
only:
- master
- develop
- /^releases\/.*$/
#=============================================================================
# Build matrix
#=============================================================================
dist: xenial
jobs:
fast_finish: true
include:
- stage: 'style checks'
python: '3.8'
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
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 ]
- 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'
- 'unit tests + documentation'
#=============================================================================
# Environment
#=============================================================================
# Docs need graphviz to build
addons:
# for Linux builds, we use APT
apt:
packages:
- ccache
- cmake
- gfortran
- graphviz
- gnupg2
- kcov
- mercurial
- ninja-build
- perl
- perl-base
- realpath
- r-base
- r-base-core
- r-base-dev
- zsh
# for Mac builds, we use Homebrew
homebrew:
packages:
- python@2
- gcc
- gnupg2
- ccache
- dash
- kcov
update: true
# ~/.ccache needs to be cached directly as Travis is not taking care of it
# (possibly because we use 'language: python' and not 'language: c')
cache:
pip: true
ccache: true
directories:
- ~/.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 various dependencies
install:
- pip install --upgrade pip
- pip install --upgrade six
- pip install --upgrade setuptools
- pip install --upgrade codecov coverage==4.5.4
- pip install --upgrade flake8
- pip install --upgrade pep8-naming
- if [[ "$TEST_SUITE" == "doc" ]]; then
pip install --upgrade -r lib/spack/docs/requirements.txt;
fi
before_script:
# Need this for the git tests to succeed.
- git config --global user.email "spack@example.com"
- git config --global user.name "Test User"
# Need this to be able to compute the list of changed files
- git fetch origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}
#=============================================================================
# Building
#=============================================================================
script:
- share/spack/qa/run-$TEST_SUITE-tests
after_success:
- ccache -s
- case "$TEST_SUITE" in
unit)
if [[ "$COVERAGE" == "true" ]]; then
codecov --env PYTHON_VERSION
--required
--flags "${TEST_SUITE}${TRAVIS_OS_NAME}";
fi
;;
esac
#=============================================================================
# Notifications
#=============================================================================
notifications:
email:
recipients: tgamblin@llnl.gov
on_success: change
on_failure: always

View File

@@ -1,3 +1,285 @@
# v0.15.4 (2020-08-12)
This release contains one feature addition:
* Users can set `SPACK_GNUPGHOME` to override Spack's GPG path (#17139)
Several bugfixes for CUDA, binary packaging, and `spack -V`:
* CUDA package's `.libs` method searches for `libcudart` instead of `libcuda` (#18000)
* Don't set `CUDAHOSTCXX` in environments that contain CUDA (#17826)
* `buildcache create`: `NoOverwriteException` is a warning, not an error (#17832)
* Fix `spack buildcache list --allarch` (#17884)
* `spack -V` works with `releases/latest` tag and shallow clones (#17884)
And fixes for GitHub Actions and tests to ensure that CI passes on the
release branch (#15687, #17279, #17328, #17377, #17732).
# v0.15.3 (2020-07-28)
This release contains the following bugfixes:
* Fix handling of relative view paths (#17721)
* Fixes for binary relocation (#17418, #17455)
* Fix redundant printing of error messages in build environment (#17709)
It also adds a support script for Spack tutorials:
* Add a tutorial setup script to share/spack (#17705, #17722)
# v0.15.2 (2020-07-23)
This minor release includes two new features:
* Spack install verbosity is decreased, and more debug levels are added (#17546)
* The $spack/share/spack/keys directory contains public keys that may be optionally trusted for public binary mirrors (#17684)
This release also includes several important fixes:
* MPICC and related variables are now cleand in the build environment (#17450)
* LLVM flang only builds CUDA offload components when +cuda (#17466)
* CI pipelines no longer upload user environments that can contain secrets to the internet (#17545)
* CI pipelines add bootstrapped compilers to the compiler config (#17536)
* `spack buildcache list` does not exit on first failure and lists later mirrors (#17565)
* Apple's "gcc" executable that is an apple-clang compiler does not generate a gcc compiler config (#17589)
* Mixed compiler toolchains are merged more naturally across different compiler suffixes (#17590)
* Cray Shasta platforms detect the OS properly (#17467)
* Additional more minor fixes.
# v0.15.1 (2020-07-10)
This minor release includes several important fixes:
* Fix shell support on Cray (#17386)
* Fix use of externals installed with other Spack instances (#16954)
* Fix gcc+binutils build (#9024)
* Fixes for usage of intel-mpi (#17378 and #17382)
* Fixes to Autotools config.guess detection (#17333 and #17356)
* Update `spack install` message to prompt user when an environment is not
explicitly activated (#17454)
This release also adds a mirror for all sources that are
fetched in Spack (#17077). It is expected to be useful when the
official website for a Spack package is unavailable.
# 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:
* Improvements to how `spack install` handles foreground/background (#15723)
* Major performance improvements for reading the package DB (#14693, #15777)
* No longer check for the old `index.yaml` database file (#15298)
* Properly activate environments with '-h' in the name (#15429)
* External packages have correct `.prefix` in environments/views (#15475)
* Improvements to computing env modifications from sourcing files (#15791)
* Bugfix on Cray machines when getting `TERM` env variable (#15630)
* Avoid adding spurious `LMOD` env vars to Intel modules (#15778)
* Don't output [+] for mock installs run during tests (#15609)
# v0.14.1 (2020-03-20)
This is a bugfix release on top of `v0.14.0`. Specific fixes include:
* several bugfixes for parallel installation (#15339, #15341, #15220, #15197)
* `spack load` now works with packages that have been renamed (#14348)
* bugfix for `suite-sparse` installation (#15326)
* deduplicate identical suffixes added to module names (#14920)
* fix issues with `configure_args` during module refresh (#11084)
* increased test coverage and test fixes (#15237, #15354, #15346)
* remove some unused code (#15431)
# v0.14.0 (2020-02-23)
`v0.14.0` is a major feature release, with 3 highlighted features:
1. **Distributed builds.** Multiple Spack instances will now coordinate
properly with each other through locks. This works on a single node
(where you've called `spack` several times) or across multiple nodes
with a shared filesystem. For example, with SLURM, you could build
`trilinos` and its dependencies on 2 24-core nodes, with 3 Spack
instances per node and 8 build jobs per instance, with `srun -N 2 -n 6
spack install -j 8 trilinos`. This requires a filesystem with locking
enabled, but not MPI or any other library for parallelism.
2. **Build pipelines.** You can also build in parallel through Gitlab
CI. Simply create a Spack environment and push it to Gitlab to build
on Gitlab runners. Pipeline support is now 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.
3. **Container builds.** The new `spack containerize` command allows you
to create a Docker or Singularity recipe from any Spack environment.
There are options to customize the build if you need them. See the
[Container Images section](https://spack.readthedocs.io/en/latest/containers.html)
in the docs.
In addition, there are several other new commands, many bugfixes and
improvements, and `spack load` no longer requires modules, so you can use
it the same way on your laptop or on your supercomputer.
Spack grew by over 300 packages since our last release in November 2019,
and the project grew to over 500 contributors. Thanks to all of you for
making yet another great release possible. Detailed notes below.
## Major new core features
* Distributed builds: spack instances coordinate and build in parallel (#13100)
* New `spack ci` command to manage CI pipelines (#12854)
* Generate container recipes from environments: `spack containerize` (#14202)
* `spack load` now works without using modules (#14062, #14628)
* Garbage collect old/unused installations with `spack gc` (#13534)
* Configuration files all set environment modifications the same way (#14372,
[docs](https://spack.readthedocs.io/en/v0.14.0/configuration.html#environment-modifications))
* `spack commands --format=bash` auto-generates completion (#14393, #14607)
* Packages can specify alternate fetch URLs in case one fails (#13881)
## Improvements
* Improved locking for concurrency with environments (#14676, #14621, #14692)
* `spack test` sends args to `pytest`, supports better listing (#14319)
* Better support for aarch64 and cascadelake microarch (#13825, #13780, #13820)
* Archspec is now a separate library (see https://github.com/archspec/archspec)
* Many improvements to the `spack buildcache` command (#14237, #14346,
#14466, #14467, #14639, #14642, #14659, #14696, #14698, #14714, #14732,
#14929, #15003, #15086, #15134)
## Selected Bugfixes
* Compilers now require an exact match on version (#8735, #14730, #14752)
* Bugfix for patches that specified specific versions (#13989)
* `spack find -p` now works in environments (#10019, #13972)
* Dependency queries work correctly in `spack find` (#14757)
* Bugfixes for locking upstream Spack instances chains (#13364)
* Fixes for PowerPC clang optimization flags (#14196)
* Fix for issue with compilers and specific microarchitectures (#13733, #14798)
## New commands and options
* `spack ci` (#12854)
* `spack containerize` (#14202)
* `spack gc` (#13534)
* `spack load` accepts `--only package`, `--only dependencies` (#14062, #14628)
* `spack commands --format=bash` (#14393)
* `spack commands --update-completion` (#14607)
* `spack install --with-cache` has new option: `--no-check-signature` (#11107)
* `spack test` now has `--list`, `--list-long`, and `--list-names` (#14319)
* `spack install --help-cdash` moves CDash help out of the main help (#13704)
## Deprecations
* `spack release-jobs` has been rolled into `spack ci`
* `spack bootstrap` will be removed in a future version, as it is no longer
needed to set up modules (see `spack load` improvements above)
## Documentation
* New section on building container images with Spack (see
[docs](https://spack.readthedocs.io/en/latest/containers.html))
* New section on using `spack ci` command to build pipelines (see
[docs](https://spack.readthedocs.io/en/latest/pipelines.html))
* Document how to add conditional dependencies (#14694)
* Document how to use Spack to replace Homebrew/Conda (#13083, see
[docs](https://spack.readthedocs.io/en/latest/workflows.html#using-spack-to-replace-homebrew-conda))
## Important package changes
* 3,908 total packages (345 added since 0.13.0)
* Added first cut at a TensorFlow package (#13112)
* We now build R without "recommended" packages, manage them w/Spack (#12015)
* Elpa and OpenBLAS now leverage microarchitecture support (#13655, #14380)
* Fix `octave` compiler wrapper usage (#14726)
* Enforce that packages in `builtin` aren't missing dependencies (#13949)
# v0.13.4 (2020-02-07)
This release contains several bugfixes:
@@ -16,8 +298,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,20 +1,21 @@
Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
Spack Project Developers. See the top-level COPYRIGHT file for details.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
Copyright (c) 2013-2020 LLNS, LLC and other Spack Project Developers.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,7 +1,9 @@
# <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)
[![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)
@@ -71,15 +73,33 @@ When you send your request, make ``develop`` the destination branch on the
Your PR must pass Spack's unit tests and documentation tests, and must be
[PEP 8](https://www.python.org/dev/peps/pep-0008/) compliant. We enforce
these guidelines with [Travis CI](https://travis-ci.org/spack/spack). To
run these tests locally, and for helpful tips on git, see our
these guidelines with our CI process. To run these tests locally, and for
helpful tips on git, see our
[Contribution Guide](http://spack.readthedocs.io/en/latest/contribution_guide.html).
Spack uses a rough approximation of the
[Git Flow](http://nvie.com/posts/a-successful-git-branching-model/)
branching model. The ``develop`` branch contains the latest
contributions, and ``master`` is always tagged and points to the latest
stable release.
Spack's `develop` branch has the latest contributions. Pull requests
should target `develop`, and users who want the latest package versions,
features, etc. can use `develop`.
Releases
--------
For multi-user site deployments or other use cases that need very stable
software installations, we recommend using Spack's
[stable releases](https://github.com/spack/spack/releases).
Each Spack release series also has a corresponding branch, e.g.
`releases/v0.14` has `0.14.x` versions of Spack, and `releases/v0.13` has
`0.13.x` versions. We backport important bug fixes to these branches but
we do not advance the package versions or make other changes that would
change the way Spack concretizes dependencies within a release branch.
So, you can base your Spack deployment on a release branch and `git pull`
to get fixes, without the package churn that comes with `develop`.
The latest release is always available with the `releases/latest` tag.
See the [docs on releases](https://spack.readthedocs.io/en/latest/developer_guide.html#releases)
for more details.
Code of Conduct
------------------------
@@ -120,4 +140,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

@@ -16,7 +16,7 @@
config:
# This is the path to the root of the Spack install tree.
# You can use $spack here to refer to the root of the spack instance.
install_tree: ~/.spack/opt/spack
install_tree: $spack/opt/spack
# Locations where templates should be found
@@ -30,8 +30,8 @@ config:
# Locations where different types of modules should be installed.
module_roots:
tcl: ~/.spack/share/spack/modules
lmod: ~/.spack/share/spack/lmod
tcl: $spack/share/spack/modules
lmod: $spack/share/spack/lmod
# Temporary locations Spack can try to use for builds.
@@ -64,10 +64,14 @@ config:
- ~/.spack/stage
# - $spack/var/spack/stage
# Directory in which to run tests and store test results.
# Tests will be stored in directories named by date/time and package
# name/hash.
test_stage: ~/.spack/test
# Cache directory for already downloaded source tarballs and archived
# repositories. This can be purged with `spack clean --downloads`.
source_cache: ~/.spack/var/spack/cache
source_cache: $spack/var/spack/cache
# Cache directory for miscellaneous files, like the package index.
@@ -75,6 +79,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
@@ -137,7 +147,7 @@ config:
# when Spack needs to manage its own package metadata and all operations are
# expected to complete within the default time limit. The timeout should
# therefore generally be left untouched.
db_lock_timeout: 120
db_lock_timeout: 3
# How long to wait when attempting to modify a package (e.g. to install it).
@@ -151,3 +161,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,13 +15,20 @@
# -------------------------------------------------------------------------
packages:
all:
compiler: [clang, gcc, intel]
compiler:
- apple-clang
- clang
- gcc
- intel
providers:
elf: [libelf]
unwind: [apple-libunwind]
elf:
- libelf
unwind:
- apple-libunwind
apple-libunwind:
paths:
buildable: false
externals:
# Apple bundles libunwind version 35.3 with macOS 10.9 and later,
# although the version number used here isn't critical
apple-libunwind@35.3: /usr
buildable: False
- spec: apple-libunwind@35.3
prefix: /usr

View File

@@ -0,0 +1,2 @@
mirrors:
spack-public: https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/

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]
@@ -37,12 +38,15 @@ packages:
mpi: [openmpi, mpich]
mysql-client: [mysql, mariadb-c-client]
opencl: [pocl]
pil: [py-pillow]
pil: [py-pillow-simd]
pkgconfig: [pkgconf, pkg-config]
rpc: [libtirpc]
scalapack: [netlib-scalapack]
sycl: [hipsycl]
szip: [libszip, libaec]
tbb: [intel-tbb]
unwind: [libunwind]
sycl: [hipsycl]
permissions:
read: world
write: user

View File

@@ -1,7 +0,0 @@
upstreams:
global:
install_tree: $spack/opt/spack
modules:
tcl: $spack/share/spack/modules
lmod: $spack/share/spack/lmod
dotkit: $spack/share/spack/dotkit

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": {
@@ -687,11 +695,11 @@ Here is an example of a much longer spec than we've seen thus far:
.. code-block:: none
mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt arch=bgq_os ^callpath @1.1 %gcc@4.7.2
mpileaks @1.2:1.4 %gcc@4.7.5 +debug -qt target=x86_64 ^callpath @1.1 %gcc@4.7.2
If provided to ``spack install``, this will install the ``mpileaks``
library at some version between ``1.2`` and ``1.4`` (inclusive),
built using ``gcc`` at version 4.7.5 for the Blue Gene/Q architecture,
built using ``gcc`` at version 4.7.5 for a generic ``x86_64`` architecture,
with debug options enabled, and without Qt support. Additionally, it
says to link it with the ``callpath`` library (which it depends on),
and to build callpath with ``gcc`` 4.7.2. Most specs will not be as
@@ -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

@@ -57,10 +57,13 @@ directory. Here's an example of an external configuration:
packages:
openmpi:
paths:
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug
openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel
externals:
- spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64"
prefix: /opt/openmpi-1.4.3
- spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug"
prefix: /opt/openmpi-1.4.3-debug
- spec: "openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64"
prefix: /opt/openmpi-1.6.5-intel
This example lists three installations of OpenMPI, one built with GCC,
one built with GCC and debug information, and another built with Intel.
@@ -76,13 +79,15 @@ of the installation prefixes. The following example says that module
.. code-block:: yaml
cmake:
modules:
cmake@3.7.2: CMake/3.7.2
externals:
- spec: cmake@3.7.2
modules:
- CMake/3.7.2
Each ``packages.yaml`` begins with a ``packages:`` token, followed
by a list of package names. To specify externals, add a ``paths`` or ``modules``
token under the package name, which lists externals in a
``spec: /path`` or ``spec: module-name`` format. Each spec should be as
Each ``packages.yaml`` begins with a ``packages:`` attribute, followed
by a list of package names. To specify externals, add an ``externals:``
attribute under the package name, which lists externals.
Each external should specify a ``spec:`` string that should be as
well-defined as reasonably possible. If a
package lacks a spec component, such as missing a compiler or
package version, then Spack will guess the missing component based
@@ -106,10 +111,13 @@ be:
packages:
openmpi:
paths:
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7 arch=linux-x86_64-debian7+debug: /opt/openmpi-1.4.3-debug
openmpi@1.6.5%intel@10.1 arch=linux-x86_64-debian7: /opt/openmpi-1.6.5-intel
externals:
- spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64"
prefix: /opt/openmpi-1.4.3
- spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug"
prefix: /opt/openmpi-1.4.3-debug
- spec: "openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64"
prefix: /opt/openmpi-1.6.5-intel
buildable: False
The addition of the ``buildable`` flag tells Spack that it should never build
@@ -124,6 +132,82 @@ 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:
externals:
- spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64"
prefix: /opt/openmpi-1.4.3
- spec: "openmpi@1.4.3%gcc@4.4.7 arch=linux-debian7-x86_64+debug"
prefix: /opt/openmpi-1.4.3-debug
- spec: "openmpi@1.6.5%intel@10.1 arch=linux-debian7-x86_64"
prefix: /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:
externals:
- spec: cmake@3.17.2
prefix: /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

@@ -29,6 +29,7 @@ on these ideas for each distinct build system that Spack supports:
:maxdepth: 1
:caption: Make-incompatible
build_systems/mavenpackage
build_systems/sconspackage
build_systems/wafpackage

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

@@ -175,7 +175,7 @@ In the ``perl`` package, we can see:
@run_after('build')
@on_package_attributes(run_tests=True)
def test(self):
def build_test(self):
make('test')
As you can guess, this runs ``make test`` *after* building the package,

View File

@@ -418,9 +418,13 @@ Adapt the following example. Be sure to maintain the indentation:
# other content ...
intel-mkl:
modules:
intel-mkl@2018.2.199 arch=linux-centos6-x86_64: intel-mkl/18/18.0.2
intel-mkl@2018.3.222 arch=linux-centos6-x86_64: intel-mkl/18/18.0.3
externals:
- spec: "intel-mkl@2018.2.199 arch=linux-centos6-x86_64"
modules:
- intel-mkl/18/18.0.2
- spec: "intel-mkl@2018.3.222 arch=linux-centos6-x86_64"
modules:
- intel-mkl/18/18.0.3
The version numbers for the ``intel-mkl`` specs defined here correspond to file
and directory names that Intel uses for its products because they were adopted
@@ -451,12 +455,16 @@ mechanism.
packages:
intel-parallel-studio:
modules:
intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64: intel/18/18.0.2
intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64: intel/18/18.0.3
externals:
- spec: "intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64"
modules:
- intel/18/18.0.2
- spec: "intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal arch=linux-centos6-x86_64"
modules:
- intel/18/18.0.3
buildable: False
One additional example illustrates the use of ``paths:`` instead of
One additional example illustrates the use of ``prefix:`` instead of
``modules:``, useful when external modulefiles are not available or not
suitable:
@@ -464,13 +472,15 @@ suitable:
packages:
intel-parallel-studio:
paths:
intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal: /opt/intel
intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal: /opt/intel
externals:
- spec: "intel-parallel-studio@cluster.2018.2.199 +mkl+mpi+ipp+tbb+daal"
prefix: /opt/intel
- spec: "intel-parallel-studio@cluster.2018.3.222 +mkl+mpi+ipp+tbb+daal"
prefix: /opt/intel
buildable: False
Note that for the Intel packages discussed here, the directory values in the
``paths:`` entries must be the high-level and typically version-less
``prefix:`` entries must be the high-level and typically version-less
"installation directory" that has been used by Intel's product installer.
Such a directory will typically accumulate various product versions. Amongst
them, Spack will select the correct version-specific product directory based on
@@ -553,7 +563,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 +706,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 +975,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 +1065,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

@@ -0,0 +1,84 @@
.. 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)
.. _mavenpackage:
------------
MavenPackage
------------
Apache Maven is a general-purpose build system that does not rely
on Makefiles to build software. It is designed for building and
managing and Java-based project.
^^^^^^
Phases
^^^^^^
The ``MavenPackage`` base class comes with the following phases:
#. ``build`` - compile code and package into a JAR file
#. ``install`` - copy to installation prefix
By default, these phases run:
.. code-block:: console
$ mvn package
$ install . <prefix>
^^^^^^^^^^^^^^^
Important files
^^^^^^^^^^^^^^^
Maven packages can be identified by the presence of a ``pom.xml`` file.
This file lists dependencies and other metadata about the project.
There may also be configuration files in the ``.mvn`` directory.
^^^^^^^^^^^^^^^^^^^^^^^^^
Build system dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^
Maven requires the ``mvn`` executable to build the project. It also
requires Java at both build- and run-time. Because of this, the base
class automatically adds the following dependencies:
.. code-block:: python
depends_on('java', type=('build', 'run'))
depends_on('maven', type='build')
In the ``pom.xml`` file, you may see sections like:
.. code-block:: xml
<requireJavaVersion>
<version>[1.7,)</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[3.5.4,)</version>
</requireMavenVersion>
This specifies the versions of Java and Maven that are required to
build the package. See
https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402
for a description of this version range syntax. In this case, you
should add:
.. code-block:: python
depends_on('java@7:', type='build')
depends_on('maven@3.5.4:', type='build')
^^^^^^^^^^^^^^^^^^^^^^
External documentation
^^^^^^^^^^^^^^^^^^^^^^
For more information on the Maven build system, see:
https://maven.apache.org/index.html

View File

@@ -81,6 +81,24 @@ you'll need to define a function for it like so:
self.setup_py('configure')
^^^^^^
Wheels
^^^^^^
Some Python packages are closed-source and distributed as wheels.
Instead of using the ``PythonPackage`` base class, you should extend
the ``Package`` base class and implement the following custom installation
procedure:
.. code-block::
def install(self, spec, prefix):
pip = which('pip')
pip('install', self.stage.archive_file, '--prefix={0}'.format(prefix))
This will require a dependency on pip, as mentioned below.
^^^^^^^^^^^^^^^
Important files
^^^^^^^^^^^^^^^
@@ -95,6 +113,27 @@ file should be considered to be the truth. As dependencies are added or
removed, the documentation is much more likely to become outdated than
the ``setup.py``.
The Python ecosystem has evolved significantly over the years. Before
setuptools became popular, most packages listed their dependencies in a
``requirements.txt`` file. Once setuptools took over, these dependencies
were listed directly in the ``setup.py``. Newer PEPs introduced additional
files, like ``setup.cfg`` and ``pyproject.toml``. You should look out for
all of these files, as they may all contain important information about
package dependencies.
Some Python packages are closed-source and are distributed as Python
wheels. For example, ``py-azureml-sdk`` downloads a ``.whl`` file. This
file is simply a zip file, and can be extracted using:
.. code-block:: console
$ unzip *.whl
The zip file will not contain a ``setup.py``, but it will contain a
``METADATA`` file which contains all the information you need to
write a ``package.py`` build recipe.
^^^^^^^^^^^^^^^^^^^^^^^
Finding Python packages
^^^^^^^^^^^^^^^^^^^^^^^
@@ -105,8 +144,9 @@ it the only option for developers who want a simple installation.
Search for "PyPI <package-name>" to find the download page. Note that
some pages are versioned, and the first result may not be the newest
version. Click on the "Latest Version" button to the top right to see
if a newer version is available. The download page is usually at:
https://pypi.org/project/<package-name>
if a newer version is available. The download page is usually at::
https://pypi.org/project/<package-name>
^^^^^^^^^^^
Description
@@ -151,39 +191,67 @@ replacing this with the requested version. Obviously, if Spack cannot
guess the version correctly, or if non-version-related things change
in the URL, Spack cannot substitute the version properly.
Once upon a time, PyPI offered nice, simple download URLs like:
https://pypi.python.org/packages/source/n/numpy/numpy-1.13.1.zip
Once upon a time, PyPI offered nice, simple download URLs like::
https://pypi.python.org/packages/source/n/numpy/numpy-1.13.1.zip
As you can see, the version is 1.13.1. It probably isn't hard to guess
what URL to use to download version 1.12.0, and Spack was perfectly
capable of performing this calculation.
However, PyPI switched to a new download URL format:
https://pypi.python.org/packages/c0/3a/40967d9f5675fbb097ffec170f59c2ba19fc96373e73ad47c2cae9a30aed/numpy-1.13.1.zip#md5=2c3c0f4edf720c3a7b525dacc825b9ae
However, PyPI switched to a new download URL format::
https://pypi.python.org/packages/c0/3a/40967d9f5675fbb097ffec170f59c2ba19fc96373e73ad47c2cae9a30aed/numpy-1.13.1.zip#md5=2c3c0f4edf720c3a7b525dacc825b9ae
and more recently::
https://files.pythonhosted.org/packages/b0/2b/497c2bb7c660b2606d4a96e2035e92554429e139c6c71cdff67af66b58d2/numpy-1.14.3.zip
and more recently:
https://files.pythonhosted.org/packages/b0/2b/497c2bb7c660b2606d4a96e2035e92554429e139c6c71cdff67af66b58d2/numpy-1.14.3.zip
As you can imagine, it is impossible for Spack to guess what URL to
use to download version 1.12.0 given this URL. There is a solution,
however. PyPI offers a new hidden interface for downloading
Python packages that does not include a hash in the URL:
https://pypi.io/packages/source/n/numpy/numpy-1.13.1.zip
Python packages that does not include a hash in the URL::
This URL redirects to the files.pythonhosted.org URL. The general syntax for
this pypi.io URL is:
https://pypi.io/packages/source/<first-letter-of-name>/<name>/<name>-<version>.<extension>
https://pypi.io/packages/source/n/numpy/numpy-1.13.1.zip
This URL redirects to the https://files.pythonhosted.org URL. The general
syntax for this https://pypi.io URL is::
https://pypi.io/packages/<type>/<first-letter-of-name>/<name>/<name>-<version>.<extension>
Please use the https://pypi.io URL instead of the https://pypi.python.org
URL. If both ``.tar.gz`` and ``.zip`` versions are available, ``.tar.gz``
is preferred. If some releases offer both ``.tar.gz`` and ``.zip`` versions,
but some only offer ``.zip`` versions, use ``.zip``.
Some Python packages are closed-source and do not ship ``.tar.gz`` or ``.zip``
files on either PyPI or GitHub. If this is the case, you can still download
and install a Python wheel. For example, ``py-azureml-sdk`` is closed source
and can be downloaded from::
https://pypi.io/packages/py3/a/azureml_sdk/azureml_sdk-1.11.0-py3-none-any.whl
Note that instead of ``<type>`` being ``source``, it is now ``py3`` since this
wheel will work for any generic version of Python 3. You may see Python-specific
or OS-specific URLs. Note that when you add a ``.whl`` URL, you should add
``expand=False`` to ensure that Spack doesn't try to extract the wheel:
.. code-block:: python
version('1.11.0', sha256='d8c9d24ea90457214d798b0d922489863dad518adde3638e08ef62de28fb183a', expand=False)
Please use the pypi.io URL instead of the pypi.python.org URL. If both
``.tar.gz`` and ``.zip`` versions are available, ``.tar.gz`` is preferred.
If some releases offer both ``.tar.gz`` and ``.zip`` versions, but some
only offer ``.zip`` versions, use ``.zip``.
"""""""""""""""
PyPI vs. GitHub
"""""""""""""""
Many packages are hosted on PyPI, but are developed on GitHub and other
Many packages are hosted on PyPI, but are developed on GitHub or another
version control systems. The tarball can be downloaded from either
location, but PyPI is preferred for the following reasons:
@@ -226,7 +294,7 @@ location, but PyPI is preferred for the following reasons:
There are some reasons to prefer downloading from GitHub:
#. The GitHub tarball may contain unit tests
#. The GitHub tarball may contain unit tests.
As previously mentioned, the PyPI tarball contains the bare minimum
of files to install the package. Unless explicitly specified by the
@@ -234,12 +302,6 @@ There are some reasons to prefer downloading from GitHub:
If you desire to run the unit tests during installation, you should
use the GitHub tarball instead.
#. Spack does not yet support ``spack versions`` and ``spack checksum``
with PyPI URLs
These commands work just fine with GitHub URLs. This is a minor
annoyance, not a reason to prefer GitHub over PyPI.
If you really want to run these unit tests, no one will stop you from
submitting a PR for a new package that downloads from GitHub.
@@ -280,8 +342,8 @@ If Python 2.7 is the only version that works, you can use:
The documentation may not always specify supported Python versions.
Another place to check is in the ``setup.py`` file. Look for a line
containing ``python_requires``. An example from
Another place to check is in the ``setup.py`` or ``setup.cfg`` file.
Look for a line containing ``python_requires``. An example from
`py-numpy <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/py-numpy/package.py>`_
looks like:
@@ -290,7 +352,7 @@ looks like:
python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*'
More commonly, you will find a version check at the top of the file:
You may also find a version check at the top of the ``setup.py``:
.. code-block:: python
@@ -305,6 +367,39 @@ This can be converted to Spack's spec notation like so:
depends_on('python@2.7:2.8,3.4:', type=('build', 'run'))
If you are writing a recipe for a package that only distributes
wheels, look for a section in the ``METADATA`` file that looks like::
Requires-Python: >=3.5,<4
This would be translated to:
.. code-block:: python
extends('python')
depends_on('python@3.5:3.999', type=('build', 'run'))
Many ``setup.py`` or ``setup.cfg`` files also contain information like::
Programming Language :: Python :: 2
Programming Language :: Python :: 2.6
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.3
Programming Language :: Python :: 3.4
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
This is a list of versions of Python that the developer likely tests.
However, you should not use this to restrict the versions of Python
the package uses unless one of the two former methods (``python_requires``
or ``sys.version_info``) is used. There is no logic in setuptools
that prevents the package from building for Python versions not in
this list, and often new releases like Python 3.7 or 3.8 work just fine.
""""""""""
setuptools
""""""""""
@@ -317,7 +412,7 @@ Most notably, there was no way to list a project's dependencies
with distutils. Along came setuptools, a non-builtin build system
designed to overcome the limitations of distutils. Both projects
use a similar API, making the transition easy while adding much
needed functionality. Today, setuptools is used in around 75% of
needed functionality. Today, setuptools is used in around 90% of
the Python packages in Spack.
Since setuptools isn't built-in to Python, you need to add it as a
@@ -360,6 +455,20 @@ run-time. This can be specified as:
depends_on('py-setuptools', type='build')
"""
pip
"""
Packages distributed as Python wheels will require an extra dependency
on pip:
.. code-block:: python
depends_on('py-pip', type='build')
We will use pip to install the actual wheel.
""""""
cython
""""""
@@ -383,6 +492,12 @@ where speed is crucial. There is no reason why someone would not
want an optimized version of a library instead of the pure-Python
version.
Note that some release tarballs come pre-cythonized, and cython is
not needed as a dependency. However, this is becoming less common
as Python continues to evolve and developers discover that cythonized
sources are no longer compatible with newer versions of Python and
need to be re-cythonized.
^^^^^^^^^^^^^^^^^^^
Python dependencies
^^^^^^^^^^^^^^^^^^^
@@ -429,15 +544,26 @@ Obviously, this means that ``py-numpy`` is a dependency.
If the package uses ``setuptools``, check for the following clues:
* ``python_requires``
As mentioned above, this specifies which versions of Python are
required.
* ``setup_requires``
These packages are usually only needed at build-time, so you can
add them with ``type='build'``.
* ``install_requires``
These packages are required for installation.
These packages are required for building and installation. You can
add them with ``type=('build', 'run')``.
* ``extra_requires``
These packages are optional dependencies that enable additional
functionality. You should add a variant that optionally adds these
dependencies.
dependencies. This variant should be False by default.
* ``test_requires``
@@ -461,13 +587,37 @@ sphinx. If you can't find any information about the package's
dependencies, you can take a look in ``requirements.txt``, but be sure
not to add test or documentation dependencies.
Newer PEPs have added alternative ways to specify a package's dependencies.
If you don't see any dependencies listed in the ``setup.py``, look for a
``setup.cfg`` or ``pyproject.toml``. These files can be used to store the
same ``install_requires`` information that ``setup.py`` used to use.
If you are write a recipe for a package that only distributes wheels,
check the ``METADATA`` file for lines like::
Requires-Dist: azureml-core (~=1.11.0)
Requires-Dist: azureml-dataset-runtime[fuse] (~=1.11.0)
Requires-Dist: azureml-train (~=1.11.0)
Requires-Dist: azureml-train-automl-client (~=1.11.0)
Requires-Dist: azureml-pipeline (~=1.11.0)
Provides-Extra: accel-models
Requires-Dist: azureml-accel-models (~=1.11.0); extra == 'accel-models'
Provides-Extra: automl
Requires-Dist: azureml-train-automl (~=1.11.0); extra == 'automl'
Lines that use ``Requires-Dist`` are similar to ``install_requires``.
Lines that use ``Provides-Extra`` are similar to ``extra_requires``,
and you can add a variant for those dependencies. The ``~=1.11.0``
syntax is equivalent to ``1.11.0:1.11.999``.
""""""""""
setuptools
""""""""""
Setuptools is a bit of a special case. If a package requires setuptools
at run-time, how do they express this? They could add it to
``install_requires``, but setuptools is imported long before this and
``install_requires``, but setuptools is imported long before this and is
needed to read this line. And since you can't install the package
without setuptools, the developers assume that setuptools will already
be there, so they never mention when it is required. We don't want to
@@ -580,11 +730,13 @@ By default, Spack runs:
if it detects that the ``setup.py`` file supports a ``test`` phase.
You can add additional build-time or install-time tests by overriding
``test`` and ``installtest``, respectively. For example, ``py-numpy``
adds:
``test`` or adding a custom install-time test function. For example,
``py-numpy`` adds:
.. code-block:: python
install_time_test_callbacks = ['install_test', 'import_module_test']
def install_test(self):
with working_dir('..'):
python('-c', 'import numpy; numpy.test("full", verbose=2)')
@@ -651,6 +803,8 @@ that the package uses the ``PythonPackage`` build system. However, there
are occasionally packages that use ``PythonPackage`` that shouldn't
start with ``py-``. For example:
* awscli
* aws-parallelcluster
* busco
* easybuild
* httpie
@@ -736,8 +890,9 @@ non-Python dependencies. Anaconda contains many Python packages that
are not yet in Spack, and Spack contains many Python packages that are
not yet in Anaconda. The main advantage of Spack over Anaconda is its
ability to choose a specific compiler and BLAS/LAPACK or MPI library.
Spack also has better platform support for supercomputers. On the
other hand, Anaconda offers Windows support.
Spack also has better platform support for supercomputers, and can build
optimized binaries for your specific microarchitecture. On the other hand,
Anaconda offers Windows support.
^^^^^^^^^^^^^^^^^^^^^^
External documentation

View File

@@ -12,5 +12,173 @@ RubyPackage
Like Perl, Python, and R, Ruby has its own build system for
installing Ruby gems.
This build system is a work-in-progress. See
https://github.com/spack/spack/pull/3127 for more information.
^^^^^^
Phases
^^^^^^
The ``RubyPackage`` base class provides the following phases that
can be overridden:
#. ``build`` - build everything needed to install
#. ``install`` - install everything from build directory
For packages that come with a ``*.gemspec`` file, these phases run:
.. code-block:: console
$ gem build *.gemspec
$ gem install *.gem
For packages that come with a ``Rakefile`` file, these phases run:
.. code-block:: console
$ rake package
$ gem install *.gem
For packages that come pre-packaged as a ``*.gem`` file, the build
phase is skipped and the install phase runs:
.. code-block:: console
$ gem install *.gem
These are all standard ``gem`` commands and can be found by running:
.. code-block:: console
$ gem help commands
For packages that only distribute ``*.gem`` files, these files can be
downloaded with the ``expand=False`` option in the ``version`` directive.
The build phase will be automatically skipped.
^^^^^^^^^^^^^^^
Important files
^^^^^^^^^^^^^^^
When building from source, Ruby packages can be identified by the
presence of any of the following files:
* ``*.gemspec``
* ``Rakefile``
* ``setup.rb`` (not yet supported)
However, not all Ruby packages are released as source code. Some are only
released as ``*.gem`` files. These files can be extracted using:
.. code-block:: console
$ gem unpack *.gem
^^^^^^^^^^^
Description
^^^^^^^^^^^
The ``*.gemspec`` file may contain something like:
.. code-block:: ruby
summary = 'An implementation of the AsciiDoc text processor and publishing toolchain'
description = 'A fast, open source text processor and publishing toolchain for converting AsciiDoc content to HTML 5, DocBook 5, and other formats.'
Either of these can be used for the description of the Spack package.
^^^^^^^^
Homepage
^^^^^^^^
The ``*.gemspec`` file may contain something like:
.. code-block:: ruby
homepage = 'https://asciidoctor.org'
This should be used as the official homepage of the Spack package.
^^^^^^^^^^^^^^^^^^^^^^^^^
Build system dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^
All Ruby packages require Ruby at build and run-time. For this reason,
the base class contains:
.. code-block:: python
extends('ruby')
depends_on('ruby', type=('build', 'run'))
The ``*.gemspec`` file may contain something like:
.. code-block:: ruby
required_ruby_version = '>= 2.3.0'
This can be added to the Spack package using:
.. code-block:: python
depends_on('ruby@2.3.0:', type=('build', 'run'))
^^^^^^^^^^^^^^^^^
Ruby dependencies
^^^^^^^^^^^^^^^^^
When you install a package with ``gem``, it reads the ``*.gemspec``
file in order to determine the dependencies of the package.
If the dependencies are not yet installed, ``gem`` downloads them
and installs them for you. This may sound convenient, but Spack
cannot rely on this behavior for two reasons:
#. Spack needs to be able to install packages on air-gapped networks.
If there is no internet connection, ``gem`` can't download the
package dependencies. By explicitly listing every dependency in
the ``package.py``, Spack knows what to download ahead of time.
#. Duplicate installations of the same dependency may occur.
Spack supports *activation* of Ruby extensions, which involves
symlinking the package installation prefix to the Ruby installation
prefix. If your package is missing a dependency, that dependency
will be installed to the installation directory of the same package.
If you try to activate the package + dependency, it may cause a
problem if that package has already been activated.
For these reasons, you must always explicitly list all dependencies.
Although the documentation may list the package's dependencies,
often the developers assume people will use ``gem`` and won't have to
worry about it. Always check the ``*.gemspec`` file to find the true
dependencies.
Check for the following clues in the ``*.gemspec`` file:
* ``add_runtime_dependency``
These packages are required for installation.
* ``add_dependency``
This is an alias for ``add_runtime_dependency``
* ``add_development_dependency``
These packages are optional dependencies used for development.
They should not be added as dependencies of the package.
^^^^^^^^^^^^^^^^^^^^^^
External documentation
^^^^^^^^^^^^^^^^^^^^^^
For more information on Ruby packaging, see:
https://guides.rubygems.org/

View File

@@ -56,7 +56,7 @@ overridden like so:
.. code-block:: python
def test(self):
def build_test(self):
scons('check')

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

@@ -99,7 +99,7 @@ username is not already in the path, Spack will append the value of ``$user`` to
the selected ``build_stage`` path.
.. warning:: We highly recommend specifying ``build_stage`` paths that
distinguish between staging and other activities to ensure
distinguish between staging and other activities to ensure
``spack clean`` does not inadvertently remove unrelated files.
Spack prepends ``spack-stage-`` to temporary staging directory names to
reduce this risk. Using a combination of ``spack`` and or ``stage`` in
@@ -223,7 +223,7 @@ To build all software in serial, set ``build_jobs`` to 1.
--------------------
When set to ``true`` Spack will use ccache to cache compiles. This is
useful specifically in two cases: (1) when using ``spack setup``, and (2)
useful specifically in two cases: (1) when using ``spack dev-build``, and (2)
when building the same package with many different variants. The default is
``false``.

View File

@@ -44,8 +44,8 @@ Environments:
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Install the software, remove unnecessary deps
RUN cd /opt/spack-environment && spack env activate . && spack install && spack gc -y
# Strip all the binaries
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
@@ -71,7 +71,7 @@ Environments:
&& yum install -y libgomp \
&& rm -rf /var/cache/yum && yum clean all
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ "' >> ~/.bashrc
LABEL "app"="gromacs"
@@ -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 $ "' >> ~/.bashrc
# Labels for the image
labels:
@@ -266,8 +266,8 @@ following ``Dockerfile``:
&& echo " install_tree: /opt/software" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps
RUN cd /opt/spack-environment && spack install && spack gc -y
# Install the software, remove unnecessary deps
RUN cd /opt/spack-environment && spack env activate . && spack install && spack gc -y
# Strip all the binaries
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
@@ -293,7 +293,7 @@ following ``Dockerfile``:
&& yum install -y libgomp \
&& rm -rf /var/cache/yum && yum clean all
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ \[$(tput sgr0)\]"' >> ~/.bashrc
RUN echo 'export PS1="\[$(tput bold)\]\[$(tput setaf 1)\][gromacs]\[$(tput setaf 2)\]\u\[$(tput sgr0)\]:\w $ "' >> ~/.bashrc
LABEL "app"="gromacs"
@@ -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

@@ -27,17 +27,28 @@ correspond to one feature/bugfix/extension/etc. One can create PRs with
changes relevant to different ideas, however reviewing such PRs becomes tedious
and error prone. If possible, try to follow the **one-PR-one-package/feature** rule.
Spack uses a rough approximation of the `Git Flow <http://nvie.com/posts/a-successful-git-branching-model/>`_
branching model. The develop branch contains the latest contributions, and
master is always tagged and points to the latest stable release. Therefore, when
you send your request, make ``develop`` the destination branch on the
`Spack repository <https://github.com/spack/spack>`_.
--------
Branches
--------
Spack's ``develop`` branch has the latest contributions. Nearly all pull
requests should start from ``develop`` and target ``develop``.
There is a branch for each major release series. Release branches
originate from ``develop`` and have tags for each point release in the
series. For example, ``releases/v0.14`` has tags for ``0.14.0``,
``0.14.1``, ``0.14.2``, etc. versions of Spack. We backport important bug
fixes to these branches, but we do not advance the package versions or
make other changes that would change the way Spack concretizes
dependencies. Currently, the maintainers manage these branches by
cherry-picking from ``develop``. See :ref:`releases` for more
information.
----------------------
Continuous Integration
----------------------
Spack uses `Travis CI <https://travis-ci.org/spack/spack>`_ for Continuous Integration
Spack uses `Github Actions <https://docs.github.com/en/actions>`_ for Continuous Integration
testing. This means that every time you submit a pull request, a series of tests will
be run to make sure you didn't accidentally introduce any bugs into Spack. **Your PR
will not be accepted until it passes all of these tests.** While you can certainly wait
@@ -46,25 +57,24 @@ locally to speed up the review process.
.. note::
Oftentimes, Travis will fail for reasons other than a problem with your PR.
Oftentimes, CI will fail for reasons other than a problem with your PR.
For example, apt-get, pip, or homebrew will fail to download one of the
dependencies for the test suite, or a transient bug will cause the unit tests
to timeout. If Travis fails, click the "Details" link and click on the test(s)
to timeout. If any job fails, click the "Details" link and click on the test(s)
that is failing. If it doesn't look like it is failing for reasons related to
your PR, you have two options. If you have write permissions for the Spack
repository, you should see a "Restart job" button on the right-hand side. If
repository, you should see a "Restart workflow" button on the right-hand side. If
not, you can close and reopen your PR to rerun all of the tests. If the same
test keeps failing, there may be a problem with your PR. If you notice that
every recent PR is failing with the same error message, it may be that Travis
is down or one of Spack's dependencies put out a new release that is causing
problems. If this is the case, please file an issue.
every recent PR is failing with the same error message, it may be that an issue
occurred with the CI infrastructure or one of Spack's dependencies put out a
new release that is causing problems. If this is the case, please file an issue.
If you take a look in ``$SPACK_ROOT/.travis.yml``, you'll notice that we test
against Python 2.6, 2.7, and 3.4-3.7 on both macOS and Linux. We currently
We currently test against Python 2.6, 2.7, and 3.5-3.7 on both macOS and Linux and
perform 3 types of tests:
.. _cmd-spack-test:
.. _cmd-spack-unit-test:
^^^^^^^^^^
Unit Tests
@@ -86,7 +96,7 @@ To run *all* of the unit tests, use:
.. code-block:: console
$ spack test
$ spack unit-test
These tests may take several minutes to complete. If you know you are
only modifying a single Spack feature, you can run subsets of tests at a
@@ -95,51 +105,53 @@ time. For example, this would run all the tests in
.. code-block:: console
$ spack test architecture.py
$ spack unit-test lib/spack/spack/test/architecture.py
And this would run the ``test_platform`` test from that file:
.. code-block:: console
$ spack test architecture.py::test_platform
$ spack unit-test lib/spack/spack/test/architecture.py::test_platform
This allows you to develop iteratively: make a change, test that change,
make another change, test that change, etc. We use `pytest
<http://pytest.org/>`_ as our tests fromework, and these types of
<http://pytest.org/>`_ as our tests framework, and these types of
arguments are just passed to the ``pytest`` command underneath. See `the
pytest docs
<http://doc.pytest.org/en/latest/usage.html#specifying-tests-selecting-tests>`_
for more details on test selection syntax.
``spack test`` has a few special options that can help you understand
what tests are available. To get a list of all available unit test
files, run:
``spack unit-test`` has a few special options that can help you
understand what tests are available. To get a list of all available
unit test files, run:
.. command-output:: spack test --list
.. command-output:: spack unit-test --list
:ellipsis: 5
To see a more detailed list of available unit tests, use ``spack test
--list-long``:
To see a more detailed list of available unit tests, use ``spack
unit-test --list-long``:
.. command-output:: spack test --list-long
.. command-output:: spack unit-test --list-long
:ellipsis: 10
And to see the fully qualified names of all tests, use ``--list-names``:
.. command-output:: spack test --list-names
.. command-output:: spack unit-test --list-names
:ellipsis: 5
You can combine these with ``pytest`` arguments to restrict which tests
you want to know about. For example, to see just the tests in
``architecture.py``:
.. command-output:: spack test --list-long architecture.py
.. command-output:: spack unit-test --list-long lib/spack/spack/test/architecture.py
You can also combine any of these options with a ``pytest`` keyword
search. For example, to see the names of all tests that have "spec"
search. See the `pytest usage docs
<https://docs.pytest.org/en/stable/usage.html#specifying-tests-selecting-tests>`_:
for more details on test selection syntax. For example, to see the names of all tests that have "spec"
or "concretize" somewhere in their names:
.. command-output:: spack test --list-names -k "spec and concretize"
.. command-output:: spack unit-test --list-names -k "spec and concretize"
By default, ``pytest`` captures the output of all unit tests, and it will
print any captured output for failed tests. Sometimes it's helpful to see
@@ -149,7 +161,7 @@ argument to ``pytest``:
.. code-block:: console
$ spack test -s architecture.py::test_platform
$ spack unit-test -s --list-long lib/spack/spack/test/architecture.py::test_platform
Unit tests are crucial to making sure bugs aren't introduced into
Spack. If you are modifying core Spack libraries or adding new
@@ -162,9 +174,9 @@ how to write tests!
.. note::
You may notice the ``share/spack/qa/run-unit-tests`` script in the
repository. This script is designed for Travis CI. It runs the unit
repository. This script is designed for CI. It runs the unit
tests and reports coverage statistics back to Codecov. If you want to
run the unit tests yourself, we suggest you use ``spack test``.
run the unit tests yourself, we suggest you use ``spack unit-test``.
^^^^^^^^^^^^
Flake8 Tests
@@ -235,7 +247,7 @@ to update them.
Try fixing flake8 errors in reverse order. This eliminates the need for
multiple runs of ``spack flake8`` just to re-compute line numbers and
makes it much easier to fix errors directly off of the Travis output.
makes it much easier to fix errors directly off of the CI output.
.. warning::
@@ -315,7 +327,7 @@ Once all of the dependencies are installed, you can try building the documentati
.. code-block:: console
$ cd "$SPACK_ROOT/lib/spack/docs"
$ cd path/to/spack/lib/spack/docs/
$ make clean
$ make
@@ -327,7 +339,7 @@ your PR is accepted.
There is also a ``run-doc-tests`` script in ``share/spack/qa``. The only
difference between running this script and running ``make`` by hand is that
the script will exit immediately if it encounters an error or warning. This
is necessary for Travis CI. If you made a lot of documentation changes, it is
is necessary for CI. If you made a lot of documentation changes, it is
much quicker to run ``make`` by hand so that you can see all of the warnings
at once.
@@ -385,13 +397,13 @@ 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!
Unlike with Travis, Codecov tests are not required to pass in order for your
Unlike with CI on Github Actions Codecov tests are not required to pass in order for your
PR to be merged. If you modify core Spack libraries, we would greatly
appreciate unit tests that cover these changed lines. Otherwise, we have no
way of knowing whether or not your changes introduce a bug. If you make

View File

@@ -363,11 +363,12 @@ Developer commands
``spack doc``
^^^^^^^^^^^^^
^^^^^^^^^^^^^^
``spack test``
^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^
``spack unit-test``
^^^^^^^^^^^^^^^^^^^
See the :ref:`contributor guide section <cmd-spack-test>` on ``spack test``.
See the :ref:`contributor guide section <cmd-spack-unit-test>` on
``spack unit-test``.
.. _cmd-spack-python:
@@ -495,3 +496,398 @@ The bottom of the output shows the top most time consuming functions,
slowest on top. The profiling support is from Python's built-in tool,
`cProfile
<https://docs.python.org/2/library/profile.html#module-cProfile>`_.
.. _releases:
--------
Releases
--------
This section documents Spack's release process. It is intended for
project maintainers, as the tasks described here require maintainer
privileges on the Spack repository. For others, we hope this section at
least provides some insight into how the Spack project works.
.. _release-branches:
^^^^^^^^^^^^^^^^
Release branches
^^^^^^^^^^^^^^^^
There are currently two types of Spack releases: :ref:`major releases
<major-releases>` (``0.13.0``, ``0.14.0``, etc.) and :ref:`point releases
<point-releases>` (``0.13.1``, ``0.13.2``, ``0.13.3``, etc.). Here is a
diagram of how Spack release branches work::
o branch: develop (latest version)
|
o merge v0.14.1 into develop
|\
| o branch: releases/v0.14, tag: v0.14.1
o | merge v0.14.0 into develop
|\|
| o tag: v0.14.0
|/
o merge v0.13.2 into develop
|\
| o branch: releases/v0.13, tag: v0.13.2
o | merge v0.13.1 into develop
|\|
| o tag: v0.13.1
o | merge v0.13.0 into develop
|\|
| o tag: v0.13.0
o |
| o
|/
o
The ``develop`` branch has the latest contributions, and nearly all pull
requests target ``develop``.
Each Spack release series also has a corresponding branch, e.g.
``releases/v0.14`` has ``0.14.x`` versions of Spack, and
``releases/v0.13`` has ``0.13.x`` versions. A major release is the first
tagged version on a release branch. Minor releases are back-ported from
develop onto release branches. This is typically done by cherry-picking
bugfix commits off of ``develop``.
To avoid version churn for users of a release series, minor releases
should **not** make changes that would change the concretization of
packages. They should generally only contain fixes to the Spack core.
Both major and minor releases are tagged. After each release, we merge
the release branch back into ``develop`` so that the version bump and any
other release-specific changes are visible in the mainline. As a
convenience, we also tag the latest release as ``releases/latest``,
so that users can easily check it out to get the latest
stable version. See :ref:`merging-releases` for more details.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Scheduling work for releases
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We schedule work for releases by creating `GitHub projects
<https://github.com/spack/spack/projects>`_. At any time, there may be
several open release projects. For example, here are two releases (from
some past version of the page linked above):
.. image:: images/projects.png
Here, there's one release in progress for ``0.15.1`` and another for
``0.16.0``. Each of these releases has a project board containing issues
and pull requests. GitHub shows a status bar with completed work in
green, work in progress in purple, and work not started yet in gray, so
it's fairly easy to see progress.
Spack's project boards are not firm commitments, and we move work between
releases frequently. If we need to make a release and some tasks are not
yet done, we will simply move them to next minor or major release, rather
than delaying the release to complete them.
For more on using GitHub project boards, see `GitHub's documentation
<https://docs.github.com/en/github/managing-your-work-on-github/about-project-boards>`_.
.. _major-releases:
^^^^^^^^^^^^^^^^^^^^^
Making Major Releases
^^^^^^^^^^^^^^^^^^^^^
Assuming you've already created a project board and completed the work
for a major release, the steps to make the release are as follows:
#. Create two new project boards:
* One for the next major release
* One for the next point release
#. Move any tasks that aren't done yet to one of the new project boards.
Small bugfixes should go to the next point release. Major features,
refactors, and changes that could affect concretization should go in
the next major release.
#. Create a branch for the release, based on ``develop``:
.. code-block:: console
$ git checkout -b releases/v0.15 develop
For a version ``vX.Y.Z``, the branch's name should be
``releases/vX.Y``. That is, you should create a ``releases/vX.Y``
branch if you are preparing the ``X.Y.0`` release.
#. Bump the version in ``lib/spack/spack/__init__.py``. See `this example from 0.13.0
<https://github.com/spack/spack/commit/8eeb64096c98b8a43d1c587f13ece743c864fba9>`_
#. Update the release version lists in these files to include the new version:
* ``lib/spack/spack/schema/container.py``
* ``lib/spack/spack/container/images.json``
.. TODO: We should get rid of this step in some future release.
#. Update ``CHANGELOG.md`` with major highlights in bullet form. Use
proper markdown formatting, like `this example from 0.15.0
<https://github.com/spack/spack/commit/d4bf70d9882fcfe88507e9cb444331d7dd7ba71c>`_.
#. Push the release branch to GitHub.
#. Make sure CI passes on the release branch, including:
* Regular unit tests
* Build tests
* The E4S pipeline at `gitlab.spack.io <https://gitlab.spack.io>`_
If CI is not passing, submit pull requests to ``develop`` as normal
and keep rebasing the release branch on ``develop`` until CI passes.
#. Follow the steps in :ref:`publishing-releases`.
#. Follow the steps in :ref:`merging-releases`.
#. Follow the steps in :ref:`announcing-releases`.
.. _point-releases:
^^^^^^^^^^^^^^^^^^^^^
Making Point Releases
^^^^^^^^^^^^^^^^^^^^^
This assumes you've already created a project board for a point release
and completed the work to be done for the release. To make a point
release:
#. Create one new project board for the next point release.
#. Move any cards that aren't done yet to the next project board.
#. Check out the release branch (it should already exist). For the
``X.Y.Z`` release, the release branch is called ``releases/vX.Y``. For
``v0.15.1``, you would check out ``releases/v0.15``:
.. code-block:: console
$ git checkout releases/v0.15
#. Cherry-pick each pull request in the ``Done`` column of the release
project onto the release branch.
This is **usually** fairly simple since we squash the commits from the
vast majority of pull requests, which means there is only one commit
per pull request to cherry-pick. For example, `this pull request
<https://github.com/spack/spack/pull/15777>`_ has three commits, but
the were squashed into a single commit on merge. You can see the
commit that was created here:
.. image:: images/pr-commit.png
You can easily cherry pick it like this (assuming you already have the
release branch checked out):
.. code-block:: console
$ git cherry-pick 7e46da7
For pull requests that were rebased, you'll need to cherry-pick each
rebased commit individually. There have not been any rebased PRs like
this in recent point releases.
.. warning::
It is important to cherry-pick commits in the order they happened,
otherwise you can get conflicts while cherry-picking. When
cherry-picking onto a point release, look at the merge date,
**not** the number of the pull request or the date it was opened.
Sometimes you may **still** get merge conflicts even if you have
cherry-picked all the commits in order. This generally means there
is some other intervening pull request that the one you're trying
to pick depends on. In these cases, you'll need to make a judgment
call:
1. If the dependency is small, you might just cherry-pick it, too.
If you do this, add it to the release board.
2. If it is large, then you may decide that this fix is not worth
including in a point release, in which case you should remove it
from the release project.
3. You can always decide to manually back-port the fix to the release
branch if neither of the above options makes sense, but this can
require a lot of work. It's seldom the right choice.
#. Bump the version in ``lib/spack/spack/__init__.py``. See `this example from 0.14.1
<https://github.com/spack/spack/commit/ff0abb9838121522321df2a054d18e54b566b44a>`_.
#. Updaate the release version lists in these files to include the new version:
* ``lib/spack/spack/schema/container.py``
* ``lib/spack/spack/container/images.json``
**TODO**: We should get rid of this step in some future release.
#. Update ``CHANGELOG.md`` with a list of bugfixes. This is typically just a
summary of the commits you cherry-picked onto the release branch. See
`the changelog from 0.14.1
<https://github.com/spack/spack/commit/ff0abb9838121522321df2a054d18e54b566b44a>`_.
#. Push the release branch to GitHub.
#. Make sure CI passes on the release branch, including:
* Regular unit tests
* Build tests
* The E4S pipeline at `gitlab.spack.io <https://gitlab.spack.io>`_
If CI does not pass, you'll need to figure out why, and make changes
to the release branch until it does. You can make more commits, modify
or remove cherry-picked commits, or cherry-pick **more** from
``develop`` to make this happen.
#. Follow the steps in :ref:`publishing-releases`.
#. Follow the steps in :ref:`merging-releases`.
#. Follow the steps in :ref:`announcing-releases`.
.. _publishing-releases:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Publishing a release on GitHub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Go to `github.com/spack/spack/releases
<https://github.com/spack/spack/releases>`_ and click ``Draft a new
release``. Set the following:
* ``Tag version`` should start with ``v`` and contain *all three*
parts of the version, .g. ``v0.15.1``. This is the name of the tag
that will be created.
* ``Target`` should be the ``releases/vX.Y`` branch (e.g., ``releases/v0.15``).
* ``Release title`` should be ``vX.Y.Z`` (To match the tag, e.g., ``v0.15.1``).
* For the text, paste the latest release markdown from your ``CHANGELOG.md``.
You can save the draft and keep coming back to this as you prepare the release.
#. When you are done, click ``Publish release``.
#. Immediately after publishing, go back to
`github.com/spack/spack/releases
<https://github.com/spack/spack/releases>`_ and download the
auto-generated ``.tar.gz`` file for the release. It's the ``Source
code (tar.gz)`` link.
#. Click ``Edit`` on the release you just did and attach the downloaded
release tarball as a binary. This does two things:
#. Makes sure that the hash of our releases doesn't change over time.
GitHub sometimes annoyingly changes they way they generate
tarballs, and then hashes can change if you rely on the
auto-generated tarball links.
#. Gets us download counts on releases visible through the GitHub
API. GitHub tracks downloads of artifacts, but *not* the source
links. See the `releases
page <https://api.github.com/repos/spack/spack/releases>`_ and search
for ``download_count`` to see this.
#. Go to `readthedocs.org <https://readthedocs.org/projects/spack>`_ and activate
the release tag. This builds the documentation and makes the released version
selectable in the versions menu.
.. _merging-releases:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Updating `releases/latest` and `develop`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If the new release is the **highest** Spack release yet, you should
also tag it as ``releases/latest``. For example, suppose the highest
release is currently ``0.15.3``:
* If you are releasing ``0.15.4`` or ``0.16.0``, then you should tag
it with ``releases/latest``, as these are higher than ``0.15.3``.
* If you are making a new release of an **older** major version of
Spack, e.g. ``0.14.4``, then you should not tag it as
``releases/latest`` (as there are newer major versions).
To tag ``releases/latest``, do this:
.. code-block:: console
$ git checkout releases/vX.Y # vX.Y is the new release's branch
$ git tag --force releases/latest
$ git push --tags
The ``--force`` argument makes ``git`` overwrite the existing
``releases/latest`` tag with the new one.
We also merge each release that we tag as ``releases/latest`` into ``develop``.
Make sure to do this with a merge commit:
.. code-block:: console
$ git checkout develop
$ git merge --no-ff vX.Y.Z # vX.Y.Z is the new release's tag
$ git push
We merge back to ``develop`` because it:
* updates the version and ``CHANGELOG.md`` on ``develop``.
* ensures that your release tag is reachable from the head of
``develop``
We *must* use a real merge commit (via the ``--no-ff`` option) because it
ensures that the release tag is reachable from the tip of ``develop``.
This is necessary for ``spack -V`` to work properly -- it uses ``git
describe --tags`` to find the last reachable tag in the repository and
reports how far we are from it. For example:
.. code-block:: console
$ spack -V
0.14.2-1486-b80d5e74e5
This says that we are at commit ``b80d5e74e5``, which is 1,486 commits
ahead of the ``0.14.2`` release.
We put this step last in the process because it's best to do it only once
the release is complete and tagged. If you do it before you've tagged the
release and later decide you want to tag some later commit, you'll need
to merge again.
.. _announcing-releases:
^^^^^^^^^^^^^^^^^^^^
Announcing a release
^^^^^^^^^^^^^^^^^^^^
We announce releases in all of the major Spack communication channels.
Publishing the release takes care of GitHub. The remaining channels are
Twitter, Slack, and the mailing list. Here are the steps:
#. Make a tweet to announce the release. It should link to the release's
page on GitHub. You can base it on `this example tweet
<https://twitter.com/spackpm/status/1231761858182307840>`_.
#. Ping ``@channel`` in ``#general`` on Slack (`spackpm.slack.com
<https://spackpm.slack.com>`_) with a link to the tweet. The tweet
will be shown inline so that you do not have to retype your release
announcement.
#. Email the Spack mailing list to let them know about the release. As
with the tweet, you likely want to link to the release's page on
GitHub. It's also helpful to include some information directly in the
email. You can base yours on this `example email
<https://groups.google.com/forum/#!topic/spack/WT4CT9i_X4s>`_.
Once you've announced the release, congratulations, you're done! You've
finished making the release!

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

@@ -87,11 +87,12 @@ will be available from the command line:
--implicit select specs that are not installed or were installed implicitly
--output OUTPUT where to dump the result
The corresponding unit tests can be run giving the appropriate options to ``spack test``:
The corresponding unit tests can be run giving the appropriate options
to ``spack unit-test``:
.. code-block:: console
$ spack test --extension=scripting
$ spack unit-test --extension=scripting
============================================================== test session starts ===============================================================
platform linux2 -- Python 2.7.15rc1, pytest-3.2.5, py-1.4.34, pluggy-0.4.0

View File

@@ -48,8 +48,8 @@ platform, all on the command line.
# Add compiler flags using the conventional names
$ spack install mpileaks@1.1.2 %gcc@4.7.3 cppflags="-O3 -floop-block"
# Cross-compile for a different architecture with arch=
$ spack install mpileaks@1.1.2 arch=bgqos_0
# Cross-compile for a different micro-architecture with target=
$ spack install mpileaks@1.1.2 target=icelake
Users can specify as many or few options as they care about. Spack
will fill in the unspecified values with sensible defaults. The two listed

View File

@@ -19,6 +19,9 @@ before Spack is run:
#. Python 2 (2.6 or 2.7) or 3 (3.5 - 3.8) to run Spack
#. A C/C++ compiler for building
#. The ``make`` executable for building
#. The ``tar``, ``gzip``, ``bzip2``, ``xz`` and optionally ``zstd``
executables for extracting source code
#. The ``patch`` command to apply patches
#. The ``git`` and ``curl`` commands for fetching
#. If using the ``gpg`` subcommand, ``gnupg2`` is required
@@ -50,31 +53,42 @@ in the ``SPACK_ROOT`` environment variable. Add ``$SPACK_ROOT/bin``
to your path and you're ready to go:
.. code-block:: console
# For bash/zsh users
$ export SPACK_ROOT=/path/to/spack
$ export PATH=$SPACK_ROOT/bin:$PATH
# For tsch/csh users
$ setenv SPACK_ROOT /path/to/spack
$ setenv PATH $SPACK_ROOT/bin:$PATH
# For fish users
$ set -x SPACK_ROOT /path/to/spack
$ set -U fish_user_paths /path/to/spack $fish_user_paths
.. code-block:: console
$ spack install libelf
For a richer experience, use Spack's shell support:
.. code-block:: console
# Note you must set SPACK_ROOT
# For bash/zsh users
$ export SPACK_ROOT=/path/to/spack
$ . $SPACK_ROOT/share/spack/setup-env.sh
# For tcsh or csh users (note you must set SPACK_ROOT)
$ setenv SPACK_ROOT /path/to/spack
# For tcsh/csh users
$ source $SPACK_ROOT/share/spack/setup-env.csh
# For fish users
$ source $SPACK_ROOT/share/spack/setup-env.fish
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 +496,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
@@ -716,8 +730,9 @@ an OpenMPI installed in /opt/local, one would use:
packages:
openmpi:
paths:
openmpi@1.10.1: /opt/local
externals:
- spec: openmpi@1.10.1
prefix: /opt/local
buildable: False
In general, Spack is easier to use and more reliable if it builds all of
@@ -779,8 +794,9 @@ Then add the following to ``~/.spack/packages.yaml``:
packages:
openssl:
paths:
openssl@1.0.2g: /usr
externals:
- spec: openssl@1.0.2g
prefix: /usr
buildable: False
@@ -795,8 +811,9 @@ to add the following to ``packages.yaml``:
packages:
netlib-lapack:
paths:
netlib-lapack@3.6.1: /usr
externals:
- spec: netlib-lapack@3.6.1
prefix: /usr
buildable: False
all:
providers:
@@ -822,7 +839,7 @@ Git
Some Spack packages use ``git`` to download, which might not work on
some computers. For example, the following error was
encountered on a Macintosh during ``spack install julia-master``:
encountered on a Macintosh during ``spack install julia@master``:
.. code-block:: console
@@ -851,7 +868,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 +917,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 +926,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 +953,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
^^^^^^^^^^^^^^^^^
@@ -1229,9 +1202,13 @@ Here's an example of an external configuration for cray modules:
packages:
mpich:
modules:
mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10: cray-mpich
mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10: cray-mpich
externals:
- spec: "mpich@7.3.1%gcc@5.2.0 arch=cray_xc-haswell-CNL10"
modules:
- cray-mpich
- spec: "mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-haswell-CNL10"
modules:
- cray-mpich
all:
providers:
mpi: [mpich]
@@ -1243,7 +1220,7 @@ via module load.
.. note::
For Cray-provided packages, it is best to use ``modules:`` instead of ``paths:``
For Cray-provided packages, it is best to use ``modules:`` instead of ``prefix:``
in ``packages.yaml``, because the Cray Programming Environment heavily relies on
modules (e.g., loading the ``cray-mpich`` module adds MPI libraries to the
compiler wrapper link line).
@@ -1259,19 +1236,31 @@ Here is an example of a full packages.yaml used at NERSC
packages:
mpich:
modules:
mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-mpich
mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge: cray-mpich
externals:
- spec: "mpich@7.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge"
modules:
- cray-mpich
- spec: "mpich@7.3.1%intel@16.0.0.109 arch=cray_xc-SuSE11-ivybridge"
modules:
- cray-mpich
buildable: False
netcdf:
modules:
netcdf@4.3.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-netcdf
netcdf@4.3.3.1%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-netcdf
externals:
- spec: "netcdf@4.3.3.1%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge"
modules:
- cray-netcdf
- spec: "netcdf@4.3.3.1%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge"
modules:
- cray-netcdf
buildable: False
hdf5:
modules:
hdf5@1.8.14%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge: cray-hdf5
hdf5@1.8.14%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge: cray-hdf5
externals:
- spec: "hdf5@1.8.14%gcc@5.2.0 arch=cray_xc-CNL10-ivybridge"
modules:
- cray-hdf5
- spec: "hdf5@1.8.14%intel@16.0.0.109 arch=cray_xc-CNL10-ivybridge"
modules:
- cray-hdf5
buildable: False
all:
compiler: [gcc@5.2.0, intel@16.0.0.109]
@@ -1295,6 +1284,6 @@ environment variables may be propagated into containers that are not
using the Cray programming environment.
To ensure that Spack does not autodetect the Cray programming
environment, unset the environment variable ``CRAYPE_VERSION``. This
environment, unset the environment variable ``MODULEPATH``. This
will cause Spack to treat a linux container on a Cray system as a base
linux distro.

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -14,7 +14,7 @@ problems if you encounter them.
Variants are not properly forwarded to dependencies
---------------------------------------------------
**Status:** Expected to be fixed in the next release
**Status:** Expected to be fixed by Spack's new concretizer
Sometimes, a variant of a package can also affect how its dependencies are
built. For example, in order to build MPI support for a package, it may
@@ -49,15 +49,29 @@ A workaround is to explicitly activate the variants of dependencies as well:
See https://github.com/spack/spack/issues/267 and
https://github.com/spack/spack/issues/2546 for further details.
-----------------------------------------------
depends_on cannot handle recursive dependencies
-----------------------------------------------
----------------------------
``spack setup`` doesn't work
----------------------------
**Status:** Not yet a work in progress
**Status:** Work in progress
Although ``depends_on`` can handle any aspect of Spack's spec syntax,
it currently cannot handle recursive dependencies. If the ``^`` sigil
appears in a ``depends_on`` statement, the concretizer will hang.
For example, something like:
Spack provides a ``setup`` command that is useful for the development of
software outside of Spack. Unfortunately, this command no longer works.
See https://github.com/spack/spack/issues/2597 and
https://github.com/spack/spack/issues/2662 for details. This is expected
to be fixed by https://github.com/spack/spack/pull/2664.
.. code-block:: python
depends_on('mfem+cuda ^hypre+cuda', when='+cuda')
should be rewritten as:
.. code-block:: python
depends_on('mfem+cuda', when='+cuda')
depends_on('hypre+cuda', when='+cuda')
See https://github.com/spack/spack/issues/17660 and
https://github.com/spack/spack/issues/11160 for more details.

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

@@ -645,7 +645,7 @@ multiple fields based on delimiters such as ``.``, ``-`` etc. Then
matching fields are compared using the rules below:
#. The following develop-like strings are greater (newer) than all
numbers and are ordered as ``develop > master > head > trunk``.
numbers and are ordered as ``develop > main > master > head > trunk``.
#. Numbers are all less than the chosen develop-like strings above,
and are sorted numerically.
@@ -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
@@ -1967,22 +1967,29 @@ exactly what kind of a dependency you need. For example:
depends_on('cmake', type='build')
depends_on('py-numpy', type=('build', 'run'))
depends_on('libelf', type=('build', 'link'))
depends_on('py-pytest', type='test')
The following dependency types are available:
* **"build"**: made available during the project's build. The package will
be added to ``PATH``, the compiler include paths, and ``PYTHONPATH``.
Other projects which depend on this one will not have these modified
(building project X doesn't need project Y's build dependencies).
* **"link"**: the project is linked to by the project. The package will be
added to the current package's ``rpath``.
* **"run"**: the project is used by the project at runtime. The package will
be added to ``PATH`` and ``PYTHONPATH``.
* **"build"**: the dependency will be added to the ``PATH`` and
``PYTHONPATH`` at build-time.
* **"link"**: the dependency will be added to Spack's compiler
wrappers, automatically injecting the appropriate linker flags,
including ``-I``, ``-L``, and RPATH/RUNPATH handling.
* **"run"**: the dependency will be added to the ``PATH`` and
``PYTHONPATH`` at run-time. This is true for both ``spack load``
and the module files Spack writes.
* **"test"**: the dependency will be added to the ``PATH`` and
``PYTHONPATH`` at build-time. The only difference between
"build" and "test" is that test dependencies are only built
if the user requests unit tests with ``spack install --test``.
One of the advantages of the ``build`` dependency type is that although the
dependency needs to be installed in order for the package to be built, it
can be uninstalled without concern afterwards. ``link`` and ``run`` disallow
this because uninstalling the dependency would break the package.
this because uninstalling the dependency would break the package. Another
consequence of this is that ``build``-only dependencies do not affect the
hash of the package. The same is true for ``test`` dependencies.
If the dependency type is not specified, Spack uses a default of
``('build', 'link')``. This is the common case for compiler languages.
@@ -2003,7 +2010,8 @@ package. In that case, you could say something like:
.. code-block:: python
variant('mpi', default=False)
variant('mpi', default=False, description='Enable MPI support')
depends_on('mpi', when='+mpi')
``when`` can include constraints on the variant, version, compiler, etc. and
@@ -2169,13 +2177,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 +2209,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 +2224,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 +2247,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 +2928,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 +3622,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 +4056,273 @@ 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``
----------------------------------------------------------
The simplest way to make a package discoverable with
:ref:`spack external find <cmd-spack-external-find>` is to:
1. Define the executables associated with the package
2. Implement a method to determine the versions of these executables
^^^^^^^^^^^^^^^^^
Minimal detection
^^^^^^^^^^^^^^^^^
The first step is fairly simple, as it requires only to
specify a package level ``executables`` attribute:
.. code-block:: python
class Foo(Package):
# Each string provided here is treated as a regular expression, and
# would match for example 'foo', 'foobar', and 'bazfoo'.
executables = ['foo']
This attribute must be a list of strings. Each string is a regular
expression (e.g. 'gcc' would match 'gcc', 'gcc-8.3', 'my-weird-gcc', etc.) to
determine a set of system executables that might be part or this package. Note
that to match only executables named 'gcc' the regular expression ``'^gcc$'``
must be used.
Finally to determine the version of each executable the ``determine_version``
method must be implemented:
.. code-block:: python
@classmethod
def determine_version(cls, exe):
"""Return either the version of the executable passed as argument
or ``None`` if the version cannot be determined.
Args:
exe (str): absolute path to the executable being examined
"""
This method receives as input the path to a single executable and must return
as output its version as a string; if the user cannot determine the version
or determines that the executable is not an instance of the package, they can
return None and the exe will be discarded as a candidate.
Implementing the two steps above is mandatory, and gives the package the
basic ability to detect if a spec is present on the system at a given version.
.. note::
Any executable for which the ``determine_version`` method returns ``None``
will be discarded and won't appear in later stages of the workflow described below.
^^^^^^^^^^^^^^^^^^^^^^^^
Additional functionality
^^^^^^^^^^^^^^^^^^^^^^^^
Besides the two mandatory steps described above, there are also optional
methods that can be implemented to either increase the amount of details
being detected or improve the robustness of the detection logic in a package.
""""""""""""""""""""""""""""""
Variants and custom attributes
""""""""""""""""""""""""""""""
The ``determine_variants`` method can be optionally implemented in a package
to detect additional details of the spec:
.. code-block:: python
@classmethod
def determine_variants(cls, exes, version_str):
"""Return either a variant string, a tuple of a variant string
and a dictionary of extra attributes that will be recorded in
packages.yaml or a list of those items.
Args:
exes (list of str): list of executables (absolute paths) that
live in the same prefix and share the same version
version_str (str): version associated with the list of
executables, as detected by ``determine_version``
"""
This method takes as input a list of executables that live in the same prefix and
share the same version string, and returns either:
1. A variant string
2. A tuple of a variant string and a dictionary of extra attributes
3. A list of items matching either 1 or 2 (if multiple specs are detected
from the set of executables)
If extra attributes are returned, they will be recorded in ``packages.yaml``
and be available for later reuse. As an example, the ``gcc`` package will record
by default the different compilers found and an entry in ``packages.yaml``
would look like:
.. code-block:: yaml
packages:
gcc:
externals:
- spec: 'gcc@9.0.1 languages=c,c++,fortran'
prefix: /usr
extra_attributes:
compilers:
c: /usr/bin/x86_64-linux-gnu-gcc-9
c++: /usr/bin/x86_64-linux-gnu-g++-9
fortran: /usr/bin/x86_64-linux-gnu-gfortran-9
This allows us, for instance, to keep track of executables that would be named
differently if built by Spack (e.g. ``x86_64-linux-gnu-gcc-9``
instead of just ``gcc``).
.. TODO: we need to gather some more experience on overriding 'prefix'
and other special keywords in extra attributes, but as soon as we are
confident that this is the way to go we should document the process.
See https://github.com/spack/spack/pull/16526#issuecomment-653783204
"""""""""""""""""""""""""""
Filter matching executables
"""""""""""""""""""""""""""
Sometimes defining the appropriate regex for the ``executables``
attribute might prove to be difficult, especially if one has to
deal with corner cases or exclude "red herrings". To help keeping
the regular expressions as simple as possible, each package can
optionally implement a ``filter_executables`` method:
.. code-block:: python
@classmethod
def filter_detected_exes(cls, prefix, exes_in_prefix):
"""Return a filtered list of the executables in prefix"""
which takes as input a prefix and a list of matching executables and
returns a filtered list of said executables.
Using this method has the advantage of allowing custom logic for
filtering, and does not restrict the user to regular expressions
only. Consider the case of detecting the GNU C++ compiler. If we
try to search for executables that match ``g++``, that would have
the unwanted side effect of selecting also ``clang++`` - which is
a C++ compiler provided by another package - if present on the system.
Trying to select executables that contain ``g++`` but not ``clang``
would be quite complicated to do using regex only. Employing the
``filter_detected_exes`` method it becomes:
.. code-block:: python
class Gcc(Package):
executables = ['g++']
def filter_detected_exes(cls, prefix, exes_in_prefix):
return [x for x in exes_in_prefix if 'clang' not in x]
Another possibility that this method opens is to apply certain
filtering logic when specific conditions are met (e.g. take some
decisions on an OS and not on another).
^^^^^^^^^^^^^^^^^^
Validate detection
^^^^^^^^^^^^^^^^^^
To increase detection robustness, packagers may also implement a method
to validate the detected Spec objects:
.. code-block:: python
@classmethod
def validate_detected_spec(cls, spec, extra_attributes):
"""Validate a detected spec. Raise an exception if validation fails."""
This method receives a detected spec along with its extra attributes and can be
used to check that certain conditions are met by the spec. Packagers can either
use assertions or raise an ``InvalidSpecDetected`` exception when the check fails.
In case the conditions are not honored the spec will be discarded and any message
associated with the assertion or the exception will be logged as the reason for
discarding it.
As an example, a package that wants to check that the ``compilers`` attribute is
in the extra attributes can implement this method like this:
.. code-block:: python
@classmethod
def validate_detected_spec(cls, spec, extra_attributes):
"""Check that 'compilers' is in the extra attributes."""
msg = ('the extra attribute "compilers" must be set for '
'the detected spec "{0}"'.format(spec))
assert 'compilers' in extra_attributes, msg
or like this:
.. code-block:: python
@classmethod
def validate_detected_spec(cls, spec, extra_attributes):
"""Check that 'compilers' is in the extra attributes."""
if 'compilers' not in extra_attributes:
msg = ('the extra attribute "compilers" must be set for '
'the detected spec "{0}"'.format(spec))
raise InvalidSpecDetected(msg)
.. _determine_spec_details:
^^^^^^^^^^^^^^^^^^^^^^^^^
Custom detection workflow
^^^^^^^^^^^^^^^^^^^^^^^^^
In the rare case when the mechanisms described so far don't fit the
detection of a package, the implementation of all the methods above
can be disregarded and instead a custom ``determine_spec_details``
method can be implemented directly in the package class (note that
the definition of the ``executables`` attribute is still required):
.. code-block:: python
@classmethod
def determine_spec_details(cls, 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
This method takes as input 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 :py:class:`spack.spec.Spec` associated
with the executables (it can also return ``None`` to indicate that no
provided executables are associated with the package).
As an example, consider a made-up 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 = Executable(exe_path)
output = exe('--version', output=str, error=str)
version_str = ... # parse output for version string
return Spec.from_detection(
'foo-package@{0}'.format(version_str)
)
.. _package-lifecycle:
-----------------------------
@@ -4096,16 +4378,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 +4463,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 +4627,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.
@@ -4390,119 +4685,3 @@ might write:
DWARF_PREFIX = $(spack location --install-dir libdwarf)
CXXFLAGS += -I$DWARF_PREFIX/include
CXXFLAGS += -L$DWARF_PREFIX/lib
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Build System Configuration Support
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Imagine a developer creating a CMake or Autotools-based project in a
local directory, which depends on libraries A-Z. Once Spack has
installed those dependencies, one would like to run ``cmake`` with
appropriate command line and environment so CMake can find them. The
``spack setup`` command does this conveniently, producing a CMake
configuration that is essentially the same as how Spack *would have*
configured the project. This can be demonstrated with a usage
example:
.. code-block:: console
$ cd myproject
$ spack setup myproject@local
$ mkdir build; cd build
$ ../spconfig.py ..
$ make
$ make install
Notes:
* Spack must have ``myproject/package.py`` in its repository for
this to work.
* ``spack setup`` produces the executable script ``spconfig.py`` in
the local directory, and also creates the module file for the
package. ``spconfig.py`` is normally run from the user's
out-of-source build directory.
* The version number given to ``spack setup`` is arbitrary, just
like ``spack diy``. ``myproject/package.py`` does not need to
have any valid downloadable versions listed (typical when a
project is new).
* spconfig.py produces a CMake configuration that *does not* use the
Spack wrappers. Any resulting binaries *will not* use RPATH,
unless the user has enabled it. This is recommended for
development purposes, not production.
* ``spconfig.py`` is human readable, and can serve as a developer
reference of what dependencies are being used.
* ``make install`` installs the package into the Spack repository,
where it may be used by other Spack packages.
* CMake-generated makefiles re-run CMake in some circumstances. Use
of ``spconfig.py`` breaks this behavior, requiring the developer
to manually re-run ``spconfig.py`` when a ``CMakeLists.txt`` file
has changed.
^^^^^^^^^^^^
CMakePackage
^^^^^^^^^^^^
In order to enable ``spack setup`` functionality, the author of
``myproject/package.py`` must subclass from ``CMakePackage`` instead
of the standard ``Package`` superclass. Because CMake is
standardized, the packager does not need to tell Spack how to run
``cmake; make; make install``. Instead the packager only needs to
create (optional) methods ``configure_args()`` and ``configure_env()``, which
provide the arguments (as a list) and extra environment variables (as
a dict) to provide to the ``cmake`` command. Usually, these will
translate variant flags into CMake definitions. For example:
.. code-block:: python
def configure_args(self):
spec = self.spec
return [
'-DUSE_EVERYTRACE=%s' % ('YES' if '+everytrace' in spec else 'NO'),
'-DBUILD_PYTHON=%s' % ('YES' if '+python' in spec else 'NO'),
'-DBUILD_GRIDGEN=%s' % ('YES' if '+gridgen' in spec else 'NO'),
'-DBUILD_COUPLER=%s' % ('YES' if '+coupler' in spec else 'NO'),
'-DUSE_PISM=%s' % ('YES' if '+pism' in spec else 'NO')
]
If needed, a packager may also override methods defined in
``StagedPackage`` (see below).
^^^^^^^^^^^^^
StagedPackage
^^^^^^^^^^^^^
``CMakePackage`` is implemented by subclassing the ``StagedPackage``
superclass, which breaks down the standard ``Package.install()``
method into several sub-stages: ``setup``, ``configure``, ``build``
and ``install``. Details:
* Instead of implementing the standard ``install()`` method, package
authors implement the methods for the sub-stages
``install_setup()``, ``install_configure()``,
``install_build()``, and ``install_install()``.
* The ``spack install`` command runs the sub-stages ``configure``,
``build`` and ``install`` in order. (The ``setup`` stage is
not run by default; see below).
* The ``spack setup`` command runs the sub-stages ``setup``
and a dummy install (to create the module file).
* The sub-stage install methods take no arguments (other than
``self``). The arguments ``spec`` and ``prefix`` to the standard
``install()`` method may be accessed via ``self.spec`` and
``self.prefix``.
^^^^^^^^^^^^^
GNU Autotools
^^^^^^^^^^^^^
The ``setup`` functionality is currently only available for
CMake-based packages. Extending this functionality to GNU
Autotools-based packages would be easy (and should be done by a
developer who actively uses Autotools). Packages that use
non-standard build systems can gain ``setup`` functionality by
subclassing ``StagedPackage`` directly.
.. Emacs local variables
Local Variables:
fill-column: 79
End:

View File

@@ -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 --without-view .
- 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,11 @@ 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:
This sub-command takes two arguments, but the most useful is ``--output-file``,
which should be an absolute path (including file name) to the generated
pipeline, if the default (``./.gitlab-ci.yml``) is not desired.
^^^^^^^^^^^^^^^^^^^^^
``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``
@@ -127,12 +136,16 @@ This sub-command is responsible for ensuring a single spec from the release
environment is up to date on the remote mirror configured in the environment,
and as such, corresponds to a single job in the ``.gitlab-ci.yml`` file.
Rather than taking command-line arguments, this sub-command expects information
to be communicated via environment variables, which will typically come via the
``.gitlab-ci.yml`` job as ``variables``.
------------------------------------
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 +171,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
@@ -184,15 +197,33 @@ corresponds to a known gitlab runner, where the ``match`` section is used
in assigning a release spec to one of the runners, and the ``runner-attributes``
section is used to configure the spec/job for that particular runner.
Both the top-level ``gitlab-ci`` section as well as each ``runner-attributes``
section can also contain the following keys: ``image``, ``tags``, ``variables``,
``before_script``, ``script``, and ``after_script``. If any of these keys are
provided at the ``gitlab-ci`` level, they will be used as the defaults for any
``runner-attributes``, unless they are overridden in those sections. Specifying
any of these keys at the ``runner-attributes`` level generally overrides the
keys specified at the higher level, with a couple exceptions. Any ``variables``
specified at both levels result in those dictionaries getting merged in the
resulting generated job, and any duplicate variable names get assigned the value
provided in the specific ``runner-attributes``. If ``tags`` are specified both
at the ``gitlab-ci`` level as well as the ``runner-attributes`` level, then the
lists of tags are combined, and any duplicates are removed.
See the section below on using a custom spack for an example of how these keys
could be used.
There are other pipeline options you can configure within the ``gitlab-ci`` section
as well. The ``bootstrap`` section allows you to specify lists of specs from
as well.
The ``bootstrap`` section allows you to specify lists of specs from
your ``definitions`` that should be staged ahead of the environment's ``specs`` (this
section is described in more detail below). The ``enable-artifacts-buildcache`` key
takes a boolean and determines whether the pipeline uses artifacts to store and
pass along the buildcaches from one stage to the next (the default if you don't
provide this option is ``False``). The ``enable-debug-messages`` key takes a boolean
and allows you to choose whether the pipeline build jobs are run as ``spack -d ci rebuild``
or just ``spack ci rebuild`` (the default is not to enable debug messages). The
provide this option is ``False``).
The
``final-stage-rebuild-index`` section controls whether an extra job is added to the
end of your pipeline (in a stage by itself) which will regenerate the mirror's
buildcache index. Under normal operation, each pipeline job that rebuilds a package
@@ -215,6 +246,11 @@ progresses, this build group may have jobs added or removed. The url, project,
and site are used to specify the CDash instance to which build results should
be reported.
Take a look at the
`schema <https://github.com/spack/spack/blob/develop/lib/spack/spack/schema/gitlab_ci.py>`_
for the gitlab-ci section of the spack environment file, to see precisely what
syntax is allowed there.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Assignment of specs to runners
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -240,7 +276,18 @@ runners known to the gitlab instance. For Docker executor type runners, the
as well as an ``entrypoint`` to override whatever the default for that image is).
For other types of runners the ``variables`` key will be useful to pass any
information on to the runner that it needs to do its work (e.g. scheduler
parameters, etc.).
parameters, etc.). Any ``variables`` provided here will be added, verbatim, to
each job.
The ``runner-attributes`` section also allows users to supply custom ``script``,
``before_script``, and ``after_script`` sections to be applied to every job
scheduled on that runner. This allows users to do any custom preparation or
cleanup tasks that fit their particular workflow, as well as completely
customize the rebuilding of a spec if they so choose. Spack will not generate
a ``before_script`` or ``after_script`` for jobs, but if you do not provide
a custom ``script``, spack will generate one for you that assumes your
``spack.yaml`` is at the root of the repository, activates that environment for
you, and invokes ``spack ci rebuild``.
.. _staging_algorithm:
@@ -251,8 +298,8 @@ Summary of ``.gitlab-ci.yml`` generation algorithm
All specs yielded by the matrix (or all the specs in the environment) have their
dependencies computed, and the entire resulting set of specs are staged together
before being run through the ``gitlab-ci/mappings`` entries, where each staged
spec is assigned a runner. "Staging" is the name we have given to the process
of figuring out in what order the specs should be built, taking into consideration
spec is assigned a runner. "Staging" is the name given to the process of
figuring out in what order the specs should be built, taking into consideration
Gitlab CI rules about jobs/stages. In the staging process the goal is to maximize
the number of jobs in any stage of the pipeline, while ensuring that the jobs in
any stage only depend on jobs in previous stages (since those jobs are guaranteed
@@ -263,7 +310,7 @@ a runner, the ``.gitlab-ci.yml`` is written to disk.
The short example provided above would result in the ``readline``, ``ncurses``,
and ``pkgconf`` packages getting staged and built on the runner chosen by the
``spack-k8s`` tag. In this example, we assume the runner is a Docker executor
``spack-k8s`` tag. In this example, spack assumes the runner is a Docker executor
type runner, and thus certain jobs will be run in the ``centos7`` container,
and others in the ``ubuntu-18.04`` container. The resulting ``.gitlab-ci.yml``
will contain 6 jobs in three stages. Once the jobs have been generated, the
@@ -322,12 +369,12 @@ Here's an example of what bootstrapping some compilers might look like:
# mappings similar to the example higher up in this description
...
In the example above, we have added a list to the ``definitions`` called
``compiler-pkgs`` (you can add any number of these), which lists compiler packages
we want to be staged ahead of the full matrix of release specs (which consists
only of readline in our example). Then within the ``gitlab-ci`` section, we
have added a ``bootstrap`` section, which can contain a list of items, each
referring to a list in the ``definitions`` section. These items can either
The example above adds a list to the ``definitions`` called ``compiler-pkgs``
(you can add any number of these), which lists compiler packages that should
be staged ahead of the full matrix of release specs (in this example, only
readline). Then within the ``gitlab-ci`` section, note the addition of a
``bootstrap`` section, which can contain a list of items, each referring to
a list in the ``definitions`` section. These items can either
be a dictionary or a string. If you supply a dictionary, it must have a name
key whose value must match one of the lists in definitions and it can have a
``compiler-agnostic`` key whose value is a boolean. If you supply a string,
@@ -363,32 +410,95 @@ Using a custom spack in your pipeline
If your runners will not have a version of spack ready to invoke, or if for some
other reason you want to use a custom version of spack to run your pipelines,
this can be accomplished fairly simply. First, create CI environment variables
containing the url and branch/tag you want to clone (calling them, for example,
``SPACK_REPO`` and ``SPACK_REF``), use them to clone spack in your pre-ci
``before_script``, and finally pass those same values along to the workload
generation process via the ``spack-repo`` and ``spack-ref`` cli args. Here's
an example:
this section provides an example of how you could take advantage of
user-provided pipeline scripts to accomplish this fairly simply. First, you
could use the GitLab user interface to create CI environment variables
containing the url and branch or tag you want to use (calling them, for
example, ``SPACK_REPO`` and ``SPACK_REF``), then refer to those in a custom shell
script invoked both from your pipeline generation job, as well as in your rebuild
jobs. Here's the ``generate-pipeline`` job from the top of this document,
updated to invoke a custom shell script that will clone and source a custom
spack:
.. 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
- ./cloneSpack.sh
script:
- spack ci start --spack-repo ${SPACK_REPO} --spack-ref ${SPACK_REF} <...args>
- spack env activate --without-view .
- spack ci generate
--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,
then it adds similar ``before_script`` and ``after_script`` sections for each of
the ``spack ci rebuild`` jobs it generates (cloning and sourcing a custom
spack in the ``before_script`` and removing it again in the ``after_script``).
This gives you control over the version of spack used when the rebuild jobs
are actually run on the gitlab runner.
And the ``cloneSpack.sh`` script could contain:
.. code-block:: bash
#!/bin/bash
git clone ${SPACK_REPO}
pushd ./spack
git checkout ${SPACK_REF}
popd
. "./spack/share/spack/setup-env.sh"
spack --version
Finally, you would also want your generated rebuild jobs to clone that version
of spack, so you would update your ``spack.yaml`` from above as follows:
.. code-block:: yaml
spack:
...
gitlab-ci:
mappings:
- match:
- os=ubuntu18.04
runner-attributes:
tags:
- spack-kube
image: spack/ubuntu-bionic
before_script:
- ./cloneSpack.sh
script:
- spack env activate --without-view .
- spack -d ci rebuild
after_script:
- rm -rf ./spack
Now all of the generated rebuild jobs will use the same shell script to clone
spack before running their actual workload. Note in the above example the
provision of a custom ``script`` section. The reason for this is to run
``spack ci rebuild`` in debug mode to get more information when builds fail.
Now imagine you have long pipelines with many specs to be built, and you
are pointing to a spack repository and branch that has a tendency to change
frequently, such as the main repo and it's ``develop`` branch. If each child
job checks out the ``develop`` branch, that could result in some jobs running
with one SHA of spack, while later jobs run with another. To help avoid this
issue, the pipeline generation process saves global variables called
``SPACK_VERSION`` and ``SPACK_CHECKOUT_VERSION`` that capture the version
of spack used to generate the pipeline. While the ``SPACK_VERSION`` variable
simply contains the human-readable value produced by ``spack -V`` at pipeline
generation time, the ``SPACK_CHECKOUT_VERSION`` variable can be used in a
``git checkout`` command to make sure all child jobs checkout the same version
of spack used to generate the pipeline. To take advantage of this, you could
simply replace ``git checkout ${SPACK_REF}`` in the example ``cloneSpack.sh``
script above with ``git checkout ${SPACK_CHECKOUT_VERSION}``.
On the other hand, if you're pointing to a spack repository and branch under your
control, there may be no benefit in using the captured ``SPACK_CHECKOUT_VERSION``,
and you can instead just clone using the project CI variables you set (in the
earlier example these were ``SPACK_REPO`` and ``SPACK_REF``).
.. _ci_environment_variables:
@@ -430,10 +540,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.
@@ -701,400 +703,6 @@ environments:
Administrators might find things easier to maintain without the
added "heavyweight" state of a view.
------------------------------
Developing Software with Spack
------------------------------
For any project, one needs to assemble an
environment of that application's dependencies. You might consider
loading a series of modules or creating a filesystem view. This
approach, while obvious, has some serious drawbacks:
1. There is no guarantee that an environment created this way will be
consistent. Your application could end up with dependency A
expecting one version of MPI, and dependency B expecting another.
The linker will not be happy...
2. Suppose you need to debug a package deep within your software DAG.
If you build that package with a manual environment, then it
becomes difficult to have Spack auto-build things that depend on
it. That could be a serious problem, depending on how deep the
package in question is in your dependency DAG.
3. At its core, Spack is a sophisticated concretization algorithm that
matches up packages with appropriate dependencies and creates a
*consistent* environment for the package it's building. Writing a
list of ``spack load`` commands for your dependencies is at least
as hard as writing the same list of ``depends_on()`` declarations
in a Spack package. But it makes no use of Spack concretization
and is more error-prone.
4. Spack provides an automated, systematic way not just to find a
packages's dependencies --- but also to build other packages on
top. Any Spack package can become a dependency for another Spack
package, offering a powerful vision of software re-use. If you
build your package A outside of Spack, then your ability to use it
as a building block for other packages in an automated way is
diminished: other packages depending on package A will not
be able to use Spack to fulfill that dependency.
5. If you are reading this manual, you probably love Spack. You're
probably going to write a Spack package for your software so
prospective users can install it with the least amount of pain.
Why should you go to additional work to find dependencies in your
development environment? Shouldn't Spack be able to help you build
your software based on the package you've already written?
In this section, we show how Spack can be used in the software
development process to greatest effect, and how development packages
can be seamlessly integrated into the Spack ecosystem. We will show
how this process works by example, assuming the software you are
creating is called ``mylib``.
^^^^^^^^^^^^^^^^^^^^^
Write the CMake Build
^^^^^^^^^^^^^^^^^^^^^
For now, the techniques in this section only work for CMake-based
projects, although they could be easily extended to other build
systems in the future. We will therefore assume you are using CMake
to build your project.
The ``CMakeLists.txt`` file should be written as normal. A few caveats:
1. Your project should produce binaries with RPATHs. This will ensure
that they work the same whether built manually or automatically by
Spack. For example:
.. code-block:: cmake
# enable @rpath in the install name for any shared library being built
# note: it is planned that a future version of CMake will enable this by default
set(CMAKE_MACOSX_RPATH 1)
# Always use full RPATH
# http://www.cmake.org/Wiki/CMake_RPATH_handling
# http://www.kitware.com/blog/home/post/510
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already
# (but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
ENDIF("${isSystemDir}" STREQUAL "-1")
2. Spack provides a CMake variable called
``SPACK_TRANSITIVE_INCLUDE_PATH``, which contains the ``include/``
directory for all of your project's transitive dependencies. It
can be useful if your project ``#include``s files from package B,
which ``#include`` files from package C, but your project only
lists project B as a dependency. This works in traditional
single-tree build environments, in which B and C's include files
live in the same place. In order to make it work with Spack as
well, you must add the following to ``CMakeLists.txt``. It will
have no effect when building without Spack:
.. code-block:: cmake
# Include all the transitive dependencies determined by Spack.
# If we're not running with Spack, this does nothing...
include_directories($ENV{SPACK_TRANSITIVE_INCLUDE_PATH})
.. note::
Note that this feature is controversial and could break with
future versions of GNU ld. The best practice is to make sure
anything you ``#include`` is listed as a dependency in your
CMakeLists.txt (and Spack package).
.. _write-the-spack-package:
^^^^^^^^^^^^^^^^^^^^^^^
Write the Spack Package
^^^^^^^^^^^^^^^^^^^^^^^
The Spack package also needs to be written, in tandem with setting up
the build (for example, CMake). The most important part of this task
is declaring dependencies. Here is an example of the Spack package
for the ``mylib`` package (ellipses for brevity):
.. code-block:: python
class Mylib(CMakePackage):
"""Misc. reusable utilities used by Myapp."""
homepage = "https://github.com/citibeth/mylib"
url = "https://github.com/citibeth/mylib/tarball/123"
version('0.1.2', '3a6acd70085e25f81b63a7e96c504ef9')
version('develop', git='https://github.com/citibeth/mylib.git',
branch='develop')
variant('everytrace', default=False,
description='Report errors through Everytrace')
...
extends('python')
depends_on('eigen')
depends_on('everytrace', when='+everytrace')
depends_on('proj', when='+proj')
...
depends_on('cmake', type='build')
depends_on('doxygen', type='build')
def cmake_args(self):
spec = self.spec
return [
'-DUSE_EVERYTRACE=%s' % ('YES' if '+everytrace' in spec else 'NO'),
'-DUSE_PROJ4=%s' % ('YES' if '+proj' in spec else 'NO'),
...
'-DUSE_UDUNITS2=%s' % ('YES' if '+udunits2' in spec else 'NO'),
'-DUSE_GTEST=%s' % ('YES' if '+googletest' in spec else 'NO')]
This is a standard Spack package that can be used to install
``mylib`` in a production environment. The list of dependencies in
the Spack package will generally be a repeat of the list of CMake
dependencies. This package also has some features that allow it to be
used for development:
1. It subclasses ``CMakePackage`` instead of ``Package``. This
eliminates the need to write an ``install()`` method, which is
defined in the superclass. Instead, one just needs to write the
``configure_args()`` method. That method should return the
arguments needed for the ``cmake`` command (beyond the standard
CMake arguments, which Spack will include already). These
arguments are typically used to turn features on/off in the build.
2. It specifies a non-checksummed version ``develop``. Running
``spack install mylib@develop`` the ``@develop`` version will
install the latest version off the develop branch. This method of
download is useful for the developer of a project while it is in
active development; however, it should only be used by developers
who control and trust the repository in question!
3. The ``url``, ``url_for_version()`` and ``homepage`` attributes are
not used in development. Don't worry if you don't have any, or if
they are behind a firewall.
^^^^^^^^^^^^^^^^
Build with Spack
^^^^^^^^^^^^^^^^
Now that you have a Spack package, you can use Spack to find its
dependencies automatically. For example:
.. code-block:: console
$ cd mylib
$ spack setup mylib@local
The result will be a file ``spconfig.py`` in the top-level
``mylib/`` directory. It is a short script that calls CMake with the
dependencies and options determined by Spack --- similar to what
happens in ``spack install``, but now written out in script form.
From a developer's point of view, you can think of ``spconfig.py`` as
a stand-in for the ``cmake`` command.
.. note::
You can invent any "version" you like for the ``spack setup``
command.
.. note::
Although ``spack setup`` does not build your package, it does
create and install a module file, and mark in the database that
your package has been installed. This can lead to errors, of
course, if you don't subsequently install your package.
Also... you will need to ``spack uninstall`` before you run
``spack setup`` again.
You can now build your project as usual with CMake:
.. code-block:: console
$ mkdir build; cd build
$ ../spconfig.py .. # Instead of cmake ..
$ make
$ make install
Once your ``make install`` command is complete, your package will be
installed, just as if you'd run ``spack install``. Except you can now
edit, re-build and re-install as often as needed, without checking
into Git or downloading tarballs.
.. note::
The build you get this way will be *almost* the same as the build
from ``spack install``. The only difference is, you will not be
using Spack's compiler wrappers. This difference has not caused
problems in our experience, as long as your project sets
RPATHs as shown above. You DO use RPATHs, right?
^^^^^^^^^^^^^^^^^^^^
Build Other Software
^^^^^^^^^^^^^^^^^^^^
Now that you've built ``mylib`` with Spack, you might want to build
another package that depends on it --- for example, ``myapp``. This
is accomplished easily enough:
.. code-block:: console
$ spack install myapp ^mylib@local
Note that auto-built software has now been installed *on top of*
manually-built software, without breaking Spack's "web." This
property is useful if you need to debug a package deep in the
dependency hierarchy of your application. It is a *big* advantage of
using ``spack setup`` to build your package's environment.
If you feel your software is stable, you might wish to install it with
``spack install`` and skip the source directory. You can just use,
for example:
.. code-block:: console
$ spack install mylib@develop
.. _release-your-software:
^^^^^^^^^^^^^^^^^^^^^
Release Your Software
^^^^^^^^^^^^^^^^^^^^^
You are now ready to release your software as a tarball with a
numbered version, and a Spack package that can build it. If you're
hosted on GitHub, this process will be a bit easier.
#. Put tag(s) on the version(s) in your GitHub repo you want to be
release versions. For example, a tag ``v0.1.0`` for version 0.1.0.
#. Set the ``url`` in your ``package.py`` to download a tarball for
the appropriate version. GitHub will give you a tarball for any
commit in the repo, if you tickle it the right way. For example:
.. code-block:: python
url = 'https://github.com/citibeth/mylib/tarball/v0.1.2'
#. Use Spack to determine your version's hash, and cut'n'paste it into
your ``package.py``:
.. code-block:: console
$ spack checksum mylib 0.1.2
==> Found 1 versions of mylib
0.1.2 https://github.com/citibeth/mylib/tarball/v0.1.2
How many would you like to checksum? (default is 5, q to abort)
==> Downloading...
==> Trying to fetch from https://github.com/citibeth/mylib/tarball/v0.1.2
######################################################################## 100.0%
==> Checksummed new versions of mylib:
version('0.1.2', '3a6acd70085e25f81b63a7e96c504ef9')
#. You should now be able to install released version 0.1.2 of your package with:
.. code-block:: console
$ spack install mylib@0.1.2
#. There is no need to remove the `develop` version from your package.
Spack concretization will always prefer numbered version to
non-numeric versions. Users will only get it if they ask for it.
^^^^^^^^^^^^^^^^^^^^^^^^
Distribute Your Software
^^^^^^^^^^^^^^^^^^^^^^^^
Once you've released your software, other people will want to build
it; and you will need to tell them how. In the past, that has meant a
few paragraphs of prose explaining which dependencies to install. But
now you use Spack, and those instructions are written in executable
Python code. But your software has many dependencies, and you know
Spack is the best way to install it:
#. First, you will want to fork Spack's ``develop`` branch. Your aim
is to provide a stable version of Spack that you KNOW will install
your software. If you make changes to Spack in the process, you
will want to submit pull requests to Spack core.
#. Add your software's ``package.py`` to that fork. You should submit
a pull request for this as well, unless you don't want the public
to know about your software.
#. Prepare instructions that read approximately as follows:
#. Download Spack from your forked repo.
#. Install Spack; see :ref:`getting_started`.
#. Set up an appropriate ``packages.yaml`` file. You should tell
your users to include in this file whatever versions/variants
are needed to make your software work correctly (assuming those
are not already in your ``packages.yaml``).
#. Run ``spack install mylib``.
#. Run this script to generate the ``module load`` commands or
filesystem view needed to use this software.
#. Be aware that your users might encounter unexpected bootstrapping
issues on their machines, especially if they are running on older
systems. The :ref:`getting_started` section should cover this, but
there could always be issues.
^^^^^^^^^^^^^^^^^^^
Other Build Systems
^^^^^^^^^^^^^^^^^^^
``spack setup`` currently only supports CMake-based builds, in
packages that subclass ``CMakePackage``. The intent is that this
mechanism should support a wider range of build systems; for example,
GNU Autotools. Someone well-versed in Autotools is needed to develop
this patch and test it out.
Python Distutils is another popular build system that should get
``spack setup`` support. For non-compiled languages like Python,
``spack diy`` may be used. Even better is to put the source directory
directly in the user's ``PYTHONPATH``. Then, edits in source files
are immediately available to run without any install process at all!
^^^^^^^^^^
Conclusion
^^^^^^^^^^
The ``spack setup`` development workflow provides better automation,
flexibility and safety than workflows relying on environment modules
or filesystem views. However, it has some drawbacks:
#. It currently works only with projects that use the CMake build
system. Support for other build systems is not hard to build, but
will require a small amount of effort for each build system to be
supported. It might not work well with some IDEs.
#. It only works with packages that sub-class ``StagedPackage``.
Currently, most Spack packages do not. Converting them is not
hard; but must be done on a package-by-package basis.
#. It requires that users are comfortable with Spack, as they
integrate Spack explicitly in their workflow. Not all users are
willing to do this.
-------------------------------------
Using Spack to Replace Homebrew/Conda
-------------------------------------
@@ -1237,7 +845,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 +964,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``.
@@ -1395,10 +1011,13 @@ The main points that are implemented below:
- export CXXFLAGS="-std=c++11"
install:
- if ! which spack >/dev/null; then
- |
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;
printf "config:\n build_jobs: 2\n" > $SPACK_ROOT/etc/spack/config.yaml &&
printf "packages:\n all:\n target: ['x86_64']\n" \
> $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 +1049,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 +1078,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 \
@@ -1538,8 +1151,9 @@ Avoid double-installing CUDA by adding, e.g.
packages:
cuda:
paths:
cuda@9.0.176%gcc@5.4.0 arch=linux-ubuntu16-x86_64: /usr/local/cuda
externals:
- spec: "cuda@9.0.176%gcc@5.4.0 arch=linux-ubuntu16-x86_64"
prefix: /usr/local/cuda
buildable: False
to your ``packages.yaml``.

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

@@ -118,6 +118,7 @@ def match(self, text):
"([^:]+): (Error:|error|undefined reference|multiply defined)",
"([^ :]+) ?: (error|fatal error|catastrophic error)",
"([^:]+)\\(([^\\)]+)\\) ?: (error|fatal error|catastrophic error)"),
"^FAILED",
"^[Bb]us [Ee]rror",
"^[Ss]egmentation [Vv]iolation",
"^[Ss]egmentation [Ff]ault",

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",
@@ -650,15 +652,14 @@
"avx512cd",
"avx512vbmi",
"avx512ifma",
"sha",
"sha_ni",
"umip",
"clwb",
"rdpid",
"gfni",
"avx512vbmi2",
"avx512vpopcntdq",
"avx512bitalg",
"avx512vnni",
"avx512_vbmi2",
"avx512_vpopcntdq",
"avx512_bitalg",
"avx512_vnni",
"vpclmulqdq",
"vaes"
],

View File

@@ -2,7 +2,6 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import collections
import errno
import hashlib
@@ -42,6 +41,8 @@
'fix_darwin_install_name',
'force_remove',
'force_symlink',
'chgrp',
'chmod_x',
'copy',
'install',
'copy_tree',
@@ -52,6 +53,7 @@
'partition_path',
'prefixes',
'remove_dead_links',
'remove_directory_contents',
'remove_if_dead_link',
'remove_linked_tree',
'set_executable',
@@ -338,56 +340,78 @@ def unset_executable_mode(path):
def copy(src, dest, _permissions=False):
"""Copies the file *src* to the file or directory *dest*.
"""Copy the file(s) *src* to the file or directory *dest*.
If *dest* specifies a directory, the file will be copied into *dest*
using the base filename from *src*.
*src* may contain glob characters.
Parameters:
src (str): the file to copy
src (str): the file(s) to copy
dest (str): the destination file or directory
_permissions (bool): for internal use only
Raises:
IOError: if *src* does not match any files or directories
ValueError: if *src* matches multiple files but *dest* is
not a directory
"""
if _permissions:
tty.debug('Installing {0} to {1}'.format(src, dest))
else:
tty.debug('Copying {0} to {1}'.format(src, dest))
# Expand dest to its eventual full path if it is a directory.
if os.path.isdir(dest):
dest = join_path(dest, os.path.basename(src))
files = glob.glob(src)
if not files:
raise IOError("No such file or directory: '{0}'".format(src))
if len(files) > 1 and not os.path.isdir(dest):
raise ValueError(
"'{0}' matches multiple files but '{1}' is not a directory".format(
src, dest))
shutil.copy(src, dest)
for src in files:
# Expand dest to its eventual full path if it is a directory.
dst = dest
if os.path.isdir(dest):
dst = join_path(dest, os.path.basename(src))
if _permissions:
set_install_permissions(dest)
copy_mode(src, dest)
shutil.copy(src, dst)
if _permissions:
set_install_permissions(dst)
copy_mode(src, dst)
def install(src, dest):
"""Installs the file *src* to the file or directory *dest*.
"""Install the file(s) *src* to the file or directory *dest*.
Same as :py:func:`copy` with the addition of setting proper
permissions on the installed file.
Parameters:
src (str): the file to install
src (str): the file(s) to install
dest (str): the destination file or directory
Raises:
IOError: if *src* does not match any files or directories
ValueError: if *src* matches multiple files but *dest* is
not a directory
"""
copy(src, dest, _permissions=True)
def resolve_link_target_relative_to_the_link(l):
def resolve_link_target_relative_to_the_link(link):
"""
os.path.isdir uses os.path.exists, which for links will check
the existence of the link target. If the link target is relative to
the link, we need to construct a pathname that is valid from
our cwd (which may not be the same as the link's directory)
"""
target = os.readlink(l)
target = os.readlink(link)
if os.path.isabs(target):
return target
link_dir = os.path.dirname(os.path.abspath(l))
link_dir = os.path.dirname(os.path.abspath(link))
return os.path.join(link_dir, target)
@@ -397,6 +421,8 @@ def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False):
If the destination directory *dest* does not already exist, it will
be created as well as missing parent directories.
*src* may contain glob characters.
If *symlinks* is true, symbolic links in the source tree are represented
as symbolic links in the new tree and the metadata of the original links
will be copied as far as the platform allows; if false, the contents and
@@ -411,56 +437,66 @@ def copy_tree(src, dest, symlinks=True, ignore=None, _permissions=False):
symlinks (bool): whether or not to preserve symlinks
ignore (function): function indicating which files to ignore
_permissions (bool): for internal use only
Raises:
IOError: if *src* does not match any files or directories
ValueError: if *src* is a parent directory of *dest*
"""
if _permissions:
tty.debug('Installing {0} to {1}'.format(src, dest))
else:
tty.debug('Copying {0} to {1}'.format(src, dest))
abs_src = os.path.abspath(src)
if not abs_src.endswith(os.path.sep):
abs_src += os.path.sep
abs_dest = os.path.abspath(dest)
if not abs_dest.endswith(os.path.sep):
abs_dest += os.path.sep
# Stop early to avoid unnecessary recursion if being asked to copy from a
# parent directory.
if abs_dest.startswith(abs_src):
raise ValueError('Cannot copy ancestor directory {0} into {1}'.
format(abs_src, abs_dest))
files = glob.glob(src)
if not files:
raise IOError("No such file or directory: '{0}'".format(src))
mkdirp(dest)
for src in files:
abs_src = os.path.abspath(src)
if not abs_src.endswith(os.path.sep):
abs_src += os.path.sep
for s, d in traverse_tree(abs_src, abs_dest, order='pre',
follow_symlinks=not symlinks,
ignore=ignore,
follow_nonexisting=True):
if os.path.islink(s):
link_target = resolve_link_target_relative_to_the_link(s)
if symlinks:
target = os.readlink(s)
if os.path.isabs(target):
new_target = re.sub(abs_src, abs_dest, target)
if new_target != target:
tty.debug("Redirecting link {0} to {1}"
.format(target, new_target))
target = new_target
# Stop early to avoid unnecessary recursion if being asked to copy
# from a parent directory.
if abs_dest.startswith(abs_src):
raise ValueError('Cannot copy ancestor directory {0} into {1}'.
format(abs_src, abs_dest))
os.symlink(target, d)
elif os.path.isdir(link_target):
mkdirp(d)
mkdirp(abs_dest)
for s, d in traverse_tree(abs_src, abs_dest, order='pre',
follow_symlinks=not symlinks,
ignore=ignore,
follow_nonexisting=True):
if os.path.islink(s):
link_target = resolve_link_target_relative_to_the_link(s)
if symlinks:
target = os.readlink(s)
if os.path.isabs(target):
new_target = re.sub(abs_src, abs_dest, target)
if new_target != target:
tty.debug("Redirecting link {0} to {1}"
.format(target, new_target))
target = new_target
os.symlink(target, d)
elif os.path.isdir(link_target):
mkdirp(d)
else:
shutil.copyfile(s, d)
else:
shutil.copyfile(s, d)
else:
if os.path.isdir(s):
mkdirp(d)
else:
shutil.copyfile(s, d)
if os.path.isdir(s):
mkdirp(d)
else:
shutil.copy2(s, d)
if _permissions:
set_install_permissions(d)
copy_mode(s, d)
if _permissions:
set_install_permissions(d)
copy_mode(s, d)
def install_tree(src, dest, symlinks=True, ignore=None):
@@ -474,6 +510,10 @@ def install_tree(src, dest, symlinks=True, ignore=None):
dest (str): the destination directory
symlinks (bool): whether or not to preserve symlinks
ignore (function): function indicating which files to ignore
Raises:
IOError: if *src* does not match any files or directories
ValueError: if *src* is a parent directory of *dest*
"""
copy_tree(src, dest, symlinks=symlinks, ignore=ignore, _permissions=True)
@@ -624,9 +664,9 @@ def replace_directory_transaction(directory_name, tmp_root=None):
# Check the input is indeed a directory with absolute path.
# Raise before anything is done to avoid moving the wrong directory
assert os.path.isdir(directory_name), \
'"directory_name" must be a valid directory'
'Invalid directory: ' + directory_name
assert os.path.isabs(directory_name), \
'"directory_name" must contain an absolute path'
'"directory_name" must contain an absolute path: ' + directory_name
directory_basename = os.path.basename(directory_name)
@@ -643,7 +683,7 @@ def replace_directory_transaction(directory_name, tmp_root=None):
try:
yield tmp_dir
except (Exception, KeyboardInterrupt, SystemExit):
except (Exception, KeyboardInterrupt, SystemExit) as e:
# Delete what was there, before copying back the original content
if os.path.exists(directory_name):
shutil.rmtree(directory_name)
@@ -654,6 +694,7 @@ def replace_directory_transaction(directory_name, tmp_root=None):
tty.debug('DIRECTORY RECOVERED [{0}]'.format(directory_name))
msg = 'the transactional move of "{0}" failed.'
msg += '\n ' + str(e)
raise RuntimeError(msg.format(directory_name))
else:
# Otherwise delete the temporary directory
@@ -937,6 +978,53 @@ def remove_linked_tree(path):
shutil.rmtree(path, True)
@contextmanager
def safe_remove(*files_or_dirs):
"""Context manager to remove the files passed as input, but restore
them in case any exception is raised in the context block.
Args:
*files_or_dirs: glob expressions for files or directories
to be removed
Returns:
Dictionary that maps deleted files to their temporary copy
within the context block.
"""
# Find all the files or directories that match
glob_matches = [glob.glob(x) for x in files_or_dirs]
# Sort them so that shorter paths like "/foo/bar" come before
# nested paths like "/foo/bar/baz.yaml". This simplifies the
# handling of temporary copies below
sorted_matches = sorted([
os.path.abspath(x) for x in itertools.chain(*glob_matches)
], key=len)
# Copy files and directories in a temporary location
removed, dst_root = {}, tempfile.mkdtemp()
try:
for id, file_or_dir in enumerate(sorted_matches):
# The glob expression at the top ensures that the file/dir exists
# at the time we enter the loop. Double check here since it might
# happen that a previous iteration of the loop already removed it.
# This is the case, for instance, if we remove the directory
# "/foo/bar" before the file "/foo/bar/baz.yaml".
if not os.path.exists(file_or_dir):
continue
# The monotonic ID is a simple way to make the filename
# or directory name unique in the temporary folder
basename = os.path.basename(file_or_dir) + '-{0}'.format(id)
temporary_path = os.path.join(dst_root, basename)
shutil.move(file_or_dir, temporary_path)
removed[file_or_dir] = temporary_path
yield removed
except BaseException:
# Restore the files that were removed
for original_path, temporary_path in removed.items():
shutil.move(temporary_path, original_path)
raise
def fix_darwin_install_name(path):
"""Fix install name of dynamic libraries on Darwin to have full path.
@@ -1570,6 +1658,19 @@ def can_access_dir(path):
return os.path.isdir(path) and os.access(path, os.R_OK | os.X_OK)
@memoized
def can_write_to_dir(path):
"""Return True if the argument is a directory in which we can write.
Args:
path: path to be tested
Returns:
True if ``path`` is an writeable directory, else False
"""
return os.path.isdir(path) and os.access(path, os.R_OK | os.X_OK | os.W_OK)
@memoized
def files_in(*search_paths):
"""Returns all the files in paths passed as arguments.
@@ -1683,3 +1784,28 @@ def prefixes(path):
pass
return paths
def md5sum(file):
"""Compute the MD5 sum of a file.
Args:
file (str): file to be checksummed
Returns:
MD5 sum of the file's content
"""
md5 = hashlib.md5()
with open(file, "rb") as f:
md5.update(f.read())
return md5.digest()
def remove_directory_contents(dir):
"""Remove all contents of a directory."""
if os.path.exists(dir):
for entry in [os.path.join(dir, entry) for entry in os.listdir(dir)]:
if os.path.isfile(entry) or os.path.islink(entry):
os.unlink(entry)
else:
shutil.rmtree(entry)

View File

@@ -5,6 +5,7 @@
from __future__ import division
import multiprocessing
import os
import re
import functools
@@ -19,49 +20,67 @@
ignore_modules = [r'^\.#', '~$']
# On macOS, Python 3.8 multiprocessing now defaults to the 'spawn' start
# method. Spack cannot currently handle this, so force the process to start
# using the 'fork' start method.
#
# TODO: This solution is not ideal, as the 'fork' start method can lead to
# crashes of the subprocess. Figure out how to make 'spawn' work.
#
# See:
# * https://github.com/spack/spack/pull/18124
# * https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods # noqa: E501
# * https://bugs.python.org/issue33725
if sys.version_info >= (3,): # novm
fork_context = multiprocessing.get_context('fork')
else:
fork_context = multiprocessing
def index_by(objects, *funcs):
"""Create a hierarchy of dictionaries by splitting the supplied
set of objects on unique values of the supplied functions.
Values are used as keys. For example, suppose you have four
objects with attributes that look like this::
set of objects on unique values of the supplied functions.
a = Spec(name="boost", compiler="gcc", arch="bgqos_0")
b = Spec(name="mrnet", compiler="intel", arch="chaos_5_x86_64_ib")
c = Spec(name="libelf", compiler="xlc", arch="bgqos_0")
d = Spec(name="libdwarf", compiler="intel", arch="chaos_5_x86_64_ib")
Values are used as keys. For example, suppose you have four
objects with attributes that look like this::
list_of_specs = [a,b,c,d]
index1 = index_by(list_of_specs, lambda s: s.arch,
lambda s: s.compiler)
index2 = index_by(list_of_specs, lambda s: s.compiler)
a = Spec("boost %gcc target=skylake")
b = Spec("mrnet %intel target=zen2")
c = Spec("libelf %xlc target=skylake")
d = Spec("libdwarf %intel target=zen2")
``index1`` now has two levels of dicts, with lists at the
leaves, like this::
list_of_specs = [a,b,c,d]
index1 = index_by(list_of_specs, lambda s: str(s.target),
lambda s: s.compiler)
index2 = index_by(list_of_specs, lambda s: s.compiler)
{ 'bgqos_0' : { 'gcc' : [a], 'xlc' : [c] },
'chaos_5_x86_64_ib' : { 'intel' : [b, d] }
}
``index1`` now has two levels of dicts, with lists at the
leaves, like this::
And ``index2`` is a single level dictionary of lists that looks
like this::
{ 'zen2' : { 'gcc' : [a], 'xlc' : [c] },
'skylake' : { 'intel' : [b, d] }
}
{ 'gcc' : [a],
'intel' : [b,d],
'xlc' : [c]
}
And ``index2`` is a single level dictionary of lists that looks
like this::
If any elemnts in funcs is a string, it is treated as the name
of an attribute, and acts like getattr(object, name). So
shorthand for the above two indexes would be::
{ 'gcc' : [a],
'intel' : [b,d],
'xlc' : [c]
}
index1 = index_by(list_of_specs, 'arch', 'compiler')
index2 = index_by(list_of_specs, 'compiler')
If any elements in funcs is a string, it is treated as the name
of an attribute, and acts like getattr(object, name). So
shorthand for the above two indexes would be::
You can also index by tuples by passing tuples::
index1 = index_by(list_of_specs, 'arch', 'compiler')
index2 = index_by(list_of_specs, 'compiler')
index1 = index_by(list_of_specs, ('arch', 'compiler'))
You can also index by tuples by passing tuples::
Keys in the resulting dict will look like ('gcc', 'bgqos_0').
index1 = index_by(list_of_specs, ('target', 'compiler'))
Keys in the resulting dict will look like ('gcc', 'skylake').
"""
if not funcs:
return objects
@@ -619,3 +638,28 @@ def load_module_from_file(module_name, module_path):
import imp
module = imp.load_source(module_name, module_path)
return module
def uniq(sequence):
"""Remove strings of duplicate elements from a list.
This works like the command-line ``uniq`` tool. It filters strings
of duplicate elements in a list. Adjacent matching elements are
merged into the first occurrence.
For example::
uniq([1, 1, 1, 1, 2, 2, 2, 3, 3]) == [1, 2, 3]
uniq([1, 1, 1, 1, 2, 2, 2, 1, 1]) == [1, 2, 1]
"""
if not sequence:
return []
uniq_list = [sequence[0]]
last = sequence[0]
for element in sequence[1:]:
if element != last:
uniq_list.append(element)
last = element
return uniq_list

View File

@@ -8,14 +8,32 @@
import errno
import time
import socket
from datetime import datetime
import llnl.util.tty as tty
import spack.util.string
__all__ = ['Lock', 'LockTransaction', 'WriteTransaction', 'ReadTransaction',
'LockError', 'LockTimeoutError',
'LockPermissionError', 'LockROFileError', 'CantCreateLockError']
#: Mapping of supported locks to description
lock_type = {fcntl.LOCK_SH: 'read', fcntl.LOCK_EX: 'write'}
#: A useful replacement for functions that should return True when not provided
#: for example.
true_fn = lambda: True
def _attempts_str(wait_time, nattempts):
# Don't print anything if we succeeded on the first try
if nattempts <= 1:
return ''
attempts = spack.util.string.plural(nattempts, 'attempt')
return ' after {0:0.2f}s and {1}'.format(wait_time, attempts)
class Lock(object):
"""This is an implementation of a filesystem lock using Python's lockf.
@@ -31,8 +49,8 @@ class Lock(object):
maintain multiple locks on the same file.
"""
def __init__(self, path, start=0, length=0, debug=False,
default_timeout=None):
def __init__(self, path, start=0, length=0, default_timeout=None,
debug=False, desc=''):
"""Construct a new lock on the file at ``path``.
By default, the lock applies to the whole file. Optionally,
@@ -43,6 +61,16 @@ def __init__(self, path, start=0, length=0, debug=False,
not currently expose the ``whence`` parameter -- ``whence`` is
always ``os.SEEK_SET`` and ``start`` is always evaluated from the
beginning of the file.
Args:
path (str): path to the lock
start (int): optional byte offset at which the lock starts
length (int): optional number of bytes to lock
default_timeout (int): number of seconds to wait for lock attempts,
where None means to wait indefinitely
debug (bool): debug mode specific to locking
desc (str): optional debug message lock description, which is
helpful for distinguishing between different Spack locks.
"""
self.path = path
self._file = None
@@ -56,6 +84,9 @@ def __init__(self, path, start=0, length=0, debug=False,
# enable debug mode
self.debug = debug
# optional debug description
self.desc = ' ({0})'.format(desc) if desc else ''
# If the user doesn't set a default timeout, or if they choose
# None, 0, etc. then lock attempts will not time out (unless the
# user sets a timeout for each attempt)
@@ -89,6 +120,20 @@ def _poll_interval_generator(_wait_times=None):
num_requests += 1
yield wait_time
def __repr__(self):
"""Formal representation of the lock."""
rep = '{0}('.format(self.__class__.__name__)
for attr, value in self.__dict__.items():
rep += '{0}={1}, '.format(attr, value.__repr__())
return '{0})'.format(rep.strip(', '))
def __str__(self):
"""Readable string (with key fields) of the lock."""
location = '{0}[{1}:{2}]'.format(self.path, self._start, self._length)
timeout = 'timeout={0}'.format(self.default_timeout)
activity = '#reads={0}, #writes={1}'.format(self._reads, self._writes)
return '({0}, {1}, {2})'.format(location, timeout, activity)
def _lock(self, op, timeout=None):
"""This takes a lock using POSIX locks (``fcntl.lockf``).
@@ -99,8 +144,9 @@ def _lock(self, op, timeout=None):
successfully acquired, the total wait time and the number of attempts
is returned.
"""
assert op in (fcntl.LOCK_SH, fcntl.LOCK_EX)
assert op in lock_type
self._log_acquiring('{0} LOCK'.format(lock_type[op].upper()))
timeout = timeout or self.default_timeout
# Create file and parent directories if they don't exist.
@@ -128,6 +174,10 @@ def _lock(self, op, timeout=None):
# If the file were writable, we'd have opened it 'r+'
raise LockROFileError(self.path)
self._log_debug("{0} locking [{1}:{2}]: timeout {3} sec"
.format(lock_type[op], self._start, self._length,
timeout))
poll_intervals = iter(Lock._poll_interval_generator())
start_time = time.time()
num_attempts = 0
@@ -139,17 +189,21 @@ def _lock(self, op, timeout=None):
time.sleep(next(poll_intervals))
# TBD: Is an extra attempt after timeout needed/appropriate?
num_attempts += 1
if self._poll_lock(op):
total_wait_time = time.time() - start_time
return total_wait_time, num_attempts
raise LockTimeoutError("Timed out waiting for lock.")
raise LockTimeoutError("Timed out waiting for a {0} lock."
.format(lock_type[op]))
def _poll_lock(self, op):
"""Attempt to acquire the lock in a non-blocking manner. Return whether
the locking attempt succeeds
"""
assert op in lock_type
try:
# Try to get the lock (will raise if not available.)
fcntl.lockf(self._file, op | fcntl.LOCK_NB,
@@ -158,21 +212,24 @@ def _poll_lock(self, op):
# help for debugging distributed locking
if self.debug:
# All locks read the owner PID and host
self._read_debug_data()
self._read_log_debug_data()
self._log_debug('{0} locked {1} [{2}:{3}] (owner={4})'
.format(lock_type[op], self.path,
self._start, self._length, self.pid))
# Exclusive locks write their PID/host
if op == fcntl.LOCK_EX:
self._write_debug_data()
self._write_log_debug_data()
return True
except IOError as e:
if e.errno in (errno.EAGAIN, errno.EACCES):
# EAGAIN and EACCES == locked by another process
pass
else:
# EAGAIN and EACCES == locked by another process (so try again)
if e.errno not in (errno.EAGAIN, errno.EACCES):
raise
return False
def _ensure_parent_directory(self):
parent = os.path.dirname(self.path)
@@ -189,7 +246,7 @@ def _ensure_parent_directory(self):
raise
return parent
def _read_debug_data(self):
def _read_log_debug_data(self):
"""Read PID and host data out of the file if it is there."""
self.old_pid = self.pid
self.old_host = self.host
@@ -201,7 +258,7 @@ def _read_debug_data(self):
_, _, self.host = host.rpartition('=')
self.pid = int(self.pid)
def _write_debug_data(self):
def _write_log_debug_data(self):
"""Write PID and host data to the file, recording old values."""
self.old_pid = self.pid
self.old_host = self.host
@@ -227,6 +284,8 @@ def _unlock(self):
self._length, self._start, os.SEEK_SET)
self._file.close()
self._file = None
self._reads = 0
self._writes = 0
def acquire_read(self, timeout=None):
"""Acquires a recursive, shared lock for reading.
@@ -242,15 +301,14 @@ def acquire_read(self, timeout=None):
timeout = timeout or self.default_timeout
if self._reads == 0 and self._writes == 0:
self._debug(
'READ LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]'
.format(self))
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout)
self._acquired_debug('READ LOCK', wait_time, nattempts)
self._reads += 1
# Log if acquired, which includes counts when verbose
self._log_acquired('READ LOCK', wait_time, nattempts)
return True
else:
# Increment the read count for nested lock tracking
self._reads += 1
return False
@@ -268,13 +326,11 @@ def acquire_write(self, timeout=None):
timeout = timeout or self.default_timeout
if self._writes == 0:
self._debug(
'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Acquiring]'
.format(self))
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout)
self._acquired_debug('WRITE LOCK', wait_time, nattempts)
self._writes += 1
# Log if acquired, which includes counts when verbose
self._log_acquired('WRITE LOCK', wait_time, nattempts)
# return True only if we weren't nested in a read lock.
# TODO: we may need to return two values: whether we got
@@ -282,9 +338,65 @@ def acquire_write(self, timeout=None):
# write lock for the first time. Now it returns the latter.
return self._reads == 0
else:
# Increment the write count for nested lock tracking
self._writes += 1
return False
def is_write_locked(self):
"""Check if the file is write locked
Return:
(bool): ``True`` if the path is write locked, otherwise, ``False``
"""
try:
self.acquire_read()
# If we have a read lock then no other process has a write lock.
self.release_read()
except LockTimeoutError:
# Another process is holding a write lock on the file
return True
return False
def downgrade_write_to_read(self, timeout=None):
"""
Downgrade from an exclusive write lock to a shared read.
Raises:
LockDowngradeError: if this is an attempt at a nested transaction
"""
timeout = timeout or self.default_timeout
if self._writes == 1 and self._reads == 0:
self._log_downgrading()
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_SH, timeout=timeout)
self._reads = 1
self._writes = 0
self._log_downgraded(wait_time, nattempts)
else:
raise LockDowngradeError(self.path)
def upgrade_read_to_write(self, timeout=None):
"""
Attempts to upgrade from a shared read lock to an exclusive write.
Raises:
LockUpgradeError: if this is an attempt at a nested transaction
"""
timeout = timeout or self.default_timeout
if self._reads == 1 and self._writes == 0:
self._log_upgrading()
# can raise LockError.
wait_time, nattempts = self._lock(fcntl.LOCK_EX, timeout=timeout)
self._reads = 0
self._writes = 1
self._log_upgraded(wait_time, nattempts)
else:
raise LockUpgradeError(self.path)
def release_read(self, release_fn=None):
"""Releases a read lock.
@@ -305,17 +417,17 @@ def release_read(self, release_fn=None):
"""
assert self._reads > 0
locktype = 'READ LOCK'
if self._reads == 1 and self._writes == 0:
self._debug(
'READ LOCK: {0.path}[{0._start}:{0._length}] [Released]'
.format(self))
self._log_releasing(locktype)
result = True
if release_fn is not None:
result = release_fn()
# we need to call release_fn before releasing the lock
release_fn = release_fn or true_fn
result = release_fn()
self._unlock() # can raise LockError.
self._reads -= 1
self._reads = 0
self._log_released(locktype)
return result
else:
self._reads -= 1
@@ -339,45 +451,80 @@ def release_write(self, release_fn=None):
"""
assert self._writes > 0
release_fn = release_fn or true_fn
locktype = 'WRITE LOCK'
if self._writes == 1 and self._reads == 0:
self._debug(
'WRITE LOCK: {0.path}[{0._start}:{0._length}] [Released]'
.format(self))
self._log_releasing(locktype)
# we need to call release_fn before releasing the lock
result = True
if release_fn is not None:
result = release_fn()
result = release_fn()
self._unlock() # can raise LockError.
self._writes -= 1
self._writes = 0
self._log_released(locktype)
return result
else:
self._writes -= 1
# when the last *write* is released, we call release_fn here
# instead of immediately before releasing the lock.
if self._writes == 0:
return release_fn() if release_fn is not None else True
return release_fn()
else:
return False
def _debug(self, *args):
tty.debug(*args)
def _get_counts_desc(self):
return '(reads {0}, writes {1})'.format(self._reads, self._writes) \
if tty.is_verbose() else ''
def _acquired_debug(self, lock_type, wait_time, nattempts):
attempts_format = 'attempt' if nattempts == 1 else 'attempt'
if nattempts > 1:
acquired_attempts_format = ' after {0:0.2f}s and {1:d} {2}'.format(
wait_time, nattempts, attempts_format)
else:
# Dont print anything if we succeeded immediately
acquired_attempts_format = ''
self._debug(
'{0}: {1.path}[{1._start}:{1._length}] [Acquired{2}]'
.format(lock_type, self, acquired_attempts_format))
def _log_acquired(self, locktype, wait_time, nattempts):
attempts_part = _attempts_str(wait_time, nattempts)
now = datetime.now()
desc = 'Acquired at %s' % now.strftime("%H:%M:%S.%f")
self._log_debug(self._status_msg(locktype, '{0}{1}'
.format(desc, attempts_part)))
def _log_acquiring(self, locktype):
self._log_debug(self._status_msg(locktype, 'Acquiring'), level=3)
def _log_debug(self, *args, **kwargs):
"""Output lock debug messages."""
kwargs['level'] = kwargs.get('level', 2)
tty.debug(*args, **kwargs)
def _log_downgraded(self, wait_time, nattempts):
attempts_part = _attempts_str(wait_time, nattempts)
now = datetime.now()
desc = 'Downgraded at %s' % now.strftime("%H:%M:%S.%f")
self._log_debug(self._status_msg('READ LOCK', '{0}{1}'
.format(desc, attempts_part)))
def _log_downgrading(self):
self._log_debug(self._status_msg('WRITE LOCK', 'Downgrading'), level=3)
def _log_released(self, locktype):
now = datetime.now()
desc = 'Released at %s' % now.strftime("%H:%M:%S.%f")
self._log_debug(self._status_msg(locktype, desc))
def _log_releasing(self, locktype):
self._log_debug(self._status_msg(locktype, 'Releasing'), level=3)
def _log_upgraded(self, wait_time, nattempts):
attempts_part = _attempts_str(wait_time, nattempts)
now = datetime.now()
desc = 'Upgraded at %s' % now.strftime("%H:%M:%S.%f")
self._log_debug(self._status_msg('WRITE LOCK', '{0}{1}'.
format(desc, attempts_part)))
def _log_upgrading(self):
self._log_debug(self._status_msg('READ LOCK', 'Upgrading'), level=3)
def _status_msg(self, locktype, status):
status_desc = '[{0}] {1}'.format(status, self._get_counts_desc())
return '{0}{1.desc}: {1.path}[{1._start}:{1._length}] {2}'.format(
locktype, self, status_desc)
class LockTransaction(object):
@@ -462,10 +609,28 @@ class LockError(Exception):
"""Raised for any errors related to locks."""
class LockDowngradeError(LockError):
"""Raised when unable to downgrade from a write to a read lock."""
def __init__(self, path):
msg = "Cannot downgrade lock from write to read on file: %s" % path
super(LockDowngradeError, self).__init__(msg)
class LockLimitError(LockError):
"""Raised when exceed maximum attempts to acquire a lock."""
class LockTimeoutError(LockError):
"""Raised when an attempt to acquire a lock times out."""
class LockUpgradeError(LockError):
"""Raised when unable to upgrade from a read to a write lock."""
def __init__(self, path):
msg = "Cannot upgrade lock from read to write on file: %s" % path
super(LockUpgradeError, self).__init__(msg)
class LockPermissionError(LockError):
"""Raised when there are permission issues with a lock."""

View File

@@ -19,7 +19,8 @@
from llnl.util.tty.color import cprint, cwrite, cescape, clen
_debug = False
# Globals
_debug = 0
_verbose = False
_stacktrace = False
_timestamp = False
@@ -29,21 +30,26 @@
indent = " "
def debug_level():
return _debug
def is_verbose():
return _verbose
def is_debug():
return _debug
def is_debug(level=1):
return _debug >= level
def is_stacktrace():
return _stacktrace
def set_debug(flag):
def set_debug(level=0):
global _debug
_debug = flag
assert level >= 0, 'Debug level must be a positive value'
_debug = level
def set_verbose(flag):
@@ -132,10 +138,17 @@ def process_stacktrace(countback):
return st_text
def show_pid():
return is_debug(2)
def get_timestamp(force=False):
"""Get a string timestamp"""
if _debug or _timestamp or force:
return datetime.now().strftime("[%Y-%m-%d-%H:%M:%S.%f] ")
# Note inclusion of the PID is useful for parallel builds.
pid = ', {0}'.format(os.getpid()) if show_pid() else ''
return '[{0}{1}] '.format(
datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f"), pid)
else:
return ''
@@ -195,7 +208,8 @@ def verbose(message, *args, **kwargs):
def debug(message, *args, **kwargs):
if _debug:
level = kwargs.get('level', 1)
if is_debug(level):
kwargs.setdefault('format', 'g')
kwargs.setdefault('stream', sys.stderr)
info(message, *args, **kwargs)

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

@@ -7,17 +7,27 @@
"""
from __future__ import unicode_literals
import atexit
import errno
import multiprocessing
import os
import re
import select
import sys
import traceback
import signal
from contextlib import contextmanager
from six import string_types
from six import StringIO
import llnl.util.tty as tty
from llnl.util.lang import fork_context
try:
import termios
except ImportError:
termios = None
# Use this to strip escape sequences
_escape = re.compile(r'\x1b[^m]*m|\x1b\[?1034h')
@@ -31,6 +41,25 @@
control = re.compile('(\x11\n|\x13\n)')
@contextmanager
def ignore_signal(signum):
"""Context manager to temporarily ignore a signal."""
old_handler = signal.signal(signum, signal.SIG_IGN)
try:
yield
finally:
signal.signal(signum, old_handler)
def _is_background_tty(stream):
"""True if the stream is a tty and calling process is in the background.
"""
return (
stream.isatty() and
os.getpgrp() != os.tcgetpgrp(stream.fileno())
)
def _strip(line):
"""Strip color and control characters from a line."""
return _escape.sub('', line)
@@ -41,22 +70,75 @@ class keyboard_input(object):
Use this with ``sys.stdin`` for keyboard input, e.g.::
with keyboard_input(sys.stdin):
r, w, x = select.select([sys.stdin], [], [])
# ... do something with keypresses ...
with keyboard_input(sys.stdin) as kb:
while True:
kb.check_fg_bg()
r, w, x = select.select([sys.stdin], [], [])
# ... do something with keypresses ...
This disables canonical input so that keypresses are available on the
stream immediately. Typically standard input allows line editing,
which means keypresses won't be sent until the user hits return.
The ``keyboard_input`` context manager disables canonical
(line-based) input and echoing, so that keypresses are available on
the stream immediately, and they are not printed to the
terminal. Typically, standard input is line-buffered, which means
keypresses won't be sent until the user hits return. In this mode, a
user can hit, e.g., 'v', and it will be read on the other end of the
pipe immediately but not printed.
It also disables echoing, so that keys pressed aren't printed to the
terminal. So, the user can hit, e.g., 'v', and it's read on the
other end of the pipe immediately but not printed.
The handler takes care to ensure that terminal changes only take
effect when the calling process is in the foreground. If the process
is backgrounded, canonical mode and echo are re-enabled. They are
disabled again when the calling process comes back to the foreground.
When the with block completes, prior TTY settings are restored.
This context manager works through a single signal handler for
``SIGTSTP``, along with a poolling routine called ``check_fg_bg()``.
Here are the relevant states, transitions, and POSIX signals::
[Running] -------- Ctrl-Z sends SIGTSTP ------------.
[ in FG ] <------- fg sends SIGCONT --------------. |
^ | |
| fg (no signal) | |
| | v
[Running] <------- bg sends SIGCONT ---------- [Stopped]
[ in BG ] [ in BG ]
We handle all transitions exept for ``SIGTSTP`` generated by Ctrl-Z
by periodically calling ``check_fg_bg()``. This routine notices if
we are in the background with canonical mode or echo disabled, or if
we are in the foreground without canonical disabled and echo enabled,
and it fixes the terminal settings in response.
``check_fg_bg()`` works *except* for when the process is stopped with
``SIGTSTP``. We cannot rely on a periodic timer in this case, as it
may not rrun before the process stops. We therefore restore terminal
settings in the ``SIGTSTP`` handler.
Additional notes:
* We mostly use polling here instead of a SIGARLM timer or a
thread. This is to avoid the complexities of many interrupts, which
seem to make system calls (like I/O) unreliable in older Python
versions (2.6 and 2.7). See these issues for details:
1. https://www.python.org/dev/peps/pep-0475/
2. https://bugs.python.org/issue8354
There are essentially too many ways for asynchronous signals to go
wrong if we also have to support older Python versions, so we opt
not to use them.
* ``SIGSTOP`` can stop a process (in the foreground or background),
but it can't be caught. Because of this, we can't fix any terminal
settings on ``SIGSTOP``, and the terminal will be left with
``ICANON`` and ``ECHO`` disabled until it is resumes execution.
* Technically, a process *could* be sent ``SIGTSTP`` while running in
the foreground, without the shell backgrounding that process. This
doesn't happen in practice, and we assume that ``SIGTSTP`` always
means that defaults should be restored.
* We rely on ``termios`` support. Without it, or if the stream isn't
a TTY, ``keyboard_input`` has no effect.
Note: this depends on termios support. If termios isn't available,
or if the stream isn't a TTY, this context manager has no effect.
"""
def __init__(self, stream):
"""Create a context manager that will enable keyboard input on stream.
@@ -69,44 +151,97 @@ def __init__(self, stream):
"""
self.stream = stream
def _is_background(self):
"""True iff calling process is in the background."""
return _is_background_tty(self.stream)
def _get_canon_echo_flags(self):
"""Get current termios canonical and echo settings."""
cfg = termios.tcgetattr(self.stream)
return (
bool(cfg[3] & termios.ICANON),
bool(cfg[3] & termios.ECHO),
)
def _enable_keyboard_input(self):
"""Disable canonical input and echoing on ``self.stream``."""
# "enable" input by disabling canonical mode and echo
new_cfg = termios.tcgetattr(self.stream)
new_cfg[3] &= ~termios.ICANON
new_cfg[3] &= ~termios.ECHO
# Apply new settings for terminal
with ignore_signal(signal.SIGTTOU):
termios.tcsetattr(self.stream, termios.TCSANOW, new_cfg)
def _restore_default_terminal_settings(self):
"""Restore the original input configuration on ``self.stream``."""
# _restore_default_terminal_settings Can be called in foreground
# or background. When called in the background, tcsetattr triggers
# SIGTTOU, which we must ignore, or the process will be stopped.
with ignore_signal(signal.SIGTTOU):
termios.tcsetattr(self.stream, termios.TCSANOW, self.old_cfg)
def _tstp_handler(self, signum, frame):
self._restore_default_terminal_settings()
os.kill(os.getpid(), signal.SIGSTOP)
def check_fg_bg(self):
# old_cfg is set up in __enter__ and indicates that we have
# termios and a valid stream.
if not self.old_cfg:
return
# query terminal flags and fg/bg status
flags = self._get_canon_echo_flags()
bg = self._is_background()
# restore sanity if flags are amiss -- see diagram in class docs
if not bg and any(flags): # fg, but input not enabled
self._enable_keyboard_input()
elif bg and not all(flags): # bg, but input enabled
self._restore_default_terminal_settings()
def __enter__(self):
"""Enable immediate keypress input on stream.
"""Enable immediate keypress input, while this process is foreground.
If the stream is not a TTY or the system doesn't support termios,
do nothing.
"""
self.old_cfg = None
self.old_handlers = {}
# Ignore all this if the input stream is not a tty.
if not self.stream or not self.stream.isatty():
return
return self
try:
# If this fails, self.old_cfg will remain None
import termios
if termios:
# save old termios settings to restore later
self.old_cfg = termios.tcgetattr(self.stream)
# save old termios settings
fd = self.stream.fileno()
self.old_cfg = termios.tcgetattr(fd)
# Install a signal handler to disable/enable keyboard input
# when the process moves between foreground and background.
self.old_handlers[signal.SIGTSTP] = signal.signal(
signal.SIGTSTP, self._tstp_handler)
# create new settings with canonical input and echo
# disabled, so keypresses are immediate & don't echo.
self.new_cfg = termios.tcgetattr(fd)
self.new_cfg[3] &= ~termios.ICANON
self.new_cfg[3] &= ~termios.ECHO
# add an atexit handler to ensure the terminal is restored
atexit.register(self._restore_default_terminal_settings)
# Apply new settings for terminal
termios.tcsetattr(fd, termios.TCSADRAIN, self.new_cfg)
# enable keyboard input initially (if foreground)
if not self._is_background():
self._enable_keyboard_input()
except Exception:
pass # some OS's do not support termios, so ignore
return self
def __exit__(self, exc_type, exception, traceback):
"""If termios was avaialble, restore old settings."""
"""If termios was available, restore old settings."""
if self.old_cfg:
import termios
termios.tcsetattr(
self.stream.fileno(), termios.TCSADRAIN, self.old_cfg)
self._restore_default_terminal_settings()
# restore SIGSTP and SIGCONT handlers
if self.old_handlers:
for signum, old_handler in self.old_handlers.items():
signal.signal(signum, old_handler)
class Unbuffered(object):
@@ -189,14 +324,15 @@ class log_output(object):
work within test frameworks like nose and pytest.
"""
def __init__(self, file_like=None, echo=False, debug=False, buffer=False):
def __init__(self, file_like=None, output=None, error=None,
echo=False, debug=0, buffer=False):
"""Create a new output log context manager.
Args:
file_like (str or stream): open file object or name of file where
output should be logged
echo (bool): whether to echo output in addition to logging it
debug (bool): whether to enable tty debug mode during logging
debug (int): positive to enable tty debug mode during logging
buffer (bool): pass buffer=True to skip unbuffering output; note
this doesn't set up any *new* buffering
@@ -214,14 +350,16 @@ def __init__(self, file_like=None, echo=False, debug=False, buffer=False):
"""
self.file_like = file_like
self.output = output or sys.stdout
self.error = error or sys.stderr
self.echo = echo
self.debug = debug
self.buffer = buffer
self._active = False # used to prevent re-entry
def __call__(self, file_like=None, echo=None, debug=None, buffer=None):
"""Thie behaves the same as init. It allows a logger to be reused.
def __call__(self, file_like=None, output=None, error=None,
echo=None, debug=None, buffer=None):
"""This behaves the same as init. It allows a logger to be reused.
Arguments are the same as for ``__init__()``. Args here take
precedence over those passed to ``__init__()``.
@@ -241,6 +379,10 @@ def __call__(self, file_like=None, echo=None, debug=None, buffer=None):
"""
if file_like is not None:
self.file_like = file_like
if output is not None:
self.output = output
if error is not None:
self.error = error
if echo is not None:
self.echo = echo
if debug is not None:
@@ -282,11 +424,11 @@ def __enter__(self):
self._saved_debug = tty._debug
# OS-level pipe for redirecting output to logger
self.read_fd, self.write_fd = os.pipe()
read_fd, write_fd = os.pipe()
# Multiprocessing pipe for communication back from the daemon
# Currently only used to save echo value between uses
self.parent, self.child = multiprocessing.Pipe()
self.parent_pipe, child_pipe = multiprocessing.Pipe()
# Sets a daemon that writes to file what it reads from a pipe
try:
@@ -296,11 +438,16 @@ def __enter__(self):
except BaseException:
input_stream = None # just don't forward input if this fails
self.process = multiprocessing.Process(
target=self._writer_daemon, args=(input_stream,))
self.process = fork_context.Process(
target=_writer_daemon,
args=(
input_stream, read_fd, write_fd, self.echo, self.output,
self.log_file, child_pipe
)
)
self.process.daemon = True # must set before start()
self.process.start()
os.close(self.read_fd) # close in the parent process
os.close(read_fd) # close in the parent process
finally:
if input_stream:
@@ -308,43 +455,54 @@ def __enter__(self):
# Flush immediately before redirecting so that anything buffered
# goes to the original stream
sys.stdout.flush()
sys.stderr.flush()
self.output.flush()
self.error.flush()
# sys.stdout.flush()
# sys.stderr.flush()
# Now do the actual output rediction.
self.use_fds = _file_descriptors_work(sys.stdout, sys.stderr)
self.use_fds = _file_descriptors_work(self.output, self.error)#sys.stdout, sys.stderr)
if self.use_fds:
# We try first to use OS-level file descriptors, as this
# redirects output for subprocesses and system calls.
# Save old stdout and stderr file descriptors
self._saved_stdout = os.dup(sys.stdout.fileno())
self._saved_stderr = os.dup(sys.stderr.fileno())
self._saved_output = os.dup(self.output.fileno())
self._saved_error = os.dup(self.error.fileno())
# self._saved_stdout = os.dup(sys.stdout.fileno())
# self._saved_stderr = os.dup(sys.stderr.fileno())
# redirect to the pipe we created above
os.dup2(self.write_fd, sys.stdout.fileno())
os.dup2(self.write_fd, sys.stderr.fileno())
os.close(self.write_fd)
os.dup2(write_fd, self.output.fileno())
os.dup2(write_fd, self.error.fileno())
# os.dup2(write_fd, sys.stdout.fileno())
# os.dup2(write_fd, sys.stderr.fileno())
os.close(write_fd)
else:
# Handle I/O the Python way. This won't redirect lower-level
# output, but it's the best we can do, and the caller
# shouldn't expect any better, since *they* have apparently
# redirected I/O the Python way.
# Save old stdout and stderr file objects
self._saved_stdout = sys.stdout
self._saved_stderr = sys.stderr
self._saved_output = self.output
self._saved_error = self.error
# self._saved_stdout = sys.stdout
# self._saved_stderr = sys.stderr
# create a file object for the pipe; redirect to it.
pipe_fd_out = os.fdopen(self.write_fd, 'w')
sys.stdout = pipe_fd_out
sys.stderr = pipe_fd_out
pipe_fd_out = os.fdopen(write_fd, 'w')
self.output = pipe_fd_out
self.error = pipe_fd_out
# sys.stdout = pipe_fd_out
# sys.stderr = pipe_fd_out
# Unbuffer stdout and stderr at the Python level
if not self.buffer:
sys.stdout = Unbuffered(sys.stdout)
sys.stderr = Unbuffered(sys.stderr)
self.output = Unbuffered(self.output)
self.error = Unbuffered(self.error)
# sys.stdout = Unbuffered(sys.stdout)
# sys.stderr = Unbuffered(sys.stderr)
# Force color and debug settings now that we have redirected.
tty.color.set_color_when(forced_color)
@@ -359,31 +517,40 @@ def __enter__(self):
def __exit__(self, exc_type, exc_val, exc_tb):
# Flush any buffered output to the logger daemon.
sys.stdout.flush()
sys.stderr.flush()
self.output.flush()
self.error.flush()
# sys.stdout.flush()
# sys.stderr.flush()
# restore previous output settings, either the low-level way or
# the python way
if self.use_fds:
os.dup2(self._saved_stdout, sys.stdout.fileno())
os.close(self._saved_stdout)
os.dup2(self._saved_output, self.output.fileno())
os.close(self._saved_output)
os.dup2(self._saved_stderr, sys.stderr.fileno())
os.close(self._saved_stderr)
os.dup2(self._saved_error, self.error.fileno())
os.close(self._saved_error)
# os.dup2(self._saved_stdout, sys.stdout.fileno())
# os.close(self._saved_stdout)
# os.dup2(self._saved_stderr, sys.stderr.fileno())
# os.close(self._saved_stderr)
else:
sys.stdout = self._saved_stdout
sys.stderr = self._saved_stderr
self.output = self._saved_output
self.error = self._saved_error
# sys.stdout = self._saved_stdout
# sys.stderr = self._saved_stderr
# print log contents in parent if needed.
if self.write_log_in_parent:
string = self.parent.recv()
string = self.parent_pipe.recv()
self.file_like.write(string)
if self.close_log_in_parent:
self.log_file.close()
# recover and store echo settings from the child before it dies
self.echo = self.parent.recv()
self.echo = self.parent_pipe.recv()
# join the daemon process. The daemon will quit automatically
# when the write pipe is closed; we just wait for it here.
@@ -406,74 +573,170 @@ def force_echo(self):
# output. We us these control characters rather than, say, a
# separate pipe, because they're in-band and assured to appear
# exactly before and after the text we want to echo.
sys.stdout.write(xon)
sys.stdout.flush()
yield
sys.stdout.write(xoff)
sys.stdout.flush()
def _writer_daemon(self, stdin):
"""Daemon that writes output to the log file and stdout."""
# Use line buffering (3rd param = 1) since Python 3 has a bug
# that prevents unbuffered text I/O.
in_pipe = os.fdopen(self.read_fd, 'r', 1)
os.close(self.write_fd)
echo = self.echo # initial echo setting, user-controllable
force_echo = False # parent can force echo for certain output
# list of streams to select from
istreams = [in_pipe, stdin] if stdin else [in_pipe]
log_file = self.log_file
self.output.write(xon)
self.output.flush()
try:
with keyboard_input(stdin):
while True:
# No need to set any timeout for select.select
# Wait until a key press or an event on in_pipe.
rlist, _, _ = select.select(istreams, [], [])
# Allow user to toggle echo with 'v' key.
# Currently ignores other chars.
if stdin in rlist:
if stdin.read(1) == 'v':
echo = not echo
# Handle output from the with block process.
if in_pipe in rlist:
# If we arrive here it means that in_pipe was
# ready for reading : it should never happen that
# line is false-ish
line = in_pipe.readline()
if not line:
break # EOF
# find control characters and strip them.
controls = control.findall(line)
line = re.sub(control, '', line)
# Echo to stdout if requested or forced
if echo or force_echo:
sys.stdout.write(line)
sys.stdout.flush()
# Stripped output to log file.
log_file.write(_strip(line))
log_file.flush()
if xon in controls:
force_echo = True
if xoff in controls:
force_echo = False
except BaseException:
tty.error("Exception occurred in writer daemon!")
traceback.print_exc()
yield
finally:
# send written data back to parent if we used a StringIO
if self.write_log_in_parent:
self.child.send(log_file.getvalue())
log_file.close()
self.output.write(xoff)
self.output.flush()
# send echo value back to the parent so it can be preserved.
self.child.send(echo)
def _writer_daemon(stdin, read_fd, write_fd, echo, echo_stream, log_file,
control_pipe):
"""Daemon used by ``log_output`` to write to a log file and to ``stdout``.
The daemon receives output from the parent process and writes it both
to a log and, optionally, to ``stdout``. The relationship looks like
this::
Terminal
|
| +-------------------------+
| | Parent Process |
+--------> | with log_output(): |
| stdin | ... |
| +-------------------------+
| ^ | write_fd (parent's redirected stdout)
| | control |
| | pipe |
| | v read_fd
| +-------------------------+ stdout
| | Writer daemon |------------>
+--------> | read from read_fd | log_file
stdin | write to out and log |------------>
+-------------------------+
Within the ``log_output`` handler, the parent's output is redirected
to a pipe from which the daemon reads. The daemon writes each line
from the pipe to a log file and (optionally) to ``stdout``. The user
can hit ``v`` to toggle output on ``stdout``.
In addition to the input and output file descriptors, the daemon
interacts with the parent via ``control_pipe``. It reports whether
``stdout`` was enabled or disabled when it finished and, if the
``log_file`` is a ``StringIO`` object, then the daemon also sends the
logged output back to the parent as a string, to be written to the
``StringIO`` in the parent. This is mainly for testing.
Arguments:
stdin (stream): input from the terminal
read_fd (int): pipe for reading from parent's redirected stdout
write_fd (int): parent's end of the pipe will write to (will be
immediately closed by the writer daemon)
echo (bool): initial echo setting -- controlled by user and
preserved across multiple writer daemons
echo_stream (stream): output to echo to when echoing
log_file (file-like): file to log all output
control_pipe (Pipe): multiprocessing pipe on which to send control
information to the parent
"""
# Use line buffering (3rd param = 1) since Python 3 has a bug
# that prevents unbuffered text I/O.
in_pipe = os.fdopen(read_fd, 'r', 1)
os.close(write_fd)
# list of streams to select from
istreams = [in_pipe, stdin] if stdin else [in_pipe]
force_echo = False # parent can force echo for certain output
try:
with keyboard_input(stdin) as kb:
while True:
# fix the terminal settings if we recently came to
# the foreground
kb.check_fg_bg()
# wait for input from any stream. use a coarse timeout to
# allow other checks while we wait for input
rlist, _, _ = _retry(select.select)(istreams, [], [], 1e-1)
# Allow user to toggle echo with 'v' key.
# Currently ignores other chars.
# only read stdin if we're in the foreground
if stdin in rlist and not _is_background_tty(stdin):
# it's possible to be backgrounded between the above
# check and the read, so we ignore SIGTTIN here.
with ignore_signal(signal.SIGTTIN):
try:
if stdin.read(1) == 'v':
echo = not echo
except IOError as e:
# If SIGTTIN is ignored, the system gives EIO
# to let the caller know the read failed b/c it
# was in the bg. Ignore that too.
if e.errno != errno.EIO:
raise
if in_pipe in rlist:
# Handle output from the calling process.
line = _retry(in_pipe.readline)()
if not line:
break
# find control characters and strip them.
controls = control.findall(line)
line = control.sub('', line)
# Echo to stdout if requested or forced.
if echo or force_echo:
echo_stream.write(line)
echo_stream.flush()
# Stripped output to log file.
log_file.write(_strip(line))
log_file.flush()
if xon in controls:
force_echo = True
if xoff in controls:
force_echo = False
except BaseException:
tty.error("Exception occurred in writer daemon!")
traceback.print_exc()
finally:
# send written data back to parent if we used a StringIO
if isinstance(log_file, StringIO):
control_pipe.send(log_file.getvalue())
log_file.close()
# send echo value back to the parent so it can be preserved.
control_pipe.send(echo)
def _retry(function):
"""Retry a call if errors indicating an interrupted system call occur.
Interrupted system calls return -1 and set ``errno`` to ``EINTR`` if
certain flags are not set. Newer Pythons automatically retry them,
but older Pythons do not, so we need to retry the calls.
This function converts a call like this:
syscall(args)
and makes it retry by wrapping the function like this:
_retry(syscall)(args)
This is a private function because EINTR is unfortunately raised in
different ways from different functions, and we only handle the ones
relevant for this file.
"""
def wrapped(*args, **kwargs):
while True:
try:
return function(*args, **kwargs)
except IOError as e:
if e.errno == errno.EINTR:
continue
raise
except select.error as e:
if e.args[0] == errno.EINTR:
continue
raise
return wrapped

View File

@@ -0,0 +1,347 @@
# 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)
"""The pty module handles pseudo-terminals.
Currently, the infrastructure here is only used to test llnl.util.tty.log.
If this is used outside a testing environment, we will want to reconsider
things like timeouts in ``ProcessController.wait()``, which are set to
get tests done quickly, not to avoid high CPU usage.
"""
from __future__ import print_function
import os
import signal
import multiprocessing
import re
import sys
import termios
import time
import traceback
import llnl.util.tty.log as log
from llnl.util.lang import fork_context
from spack.util.executable import which
class ProcessController(object):
"""Wrapper around some fundamental process control operations.
This allows one process (the controller) to drive another (the
minion) similar to the way a shell would, by sending signals and I/O.
"""
def __init__(self, pid, controller_fd,
timeout=1, sleep_time=1e-1, debug=False):
"""Create a controller to manipulate the process with id ``pid``
Args:
pid (int): id of process to control
controller_fd (int): controller fd attached to pid's stdin
timeout (int): time in seconds for wait operations to time out
(default 1 second)
sleep_time (int): time to sleep after signals, to control the
signal rate of the controller (default 1e-1)
debug (bool): whether ``horizontal_line()`` and ``status()`` should
produce output when called (default False)
``sleep_time`` allows the caller to insert delays after calls
that signal or modify the controlled process. Python behaves very
poorly if signals arrive too fast, and drowning a Python process
with a Python handler with signals can kill the process and hang
our tests, so we throttle this a closer-to-interactive rate.
"""
self.pid = pid
self.pgid = os.getpgid(pid)
self.controller_fd = controller_fd
self.timeout = timeout
self.sleep_time = sleep_time
self.debug = debug
# we need the ps command to wait for process statuses
self.ps = which("ps", required=True)
def get_canon_echo_attrs(self):
"""Get echo and canon attributes of the terminal of controller_fd."""
cfg = termios.tcgetattr(self.controller_fd)
return (
bool(cfg[3] & termios.ICANON),
bool(cfg[3] & termios.ECHO),
)
def horizontal_line(self, name):
"""Labled horizontal line for debugging."""
if self.debug:
sys.stderr.write(
"------------------------------------------- %s\n" % name
)
def status(self):
"""Print debug message with status info for the minion."""
if self.debug:
canon, echo = self.get_canon_echo_attrs()
sys.stderr.write("canon: %s, echo: %s\n" % (
"on" if canon else "off",
"on" if echo else "off",
))
sys.stderr.write("input: %s\n" % self.input_on())
sys.stderr.write("bg: %s\n" % self.background())
sys.stderr.write("\n")
def input_on(self):
"""True if keyboard input is enabled on the controller_fd pty."""
return self.get_canon_echo_attrs() == (False, False)
def background(self):
"""True if pgid is in a background pgroup of controller_fd's tty."""
return self.pgid != os.tcgetpgrp(self.controller_fd)
def tstp(self):
"""Send SIGTSTP to the controlled process."""
self.horizontal_line("tstp")
os.killpg(self.pgid, signal.SIGTSTP)
time.sleep(self.sleep_time)
def cont(self):
self.horizontal_line("cont")
os.killpg(self.pgid, signal.SIGCONT)
time.sleep(self.sleep_time)
def fg(self):
self.horizontal_line("fg")
with log.ignore_signal(signal.SIGTTOU):
os.tcsetpgrp(self.controller_fd, os.getpgid(self.pid))
time.sleep(self.sleep_time)
def bg(self):
self.horizontal_line("bg")
with log.ignore_signal(signal.SIGTTOU):
os.tcsetpgrp(self.controller_fd, os.getpgrp())
time.sleep(self.sleep_time)
def write(self, byte_string):
self.horizontal_line("write '%s'" % byte_string.decode("utf-8"))
os.write(self.controller_fd, byte_string)
def wait(self, condition):
start = time.time()
while (((time.time() - start) < self.timeout) and not condition()):
time.sleep(1e-2)
assert condition()
def wait_enabled(self):
self.wait(lambda: self.input_on() and not self.background())
def wait_disabled(self):
self.wait(lambda: not self.input_on() and self.background())
def wait_disabled_fg(self):
self.wait(lambda: not self.input_on() and not self.background())
def proc_status(self):
status = self.ps("-p", str(self.pid), "-o", "stat", output=str)
status = re.split(r"\s+", status.strip(), re.M)
return status[1]
def wait_stopped(self):
self.wait(lambda: "T" in self.proc_status())
def wait_running(self):
self.wait(lambda: "T" not in self.proc_status())
class PseudoShell(object):
"""Sets up controller and minion processes with a PTY.
You can create a ``PseudoShell`` if you want to test how some
function responds to terminal input. This is a pseudo-shell from a
job control perspective; ``controller_function`` and ``minion_function``
are set up with a pseudoterminal (pty) so that the controller can drive
the minion through process control signals and I/O.
The two functions should have signatures like this::
def controller_function(proc, ctl, **kwargs)
def minion_function(**kwargs)
``controller_function`` is spawned in its own process and passed three
arguments:
proc
the ``multiprocessing.Process`` object representing the minion
ctl
a ``ProcessController`` object tied to the minion
kwargs
keyword arguments passed from ``PseudoShell.start()``.
``minion_function`` is only passed ``kwargs`` delegated from
``PseudoShell.start()``.
The ``ctl.controller_fd`` will have its ``controller_fd`` connected to
``sys.stdin`` in the minion process. Both processes will share the
same ``sys.stdout`` and ``sys.stderr`` as the process instantiating
``PseudoShell``.
Here are the relationships between processes created::
._________________________________________________________.
| Minion Process | pid 2
| - runs minion_function | pgroup 2
|_________________________________________________________| session 1
^
| create process with controller_fd connected to stdin
| stdout, stderr are the same as caller
._________________________________________________________.
| Controller Process | pid 1
| - runs controller_function | pgroup 1
| - uses ProcessController and controller_fd to | session 1
| control minion |
|_________________________________________________________|
^
| create process
| stdin, stdout, stderr are the same as caller
._________________________________________________________.
| Caller | pid 0
| - Constructs, starts, joins PseudoShell | pgroup 0
| - provides controller_function, minion_function | session 0
|_________________________________________________________|
"""
def __init__(self, controller_function, minion_function):
self.proc = None
self.controller_function = controller_function
self.minion_function = minion_function
# these can be optionally set to change defaults
self.controller_timeout = 1
self.sleep_time = 0
def start(self, **kwargs):
"""Start the controller and minion processes.
Arguments:
kwargs (dict): arbitrary keyword arguments that will be
passed to controller and minion functions
The controller process will create the minion, then call
``controller_function``. The minion process will call
``minion_function``.
"""
self.proc = fork_context.Process(
target=PseudoShell._set_up_and_run_controller_function,
args=(self.controller_function, self.minion_function,
self.controller_timeout, self.sleep_time),
kwargs=kwargs,
)
self.proc.start()
def join(self):
"""Wait for the minion process to finish, and return its exit code."""
self.proc.join()
return self.proc.exitcode
@staticmethod
def _set_up_and_run_minion_function(
tty_name, stdout_fd, stderr_fd, ready, minion_function, **kwargs):
"""Minion process wrapper for PseudoShell.
Handles the mechanics of setting up a PTY, then calls
``minion_function``.
"""
# new process group, like a command or pipeline launched by a shell
os.setpgrp()
# take controlling terminal and set up pty IO
stdin_fd = os.open(tty_name, os.O_RDWR)
os.dup2(stdin_fd, sys.stdin.fileno())
os.dup2(stdout_fd, sys.stdout.fileno())
os.dup2(stderr_fd, sys.stderr.fileno())
os.close(stdin_fd)
if kwargs.get("debug"):
sys.stderr.write(
"minion: stdin.isatty(): %s\n" % sys.stdin.isatty())
# tell the parent that we're really running
if kwargs.get("debug"):
sys.stderr.write("minion: ready!\n")
ready.value = True
try:
minion_function(**kwargs)
except BaseException:
traceback.print_exc()
@staticmethod
def _set_up_and_run_controller_function(
controller_function, minion_function, controller_timeout,
sleep_time, **kwargs):
"""Set up a pty, spawn a minion process, execute controller_function.
Handles the mechanics of setting up a PTY, then calls
``controller_function``.
"""
os.setsid() # new session; this process is the controller
controller_fd, minion_fd = os.openpty()
pty_name = os.ttyname(minion_fd)
# take controlling terminal
pty_fd = os.open(pty_name, os.O_RDWR)
os.close(pty_fd)
ready = multiprocessing.Value('i', False)
minion_process = multiprocessing.Process(
target=PseudoShell._set_up_and_run_minion_function,
args=(pty_name, sys.stdout.fileno(), sys.stderr.fileno(),
ready, minion_function),
kwargs=kwargs,
)
minion_process.start()
# wait for subprocess to be running and connected.
while not ready.value:
time.sleep(1e-5)
pass
if kwargs.get("debug"):
sys.stderr.write("pid: %d\n" % os.getpid())
sys.stderr.write("pgid: %d\n" % os.getpgrp())
sys.stderr.write("sid: %d\n" % os.getsid(0))
sys.stderr.write("tcgetpgrp: %d\n" % os.tcgetpgrp(controller_fd))
sys.stderr.write("\n")
minion_pgid = os.getpgid(minion_process.pid)
sys.stderr.write("minion pid: %d\n" % minion_process.pid)
sys.stderr.write("minion pgid: %d\n" % minion_pgid)
sys.stderr.write(
"minion sid: %d\n" % os.getsid(minion_process.pid))
sys.stderr.write("\n")
sys.stderr.flush()
# set up controller to ignore SIGTSTP, like a shell
signal.signal(signal.SIGTSTP, signal.SIG_IGN)
# call the controller function once the minion is ready
try:
controller = ProcessController(
minion_process.pid, controller_fd, debug=kwargs.get("debug"))
controller.timeout = controller_timeout
controller.sleep_time = sleep_time
error = controller_function(minion_process, controller, **kwargs)
except BaseException:
error = 1
traceback.print_exc()
minion_process.join()
# return whether either the parent or minion failed
return error or minion_process.exitcode

View File

@@ -5,7 +5,7 @@
#: major, minor, patch version for Spack, in a tuple
spack_version_info = (0, 13, 4)
spack_version_info = (0, 15, 4)
#: String containing Spack version joined with .'s
spack_version = '.'.join(str(v) for v in spack_version_info)

View File

@@ -18,10 +18,13 @@ class ABI(object):
"""This class provides methods to test ABI compatibility between specs.
The current implementation is rather rough and could be improved."""
def architecture_compatible(self, parent, child):
"""Return true if parent and child have ABI compatible targets."""
return not parent.architecture or not child.architecture or \
parent.architecture == child.architecture
def architecture_compatible(self, target, constraint):
"""Return true if architecture of target spec is ABI compatible
to the architecture of constraint spec. If either the target
or constraint specs have no architecture, target is also defined
as architecture ABI compatible to constraint."""
return not target.architecture or not constraint.architecture or \
target.architecture.satisfies(constraint.architecture)
@memoized
def _gcc_get_libstdcxx_version(self, version):
@@ -107,8 +110,8 @@ def compiler_compatible(self, parent, child, **kwargs):
return True
return False
def compatible(self, parent, child, **kwargs):
"""Returns true iff a parent and child spec are ABI compatible"""
def compatible(self, target, constraint, **kwargs):
"""Returns true if target spec is ABI compatible to constraint spec"""
loosematch = kwargs.get('loose', False)
return self.architecture_compatible(parent, child) and \
self.compiler_compatible(parent, child, loose=loosematch)
return self.architecture_compatible(target, constraint) and \
self.compiler_compatible(target, constraint, loose=loosematch)

View File

@@ -6,7 +6,7 @@
"""
This module contains all the elements that are required to create an
architecture object. These include, the target processor, the operating system,
and the architecture platform (i.e. cray, darwin, linux, bgq, etc) classes.
and the architecture platform (i.e. cray, darwin, linux, etc) classes.
On a multiple architecture machine, the architecture spec field can be set to
build a package against any target and operating system that is present on the
@@ -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.real_version
except spack.util.executable.ProcessError as e:
# log this and just return compiler.version instead
tty.debug(str(e))
@@ -232,10 +233,14 @@ class Platform(object):
Will return a instance of it once it is returned.
"""
priority = None # Subclass sets number. Controls detection order
priority = None # Subclass sets number. Controls detection order
#: binary formats used on this platform; used by relocation logic
binary_formats = ['elf']
front_end = None
back_end = None
default = None # The default back end target. On cray ivybridge
default = None # The default back end target. On cray ivybridge
front_os = None
back_os = None
@@ -435,6 +440,12 @@ def to_dict(self):
('target', self.target.to_dict_or_value())])
return syaml_dict([('arch', d)])
def to_spec(self):
"""Convert this Arch to an anonymous Spec with architecture defined."""
spec = spack.spec.Spec()
spec.architecture = spack.spec.ArchSpec(str(self))
return spec
@staticmethod
def from_dict(d):
spec = spack.spec.ArchSpec.from_dict(d)
@@ -517,6 +528,14 @@ def platform():
@memoized
def default_arch():
"""Default ``Arch`` object for this machine.
See ``sys_type()``.
"""
return Arch(platform(), 'default_os', 'default_target')
def sys_type():
"""Print out the "default" platform-os-target tuple for this machine.
@@ -529,8 +548,7 @@ def sys_type():
architectures.
"""
arch = Arch(platform(), 'default_os', 'default_target')
return str(arch)
return str(default_arch())
@memoized

View File

@@ -10,6 +10,8 @@
import shutil
import tempfile
import hashlib
import glob
from contextlib import closing
import ruamel.yaml as yaml
@@ -18,10 +20,11 @@
from six.moves.urllib.error import URLError
import llnl.util.tty as tty
from llnl.util.filesystem import mkdirp, install_tree
from llnl.util.filesystem import mkdirp
import spack.cmd
import spack.config as config
import spack.database as spack_db
import spack.fetch_strategy as fs
import spack.util.gpg
import spack.relocate as relocate
@@ -29,11 +32,9 @@
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
import spack.architecture as architecture
_build_cache_relative_path = 'build_cache'
@@ -53,7 +54,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 +69,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 +89,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 +112,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 +144,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 +175,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 +197,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 +280,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)
@@ -342,11 +372,21 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
raise NoOverwriteException(url_util.format(remote_specfile_path))
# make a copy of the install directory to work with
workdir = os.path.join(tempfile.mkdtemp(), os.path.basename(spec.prefix))
install_tree(spec.prefix, workdir, symlinks=True)
workdir = os.path.join(tmpdir, os.path.basename(spec.prefix))
# install_tree copies hardlinks
# create a temporary tarfile from prefix and exract it to workdir
# tarfile preserves hardlinks
temp_tarfile_name = tarball_name(spec, '.tar')
temp_tarfile_path = os.path.join(tarfile_dir, temp_tarfile_name)
with closing(tarfile.open(temp_tarfile_path, 'w')) as tar:
tar.add(name='%s' % spec.prefix,
arcname='.')
with closing(tarfile.open(temp_tarfile_path, 'r')) as tar:
tar.extractall(workdir)
os.remove(temp_tarfile_path)
# create info for later relocation and create tar
write_buildinfo_file(spec.prefix, workdir, rel=rel)
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
@@ -360,14 +400,14 @@ 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
# 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))
@@ -390,6 +430,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()
@@ -407,8 +448,8 @@ def build_tarball(spec, outdir, force=False, rel=False, unsigned=False,
sign_tarball(key, force, specfile_path)
# put tarball, spec and signature files in .spack archive
with closing(tarfile.open(spackfile_path, 'w')) as tar:
tar.add(name='%s' % tarfile_path, arcname='%s' % tarfile_name)
tar.add(name='%s' % specfile_path, arcname='%s' % specfile_name)
tar.add(name=tarfile_path, arcname='%s' % tarfile_name)
tar.add(name=specfile_path, arcname='%s' % specfile_name)
if not unsigned:
tar.add(name='%s.asc' % specfile_path,
arcname='%s.asc' % specfile_name)
@@ -423,6 +464,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.debug('Buildcache for "{0}" written to \n {1}'
.format(spec, remote_spackfile_path))
try:
# create an index.html for the build_cache directory so specs can be
# found
@@ -452,6 +496,7 @@ def download_tarball(spec):
# stage the tarball into standard place
stage = Stage(url, name="build_cache", keep=True)
stage.create()
try:
stage.fetch()
return stage.save_filename
@@ -468,100 +513,156 @@ 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':
relocate.make_macho_binaries_relative(cur_path_names, orig_path_names,
old_path, allow_root)
else:
relocate.make_elf_binaries_relative(cur_path_names, orig_path_names,
old_path, allow_root)
platform = spack.architecture.get_platform(spec.platform)
if 'macho' in platform.binary_formats:
relocate.make_macho_binaries_relative(
cur_path_names, orig_path_names, old_layout_root)
if 'elf' in platform.binary_formats:
relocate.make_elf_binaries_relative(
cur_path_names, orig_path_names, 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)
# If we are not installing back to the same install tree do the relocation
if old_layout_root != new_layout_root:
files_to_relocate = [os.path.join(workdir, filename)
for filename in buildinfo.get('relocate_binaries')
]
# If the buildcache was not created with relativized rpaths
# do the relocation of path in binaries
platform = spack.architecture.get_platform(spec.platform)
if 'macho' in platform.binary_formats:
relocate.relocate_macho_binaries(files_to_relocate,
old_layout_root,
new_layout_root,
prefix_to_prefix, rel,
old_prefix,
new_prefix)
if 'elf' in platform.binary_formats:
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)
paths_to_relocate = [old_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'])))
# 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)
# If we are installing back to the same location
# relocate the sbang location if the spack directory changed
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 old_spack_prefix != new_spack_prefix:
relocate.relocate_text(text_names,
old_layout_root, new_layout_root,
old_prefix, new_prefix,
old_spack_prefix,
new_spack_prefix,
prefix_to_prefix)
def extract_tarball(spec, filename, allow_root=False, unsigned=False,
@@ -586,6 +687,10 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
with closing(tarfile.open(spackfile_path, 'r')) as tar:
tar.extractall(tmpdir)
# some buildcache tarfiles use bzip2 compression
if not os.path.exists(tarfile_path):
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):
try:
@@ -593,7 +698,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(
@@ -622,33 +727,51 @@ 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))
install_tree(workdir, spec.prefix, symlinks=True)
# 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
temp_tarfile_name = tarball_name(spec, '.tar')
temp_tarfile_path = os.path.join(tmpdir, temp_tarfile_name)
with closing(tarfile.open(temp_tarfile_path, 'w')) as tar:
tar.add(name='%s' % workdir,
arcname='.')
with closing(tarfile.open(temp_tarfile_path, 'r')) as tar:
tar.extractall(spec.prefix)
os.remove(temp_tarfile_path)
# cleanup
os.remove(tarfile_path)
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,
@@ -658,6 +781,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
@@ -705,7 +830,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():
@@ -714,67 +839,69 @@ def get_spec(spec=None, force=False):
mirror_dir = url_util.local_file_path(fetch_url_build_cache)
if mirror_dir:
tty.msg("Finding buildcaches in %s" % mirror_dir)
tty.debug('Finding buildcaches in {0}'.format(mirror_dir))
link = url_util.join(fetch_url_build_cache, specfile_name)
urls.add(link)
else:
tty.msg("Finding buildcaches at %s" %
url_util.format(fetch_url_build_cache))
tty.debug('Finding buildcaches at {0}'
.format(url_util.format(fetch_url_build_cache)))
link = url_util.join(fetch_url_build_cache, specfile_name)
urls.add(link)
return try_download_specs(urls=urls, force=force)
def get_specs(force=False, allarch=False):
def get_specs():
"""
Get spec.yaml's for build caches available on mirror
"""
arch = architecture.Arch(architecture.platform(),
'default_os', 'default_target')
arch_pattern = ('([^-]*-[^-]*-[^-]*)')
if not allarch:
arch_pattern = '(%s-%s-[^-]*)' % (arch.platform, arch.os)
regex_pattern = '%s(.*)(spec.yaml$)' % (arch_pattern)
arch_re = re.compile(regex_pattern)
global _cached_specs
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.debug('Finding buildcaches at {0}'
.format(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.debug('Failed to read index {0}'.format(index_url), url_err, 1)
# Continue on to the next mirror
continue
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:
_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 " +
@@ -788,19 +915,21 @@ 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)
tty.debug('Finding public keys in {0}'.format(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)
tty.debug('Finding public keys at {0}'
.format(url_util.format(fetch_url_build_cache)))
# 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:
@@ -812,14 +941,14 @@ def get_keys(install=False, trust=False, force=False):
stage.fetch()
except fs.FetchError:
continue
tty.msg('Found key %s' % link)
tty.debug('Found key {0}'.format(link))
if install:
if trust:
Gpg.trust(stage.save_filename)
tty.msg('Added this key to trusted keys.')
tty.debug('Added this key to trusted keys.')
else:
tty.msg('Will not add this key to trusted keys.'
'Use -t to install all downloaded keys')
tty.debug('Will not add this key to trusted keys.'
'Use -t to install all downloaded keys')
def needs_rebuild(spec, mirror_url, rebuild_on_errors=False):
@@ -906,7 +1035,7 @@ def check_specs_against_mirrors(mirrors, specs, output_file=None,
"""
rebuilds = {}
for mirror in spack.mirror.MirrorCollection(mirrors).values():
tty.msg('Checking for built specs at %s' % mirror.fetch_url)
tty.debug('Checking for built specs at {0}'.format(mirror.fetch_url))
rebuild_list = []

View File

@@ -32,7 +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 inspect
import re
import multiprocessing
import os
import shutil
@@ -44,15 +44,19 @@
import llnl.util.tty as tty
from llnl.util.tty.color import cescape, colorize
from llnl.util.filesystem import mkdirp, install, install_tree
from llnl.util.lang import dedupe
from llnl.util.lang import dedupe, fork_context
import spack.build_systems.cmake
import spack.build_systems.meson
import spack.config
import spack.main
import spack.paths
import spack.package
import spack.schema.environment
import spack.store
import spack.install_test
import spack.architecture as arch
import spack.util.path
from spack.util.string import plural
from spack.util.environment import (
env_flag, filter_system_paths, get_path, is_system_path,
@@ -60,7 +64,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, path_from_modules, module
from spack.util.log_parse import parse_log_events, make_log_context
@@ -145,6 +149,40 @@ 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)
# Unset mpi environment vars. These flags should only be set by
# mpi providers for packages with mpi dependencies
mpi_vars = [
'MPICC', 'MPICXX', 'MPIFC', 'MPIF77', 'MPIF90'
]
for v in mpi_vars:
env.unset(v)
build_lang = spack.config.get('config:build_language')
if build_lang:
@@ -170,6 +208,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 +389,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,9 +451,8 @@ 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"
m = module
m.make_jobs = jobs
@@ -531,7 +567,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:
@@ -607,8 +643,8 @@ def get_rpaths(pkg):
# Second module is our compiler mod name. We use that to get rpaths from
# 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
rpaths.append(path_from_modules([pkg.compiler.modules[1]]))
return list(dedupe(filter_system_paths(rpaths)))
def get_std_cmake_args(pkg):
@@ -671,32 +707,48 @@ def load_external_modules(pkg):
pkg (PackageBase): package to load deps for
"""
for dep in list(pkg.spec.traverse()):
if dep.external_module:
load_module(dep.external_module)
external_modules = dep.external_modules or []
for external_module in external_modules:
load_module(external_module)
def setup_package(pkg, dirty):
def setup_package(pkg, dirty, context='build'):
"""Execute all environment setup routines."""
build_env = EnvironmentModifications()
env = EnvironmentModifications()
# clean environment
if not dirty:
clean_environment()
set_compiler_environment_variables(pkg, build_env)
set_build_environment_variables(pkg, build_env, dirty)
pkg.architecture.platform.setup_platform_environment(pkg, build_env)
# setup compilers and build tools for build contexts
need_compiler = context == 'build' or (context == 'test' and
pkg.test_requires_compiler)
if need_compiler:
set_compiler_environment_variables(pkg, env)
set_build_environment_variables(pkg, env, dirty)
build_env.extend(
modifications_from_dependencies(pkg.spec, context='build')
)
# architecture specific setup
pkg.architecture.platform.setup_platform_environment(pkg, env)
if (not dirty) and (not build_env.is_unset('CPATH')):
tty.debug("A dependency has updated CPATH, this may lead pkg-config"
" to assume that the package is part of the system"
" includes and omit it when invoked with '--cflags'.")
if context == 'build':
# recursive post-order dependency information
env.extend(
modifications_from_dependencies(pkg.spec, context=context)
)
set_module_variables_for_package(pkg)
pkg.setup_build_environment(build_env)
if (not dirty) and (not env.is_unset('CPATH')):
tty.debug("A dependency has updated CPATH, this may lead pkg-"
"config to assume that the package is part of the system"
" includes and omit it when invoked with '--cflags'.")
# setup package itself
set_module_variables_for_package(pkg)
pkg.setup_build_environment(env)
elif context == 'test':
import spack.user_environment as uenv # avoid circular import
env.extend(uenv.environment_modifications_for_spec(pkg.spec))
set_module_variables_for_package(pkg)
env.prepend_path('PATH', '.')
# Loading modules, in particular if they are meant to be used outside
# of Spack, can change environment variables that are relevant to the
@@ -706,24 +758,35 @@ def setup_package(pkg, dirty):
# unnecessary. Modules affecting these variables will be overwritten anyway
with preserve_environment('CC', 'CXX', 'FC', 'F77'):
# All module loads that otherwise would belong in previous
# functions have to occur after the build_env object has its
# functions have to occur after the env object has its
# modifications applied. Otherwise the environment modifications
# could undo module changes, such as unsetting LD_LIBRARY_PATH
# after a module changes it.
for mod in pkg.compiler.modules:
# Fixes issue https://github.com/spack/spack/issues/3153
if os.environ.get("CRAY_CPU_TARGET") == "mic-knl":
load_module("cce")
load_module(mod)
if need_compiler:
for mod in pkg.compiler.modules:
# Fixes issue https://github.com/spack/spack/issues/3153
if os.environ.get("CRAY_CPU_TARGET") == "mic-knl":
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:
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()
validate(env, tty.warn)
env.apply_modifications()
def modifications_from_dependencies(spec, context):
@@ -743,7 +806,8 @@ def modifications_from_dependencies(spec, context):
deptype_and_method = {
'build': (('build', 'link', 'test'),
'setup_dependent_build_environment'),
'run': (('link', 'run'), 'setup_dependent_run_environment')
'run': (('link', 'run'), 'setup_dependent_run_environment'),
'test': (('link', 'run', 'test'), 'setup_dependent_run_environment')
}
deptype, method = deptype_and_method[context]
@@ -757,7 +821,7 @@ def modifications_from_dependencies(spec, context):
return env
def fork(pkg, function, dirty, fake):
def fork(pkg, function, dirty, fake, context='build', **kwargs):
"""Fork a child process to do part of a spack build.
Args:
@@ -769,6 +833,8 @@ def fork(pkg, function, dirty, fake):
dirty (bool): If True, do NOT clean the environment before
building.
fake (bool): If True, skip package setup b/c it's not a real build
context (string): If 'build', setup build environment. If 'test', setup
test environment.
Usage::
@@ -797,15 +863,14 @@ def child_process(child_pipe, input_stream):
try:
if not fake:
setup_package(pkg, dirty=dirty)
setup_package(pkg, dirty=dirty, context=context)
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()
@@ -816,19 +881,29 @@ def child_process(child_pipe, input_stream):
# build up some context from the offending package so we can
# show that, too.
package_context = get_package_context(tb)
if exc_type is not spack.install_test.TestFailure:
package_context = get_package_context(traceback.extract_tb(tb))
else:
package_context = []
build_log = None
if hasattr(pkg, 'log_path'):
if context == 'build' and hasattr(pkg, 'log_path'):
build_log = pkg.log_path
test_log = None
if context == 'test':
test_log = os.path.join(
pkg.test_suite.stage,
spack.install_test.TestSuite.test_log_name(pkg.spec))
# make a pickleable exception to send to parent.
msg = "%s: %s" % (exc_type.__name__, str(exc))
ce = ChildError(msg,
exc_type.__module__,
exc_type.__name__,
tb_string, build_log, package_context)
tb_string, package_context,
build_log, test_log)
child_pipe.send(ce)
finally:
@@ -841,7 +916,7 @@ def child_process(child_pipe, input_stream):
if sys.stdin.isatty() and hasattr(sys.stdin, 'fileno'):
input_stream = os.fdopen(os.dup(sys.stdin.fileno()))
p = multiprocessing.Process(
p = fork_context.Process(
target=child_process, args=(child_pipe, input_stream))
p.start()
@@ -857,15 +932,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
@@ -876,8 +956,8 @@ def get_package_context(traceback, context=3):
"""Return some context for an error message when the build fails.
Args:
traceback (traceback): A traceback from some exception raised during
install
traceback (list of tuples): output from traceback.extract_tb() or
traceback.extract_stack()
context (int): Lines of context to show before and after the line
where the error happened
@@ -886,51 +966,44 @@ def get_package_context(traceback, context=3):
from there.
"""
def make_stack(tb, stack=None):
"""Tracebacks come out of the system in caller -> callee order. Return
an array in callee -> caller order so we can traverse it."""
if stack is None:
stack = []
if tb is not None:
make_stack(tb.tb_next, stack)
stack.append(tb)
return stack
stack = make_stack(traceback)
for tb in stack:
frame = tb.tb_frame
if 'self' in frame.f_locals:
# Find the first proper subclass of PackageBase.
obj = frame.f_locals['self']
if isinstance(obj, spack.package.PackageBase):
for filename, lineno, function, text in reversed(traceback):
if 'package.py' in filename or 'spack/build_systems' in filename:
if function not in ('run_test', '_run_test_helper'):
# We are in a package and not one of the listed methods
# We exclude these methods because we expect errors in them to
# be the result of user tests failing, and we show the tests
# instead.
break
# Package files have a line added at import time, so we adjust the lineno
# when we are getting context from a package file instead of a base class
adjust = 1 if spack.paths.is_package_file(filename) else 0
lineno = lineno - adjust
# We found obj, the Package implementation we care about.
# Point out the location in the install method where we failed.
lines = [
'{0}:{1:d}, in {2}:'.format(
inspect.getfile(frame.f_code),
frame.f_lineno - 1, # subtract 1 because f_lineno is 0-indexed
frame.f_code.co_name
filename,
lineno,
function
)
]
# Build a message showing context in the install method.
sourcelines, start = inspect.getsourcelines(frame)
# Calculate lineno of the error relative to the start of the function.
# Subtract 1 because f_lineno is 0-indexed.
fun_lineno = frame.f_lineno - start - 1
start_ctx = max(0, fun_lineno - context)
sourcelines = sourcelines[start_ctx:fun_lineno + context + 1]
# Adjust for import mangling of package files.
with open(filename, 'r') as f:
sourcelines = f.readlines()
start = max(0, lineno - context - 1)
sourcelines = sourcelines[start:lineno + context + 1]
for i, line in enumerate(sourcelines):
is_error = start_ctx + i == fun_lineno
i = i + adjust # adjusting for import munging again
is_error = start + i == lineno
mark = '>> ' if is_error else ' '
# Add start to get lineno relative to start of file, not function.
marked = ' {0}{1:-6d}{2}'.format(
mark, start + start_ctx + i, line.rstrip())
mark, start + i, line.rstrip())
if is_error:
marked = colorize('@R{%s}' % cescape(marked))
lines.append(marked)
@@ -984,14 +1057,15 @@ class ChildError(InstallError):
# context instead of Python context.
build_errors = [('spack.util.executable', 'ProcessError')]
def __init__(self, msg, module, classname, traceback_string, build_log,
context):
def __init__(self, msg, module, classname, traceback_string, context,
build_log, test_log):
super(ChildError, self).__init__(msg)
self.module = module
self.name = classname
self.traceback = traceback_string
self.build_log = build_log
self.context = context
self.build_log = build_log
self.test_log = test_log
@property
def long_message(self):
@@ -1000,21 +1074,12 @@ def long_message(self):
if (self.module, self.name) in ChildError.build_errors:
# The error happened in some external executed process. Show
# the build log with errors or warnings highlighted.
# the log with errors or warnings highlighted.
if self.build_log and os.path.exists(self.build_log):
errors, warnings = parse_log_events(self.build_log)
nerr = len(errors)
nwar = len(warnings)
if nerr > 0:
# If errors are found, only display errors
out.write(
"\n%s found in build log:\n" % plural(nerr, 'error'))
out.write(make_log_context(errors))
elif nwar > 0:
# If no errors are found but warnings are, display warnings
out.write(
"\n%s found in build log:\n" % plural(nwar, 'warning'))
out.write(make_log_context(warnings))
write_log_summary(out, 'build', self.build_log)
if self.test_log and os.path.exists(self.test_log):
write_log_summary(out, 'test', self.test_log)
else:
# The error happened in in the Python code, so try to show
@@ -1031,6 +1096,10 @@ def long_message(self):
out.write('See build log for details:\n')
out.write(' %s\n' % self.build_log)
if self.test_log and os.path.exists(self.test_log):
out.write('See test log for details:\n')
out.write(' %s\n' % self.test_log)
return out.getvalue()
def __str__(self):
@@ -1047,10 +1116,50 @@ def __reduce__(self):
self.module,
self.name,
self.traceback,
self.context,
self.build_log,
self.context)
self.test_log)
def _make_child_error(msg, module, name, traceback, build_log, context):
def _make_child_error(msg, module, name, traceback, context,
build_log, test_log):
"""Used by __reduce__ in ChildError to reconstruct pickled errors."""
return ChildError(msg, module, name, traceback, build_log, context)
return ChildError(msg, module, name, traceback, context,
build_log, test_log)
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)
def write_log_summary(out, log_type, log, last=None):
errors, warnings = parse_log_events(log)
nerr = len(errors)
nwar = len(warnings)
if nerr > 0:
if last and nerr > last:
errors = errors[-last:]
nerr = last
# If errors are found, only display errors
out.write(
"\n%s found in %s log:\n" %
(plural(nerr, 'error'), log_type))
out.write(make_log_context(errors))
elif nwar > 0:
if last and nwar > last:
warnings = warnings[-last:]
nwar = last
# If no errors are found but warnings are, display warnings
out.write(
"\n%s found in %s log:\n" %
(plural(nwar, 'warning'), log_type))
out.write(make_log_context(warnings))

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,107 @@ 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.abspath(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.abspath(os.path.join(r, f))
for r, ds, fs in os.walk('.') 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 +206,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 +258,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 +302,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,
@@ -212,13 +308,21 @@ def flags_to_build_system_args(self, flags):
self.cmake_flag_args.append(libs_string.format(lang,
libs_flags))
@property
def build_dirname(self):
"""Returns the directory name to use when building the package
:return: name of the subdirectory for building the package
"""
return 'spack-build-%s' % self.spec.dag_hash(7)
@property
def build_directory(self):
"""Returns the directory to use when building the package
:return: directory where to build the package
"""
return os.path.join(self.stage.path, 'spack-build')
return os.path.join(self.stage.path, self.build_dirname)
def cmake_args(self):
"""Produces a list containing all the arguments that must be passed to
@@ -235,9 +339,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

@@ -12,40 +12,71 @@
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',
'80',
]
# 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
# https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features
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:', when='cuda_arch=35')
depends_on('cuda@6.5:', 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')
depends_on('cuda@11.0:', when='cuda_arch=80')
# There are at least three cases to be aware of for compiler conflicts
# 1. Linux x86_64
@@ -62,12 +93,15 @@ def cuda_flags(arch_list):
conflicts('%gcc@7:', when='+cuda ^cuda@:9.1' + arch_platform)
conflicts('%gcc@8:', when='+cuda ^cuda@:10.0.130' + arch_platform)
conflicts('%gcc@9:', when='+cuda ^cuda@:10.2.89' + arch_platform)
conflicts('%gcc@:4,10:', when='+cuda ^cuda@:11.0.2' + arch_platform)
conflicts('%pgi@:14.8', when='+cuda ^cuda@:7.0.27' + arch_platform)
conflicts('%pgi@:15.3,15.5:', when='+cuda ^cuda@7.5' + arch_platform)
conflicts('%pgi@:16.2,16.0:16.3', when='+cuda ^cuda@8' + arch_platform)
conflicts('%pgi@:15,18:', when='+cuda ^cuda@9.0:9.1' + arch_platform)
conflicts('%pgi@:16', when='+cuda ^cuda@9.2.88:10' + arch_platform)
conflicts('%pgi@:17', when='+cuda ^cuda@10.2.89' + arch_platform)
conflicts('%pgi@:16,19:', when='+cuda ^cuda@9.2.88:10' + arch_platform)
conflicts('%pgi@:17,20:',
when='+cuda ^cuda@10.1.105:10.2.89' + arch_platform)
conflicts('%pgi@:17,20.2:', when='+cuda ^cuda@11.0.2' + arch_platform)
conflicts('%clang@:3.4', when='+cuda ^cuda@:7.5' + arch_platform)
conflicts('%clang@:3.7,4:',
when='+cuda ^cuda@8.0:9.0' + arch_platform)
@@ -78,7 +112,8 @@ def cuda_flags(arch_list):
conflicts('%clang@:3.7,7.1:', when='+cuda ^cuda@10.1.105' + arch_platform)
conflicts('%clang@:3.7,8.1:',
when='+cuda ^cuda@10.1.105:10.1.243' + arch_platform)
conflicts('%clang@:3.2,9.0:', when='+cuda ^cuda@10.2.89' + arch_platform)
conflicts('%clang@:3.2,9:', when='+cuda ^cuda@10.2.89' + arch_platform)
conflicts('%clang@:5,10:', when='+cuda ^cuda@11.0.2' + arch_platform)
# x86_64 vs. ppc64le differ according to NVidia docs
# Linux ppc64le compiler conflicts from Table from the docs below:
@@ -93,6 +128,8 @@ def cuda_flags(arch_list):
conflicts('%gcc@6:', when='+cuda ^cuda@:9' + arch_platform)
conflicts('%gcc@8:', when='+cuda ^cuda@:10.0.130' + arch_platform)
conflicts('%gcc@9:', when='+cuda ^cuda@:10.1.243' + arch_platform)
# officially, CUDA 11.0.2 only supports the system GCC 8.3 on ppc64le
conflicts('%gcc@:4,10:', when='+cuda ^cuda@:11.0.2' + arch_platform)
conflicts('%pgi', when='+cuda ^cuda@:8' + arch_platform)
conflicts('%pgi@:16', when='+cuda ^cuda@:9.1.185' + arch_platform)
conflicts('%pgi@:17', when='+cuda ^cuda@:10' + arch_platform)
@@ -102,6 +139,7 @@ def cuda_flags(arch_list):
conflicts('%clang@7:', when='+cuda ^cuda@10.0.130' + arch_platform)
conflicts('%clang@7.1:', when='+cuda ^cuda@:10.1.105' + arch_platform)
conflicts('%clang@8.1:', when='+cuda ^cuda@:10.2.89' + arch_platform)
conflicts('%clang@:5,10.0:', when='+cuda ^cuda@11.0.2' + arch_platform)
# Intel is mostly relevant for x86_64 Linux, even though it also
# exists for Mac OS X. No information prior to CUDA 3.2 or Intel 11.1
@@ -114,12 +152,14 @@ 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')
conflicts('%intel@19.1:', when='+cuda ^cuda@:10.1')
conflicts('%intel@19.2:', when='+cuda ^cuda@:11.0.2')
# 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@:12,17:', when='+cuda ^cuda@:11.0.2')
# Mac OS X
# platform = ' platform=darwin'
@@ -130,18 +170,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.2:')
# 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

@@ -1017,6 +1017,15 @@ def setup_run_environment(self, env):
env.extend(EnvironmentModifications.from_sourcing_file(f, *args))
if self.spec.name in ('intel', 'intel-parallel-studio'):
# this package provides compilers
# TODO: fix check above when compilers are dependencies
env.set('CC', self.prefix.bin.icc)
env.set('CXX', self.prefix.bin.icpc)
env.set('FC', self.prefix.bin.ifort)
env.set('F77', self.prefix.bin.ifort)
env.set('F90', self.prefix.bin.ifort)
def setup_dependent_build_environment(self, env, dependent_spec):
# NB: This function is overwritten by 'mpi' provider packages:
#
@@ -1073,6 +1082,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

@@ -0,0 +1,55 @@
# 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 llnl.util.filesystem import install_tree, working_dir
from spack.directives import depends_on
from spack.package import PackageBase, run_after
from spack.util.executable import which
class MavenPackage(PackageBase):
"""Specialized class for packages that are built using the
Maven build system. See https://maven.apache.org/index.html
for more information.
This class provides the following phases that can be overridden:
* build
* install
"""
# Default phases
phases = ['build', 'install']
# To be used in UI queries that require to know which
# build-system class we are using
build_system_class = 'MavenPackage'
depends_on('java', type=('build', 'run'))
depends_on('maven', type='build')
@property
def build_directory(self):
"""The directory containing the ``pom.xml`` file."""
return self.stage.source_path
def build(self, spec, prefix):
"""Compile code and package into a JAR file."""
with working_dir(self.build_directory):
mvn = which('mvn')
if self.run_tests:
mvn('verify')
else:
mvn('package', '-DskipTests')
def install(self, spec, prefix):
"""Copy to installation prefix."""
with working_dir(self.build_directory):
install_tree('.', prefix)
# Check that self.prefix is there after installation
run_after('install')(PackageBase.sanity_check_prefix)

View File

@@ -91,7 +91,7 @@ def configure(self, spec, prefix):
build_system_class = 'PythonPackage'
#: Callback names for build-time test
build_time_test_callbacks = ['test']
build_time_test_callbacks = ['build_test']
#: Callback names for install-time test
install_time_test_callbacks = ['import_module_test']
@@ -192,6 +192,10 @@ def build_scripts(self, spec, prefix):
self.setup_py('build_scripts', *args)
def build_scripts_args(self, spec, prefix):
"""Arguments to pass to build_scripts."""
return []
def clean(self, spec, prefix):
"""Clean up temporary files from 'build' command."""
args = self.clean_args(spec, prefix)
@@ -357,7 +361,7 @@ def check_args(self, spec, prefix):
# Testing
def test(self):
def build_test(self):
"""Run unit tests after in-place build.
These tests are only run if the package actually has a 'test' command.

View File

@@ -0,0 +1,59 @@
# 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 glob
import inspect
from spack.directives import depends_on, extends
from spack.package import PackageBase, run_after
class RubyPackage(PackageBase):
"""Specialized class for building Ruby gems.
This class provides two phases that can be overridden if required:
#. :py:meth:`~.RubyPackage.build`
#. :py:meth:`~.RubyPackage.install`
"""
#: Phases of a Ruby package
phases = ['build', 'install']
#: This attribute is used in UI queries that need to know the build
#: system base class
build_system_class = 'RubyPackage'
extends('ruby')
depends_on('ruby', type=('build', 'run'))
def build(self, spec, prefix):
"""Build a Ruby gem."""
# ruby-rake provides both rake.gemspec and Rakefile, but only
# rake.gemspec can be built without an existing rake installation
gemspecs = glob.glob('*.gemspec')
rakefiles = glob.glob('Rakefile')
if gemspecs:
inspect.getmodule(self).gem('build', '--norc', gemspecs[0])
elif rakefiles:
jobs = inspect.getmodule(self).make_jobs
inspect.getmodule(self).rake('package', '-j{0}'.format(jobs))
else:
# Some Ruby packages only ship `*.gem` files, so nothing to build
pass
def install(self, spec, prefix):
"""Install a Ruby gem.
The ruby package sets ``GEM_HOME`` to tell gem where to install to."""
gems = glob.glob('*.gem')
if gems:
inspect.getmodule(self).gem(
'install', '--norc', '--ignore-dependencies', gems[0])
# Check that self.prefix is there after installation
run_after('install')(PackageBase.sanity_check_prefix)

View File

@@ -33,7 +33,7 @@ class SConsPackage(PackageBase):
build_system_class = 'SConsPackage'
#: Callback names for build-time test
build_time_test_callbacks = ['test']
build_time_test_callbacks = ['build_test']
depends_on('scons', type='build')
@@ -59,7 +59,7 @@ def install(self, spec, prefix):
# Testing
def test(self):
def build_test(self):
"""Run unit tests after build.
By default, does nothing. Override this if you want to

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

@@ -47,10 +47,10 @@ class WafPackage(PackageBase):
build_system_class = 'WafPackage'
# Callback names for build-time test
build_time_test_callbacks = ['test']
build_time_test_callbacks = ['build_test']
# Callback names for install-time test
install_time_test_callbacks = ['installtest']
install_time_test_callbacks = ['install_test']
# Much like AutotoolsPackage does not require automake and autoconf
# to build, WafPackage does not require waf to build. It only requires
@@ -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."""
@@ -105,7 +106,7 @@ def install_args(self):
# Testing
def test(self):
def build_test(self):
"""Run unit tests after build.
By default, does nothing. Override this if you want to
@@ -115,7 +116,7 @@ def test(self):
run_after('build')(PackageBase._run_default_build_time_test_callbacks)
def installtest(self):
def install_test(self):
"""Run unit tests after install.
By default, does nothing. Override this if you want to

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

@@ -42,7 +42,6 @@ def _fetch_cache():
building the same package different ways or multiple times.
"""
path = spack.config.get('config:source_cache')
if not path:
path = os.path.join(spack.paths.var_path, "cache")
path = spack.util.path.canonicalize_path(path)
@@ -51,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."""
@@ -85,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

@@ -4,9 +4,11 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import base64
import copy
import datetime
import json
import os
import re
import shutil
import tempfile
import zlib
@@ -24,18 +26,21 @@
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
import spack.main
import spack.repo
from spack.spec import Spec
import spack.util.spack_yaml as syaml
import spack.util.web as web_util
spack_gpg = SpackCommand('gpg')
spack_compiler = SpackCommand('compiler')
JOB_RETRY_CONDITIONS = [
'always',
]
spack_gpg = spack.main.SpackCommand('gpg')
spack_compiler = spack.main.SpackCommand('compiler')
class TemporaryDirectory(object):
@@ -342,25 +347,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 +384,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 +396,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 +404,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 = {
@@ -419,20 +423,76 @@ def spec_matches(spec, match_string):
return spec.satisfies(match_string)
def find_matching_config(spec, ci_mappings):
def copy_attributes(attrs_list, src_dict, dest_dict):
for runner_attr in attrs_list:
if runner_attr in src_dict:
if runner_attr in dest_dict and runner_attr == 'tags':
# For 'tags', we combine the lists of tags, while
# avoiding duplicates
for tag in src_dict[runner_attr]:
if tag not in dest_dict[runner_attr]:
dest_dict[runner_attr].append(tag)
elif runner_attr in dest_dict and runner_attr == 'variables':
# For 'variables', we merge the dictionaries. Any conflicts
# (i.e. 'runner-attributes' has same variable key as the
# higher level) we resolve by keeping the more specific
# 'runner-attributes' version.
for src_key, src_val in src_dict[runner_attr].items():
dest_dict[runner_attr][src_key] = copy.deepcopy(
src_dict[runner_attr][src_key])
else:
dest_dict[runner_attr] = copy.deepcopy(src_dict[runner_attr])
def find_matching_config(spec, gitlab_ci):
runner_attributes = {}
overridable_attrs = [
'image',
'tags',
'variables',
'before_script',
'script',
'after_script',
]
copy_attributes(overridable_attrs, gitlab_ci, runner_attributes)
ci_mappings = gitlab_ci['mappings']
for ci_mapping in ci_mappings:
for match_string in ci_mapping['match']:
if spec_matches(spec, match_string):
return ci_mapping['runner-attributes']
return None
if 'runner-attributes' in ci_mapping:
copy_attributes(overridable_attrs,
ci_mapping['runner-attributes'],
runner_attributes)
return runner_attributes
else:
return None
return runner_attributes
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):
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():
@@ -444,7 +504,6 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
tty.die('Environment yaml does not have "gitlab-ci" section')
gitlab_ci = yaml_root['gitlab-ci']
ci_mappings = gitlab_ci['mappings']
final_job_config = None
if 'final-stage-rebuild-index' in gitlab_ci:
@@ -466,22 +525,9 @@ 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')
# Make sure we use a custom spack if necessary
before_script = None
after_script = None
if custom_spack_repo:
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',
'. "./spack/share/spack/setup-env.sh"',
]
after_script = [
'rm -rf "./spack"'
]
is_pr_pipeline = (
os.environ.get('SPACK_IS_PR_PIPELINE', '').lower() == 'true'
)
ci_mirrors = yaml_root['mirrors']
mirror_urls = [url for url in ci_mirrors.values()]
@@ -538,6 +584,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']
@@ -556,7 +605,7 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
release_spec = root_spec[pkg_name]
runner_attribs = find_matching_config(
release_spec, ci_mappings)
release_spec, gitlab_ci)
if not runner_attribs:
tty.warn('No match found for {0}, skipping it'.format(
@@ -580,16 +629,27 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
except AttributeError:
image_name = build_image
job_script = [
'spack env activate --without-view .',
'spack ci rebuild',
]
if 'script' in runner_attribs:
job_script = [s for s in runner_attribs['script']]
before_script = None
if 'before_script' in runner_attribs:
before_script = [
s for s in runner_attribs['before_script']
]
after_script = None
if 'after_script' in runner_attribs:
after_script = [s for s in runner_attribs['after_script']]
osname = str(release_spec.architecture)
job_name = get_job_name(phase_name, strip_compilers,
release_spec, osname, build_group)
debug_flag = ''
if 'enable-debug-messages' in gitlab_ci:
debug_flag = '-d '
job_scripts = ['spack {0}ci rebuild'.format(debug_flag)]
compiler_action = 'NONE'
if len(phases) > 1:
compiler_action = 'FIND_ANY'
@@ -601,25 +661,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 +697,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 +730,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,20 +740,34 @@ 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,
'variables': variables,
'script': job_scripts,
'script': job_script,
'tags': tags,
'artifacts': {
'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 +788,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 +801,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 +821,42 @@ def generate_gitlab_ci_yaml(env, print_summary, output_file,
output_object['stages'] = stage_names
# Capture the version of spack used to generate the pipeline, transform it
# into a value that can be passed to "git checkout", and save it in a
# global yaml variable
spack_version = spack.main.get_version()
version_to_clone = None
v_match = re.match(r"^\d+\.\d+\.\d+$", spack_version)
if v_match:
version_to_clone = 'v{0}'.format(v_match.group(0))
else:
v_match = re.match(r"^[^-]+-[^-]+-([a-f\d]+)$", spack_version)
if v_match:
version_to_clone = v_match.group(1)
else:
version_to_clone = spack_version
output_object['variables'] = {
'SPACK_VERSION': spack_version,
'SPACK_CHECKOUT_VERSION': version_to_clone,
}
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 +1081,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))
@@ -961,17 +1096,10 @@ def copy_stage_logs_to_artifacts(job_spec, job_log_dir):
tty.debug('job package: {0}'.format(job_pkg))
stage_dir = job_pkg.stage.path
tty.debug('stage dir: {0}'.format(stage_dir))
build_env_src = os.path.join(stage_dir, 'spack-build-env.txt')
build_out_src = os.path.join(stage_dir, 'spack-build-out.txt')
build_env_dst = os.path.join(
job_log_dir, 'spack-build-env.txt')
build_out_dst = os.path.join(
job_log_dir, 'spack-build-out.txt')
tty.debug('Copying logs to artifacts:')
tty.debug(' 1: {0} -> {1}'.format(
build_env_src, build_env_dst))
shutil.copyfile(build_env_src, build_env_dst)
tty.debug(' 2: {0} -> {1}'.format(
tty.debug('Copying build log ({0}) to artifacts ({1})'.format(
build_out_src, build_out_dst))
shutil.copyfile(build_out_src, build_out_dst)
except Exception as inst:

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)

Some files were not shown because too many files have changed in this diff Show More