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:
Egbert Eich 2024-02-02 07:10:30 +00:00 committed by Git OBS Bridge
parent 20a4f61c1e
commit 93b53787f6
2 changed files with 85 additions and 79 deletions

View File

@ -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

View File

@ -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