mirror of
https://git.codelinaro.org/clo/tools/repo.git
synced 2025-06-01 14:43:34 +08:00
Add support for multiple local manifests
Add support for multiple local manifests stored in the local_manifests folder under the .repo home directory. Local manifests will be processed in addition to local_manifest.xml. Change-Id: Ia0569cea7e9ae0fe3208a8ffef5d9679e14db03b
This commit is contained in:
@ -27,6 +27,7 @@ from error import ManifestParseError
|
||||
|
||||
MANIFEST_FILE_NAME = 'manifest.xml'
|
||||
LOCAL_MANIFEST_NAME = 'local_manifest.xml'
|
||||
LOCAL_MANIFESTS_DIR_NAME = 'local_manifests'
|
||||
|
||||
urlparse.uses_relative.extend(['ssh', 'git'])
|
||||
urlparse.uses_netloc.extend(['ssh', 'git'])
|
||||
@ -301,6 +302,17 @@ class XmlManifest(object):
|
||||
if os.path.exists(local):
|
||||
nodes.append(self._ParseManifestXml(local, self.repodir))
|
||||
|
||||
local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
|
||||
try:
|
||||
for local_file in os.listdir(local_dir):
|
||||
if local_file.endswith('.xml'):
|
||||
try:
|
||||
nodes.append(self._ParseManifestXml(local_file, self.repodir))
|
||||
except ManifestParseError as e:
|
||||
print >>sys.stderr, '%s' % str(e)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
self._ParseManifest(nodes)
|
||||
|
||||
if self.IsMirror:
|
||||
@ -312,7 +324,7 @@ class XmlManifest(object):
|
||||
def _ParseManifestXml(self, path, include_root):
|
||||
try:
|
||||
root = xml.dom.minidom.parse(path)
|
||||
except (OSError, xml.parsers.expat.ExpatError), e:
|
||||
except (OSError, xml.parsers.expat.ExpatError) as e:
|
||||
raise ManifestParseError("error parsing manifest %s: %s" % (path, e))
|
||||
|
||||
if not root or not root.childNodes:
|
||||
|
Reference in New Issue
Block a user