Ejemplo n.º 1
0
 def test_prepend_installroot(self):
     conf = Conf()
     conf.installroot = '/mnt/root'
     conf.prepend_installroot('persistdir')
     self.assertEqual(conf.persistdir, '/mnt/root/var/lib/dnf')
Ejemplo n.º 2
0
 def test_prepend_installroot(self):
     conf = Conf()
     conf.installroot = '/mnt/root'
     conf.prepend_installroot('persistdir')
     self.assertEqual(conf.persistdir, '/mnt/root/var/lib/dnf')
Ejemplo n.º 3
0
    def setup(self):
        """
        Setup DNF builder.
        """
        dnf_conf = Conf()

        dnf_conf.debuglevel = 10
        dnf_conf.logdir = self.log_path

        dnf_conf.assumeyes = True

        dnf_conf.installroot = self.image_path
        pdir = os.path.join(self.image_path, "var", "lib", "dnf")
        dnf_conf.persistdir = pdir
        dnf_conf.cachedir = os.path.join(pdir, "cache")
        dnf_conf.keepcache = not self.cleanall

        dnf_conf.releasever = str(self.config["releasever"])

        for arch in ("arch", "basearch"):
            dnf_conf.substitutions[arch] = self.config["architecture"]

        for conf in ("proxy", "proxy_username", "proxy_password"):
            if conf in self.runtime:
                setattr(dnf_conf, conf, self.runtime[conf])

        self.dnf_builder = Base(dnf_conf)
        self.dnf_builder.read_all_repos()

        all_repos = self.config["repo"].get("*", False)
        runtime_all_repos = self.runtime["repo"].get("*", False)

        for repo_name, repo in self.dnf_builder.repos.items():
            repo_conf = None
            if all_repos or runtime_all_repos:
                repo_conf = configfile.merge(self.config["repo"].get("*", {}),
                                             self.runtime["repo"].get("*", {}))

                if repo_conf.get("baseurl"):
                    del repo_conf["baseurl"]

            if (repo_name in self.config["repo"] or
                    repo_name in self.runtime["repo"]):
                merge_conf = configfile.merge(
                    self.config["repo"].get(repo_name, {}),
                    self.runtime["repo"].get(repo_name, {}))

                if not merge_conf:
                    continue

                if repo_conf:
                    repo_conf = configfile.merge(merge_conf, repo_conf)
                else:
                    repo_conf = merge_conf

            if repo_conf:
                if "baseurl" in repo_conf:
                    repo.baseurl = repo_conf["baseurl"]
                    # Explicitly remove these as
                    # they can override the baseurl settings
                    repo.mirrorlist = None
                    repo.metalink = None
                if "enabled" in repo_conf:
                    if not repo_conf["enabled"]:
                        repo.disable()
                    else:
                        repo.enable()
                else:
                    repo.enable()

        # If the RPM DBs aren't initialised,
        # hawkey doesn't fill the sack correctly and fails.
        # But we don't want to overwrite any already setup RPM DBs.
        rpm_path = os.path.join(self.image_path, "var", "lib", "rpm")
        if not os.path.exists(rpm_path):
            self.dnf_builder.ts.ts.initDB()

        self.dnf_builder.fill_sack()