1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
<!ELEMENT moduleset (if|redirect|repository|include|autotools|metamodule|tarball|distutils|perl|linux|testmodule|cvsroot|cvsmodule|waf|cmake|meson|systemmodule)+>
<!ATTLIST moduleset
name CDATA #IMPLIED>
<!-- DTD is incapable of allowing different children of an element
of a given name depending on the context in which it appears so
this is more permissive than it ought to be. The RNG version
of the schema gets this correct.
DTD also appears to be incapable of describing the fact that
exactly one of condition-set='' and condition-unset='' is required.
-->
<!ELEMENT if (if|autotools|dep|autogenargs|cmakeargs|mesonargs|makeargs|ninjaargs|makeinstallargs)+>
<!ATTLIST if
condition-set CDATA #IMPLIED
condition-unset CDATA #IMPLIED>
<!ELEMENT repository (mirror*)>
<!ATTLIST repository
name CDATA #REQUIRED
type (arch|bzr|cvs|darcs|fossil|git|hg|mtn|svn|system|tarball) #REQUIRED
default (yes|no) "no"
password CDATA #IMPLIED
cvsroot CDATA #IMPLIED
archive CDATA #IMPLIED
href CDATA #IMPLIED
server CDATA #IMPLIED
database CDATA #IMPLIED
defbranch CDATA #IMPLIED
developer-href-example CDATA #IMPLIED
trunk-template CDATA #IMPLIED
branches-template CDATA #IMPLIED
tags-template CDATA #IMPLIED>
<!-- note the following attributes are specific to some repository types:
- CVS: password & cvsroot
- Arch: archive & href
- Monotone: server, database, defbranch
- Subversion: *-template -->
<!ELEMENT mirror EMPTY>
<!ATTLIST mirror
type (arch|bzr|cvs|darcs|fossil|git|hg|svn|tarball) #REQUIRED
trunk-template CDATA #IMPLIED
branches-template CDATA #IMPLIED
href CDATA #IMPLIED>
<!ELEMENT include EMPTY>
<!ATTLIST include href CDATA #REQUIRED>
<!ELEMENT redirect EMPTY>
<!ATTLIST redirect href CDATA #REQUIRED>
<!ELEMENT autotools (if*,autogenargs*,makeargs*,makeinstallargs*,pkg-config?,branch,dependencies?,suggests?,after?)>
<!-- Note: Here the ID type is not used as some existing IDs in modsets are not
valid XML ID types - instead CDATA is used -->
<!ATTLIST autotools
id CDATA #REQUIRED
autogenargs CDATA #IMPLIED
makeargs CDATA #IMPLIED
makeinstallargs CDATA #IMPLIED
autogen-sh CDATA #IMPLIED
makefile CDATA #IMPLIED
bootstrap (true|false) "false"
skip-autogen (true|false|never) "false"
skip-install (yes|no) "no"
uninstall-before-install (true|false) "false"
supports-non-srcdir-builds (yes|no) "yes"
force-non-srcdir-builds (yes|no) "no"
supports-parallel-builds (yes|no) "yes"
supports-unknown-configure-options (yes|no) "yes"
autogen-template CDATA #IMPLIED
check-target (true|false) "true">
<!ELEMENT autogenargs EMPTY>
<!ATTLIST autogenargs value CDATA #REQUIRED>
<!ELEMENT makeargs EMPTY>
<!ATTLIST makeargs value CDATA #REQUIRED>
<!ELEMENT makeinstallargs EMPTY>
<!ATTLIST makeinstallargs value CDATA #REQUIRED>
<!ELEMENT waf (pkg-config?,branch,dependencies?,suggests?,after?)>
<!-- Note: Here the ID type is not used as some existing IDs in modsets are not
valid XML ID types - instead CDATA is used -->
<!ATTLIST waf
id CDATA #REQUIRED
waf-command CDATA #IMPLIED>
<!ELEMENT metamodule (dependencies,suggests?,after?)>
<!ATTLIST metamodule
id CDATA #REQUIRED>
<!-- tarball module type is deprecated, a tarball repository inside the
appropriate modtype should be used instead -->
<!ELEMENT tarball (pkg-config?,source,branch?,dependencies?,suggests?,after?,patches?)>
<!ATTLIST tarball
id CDATA #REQUIRED
version CDATA #REQUIRED
checkoutdir CDATA #IMPLIED
autogenargs CDATA #IMPLIED
makeargs CDATA #IMPLIED
autogen-sh CDATA #IMPLIED
supports-non-srcdir-builds (yes|no) "yes">
<!ELEMENT distutils (pkg-config?,branch?,dependencies?,after?)>
<!ATTLIST distutils
id ID #REQUIRED
python3 CDATA #FIXED "1"
supports-non-srcdir-builds (yes|no) "yes">
<!ELEMENT ninjaargs EMPTY>
<!ATTLIST ninjaargs value CDATA #REQUIRED>
<!ELEMENT cmake (if*,cmakeargs*,makeargs*,ninjaargs*,pkg-config?,branch?,dependencies?,suggests?,after?)>
<!ATTLIST cmake
id CDATA #REQUIRED
cmakeargs CDATA #IMPLIED
makeargs CDATA #IMPLIED
ninjaargs CDATA #IMPLIED
use-ninja (yes|no) "yes"
supports-non-srcdir-builds (yes|no) "yes"
force-non-srcdir-builds (yes|no) "no">
<!ELEMENT cmakeargs EMPTY>
<!ATTLIST cmakeargs value CDATA #REQUIRED>
<!ELEMENT meson (if*,mesonargs*,ninjaargs*,pkg-config?,branch?,dependencies?,suggests?,after?)>
<!ATTLIST meson
id CDATA #REQUIRED
mesonargs CDATA #IMPLIED
ninjaargs CDATA #IMPLIED>
<!ELEMENT mesonargs EMPTY>
<!ATTLIST mesonargs value CDATA #REQUIRED>
<!ELEMENT perl (pkg-config?,branch?,dependencies?,after?)>
<!ATTLIST perl
id CDATA #REQUIRED
makeargs CDATA #IMPLIED>
<!ELEMENT linux (pkg-config?,branch?,dependencies?,after?,kconfig+)>
<!ATTLIST linux
id CDATA #REQUIRED>
<!ELEMENT systemmodule (pkg-config?,branch,dependencies?,suggests?,after?,systemdependencies?)>
<!ATTLIST systemmodule
id CDATA #REQUIRED
supports-parallel-builds (yes|no) "yes">
<!ELEMENT testmodule (pkg-config?,branch?,dependencies?,after?,testedmodules?)>
<!ATTLIST testmodule
id CDATA #REQUIRED
type CDATA #REQUIRED>
<!ELEMENT cvsroot EMPTY>
<!ATTLIST cvsroot
name CDATA #REQUIRED
root CDATA #REQUIRED
password CDATA "">
<!ELEMENT cvsmodule (suggests?,dependencies?,after?)>
<!ATTLIST cvsmodule
id CDATA #REQUIRED
cvsroot CDATA #REQUIRED
supports-non-srcdir-builds (yes|no) "yes">
<!-- Tarball's children -->
<!ELEMENT source EMPTY>
<!ATTLIST source
href CDATA #REQUIRED
size CDATA #IMPLIED
md5sum CDATA #IMPLIED
hash CDATA #IMPLIED>
<!ELEMENT patches (patch*)>
<!ELEMENT patch EMPTY>
<!ATTLIST patch
file CDATA #REQUIRED
strip CDATA "0">
<!-- Linux's children -->
<!ELEMENT kconfig EMPTY>
<!ATTLIST kconfig
repo CDATA #IMPLIED
version CDATA #REQUIRED
module CDATA #IMPLIED
config CDATA #IMPLIED>
<!-- Testmodule's children -->
<!ELEMENT testedmodules (tested)>
<!ELEMENT tested EMPTY>
<!ATTLIST tested
package CDATA #REQUIRED>
<!-- Other children -->
<!ELEMENT pkg-config (#PCDATA)>
<!ELEMENT dependencies (dep|if)*>
<!ELEMENT suggests (dep|if)*>
<!ELEMENT after (dep|if)*>
<!ELEMENT systemdependencies (dep*)>
<!ELEMENT dep (altdep*)>
<!-- This is actually 2 different types of element: <dep package=""/> as used in <dependencies>
and <dep type="" name=""/> as used in <systemdependencies>. The DTD can't specify both
separately since they have the same element name. -->
<!ATTLIST dep
package CDATA #IMPLIED
type CDATA #IMPLIED
name CDATA #IMPLIED>
<!-- <altdep> is only used in <systemdependencies> to specify alternative dependencies. -->
<!ELEMENT altdep EMPTY>
<!ATTLIST altdep
type CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT branch (patch*,quilt*)>
<!ATTLIST branch
repo CDATA #IMPLIED
module CDATA #IMPLIED
checkoutdir CDATA #IMPLIED
override-checkoutdir (yes|no) "yes"
update-new-dirs (yes|no) "yes"
source-subdir CDATA #IMPLIED
revision CDATA #IMPLIED
tag CDATA #IMPLIED
user CDATA #IMPLIED
revspec CDATA #IMPLIED
branch CDATA #IMPLIED
version CDATA #IMPLIED
size CDATA #IMPLIED
md5sum CDATA #IMPLIED
hash CDATA #IMPLIED
rename-tarball CDATA #IMPLIED>
<!-- override-checkoutdir and update-new-dirs are CVS only
source-subdir is tarballs only -->
<!ELEMENT quilt (branch)>
<!ATTLIST quilt
id CDATA #REQUIRED>
|