summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-09-21environment-modules: add version 4.3.1 (#12893)Xavier Delaruelle1-1/+2
2019-09-21externals: avoid importing requests in jsonschemaTodd Gamblin1-4/+1
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-20czmq package: add autoreconf stage (#12846)Paul1-0/+4
2019-09-20charliecloud package: add version 0.11 and test dependency (#12861)Jordan Ogas1-0/+4
2019-09-20New package: py-gast (#12874)Sinan1-0/+18
2019-09-20intel-tbb: fix typo.t-karatsu1-1/+1
2019-09-20py-protobuf package: fix import error for Python 2.x (#12873)Sinan1-0/+8
2019-09-20Add --known-targets to bash completion for arch command (#12887)Glenn Johnson1-1/+1
This PR adds the new --known-targets flag to the `spack arch` command.
2019-09-20Fix how 'gpg --list-secret-keys ...' output is parsedScott Wittenburg2-6/+77
2019-09-20targets: add mic_knl target to microarchitectures.jsonGregory Becker1-0/+37
- 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-20targets: adjust packages to use new specific targets semanticsMassimiliano Culpo43-68/+80
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-20targets: Spack targets can now be fine-grained microarchitecturesMassimiliano Culpo50-540/+3040
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-20targets: first pass at target detection for linuxGregory Becker12-17/+350
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-19Put back the use of otool and install_name_tool when running on macOS. Only ↵Patrick Gartung4-68/+112
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-19CLAW Compiler: added version 2.0.1 (#12878)Valentin Clement (バレンタイン クレメン)1-0/+1
2019-09-18Ignore git *.orig files and emacs backup filesGregory Becker1-1/+2
2019-09-18blis: fix darwin install name (#12869)Adam J. Stewart1-1/+7
2019-09-18googletest: fix darwin install name (#12871)Adam J. Stewart1-0/+6
2019-09-18libkml: fix darwin install name (#12872)Adam J. Stewart1-0/+6
2019-09-18wcslib: fix darwin install name (#12868)Adam J. Stewart1-0/+6
2019-09-18diffutils: add missing libiconv dependency (#12866)Adam J. Stewart1-0/+2
2019-09-18Correcting branch used for FleCSPH (#12865)Julien Loiseau2-12/+1
2019-09-18Add SQLite 3.29.0 (#12862)Adam J. Stewart1-0/+2
2019-09-18GDAL: Add support for MKL driver (#12837)Adam J. Stewart1-5/+12
2019-09-18Add libkml package (#12836)Adam J. Stewart1-0/+59
* Add libkml package * googletest needs to be linked to RPATH
2019-09-18libunistring: add missing dependency on libiconv (#12863)Adam J. Stewart1-0/+3
2019-09-18Add minizip package (#12835)Adam J. Stewart1-0/+23
2019-09-18Add uriparser package (#12834)Adam J. Stewart1-0/+38
* Add uriparser package * googletest needs to be linked to RPATH
2019-09-18Update buildcache creation and installation to allow mach-o binary ↵Patrick Gartung5-140/+224
relocation using py-machotools on linux or macos. (#12858) Update py-machotools dependencies and versions.
2019-09-17add a version (#12856)Sinan1-0/+2
2019-09-17Support yaml paths anywhere specs are handled on CLI (#12561)Scott Wittenburg4-19/+318
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-17Boost: add libs property (#12849)Greg Becker1-0/+14
2019-09-17fix typo in version number (#12855)Sinan1-1/+1
2019-09-17implicit rpaths filtering (#12789)Peter Scheibel14-52/+191
* 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-17cmake: add v3.15.{2,3} (#12847)Christoph Junghans1-0/+2
2019-09-17cryptsetup package: dont vendor libuuid in util-linux (#12839)George Hartzell2-2/+10
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-17Fix generic body during package creation (#12804)Adam J. Stewart1-14/+14
Fixes incomplete change in #11981 Use the proper variable (`body_def`) during package creation for package subclasses.
2019-09-16Allow build to proceed with failed compiler lib detection (#12756)Adam J. Stewart1-0/+4
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-16Quote shell variable values (#12759)Adam J. Stewart1-2/+2
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-16Add py-pycbc package (#12823)Adam J. Stewart1-0/+40
2019-09-16Add py-astropy 2.0.14 (#12816)Adam J. Stewart1-14/+42
2019-09-16Add py-beautifulsoup4 4.8.0 (#12815)Adam J. Stewart1-1/+3
2019-09-16Add py-mpld3 package (#12822)Adam J. Stewart1-0/+21
2019-09-16Add py-asdf package (#12817)Adam J. Stewart1-0/+26
2019-09-16Add py-bintrees package (#12818)Adam J. Stewart1-0/+18
2019-09-16Add py-lscsoft-glue package (#12821)Adam J. Stewart1-0/+23
2019-09-16Add py-jplephem package (#12819)Adam J. Stewart1-0/+19
2019-09-16Add py-ligo-segments package (#12820)Adam J. Stewart1-0/+18
2019-09-16Add py-pyopenssl package (#12824)Adam J. Stewart1-0/+24
2019-09-16Add py-semantic-version package (#12825)Adam J. Stewart1-0/+20