v0.18.0
版本发布时间: 2022-05-28 23:59:37
spack/spack最新发布版本:v0.21.3(2024-10-03 18:44:31)
v0.18.0 (2022-05-28)
v0.18.0
is a major feature release.
Major features in this release
-
Concretizer now reuses by default
spack install --reuse
was introduced inv0.17.0
, and--reuse
is now the default concretization mode. Spack will try hard to resolve dependencies using installed packages or binaries (#30396).To avoid reuse and to use the latest package configurations, (the old default), you can use
spack install --fresh
, or add configuration like this to your environment orconcretizer.yaml
:concretizer: reuse: false
-
Finer-grained hashes
Spack hashes now include
link
,run
, andbuild
dependencies, as well as a canonical hash of package recipes. Previously, hashes only includedlink
andrun
dependencies (thoughbuild
dependencies were stored by environments). We coarsened the hash to reduce churn in user installations, but the new default concretizer behavior mitigates this concern and gets us reuse and provenance. You will be able to see the build dependencies of new installations withspack find
. Old installations will not change and their hashes will not be affected. (#28156, #28504, #30717, #30861) -
Improved error messages
Error handling with the new concretizer is now done with optimization criteria rather than with unsatisfiable cores, and Spack reports many more details about conflicting constraints. (#30669)
-
Unify environments when possible
Environments have thus far supported
concretization: together
orconcretization: separately
. These have been replaced by a new preference inconcretizer.yaml
:concretizer: unify: [true|false|when_possible]
concretizer:unify:when_possible
will try to resolve a fully unified environment, but if it cannot, it will create multiple configurations of some packages where it has to. For large environments that previously had to be concretized separately, this can result in a huge speedup (40-50x). (#28941) -
Automatically find externals on Cray machines
Spack can now automatically discover installed packages in the Cray Programming Environment by running
spack external find
(orspack external read-cray-manifest
to only query the PE). Packages from the PE (e.g.,cray-mpich
are added to the database with full dependency information, and compilers from the PE are added tocompilers.yaml
. Available with the June 2022 release of the Cray Programming Environment. (#24894, #30428) -
New binary format and hardened signing
Spack now has an updated binary format, with improvements for security. The new format has a detached signature file, and Spack verifies the signature before untarring or decompressing the binary package. The previous format embedded the signature in a
tar
file, which required the client to runtar
before verifying (#30750). Spack can still install from build caches using the old format, but we encourage users to switch to the new format going forward.Production GitLab pipelines have been hardened to securely sign binaries. There is now a separate signing stage so that signing keys are never exposed to build system code, and signing keys are ephemeral and only live as long as the signing pipeline stage. (#30753)
-
Bootstrap mirror generation
The
spack bootstrap mirror
command can automatically create a mirror for bootstrapping the concretizer and other needed dependencies in an air-gapped environment. (#28556) -
Initial Windows support
Spack now has initial support for Windows. Spack core has been refactored to run in the Windows environment, and a small number of packages can now build for Windows. More details are in the documentation (#27021, #28385, many more)
-
Makefile generation
spack env depfile
can be used to generate aMakefile
from an environment, which can be used to build packages the environment in parallel on a single node. e.g.:spack -e myenv env depfile > Makefile make
Spack propagates
gmake
jobserver information to builds so that their jobs can share cores. (#30039, #30254, #30302, #30526) -
New variant features
In addition to being conditional themselves, variants can now have conditional values that are only possible for certain configurations of a package. (#29530)
Variants can be declared "sticky", which prevents them from being enabled or disabled by the concretizer. Sticky variants must be set explicitly by users on the command line or in
packages.yaml
. (#28630)
- Allow conditional possible values in variants
- Add a "sticky" property to variants
Other new features of note
- Environment views can optionally link only
run
dependencies withlink:run
(#29336) -
spack external find --all
finds library-only packages in addition to build dependencies (#28005) - Customizable
config:license_dir
option (#30135) -
spack external find --path PATH
takes a custom search path (#30479) -
spack spec
has a new--format
argument likespack find
(#27908) -
spack concretize --quiet
skips printing concretized specs (#30272) -
spack info
now has cleaner output and displays test info (#22097) - Package-level submodule option for git commit versions (#30085, #30037)
- Using
/hash
syntax to refer to concrete specs in an environment now works even if/hash
is not installed. (#30276)
Major internal refactors
- full hash (see above)
- new develop versioning scheme
0.19.0-dev0
- Allow for multiple dependencies/dependents from the same package (#28673)
- Splice differing virtual packages (#27919)
Performance Improvements
- Concretization of large environments with
unify: when_possible
is much faster than concretizing separately (#28941, see above) - Single-pass view generation algorithm is 2.6x faster (#29443)
Archspec improvements
-
oneapi
anddpcpp
flag support (#30783) - better support for
M1
anda64fx
(#30683)
Removals and Deprecations
-
Spack no longer supports Python
2.6
(#27256) -
Removed deprecated
--run-tests
option ofspack install
; usespack test
(#30461) -
Removed deprecated
spack flake8
; usespack style
(#27290) -
Deprecate
spack:concretization
config option; useconcretizer:unify
(#30038) -
Deprecate top-level module configuration; use module sets (#28659)
-
spack activate
andspack deactivate
are deprecated in favor of environments; will be removed in0.19.0
(#29430; see alsolink:run
in #29336 above)
Notable Bugfixes
- Fix bug that broke locks with many parallel builds (#27846)
- Many bugfixes and consistency improvements for the new concretizer
and
--reuse
(#30357, #30092, #29835, #29933, #28605, #29694, #28848)
Packages
-
CMakePackage
usesCMAKE_INSTALL_RPATH_USE_LINK_PATH
(#29703) - Refactored
lua
support:lua-lang
virtual supports bothlua
andluajit
via newLuaPackage
build system(#28854) - PythonPackage: now installs packages with
pip
(#27798) - Python: improve site_packages_dir handling (#28346)
- Extends: support spec, not just package name (#27754)
-
find_libraries
: search for both .so and .dylib on macOS (#28924) - Use stable URLs and
?full_index=1
for all github patches (#29239)
Spack community stats
- 6,416 total packages, 458 new since
v0.17.0
- 219 new Python packages
- 60 new R packages
- 377 people contributed to this release
- 337 committers to packages
- 85 committers to core
1、 spack-0.18.0.tar.gz 7.19MB