diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2024-06-27 14:58:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-27 14:58:42 +0200 |
commit | ef9e449322b89ec9f5e3e8ef95db4375bea55501 (patch) | |
tree | f12fa1c802c423b4ac386f444a55c87515b6006c /var | |
parent | 6b73195478fd0764fd7635fbf70db00b2e7797af (diff) | |
download | spack-ef9e449322b89ec9f5e3e8ef95db4375bea55501.tar.gz spack-ef9e449322b89ec9f5e3e8ef95db4375bea55501.tar.bz2 spack-ef9e449322b89ec9f5e3e8ef95db4375bea55501.tar.xz spack-ef9e449322b89ec9f5e3e8ef95db4375bea55501.zip |
Ensure parent runtime version >= child (#44834)
Fixes a bug where old gcc-runtime libraries would be loaded at runtime, but newer are required by dependencies, breaking the binaries.
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/gcc/package.py | 4 | ||||
-rw-r--r-- | var/spack/repos/compiler_runtime.test/packages/gcc/package.py | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index d19c76895b..ce7625ca37 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -1151,6 +1151,10 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage, CompilerPackage): # The version of gcc-runtime is the same as the %gcc used to "compile" it pkg("gcc-runtime").requires(f"@={str(spec.version)}", when=f"%{str(spec)}") + # If a node used %gcc@X.Y its dependencies must use gcc-runtime@:X.Y + # (technically @:X is broader than ... <= @=X but this should work in practice) + pkg("*").propagate(f"%gcc@:{str(spec.version)}", when=f"%{str(spec)}") + def _post_buildcache_install_hook(self): if not self.spec.satisfies("platform=linux"): return diff --git a/var/spack/repos/compiler_runtime.test/packages/gcc/package.py b/var/spack/repos/compiler_runtime.test/packages/gcc/package.py index ef28e411d3..6d8decc26b 100644 --- a/var/spack/repos/compiler_runtime.test/packages/gcc/package.py +++ b/var/spack/repos/compiler_runtime.test/packages/gcc/package.py @@ -30,3 +30,6 @@ class Gcc(Package): ) # The version of gcc-runtime is the same as the %gcc used to "compile" it pkg("gcc-runtime").requires(f"@={str(spec.version)}", when=f"%{str(spec)}") + + # If a node used %gcc@X.Y its dependencies must use gcc-runtime@:X.Y + pkg("*").propagate(f"%gcc@:{str(spec.version)}", when=f"%{str(spec)}") |