* Features in this Release
+ Spec splicing
To make binary installation more seamless in Spack, `v0.23`
introduces "splicing", which allows users to deploy binaries
using local, optimized versions of a binary interface, even
if they were not built with that interface. For example, this
would allow you to build binaries in the cloud using `mpich`
and install them on a system using a local, optimized version
of `mvapich2` *without rebuilding*. Spack preserves full
provenance for the installed packages and knows that they
were built one way but deployed another.
The intent is to leverage this across many key HPC binary
packages, e.g. MPI, CUDA, ROCm, and libfabric.
Fundamentally, splicing allows Spack to redeploy an existing
spec with different dependencies than how it was built. There
are two interfaces to splicing.
a. Explicit Splicing
In the concretizer config, you can specify a target spec
and a replacement by hash.
```yaml
concretizer:
splice:
explicit:
- target: mpi
replacement: mpich/abcdef
```
Here, every installation that would normally use the target
spec will instead use its replacement. Above, any spec using
*any* `mpi` will be spliced to depend on the specific `mpich`
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=111
- Update to version 0.22.2
* Bugfixes
- Forward compatibility with Spack 0.23 packages with language
dependencies.
- Forward compatibility with `urllib` from Python 3.12.6+.
- Bump vendored `archspec` for better aarch64 support.
- Fix regression in `{variants.X}` and `{variants.X.value}`
format strings.
- Ensure shell escaping of environment variable values in load
and activate commands.
- Fix an issue where `spec[pkg]` considers specs outside the
current DAG.
- Do not halt concretization on unknown variants in externals.
- Improve validation of `develop` config section/
- Explicitly disable `ccache` if turned off in config, to
avoid cache pollution.
- Improve backwards compatibility in `include_concrete`.
- Fix issue where package tags were sometimes repeated.
- Make `setup-env.sh` "sourced only" by dropping execution bits.
- Make certain source/binary fetch errors recoverable instead
of a hard error.
- Remove debug statements in package hash computation.
- Remove redundant clingo warnings.
- Remove hard-coded layout version.
- Do not initialize previous store state in `use_store`.
* Package updates
- `chapel` major update/ (forwarded request 1220058 from eeich)
OBS-URL: https://build.opensuse.org/request/show/1220059
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/spack?expand=0&rev=46
* Bugfixes
- Forward compatibility with Spack 0.23 packages with language
dependencies.
- Forward compatibility with `urllib` from Python 3.12.6+.
- Bump vendored `archspec` for better aarch64 support.
- Fix regression in `{variants.X}` and `{variants.X.value}`
format strings.
- Ensure shell escaping of environment variable values in load
and activate commands.
- Fix an issue where `spec[pkg]` considers specs outside the
current DAG.
- Do not halt concretization on unknown variants in externals.
- Improve validation of `develop` config section/
- Explicitly disable `ccache` if turned off in config, to
avoid cache pollution.
- Improve backwards compatibility in `include_concrete`.
- Fix issue where package tags were sometimes repeated.
- Make `setup-env.sh` "sourced only" by dropping execution bits.
- Make certain source/binary fetch errors recoverable instead
of a hard error.
- Remove debug statements in package hash computation.
- Remove redundant clingo warnings.
- Remove hard-coded layout version.
- Do not initialize previous store state in `use_store`.
* Package updates
- `chapel` major update/
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=109
- Update to 0.22.1.
* Bug Fixes:
- Fix reuse of externals on Linux.
- Ensure parent gcc-runtime version >= child.
- Ensure the latest gcc-runtime is rpath'ed when multiple exist
among link deps.
- Improve version detection of glibc.
- Improve heuristics for solver.
- Make strong preferences override reuse.
- Reduce verbosity when C compiler is missing.
- Make missing ccache executable an error when required.
- Make every environment view containing `python` a `venv`.
- Fix external detection for compilers with os but no target.
- Fix version optimization for roots.
- Handle common implementations of pagination of tags in OCI
build caches.
- Apply fetched patches to develop specs.
- Avoid Windows wrappers for filesystem utilities on non-Windows.
- Fix formatting issue in `spack audit`.
* Package updates:
- Require libiconv for iconv.
Notice that glibc/musl also provide iconv, but are not
guaranteed to be complete. Set `packages:iconv:require:[glibc]`
to restore the old behavior.
- protobuf: fix 3.4:3.21 patch checksum.
- protobuf: update hash for patch needed when="@3.4:3.21".
- git: bump v2.39 to 2.45; deprecate unsafe versions.
- gcc: use `-rpath {rpath_dir}` not `-rpath={rpath dir}`.
- Remove mesa18 and libosmesa.
- Enforce consistency of `gl` providers.
OBS-URL: https://build.opensuse.org/request/show/1186519
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=107
- Move-site-config-scope-before-system-scope.patch:
Give 'site' scope a lower precedence than 'system' scope.
The 'site wide' config scope was meant to be per Spack
installation. A single system may have multiple Spack
installations, so was is meant for overriding the
'system' wide setting per installation.
The Spack package is OS-vendor provided. The vendor provides
pr generates a configuration which a local admin may want to
override. This can now be done from within the 'system' scope.
Previously the vendor-supplied configuration was mixed with
the 'system' scope - local modifications collided with
vendor autoconfiguration.
- Add a build-dependency package which will cause build tools
and libraries used frequently by Spack to be installed.
All these packages are recommended by the main Spack package
already. This package may be used in environments where the
installation of recommended packages is disabled by default.
- Update Spack to version 0.22.0
* New features:
- Compiler dependencies:
Spack is in the process of making compilers proper dependencies.
For this, compiler dependencies are moving from `compilers.yaml`
to `packages.yaml` to make this consistent with other externals.
For this, dependency graphs will not show the compiler runtime
libraries like `gcc-runtime` or `libgfortran`.
To minimize disruption, an existing `compilers.yaml` file will
continue to work, however, users are encourage to migrate
before v0.23.
+ Packages compiled with `%gcc` now depend on a new package
OBS-URL: https://build.opensuse.org/request/show/1179953
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/spack?expand=0&rev=44
- Give 'site' scope a lower precedence than 'system' scope.
The 'site wide' config scope was meant to be per Spack
installation. A single system may have multiple Spack
installations, so was is meant for overriding the
'system' wide setting per installation.
The Spack package is OS-vendor provided. The vendor provides
pr generates a configuration which a local admin may want to
override. This can now be done from within the 'system' scope.
Previously the vendor-supplied configuration was mixed with
the 'system' scope - local modifications collided with
vendor autoconfiguration.
- Add a build-dependency package which will cause build tools
and libraries used frequently by Spack to be installed.
All these packages are recommended by the main Spack package
already. This package may be used in environments where the
installation of recommended packages is disabled by default.
- Update Spack to version 0.22.0
* New features:
- Compiler dependencies:
Spack is in the process of making compilers proper dependencies.
For this, compiler dependencies are moving from `compilers.yaml`
to `packages.yaml` to make this consistent with other externals.
For this, dependency graphs will not show the compiler runtime
libraries like `gcc-runtime` or `libgfortran`.
To minimize disruption, an existing `compilers.yaml` file will
continue to work, however, users are encourage to migrate
before v0.23.
+ Packages compiled with `%gcc` now depend on a new package
`gcc-runtime`, which contains a copy of the shared compiler
OBS-URL: https://build.opensuse.org/request/show/1174817
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=104
- Update Spack to version 0.21.2
* Bugfixes
+ Containerize: accommodate nested or pre-existing `spack-env`
paths.
+ Fix `setup-env` script, when going back and forth between
instances.
+ Fix using fully-qualified namespaces from root specs.
+ Fix a bug when a required provider is requested for multiple
virtuals.
+ OCI buildcaches:
* only push in parallel when forking.
* use pickleable errors (#42160)
+ Fix using sticky variants in externals.
+ Fix a rare issue with conditional requirements and
multi-valued variants.
* Package updates
+ `rust`: add v1.75, rework a few variants.
+ `py-transformers`: add v4.35.2.
- Fix path to setup-env.sh in the Apptainer template (bsc#1221471).
OBS-URL: https://build.opensuse.org/request/show/1158239
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=96
- 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
+ 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 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
- 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
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.
+ OCI build caches:
You can now use an arbitrary OCI registry as a build cache:
- For Dockerhub:
OBS-URL: https://build.opensuse.org/request/show/1143572
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/spack?expand=0&rev=38
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
- update to 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
+ 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
+ buildcache: don't error if a patch is missing, when installing from binaries
- updated to 0.21.0
* following new features:
+ Better error messages with condition chaining:
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.
+ 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
OBS-URL: https://build.opensuse.org/request/show/1141708
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=90
- Update to version 0.20.3 with the following changes:
* Bug fixes:
+ Fix a bug where `spack mirror set-url` would drop configured
connection info.
+ Fix a minor issue with package hash computation for Python 3.12.
+ Improve escaping in Tcl module files.
+ Make repo cache work on repositories with zero mtime.
+ Ignore errors for newer, incompatible buildcache version.
+ Print an error when git is required, but missing.
+ Ensure missing build dependencies get installed when using
`spack install --overwrite`.
+ Fix an issue where Spack freezes when the build process
unexpectedly exits.
+ Fix a bug where installation failures cause an unrelated
`NameError` to be thrown.
+ Fix an issue where Spack package versions would be incorrectly
derived from git tags.
+ Fix a bug triggered when file locking fails internally.
+ Prevent `spack external find` to error out when a directory
cannot be accessed.
+ Fix multiple performance regressions in environments.
+ Add more ignored modules to `pyproject.toml` for `mypy`.
* Features:
+ Spack now supports Python 3.12.
OBS-URL: https://build.opensuse.org/request/show/1124071
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/spack?expand=0&rev=37
connection info.
+ Fix a minor issue with package hash computation for Python 3.12.
+ Improve escaping in Tcl module files.
+ Make repo cache work on repositories with zero mtime.
+ Ignore errors for newer, incompatible buildcache version.
+ Print an error when git is required, but missing.
+ Ensure missing build dependencies get installed when using
`spack install --overwrite`.
+ Fix an issue where Spack freezes when the build process
unexpectedly exits.
+ Fix a bug where installation failures cause an unrelated
`NameError` to be thrown.
+ Fix an issue where Spack package versions would be incorrectly
derived from git tags.
+ Fix a bug triggered when file locking fails internally.
+ Prevent `spack external find` to error out when a directory
cannot be accessed.
+ Fix multiple performance regressions in environments.
+ Add more ignored modules to `pyproject.toml` for mypy.
+ Spack now supports Python 3.12.
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=87
Update to version 0.20.3 with the following changes:
* Bug fixes:
+ Fix a bug where spack mirror set-url would drop configured connection info
+ Fix a minor issue with package hash computation for Python 3.12
+ Improve escaping in Tcl module files
+ Make repo cache work on repositories with zero mtime
+ Ignore errors for newer, incompatible buildcache version
+ Print an error when git is required, but missing
+ Ensure missing build dependencies get installed when using spack install --overwrite
+ Fix an issue where Spack freezes when the build process unexpectedly exits
+ Fix a bug where installation failures cause an unrelated NameError to be thrown
+ Fix an issue where Spack package versions would be incorrectly derived from git tags
+ Fix a bug triggered when file locking fails internally
+ Prevent "spack external find" to error out when a directory cannot be accessed
+ Fix multiple performance regressions in environments
+ Add more ignored modules to pyproject.toml for mypy
* Features:
+ Spack now supports Python 3.12
rebased Fix-error-during-documentation-build-due-to-recursive-module-inclusion.patch
OBS-URL: https://build.opensuse.org/request/show/1123507
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=86
- Update to version 0.20.1 with the following changes:
* Bug fixes:
+ Fix spec removed from an environment where not actually
removed if `--force` was not given.
+ Hotfix for a few recipes that treat CMake as a link
dependency.
+ Fix re-running stand-alone test a second time, which was
getting a trailing spurious failure.
+ Fix reading JSON manifest on Cray, reporting non-concrete
specs.
+ Fix a few bugs when generating Dockerfiles from Spack.
+ Fix a few long-standing bugs when generating module files.
+ Fix issues with building Python extensions when using an
external Python.
+ Fix `spack compiler remove`: remove from command line even
if they appear in different scopes.
* Features:
+ Speed-up module file generation.
+ Show external status as `[e]`.
+ Backport `archspec` fixes.
+ Improve a few error messages. (forwarded request 1110679 from eeich)
OBS-URL: https://build.opensuse.org/request/show/1110682
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/spack?expand=0&rev=36
- Update to version 0.20.1 with the following changes:
* Bug fixes:
+ Fix spec removed from an environment where not actually
removed if `--force` was not given.
+ Hotfix for a few recipes that treat CMake as a link
dependency.
+ Fix re-running stand-alone test a second time, which was
getting a trailing spurious failure.
+ Fix reading JSON manifest on Cray, reporting non-concrete
specs.
+ Fix a few bugs when generating Dockerfiles from Spack.
+ Fix a few long-standing bugs when generating module files.
+ Fix issues with building Python extensions when using an
external Python.
+ Fix `spack compiler remove`: remove from command line even
if they appear in different scopes.
* Features:
+ Speed-up module file generation.
+ Show external status as `[e]`.
+ Backport `archspec` fixes.
+ Improve a few error messages.
OBS-URL: https://build.opensuse.org/request/show/1110679
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=84
- Update to version 0.20.0 with the following features:
* Exact versions: Spack did not previously have a way to distinguish a
version if it was a prefix of some other version. For example, @3.2 would
match 3.2, 3.2.1, 3.2.2, etc. You can now match exactly 3.2 with @=3.2.
This is useful, for example, if you need to patch only the 3.2 version of a
package
* More stable concretization: Now, spack concretize will only concretize the
new portions of the environment and will not change existing parts of an
environment unless you specify --force. This has always been true for
unify:false, but not for unify:true and unify:when_possible environments.
* The concretizer has a new --reuse-deps argument that only reuses dependencies.
That is, it will always treat the roots of your environment as it would with
--fresh. This allows you to upgrade just the roots of your environment while
keeping everything else stable
* Specs in buildcaches can be referenced by hash: Previously, you could run
spack buildcache list and see the hashes in buildcaches, but referring to
them by hash would fail. You can now run commands like spack spec and
spack install and refer to buildcache hashes directly, e.g. spack install
/abc123
* New package and buildcache index websites
Our public websites for searching packages have been completely revamped
and updated. You can check them out here:
Package Index: https://packages.spack.io
Buildcache Index: https://cache.spack.io
Both are searchable and more interactive than before. Currently major
releases are shown; UI for browsing develop snapshots is coming soon.
* Default CMake and Meson build types are now Release: Spack has historically
defaulted to building with optimization and debugging, but packages like
llvm can be enormous with debug turned on. Our default build type for all
Spack packages is now Release. This has a number of benefits:
OBS-URL: https://build.opensuse.org/request/show/1088985
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=72