예제 #1
0
파일: profile.py 프로젝트: bithium/qibuild
def parse_profiles(xml_path):
    """ Parse .qi/qibuild.xml. Return a dict
    name -> Profile
    """
    res = dict()
    tree = qixml.read(xml_path)
    root = tree.getroot()
    profile_elems = root.findall("profiles/profile")
    for profile_elem in profile_elems:
        profile_name = qixml.parse_required_attr(profile_elem, "name")
        profile = Profile(profile_name)
        res[profile_name] = profile
        cmake_elem = profile_elem.find("cmake")
        if cmake_elem is None:
            continue
        flags_elem = cmake_elem.find("flags")
        if flags_elem is None:
            continue
        flag_elems = flags_elem.findall("flag")
        for flag_elem in flag_elems:
            key = qixml.parse_required_attr(flag_elem, "name")
            value = flag_elem.text.strip()
            to_add = "%s=%s" % (key, value)
            profile.cmake_flags.append(to_add)
    return res
예제 #2
0
def test_parse_required_attr():
    tree = etree.fromstring("<foo />")
    with pytest.raises(Exception):
        qixml.parse_required_attr(tree, "bar")

    tree = etree.fromstring("<foo bar=\"foo\" />")
    assert qixml.parse_required_attr(tree, "bar") == "foo"
예제 #3
0
 def parse(self, xml_elem):
     self.src = qixml.parse_required_attr(xml_elem, "src")
     self.manifest = qixml.parse_bool_attr(xml_elem, "manifest")
     self.review = qixml.parse_bool_attr(xml_elem, "review")
     self.profile = xml_elem.get("profile", "default")
     self.remote = xml_elem.get("remote", "origin")
     self.branch = xml_elem.get("branch", "master")
예제 #4
0
 def parse_qiproject_xml(self):
     qiproject_xml = os.path.join(self.path, "qiproject.xml")
     if not os.path.exists(qiproject_xml):
         return
     tree = qixml.read(qiproject_xml)
     project_elems = tree.findall("project")
     for project_elem in project_elems:
         src = qixml.parse_required_attr(project_elem, "src", xml_path=qiproject_xml)
         self.subprojects.append(src)
예제 #5
0
 def parse(self, element):
     self.name = qixml.parse_required_attr(element, "name")
     self.src = element.get("src", ".")
     self.dest = element.get("dest", self.name)
     depends_elements = element.findall("depends")
     for depends_element in depends_elements:
         depends = Depends()
         depends.parse(depends_element)
         self.depends.append(depends.name)
예제 #6
0
파일: manifest.py 프로젝트: gnatali/qibuild
 def parse(self, xml_element):
     self.name = xml_element.get("name")
     if not self.name:
         self.name = "origin"
     self.fetch = qixml.parse_required_attr(xml_element, "fetch")
     self.review = xml_element.get("review")
     self.revision = xml_element.get("revision")
     if not self.revision:
         self.revision = "master"
예제 #7
0
 def _parse(self, element):
     '''
     This function parses XML configuration for the documentation project.
     '''
     self.name = qixml.parse_required_attr(element, "name")
     self.src = element.get("src", ".")
     self.dest = element.get("dest", self.name)
     depends_elements = element.findall("depends")
     for depends_element in depends_elements:
         self.dependencies.append(depends_element.get('name'))
예제 #8
0
파일: manifest.py 프로젝트: bithium/qibuild
 def parse(self, xml_element):
     self.name = qixml.parse_required_attr(xml_element, "name")
     xml_path = xml_element.get("path")
     if not xml_path:
         self.path = self.name.replace(".git", "")
     else:
         self.path = qisys.sh.to_posix_path(xml_path)
         self.path = posixpath.normpath(xml_path)
     self.revision = xml_element.get("revision")
     self.worktree_name = xml_element.get("worktree_name")
     self.review = qixml.parse_bool_attr(xml_element, "review")
     self.remote = xml_element.get("remote", default="origin")