32 KiB
v0.16.0 (2020-11-18)
v0.16.0 is a major feature release.
Major features in this release
-
New concretizer (experimental) Our new backtracking concretizer is now in Spack as an experimental feature. You will need to install
clingo@master+pythonand setconcretizer: clingoinconfig.yamlto use it. The original concretizer is not exhaustive and is not guaranteed to find a solution if one exists. We encourage you to use the new concretizer and to report any bugs you find with it. We anticipate making the new concretizer the default and including all required dependencies for it in Spackv0.17. For more details, see #19501. -
spack test (experimental) Users can add
test()methods to their packages to run smoke tests on installations with the newspack testcommand (the oldspack testis nowspack unit-test).spack testis environment-aware, so you canspack installan environment andspack test runsmoke tests on all of its packages. Historical test logs can be perused withspack test results. Generic smoke tests for MPI implementations, C, C++, and Fortran compilers as well as specific smoke tests for 18 packages. This is marked experimental because the test API (self.run_test()) is likely to be change, but we encourage users to upstream tests, and we will maintain and refactor any that are added to mainline packages (#15702). -
spack develop New
spack developcommand allows you to develop several packages at once within a Spack environment. Runningspack develop foo@v1andspack develop bar@v2will check out specific versions offooandbarinto subdirectories, which you can then build incrementally withspack install(#15256). -
More parallelism Spack previously installed the dependencies of a single spec in parallel. Entire environments can now be installed in parallel, greatly accelerating builds of large environments. get parallelism from individual specs. Spack now parallelizes entire environment builds (#18131).
-
Customizable base images for spack containerize
spack containerizepreviously only output aDockerfilebased onubuntu. You may now specify any base image of your choosing (#15028). -
more external finding
spack external findwas added inv0.15, but onlycmakehad support.spack external findcan now findbison,cuda,findutils,flex,git,lustrem4,mpich,mvapich2,ncurses,openmpi,perl,spectrum-mpi,tar, andtexinfoon your system and add them automatically topackages.yaml. -
Support aocc, nvhpc, and oneapi compilers We are aggressively pursuing support for the newest vendor compilers, especially those for the U.S. exascale and pre-exascale systems. Compiler classes and auto-detection for
aocc,nvhpc,oneapiare now in Spack (#19345, #19294, #19330).
Additional new features of note
- New
spack markcommand can be used to designate packages as explicitly installed, so thatspack gcwill not garbage-collect them (#16662). install_treecan be customized with Spack's projection format (#18341)sbangnow lives in theinstall_treeso that all users can access it (#11598)cshandtcshusers no longer need to setSPACK_ROOTbefore sourcingsetup-env.csh(#18225)- Spec syntax now supports
variant=*syntax for finding any package that has a particular variant (#19381). - Spack respects
SPACK_GNUPGHOMEvariable for custom GPG directories (#17139) - Spack now recognizes Graviton chips
Major refactors
- Use spawn instead of fork on Python >= 3.8 on macOS (#18205)
- Use indexes for public build caches (#19101, #19117, #19132, #19141, #19209)
sbangis an external package now (https://github.com/spack/sbang, #19582)archspecis an external package now (https://github.com/archspec/archspec, #19600)
Deprecations and Removals
spack bootstrapwas deprecated in v0.14.0, and has now been removed.spack setupis deprecated as of v0.16.0.- What was
spack testis now calledspack unit-test.spack testis now the smoke testing feature in (2) above.
Bugfixes
Some of the most notable bugfixes in this release include:
- Better warning messages for deprecated syntax in
packages.yaml(#18013) buildcache list --allarchnow works properly (#17827)- Many fixes and tests for buildcaches and binary relcoation (#15687, *#17455, #17418, #17455, #15687, #18110)
Package Improvements
Spack now has 5050 total packages, 720 of which were added since v0.15.
- ROCm packages (
hip,aomp, more) added by AMD (#19957, #19832, others) - Many improvements for ARM support
llvm-flang,flang, andf18removed, asllvmhas realflangsupport since Flang was merged to LLVM mainline- Emerging support for
spack external findandspack testin packages.
Infrastructure
- Major infrastructure improvements to pipelines on
gitlab.spack.io - Support for testing PRs from forks (#19248) is being enabled for all
forks to enable rolling, up-to-date binary builds on
develop
v0.15.4 (2020-08-12)
This release contains one feature addition:
- Users can set
SPACK_GNUPGHOMEto override Spack's GPG path (#17139)
Several bugfixes for CUDA, binary packaging, and spack -V:
- CUDA package's
.libsmethod searches forlibcudartinstead oflibcuda(#18000) - Don't set
CUDAHOSTCXXin environments that contain CUDA (#17826) buildcache create:NoOverwriteExceptionis a warning, not an error (#17832)- Fix
spack buildcache list --allarch(#17884) spack -Vworks withreleases/latesttag 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 listdoes 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 installmessage 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
-
Cray support Spack will now work properly on Cray "Cluster" systems (non XC systems) and after a
module purgecommand on Cray systems. See #12989 -
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
-
New config subcommands This release adds
spack config addandspack config removecommands to add to and remove from yaml configuration files from the CLI. See #13920 -
Environment activation Anonymous environments are no longer automatically activated in the current working directory. To activate an environment from a
spack.yamlfile in the current directory, use thespack env activate .command. This removes a concern that users were too easily polluting their anonymous environments with accidental installations. See #17258 -
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
-
Finding external packages Spack packages can now support an API for finding external installations. This allows the
spack external findcommand 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 --firstoption to load first match (instead of prompting user) (#15622)- support the Cray cce compiler both new and classic versions (#17256, #12989)
spack dev-buildcommand:- supports stopping before a specified phase (#14699)
- supports automatically launching a shell in the build environment (#14887)
spack install --fail-fastallows 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 viewcommand: new support for a copy/relocate view type (#16480)- ci pipelines: see documentation for several improvements
spack mirror -acommand now supports excluding packages (#14154)spack buildcache createis 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 configurespack buildspack 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 installgracefully handles being backgrounded (#15723, #14682) - Spack uses
-isysteminstead of-Iin 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
developbranch run E4S CI pipeline (#16338) - New
spack debug reportcommand 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 installhandles foreground/background (#15723) - Major performance improvements for reading the package DB (#14693, #15777)
- No longer check for the old
index.yamldatabase file (#15298) - Properly activate environments with '-h' in the name (#15429)
- External packages have correct
.prefixin environments/views (#15475) - Improvements to computing env modifications from sourcing files (#15791)
- Bugfix on Cray machines when getting
TERMenv variable (#15630) - Avoid adding spurious
LMODenv 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 loadnow works with packages that have been renamed (#14348)- bugfix for
suite-sparseinstallation (#15326) - deduplicate identical suffixes added to module names (#14920)
- fix issues with
configure_argsduring 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:
-
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 integrated 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)
v0.13.4 (2020-02-07)
This release contains several bugfixes:
- bugfixes for invoking python in various environments (#14349, #14496, #14569)
- brought tab completion up to date (#14392)
- bugfix for removing extensions from views in order (#12961)
- bugfix for nondeterministic hashing for specs with externals (#14390)
v0.13.3 (2019-12-23)
This release contains more major performance improvements for Spack
environments, as well as bugfixes for mirrors and a python issue with
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 already added patches (#13908)
- avoid re-fetching already added patches (#13908)
- allow repeated invocations of
spack mirror createon the same dir (#13908) - bugfix for RHEL8 when
pythonis unavailable (#14252) - improve concretization performance in environments (#14190)
- improve installation performance in environments (#14263)
v0.13.2 (2019-12-04)
This release contains major performance improvements for Spack environments, as well as some bugfixes and minor changes.
- allow missing modules if they are blacklisted (#13540)
- speed up environment activation (#13557)
- mirror path works for unknown versions (#13626)
- environments: don't try to modify run-env if a spec is not installed (#13589)
- use semicolons instead of newlines in module/python command (#13904)
- verify.py: os.path.exists exception handling (#13656)
- Document use of the maintainers field (#13479)
- bugfix with config caching (#13755)
- hwloc: added 'master' version pointing at the HEAD of the master branch (#13734)
- config option to allow gpg warning suppression (#13744)
- fix for relative symlinks when relocating binary packages (#13727)
- allow binary relocation of strings in relative binaries (#13724)
v0.13.1 (2019-11-05)
This is a bugfix release on top of v0.13.0. Specific fixes include:
spack findnow displays variants and other spec constraints- bugfix: uninstall should find concrete specs by DAG hash (#13598)
- environments: make shell modifications partially unconditional (#13523)
- binary distribution: relocate text files properly in relative binaries (#13578)
- bugfix: fetch prefers to fetch local mirrors over remote resources (#13545)
- environments: only write when necessary (#13546)
- bugfix: spack.util.url.join() now handles absolute paths correctly (#13488)
- sbang: use utf-8 for encoding when patching (#13490)
- Specs with quoted flags containing spaces are parsed correctly (#13521)
- targets: print a warning message before downgrading (#13513)
- Travis CI: Test Python 3.8 (#13347)
- Documentation: Database.query methods share docstrings (#13515)
- cuda: fix conflict statements for x86-64 targets (#13472)
- cpu: fix clang flags for generic x86_64 (#13491)
- syaml_int type should use int.repr rather than str.repr (#13487)
- elpa: prefer 2016.05.004 until sse/avx/avx2 issues are resolved (#13530)
- trilinos: temporarily constrain netcdf@:4.7.1 (#13526)
v0.13.0 (2019-10-25)
v0.13.0 is our biggest Spack release yet, with many new major features.
From facility deployment to improved environments, microarchitecture
support, and auto-generated build farms, this release has features for all of
our users.
Spack grew by over 700 packages in the past year, and the project now has over 450 contributors. Thanks to all of you for making this release possible.
Major new core features
- Chaining: use dependencies from external "upstream" Spack instances
- Environments now behave more like virtualenv/conda
- Each env has a view: a directory with all packages symlinked in
- Activating an environment sets
PATH,LD_LIBRARY_PATH,CPATH,CMAKE_PREFIX_PATH,PKG_CONFIG_PATH, etc. to point to this view.
- Spack detects and builds specifically for your microarchitecture
- named, understandable targets like
skylake,broadwell,power9,zen2 - Spack knows which compilers can build for which architectures
- Packages can easily query support for features like
avx512andsse3 - You can pick a target with, e.g.
spack install foo target=icelake
- named, understandable targets like
- Spack stacks: combinatorial environments for facility deployment
- Environments can now build cartesian products of specs (with
matrix:) - Conditional syntax support to exclude certain builds from the stack
- Environments can now build cartesian products of specs (with
- Projections: ability to build easily navigable symlink trees environments
- Support no-source packages (BundlePackage) to aggregate related packages
- Extensions: users can write custom commands that live outside of Spack repo
- Support ARM and Fujitsu compilers
CI/build farm support
spack release-jobscan detectpackage.pychanges and generate.gitlab-ci.ymlto create binaries for an environment or stack in parallel (initial support -- will change in future release).- Results of build pipelines can be uploaded to a CDash server.
- Spack can now upload/fetch from package mirrors in Amazon S3
New commands/options
spack mirror create --alldownloads all package sources/resources/patchesspack dev-buildruns phases of the install pipeline on the working directoryspack deprecatepermanently symlinks an old, unwanted package to a new onespack verifychcecks that packages' files match what was originally installedspack find --jsonprintsJSONthat is easy to parse with, e.g.jqspack find --format FORMATallows you to flexibly print package metadataspack spec --jsonprints JSON version ofspec.yaml
Selected improvements
- Auto-build requested compilers if they do not exist
- Spack automatically adds
RPATHsneeded to make executables find compiler runtime libraries (e.g., path to newerlibstdc++inicpcorg++) - setup-env.sh is now compatible with Bash, Dash, and Zsh
- Spack now caps build jobs at min(16, ncores) by default
spack compiler findnow also throttles number of spawned processes- Spack now writes stage directories directly to
$TMPDIRinstead of symlinking stages within$spack/var/spack/cache. - Improved and more powerful
specformat strings - You can pass a
spec.yamlfile anywhere in the CLI you can type a spec. - Many improvements to binary caching
- Gradually supporting new features from Environment Modules v4
spack editrespectsVISUALenvironment variable- Simplified package syntax for specifying build/run environment modifications
- Numerous improvements to support for environments across Spack commands
- Concretization improvements
Documentation
- Multi-lingual documentation (Started a Japanese translation)
- Tutorial now has its own site at spack-tutorial.readthedocs.io
- This enables us to keep multiple versions of the tutorial around
Deprecations
- Spack no longer supports dotkit (LLNL's homegrown, now deprecated module tool)
spack build,spack configure,spack diydeprecated in favor ofspack dev-buildandspack install
Important package changes
- 3,563 total packages (718 added since 0.12.1)
- Spack now defaults to Python 3 (previously preferred 2.7 by default)
- Much improved ARM support thanks to Fugaku (RIKEN) and SNL teams
- Support new special versions: master, trunk, and head (in addition to develop)
- Better finding logic for libraries and headers
v0.12.1 (2018-11-13)
This is a minor bugfix release, with a minor fix in the tutorial and a flake8 fix.
Bugfixes
- Add
rback to regex strings in binary distribution - Fix gcc install version in the tutorial
v0.12.0 (2018-11-13)
Major new features
- Spack environments
spack.yamlandspack.lockfiles for tracking dependencies- Custom configurations via command line
- Better support for linking Python packages into view directories
- Packages have more control over compiler flags via flag handlers
- Better support for module file generation
- Better support for Intel compilers, Intel MPI, etc.
- Many performance improvements, improved startup time
License
- As of this release, all of Spack is permissively licensed under Apache-2.0 or MIT, at the user's option.
- Consents from over 300 contributors were obtained to make this relicense possible.
- Previous versions were distributed under the LGPL license, version 2.1.
New packages
Over 2,900 packages (800 added since last year)
Spack would not be possible without our community. Thanks to all of our contributors for the new features and packages in this release!
v0.11.2 (2018-02-07)
This release contains the following fixes:
- Fixes for
gfortran7 compiler detection (#7017) - Fixes for exceptions thrown during module generation (#7173)
v0.11.1 (2018-01-19)
This release contains bugfixes for compiler flag handling. There were issues in v0.11.0 that caused some packages to be built without proper optimization.
Fixes:
- Issue #6999: FFTW installed with Spack 0.11.0 gets built without optimisations
Includes:
- PR #6415: Fixes for flag handling behavior
- PR #6960: Fix type issues with setting flag handlers
880e319: Upstream fixes tolist_urlin various R packages
v0.11.0 (2018-01-17)
Spack v0.11.0 contains many improvements since v0.10.0. Below is a summary of the major features, broken down by category.
New packages
- Spack now has 2,178 packages (from 1,114 in v0.10.0)
- Many more Python packages (356) and R packages (471)
- 48 Exascale Proxy Apps (try
spack list -t proxy-app)
Core features for users
- Relocatable binary packages (
spack buildcache, #4854) - Spack now fully supports Python 3 (#3395)
- Packages can be tagged and searched by tags (#4786)
- Custom module file templates using Jinja (#3183)
spack bootstrapcommand now sets up a basic module environment (#3057)- Simplified and better organized help output (#3033)
- Improved, less redundant
spack installoutput (#5714, #5950) - Reworked
spack dependentsandspack dependenciescommands (#4478)
Major new features for packagers
- Multi-valued variants (#2386)
- New
conflicts()directive (#3125) - New dependency type:
testdependencies (#5132) - Packages can require their own patches on dependencies (#5476)
depends_on(..., patches=<patch list>)
- Build interface for passing linker information through Specs (#1875)
- Major packages that use blas/lapack now use this interface
- Flag handlers allow packages more control over compiler flags (#6415)
- Package subclasses support many more build systems:
- autotools, perl, qmake, scons, cmake, makefile, python, R, WAF
- package-level support for installing Intel HPC products (#4300)
spack blamecommand shows contributors to packages (#5522)spack createnow guesses many more build systems (#2707)- Better URL parsing to guess package version URLs (#2972)
- Much improved
PythonPackagesupport (#3367)
Core
- Much faster concretization (#5716, #5783)
- Improved output redirection (redirecting build output works properly #5084)
- Numerous improvements to internal structure and APIs
Tutorials & Documentation
- Many updates to documentation
- New tutorial material from SC17
- configuration
- build systems
- build interface
- working with module generation
- Documentation on docker workflows and best practices
Selected improvements and bug fixes
- No longer build Python eggs -- installations are plain directories (#3587)
- Improved filtering of system paths from build PATHs and RPATHs (#2083, #3910)
- Git submodules are properly handled on fetch (#3956)
- Can now set default number of parallel build jobs in
config.yaml - Improvements to
setup-env.csh(#4044) - Better default compiler discovery on Mac OS X (#3427)
- clang will automatically mix with gfortran
- Improved compiler detection on Cray machines (#3075)
- Better support for IBM XL compilers
- Better tab completion
- Resume gracefully after prematurely terminated partial installs (#4331)
- Better mesa support (#5170)
Spack would not be possible without our community. Thanks to all of our contributors for the new features and packages in this release!
v0.10.0 (2017-01-17)
This is Spack v0.10.0. With this release, we will start to push Spack
releases more regularly. This is the last Spack release without
automated package testing. With the next release, we will begin to run
package tests in addition to unit tests.
Spack has grown rapidly from 422 to
1,114 packages,
thanks to the hard work of over 100 contributors. Below is a condensed
version of all the changes since v0.9.1.
Packages
- Grew from 422 to 1,114 packages
- Includes major updates like X11, Qt
- Expanded HPC, R, and Python ecosystems
Core
- Major speed improvements for spack find and concretization
- Completely reworked architecture support
- Platforms can have front-end and back-end OS/target combinations
- Much better support for Cray and BG/Q cross-compiled environments
- Downloads are now cached locally
- Support installations in deeply nested directories: patch long shebangs using
sbang
Basic usage
- Easier global configuration via config.yaml
- customize install, stage, and cache locations
- Hierarchical configuration scopes: default, site, user
- Platform-specific scopes allow better per-platform defaults
- Ability to set
cflags,cxxflags,fflagson the command line - YAML-configurable support for both Lmod and tcl modules in mainline
spack installsupports --dirty option for emergencies
For developers
- Support multiple dependency types:
build,link, andrun - Added
Packagebase classes for custom build systemsAutotoolsPackage,CMakePackage,PythonPackage, etc.spack createnow guesses many more build systems
- Development environment integration with
spack setup - New interface to pass linking information via
specobjects- Currently used for
BLAS/LAPACK/SCALAPACKlibraries - Polymorphic virtual dependency attributes:
spec['blas'].blas_libs
- Currently used for
Testing & Documentation
- Unit tests run continuously on Travis CI for Mac and Linux
- Switched from
nosetopytestfor unit tests.- Unit tests take 1 minute now instead of 8
- Massively expanded documentation
- Docs are now hosted on spack.readthedocs.io