# Metadata for a category namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" catmetadata = element catmetadata { attlist.catmetadata, longdescription* } attlist.catmetadata &= [ a:defaultValue = "" ] attribute pkgname { text }? # Metadata for a package pkgmetadata = element pkgmetadata { attlist.pkgmetadata, (maintainer | longdescription | slots | stabilize-allarches | use | upstream)* } attlist.pkgmetadata &= [ a:defaultValue = "" ] attribute pkgname { text }? # One tag for each maintainer of a package, multiple allowed maintainer = element maintainer { attlist.maintainer, (email | name | description)+ } # type attribute determines whether the maintainer is a person or a project. # Unknown is added to handle s in s. Using it (or no # explicit type) for Gentoo maintainers is prohibited. attlist.maintainer &= [ a:defaultValue = "unknown" ] attribute type { "person" | "project" | "unknown" }? # proxied attribute determines whether the maintainer is a proxied # maintainer (yes), regular dev (no) or a proxy for somebody (proxy). It is # valid only for Gentoo maintainers. attlist.maintainer &= [ a:defaultValue = "no" ] attribute proxied { "yes" | "no" | "proxy" }? # A long description of the package in freetext longdescription = element longdescription { attlist.longdescription, (text | pkg | cat)* } # A description of the packages SLOTs slots = element slots { attlist.slots, slot*, subslots? } # A particular SLOT slot = element slot { attlist.slot, text* } # name attribute holds the name of the SLOT, for sub-SLOTS # use the subslots element. A slot name of '*' can be used to # indicate a single description applying to all the slots in which # case no other elements may be present. attlist.slot &= attribute name { text } # The meaning of sub-SLOTs for the whole package subslots = element subslots { attlist.subslots, text* } attlist.subslots &= empty # whether it's possible to stabilize ALLARCHES stabilize-allarches = element stabilize-allarches { attlist.stabilize-allarches, empty } # description of what this USE flag does for this package use = element use { attlist.use, flag* } flag = element flag { attlist.flag, (text | pkg | cat)* } # name attribute holds the name of the USE flag attlist.flag &= attribute name { text } # upstream metadata information (maintainers, upstream docs,..) upstream = element upstream { attlist.upstream, (maintainer | changelog | doc | bugs-to | remote-id)* } attlist.upstream &= empty # Due to the limitation of DTD this will also allow a status # attribute for the package maintainer element. Please note that # the usage of the status attribute is nevertheless _only_ allowed # in the upstream maintainer element. attlist.maintainer &= [ a:defaultValue = "unknown" ] attribute status { "active" | "inactive" | "unknown" }? # URL where the upstream changelog can be found changelog = element changelog { attlist.changelog, text } attlist.changelog &= empty # URL where the location of the upstream documentation can be found doc = element doc { attlist.doc, text } attlist.doc &= [ a:defaultValue = "en" ] attribute lang { text }? # location where to report bugs # (may also be an email address prefixed with mailto:) bugs-to = element bugs-to { attlist.bugs-to, text } attlist.bugs-to &= empty # specify a type of package identification tracker remote-id = element remote-id { attlist.remote-id, text } attlist.remote-id &= attribute type { "bitbucket" | "cpan" | "cpan-module" | "cpe" | "cran" | "ctan" | "gentoo" | "github" | "gitlab" | "google-code" | "hackage" | "heptapod" | "launchpad" | "osdn" | "pear" | "pecl" | "pypi" | "rubygems" | "sourceforge" | "sourcehut" | "vim" } # category/package information for cross-linking in descriptions # and useflag descriptions pkg = element pkg { attlist.pkg, text } attlist.pkg &= empty cat = element cat { attlist.cat, text } attlist.cat &= empty # Common attributes # the lang attribute, specifies the language of this tag in the # form of an IETF (BCP 47) language 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 "en" attlist.description &= [ a:defaultValue = "en" ] attribute lang { text }? attlist.longdescription &= [ a:defaultValue = "en" ] attribute lang { text }? attlist.slots &= [ a:defaultValue = "en" ] attribute lang { text }? attlist.use &= [ a:defaultValue = "en" ] 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. Only package # dependency specifications conforming to EAPI=0 syntax are allowed. # The dependency specification may only contain references to the # package itself and no other package. # # For required tags, there must be either an unrestricted version, or a # version that is default restricted. attlist.maintainer &= attribute restrict { text }? attlist.longdescription &= attribute restrict { text }? attlist.flag &= attribute restrict { text }? attlist.stabilize-allarches &= attribute restrict { text }? # standard parts # an email address email = element email { attlist.email, text } attlist.email &= empty # the name of a person (maintainer, contributor) name = element name { attlist.name, text } attlist.name &= empty # A description of a maintainer or change description = element description { attlist.description, text } start = pkgmetadata | catmetadata