コード例 #1
0
ファイル: config.py プロジェクト: mikalv/qibuild
    def write(self, location):
        """ Write configuration back to a config file

        """
        project_tree = self.tree.getroot()
        if not project_tree:
            project_tree = etree.Element("project")
            self.tree = etree.ElementTree(element=project_tree)
        project_tree.set("name", self.name)

        for depend_elem in project_tree.findall("depends"):
            project_tree.remove(depend_elem)

        build_elem = etree.Element("depends")
        build_elem.set("buildtime", "true")
        build_elem.set("runtime", "false")
        build_elem.set("testtime", "false")
        build_elem.set("names", " ".join(self.build_depends))
        project_tree.append(build_elem)

        run_elem = etree.Element("depends")
        run_elem.set("buildtime", "false")
        run_elem.set("runtime", "true")
        run_elem.set("testtime", "false")
        run_elem.set("names", " ".join(self.run_depends))
        project_tree.append(run_elem)

        test_elem = etree.Element("depends")
        test_elem.set("buildtime", "false")
        test_elem.set("runtime", "false")
        test_elem.set("testtime", "true")
        test_elem.set("names", " ".join(self.test_depends))
        project_tree.append(test_elem)

        qisys.qixml.write(self.tree, location)
コード例 #2
0
ファイル: config.py プロジェクト: mikalv/qibuild
    def __init__(self):
        self.tree = etree.ElementTree()
        self.defaults = Defaults()

        # Set by self.read_local_config()
        self.local = LocalSettings()

        # A dict of possible configs
        self.configs = dict()

        # A dict of possible IDE
        self.ides = dict()

        # A dicf of server name -> access:
        self.servers = dict()

        # Active env:
        self.env = Env()

        # Active IDE:
        self.ide = None

        # Active CMake config:
        self.cmake = CMake()

        # A dict of worktree, key being the path
        self.worktrees = dict()
コード例 #3
0
 def __init__(self):
     """ ProjectConfig Init """
     self.name = None
     self.build_depends = set()
     self.run_depends = set()
     self.test_depends = set()
     self.tree = etree.ElementTree()
コード例 #4
0
ファイル: database.py プロジェクト: Supremeylb/qibuild
 def save(self):
     """ Save the packages in the xml file """
     root = etree.Element("toolchain")
     tree = etree.ElementTree(root)
     for package in self.packages.itervalues():
         element = package.to_xml()
         root.append(element)
     qisys.qixml.write(tree, self.db_path)
コード例 #5
0
 def save(self):
     """ Save the packages in the xml file """
     root = etree.Element("toolchain")
     if self.build_target:
         root.set("target", self.build_target)
         ui.debug("Save target in database xml", self.build_target, "in",
                  self.db_path)
     tree = etree.ElementTree(root)
     for package in self.packages.values():
         element = package.to_xml()
         root.append(element)
     qisys.qixml.write(tree, self.db_path)
コード例 #6
0
ファイル: __init__.py プロジェクト: pineal/qibuild
def convert_to_qibuild(package,
                       package_metadata=None,
                       output_dir=None,
                       output_name=None):
    """ Convert a binary package into a qiBuild package.

    :param package: an instance of qitoolchain.binary_package.BinaryPackage.
    :param package_metadata: a dict to override the metadata of the package,
                             or to provide the metadata if the could not be
                             read from the binary package
    :param output_dir: where to put the new qiBuild package, defaults to
                       the basename of the binaray package
    :package output_name: the archive name of the qiBuild package,
                          computed from the metadat if not given
    :param gen_cmake: whether we should try to generate a CMake module for
                      this package
    :return: path to the converted qiBuild package

    """
    metadata = package.get_metadata()
    if package_metadata:
        metadata.update(package_metadata)
    package_name = metadata["name"]
    if not output_dir:
        output_dir = os.path.dirname(package.path)
    if not output_name:
        output_name = package_name
        for key in ['version', 'revision', 'arch', 'arch_variant']:
            value = metadata.get(key)
            if value:
                if key == 'revision':
                    value = "r" + value
                output_name += "-" + value
        output_name += ".zip"
    qisys.sh.mkdir(output_dir, recursive=True)
    output_path = os.path.join(output_dir, output_name)
    with qisys.sh.TempDir() as work_dir:
        root_dir = package.extract(work_dir)
        _fix_package_tree(root_dir)
        package_xml_path = os.path.join(root_dir, "package.xml")
        package_xml_root = etree.Element("package")
        package_xml_tree = etree.ElementTree(package_xml_root)
        package_xml_root.set("name", package_name)
        version = metadata.get("version")
        if version:
            package_xml_root.set("version", version)
        qisys.qixml.write(package_xml_root, package_xml_path)
        res = qisys.archive.compress(root_dir,
                                     algo="zip",
                                     quiet=True,
                                     flat=True)
        qisys.sh.mv(res, output_path)
    return output_path
コード例 #7
0
 def dump_manifest_config(self):
     """ Save the manifest config in .qi/manifest.xml """
     root = etree.Element("worktree")
     manifest_elem = etree.SubElement(root, "manifest")
     manifest_elem.set("url", self.manifest.url)
     manifest_elem.set("branch", self.manifest.branch)
     if self.manifest.groups is not None:
         manifest_elem.set("groups", " ".join(self.manifest.groups))
     if self.manifest.review:
         manifest_elem.set("review", "true")
     else:
         manifest_elem.set("review", "false")
     tree = etree.ElementTree(root)
     qisys.qixml.write(tree, self.manifest_xml)
コード例 #8
0
ファイル: database.py プロジェクト: pineal/qibuild
    def save(self):
        """ Save the packages in the xml file """
        root = etree.Element("toolchain")
        tree = etree.ElementTree(root)
        for package in self.packages.itervalues():
            element = etree.Element("package")
            element.set("name", package.name)
            if package.path:
                element.set("path", package.path)
            if package.version:
                element.set("version", package.version)
            if package.url:
                element.set("url", package.url)
            if package.toolchain_file:
                element.set("toolchain_file", package.toolchain_file)
            if package.sysroot:
                element.set("sysroot", package.sysroot)
            if package.cross_gdb:
                element.set("cross_gdb", package.cross_gdb)

            root.append(element)
        qisys.qixml.write(tree, self.db_path)
コード例 #9
0
ファイル: config.py プロジェクト: mikalv/qibuild
 def __init__(self):
     self.name = None
     self.build_depends = set()
     self.run_depends = set()
     self.test_depends = set()
     self.tree = etree.ElementTree()