Age | Commit message (Expand) | Author |
2025-01-27 | bin: Remove unused (ravanan command-line-tool) import.•••* bin/ravanan: Do not import (ravanan command-line-tool).
| Arun Isaac |
2025-01-27 | store: Move store path related code to new module.•••* 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).
| Arun Isaac |
2025-01-26 | slurm-api: Handle all slurm job state codes.•••* 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.
| Arun Isaac |
2025-01-25 | workflow: Hard link instead of copying when interning into the store.•••* ravanan/workflow.scm (same-filesystem?): New function.
(intern-file): Hard link files if on the same filesystem. Else, copy.
| Arun Isaac |
2025-01-25 | slurm-api: Handle failed state when polling job state.•••* ravanan/slurm-api.scm (job-state): Handle failed state.
| Arun Isaac |
2025-01-24 | slurm-api: Translate slurm job states correctly.•••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.
| Arun Isaac |
2025-01-24 | slurm-api: Error out when all options have been exhausted.•••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.
| Arun Isaac |
2025-01-24 | slurm-api: Support tracing.•••* 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.
| Arun Isaac |
2025-01-24 | verbosity: Implement subsystem tracing.•••* 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.
| Arun Isaac |
2025-01-24 | command-line-tool: Support float and double types.•••* 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.
| Arun Isaac |
2025-01-24 | command-line-tool: Import (ravanan work types) into the job script.•••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.
| Arun Isaac |
2025-01-23 | command-line-tool: Handle G-exp args when joining with item separator.•••* ravanan/command-line-tool.scm (command-line-binding->args): Handle
G-exp args when joining with item separator.
| Arun Isaac |
2025-01-23 | workflow: Handle exceptions in run-workflow.•••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.
| Arun Isaac |
2025-01-23 | slurm-api: Bind return value of slurm-http-get in the state monad.•••* ravanan/slurm-api.scm (job-state): Bind return value of
slurm-http-get in the state monad.
| Arun Isaac |
2025-01-22 | reader: Normalize File array type formals too.•••* 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.
| Arun Isaac |
2025-01-22 | reader: Promote normalize functions to top level.•••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.
| Arun Isaac |
2025-01-22 | workflow: Return correct updated state when polling list states.•••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.
| Arun Isaac |
2025-01-21 | command-line-tool: Write output JSON atomically to the store.•••* ravanan/command-line-tool.scm (run-command-line-tool,
build-command-line-tool-script): Write output JSON atomically to the
store.
| Arun Isaac |
2025-01-21 | work/utils: Add call-with-atomic-output-file.•••* 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.
| Arun Isaac |
2025-01-21 | utils: Delete unused call-with-temporary-file.•••* ravanan/utils.scm (call-with-temporary-file): Delete function.
| Arun Isaac |
2025-01-21 | propnet: Make interface state-monadic.•••* 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.
| Arun Isaac |
2025-01-21 | workflow: Use lists to represent state of scatter steps.•••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.
| Arun Isaac |
2025-01-21 | propnet: Introduce <state+status> objects for polling.•••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.
| Arun Isaac |
2025-01-21 | job-state: Do not allow updating of low-level job-state objects.•••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.
| Arun Isaac |
2025-01-21 | workflow: Return state of scheduled jobs as a state-monadic value.•••* 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.
| Arun Isaac |
2025-01-20 | single-machine: Make interface state-monadic.•••* 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.
| Arun Isaac |
2025-01-20 | slurm: Make interface state-monadic.•••* 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.
| Arun Isaac |
2025-01-20 | propnet: Schedule all propagators from inbox in a single step.•••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.
| Arun Isaac |
2025-01-20 | single-machine: Move single machine batch system to separate module.•••* 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.
| Arun Isaac |
2025-01-20 | monads: Rename bindings to other-bindings in mlet*.•••other-bindings is a more descriptive name.
* ravanan/work/monads.scm (mlet*): Rename bindings to other-bindings.
| Arun Isaac |
2025-01-20 | monads: Re-indent mlet*.•••* ravanan/work/monads.scm (mlet*): Re-indent.
| Arun Isaac |
2025-01-20 | monads: Add mappend-map.•••* ravanan/work/monads.scm (mappend-map): New function.
(state-append-map): New public function.
| Arun Isaac |
2025-01-20 | monads: Add mmap.•••* ravanan/work/monads.scm (mmap): New function.
(state-map): New public function.
| Arun Isaac |
2025-01-19 | monads: Add sequence.•••* ravanan/work/monads.scm (sequence): New function.
(state-sequence): New public function.
| Arun Isaac |
2025-01-19 | monads: Implement the state monad.•••* 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.
| Arun Isaac |
2025-01-19 | monads: Add mbegin.•••* ravanan/work/monads.scm (mbegin): New macro.
| Arun Isaac |
2025-01-19 | monads: Do not export maybe-monad.•••* ravanan/work/monads.scm: Do not export maybe-monad.
| Arun Isaac |
2025-01-19 | command-line-tool: Re-indent run-command-line-tool.•••* ravanan/command-line-tool.scm (run-command-line-tool): Re-indent.
| Arun Isaac |
2025-01-07 | guix: Use %default-gnu-imported-modules.•••%gnu-build-system-modules is deprecated.
* .guix/ravanan-package.scm (ravanan)[arguments]: Replace
%gnu-build-system-modules with %default-gnu-imported-modules.
| Arun Isaac |
2025-01-07 | guix: Add NODE makeflag.•••* .guix/ravanan-package.scm (ravanan)[arguments]: Add NODE makeflag.
| Arun Isaac |
2025-01-07 | guix: Depend on guile-json-4.•••* .guix/ravanan-package.scm: Import guile-json-4 from (gnu packages
guile).
(ravanan)[inputs]: Add guile-json-4.
| Arun Isaac |
2024-12-06 | dir-locals: Indent call-with-inferior correctly.•••* .dir-locals.el (scheme-mode): Indent call-with-inferior correctly.
| Arun Isaac |
2024-12-05 | bin: Do not specify the default output port unnecessarily.•••* bin/ravanan (main): Do not specify the
default (current-output-port).
| Arun Isaac |
2024-12-05 | bin: Add --output-directory argument.•••* bin/ravanan: Import (ravanan work utils).
(%options): Add --output-directory.
(print-usage): Document it.
(symlink-to-output-directory): New function.
(main): Symlink to output directory if it is specified.
| Arun Isaac |
2024-12-04 | bin: Indicate that the --store argument was not specified.•••* bin/ravanan (main): Indicate specifically that the --store argument
was not specified.
| Arun Isaac |
2024-12-04 | bin: Indicate that the --scratch argument was not specified.•••* bin/ravanan (main): Indicate specifically that the --scratch
argument was not specified.
| Arun Isaac |
2024-12-04 | bin: Indicate that the --slurm-jwt argument was not specified.•••* bin/ravanan (main): Indicate specifically that the --slurm-jwt
argument was not specified.
| Arun Isaac |
2024-12-04 | bin: Add --version flag.•••* ravanan/config.scm.in (%project, %version): New variables.
* Makefile (version): New variable.
(%.scm): Substitute %project and %version too.
* bin/ravanan: Import (ravanan config).
(%options): Add --version.
(print-usage): Document it.
(main): Implement it.
| Arun Isaac |
2024-11-06 | command-line-tool: Bubble up manifest file errors to the top level.•••* ravanan/command-line-tool.scm: Import (rnrs conditions) and (rnrs
exceptions).
(&manifest-file-error): New condition type.
(load-manifest): Raise &manifest-file-error when loading the manifest
file fails.
* bin/ravanan: Import (rnrs exceptions) and (ravanan
command-line-tool).
(main): Handle manifest file errors bubbled up from lower down the
stack.
| Arun Isaac |
2024-11-06 | bin: Remove default Guix manifest.•••* bin/ravanan (main): Remove default Guix manifest.
| Arun Isaac |