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) |
