From d2a36c595842e4ede4b232c1c88480ef8b75f3a9 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Wed, 4 Jul 2018 14:08:16 +0200 Subject: [PATCH] base: define generic config XSD types globally The new base/xsd/config.inc defines generic XSD types such as 'Boolean' or 'Session_label'. It can be included in config XSD files by using: ! The string ${GENODE_CONFIG_INC} is replaced by the run tool with the above mentionened file path. Issue #2897 --- repos/base/xsd/base_types.xsd | 35 ++++++++++++ repos/os/src/app/ping/config.xsd | 39 +------------ repos/os/src/app/trace_logger/config.xsd | 39 +------------ repos/os/src/init/config.xsd | 68 ++++++++++++----------- repos/os/src/server/nic_bridge/config.xsd | 31 +---------- repos/os/src/server/nic_dump/config.xsd | 13 +---- repos/os/src/server/nic_router/config.xsd | 56 +++---------------- repos/os/src/test/net_flood/config.xsd | 24 +------- repos/os/xsd/net_types.xsd | 29 ++++++++++ repos/os/xsd/timeout_types.xsd | 11 ++++ tool/run/run | 16 ++++-- 11 files changed, 141 insertions(+), 220 deletions(-) create mode 100644 repos/base/xsd/base_types.xsd create mode 100644 repos/os/xsd/net_types.xsd create mode 100644 repos/os/xsd/timeout_types.xsd diff --git a/repos/base/xsd/base_types.xsd b/repos/base/xsd/base_types.xsd new file mode 100644 index 000000000..7a8fa74e5 --- /dev/null +++ b/repos/base/xsd/base_types.xsd @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/repos/os/src/app/ping/config.xsd b/repos/os/src/app/ping/config.xsd index 0ceaca064..f8c6e92b7 100644 --- a/repos/os/src/app/ping/config.xsd +++ b/repos/os/src/app/ping/config.xsd @@ -1,23 +1,9 @@ - - - - - - - - - - - - - - - - - + + + @@ -26,25 +12,6 @@ - - - - - - - - - - - - - - - - - - - diff --git a/repos/os/src/app/trace_logger/config.xsd b/repos/os/src/app/trace_logger/config.xsd index dbe7bfdaa..0df673acd 100644 --- a/repos/os/src/app/trace_logger/config.xsd +++ b/repos/os/src/app/trace_logger/config.xsd @@ -1,36 +1,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -39,13 +11,6 @@ - - - - - - - diff --git a/repos/os/src/init/config.xsd b/repos/os/src/init/config.xsd index e5da52ba8..8193d6e3f 100644 --- a/repos/os/src/init/config.xsd +++ b/repos/os/src/init/config.xsd @@ -1,28 +1,30 @@ + + - - + + - - - - - - + + + + + + - + @@ -33,7 +35,7 @@ - + @@ -52,7 +54,7 @@ - + @@ -67,22 +69,22 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -98,18 +100,18 @@ - - - + + + - - - + + + @@ -143,17 +145,17 @@ - - - + + + - - + + diff --git a/repos/os/src/server/nic_bridge/config.xsd b/repos/os/src/server/nic_bridge/config.xsd index 9c9bf057a..f13e2f33b 100644 --- a/repos/os/src/server/nic_bridge/config.xsd +++ b/repos/os/src/server/nic_bridge/config.xsd @@ -1,35 +1,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/repos/os/src/server/nic_dump/config.xsd b/repos/os/src/server/nic_dump/config.xsd index ad0e2aafe..dbfc9083c 100644 --- a/repos/os/src/server/nic_dump/config.xsd +++ b/repos/os/src/server/nic_dump/config.xsd @@ -1,6 +1,8 @@ + + @@ -8,17 +10,6 @@ - - - - - - - - - - - diff --git a/repos/os/src/server/nic_router/config.xsd b/repos/os/src/server/nic_router/config.xsd index 5aedd8b47..c71b95916 100644 --- a/repos/os/src/server/nic_router/config.xsd +++ b/repos/os/src/server/nic_router/config.xsd @@ -1,37 +1,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -40,24 +12,12 @@ - - - - + + + + - - - - - - - - - - - - - + diff --git a/repos/os/src/test/net_flood/config.xsd b/repos/os/src/test/net_flood/config.xsd index e558a9071..95f4b1390 100644 --- a/repos/os/src/test/net_flood/config.xsd +++ b/repos/os/src/test/net_flood/config.xsd @@ -1,16 +1,8 @@ - - - - - - - - - - + + @@ -20,18 +12,6 @@ - - - - - - - - - - - - diff --git a/repos/os/xsd/net_types.xsd b/repos/os/xsd/net_types.xsd new file mode 100644 index 000000000..7d88cdc28 --- /dev/null +++ b/repos/os/xsd/net_types.xsd @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/repos/os/xsd/timeout_types.xsd b/repos/os/xsd/timeout_types.xsd new file mode 100644 index 000000000..8adf0fecf --- /dev/null +++ b/repos/os/xsd/timeout_types.xsd @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tool/run/run b/tool/run/run index 96d5122ea..dd8f84f38 100755 --- a/tool/run/run +++ b/tool/run/run @@ -115,7 +115,7 @@ proc check_xml_syntax {xml_file} { # configurations of children of the component # \param nesting_level level of recursive calls of this procedure # -proc check_config {bin xml_file xsd_file label avail_xsd_files nesting_level} { +proc check_config {bin xml_file xsd_file label avail_xsd_files xsd_inc nesting_level} { # check prerequisites if this is not a recursive call if {$nesting_level == 0} { @@ -130,7 +130,7 @@ proc check_config {bin xml_file xsd_file label avail_xsd_files nesting_level} { # check the given component configuration itself puts " CHECK $label" - if {[catch {exec xmllint --noout -schema $xsd_file $xml_file} result]} { + if {[catch {exec xmllint --noout --path $xsd_inc -schema $xsd_file $xml_file} result]} { if {$result != "$xml_file validates"} { @@ -199,7 +199,8 @@ proc check_config {bin xml_file xsd_file label avail_xsd_files nesting_level} { # call this procedure again on the child config file set child_label "$label -> $child_name" check_config $child_bin $child_xml_file $child_xsd_file \ - $child_label $avail_xsd_files [expr $nesting_level+1] + $child_label $avail_xsd_files $xsd_inc \ + [expr $nesting_level+1] # clean up exec rm -f $child_xml_file @@ -246,9 +247,16 @@ proc build_boot_image {binaries} { set init_xsd_file $xsd_file } } + # determine include directories that can be used by the XSD files + global repositories; + set xsd_inc "" + foreach repo $repositories { + if {[file exists $repo/xsd]} { + append xsd_inc "$repo/xsd " } + } # check configurations of init and its children puts "checking configuration syntax" - check_config init [run_dir]/genode/config $init_xsd_file init $xsd_files 0 + check_config init [run_dir]/genode/config $init_xsd_file init $xsd_files $xsd_inc 0 run_boot_dir $binaries }