From 7487992bd33d5cbf314d234c13a085c56200b33e Mon Sep 17 00:00:00 2001 From: Julien Campergue Date: Wed, 9 Oct 2013 14:38:46 +0200 Subject: [PATCH] Better handling of duplicate default Currently, an error is raised if more than one default is defined. When including another manifest, it is likely that a default has been defined in both manifests. Don't raise an error if all the defaults defined have the same attributes. Change-Id: I2603020687e2ba04c2c62c3268ee375279b34a08 Signed-off-by: Julien Campergue --- manifest_xml.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/manifest_xml.py b/manifest_xml.py index e40e6fac..eb4908da 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -51,6 +51,12 @@ class _Default(object): sync_c = False sync_s = False + def __eq__(self, other): + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return self.__dict__ != other.__dict__ + class _XmlRemote(object): def __init__(self, name, @@ -422,11 +428,14 @@ class XmlManifest(object): for node in itertools.chain(*node_list): if node.nodeName == 'default': - if self._default is not None: - raise ManifestParseError( - 'duplicate default in %s' % - (self.manifestFile)) - self._default = self._ParseDefault(node) + new_default = self._ParseDefault(node) + if self._default is None: + self._default = new_default + elif new_default != self._default: + raise ManifestParseError( + 'duplicate default in %s' % + (self.manifestFile)) + if self._default is None: self._default = _Default()