Age | Commit message (Collapse) | Author |
|
Build out propagator network eagerly descending into the lowest
subworkflows. This will come in handy later on to build the G-exp
scripts ahead of time before the workflow is run.
* ravanan/workflow.scm (<scheduler-proc>)[cwl]: Rename to
cwl-or-propnet.
[formal-inputs, formal-outputs]: New fields.
* ravanan/workflow.scm (workflow->scheduler-proc): New function.
(workflow-class->propnet): Build out propagator network eagerly.
(workflow-scheduler)[schedule]: Handle eagerly built-out propagator
network <schedule-proc> objects.
(run-workflow): Use workflow->scheduler-proc to convert workflow to
<scheduler-proc> object.
|
|
command-line-tool->propagator was packaging up both CommandLineTool
and Workflow class workflows into <scheduler-proc> objects. It was
named erroneously. We now merge it into step->propagator.
* ravanan/workflow.scm (command-line-tool->propagator): Merge into ...
(workflow-class->propnet)[step->propagator]: ... here.
|
|
We build the script using only the CommandLineTool workflow itself,
and not its inputs. We pass the inputs in through a WORKFLOW_INPUTS
environment variable. To maintain bullet-proof caching, we construct
ravanan store paths by hashing both the script and the inputs
together. This change paves the way to pre-building all scripts ahead
of time.
* ravanan/command-line-tool.scm (<command-line-binding>,
command-line-binding->args): Move to (ravanan work command-line-tool).
(run-command-line-tool): Do not pass inputs to
build-command-line-tool-script. Call step-store-files-directory
instead of script->store-files-directory, step-store-data-file instead
of script->store-data-file, step-store-stdout-file instead of
script->store-stdout-file and step-store-stderr-file instead of
script->store-stderr-file. Put inputs into job state objects. Pass
inputs to the script through the WORKFLOW_INPUTS environment variable.
(capture-command-line-tool-output): Accept inputs. Call
step-store-data-file instead of script->store-data-file and
step-store-files-directory instead of script->store-files-directory.
(copy-input-files-gexp): Delete function.
(build-command-line-tool-script): Do not accept inputs; get them from
the WORKFLOW_INPUTS environment variable.
[coerce-argument]: New function.
[run-command-gexp]: Build command inside the G-expression.
[gexp]{copy-input-files}: New function.
* ravanan/job-state.scm (<single-machine-job-state>)[inputs]: New
field.
* ravanan/job-state.scm (<slurm-job-state>)[inputs]: New field.
* ravanan/job-state.scm (job-state-inputs): New public function.
* ravanan/store.scm: Import (srfi srfi-71), (gcrypt hash) and (guix
build utils).
(sha1-hash-sexp): New function.
(script->store-files-directory, script->store-data-file,
script->store-stdout-file, script->store-stderr-file): Delete
functions.
(step-store-files-directory, step-store-data-file,
step-store-stdout-file, step-store-stderr-file): New public functions.
* ravanan/work/command-line-tool.scm: Import (srfi srfi-9 gnu)
and (ravanan work ui).
* ravanan/workflow.scm (&job-failure)[inputs]: New field.
* ravanan/workflow.scm (workflow-scheduler)[poll]: Put inputs into
&job-failure condition.
[capture-output]: Call step-store-stdout-file instead of
script->store-stdout-file and step-store-stderr-file instead of
script->store-stderr-file. Pass inputs to
capture-command-line-tool-output.
(run-workflow): Call step-store-stdout-file instead of
script->store-stdout-file and step-store-stderr-file instead of
script->store-stderr-file.
|
|
* ravanan/command-line-tool.scm (run-command-line-tool): Define
environment only once.
|
|
* ravanan/store.scm: Import (guix base16) and (guix base32).
(intern-file): Encode store paths using base32 instead of base16.
|
|
* ravanan/work/command-line-tool.scm (sha1-hash-bytes): New public
function.
(sha1-hash): Use sha1-hash-bytes.
|
|
* ravanan/workflow.scm (workflow-scheduler): Bind class variable only
in the else arm of the if condition.
|
|
User errors are caused by incorrect input from the user, rather than
by actual bugs in the code. user-error is named after the similarly
named elisp function.
* bin/ravanan: Import (ravanan work ui).
(%options, invalid-option, main): Use user-error instead of error.
|
|
* ravanan/propnet.scm (<propagator>, <propnet-state>): Add record
printers.
|
|
* ravanan/propnet.scm (propnet?, propagator?, scheduler?,
state+status?): Export.
|
|
* bin/ravanan (print-short-usage): New function.
(main): Print usage when arguments are not matched.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script):[cores]:
Re-indent.
|
|
* ravanan/command-line-tool.scm (copy-input-files-gexp): Make inputs
subdirectory only if it does not exist.
|
|
* ravanan/command-line-tool.scm (copy-input-files-gexp): Copy input
files into their own subdirectories.
|
|
* bin/ravanan: Import (ravanan work vectors).
|
|
This way, user-supplied files and intermediate files generated by
steps are stored the same way. Also, basename is preserved and there
is no need to strip store hashes from filenames.
* ravanan/command-line-tool.scm (copy-input-files-gexp): Use basename
instead of store-item-name.
* ravanan/store.scm (intern-file): Intern files into a directory of
their own.
(%store-hash-length, store-item-name): Delete variables.
* ravanan/workflow.scm (resolve-inputs): Use basename instead of
store-item-name.
|
|
Without stripping the hashes, the primary and secondary files have
different hash prefixes. This interferes with successful command
execution.
* ravanan/command-line-tool.scm (copy-input-files-gexp): Strip store
hash when copying files out of the store into the temporary inputs
directory. Update basename, nameroot and nameext accordingly.
|
|
* ravanan/store.scm (intern-file): Update basename, nameroot and
nameext.
|
|
* ravanan/workflow.scm (resolve-inputs)[match-secondary-file-pattern]:
Accept secondary-file. Call secondary-path.
[check-secondary-files]: Pass secondary-file, instead of just the
pattern, to match-secondary-file-pattern.
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script): Move
to ...
* ravanan/work/command-line-tool.scm (secondary-path): ... here.
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script): Pass
secondary-file, not pattern, to secondary-path.
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script):
Stage secondary files too.
|
|
* ravanan/reader.scm (normalize-input): Use canonicalize-file-value.
|
|
* ravanan/work/command-line-tool.scm (canonicalize-file-value):
Comment on trusting the checksum.
|
|
* ravanan/work/command-line-tool.scm (canonicalize-file-value):
Canonicalize secondary files too.
|
|
* ravanan/work/command-line-tool.scm (canonicalize-file-value): Handle
absent path and location correctly.
|
|
* ravanan/reader.scm (location->path): Move to ...
* ravanan/work/command-line-tool.scm (location->path): ... here.
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script): Move
canonicalize-file-value to ...
* ravanan/work/command-line-tool.scm (canonicalize-file-value): ...
here.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[secondary-path]:
New function.
[capture-secondary-file]: Use secondary-path.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[stage-file]:
New function.
[stage-files]: Use stage-file.
|
|
* ravanan/store.scm: Import (srfi srfi-26) and (ravanan work vectors).
(intern-file): Intern secondary files.
(%store-hash-length): New variable.
(store-item-name): New public function.
* ravanan/workflow.scm (resolve-inputs)[match-secondary-file-pattern]:
Strip store hashes before matching secondary file patterns.
|
|
* .dir-locals.el (scheme-mode): Indent call-with-atomic-output-file
correctly.
|
|
* tests/reader.scm ("Normalize array of File arrays type formal
output"): Replace normalize-formal-input with normalize-formal-output.
|
|
* tests/reader.scm: Import (ice-9 filesystem), (web uri), (ravanan
work command-line-tool) and (ravanan work utils).
(normalize-input): New variable.
("Normalize inputs with only location", "Normalize inputs with only
path"): New tests.
|
|
It is the reader's job to completely canonicalize File type inputs.
This should not be done later when the workflow is executing.
* ravanan/reader.scm: Import (web uri).
(normalize-formal-input): Normalize default value.
(location->path): New function.
(normalize-input): Canonicalize File type input completely.
* ravanan/workflow.scm (workflow-scheduler): Update comment about
partially specified File objects.
(location->path): Delete function.
(resolve-inputs): Do not canonicalize File type inputs; they already
are.
|
|
Separate functions are easier to test.
* ravanan/reader.scm (read-inputs): Spin off input normalization into
...
(normalize-input): ... new function.
|
|
* README.md (Contributing): New section.
|
|
* ravanan/command-line-tool.scm (software-packages->environment): Pass
package versions as separate argument to lookup-inferior-packages.
|
|
* ravanan/command-line-tool.scm (specifications->environment): Rename
to software-packages->environment.
(software-packages->environment): Accept vector of SoftwarePackage
association lists.
(build-command-line-tool-script): Move into
software-packages->environment. Pass vector of SoftwarePackage
association lists to software-packages->environment.
|
|
* .guix/ravanan-package.scm: Do no import (gnu packages
package-management), (gnu packages gnupg), (gnu packages guile), (gnu
packages guile-xyz), (gnu packages node), (guix build-system
gnu), (guix licenses) and (guix profiles). Import ravanan from (gnu
packages bioinformatics) with a guix: prefix.
* .guix/ravanan-package.scm (ravanan): Inherit from guix:ravanan.
|
|
This reverts commit 17b88bd2ca1411fbf2799e0e194d7052c059a36b.
(ravanan command-line-tool) is required for manifest-file-error?.
|
|
* README.md: Mention use of caching for developing workflows.
|
|
We crop the image to remove Siva and Parvathi.
* images/ravanan-king-of-lanka.jpg: Crop.
|
|
* releases/ravanan-0.1.0.tar.lz, releases/ravanan-0.1.0.tar.lz.asc:
New files.
|
|
* bin/ravanan (print-usage): Add newline at the end.
|
|
* Makefile (GIT, GPG, LZIP, config_file_template, distribute_files,
dist_archive): New variables.
(dist, distsign, $(dist_archive), %.asc): New rules.
|
|
config.scm is a generated source file. Treat it the same as a
hand-written source file creates problems when generating release
tarballs.
* Makefile (sources): Remove $(config_file).
(objects): Add $(config_file:.scm=.go).
(install): Depend on $(config_file) and install it.
|
|
* README.md: Add table of contents.
|
|
* README.md: Add image of Ravanan.
(License): Mention license and attribution for image.
* images/ravanan-king-of-lanka.jpg, images/LICENSE.md: New files.
|
|
* README.md (Building from source): Change "do" to "do so".
|