Age | Commit message (Collapse) | Author |
|
* 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".
|
|
* README.md: Restructure introduction.
|
|
* README.md (Building from source): New section.
|
|
* README.md (How to use): Fill out section.
* doc/hello-world-inputs.json, doc/hello-world.cwl: New files.
|
|
* bin/ravanan: Import (ravanan store).
(main): Create store directory when it does not exist.
* ravanan/store.scm (make-store): New public function.
|
|
* ravanan/store.scm: Import (ravanan work command-line-tool)
and (ravanan work monads).
* ravanan/workflow.scm (same-filesystem?, intern-file): Move
to (ravanan store).
|
|
* bin/ravanan: Do not import (ravanan command-line-tool).
|
|
* ravanan/command-line-tool.scm: Import (ravanan store).
(%store-files-directory, %store-data-directory, %store-logs-directory,
script->store-files-directory, script->store-data-file,
script->store-stdout-file, script->store-stderr-file): Move to ...
* ravanan/store.scm: ... new file.
* ravanan/workflow.scm (ravanan): Import (ravanan store).
|
|
* ravanan/slurm-api.scm: Import assertion-violation from (rnrs base).
(slurm-state-codes->job-state): New function.
(job-state): Use slurm-state-codes->job-state.
* tests/slurm-api.scm: New file.
|
|
* ravanan/workflow.scm (same-filesystem?): New function.
(intern-file): Hard link files if on the same filesystem. Else, copy.
|
|
* ravanan/slurm-api.scm (job-state): Handle failed state.
|
|
The job states returned by the slurm API are not the same as that
expected by ravanan code.
* ravanan/slurm-api.scm (job-state): Translate PENDING and RUNNING to
pending state. Translate SUCCESS to completed state.
|
|
Prior to this, job-state could still return a value if there were no
errors described in the JSON. This is quite unlikely, but in the
interest of rigour…
* ravanan/slurm-api.scm (job-state): Error out when all options have
been exhausted.
|
|
* ravanan/slurm-api.scm: Import (ravanan verbosity).
(submit-job, job-state): Add traces.
* bin/ravanan (%options): Support slurm-api in --trace option.
(print-usage): Document it.
|
|
* ravanan/verbosity.scm: New file.
* bin/ravanan: Import (ravanan verbosity).
(%options): Add trace.
(print-usage): Document it.
(main): Set default value of traces. Parameterize %traces when running
workflow.
|
|
* ravanan/work/command-line-tool.scm (object-type, match-type):
Support float and double types.
* ravanan/command-line-tool.scm (command-line-binding->args): Handle
float arguments.
|
|
We need (ravanan work types) for array-type?.
* ravanan/command-line-tool.scm (build-command-line-tool-script):
Import (ravanan work types) into the job script.
|
|
* ravanan/command-line-tool.scm (command-line-binding->args): Handle
G-exp args when joining with item separator.
|
|
Since our scheduler is now state-monadic, the exception handler must
guard the context in which the monad is actually run.
* ravanan/workflow.scm (workflow-scheduler): Move exception handler to
...
(run-workflow): ... here.
|
|
* ravanan/slurm-api.scm (job-state): Bind return value of
slurm-http-get in the state monad.
|
|
* ravanan/reader.scm: Import (ravanan work types).
(some-file-type?): New function.
(normalize-formal-input, normalize-formal-output): Normalize File
array type formals too.
* tests/reader.scm: Import (srfi srfi-1) and (ice-9 match).
(normalize-formal-input, normalize-formal-output): New variables.
(json=?): New function.
("Normalize File type formal input", "Normalize File array type formal
input", "Normalize array of File arrays type formal input", "Normalize
File type formal output", "Normalize File array type formal output",
"Normalize array of File arrays type formal output"): New tests.
|
|
It is easier to test top-level functions.
* ravanan/reader.scm (normalize-workflow)[normalize-secondary-files,
normalize-formal-input, normalize-formal-output,
normalize-base-command, normalize-arguments, normalize-steps]: Promote
to top level.
|
|
We were returning the original input state. That was obviously a
catastrophe! I have spent the better part of the day debugging this. I
am tired.
* ravanan/workflow.scm (workflow-scheduler)[poll]: Return correct
updated state when polling list states.
|
|
* ravanan/command-line-tool.scm (run-command-line-tool,
build-command-line-tool-script): Write output JSON atomically to the
store.
|
|
* ravanan/work/utils.scm: Import (srfi srfi-71), (system foreign)
and (system foreign-library).
(fsync): New function.
(call-with-atomic-output-file): New public function.
|
|
* ravanan/utils.scm (call-with-temporary-file): Delete function.
|
|
* ravanan/job-state.scm (job-state-status): Return a state-monadic
value.
* ravanan/propnet.scm: Import (srfi srfi-26).
(schedule-propnet, poll-propnet, capture-propnet-output): Return a
state-monadic value.
* ravanan/workflow.scm (workflow-scheduler)[schedule, poll,
capture-output]: Return a state-monadic value.
(run-workflow): Accept state-monadic values from schedule, poll and
capture-output.
|
|
Lists are more convenient than vectors, and all the more so when
dealing with the state monad.
* ravanan/job-state.scm: Import (srfi srfi-1). Do not import (ravanan
work vectors).
(job-state-status): Use lists instead of vectors to represent state of
scatter steps.
* ravanan/workflow.scm (workflow-scheduler)[schedule, poll,
capture-output]: Use lists instead of vectors to represent state of
scatter steps.
(maybe-vector?): Delete function.
(maybe-list?): New function.
(merge-values): Support merging lists instead of vectors.
|
|
Let pollers return <state+status> objects instead of two separate
values. <state+status> objects are essentially named 2-tuples. This
will be more convenient than multiple values when dealing with the
state monad.
* ravanan/propnet.scm (<state+status>): New record type.
(poll-propnet): Accept and return <state+status> objects.
* ravanan/workflow.scm (workflow-scheduler)[poll]: Accept and return
<state+status> objects.
(run-workflow): Accept <state+status> objects from poll.
|
|
Low-level job-state objects tied to the batch system (such as those
that represent single-machine and slurm-api jobs) never get updated.
So, there is no point permitting it.
* ravanan/job-state.scm (job-state-status): Return only the job
status, not the updated job state.
* ravanan/workflow.scm (workflow-scheduler)[poll]: Accept only the job
status, not the updated job state, from job-state-status.
* ravanan/workflow.scm (<command-line-tool-state>)[job-state]: Remove
setter.
|
|
* ravanan/command-line-tool.scm (run-command-line-tool): Return state
of scheduled jobs as a state-monadic value.
* ravanan/workflow.scm (workflow-scheduler)[schedule]: Return state of
scheduled jobs as a state-monadic value.
(run-workflow): Run state of scheduled workflow in the state monad.
* ravanan/propnet.scm (poll-propnet): Run state of scheduled jobs in
the state monad.
[schedule-propagators]: New function.
|
|
* ravanan/single-machine.scm: Import (ravanan work monads).
(submit-job): Convert to a state-monadic function.
* ravanan/command-line-tool.scm (run-command-line-tool): Run
state-monadic return value from single-machine:submit-job.
|
|
* ravanan/slurm-api.scm: Import (ravanan work monads).
(slurm-http-request, slurm-http-get, slurm-http-post, submit-job,
job-state): Convert to state-monadic functions.
* ravanan/command-line-tool.scm (run-command-line-tool): Update use of
submit-job.
* ravanan/job-state.scm: Import (ravanan work monads).
(job-state-status): Update use of job-state.
|
|
There is no value in making the loop recursion explicit. A single
append-map call is clearer.
* ravanan/propnet.scm (poll-propnet): Schedule all propagators from
inbox in a single step.
|
|
* ravanan/command-line-tool.scm: Import (ravanan single-machine).
Import (ravanan slurm-api) with slurm: prefix.
(run-command-line-tool): Call single-machine:submit-job. Prefix
submit-job with slurm:.
* ravanan/single-machine.scm: New file.
|
|
other-bindings is a more descriptive name.
* ravanan/work/monads.scm (mlet*): Rename bindings to other-bindings.
|
|
* ravanan/work/monads.scm (mlet*): Re-indent.
|
|
* ravanan/work/monads.scm (mappend-map): New function.
(state-append-map): New public function.
|
|
* ravanan/work/monads.scm (mmap): New function.
(state-map): New public function.
|
|
* ravanan/work/monads.scm (sequence): New function.
(state-sequence): New public function.
|
|
* ravanan/work/monads.scm (<mstate>): New record type.
(state-bind, current-state, set-current-state, run-with-state): New
public functions.
(state-return, state-let*, state-begin): New public macros.
* ravanan/command-line-tool.scm: Be selective to avoid importing
run-with-state from (guix monads).
* .dir-locals.el (scheme-mode): Indent state-let* correctly.
|
|
* ravanan/work/monads.scm (mbegin): New macro.
|
|
* ravanan/work/monads.scm: Do not export maybe-monad.
|
|
* ravanan/command-line-tool.scm (run-command-line-tool): Re-indent.
|
|
%gnu-build-system-modules is deprecated.
* .guix/ravanan-package.scm (ravanan)[arguments]: Replace
%gnu-build-system-modules with %default-gnu-imported-modules.
|