diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index 266b6387be0..f8410aebe99 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -1495,6 +1495,12 @@ class JobWrapper( object ): just copy these files directly to the ulimate destination. """ return output_path + + @property + def requires_setting_metadata( self ): + if self.tool: + return self.tool.requires_setting_metadata + return False class TaskWrapper(JobWrapper): diff --git a/lib/galaxy/jobs/runners/__init__.py b/lib/galaxy/jobs/runners/__init__.py index 4a86cf27055..f3c5e274366 100644 --- a/lib/galaxy/jobs/runners/__init__.py +++ b/lib/galaxy/jobs/runners/__init__.py @@ -176,7 +176,7 @@ class BaseJobRunner( object ): # Append metadata setting commands, we don't want to overwrite metadata # that was copied over in init_meta(), as per established behavior - if include_metadata: + if include_metadata and job_wrapper.requires_setting_metadata: commands += "; cd %s; " % os.path.abspath( os.getcwd() ) commands += job_wrapper.setup_external_metadata( exec_dir = os.path.abspath( os.getcwd() ), diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index 62b982b9ea5..9679a26433f 100755 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -971,6 +971,7 @@ class Tool( object, Dictifiable ): """ tool_type = 'default' + requires_setting_metadata = True default_tool_action = DefaultToolAction dict_collection_visible_keys = ( 'id', 'name', 'version', 'description' ) @@ -3134,6 +3135,8 @@ class SetMetadataTool( Tool ): dataset. """ tool_type = 'set_metadata' + requires_setting_metadata = False + def exec_after_process( self, app, inp_data, out_data, param_dict, job = None ): for name, dataset in inp_data.iteritems(): external_metadata = JobExternalOutputMetadataWrapper( job )