about summary refs log tree commit diff
AgeCommit message (Collapse)Author
4 daysRename cwl-conformance/cwltest-manifest.scm.Arun Isaac
There is only one manifest file under cwl-conformance. So, it's ok to just call it manifest.scm.
5 daysAdd CWL conformance test helper files.Arun Isaac
Forgetting to commit required files—classic mistake!
5 daysREADME: Remove invalid "require" badge from CWL conformance badges.Arun Isaac
5 daysguix: Add CWL conformance test suite scripts.Arun Isaac
These scripts were a part of the CI server system definition, and out of reach of ravanan maintainers. We move them here since it's easier to keep updated and within the reach of ravanan maintainers to modify as they please.
7 daysREADME: Add CWL conformance badges from CI.Arun Isaac
8 daysdir-locals: Indent run-with-state.Arun Isaac
8 daysguix: Add cwltest package.Arun Isaac
8 daysbin: Replace "multiple" with "more than one".Arun Isaac
"more than one" is simpler English.
8 dayswork/command-line-tool: Canonicalize path in File values.Arun Isaac
8 dayswork/command-line-tool: Always reconstruct location from path.Arun Isaac
8 daysAdd --quiet flag to suppress all logging.Arun Isaac
8 daysbin: Allow controlling log level via --log-level.Arun Isaac
8 daysUse the new logging functions for all logging.Arun Isaac
This will enable us to effect global control over the log level.
8 dayswork/ui: Implement logging system.Arun Isaac
Implement logging system with five log levels. Rewrite warning and user-error in terms of the new logging functions.
9 daysreader: Handle &unsupported-uri-scheme conditions.Arun Isaac
read-workflow and read-inputs now handle &unsupported-uri-scheme conditions from location->path.
9 dayswork/command-line-tool: Raise exception on unsupported URI schemes.Arun Isaac
location->path now raises an &unsupported-uri-scheme condition on unsupported URI schemes.
9 daysreader: Capture and report exceptions in read-inputs.Arun Isaac
9 daysreader: Capture and report exceptions in read-workflow.Arun Isaac
10 daysreader: Add read-yaml-file.Arun Isaac
read-yaml-file is a wrapper around read-yaml-file from (yaml). It raises the relevant exceptions when it fails.
10 daysreader: Use read-json-file in read-inputs.Arun Isaac
10 daysreader: Add read-json-file.Arun Isaac
read-json-file is a wrapper around call-with-input-file and json->scm. It raises the relevant exceptions when it fails.
10 daysreader: Return monadic value in normalize-formal-input.Arun Isaac
Return monadic value for the default key in normalize-formal-input. Values returned from maybe-bind must be monadic; compose it with just.
2025-06-29workflow: Copy resource-requirement field on scatter steps.Arun Isaac
* ravanan/workflow.scm (workflow-scheduler): Copy resource-requirement field on scatter steps.
2025-06-29utils: Do not canonicalize script file path before loading.Arun Isaac
It is not the responsibility of load-script to canonicalize file paths; the caller must do that. * ravanan/utils.scm (load-script): Do not canonicalize script file path.
2025-06-29reader: Read manifest files with respect to the workflow file.Arun Isaac
* ravanan/reader.scm (normalize-software-requirement): New function. (normalize-requirements): Use normalize-software-requirement.
2025-06-29reader: Re-indent normalize-env-var-requirement.Arun Isaac
* ravanan/reader.scm (normalize-env-var-requirement): Re-indent.
2025-06-27store: Canonicalize inputs JSON before constructing store paths.Arun Isaac
* ravanan/store.scm (step-store-basename): Canonicalize inputs JSON. * tests/store.scm: New file.
2025-06-26command-line-tool: Pass down inputs directory to recursive calls.Arun Isaac
* ravanan/command-line-tool.scm (build-command-line-tool-script)[copy-input-files]: Pass down inputs directory to recursive calls.
2025-06-26command-line-tool: Do not auto-compile manifest files on inferior.Arun Isaac
The comment was there earlier, but the code was missing! * ravanan/command-line-tool.scm (manifest-file->search-path-sexps): Do not auto-compile manifest files on inferior.
2025-06-26command-line-tool: Do not canonicalize manifest file paths.Arun Isaac
Canonicalization is unnecessary, and causes trouble when the manifest file does not exist. * ravanan/command-line-tool.scm (manifest-file->search-path-sexps, manifest-file->profile-derivation): Do not canonicalize manifest file paths.
2025-06-26command-line-tool: Wrap vectors and alists when embedding in G-exps.Arun Isaac
* ravanan/command-line-tool.scm (build-command-line-tool-script)[vector->gexp, alist->gexp]: New functions. [run-command-gexp]: Use vector->gexp and alist->gexp.
2025-06-26command-line-tool: Present a monadic interface to building scripts.Arun Isaac
* ravanan/command-line-tool.scm (build-gexp-script) (build-command-line-tool-script): Present a monadic interface. * ravanan/workflow.scm (workflow->scheduler-proc): Run monadic value returned by build-command-line-tool-script through the store. (workflow->scheduler-proc, workflow-class->propnet): Update docstring about the guix-store argument.
2025-06-26command-line-tool: Return all search path S-exps as monadic values.Arun Isaac
In the interest of consistency, return search path S-expressions from both manifest-file->search-path-sexps and software-packages->search-path-sexps as monadic values. * ravanan/command-line-tool.scm (software-packages->search-path-sexps): Return monadic value. * ravanan/command-line-tool.scm (build-command-line-tool-script): Use monadic values from software-packages->search-path-sexps.
2025-06-26command-line-tool: Handle manifest monadically.Arun Isaac
The monadic interface allows more of the building to be done in one go when build-gexp-script is invoked. * ravanan/command-line-tool.scm (manifest-file->environment, software-packages->environment, manifest->environment): Delete functions. (inferior-meval-with-store, manifest-file->search-path-sexps, manifest-file->profile-derivation, software-packages->manifest, software-packages->search-path-sexps, software-packages->profile-derivation): New functions. (build-command-line-tool-script): Use manifest-file->search-paths, manifest-file->profile-derivation, software-packages->search-path-sexps and software-packages->profile-derivation instead of manifest-file->environment and software-packages->environment.
2025-06-26workflow: Re-use single connection to the Guix daemon.Arun Isaac
Re-using the connection improves performance and is cleaner than passing around the Guix daemon socket specification. * ravanan/command-line-tool.scm (manifest-file->environment, software-packages->environment, manifest->environment, build-command-line-tool-script, build-gexp-script): Work with store connection instead of the Guix daemon socket. * ravanan/workflow.scm: Import (guix store). (workflow->scheduler-proc, workflow-class->propnet): Work with store connection instead of the Guix daemon socket. (build-workflow): Pass a store connection, not the Guix daemon socket, to workflow->scheduler-proc.
2025-06-26workflow: Spawn an inferior only once.Arun Isaac
Spawning inferiors is expensive. Do it only once and re-use the connection. * ravanan/command-line-tool.scm (call-with-inferior): Move to (ravanan workflow). (manifest-file->environment, software-packages->environment, build-command-line-tool-script): Accept inferior instead of channels. * ravanan/workflow.scm: Import (guix inferior). (workflow->scheduler-proc, workflow-class->propnet): Accept inferior instead of channels. (build-workflow): New function. (run-workflow): Use build-workflow instead of workflow->scheduler-proc.
2025-06-26command-line-tool: Clarify disabling WorkReuse message.Arun Isaac
* ravanan/command-line-tool.scm (build-command-line-tool-script): Clarify it is "disabling WorkReuse" that is unnecessary.
2025-06-26workflow: Build scripts ahead of time.Arun Isaac
* ravanan/command-line-tool.scm (build-command-line-tool-script, find-requirement): Export. (run-command-line-tool): Accept script as argument instead of cwl. Add resource-requirement argument. Remove manifest-file, channels, scratch and guix-daemon-socket arguments. * ravanan/workflow.scm (<scheduler-proc>):[cwl-or-propnet]: Rename to script-or-propnet. [resource-requirement]: New field. * ravanan/workflow.scm (scheduler-proc): Rename cwl-or-propnet argument to script-or-propnet. Add resource-requirement argument. (workflow->scheduler-proc, workflow-class->propnet): Add manifest-file, channels, scratch, store and guix-daemon-socket arguments. (workflow->scheduler-proc): Build script. Capture ResourceRequirement. (workflow-scheduler): Remove manifest-file, channels, scratch and guix-daemon-socket arguments. [schedule]: Run built script instead of CWL. Update call to run-command-line-tool. (run-workflow): Do not pass manifest-file, channels, scratch and guix-daemon-socket arguments to workflow-scheduler. Pass manifest-file, channels, scratch, store and guix-daemon-socket arguments to workflow->scheduler-proc.
2025-06-26workflow: Make scatter arguments optional in workflow->scheduler-proc.Arun Isaac
* ravanan/workflow.scm (workflow->scheduler-proc): Make scatter and scatter-method arguments optional.
2025-06-26workflow: Introduce optional fields in scheduler-proc constructor.Arun Isaac
* ravanan/workflow.scm (<scheduler-proc>): Rename constructor to -scheduler-proc. (scheduler-proc): New function.
2025-06-26workflow: Build out propagator network eagerly.Arun Isaac
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.
2025-06-26workflow: Eliminate command-line-tool->propagator.Arun Isaac
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.
2025-06-26command-line-tool: Build script without inputs.Arun Isaac
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.
2025-06-26command-line-tool: Define environment only once.Arun Isaac
* ravanan/command-line-tool.scm (run-command-line-tool): Define environment only once.
2025-06-26store: Encode store paths using base32 instead of base16.Arun Isaac
* ravanan/store.scm: Import (guix base16) and (guix base32). (intern-file): Encode store paths using base32 instead of base16.
2025-06-26work/command-line-tool: Add sha1-hash-bytes.Arun Isaac
* ravanan/work/command-line-tool.scm (sha1-hash-bytes): New public function. (sha1-hash): Use sha1-hash-bytes.
2025-06-26workflow: Bind class variable with reduced scope.Arun Isaac
* ravanan/workflow.scm (workflow-scheduler): Bind class variable only in the else arm of the if condition.
2025-06-26bin: Use user-error instead of errors to report user errors.Arun Isaac
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.
2025-06-26propnet: Add record printers.Arun Isaac
* ravanan/propnet.scm (<propagator>, <propnet-state>): Add record printers.
2025-06-26propnet: Export predicates.Arun Isaac
* ravanan/propnet.scm (propnet?, propagator?, scheduler?, state+status?): Export.