Accepting request 1143459 from home:mslacken:sp
fix infinite recursion when computing concretization errors + environment: fix an issue with deconcretization/reconcretization of specs + buildcache: don't error if a patch is missing, when installing from binaries In v0.18, we added better error messages that could tell you what problem happened, but they couldn't tell you why it happened. 0.21 adds condition chaining to the solver, and Spack can now trace back through the conditions that led to an error and build a tree of causes potential causes and where they came from. This creates a container image from the Spack installations on the host system, without the need to run spack install from a Dockerfile or sif file. It also addresses the inconvenience of losing binaries of dependencies when RUN spack install fails inside docker build. Further, the container image layers and build cache tarballs are the same files. This means that spack install and docker pull use the exact same underlying binaries. If you previously used spack install inside of docker build, this feature helps you save storage by a factor two. Increasingly, complex package builds require multiple versions of some build dependencies. For example, Python packages frequently require very specific versions of setuptools, cython, and sometimes different physics packages require different versions of Python to build. The concretizer enforced that every solve was unified, i.e., that there only be one version of every package. The concretizer now supports "duplicate" nodes for build OBS-URL: https://build.opensuse.org/request/show/1143459 OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=91
This commit is contained in:
parent
20a4f61c1e
commit
93b53787f6
162
spack.changes
162
spack.changes
@ -8,120 +8,125 @@ Thu Jan 25 14:07:19 UTC 2024 - Christian Goll <cgoll@suse.com>
|
|||||||
+ spack info: sort variants in --variants-by-name
|
+ spack info: sort variants in --variants-by-name
|
||||||
+ Spec.format: error on old style format strings
|
+ Spec.format: error on old style format strings
|
||||||
+ ASP-based solver:
|
+ ASP-based solver:
|
||||||
fix infinite recursion when computing concretization errors
|
fix infinite recursion when computing concretization
|
||||||
|
errors
|
||||||
don't error for type mismatch on preferences
|
don't error for type mismatch on preferences
|
||||||
don't emit spurious debug output
|
don't emit spurious debug output
|
||||||
+ Improve the error message for deprecated preferences
|
+ Improve the error message for deprecated preferences
|
||||||
+ Fix MSVC preview version breaking clingo build on Windows
|
+ Fix MSVC preview version breaking clingo build on Windows
|
||||||
+ Fix multi-word aliases
|
+ Fix multi-word aliases
|
||||||
+ Add a warning for unconfigured compiler
|
+ Add a warning for unconfigured compiler
|
||||||
+ environment: fix an issue with deconcretization/reconcretization of specs
|
+ environment: fix an issue with
|
||||||
+ buildcache: don't error if a patch is missing, when installing from binaries
|
deconcretization/reconcretization of specs
|
||||||
|
+ buildcache: don't error if a patch is missing, when
|
||||||
|
installing from binaries
|
||||||
- updated to 0.21.0
|
- updated to 0.21.0
|
||||||
* following new features:
|
* following new features:
|
||||||
+ Better error messages with condition chaining:
|
+ Better error messages with condition chaining:
|
||||||
In v0.18, we added better error messages that could tell you what problem
|
In v0.18, we added better error messages that could tell you
|
||||||
happened, but they couldn't tell you why it happened. 0.21 adds condition
|
what problem happened, but they couldn't tell you why it
|
||||||
chaining to the solver, and Spack can now trace back through the conditions
|
happened. 0.21 adds condition chaining to the solver, and
|
||||||
that led to an error and build a tree of causes potential causes and where
|
Spack can now trace back through the conditions that led to
|
||||||
they came from.
|
an error and build a tree of causes potential causes and
|
||||||
|
where they came from.
|
||||||
+ OCI build caches:
|
+ OCI build caches:
|
||||||
You can now use an arbitrary OCI registry as a build cache:
|
You can now use an arbitrary OCI registry as a build cache:
|
||||||
```
|
|
||||||
$ spack mirror add my_registry oci://user/image # Dockerhub
|
$ spack mirror add my_registry oci://user/image # Dockerhub
|
||||||
$ spack mirror add my_registry oci://ghcr.io/haampie/spack-test # GHCR
|
$ spack mirror add my_registry oci://ghcr.io/haampie/spack-test # GHCR
|
||||||
$ spack mirror set --push --oci-username ... --oci-password ... my_registry # set login creds
|
$ spack mirror set --push --oci-username ... --oci-password ... my_registry # set login creds
|
||||||
$ spack buildcache push my_registry [specs...]
|
$ spack buildcache push my_registry [specs...]
|
||||||
```
|
|
||||||
And you can optionally add a base image to get runnable images:
|
And you can optionally add a base image to get runnable images:
|
||||||
```
|
|
||||||
$ spack buildcache push --base-image leap:15.5 my_registry python
|
$ spack buildcache push --base-image leap:15.5 my_registry python
|
||||||
Pushed ... as [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack
|
Pushed ... as [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack
|
||||||
$ docker run --rm -it [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack
|
$ docker run --rm -it [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack
|
||||||
```
|
This creates a container image from the Spack installations
|
||||||
This creates a container image from the Spack installations on the host
|
on the host system, without the need to run spack install
|
||||||
system, without the need to run spack install from a Dockerfile or sif
|
from a Dockerfile or sif file. It also addresses the
|
||||||
file. It also addresses the inconvenience of losing binaries of
|
inconvenience of losing binaries of dependencies when RUN
|
||||||
dependencies when RUN spack install fails inside docker build.
|
spack install fails inside docker build. Further, the
|
||||||
Further, the container image layers and build cache tarballs are the same
|
container image layers and build cache tarballs are the same
|
||||||
files. This means that spack install and docker pull use the exact same
|
files. This means that spack install and docker pull use the
|
||||||
underlying binaries. If you previously used spack install inside of docker
|
exact same underlying binaries. If you previously used spack
|
||||||
build, this feature helps you save storage by a factor two.
|
install inside of docker build, this feature helps you save
|
||||||
|
storage by a factor two.
|
||||||
+ Multiple versions of build dependencies:
|
+ Multiple versions of build dependencies:
|
||||||
Increasingly, complex package builds require multiple versions of some
|
Increasingly, complex package builds require multiple
|
||||||
build dependencies. For example, Python packages frequently require very
|
versions of some build dependencies. For example, Python
|
||||||
specific versions of setuptools, cython, and sometimes different physics
|
packages frequently require very specific versions of
|
||||||
packages require different versions of Python to build. The concretizer
|
setuptools, cython, and sometimes different physics packages
|
||||||
enforced that every solve was unified, i.e., that there only be one version
|
require different versions of Python to build. The
|
||||||
of every package. The concretizer now supports "duplicate" nodes for build
|
concretizer enforced that every solve was unified, i.e.,
|
||||||
dependencies, but enforces unification through transitive link and run
|
that there only be one version of every package. The
|
||||||
dependencies. This will allow it to better resolve complex dependency
|
concretizer now supports "duplicate" nodes for build
|
||||||
graphs in ecosystems like Python, and it also gets us very close to
|
dependencies, but enforces unification through transitive
|
||||||
modeling compilers as proper dependencies.
|
link and run dependencies. This will allow it to better
|
||||||
|
resolve complex dependency graphs in ecosystems like Python,
|
||||||
|
and it also gets us very close to modeling compilers as
|
||||||
|
proper dependencies.
|
||||||
+ Cherry-picking virtual dependencies:
|
+ Cherry-picking virtual dependencies:
|
||||||
You can now select only a subset of virtual dependencies from a spec that
|
You can now select only a subset of virtual dependencies
|
||||||
may provide more. For example, if you want mpich to be your mpi provider,
|
from a spec that may provide more. For example, if you want
|
||||||
you can be explicit by writing:
|
mpich to be your mpi provider, you can be explicit by
|
||||||
|
writing:
|
||||||
hdf5 ^[virtuals=mpi] mpich
|
hdf5 ^[virtuals=mpi] mpich
|
||||||
Or, if you want to use, e.g., intel-parallel-studio for blas along with an external
|
Or, if you want to use, e.g., intel-parallel-studio for blas
|
||||||
lapack like openblas, you could write:
|
along with an external lapack like openblas, you could
|
||||||
|
write:
|
||||||
strumpack ^[virtuals=mpi] intel-parallel-studio+mkl ^[virtuals=lapack] openblas
|
strumpack ^[virtuals=mpi] intel-parallel-studio+mkl ^[virtuals=lapack] openblas
|
||||||
+ License directive:
|
|
||||||
Spack packages can now have license metadata, with the new license() directive:
|
|
||||||
license("Apache-2.0")
|
|
||||||
Licenses use SPDX identifiers, and you can use SPDX expressions to combine them:
|
|
||||||
license("Apache-2.0 OR MIT")
|
|
||||||
Like other directives in Spack, it's conditional, so you can handle complex cases like Spack itself:
|
|
||||||
license("LGPL-2.1", when="@:0.11")
|
|
||||||
license("Apache-2.0 OR MIT", when="@0.12:")
|
|
||||||
+ spack deconcretize command:
|
+ spack deconcretize command:
|
||||||
We are getting close to having a spack update command for environments, but
|
We are getting close to having a spack update command for
|
||||||
we're not quite there yet. This is the next best thing. spack deconcretize
|
environments, but we're not quite there yet. This is the
|
||||||
gives you control over what you want to update in an already concrete
|
next best thing. spack deconcretize gives you control over
|
||||||
environment. If you have an environment built with, say, meson, and you
|
what you want to update in an already concrete environment.
|
||||||
|
If you have an environment built with, say, meson, and you
|
||||||
want to update your meson version, you can run:
|
want to update your meson version, you can run:
|
||||||
$spack deconcretize meson
|
$spack deconcretize meson
|
||||||
and have everything that depends on meson rebuilt the next time you run
|
and have everything that depends on meson rebuilt the next
|
||||||
spack concretize. In a future Spack version, we'll handle all of this in a
|
time you run spack concretize. In a future Spack version,
|
||||||
single command, but for now you can use this to drop bits of your lockfile
|
we'll handle all of this in a single command, but for now
|
||||||
|
you can use this to drop bits of your lockfile
|
||||||
and resolve your dependencies again.
|
and resolve your dependencies again.
|
||||||
+ UI Improvements:
|
+ UI Improvements:
|
||||||
The venerable spack info command was looking shabby compared to the rest of
|
The venerable spack info command was looking shabby compared
|
||||||
Spack's UI, so we reworked it to have a bit more flair. spack info now
|
to the rest of Spack's UI, so we reworked it to have a bit
|
||||||
makes much better use of terminal space and shows variants, their values,
|
more flair. spack info now makes much better use of terminal
|
||||||
and their descriptions much more clearly. Conditional variants are grouped
|
space and shows variants, their values, and their
|
||||||
separately so you can more easily understand how packages are structured.
|
descriptions much more clearly. Conditional variants are
|
||||||
spack checksum now allows you to filter versions from your editor, or by
|
grouped separately so you can more easily understand how
|
||||||
version range. It also notifies you about potential download URL changes.
|
packages are structured. spack checksum now allows you to
|
||||||
See
|
filter versions from your editor, or by version range. It
|
||||||
|
also notifies you about potential download URL changes.
|
||||||
+ Environments can include definitions:
|
+ Environments can include definitions:
|
||||||
Spack did not previously support using include: with The definitions
|
Spack did not previously support using include: with The
|
||||||
section of an environment, but now it does. You can use this to curate
|
definitions section of an environment, but now it does. You
|
||||||
lists of specs and more easily reuse them across environments.
|
can use this to curate lists of specs and more easily reuse
|
||||||
|
them across environments.
|
||||||
+ Aliases:
|
+ Aliases:
|
||||||
You can now add aliases to Spack commands in config.yaml, e.g. this might
|
You can now add aliases to Spack commands in config.yaml,
|
||||||
enshrine your favorite args to spack find as spack f:
|
e.g. this might enshrine your favorite args to spack find as
|
||||||
```
|
spack f:
|
||||||
config:
|
config:
|
||||||
aliases:
|
aliases:
|
||||||
f: find -lv
|
f: find -lv
|
||||||
```
|
|
||||||
+ Improved autoloading of modules:
|
+ Improved autoloading of modules:
|
||||||
In this release, you can start using hide_implicits: true instead, which
|
In this release, you can start using hide_implicits: true
|
||||||
exposes only explicitly installed packages to the user, while still
|
instead, which exposes only explicitly installed packages to
|
||||||
autoloading dependencies. On top of that, you can safely use hash_length:
|
the user, while still autoloading dependencies. On top of
|
||||||
0, as this config now only applies to the modules exposed to the user --
|
that, you can safely use hash_length: 0, as this config now
|
||||||
you don't have to worry about file name clashes for hidden dependencies.
|
only applies to the modules exposed to the user -- you don't
|
||||||
|
have to worry about file name clashes for hidden
|
||||||
|
dependencies.
|
||||||
Note: for tcl this feature requires Modules 4.7 or higher.
|
Note: for tcl this feature requires Modules 4.7 or higher.
|
||||||
* Other new commands and directives:
|
* Other new commands and directives:
|
||||||
+ spack env activate without arguments now loads a default environment that
|
+ spack env activate without arguments now loads a default
|
||||||
you do not have to create
|
environment that you do not have to create
|
||||||
+ spack find -H / --hashes: a new shortcut for piping spack find output to
|
+ spack find -H / --hashes: a new shortcut for piping spack
|
||||||
other commands
|
find output to other commands
|
||||||
+ Add spack checksum --verify, fix --add
|
+ Add spack checksum --verify, fix --add
|
||||||
+ New default_args context manager factors out common args for directives
|
+ New default_args context manager factors out common args for
|
||||||
+ spack compiler find --[no]-mixed-toolchain lets you easily mix clang and
|
directives
|
||||||
gfortran on Linux
|
+ spack compiler find --[no]-mixed-toolchain lets you easily
|
||||||
|
mix clang and gfortran on Linux
|
||||||
* Performance improvements:
|
* Performance improvements:
|
||||||
+ spack external find execution is now much faster
|
+ spack external find execution is now much faster
|
||||||
+ spack location -i now much faster on success
|
+ spack location -i now much faster on success
|
||||||
@ -129,7 +134,8 @@ Thu Jan 25 14:07:19 UTC 2024 - Christian Goll <cgoll@suse.com>
|
|||||||
+ ASP-based solver: avoid cycles in clingo using hidden directive
|
+ ASP-based solver: avoid cycles in clingo using hidden directive
|
||||||
+ Fix multiple quadratic complexity issues in environments
|
+ Fix multiple quadratic complexity issues in environments
|
||||||
* Other new features of note:
|
* Other new features of note:
|
||||||
+ archspec: update to v0.2.2, support for Sapphire Rapids, Power10, Neoverse V2
|
+ archspec: update to v0.2.2, support for Sapphire Rapids,
|
||||||
|
Power10, Neoverse V2
|
||||||
+ Propagate variants across nodes that don't have that variant
|
+ Propagate variants across nodes that don't have that variant
|
||||||
+ Implement fish completion
|
+ Implement fish completion
|
||||||
+ Can now distinguish between source/binary mirror; don't ping
|
+ Can now distinguish between source/binary mirror; don't ping
|
||||||
|
@ -84,7 +84,6 @@ Requires: git
|
|||||||
Requires: gpg2
|
Requires: gpg2
|
||||||
Requires: gzip
|
Requires: gzip
|
||||||
Requires: libbz2-devel
|
Requires: libbz2-devel
|
||||||
Requires: lua-lmod
|
|
||||||
Requires: make
|
Requires: make
|
||||||
Requires: patch
|
Requires: patch
|
||||||
Requires: polkit
|
Requires: polkit
|
||||||
@ -94,6 +93,7 @@ Requires: tar
|
|||||||
Requires: unzip
|
Requires: unzip
|
||||||
Requires: xz
|
Requires: xz
|
||||||
Recommends: %spack_trigger_recommended_packages %spack_trigger_recommended_compilers
|
Recommends: %spack_trigger_recommended_packages %spack_trigger_recommended_compilers
|
||||||
|
Recommends: lua-lmod
|
||||||
Requires: (hwloc if hwloc-devel)
|
Requires: (hwloc if hwloc-devel)
|
||||||
Requires: (hwloc-devel if hwloc)
|
Requires: (hwloc-devel if hwloc)
|
||||||
%else
|
%else
|
||||||
|
Loading…
Reference in New Issue
Block a user