diff --git a/lib/galaxy/tools/data_manager/manager.py b/lib/galaxy/tools/data_manager/manager.py index 4437a8e0002..28a1af70e09 100644 --- a/lib/galaxy/tools/data_manager/manager.py +++ b/lib/galaxy/tools/data_manager/manager.py @@ -57,11 +57,19 @@ class DataManagers(object): tool_path = '.' self.tool_path = tool_path for data_manager_elem in root.findall('data_manager'): - self.load_manager_from_elem(data_manager_elem, tool_path=self.tool_path) + if not self.load_manager_from_elem(data_manager_elem, tool_path=self.tool_path): + # Wasn't able to load manager, could happen when galaxy is managed by planemo. + # Fall back to loading relative to the data_manager_conf.xml file + tool_path = os.path.dirname(xml_filename) + self.load_manager_from_elem(data_manager_elem, tool_path=tool_path) def load_manager_from_elem(self, data_manager_elem, tool_path=None, add_manager=True): try: data_manager = DataManager(self, data_manager_elem, tool_path=tool_path) + except IOError as e: + if e.errno == errno.ENOENT: + # File does not exist + return None except Exception as e: log.error("Error loading data_manager '%s':\n%s" % (e, util.xml_to_string(data_manager_elem))) return None diff --git a/lib/galaxy/tools/loader_directory.py b/lib/galaxy/tools/loader_directory.py index 4820f17f4b2..1cdbc7d6b35 100644 --- a/lib/galaxy/tools/loader_directory.py +++ b/lib/galaxy/tools/loader_directory.py @@ -19,6 +19,7 @@ PATH_AND_RECURSIVE_ERROR = "Cannot specify a single file and recursive." LOAD_FAILURE_ERROR = "Failed to load tool with path %s." TOOL_LOAD_ERROR = object() TOOL_REGEX = re.compile(r"