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")
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")