Age | Commit message (Collapse) | Author |
|
* 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.
|
|
* .guix/ravanan-package.scm (ravanan)[arguments]: Add NODE makeflag.
|
|
* .guix/ravanan-package.scm: Import guile-json-4 from (gnu packages
guile).
(ravanan)[inputs]: Add guile-json-4.
|
|
* .dir-locals.el (scheme-mode): Indent call-with-inferior correctly.
|
|
* bin/ravanan (main): Do not specify the
default (current-output-port).
|
|
* 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.
|
|
* bin/ravanan (main): Indicate specifically that the --store argument
was not specified.
|
|
* bin/ravanan (main): Indicate specifically that the --scratch
argument was not specified.
|
|
* bin/ravanan (main): Indicate specifically that the --slurm-jwt
argument was not specified.
|
|
* 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.
|
|
* 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.
|
|
* bin/ravanan (main): Remove default Guix manifest.
|
|
* ravanan/command-line-tool.scm: Import (gnu packages).
(specifications->environment): New function.
(build-command-line-tool-script)[software-package->package-specification]:
New function.
Build environment from packages if specified.
|
|
*
ravanan/command-line-tool.scm (manifest->environment): New function.
(manifest-file->environment)[build-derivation]: Delete function.
Call manifest->environment.
|
|
* bin/ravanan: Import (guix channels).
(%options): Add guix-channels.
(print-usage): Document it.
(main): Load channels from channels file if specified.
|
|
* ravanan/command-line-tool.scm: Import (guix inferior).
(call-with-inferior): New function.
(run-command-line-tool): Accept channels argument and pass it on to
build-command-line-tool-script.
(build-command-line-tool-script): Accept channels argument and pass it
on to manifest-file->environment.
(manifest-file->environment): Accept channels argument. Build manifest
in Guix inferior when channels is provided.
* ravanan/workflow.scm (workflow-scheduler): Accept channels argument
and pass it on to run-command-line-tool.
(run-workflow): Accept channels argument and pass it on to
workflow-scheduler.
* bin/ravanan (main): Pass #f as channels to run-workflow.
|
|
* ravanan/command-line-tool.scm (manifest-file->environment): New
function.
(build-command-line-tool-script): Use manifest-file->environment.
|
|
* ravanan/utils.scm: Import (ice-9 filesystem) and (ice-9 match).
(load-script): New function.
* ravanan/command-line-tool.scm: Import (ravanan utils).
(load-manifest): Use load-script.
|
|
*
ravanan/command-line-tool.scm (%command-line-tool-supported-requirements):
Add WorkReuse.
* ravanan/command-line-tool.scm (build-command-line-tool-script):
Implement WorkReuse.
|
|
*
ravanan/command-line-tool.scm (%command-line-tool-supported-requirements):
Replace GuixManifestRequirement with SoftwareRequirement.
(build-command-line-tool-script): Look for SoftwareRequirement instead
of GuixManifestRequirement.
|
|
* ravanan/slurm-api.scm (job-state): Query slurmdb for jobs that have
been purged from slurmctld's active memory.
|
|
* ravanan/slurm-api.scm (check-api-error): New function.
(submit-job, job-state): Use check-api-error.
|
|
* ravanan/slurm-api.scm (submit-job, job-state): Upgrade to API
version 0.0.41.
(job-state): Handle job_state as a vector of strings.
|
|
* README.md: Add ravanan pronunciation.
|
|
* ravanan/workflow.scm (intern-file): Report file interning.
|
|
* ravanan/workflow.scm (intern-file): Do not re-intern files that have
already been interned into the store.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[path+sha1->value]:
New function.
[path->value]: Implement in terms of path+sha1->value.
[stdout-output->value]: Use path+sha1->value.
|
|
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[canonicalize-file-value]:
Recompute checksum only if it is not provided.
|
|
* ravanan/workflow.scm (intern-file): Accept and return File type
value, and recompute the SHA1 hash only if it is not provided in the
checksum field.
(resolve-inputs): Recompute checksum only if it is not provided.
Update call to intern-file.
|
|
* ravanan/batch-system.scm (<slurm-api-batch-system>)[nice]: Add
field.
* bin/ravanan (%options): Add slurm-nice.
(print-usage): Document it.
(main): Initialize nice field of <slurm-api-batch-system> object.
* ravanan/command-line-tool.scm (run-command-line-tool): Pass
#:nice argument to submit-job.
* ravanan/slurm-api.scm (submit-job): Accept #:nice argument.
|
|
* ravanan/batch-system.scm (<slurm-api-batch-system>)[partition]: Add
field.
* bin/ravanan (%options): Add slurm-partition.
(print-usage): Document it.
(main): Initialize partition field of <slurm-api-batch-system> object.
* ravanan/command-line-tool.scm (run-command-line-tool): Pass
#:partition argument to submit-job.
* ravanan/slurm-api.scm (submit-job): Accept #:partition argument.
|
|
A <slurm-api-batch-system> record type allows us an easy way to group
and pass along parameters required by the slurm-api batch system.
* ravanan/batch-system.scm: New file.
* bin/ravanan: Import (ravanan batch-system).
(main): Create <slurm-api-batch-system> object for batch-system
argument. Do not pass #:slurm-api-endpoint and #:slurm-jwt arguments.
*
ravanan/command-line-tool.scm: Import (ravanan batch-system).
(command-line-tool-supported-requirements): Check for slurm-api batch
system using slurm-api-batch-system?.
(run-command-line-tool): Check for slurm-api batch system using
slurm-api-batch-system?. Do not accept #:slurm-api-endpoint and
#:slurm-jwt arguments.
* ravanan/workflow.scm: Import (ravanan batch-system).
(workflow-scheduler): Do not accept #:slurm-api-endpoint and
#:slurm-jwt arguments. Pass batch-system to job-state-status.
(run-workflow): Check for slurm-api batch system using
slurm-api-batch-system?. Do not accept #:slurm-api-endpoint and
#:slurm-jwt arguments.
* ravanan/job-state.scm: Import (ravanan batch-system).
(job-state-status): Do not accept #:slurm-api-endpoint and #:slurm-jwt
arguments. Accept batch-system argument.
|