diff options
Diffstat (limited to 'manifest_xml.py')
-rw-r--r-- | manifest_xml.py | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/manifest_xml.py b/manifest_xml.py index 7d02f9d6..d0c9debe 100644 --- a/manifest_xml.py +++ b/manifest_xml.py | |||
@@ -65,8 +65,8 @@ class XmlManifest(object): | |||
65 | 65 | ||
66 | self._Unload() | 66 | self._Unload() |
67 | 67 | ||
68 | def Link(self, name): | 68 | def Override(self, name): |
69 | """Update the repo metadata to use a different manifest. | 69 | """Use a different manifest, just for the current instantiation. |
70 | """ | 70 | """ |
71 | path = os.path.join(self.manifestProject.worktree, name) | 71 | path = os.path.join(self.manifestProject.worktree, name) |
72 | if not os.path.isfile(path): | 72 | if not os.path.isfile(path): |
@@ -80,6 +80,11 @@ class XmlManifest(object): | |||
80 | finally: | 80 | finally: |
81 | self.manifestFile = old | 81 | self.manifestFile = old |
82 | 82 | ||
83 | def Link(self, name): | ||
84 | """Update the repo metadata to use a different manifest. | ||
85 | """ | ||
86 | self.Override(name) | ||
87 | |||
83 | try: | 88 | try: |
84 | if os.path.exists(self.manifestFile): | 89 | if os.path.exists(self.manifestFile): |
85 | os.remove(self.manifestFile) | 90 | os.remove(self.manifestFile) |
@@ -123,6 +128,12 @@ class XmlManifest(object): | |||
123 | root.appendChild(e) | 128 | root.appendChild(e) |
124 | root.appendChild(doc.createTextNode('')) | 129 | root.appendChild(doc.createTextNode('')) |
125 | 130 | ||
131 | if self._manifest_server: | ||
132 | e = doc.createElement('manifest-server') | ||
133 | e.setAttribute('url', self._manifest_server) | ||
134 | root.appendChild(e) | ||
135 | root.appendChild(doc.createTextNode('')) | ||
136 | |||
126 | sort_projects = list(self.projects.keys()) | 137 | sort_projects = list(self.projects.keys()) |
127 | sort_projects.sort() | 138 | sort_projects.sort() |
128 | 139 | ||
@@ -169,6 +180,11 @@ class XmlManifest(object): | |||
169 | return self._default | 180 | return self._default |
170 | 181 | ||
171 | @property | 182 | @property |
183 | def manifest_server(self): | ||
184 | self._Load() | ||
185 | return self._manifest_server | ||
186 | |||
187 | @property | ||
172 | def IsMirror(self): | 188 | def IsMirror(self): |
173 | return self.manifestProject.config.GetBoolean('repo.mirror') | 189 | return self.manifestProject.config.GetBoolean('repo.mirror') |
174 | 190 | ||
@@ -178,6 +194,7 @@ class XmlManifest(object): | |||
178 | self._remotes = {} | 194 | self._remotes = {} |
179 | self._default = None | 195 | self._default = None |
180 | self.branch = None | 196 | self.branch = None |
197 | self._manifest_server = None | ||
181 | 198 | ||
182 | def _Load(self): | 199 | def _Load(self): |
183 | if not self._loaded: | 200 | if not self._loaded: |
@@ -247,6 +264,15 @@ class XmlManifest(object): | |||
247 | self._default = _Default() | 264 | self._default = _Default() |
248 | 265 | ||
249 | for node in config.childNodes: | 266 | for node in config.childNodes: |
267 | if node.nodeName == 'manifest-server': | ||
268 | url = self._reqatt(node, 'url') | ||
269 | if self._manifest_server is not None: | ||
270 | raise ManifestParseError, \ | ||
271 | 'duplicate manifest-server in %s' % \ | ||
272 | (self.manifestFile) | ||
273 | self._manifest_server = url | ||
274 | |||
275 | for node in config.childNodes: | ||
250 | if node.nodeName == 'project': | 276 | if node.nodeName == 'project': |
251 | project = self._ParseProject(node) | 277 | project = self._ParseProject(node) |
252 | if self._projects.get(project.name): | 278 | if self._projects.get(project.name): |
@@ -315,7 +341,7 @@ class XmlManifest(object): | |||
315 | def _ParseProject(self, node): | 341 | def _ParseProject(self, node): |
316 | """ | 342 | """ |
317 | reads a <project> element from the manifest file | 343 | reads a <project> element from the manifest file |
318 | """ | 344 | """ |
319 | name = self._reqatt(node, 'name') | 345 | name = self._reqatt(node, 'name') |
320 | 346 | ||
321 | remote = self._get_remote(node) | 347 | remote = self._get_remote(node) |