diff --git a/spack.changes b/spack.changes index 6f7111a..4c81b8f 100644 --- a/spack.changes +++ b/spack.changes @@ -1,26 +1,25 @@ ------------------------------------------------------------------- Thu Jan 25 14:07:19 UTC 2024 - Christian Goll -- update to 0.21.1 - * Add support for reading buildcaches created by Spack v0.22 +- Update Spack to version 0.21.1 + * Add support for reading buildcaches created by Spack v0.22 * Bugfixes - + spack graph: fix coloring with environments - + spack info: sort variants in --variants-by-name - + Spec.format: error on old style format strings + + `spack graph`: fix coloring with environments + + `spack info`: sort variants in --variants-by-name + + `Spec.format`: error on old style format strings + ASP-based solver: - fix infinite recursion when computing concretization - errors - don't error for type mismatch on preferences - don't emit spurious debug output - + Improve the error message for deprecated preferences - + Fix MSVC preview version breaking clingo build on Windows - + Fix multi-word aliases - + Add a warning for unconfigured compiler - + environment: fix an issue with - deconcretization/reconcretization of specs + - fix infinite recursion when computing concretization + errors, + - don't error for type mismatch on preferences, + - don't emit spurious debug output. + + Improve the error message for deprecated preferences. + + Fix multi-word aliases. + + Add a warning for unconfigured compiler. + + environment: fix an issue with deconcretization/reconcretization + of specs. + buildcache: don't error if a patch is missing, when installing from binaries -- updated to 0.21.0 +- From version 0.21.0 * following new features: + Better error messages with condition chaining: In v0.18, we added better error messages that could tell you @@ -31,117 +30,123 @@ Thu Jan 25 14:07:19 UTC 2024 - Christian Goll where they came from. + OCI build caches: 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://ghcr.io/haampie/spack-test # GHCR - $ spack mirror set --push --oci-username ... --oci-password ... my_registry # set login creds - $ spack buildcache push my_registry [specs...] - And you can optionally add a base image to get runnable images: - $ spack buildcache push --base-image leap:15.5 my_registry python - Pushed ... as [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack - $ docker run --rm -it [image]:python-3.11.2-65txfcpqbmpawclvtasuog4yzmxwaoia.spack + - For Dockerhub: + `$ spack mirror add my_registry oci://user/image` + - For another registry (GHCR): + `$ spack mirror add my_registry oci://ghcr.io/haampie/spack-test` + Then set the login credentials: + `$ spack mirror set --push --oci-username ... --oci-password ... my_registry` + and push to it: + `$ spack buildcache push my_registry [specs...]` + You can optionally add a base image to get runnable images: + ``` + $ spack buildcache push --base-image leap:15.5 my_registry python` + Pushed ... as [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 - 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 + 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 + 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. + Multiple versions of build dependencies: 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 - dependencies, but enforces unification through transitive - 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. + `setuptools`, `cython`, while different physics packages + require different versions of Python to build. The concretizer + enforced that every solve was unified, i.e., so that there was + only one version of every package. The concretizer now supports + "duplicate" nodes for build dependencies, but enforces unification + through transitive link and run dependencies. This will allow it + to better resolve complex dependency graphs in ecosystems like + Python. + Cherry-picking virtual dependencies: You can now select only a subset of virtual dependencies - from a spec that may provide more. For example, if you want - mpich to be your mpi provider, you can be explicit by - writing: - hdf5 ^[virtuals=mpi] mpich - Or, if you want to use, e.g., intel-parallel-studio for blas - along with an external lapack like openblas, you could - write: - strumpack ^[virtuals=mpi] intel-parallel-studio+mkl ^[virtuals=lapack] openblas - + spack deconcretize command: - We are getting close to having a spack update command for - environments, but we're not quite there yet. This is the - next best thing. spack deconcretize gives you control over - what you want to update in an already concrete environment. - If you have an environment built with, say, meson, and you + from a spec that may provide more. For example, to make mpich + your mpi provider, you can be explicit by writing: + `hdf5 ^[virtuals=mpi] mpich`. + Or, to use, e.g., `intel-parallel-studio` for blas along with + an external `lapack` like `openblas`, you could write: + ``` + strumpack ^[virtuals=mpi] intel-parallel-studio+mkl ^[virtuals=lapack] openblas` + ``` + The `virtuals=mpi` is an edge attribute, and dependency edges + in Spack graphs now track which virtuals they satisfied. + + The `spack deconcretize` command gives you control over what + you want to update in an already concrete environment. + As an example, with an environment built with meson, and you 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 spack concretize. In a future Spack version, - 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. + time you run spack concretize. In the future, we'll handle + this in a single command, but for now you can use this to + drop bits of your lockfile and resolve your dependencies + again. + UI Improvements: - The venerable spack info command was looking shabby compared - to the rest of Spack's UI, so we reworked it to have a bit - more flair. spack info now makes much better use of terminal - space and shows variants, their values, and their - descriptions much more clearly. Conditional variants are - grouped separately so you can more easily understand how - packages are structured. spack checksum now allows you to - filter versions from your editor, or by version range. It - also notifies you about potential download URL changes. + The `spack info` received a rework to make the output more + appealing. It is now on par with the rest of Spack's UI. + `spack info` now makes much better use of terminal space and + shows variants, their values, and their descriptions more + clearly. Conditional variants are grouped separately so you + can more easily understand how packages are structured. + `spack checksum` now allows you to filter versions from your + editor, or by version range. It also notifies you about + potential download URL changes. + Environments can include definitions: - Spack did not previously support using include: with The + Spack did not previously support using `include:` with The definitions section of an environment, but now it does. You can use this to curate lists of specs and more easily reuse - them across environments. + them across environments. + Aliases: - You can now add aliases to Spack commands in config.yaml, - e.g. this might enshrine your favorite args to spack find as - spack f: + You can now add aliases to Spack commands in `config.yaml`, + e.g. this might enshrine your favorite args to `spack find` + as `spack f`: + ``` config: aliases: f: find -lv + ``` + Improved autoloading of modules: - In this release, you can start using hide_implicits: true + In this release, you can start using `hide_implicits: true` instead, which exposes only explicitly installed packages to the user, while still autoloading dependencies. On top of - that, you can safely use hash_length: 0, as this config now + that, you can safely use `hash_length: 0`, as this config now 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: - + spack env activate without arguments now loads a default - environment that you do not have to create - + spack find -H / --hashes: a new shortcut for piping spack - find output to other commands - + Add spack checksum --verify, fix --add - + New default_args context manager factors out common args for - directives - + spack compiler find --[no]-mixed-toolchain lets you easily - mix clang and gfortran on Linux + + `spack env activate` without arguments now loads a default + environment that you do not have to create. + + `spack find -H` / `--hashes`: a new shortcut for piping spack + find output to other commands. + + Add `spack checksum --verify`, fix `--add`. + + New `default_args` context manager factors out common args for + directives. + + `spack compiler find --[no]-mixed-toolchain` lets you easily + mix clang and gfortran on Linux. * Performance improvements: - + spack external find execution is now much faster - + spack location -i now much faster on success - + Drop redundant rpaths post install - + ASP-based solver: avoid cycles in clingo using hidden directive - + Fix multiple quadratic complexity issues in environments + + `spack external find execution` is now much faster. + + `spack location -i` is now much faster on success. + + Drop redundant rpaths post install. + + ASP-based solver: avoid cycles in clingo using hidden + directive. + + Fix multiple quadratic complexity issues in environments. * 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 - + Implement fish completion + + Implement fish shell completion. + Can now distinguish between source/binary mirror; don't ping - mirror.spack.io as much - + Improve status reporting on install (add [n/total] display... - + mirror.spack.io as much. + + Improve status reporting on `spack install` + (add [n/total] display...). ------------------------------------------------------------------- Mon Nov 6 08:04:55 UTC 2023 - Bernhard Wiedemann