Commit graph

15370 commits

Author SHA1 Message Date
Adam J. Stewart
53db1eafb9
Fix installation permissions on BLIS and libflame libs (#12919)
* Fix installation permissions on BLIS and libflame libs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Specifics:

- Add microarchitectures.json with descriptions of architectures

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

There are two requirements for file references:

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

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

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

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

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

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

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

c22a145 added automatic detection and RPATHing of compiler libraries
to Spack builds. However, in cases where the parsing/detection logic
fails this was terminating the build. This makes the compiler library
detection "best-effort" and reports an issue when the detection fails
rather than terminating the build.
2019-09-16 19:09:28 -07:00
Adam J. Stewart
5eac8130b3 Quote shell variable values (#12759)
This updates logic which sets shell variables to quote the values,
which is necessary when the value contains a space (e.g. PATH).
2019-09-16 11:10:36 -07:00
Adam J. Stewart
14ef0c238e
Add py-pycbc package (#12823) 2019-09-16 13:10:02 -05:00
Adam J. Stewart
269f34c310
Add py-astropy 2.0.14 (#12816) 2019-09-16 13:09:30 -05:00
Adam J. Stewart
98eb8ef0af
Add py-beautifulsoup4 4.8.0 (#12815) 2019-09-16 13:08:36 -05:00
Adam J. Stewart
94291ebd1a
Add py-mpld3 package (#12822) 2019-09-16 13:08:17 -05:00
Adam J. Stewart
a08a7da413
Add py-asdf package (#12817) 2019-09-16 13:07:48 -05:00