summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2024-07-16 18:15:29 +0200
committerGitHub <noreply@github.com>2024-07-16 10:15:29 -0600
commitce1b569b69b0ab24f3d3c52f2101fd8723c11ebc (patch)
tree73bda54442a84bad7058b5a7b09e69ff5410519e
parentb539eb5aabe2b377395dc276761e372f6ed3a774 (diff)
downloadspack-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.py4
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