@@ -41,41 +41,65 @@ $graph:
41
41
This specification represents the latest development release from the
42
42
CWL group. Since the v1.0 release, v1.1 introduces the
43
43
following updates to the CWL Command Line Tool standard.
44
- Documents should to use `cwlVersion: v1.1.0-dev1` to make use of new
44
+ Documents should use `cwlVersion: v1.1.0-dev1` to make use of new
45
45
syntax and features introduced in v1.1.0-dev1. Existing v1.0 documents
46
- should be trivially updatav1.1.0-dev1ble by changing `cwlVersion`, however
46
+ should be trivially updatable by changing `cwlVersion`, however
47
47
CWL documents that relied on previously undefined or
48
48
underspecified behavior may have slightly different behavior in
49
49
v1.1.0-dev1.
50
50
51
51
## Changelog
52
52
53
+ * Clarify behavior around `ENTRYPOINT` and `CMD` in containers.
53
54
* Clarify documentation around `valueFrom` and `null` inputs.
54
55
* Default values for some fields are now expressed in the schema.
55
56
* When defining record types with `CommandInputRecordSchema`, fields of
56
57
type `File` may now include `format`, `loadContents`,
57
58
`secondaryFiles` and `streamable`.
58
- * `CommandInputRecordSchema`, `CommandInputEnumSchema`, and
59
- `CommandInputArraySchema` now have an optional `doc` field.
59
+ * `CommandInputRecordSchema`, `CommandOutputRecordSchema`,
60
+ `CommandInputEnumSchema and `CommandInputArraySchema` now have an optional
61
+ `doc` field.
60
62
* `inputBinding` has been added as an optional field for
61
63
`CommandInputRecordSchema` (was previously in CWL `draft-3` but
62
- disappeared in `v1.0`)
64
+ disappeared in `v1.0`).
63
65
* Any `doc` field may be an array of strings in addition to the
64
66
previously allowed single string.
65
67
* Addition of `stdin` type shortcut for
66
68
[`CommandInputParameter`](#CommandInputParameter).
67
69
* Clarify that the designated output directory should be empty
68
70
except for files or directories specified using
69
71
[InitialWorkDirRequirement](#InitialWorkDirRequirement).
70
- * Clarify semantics of `shellQuote`
72
+ * Clarify semantics of `shellQuote`.
71
73
* Expressions are now allowed to evaluate to `null` or `Dirent` in
72
74
[InitialWorkDirRequirement.listing](#InitialWorkDirRequirement).
75
+ * Items in [InitialWorkDirRequirement.listing](#InitialWorkDirRequirement)
76
+ are now allowed to be `null` and `array<File | Directory>`.
73
77
* Clarify behavior of secondaryFiles on output.
74
78
* [Addition](#Requirements_and_hints) of `cwl:requirements` field to
75
79
input object documents.
76
80
* Clarify behavior of `glob` for absolute paths and symlinks.
77
81
* Clarify behavior of `glob` to include directories.
78
82
* `secondaryFiles` can now be explicitly marked as `required` or not.
83
+ * Clarify `CommandLineTool.arguments` documentation.
84
+ * Clarify that `runtime.outdir` and `runtime.tmpdir` must be distinct
85
+ directories.
86
+ * Clarify that unspecified details related to execution are left open to
87
+ the platform.
88
+ * Added `InputParameter.loadContents` field. Use of `loadContents` in
89
+ `InputBinding` is deprecated; it is preserved for v1.0 backwards
90
+ compatability and will be removed in CWL v2.0.
91
+ * [Added](#ToolTimeLimit) `ToolTimeLimit` feature, allowing to set an upper limit on the
92
+ execution time of a CommandLineTool.
93
+ * [Added](#WorkReuse) `WorkReuse` feature, allowing to enable or disable the reuse
94
+ behavior for a particular tool or step for implementations that
95
+ support reusing output from past work.
96
+ * [Added](#NetworkAccess) `NetworkAccess` feature, allowing to indicate whether a
97
+ process requires outgoing network access.
98
+ * [Added](#InplaceUpdateRequirement) `InplaceUpdateRequirement` feature, allowing tools to directly
99
+ update files with `writable: true` in `InitialWorkDirRequirement`.
100
+ * [Added](#LoadListingRequirement) `LoadListingRequirement`
101
+ and [loadListing](#LoadContents) to control whether and how
102
+ `Directory` listings should be loaded for use in expressions.
79
103
80
104
See also the [CWL Workflow Description, v1.1.0-dev1 changelog](Workflow.html#Changelog).
81
105
@@ -105,10 +129,12 @@ $graph:
105
129
provide a common standard description of grammar and semantics for
106
130
invoking programs used in data-intensive fields such as Bioinformatics,
107
131
Chemistry, Physics, Astronomy, and Statistics. This specification
108
- defines a precise data and execution model for Command Line Tools that
132
+ attempts to define a precise data and execution model for Command Line Tools that
109
133
can be implemented on a variety of computing platforms, ranging from a
110
134
single workstation to cluster, grid, cloud, and high performance
111
- computing platforms.
135
+ computing platforms. Details related to execution of these programs not
136
+ laid out in this specification are open to interpretation by the computing
137
+ platform implementing this specification.
112
138
113
139
- {$include: concepts.md}
114
140
- {$include: invocation.md}
@@ -637,7 +663,10 @@ $graph:
637
663
" _container " : " @list"
638
664
- name : arguments
639
665
doc : |
640
- Command line bindings which are not directly associated with input parameters.
666
+ Command line bindings which are not directly associated with input
667
+ parameters. If the value is a string, it is used as a string literal
668
+ argument. If it is an Expression, the result of the evaluation is used
669
+ as an argument.
641
670
type :
642
671
- " null"
643
672
- type : array
@@ -702,8 +731,9 @@ $graph:
702
731
extends : ProcessRequirement
703
732
doc : |
704
733
Indicates that a workflow component should be run in a
705
- [Docker](http://docker.com) container, and specifies how to fetch or build
706
- the image.
734
+ [Docker](http://docker.com) or Docker-compatible (such as
735
+ [Singularity](https://www.sylabs.io/) and [udocker](https://github.com/indigo-dc/udocker)) container environment and
736
+ specifies how to fetch or build the image.
707
737
708
738
If a CommandLineTool lists `DockerRequirement` under
709
739
`hints` (or `requirements`), it may (or must) be run in the specified Docker
@@ -720,14 +750,31 @@ $graph:
720
750
file paths in the input object to correspond to the Docker bind mounted
721
751
locations. That is, the platform should rewrite values in the parameter context
722
752
such as `runtime.outdir`, `runtime.tmpdir` and others to be valid paths
723
- within the container.
753
+ within the container. The platform must ensure that `runtime.outdir` and
754
+ `runtime.tmpdir` are distinct directories.
724
755
725
756
When running a tool contained in Docker, the workflow platform must not
726
757
assume anything about the contents of the Docker container, such as the
727
758
presence or absence of specific software, except to assume that the
728
759
generated command line represents a valid command within the runtime
729
760
environment of the container.
730
761
762
+ A container image may specify an
763
+ [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint)
764
+ and/or
765
+ [CMD](https://docs.docker.com/engine/reference/builder/#cmd).
766
+ Command line arguments will be appended after all elements of
767
+ ENTRYPOINT, and will override all elements specified using CMD (in
768
+ other words, CMD is only used when the CommandLineTool definition
769
+ produces an empty command line).
770
+
771
+ Use of implicit ENTRYPOINT or CMD are discouraged due to reproducibility
772
+ concerns of the implicit hidden execution point (For further discussion, see
773
+ [https://doi.org/10.12688/f1000research.15140.1](https://doi.org/10.12688/f1000research.15140.1)). Portable
774
+ CommandLineTool wrappers in which use of a container is optional must not rely on ENTRYPOINT or CMD.
775
+ CommandLineTools which do rely on ENTRYPOINT or CMD must list `DockerRequirement` in the
776
+ `requirements` section.
777
+
731
778
## Interaction with other requirements
732
779
733
780
If [EnvVarRequirement](#EnvVarRequirement) is specified alongside a
@@ -1051,17 +1098,25 @@ $graph:
1051
1098
1052
1099
1053
1100
- type : record
1054
- name : TimeLimit
1101
+ name : ToolTimeLimit
1055
1102
extends : ProcessRequirement
1056
1103
doc : |
1057
- Set an upper limit on the execution time of a CommandLineTool or
1058
- ExpressionTool. A tool execution which exceeds the time limit may
1104
+ Set an upper limit on the execution time of a CommandLineTool.
1105
+ A tool execution which exceeds the time limit may
1059
1106
be preemptively terminated and considered failed. May also be
1060
1107
used by batch systems to make scheduling decisions.
1108
+
1109
+ Limit applies only to the command execution time. Time for
1110
+ additional steps, such as file download/upload, docker pull or
1111
+ expression evaluation is not considered for exceeding time limit.
1112
+
1113
+ If ToolTimeLimit is set on a workflow level, it propagates down to
1114
+ individual processes, in line with requirement inheritance rules.
1115
+ ToolTimeLimit is not used to limit the execution time of a Workflow.
1061
1116
fields :
1062
1117
- name : class
1063
1118
type : string
1064
- doc : " Always 'TimeLimit '"
1119
+ doc : " Always 'ToolTimeLimit '"
1065
1120
jsonldPredicate :
1066
1121
" _id " : " @type"
1067
1122
" _type " : " @vocab"
0 commit comments