From 0d6d06c0c7b230f50ef096d2f874a7e74f145afd Mon Sep 17 00:00:00 2001
From: John Chilton <jmchilton@gmail.com>
Date: Tue, 7 Apr 2015 00:36:44 -0400
Subject: [PATCH] Rework run-as-real to work when installed via pip.

---
 pulsar/managers/queued_external_drmaa.py | 28 +++++++++++++++++++++---
 setup.py                                 |  3 +++
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/pulsar/managers/queued_external_drmaa.py b/pulsar/managers/queued_external_drmaa.py
index ffe8a1e7..41aee69e 100644
--- a/pulsar/managers/queued_external_drmaa.py
+++ b/pulsar/managers/queued_external_drmaa.py
@@ -5,6 +5,8 @@ from .base.base_drmaa import BaseDrmaaManager
 from .util.sudo import sudo_popen
 from ..managers import status
 
+from galaxy.tools.deps.commands import which
+
 from logging import getLogger
 log = getLogger(__name__)
 
@@ -21,9 +23,9 @@ class ExternalDrmaaQueueManager(BaseDrmaaManager):
 
     def __init__(self, name, app, **kwds):
         super(ExternalDrmaaQueueManager, self).__init__(name, app, **kwds)
-        self.chown_working_directory_script = kwds.get('chown_working_directory_script', DEFAULT_CHOWN_WORKING_DIRECTORY_SCRIPT)
-        self.drmaa_kill_script = kwds.get('drmaa_kill_script', DEFAULT_DRMAA_KILL_SCRIPT)
-        self.drmaa_launch_script = kwds.get('drmaa_launch_script', DEFAULT_DRMAA_LAUNCH_SCRIPT)
+        self.chown_working_directory_script = _handle_default(kwds.get('chown_working_directory_script', None), "chown_working_directory")
+        self.drmaa_kill_script = _handle_default(kwds.get('drmaa_kill_script', None), "drmaa_kill")
+        self.drmaa_launch_script = _handle_default(kwds.get('drmaa_launch_script', None), "drmaa_launch")
         self.production = kwds.get('production', "true").lower() != "false"
         self.reclaimed = {}
         self.user_map = {}
@@ -82,3 +84,23 @@ class ExternalDrmaaQueueManager(BaseDrmaaManager):
         stdout, stderr = p.communicate()
         assert p.returncode == 0, "%s, %s" % (stdout, stderr)
         return stdout
+
+
+def _handle_default(value, script_name):
+    """ There are two potential variants of these scripts,
+    the Bash scripts that are meant to be run within PULSAR_ROOT
+    for older-style installs and the binaries created by setup.py
+    as part of a proper pulsar installation.
+
+    This method first looks for the newer style variant of these
+    scripts and returns the full path to them if needed and falls
+    back to the bash scripts if these cannot be found.
+    """
+    if value:
+        return value
+
+    installed_script = which("pulsar-%s" % script_name.replace("_", "-"))
+    if installed_script:
+        return installed_script
+    else:
+        return "scripts/%s.bash" % script_name
diff --git a/setup.py b/setup.py
index fc0f3e5f..aea7e873 100644
--- a/setup.py
+++ b/setup.py
@@ -89,6 +89,9 @@ setup(
         pulsar-main=pulsar.main:main
         pulsar-check=pulsar.client.test.check:main
         pulsar-config=pulsar.scripts.config:main
+        pulsar-drmaa-launch=pulsar.scripts.drmaa_launch:main
+        pulsar-drmaa-kill=pulsar.scripts.drmaa_kill:main
+        pulsar-chown-working-directory=pulsar.scripts.chown_working_directory:main
     ''',
     scripts=scripts,
     package_data={'pulsar': [
-- 
GitLab