diff --git a/pisi-cli b/pisi-cli index d8e578ff..eb7006f6 100755 --- a/pisi-cli +++ b/pisi-cli @@ -18,14 +18,14 @@ from pisi.ui import ui def handle_exception(exception, value, tb): import traceback import exceptions - import xml + import pisi.xmlext.XmlError as XmlError from pisi.ui import ui if exception == exceptions.KeyboardInterrupt: ui.error("\nKeyboardInterrupt: Exiting...\n") sys.exit(1) - elif exception == xml.parsers.expat.ExpatError: - ui.error("Invalid XML: " + str(value)+'\n') + elif exception == XmlError: + ui.error(str(value)) sys.exit(1) ui.error(""" diff --git a/pisi/build.py b/pisi/build.py index 739aed71..57a8d9fb 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -87,13 +87,6 @@ class PisiBuild: self.actionGlobals = None self.srcDir = None - errs = self.spec.has_errors() - if errs: - ui.error("PSPEC file is not valid\n") - for e in errs: - ui.error(e + '\n') - raise PisiBuildError, "invalid PSPEC file %s" % self.ctx.pspecfile - def set_state(self, state): stateFile = os.path.join(self.srcDir, "pisiBuildState") open(stateFile, "w").write(state) diff --git a/pisi/specfile.py b/pisi/specfile.py index 713794bc..1489dc1f 100644 --- a/pisi/specfile.py +++ b/pisi/specfile.py @@ -27,6 +27,7 @@ from ui import ui from dependency import DepInfo from util import Checks + class PackagerInfo: def __init__(self, node = None): if node: @@ -376,6 +377,13 @@ class SpecFile(XmlFile): self.unlink() + errs = self.has_errors() + if errs: + e = "" + for x in errs: + e += x + "\n" + raise XmlError("File '%s' has errors:\n%s" % (filename, e)) + def override_tags(self): """Override tags from Source in Packages. Some tags in Packages overrides the tags from Source. There is a more detailed diff --git a/pisi/xmlfile.py b/pisi/xmlfile.py index c23c774d..1d120868 100644 --- a/pisi/xmlfile.py +++ b/pisi/xmlfile.py @@ -23,6 +23,7 @@ # Baris Metin