def create_metadata(repo, packages=None, comps=None): """ Generate YUM metadata for a repository. This method accepts a repository object and, based on its configuration, generates YUM metadata for it using the createrepo sister library. """ util.validate_repo(repo) conf = createrepo.MetaDataConfig() conf.directory = os.path.dirname(repo.pkgdir) conf.outputdir = os.path.dirname(repo.pkgdir) if packages: conf.pkglist = packages conf.quiet = True if comps: groupdir = tempfile.mkdtemp() conf.groupfile = os.path.join(groupdir, 'groups.xml') with open(conf.groupfile, 'w') as f: f.write(comps) generator = createrepo.SplitMetaDataGenerator(conf) generator.doPkgMetadata() generator.doRepoMetadata() generator.doFinalMove() if comps and os.path.exists(groupdir): shutil.rmtree(groupdir)
def update_metadata(repo_path): if hasattr(repo_path, '__iter__'): for repo in repo_path: update_metadata(repo) return conf = make_cr_conf() conf.directory = repo_path conf.directories = [repo_path] print "Updating repository at " + repo_path mdgen = createrepo.SplitMetaDataGenerator(config_obj=conf) mdgen.doPkgMetadata() mdgen.doRepoMetadata() mdgen.doFinalMove()
def main(args): """createrepo from cli main flow""" start_st = time.time() conf = createrepo.MetaDataConfig() conf = parse_args(args, conf) if conf.profile: print ('start time: %0.3f' % (time.time() - start_st)) mid_st = time.time() try: if conf.split: mdgen = createrepo.SplitMetaDataGenerator(config_obj=conf, callback=MDCallBack()) else: mdgen = createrepo.MetaDataGenerator(config_obj=conf, callback=MDCallBack()) if mdgen.checkTimeStamps(): if mdgen.conf.verbose: print _('repo is up to date') mdgen._cleanup_tmp_repodata_dir() sys.exit(0) if conf.profile: print ('mid time: %0.3f' % (time.time() - mid_st)) pm_st = time.time() mdgen.doPkgMetadata() if conf.profile: print ('pm time: %0.3f' % (time.time() - pm_st)) rm_st = time.time() mdgen.doRepoMetadata() if conf.profile: print ('rm time: %0.3f' % (time.time() - rm_st)) fm_st = time.time() mdgen.doFinalMove() if conf.profile: print ('fm time: %0.3f' % (time.time() - fm_st)) except MDError, errormsg: errorprint(_('%s') % errormsg) sys.exit(1)
def build_metadata(self): staging = tempfile.mkdtemp(prefix='yumsync-', suffix='-metadata') if self._packages is None: packages = [] else: packages = [ os.path.join(os.path.basename(self.package_dir), pkg) for pkg in self._packages ] if self.checksum == 'sha' or self.checksum == 'sha1': sumtype = 'sha' else: sumtype = 'sha256' conf = createrepo.MetaDataConfig() conf.directory = os.path.dirname(self.package_dir) conf.outputdir = staging conf.sumtype = sumtype conf.pkglist = packages conf.quiet = True if self._comps: groupdir = tempfile.mkdtemp(prefix='yumsync-', suffix='-groupdata') conf.groupfile = os.path.join(groupdir, 'groups.xml') with open(conf.groupfile, 'w') as f: f.write(self._comps) generator = createrepo.SplitMetaDataGenerator(conf) generator.doPkgMetadata() generator.doRepoMetadata() generator.doFinalMove() if self._comps and os.path.exists(groupdir): shutil.rmtree(groupdir) return staging
try: os.getcwd() except OSError, e: if e.errno != errno.ENOENT: raise print('No getcwd() access in current directory.') sys.exit(1) start_st = time.time() conf = createrepo.MetaDataConfig() conf = parse_args(args, conf) if conf.profile: print('start time: %0.3f' % (time.time() - start_st)) mid_st = time.time() try: if conf.split: mdgen = createrepo.SplitMetaDataGenerator(config_obj=conf, callback=MDCallBack()) else: mdgen = createrepo.MetaDataGenerator(config_obj=conf, callback=MDCallBack()) if mdgen.checkTimeStamps(): if mdgen.conf.verbose: print _('repo is up to date') mdgen._cleanup_tmp_repodata_dir() sys.exit(0) if conf.profile: print('mid time: %0.3f' % (time.time() - mid_st)) pm_st = time.time() mdgen.doPkgMetadata() if conf.profile: