def get_scratch_pkg_urls(self, pkg, arch=None): ''' Gets the urls for the scratch packages specified in pkg :type pkg: KojiScratchPkgSpec :param pkg: a scratch package specification :type arch: string :param arch: packages built for this architecture, but also including architecture independent (noarch) packages ''' rpm_urls = [] if arch is None: arch = utils.get_arch() arches = [arch, 'noarch'] index_url = "%s/%s/task_%s" % (self.get_scratch_base_url(), pkg.user, pkg.task) index_parser = KojiDirIndexParser() index_parser.feed(urllib.urlopen(index_url).read()) if pkg.subpackages: for p in pkg.subpackages: for pfn in index_parser.package_file_names: r = RPMFileNameInfo(pfn) info = r.get_nvr_info() if (p == info['name'] and r.get_arch() in arches): rpm_urls.append("%s/%s" % (index_url, pfn)) else: for pfn in index_parser.package_file_names: if (RPMFileNameInfo(pfn).get_arch() in arches): rpm_urls.append("%s/%s" % (index_url, pfn)) return rpm_urls
def get_pkg_rpm_names(self, pkg, arch=None): ''' Gets the names for the RPM packages specified in pkg :type pkg: KojiPkgSpec :param pkg: a package specification :type arch: string :param arch: packages built for this architecture, but also including architecture independent (noarch) packages ''' if arch is None: arch = utils.get_arch() rpms = self.get_pkg_rpm_info(pkg, arch) return [rpm['name'] for rpm in rpms]
def get_pkg_rpm_file_names(self, pkg, arch=None): ''' Gets the file names for the RPM packages specified in pkg :type pkg: KojiPkgSpec :param pkg: a package specification :type arch: string :param arch: packages built for this architecture, but also including architecture independent (noarch) packages ''' if arch is None: arch = utils.get_arch() rpm_names = [] rpms = self.get_pkg_rpm_info(pkg, arch) for rpm in rpms: arch_rpm_name = koji.pathinfo.rpm(rpm) rpm_name = os.path.basename(arch_rpm_name) rpm_names.append(rpm_name) return rpm_names
def get_pkg_rpm_info(self, pkg, arch=None): ''' Returns a list of information on the RPM packages found on koji :type pkg: KojiPkgSpec :param pkg: a package specification :type arch: string :param arch: packages built for this architecture, but also including architecture independent (noarch) packages ''' if arch is None: arch = utils.get_arch() rpms = [] info = self.get_pkg_info(pkg) if info: rpms = self.session.listRPMs(buildID=info['id'], arches=[arch, 'noarch']) if pkg.subpackages: rpms = [d for d in rpms if d['name'] in pkg.subpackages] return rpms