[elbe-devel] ELBE releases/v2.1: Issue with elbe show and elbe validate command

Fichter, Ruediger Ruediger.Fichter at emtrion.de
Wed Aug 23 13:16:04 CEST 2017


Hi,

I have detected, that the commands "elbe show" and "elbe validate" will fail if the Elbe XML file contains XInclude statements. I have verified this behavior also with the example xml -files x86_32-pc-hdimg-with-include-development.xml and x86_32-pc-hdimg-with-include-production.xml. I have found that, in contrast to the command initvm, no preprocess action for expanding the xinclude statements takes place with the commands "elbe show" and "elbe validate". After I have added the appropriate code, the commands work as expected. I have attached the patch below.

Best regards

Rüdiger Fichter

>From 65ceed005193dfc0d670908a63639b1b422c4ea4 Mon Sep 17 00:00:00 2001
From: Ruediger Fichter <ruediger.fichter at emtrion.de>
Date: Wed, 23 Aug 2017 12:53:10 +0200
Subject: [PATCH] BugFix: elbe-show and elbe-validates failed if the elbe xml
 contains xinclude nodes. This is fixed now.

---
 elbepack/commands/show.py | 12 +++++++++++-
 elbepack/validate.py      | 12 ++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/elbepack/commands/show.py b/elbepack/commands/show.py
index 1a02155b..9d27419f 100644
--- a/elbepack/commands/show.py
+++ b/elbepack/commands/show.py
@@ -25,6 +25,11 @@ from elbepack.validate import validate_xml

 from optparse import OptionParser

+from elbepack.directories import elbe_exe
+from elbepack.shellhelper import CommandError, system, command_out_stderr
+
+from tempfile import NamedTemporaryFile
+
 def run_command( argv ):
     oparser = OptionParser( usage="usage: %prog show [options] <filename>" )

@@ -57,7 +62,12 @@ def run_command( argv ):
                     print i
                 sys.exit(20)

-        xml = etree( args[0] )
+        outxml = NamedTemporaryFile(prefix='elbe', suffix='xml')
+        cmd = '%s preprocess -o %s %s' % (elbe_exe, outxml.name, args[0])
+        ret, msg, err = command_out_stderr (cmd)
+        if ret != 0:
+            return ["elbe preprocess failed.\n" +str(sys.exc_info()[1])]
+        xml = etree( outxml.name )
     except:
         print "Unable to open xml File. Bailing out"
         sys.exit(20)
diff --git a/elbepack/validate.py b/elbepack/validate.py
index 7574cb91..277a04be 100644
--- a/elbepack/validate.py
+++ b/elbepack/validate.py
@@ -20,6 +20,11 @@ import sys
 from lxml import etree
 from lxml.etree import XMLParser,parse

+from elbepack.directories import elbe_exe
+from elbepack.shellhelper import CommandError, system, command_out_stderr
+
+from tempfile import NamedTemporaryFile
+
 def validate_xml(fname):
     schema_file = "https://www.linutronix.de/projects/Elbe/dbsfed.xsd"
     parser = XMLParser(huge_tree=True)
@@ -27,6 +32,13 @@ def validate_xml(fname):
     schema = etree.XMLSchema(schema_tree)

     try:
+        outxml = NamedTemporaryFile(prefix='elbe', suffix='xml')
+        cmd = '%s preprocess -o %s %s' % (elbe_exe, outxml.name, fname)
+        ret, msg, err = command_out_stderr (cmd)
+        if ret != 0:
+            return ["elbe preprocess failed.\n" +str(sys.exc_info()[1])]
+        fname = outxml.name
+
         xml = parse(fname,parser=parser)

         if schema.validate(xml):
--
2.11.0


emtrion GmbH
Kreativpark - Alter Schlachthof 45
76131 Karlsruhe
GERMANY
http://www.emtrion.de
_______________________________________

Amtsgericht Mannheim
HRB 110 300
Geschäftsführer: Dieter Baur, Ramona Maurer
_______________________________________



More information about the elbe-devel mailing list