element-license-to-confirm = element license-to-confirm { localized-string }
# packages in patches have an additional rpmfiles element
element-package = element yum:package { package & element-pkgfiles & (element license-to-confirm { localized-string }?) }
+
+# first part made optional
+ format =
+ ( element-license & element-vendor & element-group & element-buildhost & element-sourcerpm & element-header-range )?,
+ ( element-provides | element-conflicts | element-obsoletes | element-requires | element-recommends | element-enhances | element-supplements | element-suggests )*,
+ element-file*
+
+# wrong namespace again, grr
+ element-time =
+ element yum:time {time} |
+ element time {time}
+ element-size =
+ element yum:size {size} |
+ # and wrong content too...
+ element size {
+ attribute package { xsd:nonNegativeInteger },
+ attribute installed { xsd:nonNegativeInteger }?,
+ attribute archive { xsd:nonNegativeInteger },
+ empty
+ }
+
}
element-patch = element patch { patch }
+# &, fetchmsttfonts mixes up the order
patch =
- attribute patchid { text },
- attribute timestamp { xsd:nonNegativeInteger },
- attribute engine { text },
- element-name,
- element-summary,
- element-description,
- element-license-to-confirm*,
- element-version,
- ( element-provides | element-conflicts | element-obsoletes | element-requires | element-freshens | element-recommends | element-suggests | element-supplements | element-enhances )*,
- element-category,
- element reboot-needed { empty }?,
- element package-manager { empty }?,
- element-update-script?,
+ attribute patchid { text }&
+ attribute timestamp { xsd:nonNegativeInteger }&
+ attribute engine { text }&
+ element-name&
+ element-summary&
+ element-description&
+ element-license-to-confirm*&
+ element-version&
+ ( element-provides | element-conflicts | element-obsoletes | element-requires | element-freshens | element-recommends | element-suggests | element-supplements | element-enhances )*&
+ element-category&
+ element reboot-needed { empty }?&
+ element package-manager { empty }?&
+ element-update-script?&
element atoms { (element-package | element-script | element-message)+ }+
# shortcut since all atoms have the same dependency section
( element-provides | element-conflicts | element-obsoletes | element-requires | element-freshens | element-recommends | element-suggests | element-supplements | element-enhances )*
element-category =
- element category { "youfix" | "security" | "recommended" | "bonus" | "beta" }
+# element category { "youfix" | "security" | "recommended" | "bonus" | "beta" }
+ element category { "optional" | "recommended" | "security" }
element-update-script = element update-script { text }
element-delta-base-version
}
+# none used in fact...
shared-rpmfile-attributes =
- attribute arch { arch },
- attribute filename { text },
- attribute downloadsize { text } ,
+ attribute arch { arch } ?,
+ attribute filename { text } ?,
+ attribute downloadsize { text } ? ,
attribute md5sum { text } ?,
attribute buildtime { text } ?
<?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:yum="http://linux.duke.edu/metadata/common" ns="http://novell.com/package/metadata/suse/patch" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+<grammar ns="http://novell.com/package/metadata/suse/patch" xmlns:yum="http://linux.duke.edu/metadata/common" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<include href="suse-primary.rng">
<start>
<ref name="element-patch"/>
</interleave>
</element>
</define>
+ <!-- first part made optional -->
+ <define name="format">
+ <optional>
+ <interleave>
+ <ref name="element-license"/>
+ <ref name="element-vendor"/>
+ <ref name="element-group"/>
+ <ref name="element-buildhost"/>
+ <ref name="element-sourcerpm"/>
+ <ref name="element-header-range"/>
+ </interleave>
+ </optional>
+ <zeroOrMore>
+ <choice>
+ <ref name="element-provides"/>
+ <ref name="element-conflicts"/>
+ <ref name="element-obsoletes"/>
+ <ref name="element-requires"/>
+ <ref name="element-recommends"/>
+ <ref name="element-enhances"/>
+ <ref name="element-supplements"/>
+ <ref name="element-suggests"/>
+ </choice>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="element-file"/>
+ </zeroOrMore>
+ </define>
+ <!-- wrong namespace again, grr -->
+ <define name="element-time">
+ <choice>
+ <element name="yum:time">
+ <ref name="time"/>
+ </element>
+ <element name="time">
+ <ref name="time"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-size">
+ <choice>
+ <element name="yum:size">
+ <ref name="size"/>
+ </element>
+ <!-- and wrong content too... -->
+ <element name="size">
+ <attribute name="package">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <optional>
+ <attribute name="installed">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <attribute name="archive">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <empty/>
+ </element>
+ </choice>
+ </define>
</include>
<define name="element-patch">
<element name="patch">
<ref name="patch"/>
</element>
</define>
+ <!-- &, fetchmsttfonts mixes up the order -->
<define name="patch">
- <attribute name="patchid"/>
- <attribute name="timestamp">
- <data type="nonNegativeInteger"/>
- </attribute>
- <attribute name="engine"/>
- <ref name="element-name"/>
- <ref name="element-summary"/>
- <ref name="element-description"/>
- <zeroOrMore>
- <ref name="element-license-to-confirm"/>
- </zeroOrMore>
- <ref name="element-version"/>
- <zeroOrMore>
- <choice>
- <ref name="element-provides"/>
- <ref name="element-conflicts"/>
- <ref name="element-obsoletes"/>
- <ref name="element-requires"/>
- <ref name="element-freshens"/>
- <ref name="element-recommends"/>
- <ref name="element-suggests"/>
- <ref name="element-supplements"/>
- <ref name="element-enhances"/>
- </choice>
- </zeroOrMore>
- <ref name="element-category"/>
- <optional>
- <element name="reboot-needed">
- <empty/>
- </element>
- </optional>
- <optional>
- <element name="package-manager">
- <empty/>
- </element>
- </optional>
- <optional>
- <ref name="element-update-script"/>
- </optional>
- <oneOrMore>
- <element name="atoms">
- <oneOrMore>
- <choice>
- <ref name="element-package"/>
- <ref name="element-script"/>
- <ref name="element-message"/>
- </choice>
- </oneOrMore>
- </element>
- </oneOrMore>
+ <interleave>
+ <attribute name="patchid"/>
+ <attribute name="timestamp">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="engine"/>
+ <ref name="element-name"/>
+ <ref name="element-summary"/>
+ <ref name="element-description"/>
+ <zeroOrMore>
+ <ref name="element-license-to-confirm"/>
+ </zeroOrMore>
+ <ref name="element-version"/>
+ <zeroOrMore>
+ <choice>
+ <ref name="element-provides"/>
+ <ref name="element-conflicts"/>
+ <ref name="element-obsoletes"/>
+ <ref name="element-requires"/>
+ <ref name="element-freshens"/>
+ <ref name="element-recommends"/>
+ <ref name="element-suggests"/>
+ <ref name="element-supplements"/>
+ <ref name="element-enhances"/>
+ </choice>
+ </zeroOrMore>
+ <ref name="element-category"/>
+ <optional>
+ <element name="reboot-needed">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="package-manager">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="element-update-script"/>
+ </optional>
+ <oneOrMore>
+ <element name="atoms">
+ <oneOrMore>
+ <choice>
+ <ref name="element-package"/>
+ <ref name="element-script"/>
+ <ref name="element-message"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </interleave>
</define>
<!-- shortcut since all atoms have the same dependency section -->
<define name="dependency-block">
</zeroOrMore>
</define>
<define name="element-category">
+ <!-- element category { "youfix" | "security" | "recommended" | "bonus" | "beta" } -->
<element name="category">
<choice>
- <value>youfix</value>
- <value>security</value>
+ <value>optional</value>
<value>recommended</value>
- <value>bonus</value>
- <value>beta</value>
+ <value>security</value>
</choice>
</element>
</define>
<ref name="element-delta-base-version"/>
</element>
</define>
+ <!-- none used in fact... -->
<define name="shared-rpmfile-attributes">
- <attribute name="arch">
- <ref name="arch"/>
- </attribute>
- <attribute name="filename"/>
- <attribute name="downloadsize"/>
+ <optional>
+ <attribute name="arch">
+ <ref name="arch"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="filename"/>
+ </optional>
+ <optional>
+ <attribute name="downloadsize"/>
+ </optional>
<optional>
<attribute name="md5sum"/>
</optional>
default namespace = "http://linux.duke.edu/metadata/common"
+namespace suse = "http://novell.com/package/metadata/suse/common"
grammar {
element-package =
element package { package }
+# ?: for package in atoms (suse-broken)
package =
attribute type { "rpm" } &
element-name &
element-arch &
element-version &
element-checksum &
- (element-summary*) &
- (element-description*) &
- element-packager &
- element-url &
+ element-summary* &
+ element-description* &
+ element-packager? &
+ element-url? &
element-time &
element-size &
element-location &
- element-format
+ element-format &
+ element suse:license-to-confirm {text}?
element-name =
element name { text }
<?xml version="1.0" encoding="UTF-8"?>
-<grammar ns="http://linux.duke.edu/metadata/common" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+<grammar ns="http://linux.duke.edu/metadata/common" xmlns:suse="http://novell.com/package/metadata/suse/common" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!-- defines element-format and format -->
<include href="rpm-ns.rng"/>
<start>
<ref name="package"/>
</element>
</define>
+ <!-- ?: for package in atoms (suse-broken) -->
<define name="package">
<interleave>
<attribute name="type">
<zeroOrMore>
<ref name="element-description"/>
</zeroOrMore>
- <ref name="element-packager"/>
- <ref name="element-url"/>
+ <optional>
+ <ref name="element-packager"/>
+ </optional>
+ <optional>
+ <ref name="element-url"/>
+ </optional>
<ref name="element-time"/>
<ref name="element-size"/>
<ref name="element-location"/>
<ref name="element-format"/>
+ <optional>
+ <element name="suse:license-to-confirm">
+ <text/>
+ </element>
+ </optional>
</interleave>
</define>
<define name="element-name">
attribute-kind =
attribute kind { "package" | "patch" | "script" | "message" | "product" | "atom" }
-attribute-flags-provides =
- attribute flags { "EQ" | "LE" | "GE" }
-attribute-flags-obsoletes =
- attribute flags { "EQ" | "LE" | "GE" | "LT" }
+#attribute-flags-provides =
+# attribute flags { "EQ" | "LE" | "GE" }
+#attribute-flags-obsoletes =
+# attribute flags { "EQ" | "LE" | "GE" | "LT" }
attribute-flags =
attribute flags { "EQ" | "LE" | "GE" | "LT" | "GT" }
, empty
)
-element-obsoletes-entry =
-(
- element entry {
- (shared-entry-attributes & attribute-flags-obsoletes?)
- , empty
- }
-)
-
-element-provides-entry =
-(
- element entry {
- (shared-entry-attributes & attribute-flags-provides?)
- , empty
-}
-)
+#element-obsoletes-entry =
+#(
+# element entry {
+# (shared-entry-attributes & attribute-flags-obsoletes?)
+# , empty
+# }
+#)
+#
+#element-provides-entry =
+#(
+# element entry {
+# (shared-entry-attributes & attribute-flags-provides?)
+# , empty
+#}
+#)
element-requires-entry =
(
element provides { provides }
provides =
- element-provides-entry*
+ element-entry*
element-conflicts =
element conflicts { conflicts }
element obsoletes { obsoletes }
obsoletes =
- element-obsoletes-entry*
+ element-entry*
element-requires =
element requires { requires }
# element-suggests?,
# element-enhances?,
# element-supplements?,
-# element-recommends?
\ No newline at end of file
+# element-recommends?
<?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:ns1="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" ns="http://linux.duke.edu/metadata/rpm" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+<grammar ns="http://linux.duke.edu/metadata/rpm" xmlns:ns1="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="element-format">
<element name="ns1:format">
<ref name="format"/>
</choice>
</attribute>
</define>
- <define name="attribute-flags-provides">
- <attribute name="flags">
- <choice>
- <value>EQ</value>
- <value>LE</value>
- <value>GE</value>
- </choice>
- </attribute>
- </define>
- <define name="attribute-flags-obsoletes">
- <attribute name="flags">
- <choice>
- <value>EQ</value>
- <value>LE</value>
- <value>GE</value>
- <value>LT</value>
- </choice>
- </attribute>
- </define>
+ <!--
+ attribute-flags-provides =
+ attribute flags { "EQ" | "LE" | "GE" }
+ attribute-flags-obsoletes =
+ attribute flags { "EQ" | "LE" | "GE" | "LT" }
+ -->
<define name="attribute-flags">
<attribute name="flags">
<choice>
</interleave>
<empty/>
</define>
- <define name="element-obsoletes-entry">
- <element name="entry">
- <interleave>
- <ref name="shared-entry-attributes"/>
- <optional>
- <ref name="attribute-flags-obsoletes"/>
- </optional>
- </interleave>
- <empty/>
- </element>
- </define>
- <define name="element-provides-entry">
- <element name="entry">
- <interleave>
- <ref name="shared-entry-attributes"/>
- <optional>
- <ref name="attribute-flags-provides"/>
- </optional>
- </interleave>
- <empty/>
- </element>
- </define>
+ <!--
+ element-obsoletes-entry =
+ (
+ element entry {
+ (shared-entry-attributes & attribute-flags-obsoletes?)
+ , empty
+ }
+ )
+
+ element-provides-entry =
+ (
+ element entry {
+ (shared-entry-attributes & attribute-flags-provides?)
+ , empty
+ }
+ )
+ -->
<define name="element-requires-entry">
<element name="entry">
<interleave>
</define>
<define name="provides">
<zeroOrMore>
- <ref name="element-provides-entry"/>
+ <ref name="element-entry"/>
</zeroOrMore>
</define>
<define name="element-conflicts">
</define>
<define name="obsoletes">
<zeroOrMore>
- <ref name="element-obsoletes-entry"/>
+ <ref name="element-entry"/>
</zeroOrMore>
</define>
<define name="element-requires">
suse-additional-format?
suse-additional-format =
- element-authors,
+ element-authors?,
element-keywords?,
element-dirsizes?,
element-freshens?,
element-install-only?,
- element license-to-confirm { localized-string }*
+ element suse:license-to-confirm { localized-string }*
element-authors =
element authors { authors }
element-freshens =
element freshens { freshens }
+# suse-entry looks like an unwanted oversight
freshens =
- element-entry*
+ (element-entry | element-suse-entry) *
+
+element-suse-entry =
+ element suse:entry { usual-entry-content }
element-install-only =
element install-only { empty }
<?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:ns1="http://linux.duke.edu/metadata/common" ns="http://novell.com/package/metadata/suse/common" xmlns="http://relaxng.org/ns/structure/1.0">
+<grammar ns="http://novell.com/package/metadata/suse/common" xmlns:ns1="http://linux.duke.edu/metadata/common" xmlns:suse="http://novell.com/package/metadata/suse/common" xmlns="http://relaxng.org/ns/structure/1.0">
<include href="primary.rng">
<define name="element-format">
<element name="ns1:format">
</interleave>
</define>
<define name="suse-additional-format">
- <ref name="element-authors"/>
+ <optional>
+ <ref name="element-authors"/>
+ </optional>
<optional>
<ref name="element-keywords"/>
</optional>
<ref name="element-install-only"/>
</optional>
<zeroOrMore>
- <element name="license-to-confirm">
+ <element name="suse:license-to-confirm">
<ref name="localized-string"/>
</element>
</zeroOrMore>
<ref name="freshens"/>
</element>
</define>
+ <!-- suse-entry looks like an unwanted oversight -->
<define name="freshens">
<zeroOrMore>
- <ref name="element-entry"/>
+ <choice>
+ <ref name="element-entry"/>
+ <ref name="element-suse-entry"/>
+ </choice>
</zeroOrMore>
</define>
+ <define name="element-suse-entry">
+ <element name="suse:entry">
+ <ref name="usual-entry-content"/>
+ </element>
+ </define>
<define name="element-install-only">
<element name="install-only">
<empty/>