diff options
Diffstat (limited to 'gn/packages/cwl.scm')
-rw-r--r-- | gn/packages/cwl.scm | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/gn/packages/cwl.scm b/gn/packages/cwl.scm index a327187..fe5fcb2 100644 --- a/gn/packages/cwl.scm +++ b/gn/packages/cwl.scm @@ -1,10 +1,19 @@ (define-module (gn packages cwl) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix packages) + #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (gnu packages) - #:use-module (gnu packages bioinformatics)) + #:use-module (gnu packages bioinformatics) + #:use-module (gnu packages docker) + #:use-module (gnu packages node) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages serialization) + #:use-module (gnu packages time) + #:use-module (gn packages python)) (define-public cwl-runner @@ -28,3 +37,76 @@ "Common workflow language alternate entry point to allow cwl-runner script as an implementation-agnostic script interpreter.") (license license:asl2.0))) + +;; python-toil tightly integrates with cwltool using it as a library. So, +;; create a library version of cwltool where inputs become propagated inputs. +(define-public python-cwltool + (package + (inherit cwltool) + (name "python-cwltool") + (inputs + (list node)) + (propagated-inputs + (modify-inputs (package-inputs cwltool) + (delete "node"))))) + +(define-public python-toil + (package + (name "python-toil") + (version "6.1.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "toil" version)) + (sha256 + (base32 + "0hwaihnncsfxw0sf3iigvgw6nylrb56lpk8qjadkgazr98dsp4ha")))) + (build-system pyproject-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'disable-optional-features + (lambda _ + (substitute* "requirements-cwl.txt" + ;; Loosen version restrictions on ruamel.yaml. + (("ruamel.yaml[<>=.,[:digit:]]*\n") "ruamel.yaml\n") + ;; Remove optional dependency on galaxy-util and + ;; galaxy-tool-util. TODO: Package these and restore these + ;; dependencies. + (("galaxy-util[^\n]*") "") + (("galaxy-tool-util[^\n]*") "")) + ;; Disable optional wdl, wes and mesos features. We don't yet + ;; have dependencies packaged for them. TODO: Package these + ;; dependencies and enable these features. + (substitute* "setup.py" + (("\"wdl\",") "") + (("toil-cwl-runner = toil.cwl.cwltoil:main \\[cwl\\]") + "toil-cwl-runner = toil.cwl.cwltoil:main") + (("'toil-wdl-runner = toil.wdl.wdltoil:main \\[wdl\\]',") "") + (("'toil-wes-cwl-runner = toil.server.cli.wes_cwl_runner:main \\[server\\]',") "") + (("'_toil_mesos_executor = toil.batchSystems.mesos.executor:main \\[mesos\\]',") ""))))))) + (propagated-inputs + (list python-addict + python-cachecontrol + python-configargparse + python-cwltool + python-dateutil + python-dill + python-docker + python-enlighten + python-psutil + python-pypubsub + python-pytz + python-pyyaml + python-requests + python-ruamel.yaml + python-typing-extensions-4.10 + python-urllib3)) + (home-page "https://github.com/DataBiosphere/toil") + (synopsis "Scalable, efficient and cross-platform workflow engine") + (description "Toil is a scalable, efficient, cross-platform pipeline +management system, written entirely in Python, and designed around the +principles of functional programming.") + (license (list license:asl2.0 ;; main license + license:expat)))) ;; src/toil/batchSystems/lsf.py and + ;; src/toil/batchSystems/lsfHelper.py |