def maven_import(cbtype, *args, **kws): global config if not context.opts.get('EnableMaven', False): return if kws.get('type') != 'rpm': return buildinfo = kws['build'] rpminfo = kws['rpm'] filepath = kws['filepath'] if not config: config = ConfigParser.SafeConfigParser() config.read(CONFIG_FILE) name_patterns = config.get('patterns', 'rpm_names').split() for pattern in name_patterns: if fnmatch.fnmatch(rpminfo['name'], pattern): break else: return tmpdir = os.path.join(koji.pathinfo.work(), 'rpm2maven', koji.buildLabel(buildinfo)) try: if os.path.exists(tmpdir): shutil.rmtree(tmpdir) koji.ensuredir(tmpdir) expand_rpm(filepath, tmpdir) scan_and_import(buildinfo, rpminfo, tmpdir) finally: if os.path.exists(tmpdir): shutil.rmtree(tmpdir)
def maven_import(cbtype, *args, **kws): global config if not context.opts.get("EnableMaven", False): return if kws.get("type") != "rpm": return buildinfo = kws["build"] rpminfo = kws["rpm"] filepath = kws["filepath"] if not config: config = ConfigParser.SafeConfigParser() config.read(CONFIG_FILE) name_patterns = config.get("patterns", "rpm_names").split() for pattern in name_patterns: if fnmatch.fnmatch(rpminfo["name"], pattern): break else: return tmpdir = os.path.join(koji.pathinfo.work(), "rpm2maven", koji.buildLabel(buildinfo)) try: if os.path.exists(tmpdir): shutil.rmtree(tmpdir) koji.ensuredir(tmpdir) expand_rpm(filepath, tmpdir) scan_and_import(buildinfo, rpminfo, tmpdir) finally: if os.path.exists(tmpdir): shutil.rmtree(tmpdir)
def get(self, src_package, dst_dir, rfilter=None, tag=None, build=None, arch=None): """ Download a list of packages from the build system. This will download all packages originated from source package [package] with given [tag] or [build] for the architecture reported by the machine. @param src_package: Source package name. @param dst_dir: Destination directory for the downloaded packages. @param rfilter: Regexp filter, only download the packages that match that particular filter. @param tag: Build system tag. @param build: Build system ID. @param arch: Package arch. Useful when you want to download noarch packages. @return: List of paths with the downloaded rpm packages. """ if build and build.isdigit(): build = int(build) if tag and build: logging.info("Both tag and build parameters provided, ignoring tag " "parameter...") if not tag and not build: raise ValueError("Koji install selected but neither koji_tag " "nor koji_build parameters provided. Please " "provide an appropriate tag or build name.") if not build: builds = self.session.listTagged(tag, latest=True, inherit=True, package=src_package) if not builds: raise ValueError("Tag %s has no builds of %s" % (tag, src_package)) info = builds[0] else: info = self.session.getBuild(build) if info is None: raise ValueError('No such brew/koji build: %s' % build) if arch is None: arch = utils.get_arch() rpms = self.session.listRPMs(buildID=info['id'], arches=arch) if not rpms: raise ValueError("No %s packages available for %s" % arch, koji.buildLabel(info)) rpm_paths = [] for rpm in rpms: rpm_name = koji.pathinfo.rpm(rpm) url = ("%s/%s/%s/%s/%s" % (self.koji_options['pkgurl'], info['package_name'], info['version'], info['release'], rpm_name)) if rfilter: filter_regexp = re.compile(rfilter, re.IGNORECASE) if filter_regexp.match(os.path.basename(rpm_name)): download = True else: download = False else: download = True if download: r = utils.get_file(url, os.path.join(dst_dir, os.path.basename(url))) rpm_paths.append(r) return rpm_paths