Ejemplo n.º 1
0
    def run_project_cmd(self, args, loader, manifest):
        if args.recursive:
            projects = loader.manifests_in_dependency_order()
        else:
            projects = [manifest]

        cache = cache_module.create_cache()
        all_packages = {}
        for m in projects:
            ctx = loader.ctx_gen.get_context(m.name)
            packages = m.get_required_system_packages(ctx)
            for k, v in packages.items():
                merged = all_packages.get(k, [])
                merged += v
                all_packages[k] = merged

        manager = loader.build_opts.host_type.get_package_manager()
        if manager == "rpm":
            packages = sorted(list(set(all_packages["rpm"])))
            if packages:
                run_cmd(["dnf", "install", "-y"] + packages)
        elif manager == "deb":
            packages = sorted(list(set(all_packages["deb"])))
            if packages:
                run_cmd(["apt", "install", "-y"] + packages)
        else:
            print("I don't know how to install any packages on this system")
Ejemplo n.º 2
0
    def run_project_cmd(self, args, loader, manifest):
        if args.recursive:
            projects = loader.manifests_in_dependency_order()
        else:
            projects = [manifest]

        rebuild_ctx_gen = False
        if args.ostype:
            loader.build_opts.host_type.ostype = args.ostype
            loader.build_opts.host_type.distro = None
            loader.build_opts.host_type.distrovers = None
            rebuild_ctx_gen = True

        if args.distro:
            loader.build_opts.host_type.distro = args.distro
            loader.build_opts.host_type.distrovers = None
            rebuild_ctx_gen = True

        if args.distrovers:
            loader.build_opts.host_type.distrovers = args.distrovers
            rebuild_ctx_gen = True

        if rebuild_ctx_gen:
            loader.ctx_gen = loader.build_opts.get_context_generator()

        manager = loader.build_opts.host_type.get_package_manager()

        all_packages = {}
        for m in projects:
            ctx = loader.ctx_gen.get_context(m.name)
            packages = m.get_required_system_packages(ctx)
            for k, v in packages.items():
                merged = all_packages.get(k, [])
                merged += v
                all_packages[k] = merged

        cmd_args = None
        if manager == "rpm":
            packages = sorted(set(all_packages["rpm"]))
            if packages:
                cmd_args = ["dnf", "install", "-y"] + packages
        elif manager == "deb":
            packages = sorted(set(all_packages["deb"]))
            if packages:
                cmd_args = ["apt", "install", "-y"] + packages
        else:
            host_tuple = loader.build_opts.host_type.as_tuple_string()
            print(
                f"I don't know how to install any packages on this system {host_tuple}"
            )
            return

        if cmd_args:
            if args.dry_run:
                print(" ".join(cmd_args))
            else:
                run_cmd(cmd_args)
        else:
            print("no packages to install")