summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2024-06-27 14:58:42 +0200
committerGitHub <noreply@github.com>2024-06-27 14:58:42 +0200
commitef9e449322b89ec9f5e3e8ef95db4375bea55501 (patch)
treef12fa1c802c423b4ac386f444a55c87515b6006c /var
parent6b73195478fd0764fd7635fbf70db00b2e7797af (diff)
downloadspack-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.py4
-rw-r--r--var/spack/repos/compiler_runtime.test/packages/gcc/package.py3
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)}")