From 6706a7361fece0ce640db3358e727c9ed3e8b996 Mon Sep 17 00:00:00 2001 From: Abhaas Goyal Date: Tue, 13 Feb 2024 23:16:29 +1100 Subject: [PATCH] Make build step work for hh5 environment --- benchcab/benchcab.py | 15 +++++++++++++++ benchcab/internal.py | 3 +++ 2 files changed, 18 insertions(+) diff --git a/benchcab/benchcab.py b/benchcab/benchcab.py index ae2643f..9d48e34 100644 --- a/benchcab/benchcab.py +++ b/benchcab/benchcab.py @@ -48,6 +48,13 @@ def __init__( self._models: list[Model] = [] self.tasks: list[Task] = [] # initialise fluxsite tasks lazily + self._set_environment() + + def _set_environment(self): + """Sets environment variables on current user environment.""" + # Prioritize system binaries over externally set $PATHs (#220) + os.environ["PATH"] = f"{':'.join(internal.SYSTEM_PATHS)}:{os.environ['PATH']}" + def _validate_environment(self, project: str, modules: list): """Performs checks on current user environment.""" if not self.validate_env: @@ -85,6 +92,14 @@ def _validate_environment(self, project: str, modules: list): print(f"Error: module ({modname}) is not available.") sys.exit(1) + system_paths = os.getenv("PATH").split(":")[: len(internal.SYSTEM_PATHS)] + if set(system_paths) != set(internal.SYSTEM_PATHS): + msg = f"""Error: System paths are not prioritized over user-defined paths + Currently set as: {system_paths} + The required system paths are: {internal.SYSTEM_PATHS} + """ + raise EnvironmentError(msg) + all_site_ids = set( internal.MEORG_EXPERIMENTS["five-site-test"] + internal.MEORG_EXPERIMENTS["forty-two-site-test"] diff --git a/benchcab/internal.py b/benchcab/internal.py index aeea3e2..4f2ebc3 100644 --- a/benchcab/internal.py +++ b/benchcab/internal.py @@ -28,6 +28,9 @@ # Path to the user's current working directory CWD = Path.cwd() +# Default system paths in Unix +SYSTEM_PATHS = ["/bin", "/usr/bin", "/usr/local/bin"] + # Path to the user's home directory HOME_DIR = Path(os.environ["HOME"])