From 99672be2e48f8a50ae38257dc186a20a78f0c940 Mon Sep 17 00:00:00 2001
From: adrianciu <adrian.ciu@codemart.ro>
Date: Wed, 30 Apr 2025 15:18:13 +0300
Subject: [PATCH] VT-109: compatibility with esd

---
 dedal/configuration/SpackConfig.py    |  4 +++-
 dedal/spack_factory/SpackOperation.py | 20 ++++++++++----------
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/dedal/configuration/SpackConfig.py b/dedal/configuration/SpackConfig.py
index 98a70a41..bb71f162 100644
--- a/dedal/configuration/SpackConfig.py
+++ b/dedal/configuration/SpackConfig.py
@@ -30,12 +30,14 @@ class SpackConfig:
                  concretization_dir: Path = None, buildcache_dir: Path = None, gpg: GpgConfig = None,
                  use_spack_global=False, cache_version_concretize='v1',
                  cache_version_build='v1', view=SpackViewEnum.VIEW, override_cache=True, bashrc_path=os.path.expanduser("~/.bashrc"),
-                 spack_cache_storage_type: SpackCacheStorageEnum = SpackCacheStorageEnum.OCI):
+                 spack_cache_storage_type: SpackCacheStorageEnum = SpackCacheStorageEnum.OCI,
+                 spack_dir: Path = None):
         self.env = env
         if repos is None:
             self.repos = []
         else:
             self.repos = repos
+        self.spack_dir = spack_dir
         self.upstream_instance = upstream_instance
         self.system_name = system_name
         self.concretization_dir = concretization_dir if concretization_dir is None else resolve_path(concretization_dir)
diff --git a/dedal/spack_factory/SpackOperation.py b/dedal/spack_factory/SpackOperation.py
index b112ed28..0337fb82 100644
--- a/dedal/spack_factory/SpackOperation.py
+++ b/dedal/spack_factory/SpackOperation.py
@@ -20,8 +20,7 @@ import subprocess
 from pathlib import Path
 from dedal.configuration.SpackConfig import SpackConfig
 from dedal.enum.SpackConfigCommand import SpackConfigCommand
-from dedal.error_handling.exceptions import SpackInstallPackagesException, SpackConcertizeException, SpackGpgException, \
-    SpackReindexException
+from dedal.error_handling.exceptions import SpackInstallPackagesException, SpackConcertizeException
 from dedal.logger.logger_builder import get_logger
 from dedal.spack_factory.SpackCacheOperation import SpackCacheOperation
 from dedal.spack_factory.SpackEnvOperation import SpackEnvOperation
@@ -50,9 +49,10 @@ class SpackOperation:
         self.logger = logger
         self.spack_config.install_dir = spack_config.install_dir
         os.makedirs(self.spack_config.install_dir, exist_ok=True)
-        self.spack_dir = self.spack_config.install_dir / 'spack'
+        if self.spack_config.spack_dir is None:
+            self.spack_config.spack_dir = self.spack_config.install_dir / 'spack'
         self.env_path = None
-        self.spack_setup_script = "" if self.spack_config.use_spack_global else f"source {self.spack_dir / 'share' / 'spack' / 'setup-env.sh'}"
+        self.spack_setup_script = "" if self.spack_config.use_spack_global else f"source {self.spack_config.spack_dir / 'share' / 'spack' / 'setup-env.sh'}"
         self.spack_config.concretization_dir = spack_config.concretization_dir
         if self.spack_config.concretization_dir:
             os.makedirs(self.spack_config.concretization_dir, exist_ok=True)
@@ -71,7 +71,7 @@ class SpackOperation:
             self.spack_config.env.path.mkdir(parents=True, exist_ok=True)
         self.spack_tool_operation = SpackToolOperation(spack_config=spack_config,
                                                        spack_setup_script=self.spack_setup_script,
-                                                       spack_dir=self.spack_dir)
+                                                       spack_dir=self.spack_config.spack_dir)
         self.spack_env_operation = SpackEnvOperation(spack_config=spack_config,
                                                      spack_setup_script=self.spack_setup_script,
                                                      env_path=self.env_path,
@@ -79,7 +79,7 @@ class SpackOperation:
         self.spack_cache_operation = SpackCacheOperation(spack_config=spack_config,
                                                          spack_setup_script=self.spack_setup_script,
                                                          spack_command_on_env=self.spack_command_on_env,
-                                                         spack_dir=self.spack_dir)
+                                                         spack_dir=self.spack_config.spack_dir)
 
     def setup_spack_env(self):
         """
@@ -89,14 +89,14 @@ class SpackOperation:
             set_bashrc_variable('SYSTEMNAME', self.spack_config.system_name, self.spack_config.bashrc_path,
                                 logger=self.logger)
             os.environ['SYSTEMNAME'] = self.spack_config.system_name
-        if self.spack_dir.exists() and self.spack_dir.is_dir():
-            set_bashrc_variable('SPACK_USER_CACHE_PATH', str(self.spack_dir / ".spack"), self.spack_config.bashrc_path,
+        if self.spack_config.spack_dir.exists() and self.spack_config.spack_dir.is_dir():
+            set_bashrc_variable('SPACK_USER_CACHE_PATH', str(self.spack_config.spack_dir / ".spack"), self.spack_config.bashrc_path,
                                 logger=self.logger)
-            set_bashrc_variable('SPACK_USER_CONFIG_PATH', str(self.spack_dir / ".spack"), self.spack_config.bashrc_path,
+            set_bashrc_variable('SPACK_USER_CONFIG_PATH', str(self.spack_config.spack_dir / ".spack"), self.spack_config.bashrc_path,
                                 logger=self.logger)
             self.logger.debug('Added env variables SPACK_USER_CACHE_PATH and SPACK_USER_CONFIG_PATH')
         else:
-            self.logger.error(f'Invalid installation path: {self.spack_dir}')
+            self.logger.error(f'Invalid installation path: {self.spack_config.spack_dir}')
         # Restart the bash after adding environment variables
         if self.spack_config.env:
             self.spack_env_operation.setup_spack_environment()
-- 
GitLab