From 8edeec4702506d5679cdd469c7f466e39b9eecb6 Mon Sep 17 00:00:00 2001 From: Paul Nasrat Date: Tue, 18 Oct 2005 15:54:00 +0000 Subject: Create yum cache --- scripts/yumcache | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 scripts/yumcache (limited to 'scripts') diff --git a/scripts/yumcache b/scripts/yumcache new file mode 100755 index 000000000..50ff0ba13 --- /dev/null +++ b/scripts/yumcache @@ -0,0 +1,80 @@ +#!/usr/bin/python + +from optparse import OptionParser + +import os +import glob +import shutil +import sys +import tempfile +import yum + +class CacheConf: + """Dynamic yum configuration""" + + def __init__( self, repopath): + self.fd, self.name = tempfile.mkstemp(".conf", "yum-", "/tmp") + self.cachedir = tempfile.mkdtemp("", "yum-cache-", "/tmp") + self.repopath = repopath + + self.yumconfstr = """ +[main] +distroverpkg=redhat-release +cachedir=%s +gpgcheck=0 + +[cache] +baseurl=file://%s +enabled=1 +""" % (self.cachedir, self.repopath) + + os.write(self.fd, self.yumconfstr) + os.close(self.fd) + +class YumCacheGenerator(yum.YumBase): + def __init__(self, repopath): + yum.YumBase.__init__(self) + self.repopath = repopath + self.config = CacheConf(repopath) + self.doConfigSetup(self.config.name) + os.unlink(self.config.name) + + def log(self, level, msg): + pass + + def errorlog(self, level, msg): + pass + + def filelog(self, level, msg): + pass + + def write(self): + self.repos.disableRepo('*') + self.repos.enableRepo('cache') + self.doRepoSetup() + self.repos.populateSack(with='metadata', pickleonly=1) + self.repos.populateSack(with='filelists', pickleonly=1) + for cache in glob.glob("%s/cache/*.sqlite" %( self.config.cachedir,)): + shutil.move(cache, "%s/repodata" % (self.config.repopath)) + + shutil.rmtree(self.config.cachedir) + + +def usage(): + print "yumcache " + +if __name__ == "__main__": + parser = OptionParser() + (options, args) = parser.parse_args() + + if len(args) != 1: + usage() + sys.exit(1) + repopath = args[0] + + if not os.path.exists("%s/repodata/repomd.xml" % (repopath)): + sys.stderr.write("No metadata found in %s" % (repopath,)) + sys.exit(2) + + y = YumCacheGenerator(repopath) + y.write() -- cgit