|
32 | 32 | relocateOutputs, scandeps, shortname, use_custom_schema,
|
33 | 33 | use_standard_schema)
|
34 | 34 | from .resolver import ga4gh_tool_registries, tool_resolver
|
| 35 | +from .software_requirements import DependenciesConfiguration |
35 | 36 | from .stdfsaccess import StdFsAccess
|
36 | 37 | from .update import ALLUPDATES, UPDATES
|
37 |
| -from .utils import get_feature |
38 |
| -try: |
39 |
| - from galaxy.tools.deps.requirements import ToolRequirement, ToolRequirements |
40 |
| - from galaxy.tools import deps |
41 |
| -except ImportError: |
42 |
| - ToolRequirement = None # type: ignore |
43 |
| - ToolRequirements = None # type: ignore |
44 |
| - deps = None |
| 38 | + |
45 | 39 |
|
46 | 40 | _logger = logging.getLogger("cwltool")
|
47 | 41 |
|
@@ -863,102 +857,14 @@ def locToPath(p):
|
863 | 857 | _logger.addHandler(defaultStreamHandler)
|
864 | 858 |
|
865 | 859 |
|
866 |
| -COMMAND_WITH_DEPENDENCIES_TEMPLATE = string.Template("""#!/bin/bash |
867 |
| -$handle_dependencies |
868 |
| -python "run_job.py" "job.json" |
869 |
| -""") |
870 |
| - |
871 |
| - |
872 | 860 | def find_default_container(args, builder):
|
| 861 | + default_container = None |
873 | 862 | if args.default_container:
|
874 |
| - return args.default_container |
| 863 | + default_container = args.default_container |
875 | 864 | elif args.beta_use_biocontainers:
|
876 |
| - try: |
877 |
| - from galaxy.tools.deps.containers import ContainerRegistry, AppInfo, ToolInfo, DOCKER_CONTAINER_TYPE |
878 |
| - except ImportError: |
879 |
| - raise Exception("galaxy-lib not found") |
880 |
| - |
881 |
| - app_info = AppInfo( |
882 |
| - involucro_auto_init=True, |
883 |
| - enable_beta_mulled_containers=True, |
884 |
| - container_image_cache_path=".", |
885 |
| - ) # type: AppInfo |
886 |
| - container_registry = ContainerRegistry(app_info) # type: ContainerRegistry |
887 |
| - requirements = _get_dependencies(builder) |
888 |
| - tool_info = ToolInfo(requirements=requirements) # type: ToolInfo |
889 |
| - container_description = container_registry.find_best_container_description([DOCKER_CONTAINER_TYPE], tool_info) |
890 |
| - if container_description: |
891 |
| - return container_description.identifier |
892 |
| - |
893 |
| - return None |
894 |
| - |
895 |
| - |
896 |
| -class DependenciesConfiguration(object): |
897 |
| - |
898 |
| - def __init__(self, args): |
899 |
| - # type: (argparse.Namespace) -> None |
900 |
| - conf_file = getattr(args, "beta_dependency_resolvers_configuration", None) |
901 |
| - tool_dependency_dir = getattr(args, "beta_dependencies_directory", None) |
902 |
| - conda_dependencies = getattr(args, "beta_conda_dependencies", None) |
903 |
| - if conf_file is not None and os.path.exists(conf_file): |
904 |
| - self.use_tool_dependencies = True |
905 |
| - if not tool_dependency_dir: |
906 |
| - tool_dependency_dir = os.path.abspath(os.path.dirname(conf_file)) |
907 |
| - self.tool_dependency_dir = tool_dependency_dir |
908 |
| - self.dependency_resolvers_config_file = conf_file |
909 |
| - elif conda_dependencies: |
910 |
| - if not tool_dependency_dir: |
911 |
| - tool_dependency_dir = os.path.abspath("./cwltool_deps") |
912 |
| - self.tool_dependency_dir = tool_dependency_dir |
913 |
| - self.use_tool_dependencies = True |
914 |
| - self.dependency_resolvers_config_file = None |
915 |
| - else: |
916 |
| - self.use_tool_dependencies = False |
917 |
| - |
918 |
| - @property |
919 |
| - def config_dict(self): |
920 |
| - return { |
921 |
| - 'conda_auto_install': True, |
922 |
| - 'conda_auto_init': True, |
923 |
| - } |
924 |
| - |
925 |
| - def build_job_script(self, builder, command): |
926 |
| - # type: (Any, List[str]) -> Text |
927 |
| - if deps is None: |
928 |
| - raise Exception("galaxy-lib not found") |
929 |
| - tool_dependency_manager = deps.build_dependency_manager(self) # type: deps.DependencyManager |
930 |
| - dependencies = _get_dependencies(builder) |
931 |
| - handle_dependencies = "" # str |
932 |
| - if dependencies: |
933 |
| - handle_dependencies = "\n".join(tool_dependency_manager.dependency_shell_commands(dependencies, job_directory=builder.tmpdir)) |
934 |
| - |
935 |
| - template_kwds = dict(handle_dependencies=handle_dependencies) # type: Dict[str, str] |
936 |
| - job_script = COMMAND_WITH_DEPENDENCIES_TEMPLATE.substitute(template_kwds) |
937 |
| - return job_script |
938 |
| - |
939 |
| - |
940 |
| -def _get_dependencies(builder): |
941 |
| - # type: (Any) -> List[ToolRequirement] |
942 |
| - (software_requirement, _) = get_feature(builder, "SoftwareRequirement") |
943 |
| - dependencies = [] # type: List[ToolRequirement] |
944 |
| - if software_requirement and software_requirement.get("packages"): |
945 |
| - packages = software_requirement.get("packages") |
946 |
| - for package in packages: |
947 |
| - version = package.get("version", None) |
948 |
| - if isinstance(version, list): |
949 |
| - if version: |
950 |
| - version = version[0] |
951 |
| - else: |
952 |
| - version = None |
953 |
| - specs = [{"uri": s} for s in package.get("specs", [])] |
954 |
| - dependencies.append(ToolRequirement.from_dict(dict( |
955 |
| - name=package["package"].split("#")[-1], |
956 |
| - version=version, |
957 |
| - type="package", |
958 |
| - specs=specs, |
959 |
| - ))) |
960 |
| - |
961 |
| - return ToolRequirements.from_list(dependencies) |
| 865 | + default_container = get_container_from_software_requirements(args, builder) |
| 866 | + |
| 867 | + return default_container |
962 | 868 |
|
963 | 869 |
|
964 | 870 | if __name__ == "__main__":
|
|
0 commit comments