Age | Commit message (Collapse) | Author |
|
* ravanan/propnet.scm: Do not import (srfi srfi-26).
|
|
* ravanan/workflow.scm: Do not import (ravanan reader).
|
|
* ravanan/command-line-tool.scm (check-requirements): Remove redundant
newline after warning.
|
|
* ravanan/command-line-tool.scm (canonicalize-json): New function.
(build-command-line-tool-script): Use canonicalize-json.
|
|
Implementing subworkflows recursively as sub-propnets is the correct
and elegant ouroboros way. Earlier, we were flattening workflows into
their constituent CommandLineTools steps. Among many other issues,
this approach ran into problems when scattering over subworkflows.
* ravanan/workflow.scm: Import assertion-violation from (rnrs base).
(<command-line-tool-state>, <workflow-state>): New record types.
(workflow-class->propnet): New function.
(workflow-class->propagators, workflow->command-line-tool-steps):
Delete functions.
(workflow-scheduler): Represent state using <command-line-tool-state>
and <workflow-state>. Recursively evaluate compound propagators as
propnets.
(run-workflow): Use capture-output and poll from scheduler.
|
|
* ravanan/workflow.scm (inherit-requirements-and-hints): Pass a list,
not two vectors, to fold.
|
|
This enables sub-propnets (or compound propagators) to share the same
scheduler.
* ravanan/propnet.scm (activate-propagator): Accept scheduler as
argument instead of the schedule function.
(poll-propnet): Pass scheduler as argument instead of its schedule
function.
|
|
We resolve inputs in run-workflow before doing anything else. We thus
avoid bugs due to partially or insufficiently resolved inputs.
* ravanan/command-line-tool.scm: Do not import (web uri).
(%store-files-directory, %store-data-directory,
%store-logs-directory): Export.
(location->path, resolve-inputs, intern-file): Move to (ravanan
workflow).
(build-command-line-tool-script): Do not call resolve-inputs.
* ravanan/workflow.scm: Import (web uri) and (ravanan work types).
(run-workflow): Call resolve-inputs.
|
|
* ravanan/job-state.scm: Add to the commentary that the job-state
records are per batch system.
|
|
* ravanan/work/vectors.scm: Import (srfi srfi-26).
(vector-mapn): New public function.
|
|
* ravanan/work/vectors.scm: Import vector-fold from (srfi srfi-43)
with prefix.
(vector-fold): New public function.
(vector-map->list, vector-append-map, vector-append-map->list): Use
vector-fold.
|
|
* ravanan/job-state.scm (job-state-script): Re-indent.
|
|
location is an implementation-dependent URI. path is a real filesystem
path.
* ravanan/command-line-tool.scm (copy-input-files-gexp): Copy path,
not location.
|
|
* ravanan/work/vectors.scm (vector-member): New public function.
|
|
* ravanan/workflow.scm (workflow-scheduler)[schedule]: Use bound
variables name and cwl instead of calling getters scheduler-proc-name
and scheduler-proc-cwl again.
|
|
* ravanan/command-line-tool.scm: Do not import (rnrs
conditions), (rnrs exceptions) and (ravanan propnet).
(command-line-tool-scheduler): Move to (ravanan workflow) as
workflow-scheduler.
(&job-failure, <scheduler-proc>): Move to (ravanan workflow).
(script->store-stdout-file, script->store-stderr-file,
capture-command-line-tool-output): Export functions.
* ravanan/workflow.scm: Import define-condition-type from (rnrs
conditions), (rnrs exceptions), (srfi srfi-9 gnu) and (ravanan
job-state).
(run-workflow): Call workflow-scheduler instead of
command-line-tool-scheduler.
|
|
This will come in handy later when we implement compound
propagators (propagators that are themselves a propagator network).
* ravanan/command-line-tool.scm (command-line-tool-scheduler)[poll]:
Return two values---the status and the updated state.
* ravanan/job-state.scm (job-state-status): Return two values---the
status and the updated state.
* ravanan/propnet.scm (partition-map): New function.
(poll-propnet): Update state of a propagator in flight.
|
|
(ravanan propnet) now presents a polling interface to the outside
world. Instead of computing the entire propagator network in one
function call, it needs to be polled repeatedly until it is done.
Hence, the polling logic (such as the polling interval) needs to be
outside (ravanan propnet).
* ravanan/propnet.scm (<scheduler>)[poll-interval]: Delete field.
(<propnet-state>): New record type.
(schedule-propnet, capture-propnet-output): New public functions.
(run-propnet): Rename to poll-propnet; return status and state values
instead of fulling computing the propnet.
* ravanan/command-line-tool.scm (%job-poll-interval): Move to (ravanan
workflow).
(command-line-tool-scheduler): Do not initialize poll-interval in
scheduler.
* ravanan/workflow.scm: Import (srfi srfi-71).
(run-workflow): Use the new polling interface to the propnet.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[stage-files,
set-staged-path]: New functions.
After staging, update path to staged input files.
|
|
* ravanan/command-line-tool.scm (build-command): Pass id argument to
collect-bindings. Defer access of input values to runtime.
[collect-bindings]: Accept id argument.
[input+type-tree+binding->command-line-binding]: Rename to
id+input+type-tree+binding->command-line-binding. Accept id argument
and return G-expressions for command-line-binding values.
(command-line-binding->args): Defer access of input values to runtime.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[canonicalize-file-value]:
Separate out file copying into ...
[copy-file-value]: ... new function.
[capture-outputs-gexp, capture-secondary-file, path->value]: Call
copy-file-value after canonicalize-file-value.
|
|
* ravanan/utils.scm: Move to ...
* ravanan/work/utils.scm (json-ref): ... here.
* ravanan/slurm-api.scm: Import (ravanan work utils) instead
of (ravanan utils).
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script): Add
missing workflow-output-directory argument to canonicalize-file-value.
|
|
* ravanan/work/utils.scm (alist=?): New public function.
|
|
* ravanan/propnet.scm (run-propnet): Add comment describing state
machine implementation.
|
|
* bin/ravanan (read-jwt): Explain why we support the SLURM_JWT=token
format.
|
|
* bin/ravanan: Import (srfi srfi-26) and (ravanan utils).
(read-jwt): Support SLURM_JWT=token format.
|
|
* bin/ravanan (read-jwt): New function.
(main): Call read-jwt.
|
|
* ravanan/utils.scm (string-trim-prefix): New public function.
|
|
*
ravanan/command-line-tool.scm (resolve-inputs)[canonicalize-file-value],
(build-command-line-tool-script)[canonicalize-file-value]: Add
nameroot and nameext fields.
|
|
* ravanan/command-line-tool.scm (collect-input-files): Delete
function.
|
|
stdout-output->value cannot access the inputs variable, and thus
will fail when stdout-filename is a parameter reference that needs to
be evaluated. To avoid this, pass it in as an argument.
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[stdout-output->value]:
Accept stdout-filename as argument instead of G-expression embedding.
Pass stdout-filename as argument to stdout-output->value.
|
|
* ravanan/command-line-tool.scm (resolve-inputs)[resolve]: When
recursing, create a vector of secondary files.
|
|
* ravanan/job-state.scm (job-state-status): Pass on slurm API endpoint
and jwt recursively.
|
|
* Makefile (config_file): Delete variable.
(sources): Remove $(config_file).
(all, %.go): Do not depend on $(config_file).
(clean): Do not delete $(config_file).
* ravanan/config.scm, ravanan/config.scm.in: Delete files.
* ravanan/command-line-tool.scm: Do not import (ravanan config).
|
|
*
ravanan/command-line-tool.scm (resolve-inputs)[canonicalize-file-input,
match-secondary-file-pattern, check-secondary-files]: New functions.
[resolve]: Accept maybe-secondary-files argument.
Check that secondary files are provided with File type inputs.
(copy-input-files-gexp)[copy-input-files]: New function.
Copy secondary files to inputs directory.
(build-command-line-tool-script)[capture-outputs-gexp]: Pass
maybe-secondary-files argument to other-output->value.
[capture-secondary-file]: New function.
[path->value]: Call capture-secondary-file. Accept
maybe-secondary-files argument.
[stdout-output->value]: Pass maybe-secondary-files argument to
path->value.
[other-output->value]: Accept maybe-secondary-files argument and pass
it on to path->value.
Add TODO note about updating paths of staged files in inputs objects.
|
|
* ravanan/work/vectors.scm (vector-filter-map): New public function.
|
|
* ravanan/work/command-line-tool.scm (match-type): Comment on cond
ladder clauses.
|
|
* ravanan/work/command-line-tool.scm (formal-parameter-type): Comment
on cond ladder clauses.
|
|
* ravanan/vectors.scm: Move to ravanan/work/vectors.scm.
* ravanan/command-line-tool.scm, ravanan/job-state.scm,
ravanan/reader.scm, ravanan/workflow.scm: Import (ravanan work
vectors) instead of (ravanan vectors).
|
|
* ravanan/monads.scm: Move to ravanan/work/monads.scm.
* ravanan/command-line-tool.scm, ravanan/propnet.scm,
ravanan/reader.scm, ravanan/workflow.scm: Import (ravanan work
vectors) instead of (ravanan vectors).
|
|
* ravanan/utils.scm: Do not import (rnrs base). Move assoc-ref* to ...
* ravanan/work/utils.scm: ... here. Import assertion-violation
from (rnrs base).
* ravanan/command-line-tool.scm, ravanan/workflow.scm: Do not
import (ravanan utils).
|
|
* ravanan/command-line-tool.scm (intern-file): Intern file only if it
is not already in the store.
|
|
* ravanan/command-line-tool.scm (copy-input-files-gexp): Make
G-expression singular.
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script):
Coerce expressions in glob patterns.
|
|
* ravanan/command-line-tool.scm (build-command-line-tool-script):
Import (ravanan work ui) into G-expression.
|
|
* ravanan/ui.scm: Move to ravanan/work/ui.scm.
* ravanan/command-line-tool.scm, ravanan/workflow.scm: Import (ravanan
work ui) instead of (ravanan ui).
|
|
* ravanan/reader.scm (normalize-workflow)[normalize-secondary-files]:
New function.
[normalize-formal-input]: Use normalize-secondary-files.
[normalize-formal-output]: New function.
Call normalie-formal-output from main body.
|
|
* ravanan/vectors.scm (vector-append-map): New public function.
|
|
* ravanan/reader.scm (normalize-formals): Refactor type normalization
into ...
[normalize-type]: ... new function.
|