v0.14.0
v0.14.0 (2020-02-23)
v0.14.0 is a major feature release, with 3 highlighted features:
-
Distributed builds. Multiple Spack instances will now coordinate properly with each other through locks. This works on a single node (where you've called
spackseveral times) or across multiple nodes with a shared filesystem. For example, with SLURM, you could buildtrilinosand its dependencies on 2 24-core nodes, with 3 Spack instances per node and 8 build jobs per instance, withsrun -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. -
Build pipelines. You can also build in parallel through Gitlab CI. Simply create a Spack environment and push it to Gitlab to build on Gitlab runners. Pipeline support is now integreated into a single
spack cicommand, so setting it up is easier than ever. See the Pipelines section in the docs. -
Container builds. The new
spack containerizecommand 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 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 cicommand to manage CI pipelines (#12854) - Generate container recipes from environments:
spack containerize(#14202) spack loadnow 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)
spack commands --format=bashauto-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 testsends args topytest, 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 buildcachecommand (#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 -pnow 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 loadaccepts--only package,--only dependencies(#14062, #14628)spack commands --format=bash(#14393)spack commands --update-completion(#14607)spack install --with-cachehas new option:--no-check-signature(#11107)spack testnow has--list,--list-long, and--list-names(#14319)spack install --help-cdashmoves CDash help out of the main help (#13704)
Deprecations
spack release-jobshas been rolled intospack cispack bootstrapwill be removed in a future version, as it is no longer needed to set up modules (seespack loadimprovements above)
Documentation
- New section on building container images with Spack (see docs)
- New section on using
spack cicommand to build pipelines (see docs) - Document how to add conditional dependencies (#14694)
- Document how to use Spack to replace Homebrew/Conda (#13083, see docs)
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
octavecompiler wrapper usage (#14726) - Enforce that packages in
builtinaren't missing dependencies (#13949)