def _expand_koji_pkgs_with_debuginfo(self): ''' Include debuginfo RPMs on koji_pkgs :return: None ''' logging.debug("Koji package list to be updated with debuginfo pkgs") koji_pkgs_with_debug = [] for pkg_text in self.koji_pkgs: pkg = utils_koji.KojiPkgSpec(pkg_text) debuginfo_pkg_name = '%s-debuginfo' % pkg.package # if no subpackages are set, then all packages will be installed # so there's no need to manually include debuginfo packages if pkg.subpackages: # make sure we do not include the debuginfo package if # already specified in the list of subpackages if debuginfo_pkg_name not in pkg.subpackages: pkg.subpackages.append(debuginfo_pkg_name) pkg_with_debug_text = pkg.to_text() logging.debug("KojiPkgSpec with debuginfo package added: %s", pkg_with_debug_text) koji_pkgs_with_debug.append(pkg_with_debug_text) # swap current koji_pkgs with on that includes debuginfo pkgs self.koji_pkgs = koji_pkgs_with_debug
def _kernel_install_koji(self, kernel_koji_spec, kernel_deps_koji_spec, need_reboot=True): # Using hardcoded package names (the names are not expected to change) # we avoid lookup errors due to SSL problems, so let's go with that. for koji_package in ['koji', 'brewkoji']: if not self.sm.check_installed(koji_package): LOG.debug("%s missing - trying to install", koji_package) self.sm.install(koji_package) sys.path.append(self.bindir) try: from staging import utils_koji except ImportError: from autotest.client.shared import utils_koji # First, download packages via koji/brew c = utils_koji.KojiClient() deps_rpms = [] k_dep = utils_koji.KojiPkgSpec(text=kernel_deps_koji_spec) LOG.info('Fetching kernel dependencies: %s', kernel_deps_koji_spec) c.get_pkgs(k_dep, self.bindir) rpm_file_name_list = c.get_pkg_rpm_file_names(k_dep) if len(rpm_file_name_list) == 0: raise error.TestError("No packages on brew/koji match spec %s" % kernel_deps_koji_spec) dep_rpm_basename = rpm_file_name_list[0] deps_rpms.append(os.path.join(self.bindir, dep_rpm_basename)) k = utils_koji.KojiPkgSpec(text=kernel_koji_spec) LOG.info('Fetching kernel: %s', kernel_koji_spec) c.get_pkgs(k, self.bindir) rpm_file_name_list = c.get_pkg_rpm_file_names(k) if len(rpm_file_name_list) == 0: raise error.TestError("No packages on brew/koji match spec %s" % kernel_koji_spec) kernel_rpm_basename = rpm_file_name_list[0] kernel_rpm_path = os.path.join(self.bindir, kernel_rpm_basename) # Then install kernel rpm packages. self._kernel_install_rpm(kernel_rpm_path, deps_rpms, need_reboot)
def _install_phase_download(self): koji_client = utils_koji.KojiClient(cmd=self.koji_cmd) for pkg_text in self.koji_pkgs: pkg = utils_koji.KojiPkgSpec(pkg_text) if pkg.is_valid(): koji_client.get_pkgs(pkg, dst_dir=self.test_srcdir) else: logging.error('Package specification (%s) is invalid: %s' % (pkg, pkg.describe_invalid())) for pkg_text in self.koji_scratch_pkgs: pkg = utils_koji.KojiScratchPkgSpec(pkg_text) koji_client.get_scratch_pkgs(pkg, dst_dir=self.test_srcdir)
def _get_rpm_file_names(self): all_rpm_file_names = [] koji_client = utils_koji.KojiClient(cmd=self.koji_cmd) for pkg_text in self.koji_pkgs: pkg = utils_koji.KojiPkgSpec(pkg_text) rpm_file_names = koji_client.get_pkg_rpm_file_names(pkg) all_rpm_file_names += rpm_file_names for scratch_pkg_text in self.koji_scratch_pkgs: pkg = utils_koji.KojiScratchPkgSpec(scratch_pkg_text) rpm_urls = koji_client.get_scratch_pkg_urls(pkg) file_names = map(os.path.basename, rpm_urls) all_rpm_file_names += file_names return all_rpm_file_names
def _get_rpm_names(self): all_rpm_names = [] koji_client = utils_koji.KojiClient(cmd=self.koji_cmd) for pkg_text in self.koji_pkgs: pkg = utils_koji.KojiPkgSpec(pkg_text) rpm_names = koji_client.get_pkg_rpm_names(pkg) all_rpm_names += rpm_names for scratch_pkg_text in self.koji_scratch_pkgs: pkg = utils_koji.KojiScratchPkgSpec(scratch_pkg_text) rpm_urls = koji_client.get_scratch_pkg_urls(pkg) file_names = map(os.path.basename, rpm_urls) for f in file_names: r = utils_koji.RPMFileNameInfo(f) all_rpm_names.append(r.get_nvr_info()['name']) return all_rpm_names