RFC: interpreter runtime attribute #408
Replies: 1 comment
-
When processing the version constraint, how is the engine supposed to discover the interpreter versions available in the container image or the local/execution host? I'm a little nervous about the portability fragmentation that might result from different engines supporting different subsets of possible interpreters. It seems to me that if a task has highly specific constraints for the runtime interpreter version, it's reasonable to expect it to supply a container with something appropriate (#406 would simplify this in a lot of cases). Rather than name and version, then, could runtime.interpreter be the path to the interpreter executable (+ arguments)? retroactively defaulting to /bin/bash |
Beta Was this translation helpful? Give feedback.
-
Cross-posted from #404
Currently, it is specified that the task command block is executed by a bash interpreter. Non-bash languages are supported either by heredocs or by putting the commands in an external script and calling that script from the command block.
This proposal is to add the optional
interpreter
attribute to the runtime section. This keyword will be used to specify the interpreter program (name, version, etc) used to execute the command block. This information can be used by the WDL runtime in several ways:Example:
The
interpreter
keyword can take one of the following values:Array[String]
with multiple interpreter variants, in order of preference.Array[String]
with arguments to pass to the interpreter when executing the command. The runtime may specify interpreter arguments that are always used and/or not allowed - any arguments specified by theargs
keyword are merged with the required arguments, and an error is raised if any of the user-specified arguments are disallowed.Array[Object]
with multiple Object-style interpreter variants.Additional rules:
interpreter
keyword is specified, the default value is"bash"
.interpreter
keyword is specified, the host system must provided an interpreter that is compatible with one of the user's specifications, or raise an error if no compatible interpreters are available.container
runtime attribute, then one of the specified interpreters must be available in that container.container
specifies an array of containers, then the runtime may (but is not required to) use the availability of one of the specified interpreters within the container as a criteria in selecting which of the containers to use.container
runtime attribute then the runtime may try either or both of the following, in any order. In either case, no other dependencies are guaranteed to exist aside from the interpreter.Beta Was this translation helpful? Give feedback.
All reactions