aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2025-01-28bin: Add newline after usage message.•••* bin/ravanan (print-usage): Add newline at the end. v0.1.0Arun Isaac
2025-01-28Makefile: Add release tarball generation rules.•••* Makefile (GIT, GPG, LZIP, config_file_template, distribute_files, dist_archive): New variables. (dist, distsign, $(dist_archive), %.asc): New rules. Arun Isaac
2025-01-28Makefile: Treat config.scm distinctly from sources.•••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. Arun Isaac
2025-01-27README: Add table of contents.•••* README.md: Add table of contents. Arun Isaac
2025-01-27README: Add image of Ravanan.•••* README.md: Add image of Ravanan. (License): Mention license and attribution for image. * images/ravanan-king-of-lanka.jpg, images/LICENSE.md: New files. Arun Isaac
2025-01-27README: Fix grammar.•••* README.md (Building from source): Change "do" to "do so". Arun Isaac
2025-01-27README: Restructure introduction.•••* README.md: Restructure introduction. Arun Isaac
2025-01-27README: Add "Building from source" section.•••* README.md (Building from source): New section. Arun Isaac
2025-01-27README: Fill out "How to use" section.•••* README.md (How to use): Fill out section. * doc/hello-world-inputs.json, doc/hello-world.cwl: New files. Arun Isaac
2025-01-27bin: Create store directory when it does not exist.•••* bin/ravanan: Import (ravanan store). (main): Create store directory when it does not exist. * ravanan/store.scm (make-store): New public function. Arun Isaac
2025-01-27store: Move store interning code to (ravanan store).•••* ravanan/store.scm: Import (ravanan work command-line-tool) and (ravanan work monads). * ravanan/workflow.scm (same-filesystem?, intern-file): Move to (ravanan store). Arun Isaac
2025-01-27bin: Remove unused (ravanan command-line-tool) import.•••* bin/ravanan: Do not import (ravanan command-line-tool). Arun Isaac
2025-01-27store: 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-26slurm-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-25workflow: 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-25slurm-api: Handle failed state when polling job state.•••* ravanan/slurm-api.scm (job-state): Handle failed state. Arun Isaac
2025-01-24slurm-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-24slurm-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-24slurm-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-24verbosity: 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-24command-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-24command-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-23command-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-23workflow: 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-23slurm-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-22reader: 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-22reader: 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-22workflow: 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-21command-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-21work/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-21utils: Delete unused call-with-temporary-file.•••* ravanan/utils.scm (call-with-temporary-file): Delete function. Arun Isaac
2025-01-21propnet: 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-21workflow: 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-21propnet: 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-21job-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-21workflow: 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-20single-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-20slurm: 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-20propnet: 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-20single-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-20monads: 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-20monads: Re-indent mlet*.•••* ravanan/work/monads.scm (mlet*): Re-indent. Arun Isaac
2025-01-20monads: Add mappend-map.•••* ravanan/work/monads.scm (mappend-map): New function. (state-append-map): New public function. Arun Isaac
2025-01-20monads: Add mmap.•••* ravanan/work/monads.scm (mmap): New function. (state-map): New public function. Arun Isaac
2025-01-19monads: Add sequence.•••* ravanan/work/monads.scm (sequence): New function. (state-sequence): New public function. Arun Isaac
2025-01-19monads: 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-19monads: Add mbegin.•••* ravanan/work/monads.scm (mbegin): New macro. Arun Isaac
2025-01-19monads: Do not export maybe-monad.•••* ravanan/work/monads.scm: Do not export maybe-monad. Arun Isaac
2025-01-19command-line-tool: Re-indent run-command-line-tool.•••* ravanan/command-line-tool.scm (run-command-line-tool): Re-indent. Arun Isaac
2025-01-07guix: 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