summaryrefslogtreecommitdiffstats
path: root/manifest_xml.py
diff options
context:
space:
mode:
Diffstat (limited to 'manifest_xml.py')
-rw-r--r--manifest_xml.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/manifest_xml.py b/manifest_xml.py
index cdee87a6..d16f1a98 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -27,6 +27,7 @@ from error import ManifestParseError
27 27
28MANIFEST_FILE_NAME = 'manifest.xml' 28MANIFEST_FILE_NAME = 'manifest.xml'
29LOCAL_MANIFEST_NAME = 'local_manifest.xml' 29LOCAL_MANIFEST_NAME = 'local_manifest.xml'
30LOCAL_MANIFESTS_DIR_NAME = 'local_manifests'
30 31
31urlparse.uses_relative.extend(['ssh', 'git']) 32urlparse.uses_relative.extend(['ssh', 'git'])
32urlparse.uses_netloc.extend(['ssh', 'git']) 33urlparse.uses_netloc.extend(['ssh', 'git'])
@@ -299,8 +300,21 @@ class XmlManifest(object):
299 300
300 local = os.path.join(self.repodir, LOCAL_MANIFEST_NAME) 301 local = os.path.join(self.repodir, LOCAL_MANIFEST_NAME)
301 if os.path.exists(local): 302 if os.path.exists(local):
303 print >>sys.stderr, 'warning: %s is deprecated; put local manifests in %s instead' % \
304 (LOCAL_MANIFEST_NAME, LOCAL_MANIFESTS_DIR_NAME)
302 nodes.append(self._ParseManifestXml(local, self.repodir)) 305 nodes.append(self._ParseManifestXml(local, self.repodir))
303 306
307 local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
308 try:
309 for local_file in os.listdir(local_dir):
310 if local_file.endswith('.xml'):
311 try:
312 nodes.append(self._ParseManifestXml(local_file, self.repodir))
313 except ManifestParseError as e:
314 print >>sys.stderr, '%s' % str(e)
315 except OSError:
316 pass
317
304 self._ParseManifest(nodes) 318 self._ParseManifest(nodes)
305 319
306 if self.IsMirror: 320 if self.IsMirror:
@@ -310,7 +324,11 @@ class XmlManifest(object):
310 self._loaded = True 324 self._loaded = True
311 325
312 def _ParseManifestXml(self, path, include_root): 326 def _ParseManifestXml(self, path, include_root):
313 root = xml.dom.minidom.parse(path) 327 try:
328 root = xml.dom.minidom.parse(path)
329 except (OSError, xml.parsers.expat.ExpatError) as e:
330 raise ManifestParseError("error parsing manifest %s: %s" % (path, e))
331
314 if not root or not root.childNodes: 332 if not root or not root.childNodes:
315 raise ManifestParseError("no root node in %s" % (path,)) 333 raise ManifestParseError("no root node in %s" % (path,))
316 334