The added data consists in: - positive: - valid data for validation, importing, exporting tests - negative: - invalid data for validation tests - license: - just a license file to be used for exporting tests https://gitlab.com/libosinfo/osinfo-db-tools/issues/2 Signed-off-by: Fabiano Fidêncio <fidencio@xxxxxxxxxx> --- tests/data/license | 2 + .../os/fedoraproject.org/fedora-rawhide.xml | 74 ++ tests/data/negative/schema/osinfo.rng | 899 ++++++++++++++++++ .../positive/datamap/x.org/x11-keyboard.xml | 150 +++ .../positive/device/ibm.com/ps2-keyboard.xml | 22 + .../silverblue-kickstart-desktop.xml | 116 +++ .../os/fedoraproject.org/fedora-rawhide.xml | 74 ++ .../platform/linux-kvm.org/qemu-kvm-1.2.0.xml | 29 + tests/data/positive/schema/osinfo.rng | 899 ++++++++++++++++++ 9 files changed, 2265 insertions(+) create mode 100644 tests/data/license create mode 100644 tests/data/negative/os/fedoraproject.org/fedora-rawhide.xml create mode 100644 tests/data/negative/schema/osinfo.rng create mode 100644 tests/data/positive/datamap/x.org/x11-keyboard.xml create mode 100644 tests/data/positive/device/ibm.com/ps2-keyboard.xml create mode 100644 tests/data/positive/install-script/fedoraproject.org/silverblue-kickstart-desktop.xml create mode 100644 tests/data/positive/os/fedoraproject.org/fedora-rawhide.xml create mode 100644 tests/data/positive/platform/linux-kvm.org/qemu-kvm-1.2.0.xml create mode 100644 tests/data/positive/schema/osinfo.rng diff --git a/tests/data/license b/tests/data/license new file mode 100644 index 0000000..e5eaa97 --- /dev/null +++ b/tests/data/license @@ -0,0 +1,2 @@ +This work is licensed under the GNU GPLv2 or later. +See the COPYING file in the top-level directory. diff --git a/tests/data/negative/os/fedoraproject.org/fedora-rawhide.xml b/tests/data/negative/os/fedoraproject.org/fedora-rawhide.xml new file mode 100644 index 0000000..75b31a5 --- /dev/null +++ b/tests/data/negative/os/fedoraproject.org/fedora-rawhide.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<libosinfo version="0.0.1"> + + <os id="http://fedoraproject.org/fedora/rawhide"> + <short-id>fedora-rawhide</short-id> + <name>Fedora Rawhide</name> + <version>Rawhide</version> + <vendor>Fedora Project</vendor> + <vendor xml:lang="ca">Projecte Fedora</vendor> + <vendor xml:lang="de">Fedora-Projekt</vendor> + <vendor xml:lang="es">Fedora Project</vendor> + <vendor xml:lang="fr">Fedora Project</vendor> + <vendor xml:lang="id">Proyek Fedora</vendor> + <vendor xml:lang="it">Progetto Fedora</vendor> + <vendor xml:lang="ja">Fedora Project</vendor> + <vendor xml:lang="pl">Projekt Fedora</vendor> + <vendor xml:lang="pt">Projecto Fedora </vendor> + <vendor xml:lang="pt_BR">Projeto Fedora</vendor> + <vendor xml:lang="uk">Проект Fedora</vendor> + <family>linux</family> + <distro>fedora</distro> + <upgrades id="http://fedoraproject.org/fedora/29"/> + <derives-from id="http://fedoraproject.org/fedora/29"/> + <release-status>prerelease</release-status> + + <media arch="x86_64"> + <iso> + <volume-id>Fedora-.*-dvd-x86_64-rawh</volume-id> + </iso> + <kernel>isolinux/vmlinuz</kernel> + <initrd>isolinux/initrd.img</initrd> + </media> + + <media live="true" arch="x86_64" non-existent="false"> + <iso> + <volume-id>Fedora-.*-Live-rawh.*</volume-id> + </iso> + </media> + + <tree arch="x86_64"> + <url>https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Workstation/x86_64/os</url> + <treeinfo> + <family>Fedora</family> + <version>Rawhide</version> + <arch>x86_64</arch> + <variant>Workstation</variant> + </treeinfo> + </tree> + + <tree arch="x86_64"> + <url>https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Server/x86_64/os</url> + <treeinfo> + <family>Fedora</family> + <version>Rawhide</version> + <arch>x86_64</arch> + <variant>Server</variant> + </treeinfo> + </tree> + + <resources arch="all"> + <minimum> + <n-cpus>1</n-cpus> + <cpu>1000000000</cpu> + <ram>1073741824</ram> + <storage>10737418240</storage> + </minimum> + + <recommended> + <ram>2147483648</ram> + <storage>21474836480</storage> + </recommended> + </resources> + </os> +</libosinfo> diff --git a/tests/data/negative/schema/osinfo.rng b/tests/data/negative/schema/osinfo.rng new file mode 100644 index 0000000..6228c52 --- /dev/null +++ b/tests/data/negative/schema/osinfo.rng @@ -0,0 +1,899 @@ +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <!-- Schema distributed with osinfo-db-20190329 --> + + <start> + <ref name='libosinfo'/> + </start> + + <define name='libosinfo'> + <element name='libosinfo'> + <attribute name='version'> + <choice> + <value>0.0.1</value> + </choice> + </attribute> + + <zeroOrMore> + <choice> + <ref name='datamap'/> + <ref name='device'/> + <ref name='os'/> + <ref name='platform'/> + <ref name='deployment'/> + <ref name='install-script'/> + </choice> + </zeroOrMore> + </element> + </define> + + <define name='datamap'> + <element name='datamap'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <oneOrMore> + <element name='entry'> + <attribute name='inval'> + <text/> + </attribute> + <attribute name='outval'> + <text/> + </attribute> + </element> + </oneOrMore> + </element> + </define> + + <define name='device'> + <element name='device'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <interleave> + <oneOrMore> + <element name='name'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <optional> + <element name='bus-type'> + <choice> + <value>isa</value> + <value>pci</value> + <value>usb</value> + <value>xen</value> + <value>ps2</value> + </choice> + </element> + </optional> + <optional> + <element name='class'> + <choice> + <value>audio</value> + <value>block</value> + <value>console</value> + <value>chipset</value> + <value>controller.usb</value> + <value>filesystem</value> + <value>input</value> + <value>memory.balloon</value> + <value>net</value> + <value>video</value> + <value>watchdog</value> + <value>rng</value> + </choice> + </element> + </optional> + <zeroOrMore> + <element name='vendor'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </zeroOrMore> + <optional> + <element name='vendor-id'> + <ref name='hexid'/> + </element> + </optional> + <optional> + <element name='product'> + <text/> + </element> + </optional> + <optional> + <element name='product-id'> + <choice> + <ref name='hexid'/> + <ref name='alpha'/> + </choice> + </element> + </optional> + <optional> + <element name='subsystem'> + <text/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name="product-attr"> + <attribute name='id'> + <ref name='url'/> + </attribute> + </define> + + <define name="product-content"> + <interleave> + <oneOrMore> + <element name='vendor'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <oneOrMore> + <element name='name'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <oneOrMore> + <element name='short-id'> + <text/> + </element> + </oneOrMore> + <optional> + <element name='version'> + <text/> + </element> + </optional> + <optional> + <element name='codename'> + <text/> + </element> + </optional> + <optional> + <element name='family'> + <text/> + </element> + </optional> + <optional> + <element name='distro'> + <text/> + </element> + </optional> + </interleave> + </define> + + <define name="product-dates"> + <interleave> + <optional> + <element name='release-date'> + <ref name='date'/> + </element> + </optional> + <optional> + <element name='eol-date'> + <ref name='date'/> + </element> + </optional> + </interleave> + </define> + + <define name="product-rel"> + <interleave> + <zeroOrMore> + <element name="upgrades"> + <attribute name='id'> + <ref name="url"/> + </attribute> + </element> + </zeroOrMore> + <zeroOrMore> + <element name="derives-from"> + <attribute name='id'> + <ref name="url"/> + </attribute> + </element> + </zeroOrMore> + <optional> + <element name="clones"> + <attribute name='id'> + <ref name="url"/> + </attribute> + </element> + </optional> + </interleave> + </define> + + <define name='variant'> + <element name='variant'> + <attribute name='id'> + </attribute> + <oneOrMore> + <element name='name'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + </element> + </define> + + <define name='devices-rel'> + <element name='devices'> + <zeroOrMore> + <element name='device'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <optional> + <attribute name='supported'> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <element name='driver'> + <text/> + </element> + </optional> + </element> + </zeroOrMore> + </element> + </define> + + <define name='resource-attr'> + <interleave> + <optional> + <element name='cpu'> + <ref name='num'/> + </element> + </optional> + <optional> + <element name='n-cpus'> + <ref name='num'/> + </element> + </optional> + <optional> + <element name='ram'> + <ref name='num'/> + </element> + </optional> + <optional> + <element name='storage'> + <ref name='num'/> + </element> + </optional> + </interleave> + </define> + + <define name='resources'> + <element name='resources'> + <attribute name='arch'> + <ref name='archnamesorwildcard'/> + </attribute> + <optional> + <attribute name='inherit'> + <ref name='bool'/> + </attribute> + </optional> + <interleave> + <optional> + <element name='network-install'> + <ref name='resource-attr'/> + </element> + </optional> + <optional> + <element name='minimum'> + <ref name='resource-attr'/> + </element> + </optional> + <optional> + <element name='recommended'> + <ref name='resource-attr'/> + </element> + </optional> + <optional> + <element name='maximum'> + <ref name='resource-attr'/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='iso'> + <element name='iso'> + <interleave> + <optional> + <element name='volume-id'> + <text/> + </element> + </optional> + <optional> + <element name='publisher-id'> + <text/> + </element> + </optional> + <optional> + <element name='application-id'> + <text/> + </element> + </optional> + <optional> + <element name='system-id'> + <text/> + </element> + </optional> + <optional> + <element name='volume-size'> + <ref name='num'/> + </element> + </optional> + <zeroOrMore> + <ref name='media-lang'/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name='media'> + <element name='media'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <optional> + <attribute name="live"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name="installer"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name='installer-script'> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name='installer-reboots'> + <ref name='num'/> + </attribute> + </optional> + <optional> + <attribute name='eject-after-install'> + <ref name='bool'/> + </attribute> + </optional> + <interleave> + <optional> + <element name='variant'> + <attribute name='id'> + </attribute> + </element> + </optional> + <optional> + <element name='url'> + <ref name='url'/> + </element> + </optional> + <optional> + <ref name='iso'/> + </optional> + <optional> + <element name='initrd'> + <text/> + </element> + </optional> + <optional> + <element name='kernel'> + <text/> + </element> + </optional> + <optional> + <zeroOrMore> + <ref name='installer'/> + </zeroOrMore> + </optional> + </interleave> + </element> + </define> + + <define name='media-lang'> + <element name='l10n-language'> + <optional> + <attribute name="regex"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name="l10n-language-map"> + <ref name='url'/> + </attribute> + </optional> + <text/> + </element> + </define> + + <define name='treeinfo'> + <element name='treeinfo'> + <interleave> + <optional> + <element name='family'> + <text/> + </element> + </optional> + <optional> + <element name='variant'> + <text/> + </element> + </optional> + <optional> + <element name='version'> + <text/> + </element> + </optional> + <optional> + <element name='arch'> + <text/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='tree'> + <element name='tree'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <interleave> + <optional> + <element name='variant'> + <attribute name='id'> + </attribute> + </element> + </optional> + <optional> + <element name='url'> + <ref name='url'/> + </element> + </optional> + <optional> + <ref name='treeinfo'/> + </optional> + <optional> + <element name='initrd'> + <text/> + </element> + </optional> + <optional> + <element name='kernel'> + <text/> + </element> + </optional> + <optional> + <element name='boot-iso'> + <text/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='image'> + <element name='image'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <attribute name='format'> + <ref name='imageformats'/> + </attribute> + <optional> + <attribute name='cloud-init'> + <ref name='bool'/> + </attribute> + </optional> + <interleave> + <optional> + <element name='variant'> + <attribute name='id'> + </attribute> + </element> + </optional> + <optional> + <element name='url'> + <ref name='url'/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='installer'> + <element name='installer'> + <zeroOrMore> + <element name="script"> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + </zeroOrMore> + </element> + </define> + + <define name='driver'> + <element name='driver'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <attribute name='location'> + <text/> + </attribute> + <optional> + <attribute name="pre-installable"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name="signed"> + <ref name='bool'/> + </attribute> + </optional> + <zeroOrMore> + <element name='file'> + <text/> + </element> + </zeroOrMore> + <oneOrMore> + <element name='device'> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + </oneOrMore> + </element> + </define> + + <define name='os'> + <element name='os'> + <interleave> + <ref name='product-attr'/> + <ref name='product-content'/> + <ref name='product-dates'/> + <ref name='product-rel'/> + <optional> + <ref name='devices-rel'/> + </optional> + <optional> + <ref name='release-status'/> + </optional> + <zeroOrMore> + <ref name='variant'/> + </zeroOrMore> + <zeroOrMore> + <ref name='resources'/> + </zeroOrMore> + <zeroOrMore> + <ref name='media'/> + </zeroOrMore> + <zeroOrMore> + <ref name='tree'/> + </zeroOrMore> + <zeroOrMore> + <ref name='image'/> + </zeroOrMore> + <zeroOrMore> + <ref name='installer'/> + </zeroOrMore> + <zeroOrMore> + <ref name='driver'/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name='platform'> + <element name='platform'> + <interleave> + <ref name='product-attr'/> + <ref name='product-content'/> + <ref name='product-dates'/> + <ref name='product-rel'/> + <optional> + <ref name='devices-rel'/> + </optional> + </interleave> + </element> + </define> + + <define name='deployment'> + <element name='deployment'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <interleave> + <element name='os'> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + <element name='platform'> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + <ref name='devices-rel'/> + </interleave> + </element> + </define> + + <define name='install-script'> + <element name='install-script'> + <interleave> + <element name='profile'> + <text/> + </element> + <optional> + <element name='path-format'> + <ref name='path-formats'/> + </element> + </optional> + <optional> + <element name='expected-filename'> + <text/> + </element> + </optional> + <optional> + <ref name='avatar-format'/> + </optional> + <optional> + <element name='config'> + <oneOrMore> + <element name='param'> + <attribute name="name"/> + <attribute name="policy"> + <ref name='policies'/> + </attribute> + <optional> + <attribute name="value-map"/> + </optional> + </element> + </oneOrMore> + </element> + </optional> + <optional> + <element name='product-key-format'> + <text/> + </element> + </optional> + <optional> + <element name='needs-internet'> + <ref name='bool'/> + </element> + </optional> + <optional> + <element name='can-pre-install-drivers'> + <ref name='bool'/> + </element> + </optional> + <optional> + <element name='pre-install-drivers-signing-req'> + <ref name='driver-signing-reqs'/> + </element> + </optional> + <optional> + <element name='can-post-install-drivers'> + <ref name='bool'/> + </element> + </optional> + <optional> + <element name='post-install-drivers-signing-req'> + <ref name='driver-signing-reqs'/> + </element> + </optional> + <zeroOrMore> + <ref name='injection-method'/> + </zeroOrMore> + <element name='template'> + <choice> + <group> + <attribute name="uri"/> + <empty/> + </group> + <ref name="customElement"/> + </choice> + </element> + <ref name='product-attr'/> + <ref name='product-rel'/> + </interleave> + </element> + </define> + + <define name='avatar-format'> + <element name='avatar-format'> + <interleave> + <oneOrMore> + <element name="mime-type"> + <text/> + </element> + </oneOrMore> + <optional> + <element name="width"> + <ref name='num'/> + </element> + </optional> + <optional> + <element name="height"> + <ref name='num'/> + </element> + </optional> + <optional> + <element name="alpha"> + <ref name='bool'/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name="customElement"> + <element> + <anyName/> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <ref name="customElement"/> + </choice> + </zeroOrMore> + </element> + </define> + + <define name='archnamesorwildcard'> + <choice> + <value>all</value> + <ref name='archnames'/> + </choice> + </define> + <define name='archnames'> + <choice> + <value>aarch64</value> + <value>alpha</value> + <value>armv7l</value> + <value>cris</value> + <value>i686</value> + <value>ia64</value> + <value>lm32</value> + <value>m68k</value> + <value>microblaze</value> + <value>microblazeel</value> + <value>mips</value> + <value>mipsel</value> + <value>mips64</value> + <value>mips64el</value> + <value>openrisc</value> + <value>parisc</value> + <value>parisc64</value> + <value>ppc</value> + <value>ppc64</value> + <value>ppc64le</value> + <value>ppcemb</value> + <value>s390</value> + <value>s390x</value> + <value>sh4</value> + <value>sh4eb</value> + <value>sparc</value> + <value>sparc64</value> + <value>unicore32</value> + <value>x86_64</value> + <value>xtensa</value> + <value>xtensaeb</value> + </choice> + </define> + + <define name='imageformats'> + <choice> + <value>qcow2</value> + <value>raw</value> + <value>vhdx</value> + <value>vmdk</value> + </choice> + </define> + + <define name='date'> + <data type="string"> + <param name="pattern">[0-9]{4}-[0-9]{2}-[0-9]{2}</param> + </data> + </define> + + <define name='hexid'> + <data type="string"> + <param name="pattern">[0-9a-fA-F]+</param> + </data> + </define> + + <define name='alpha'> + <data type="string"> + <param name="pattern">[a-zA-Z]+</param> + </data> + </define> + + <define name='bool'> + <choice> + <data type='string'> + <param name='pattern'>true|false</param> + </data> + <empty/> + </choice> + </define> + + <define name='num'> + <data type="string"> + <param name="pattern">[0-9]+</param> + </data> + </define> + + <define name='url'> + <data type="string"> + <param name="pattern">\w+://.*</param> + </data> + </define> + + <define name='policies'> + <data type="string"> + <param name="pattern">required|optional</param> + </data> + </define> + + <define name='path-formats'> + <data type="string"> + <param name="pattern">dos|unix</param> + </data> + </define> + <define name='driver-signing-reqs'> + <data type="string"> + <param name="pattern">strict|warn|none</param> + </data> + </define> + + <define name='release-status'> + <element name='release-status'> + <data type="string"> + <param name="pattern">snapshot|prerelease|released|rolling</param> + </data> + </element> + </define> + + <define name='injection-method'> + <element name='injection-method'> + <data type="string"> + <param name="pattern">cdrom|disk|floppy|initrd|web</param> + </data> + </element> + </define> +</grammar> diff --git a/tests/data/positive/datamap/x.org/x11-keyboard.xml b/tests/data/positive/datamap/x.org/x11-keyboard.xml new file mode 100644 index 0000000..bd02938 --- /dev/null +++ b/tests/data/positive/datamap/x.org/x11-keyboard.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8"?> +<libosinfo version="0.0.1"> + + <datamap id="http://x.org/x11-keyboard"> + <entry outval="za" inval="af_ZA"/> + <entry outval="ae" inval="ar_AE"/> + <entry outval="bh" inval="ar_BH"/> + <entry outval="dz" inval="ar_DZ"/> + <entry outval="eg" inval="ar_EG"/> + <entry outval="in" inval="ar_IN"/> + <entry outval="iq" inval="ar_IQ"/> + <entry outval="jo" inval="ar_JO"/> + <entry outval="kw" inval="ar_KW"/> + <entry outval="lb" inval="ar_LB"/> + <entry outval="ly" inval="ar_LY"/> + <entry outval="ma" inval="ar_MA"/> + <entry outval="om" inval="ar_OM"/> + <entry outval="qa" inval="ar_QA"/> + <entry outval="sa" inval="ar_SA"/> + <entry outval="sd" inval="ar_SD"/> + <entry outval="sy" inval="ar_SY"/> + <entry outval="tn" inval="ar_TN"/> + <entry outval="ye" inval="ar_YE"/> + <entry outval="in" inval="as_IN"/> + <entry outval="es (ast)" inval="ast_ES"/> + <entry outval="by" inval="be_BY"/> + <entry outval="bg" inval="bg_BG"/> + <entry outval="bd" inval="bn_BD"/> + <entry outval="in (ben)" inval="bn_IN"/> + <entry outval="fr (bre)" inval="br_FR"/> + <entry outval="ba" inval="bs_BA"/> + <entry outval="es (cat)" inval="ca_ES"/> + <entry outval="cz" inval="cs_CZ"/> + <entry outval="gb" inval="cy_GB"/> + <entry outval="dk" inval="da_DK"/> + <entry outval="at" inval="de_AT"/> + <entry outval="be" inval="de_BE"/> + <entry outval="ch" inval="de_CH"/> + <entry outval="de" inval="de_DE"/> + <entry outval="lu" inval="de_LU"/> + <entry outval="gr" inval="el_GR"/> + <entry outval="au" inval="en_AU"/> + <entry outval="bw" inval="en_BW"/> + <entry outval="ca (eng)" inval="en_CA"/> + <entry outval="dk" inval="en_DK"/> + <entry outval="gb" inval="en_GB"/> + <entry outval="hk" inval="en_HK"/> + <entry outval="ie" inval="en_IE"/> + <entry outval="in (eng)" inval="en_IN"/> + <entry outval="nz" inval="en_NZ"/> + <entry outval="ph" inval="en_PH"/> + <entry outval="sg" inval="en_SG"/> + <entry outval="us" inval="en_US"/> + <entry outval="za" inval="en_ZA"/> + <entry outval="zw" inval="en_ZW"/> + <entry outval="ar" inval="es_AR"/> + <entry outval="bo" inval="es_BO"/> + <entry outval="cl" inval="es_CL"/> + <entry outval="co" inval="es_CO"/> + <entry outval="cr" inval="es_CR"/> + <entry outval="do" inval="es_DO"/> + <entry outval="ec" inval="es_EC"/> + <entry outval="es" inval="es_ES"/> + <entry outval="gt" inval="es_GT"/> + <entry outval="hn" inval="es_HN"/> + <entry outval="mx" inval="es_MX"/> + <entry outval="ni" inval="es_NI"/> + <entry outval="pa" inval="es_PA"/> + <entry outval="pe" inval="es_PE"/> + <entry outval="pr" inval="es_PR"/> + <entry outval="py" inval="es_PY"/> + <entry outval="sv" inval="es_SV"/> + <entry outval="us" inval="es_US"/> + <entry outval="uy" inval="es_UY"/> + <entry outval="ve" inval="es_VE"/> + <entry outval="ee" inval="et_EE"/> + <entry outval="es" inval="eu_ES"/> + <entry outval="ir" inval="fa_IR"/> + <entry outval="fi" inval="fi_FI"/> + <entry outval="fo" inval="fo_FO"/> + <entry outval="be" inval="fr_BE"/> + <entry outval="ca" inval="fr_CA"/> + <entry outval="ch (fr)" inval="fr_CH"/> + <entry outval="fr" inval="fr_FR"/> + <entry outval="lu" inval="fr_LU"/> + <entry outval="ie" inval="ga_IE"/> + <entry outval="es" inval="gl_ES"/> + <entry outval="in (guj)" inval="gu_IN"/> + <entry outval="gb" inval="gv_GB"/> + <entry outval="il" inval="he_IL"/> + <entry outval="in" inval="hi_IN"/> + <entry outval="hr" inval="hr_HR"/> + <entry outval="hu" inval="hu_HU"/> + <entry outval="id" inval="id_ID"/> + <entry outval="is" inval="is_IS"/> + <entry outval="ch" inval="it_CH"/> + <entry outval="it" inval="it_IT"/> + <entry outval="jp" inval="ja_JP"/> + <entry outval="gl" inval="kl_GL"/> + <entry outval="in (kan)" inval="kn_IN"/> + <entry outval="kr" inval="ko_KR"/> + <entry outval="gb" inval="kw_GB"/> + <entry outval="la" inval="lo_LA"/> + <entry outval="lt" inval="lt_LT"/> + <entry outval="lv" inval="lv_LV"/> + <entry outval="in" inval="mai_IN"/> + <entry outval="mk" inval="mk_MK"/> + <entry outval="in (mal)" inval="ml_IN"/> + <entry outval="in" inval="mr_IN"/> + <entry outval="my" inval="ms_MY"/> + <entry outval="mt" inval="mt_MT"/> + <entry outval="no" inval="nb_NO"/> + <entry outval="de" inval="nds_DE"/> + <entry outval="np" inval="ne_NP"/> + <entry outval="be" inval="nl_BE"/> + <entry outval="nl" inval="nl_NL"/> + <entry outval="no" inval="nn_NO"/> + <entry outval="fr (oci)" inval="oc_FR"/> + <entry outval="in (ori)" inval="or_IN"/> + <entry outval="in (guru)" inval="pa_IN"/> + <entry outval="pl" inval="pl_PL"/> + <entry outval="br" inval="pt_BR"/> + <entry outval="pt" inval="pt_PT"/> + <entry outval="ro" inval="ro_RO"/> + <entry outval="ru" inval="ru_RU"/> + <entry outval="ua" inval="ru_UA"/> + <entry outval="no (smi)" inval="se_NO"/> + <entry outval="lk" inval="si_LK"/> + <entry outval="sk" inval="sk_SK"/> + <entry outval="si" inval="sl_SI"/> + <entry outval="al" inval="sq_AL"/> + <entry outval="rs" inval="sr_RS"/> + <entry outval="fi" inval="sv_FI"/> + <entry outval="se" inval="sv_SE"/> + <entry outval="in (tam)" inval="ta_IN"/> + <entry outval="in (tel)" inval="te_IN"/> + <entry outval="th" inval="th_TH"/> + <entry outval="ph" inval="tl_PH"/> + <entry outval="tr" inval="tr_TR"/> + <entry outval="ua" inval="uk_UA"/> + <entry outval="pk" inval="ur_PK"/> + <entry outval="uz" inval="uz_UZ"/> + <entry outval="be" inval="wa_BE"/> + <entry outval="za" inval="xh_ZA"/> + <entry outval="cn" inval="zh_CN"/> + <entry outval="hk" inval="zh_HK"/> + <entry outval="tw" inval="zh_TW"/> + <entry outval="za" inval="zu_ZA"/> + </datamap> +</libosinfo> diff --git a/tests/data/positive/device/ibm.com/ps2-keyboard.xml b/tests/data/positive/device/ibm.com/ps2-keyboard.xml new file mode 100644 index 0000000..0109e2c --- /dev/null +++ b/tests/data/positive/device/ibm.com/ps2-keyboard.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<libosinfo version="0.0.1"> + + <device id="http://ibm.com/ps2/keyboard"> + <name>keyboard</name> + <bus-type>ps2</bus-type> + <class>input</class> + <vendor>Qemu/KVM</vendor> + <vendor xml:lang="ca">Qemu/KVM</vendor> + <vendor xml:lang="de">Qemu/KVM</vendor> + <vendor xml:lang="es">Qemu/KVM</vendor> + <vendor xml:lang="fr">Qemu/KVM</vendor> + <vendor xml:lang="id">Qemu/KVM</vendor> + <vendor xml:lang="it">Qemu/KVM</vendor> + <vendor xml:lang="ja">QEMU/KVM</vendor> + <vendor xml:lang="pl">QEMU/KVM</vendor> + <vendor xml:lang="pt">Qemu/KVM</vendor> + <vendor xml:lang="pt_BR">Qemu/KVM</vendor> + <vendor xml:lang="uk">Qemu/KVM</vendor> + <product>Keyboard</product> + </device> +</libosinfo> diff --git a/tests/data/positive/install-script/fedoraproject.org/silverblue-kickstart-desktop.xml b/tests/data/positive/install-script/fedoraproject.org/silverblue-kickstart-desktop.xml new file mode 100644 index 0000000..f8af5dc --- /dev/null +++ b/tests/data/positive/install-script/fedoraproject.org/silverblue-kickstart-desktop.xml @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<libosinfo version="0.0.1"> + + <install-script id='http://fedoraproject.org/silverblue/kickstart/desktop'> + <profile>desktop</profile> + <expected-filename>silverblue.ks</expected-filename> + <config> + <param value-map="http://x.org/x11-keyboard" policy="optional" name="l10n-keyboard"/> + <param policy="optional" name="l10n-language"/> + <param policy="optional" name="l10n-timezone"/> + <param policy="optional" name="hostname"/> + <param policy="required" name="user-login"/> + <param policy="optional" name="user-password"/> + <param policy="optional" name="admin-password"/> + <param policy="required" name="script-disk"/> + </config> + <injection-method>cdrom</injection-method> + <injection-method>disk</injection-method> + <injection-method>floppy</injection-method> + <injection-method>initrd</injection-method> + <template> + <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + + <xsl:output method="text"/> + + <xsl:template name="script-disk"> + <xsl:variable name="script-disk"> + <xsl:value-of select="config/script-disk"/> + </xsl:variable> + <xsl:value-of select="substring-after($script-disk, '/dev/')"/> + </xsl:template> + + <xsl:template match="/command-line"> + <xsl:text>ks=</xsl:text> + <xsl:choose> + <xsl:when test="script/preferred-injection-method = 'initrd'"> + <xsl:text>file:/</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>hd:</xsl:text> + <xsl:call-template name="script-disk"/> + <xsl:text>:/</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="script/expected-filename"/> + </xsl:template> + + <xsl:template match="/install-script-config"> +# Install script for <xsl:value-of select="os/short-id"/> profile <xsl:value-of select="script/profile"/> +install +keyboard '<xsl:value-of select="config/l10n-keyboard"/>' +lang <xsl:value-of select="config/l10n-language"/> +network --onboot yes --bootproto dhcp --noipv6 --hostname=<xsl:value-of select="config/hostname"/> +rootpw dummyPa55w0rd # Actual password set (or unset) in %post below +firewall --disabled +timezone --utc <xsl:value-of select="config/l10n-timezone"/> +bootloader --location=mbr +zerombr + +clearpart --all --drives=/dev/vda + +firstboot --disable + +autopart + +<xsl:choose> + <xsl:when test="os/version < 29"> +ostreesetup --osname="fedora-workstation" --remote="fedora-<xsl:value-of select="os/version"/>" --url="file:///ostree/repo" --ref="fedora/<xsl:value-of select="os/version"/>/<xsl:value-of select="config/hardware-arch"/>/workstation" --nogpg + </xsl:when> + <xsl:otherwise> +ostreesetup --osname="fedora-silverblue" --remote="fedora-<xsl:value-of select="os/version"/>" --url="file:///ostree/repo" --ref="fedora/<xsl:value-of select="os/version"/>/<xsl:value-of select="config/hardware-arch"/>/silverblue" --nogpg + </xsl:otherwise> +</xsl:choose> +graphical +reboot + +%post --erroronfail + +useradd -G wheel <xsl:value-of select="config/user-login"/> # Add user +if test -z '<xsl:value-of select="config/user-password"/>'; then + passwd -d <xsl:value-of select="config/user-login"/> # Make user account passwordless +else + echo '<xsl:value-of select="config/user-password"/>' |passwd --stdin <xsl:value-of select="config/user-login"/> +fi + +if test -z '<xsl:value-of select="config/admin-password"/>'; then + passwd -d root # Make root account passwordless +else + echo '<xsl:value-of select="config/admin-password"/>' |passwd --stdin root +fi + +# Enable autologin +echo "[daemon] +AutomaticLoginEnable=true +AutomaticLogin=<xsl:value-of select="config/user-login"/> + +[security] + +[xdmcp] + +[greeter] + +[chooser] + +[debug] +" > /etc/gdm/custom.conf + +rm -f /etc/ostree/remotes.d/fedora-'<xsl:value-of select="os/version"/>'.conf +ostree remote add --if-not-exists --set=gpgkeypath=/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-<xsl:value-of select="os/version"/>-primary fedora-<xsl:value-of select="os/version"/> 'https://dl.fedoraproject.org/atomic/repo/' + +%end + </xsl:template> + </xsl:stylesheet> + </template> + </install-script> +</libosinfo> diff --git a/tests/data/positive/os/fedoraproject.org/fedora-rawhide.xml b/tests/data/positive/os/fedoraproject.org/fedora-rawhide.xml new file mode 100644 index 0000000..85ff2f4 --- /dev/null +++ b/tests/data/positive/os/fedoraproject.org/fedora-rawhide.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<libosinfo version="0.0.1"> + + <os id="http://fedoraproject.org/fedora/rawhide"> + <short-id>fedora-rawhide</short-id> + <name>Fedora Rawhide</name> + <version>Rawhide</version> + <vendor>Fedora Project</vendor> + <vendor xml:lang="ca">Projecte Fedora</vendor> + <vendor xml:lang="de">Fedora-Projekt</vendor> + <vendor xml:lang="es">Fedora Project</vendor> + <vendor xml:lang="fr">Fedora Project</vendor> + <vendor xml:lang="id">Proyek Fedora</vendor> + <vendor xml:lang="it">Progetto Fedora</vendor> + <vendor xml:lang="ja">Fedora Project</vendor> + <vendor xml:lang="pl">Projekt Fedora</vendor> + <vendor xml:lang="pt">Projecto Fedora </vendor> + <vendor xml:lang="pt_BR">Projeto Fedora</vendor> + <vendor xml:lang="uk">Проект Fedora</vendor> + <family>linux</family> + <distro>fedora</distro> + <upgrades id="http://fedoraproject.org/fedora/29"/> + <derives-from id="http://fedoraproject.org/fedora/29"/> + <release-status>prerelease</release-status> + + <media arch="x86_64"> + <iso> + <volume-id>Fedora-.*-dvd-x86_64-rawh</volume-id> + </iso> + <kernel>isolinux/vmlinuz</kernel> + <initrd>isolinux/initrd.img</initrd> + </media> + + <media live="true" arch="x86_64"> + <iso> + <volume-id>Fedora-.*-Live-rawh.*</volume-id> + </iso> + </media> + + <tree arch="x86_64"> + <url>https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Workstation/x86_64/os</url> + <treeinfo> + <family>Fedora</family> + <version>Rawhide</version> + <arch>x86_64</arch> + <variant>Workstation</variant> + </treeinfo> + </tree> + + <tree arch="x86_64"> + <url>https://download.fedoraproject.org/pub/fedora/linux/development/rawhide/Server/x86_64/os</url> + <treeinfo> + <family>Fedora</family> + <version>Rawhide</version> + <arch>x86_64</arch> + <variant>Server</variant> + </treeinfo> + </tree> + + <resources arch="all"> + <minimum> + <n-cpus>1</n-cpus> + <cpu>1000000000</cpu> + <ram>1073741824</ram> + <storage>10737418240</storage> + </minimum> + + <recommended> + <ram>2147483648</ram> + <storage>21474836480</storage> + </recommended> + </resources> + </os> +</libosinfo> diff --git a/tests/data/positive/platform/linux-kvm.org/qemu-kvm-1.2.0.xml b/tests/data/positive/platform/linux-kvm.org/qemu-kvm-1.2.0.xml new file mode 100644 index 0000000..ddb369a --- /dev/null +++ b/tests/data/positive/platform/linux-kvm.org/qemu-kvm-1.2.0.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<libosinfo version="0.0.1"> + + <platform id="http://linux-kvm.org/qemu-kvm/1.2.0"> + <short-id>qemu-kvm-1.2.0</short-id> + <name>QEMU-KVM 1.2.0</name> + <name xml:lang="ca">QEMU-KVM 1.2.0</name> + <name xml:lang="es">QEMU-KVM 1.2.0</name> + <name xml:lang="fr">QEMU-KVM 1.2.0</name> + <name xml:lang="id">QEMU-KVM 1.2.0</name> + <name xml:lang="it">QEMU-KVM 1.2.0</name> + <name xml:lang="pl">QEMU-KVM 1.2.0</name> + <name xml:lang="pt_BR">QEMU-KVM 1.2.0</name> + <name xml:lang="uk">QEMU-KVM 1.2.0</name> + <vendor>linux-kvm.org</vendor> + <vendor xml:lang="ca">linux-kvm.org</vendor> + <vendor xml:lang="es">linux-kvm.org</vendor> + <vendor xml:lang="fr">linux-kvm.org</vendor> + <vendor xml:lang="id">linux-kvm.org</vendor> + <vendor xml:lang="it">linux-kvm.org</vendor> + <vendor xml:lang="pl">linux-kvm.org</vendor> + <vendor xml:lang="pt_BR">linux-kvm.org</vendor> + <vendor xml:lang="uk">linux-kvm.org</vendor> + <version>1.2.0</version> + <release-date>2012-09-10</release-date> + <upgrades id="http://linux-kvm.org/qemu-kvm/1.1.2"/> + <derives-from id="http://qemu.org/qemu/1.2.0"/> + </platform> +</libosinfo> diff --git a/tests/data/positive/schema/osinfo.rng b/tests/data/positive/schema/osinfo.rng new file mode 100644 index 0000000..6228c52 --- /dev/null +++ b/tests/data/positive/schema/osinfo.rng @@ -0,0 +1,899 @@ +<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <!-- Schema distributed with osinfo-db-20190329 --> + + <start> + <ref name='libosinfo'/> + </start> + + <define name='libosinfo'> + <element name='libosinfo'> + <attribute name='version'> + <choice> + <value>0.0.1</value> + </choice> + </attribute> + + <zeroOrMore> + <choice> + <ref name='datamap'/> + <ref name='device'/> + <ref name='os'/> + <ref name='platform'/> + <ref name='deployment'/> + <ref name='install-script'/> + </choice> + </zeroOrMore> + </element> + </define> + + <define name='datamap'> + <element name='datamap'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <oneOrMore> + <element name='entry'> + <attribute name='inval'> + <text/> + </attribute> + <attribute name='outval'> + <text/> + </attribute> + </element> + </oneOrMore> + </element> + </define> + + <define name='device'> + <element name='device'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <interleave> + <oneOrMore> + <element name='name'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <optional> + <element name='bus-type'> + <choice> + <value>isa</value> + <value>pci</value> + <value>usb</value> + <value>xen</value> + <value>ps2</value> + </choice> + </element> + </optional> + <optional> + <element name='class'> + <choice> + <value>audio</value> + <value>block</value> + <value>console</value> + <value>chipset</value> + <value>controller.usb</value> + <value>filesystem</value> + <value>input</value> + <value>memory.balloon</value> + <value>net</value> + <value>video</value> + <value>watchdog</value> + <value>rng</value> + </choice> + </element> + </optional> + <zeroOrMore> + <element name='vendor'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </zeroOrMore> + <optional> + <element name='vendor-id'> + <ref name='hexid'/> + </element> + </optional> + <optional> + <element name='product'> + <text/> + </element> + </optional> + <optional> + <element name='product-id'> + <choice> + <ref name='hexid'/> + <ref name='alpha'/> + </choice> + </element> + </optional> + <optional> + <element name='subsystem'> + <text/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name="product-attr"> + <attribute name='id'> + <ref name='url'/> + </attribute> + </define> + + <define name="product-content"> + <interleave> + <oneOrMore> + <element name='vendor'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <oneOrMore> + <element name='name'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <oneOrMore> + <element name='short-id'> + <text/> + </element> + </oneOrMore> + <optional> + <element name='version'> + <text/> + </element> + </optional> + <optional> + <element name='codename'> + <text/> + </element> + </optional> + <optional> + <element name='family'> + <text/> + </element> + </optional> + <optional> + <element name='distro'> + <text/> + </element> + </optional> + </interleave> + </define> + + <define name="product-dates"> + <interleave> + <optional> + <element name='release-date'> + <ref name='date'/> + </element> + </optional> + <optional> + <element name='eol-date'> + <ref name='date'/> + </element> + </optional> + </interleave> + </define> + + <define name="product-rel"> + <interleave> + <zeroOrMore> + <element name="upgrades"> + <attribute name='id'> + <ref name="url"/> + </attribute> + </element> + </zeroOrMore> + <zeroOrMore> + <element name="derives-from"> + <attribute name='id'> + <ref name="url"/> + </attribute> + </element> + </zeroOrMore> + <optional> + <element name="clones"> + <attribute name='id'> + <ref name="url"/> + </attribute> + </element> + </optional> + </interleave> + </define> + + <define name='variant'> + <element name='variant'> + <attribute name='id'> + </attribute> + <oneOrMore> + <element name='name'> + <optional> + <attribute name='xml:lang'> + <text/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + </element> + </define> + + <define name='devices-rel'> + <element name='devices'> + <zeroOrMore> + <element name='device'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <optional> + <attribute name='supported'> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <element name='driver'> + <text/> + </element> + </optional> + </element> + </zeroOrMore> + </element> + </define> + + <define name='resource-attr'> + <interleave> + <optional> + <element name='cpu'> + <ref name='num'/> + </element> + </optional> + <optional> + <element name='n-cpus'> + <ref name='num'/> + </element> + </optional> + <optional> + <element name='ram'> + <ref name='num'/> + </element> + </optional> + <optional> + <element name='storage'> + <ref name='num'/> + </element> + </optional> + </interleave> + </define> + + <define name='resources'> + <element name='resources'> + <attribute name='arch'> + <ref name='archnamesorwildcard'/> + </attribute> + <optional> + <attribute name='inherit'> + <ref name='bool'/> + </attribute> + </optional> + <interleave> + <optional> + <element name='network-install'> + <ref name='resource-attr'/> + </element> + </optional> + <optional> + <element name='minimum'> + <ref name='resource-attr'/> + </element> + </optional> + <optional> + <element name='recommended'> + <ref name='resource-attr'/> + </element> + </optional> + <optional> + <element name='maximum'> + <ref name='resource-attr'/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='iso'> + <element name='iso'> + <interleave> + <optional> + <element name='volume-id'> + <text/> + </element> + </optional> + <optional> + <element name='publisher-id'> + <text/> + </element> + </optional> + <optional> + <element name='application-id'> + <text/> + </element> + </optional> + <optional> + <element name='system-id'> + <text/> + </element> + </optional> + <optional> + <element name='volume-size'> + <ref name='num'/> + </element> + </optional> + <zeroOrMore> + <ref name='media-lang'/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name='media'> + <element name='media'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <optional> + <attribute name="live"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name="installer"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name='installer-script'> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name='installer-reboots'> + <ref name='num'/> + </attribute> + </optional> + <optional> + <attribute name='eject-after-install'> + <ref name='bool'/> + </attribute> + </optional> + <interleave> + <optional> + <element name='variant'> + <attribute name='id'> + </attribute> + </element> + </optional> + <optional> + <element name='url'> + <ref name='url'/> + </element> + </optional> + <optional> + <ref name='iso'/> + </optional> + <optional> + <element name='initrd'> + <text/> + </element> + </optional> + <optional> + <element name='kernel'> + <text/> + </element> + </optional> + <optional> + <zeroOrMore> + <ref name='installer'/> + </zeroOrMore> + </optional> + </interleave> + </element> + </define> + + <define name='media-lang'> + <element name='l10n-language'> + <optional> + <attribute name="regex"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name="l10n-language-map"> + <ref name='url'/> + </attribute> + </optional> + <text/> + </element> + </define> + + <define name='treeinfo'> + <element name='treeinfo'> + <interleave> + <optional> + <element name='family'> + <text/> + </element> + </optional> + <optional> + <element name='variant'> + <text/> + </element> + </optional> + <optional> + <element name='version'> + <text/> + </element> + </optional> + <optional> + <element name='arch'> + <text/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='tree'> + <element name='tree'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <interleave> + <optional> + <element name='variant'> + <attribute name='id'> + </attribute> + </element> + </optional> + <optional> + <element name='url'> + <ref name='url'/> + </element> + </optional> + <optional> + <ref name='treeinfo'/> + </optional> + <optional> + <element name='initrd'> + <text/> + </element> + </optional> + <optional> + <element name='kernel'> + <text/> + </element> + </optional> + <optional> + <element name='boot-iso'> + <text/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='image'> + <element name='image'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <attribute name='format'> + <ref name='imageformats'/> + </attribute> + <optional> + <attribute name='cloud-init'> + <ref name='bool'/> + </attribute> + </optional> + <interleave> + <optional> + <element name='variant'> + <attribute name='id'> + </attribute> + </element> + </optional> + <optional> + <element name='url'> + <ref name='url'/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name='installer'> + <element name='installer'> + <zeroOrMore> + <element name="script"> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + </zeroOrMore> + </element> + </define> + + <define name='driver'> + <element name='driver'> + <attribute name='arch'> + <ref name='archnames'/> + </attribute> + <attribute name='location'> + <text/> + </attribute> + <optional> + <attribute name="pre-installable"> + <ref name='bool'/> + </attribute> + </optional> + <optional> + <attribute name="signed"> + <ref name='bool'/> + </attribute> + </optional> + <zeroOrMore> + <element name='file'> + <text/> + </element> + </zeroOrMore> + <oneOrMore> + <element name='device'> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + </oneOrMore> + </element> + </define> + + <define name='os'> + <element name='os'> + <interleave> + <ref name='product-attr'/> + <ref name='product-content'/> + <ref name='product-dates'/> + <ref name='product-rel'/> + <optional> + <ref name='devices-rel'/> + </optional> + <optional> + <ref name='release-status'/> + </optional> + <zeroOrMore> + <ref name='variant'/> + </zeroOrMore> + <zeroOrMore> + <ref name='resources'/> + </zeroOrMore> + <zeroOrMore> + <ref name='media'/> + </zeroOrMore> + <zeroOrMore> + <ref name='tree'/> + </zeroOrMore> + <zeroOrMore> + <ref name='image'/> + </zeroOrMore> + <zeroOrMore> + <ref name='installer'/> + </zeroOrMore> + <zeroOrMore> + <ref name='driver'/> + </zeroOrMore> + </interleave> + </element> + </define> + + <define name='platform'> + <element name='platform'> + <interleave> + <ref name='product-attr'/> + <ref name='product-content'/> + <ref name='product-dates'/> + <ref name='product-rel'/> + <optional> + <ref name='devices-rel'/> + </optional> + </interleave> + </element> + </define> + + <define name='deployment'> + <element name='deployment'> + <attribute name='id'> + <ref name='url'/> + </attribute> + <interleave> + <element name='os'> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + <element name='platform'> + <attribute name='id'> + <ref name='url'/> + </attribute> + </element> + <ref name='devices-rel'/> + </interleave> + </element> + </define> + + <define name='install-script'> + <element name='install-script'> + <interleave> + <element name='profile'> + <text/> + </element> + <optional> + <element name='path-format'> + <ref name='path-formats'/> + </element> + </optional> + <optional> + <element name='expected-filename'> + <text/> + </element> + </optional> + <optional> + <ref name='avatar-format'/> + </optional> + <optional> + <element name='config'> + <oneOrMore> + <element name='param'> + <attribute name="name"/> + <attribute name="policy"> + <ref name='policies'/> + </attribute> + <optional> + <attribute name="value-map"/> + </optional> + </element> + </oneOrMore> + </element> + </optional> + <optional> + <element name='product-key-format'> + <text/> + </element> + </optional> + <optional> + <element name='needs-internet'> + <ref name='bool'/> + </element> + </optional> + <optional> + <element name='can-pre-install-drivers'> + <ref name='bool'/> + </element> + </optional> + <optional> + <element name='pre-install-drivers-signing-req'> + <ref name='driver-signing-reqs'/> + </element> + </optional> + <optional> + <element name='can-post-install-drivers'> + <ref name='bool'/> + </element> + </optional> + <optional> + <element name='post-install-drivers-signing-req'> + <ref name='driver-signing-reqs'/> + </element> + </optional> + <zeroOrMore> + <ref name='injection-method'/> + </zeroOrMore> + <element name='template'> + <choice> + <group> + <attribute name="uri"/> + <empty/> + </group> + <ref name="customElement"/> + </choice> + </element> + <ref name='product-attr'/> + <ref name='product-rel'/> + </interleave> + </element> + </define> + + <define name='avatar-format'> + <element name='avatar-format'> + <interleave> + <oneOrMore> + <element name="mime-type"> + <text/> + </element> + </oneOrMore> + <optional> + <element name="width"> + <ref name='num'/> + </element> + </optional> + <optional> + <element name="height"> + <ref name='num'/> + </element> + </optional> + <optional> + <element name="alpha"> + <ref name='bool'/> + </element> + </optional> + </interleave> + </element> + </define> + + <define name="customElement"> + <element> + <anyName/> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <ref name="customElement"/> + </choice> + </zeroOrMore> + </element> + </define> + + <define name='archnamesorwildcard'> + <choice> + <value>all</value> + <ref name='archnames'/> + </choice> + </define> + <define name='archnames'> + <choice> + <value>aarch64</value> + <value>alpha</value> + <value>armv7l</value> + <value>cris</value> + <value>i686</value> + <value>ia64</value> + <value>lm32</value> + <value>m68k</value> + <value>microblaze</value> + <value>microblazeel</value> + <value>mips</value> + <value>mipsel</value> + <value>mips64</value> + <value>mips64el</value> + <value>openrisc</value> + <value>parisc</value> + <value>parisc64</value> + <value>ppc</value> + <value>ppc64</value> + <value>ppc64le</value> + <value>ppcemb</value> + <value>s390</value> + <value>s390x</value> + <value>sh4</value> + <value>sh4eb</value> + <value>sparc</value> + <value>sparc64</value> + <value>unicore32</value> + <value>x86_64</value> + <value>xtensa</value> + <value>xtensaeb</value> + </choice> + </define> + + <define name='imageformats'> + <choice> + <value>qcow2</value> + <value>raw</value> + <value>vhdx</value> + <value>vmdk</value> + </choice> + </define> + + <define name='date'> + <data type="string"> + <param name="pattern">[0-9]{4}-[0-9]{2}-[0-9]{2}</param> + </data> + </define> + + <define name='hexid'> + <data type="string"> + <param name="pattern">[0-9a-fA-F]+</param> + </data> + </define> + + <define name='alpha'> + <data type="string"> + <param name="pattern">[a-zA-Z]+</param> + </data> + </define> + + <define name='bool'> + <choice> + <data type='string'> + <param name='pattern'>true|false</param> + </data> + <empty/> + </choice> + </define> + + <define name='num'> + <data type="string"> + <param name="pattern">[0-9]+</param> + </data> + </define> + + <define name='url'> + <data type="string"> + <param name="pattern">\w+://.*</param> + </data> + </define> + + <define name='policies'> + <data type="string"> + <param name="pattern">required|optional</param> + </data> + </define> + + <define name='path-formats'> + <data type="string"> + <param name="pattern">dos|unix</param> + </data> + </define> + <define name='driver-signing-reqs'> + <data type="string"> + <param name="pattern">strict|warn|none</param> + </data> + </define> + + <define name='release-status'> + <element name='release-status'> + <data type="string"> + <param name="pattern">snapshot|prerelease|released|rolling</param> + </data> + </element> + </define> + + <define name='injection-method'> + <element name='injection-method'> + <data type="string"> + <param name="pattern">cdrom|disk|floppy|initrd|web</param> + </data> + </element> + </define> +</grammar> -- 2.21.0 _______________________________________________ Libosinfo mailing list Libosinfo@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libosinfo