diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2024-07-16 18:15:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-16 10:15:29 -0600 |
commit | ce1b569b69b0ab24f3d3c52f2101fd8723c11ebc (patch) | |
tree | 73bda54442a84bad7058b5a7b09e69ff5410519e | |
parent | b539eb5aabe2b377395dc276761e372f6ed3a774 (diff) | |
download | spack-ce1b569b69b0ab24f3d3c52f2101fd8723c11ebc.tar.gz spack-ce1b569b69b0ab24f3d3c52f2101fd8723c11ebc.tar.bz2 spack-ce1b569b69b0ab24f3d3c52f2101fd8723c11ebc.tar.xz spack-ce1b569b69b0ab24f3d3c52f2101fd8723c11ebc.zip |
Fix order of deserialization in subprocess context (#45229)
Since the the MetaPathFinder now owns a lazily constructed RepoPath object, we need to deserialize environments before the package that needs to be restored. Before we were relying on globals to be inconsistent in a way that let the entire process go.
-rw-r--r-- | lib/spack/spack/subprocess_context.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/spack/spack/subprocess_context.py b/lib/spack/spack/subprocess_context.py index c90dcf8409..cd0c24676d 100644 --- a/lib/spack/spack/subprocess_context.py +++ b/lib/spack/spack/subprocess_context.py @@ -79,9 +79,11 @@ class PackageInstallContext: self.test_state.restore() spack.main.spack_working_dir = self.spack_working_dir env = pickle.load(self.serialized_env) if _SERIALIZE else self.env - pkg = pickle.load(self.serialized_pkg) if _SERIALIZE else self.pkg if env: spack.environment.activate(env) + # Order of operation is important, since the package might be retrieved + # from a repo defined within the environment configuration + pkg = pickle.load(self.serialized_pkg) if _SERIALIZE else self.pkg return pkg |