From c7cc08a28396c256b74cc2c94d91fd3de81b136c Mon Sep 17 00:00:00 2001
From: John Chilton <jmchilton@gmail.com>
Date: Mon, 3 Oct 2022 09:59:16 -0400
Subject: [PATCH] Home directory handling breaks when updating Galaxy to latest
 pulsar-galaxy-lib.

---
 pulsar/client/job_directory.py                               | 3 +++
 pulsar/managers/base/directory.py                            | 3 ++-
 pulsar/managers/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh | 2 +-
 pulsar/managers/util/job_script/__init__.py                  | 3 +++
 4 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/pulsar/client/job_directory.py b/pulsar/client/job_directory.py
index 6295727a..f9e136fa 100644
--- a/pulsar/client/job_directory.py
+++ b/pulsar/client/job_directory.py
@@ -42,6 +42,9 @@ class RemoteJobDirectory:
         else:
             self.job_directory = remote_staging_directory
 
+    def home_directory(self):
+        return self._sub_dir('home')
+
     def metadata_directory(self):
         return self._sub_dir('metadata')
 
diff --git a/pulsar/managers/base/directory.py b/pulsar/managers/base/directory.py
index 98e133e5..96a0055e 100644
--- a/pulsar/managers/base/directory.py
+++ b/pulsar/managers/base/directory.py
@@ -160,9 +160,10 @@ class DirectoryBaseManager(BaseManager):
             'galaxy_lib': self._galaxy_lib(),
             'preserve_python_environment': setup_params.get('preserve_galaxy_python_environment', False),
             'env_setup_commands': env_setup_commands,
-            'job_directory': self.job_directory(job_id).job_directory,
+            # job_diredctory not used by job_script and it calls the job directory working directory
             'working_directory': self.job_directory(job_id).working_directory(),
             'metadata_directory': self.job_directory(job_id).metadata_directory(),
+            'home_directory': self.job_directory(job_id).home_directory(),
             'job_id': job_id,
             'tmp_dir_creation_statement': self._tmp_dir(job_id),
         }
diff --git a/pulsar/managers/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh b/pulsar/managers/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
index 7b4d04d0..08d698ab 100644
--- a/pulsar/managers/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
+++ b/pulsar/managers/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
@@ -5,7 +5,7 @@ $headers
 _galaxy_setup_environment() {
     local _use_framework_galaxy="$1"
     _GALAXY_JOB_DIR="$working_directory"
-    _GALAXY_JOB_HOME_DIR="$working_directory/home"
+    _GALAXY_JOB_HOME_DIR="$home_directory"
     _GALAXY_JOB_TMP_DIR=$tmp_dir_creation_statement
     $env_setup_commands
     if [ "$GALAXY_LIB" != "None" -a "$_use_framework_galaxy" = "True" ]; then
diff --git a/pulsar/managers/util/job_script/__init__.py b/pulsar/managers/util/job_script/__init__.py
index 3d662811..d3512d9f 100644
--- a/pulsar/managers/util/job_script/__init__.py
+++ b/pulsar/managers/util/job_script/__init__.py
@@ -93,6 +93,9 @@ def job_script(template=DEFAULT_JOB_FILE_TEMPLATE, **kwds):
         kwds["instrument_pre_commands"] = job_instrumenter.pre_execute_commands(working_directory) or ""
         kwds["instrument_post_commands"] = job_instrumenter.post_execute_commands(working_directory) or ""
 
+    # Setup home directory var
+    kwds["home_directory"] = kwds.get("home_directory", os.path.join(kwds["working_directory"], "home"))
+
     template_params = OPTIONAL_TEMPLATE_PARAMS.copy()
     template_params.update(**kwds)
     env_setup_commands_str = "\n".join(template_params["env_setup_commands"])
-- 
GitLab