From e0df232da7c92b0776a3e86a70687e2c9f2bad7b Mon Sep 17 00:00:00 2001 From: Jeff Hamilton Date: Mon, 21 Apr 2014 17:10:59 -0500 Subject: Add linkfile support. It's just like copyfile and runs at the same time as copyfile but instead of copying it creates a symlink instead. This is needed because copyfile copies the target of the link as opposed to the symlink itself. Change-Id: I7bff2aa23f0d80d9d51061045bd9c86a9b741ac5 --- manifest_xml.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'manifest_xml.py') diff --git a/manifest_xml.py b/manifest_xml.py index 3c8fadd6..e2f58e62 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -261,6 +261,12 @@ class XmlManifest(object): ce.setAttribute('dest', c.dest) e.appendChild(ce) + for l in p.linkfiles: + le = doc.createElement('linkfile') + le.setAttribute('src', l.src) + le.setAttribute('dest', l.dest) + e.appendChild(le) + default_groups = ['all', 'name:%s' % p.name, 'path:%s' % p.relpath] egroups = [g for g in p.groups if g not in default_groups] if egroups: @@ -765,6 +771,8 @@ class XmlManifest(object): for n in node.childNodes: if n.nodeName == 'copyfile': self._ParseCopyFile(project, n) + if n.nodeName == 'linkfile': + self._ParseLinkFile(project, n) if n.nodeName == 'annotation': self._ParseAnnotation(project, n) if n.nodeName == 'project': @@ -814,6 +822,14 @@ class XmlManifest(object): # dest is relative to the top of the tree project.AddCopyFile(src, dest, os.path.join(self.topdir, dest)) + def _ParseLinkFile(self, project, node): + src = self._reqatt(node, 'src') + dest = self._reqatt(node, 'dest') + if not self.IsMirror: + # src is project relative; + # dest is relative to the top of the tree + project.AddLinkFile(src, dest, os.path.join(self.topdir, dest)) + def _ParseAnnotation(self, project, node): name = self._reqatt(node, 'name') value = self._reqatt(node, 'value') -- cgit v1.2.3-54-g00ecf