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
|
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
packages = element packages { attlist.packages, pkgmetadata* }
attlist.packages &= empty
# Metadata for a category
catmetadata =
element catmetadata { attlist.catmetadata, longdescription* }
attlist.catmetadata &=
[ a:defaultValue = "" ] attribute pkgname { text }?
# Metadata for a package
pkgmetadata =
element pkgmetadata {
attlist.pkgmetadata, (herd | maintainer | longdescription | use)*
}
attlist.pkgmetadata &=
[ a:defaultValue = "" ] attribute pkgname { text }?
# One tag for each herd this package is assigned to.
herd = element herd { attlist.herd, text }
# One tag for each maintainer of a package, multiple allowed
maintainer =
element maintainer {
attlist.maintainer, email, (description | name)*
}
# A long description of the package in freetext
longdescription =
element longdescription { attlist.longdescription, (text | pkg)* }
# The changelog of the package
changelog = element changelog { attlist.changelog, change* }
attlist.changelog &= empty
# The changelog contains various "changes"
change =
element change {
attlist.change,
date,
(developer | version | description | file | contributor | bug)*
}
attlist.change &= empty
date = element date { attlist.date, text }
attlist.date &= empty
# The date of the change, in "YYYY-MM-DD" format
developer = element developer { attlist.developer, name?, email }
attlist.developer &= empty
# The developer that made the change. The email is required, name
# is optional
version = element version { attlist.version, text }
attlist.version &= empty
# version of the packages involved (one tag per version)
file = element file { attlist.file, text }
attlist.file &= empty
# one tag per file touched
contributor = element contributor { attlist.contributor, name?, email? }
attlist.contributor &= empty
# A reference to a user that helped in causing this change.
# There should at least be a name or email address included.
# Email is preferred
bug = element bug { attlist.bug, text }
attlist.bug &= empty
# bug-id of a bug fixed by this change, multiple allowed. The
# format of this is a number or alias for a bug. NOT including a
# # character
# description of what this USE flag does for this package
use = element use { attlist.use, flag* }
flag = element flag { attlist.flag, (text | pkg)* }
# name attribute holds the name of the USE flag
attlist.flag &= attribute name { text }
# category/package information for cross-linking in descriptions
# and useflag descriptions
pkg = element pkg { attlist.pkg, text }
attlist.pkg &= empty
# Common attributes
# the lang attribute, specifies the language of this tag. This is
# only useful for descriptions of various kinds. If a tag with this
# attribute is included there must be a description in the default
# language "C" or "en", which is equivalent
attlist.description &= [ a:defaultValue = "C" ] attribute lang { text }?
attlist.longdescription &=
[ a:defaultValue = "C" ] attribute lang { text }?
attlist.use &= [ a:defaultValue = "C" ] attribute lang { text }?
# The restrict attribute, this attribute specifies restrictions on
# the applicability of tags on versions. The format of this attribute is
# equal to the format of DEPEND lines in ebuilds. There is one special
# value though: restrict="*". A tag that specifies this only applies if
# there are no other tags that apply.
#
# For required tags, there must be either an unrestricted version, or a
# version that is default restricted.
attlist.herd &= attribute restrict { text }?
attlist.maintainer &= attribute restrict { text }?
attlist.longdescription &= attribute restrict { text }?
attlist.flag &= attribute restrict { text }?
# standard parts
email = element email { attlist.email, text }
attlist.email &= empty
# an email address
name = element name { attlist.name, text }
attlist.name &= empty
# the name of a person (maintainer, contributor)
description = element description { attlist.description, text }
start = catmetadata | packages | changelog
# A description of a maintainer or change
|