Example #1
0
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)
Example #2
0
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()
Example #3
0
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)
Example #4
0
    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
Example #5
0
    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: