[Rpm-metadata] createrepo/deltarpms.py createrepo/__init__.py createrepo/merge.py createrepo/readMetadata.py createrepo/utils.py createrepo/yumbased.py dmd.py genpkgmetadata.py mergerepo.py modifyrepo.py
Ville Skyttä
scop at osuosl.org
Fri Feb 12 21:38:28 UTC 2010
createrepo/__init__.py | 317 ++++++++++++++++++++++-----------------------
createrepo/deltarpms.py | 13 -
createrepo/merge.py | 8 -
createrepo/readMetadata.py | 12 -
createrepo/utils.py | 8 -
createrepo/yumbased.py | 81 +++++------
dmd.py | 4
genpkgmetadata.py | 52 +++----
mergerepo.py | 12 -
modifyrepo.py | 11 -
10 files changed, 253 insertions(+), 265 deletions(-)
New commits:
commit ce9638466182349019edaeea896bd9a5909bb4ef
Author: Ville Skyttä <ville.skytta at iki.fi>
Date: Fri Feb 12 23:38:13 2010 +0200
Trim trailing whitespace.
diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index 0c0c7d8..d29c9d8 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
@@ -11,7 +11,7 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-# Copyright 2009 Red Hat, Inc -
+# Copyright 2009 Red Hat, Inc -
# written by seth vidal skvidal at fedoraproject.org
import os
@@ -61,21 +61,21 @@ class MetaDataConfig(object):
self.groupfile = None
self.sumtype = 'sha256'
self.pretty = False
- self.cachedir = None
+ self.cachedir = None
self.use_cache = False
self.basedir = os.getcwd()
self.checkts = False
- self.split = False
+ self.split = False
self.update = False
self.deltas = False # do the deltarpm thing
# where to put the .drpms - defaults to 'drpms' inside 'repodata'
- self.deltadir = None
+ self.deltadir = None
self.delta_relative = 'drpms/'
- self.oldpackage_paths = [] # where to look for the old packages -
+ self.oldpackage_paths = [] # where to look for the old packages -
self.deltafile = 'prestodelta.xml.gz'
self.num_deltas = 1 # number of older versions to delta (max)
self.max_delta_rpm_size = 100000000
- self.update_md_path = None
+ self.update_md_path = None
self.skip_stat = False
self.database = False
self.outputdir = None
@@ -102,20 +102,20 @@ class MetaDataConfig(object):
self.distro_tags = []# [(cpeid(None allowed), human-readable-string)]
self.read_pkgs_list = None # filepath/name to write out list of pkgs
# read in this run of createrepo
-
+
class SimpleMDCallBack(object):
def errorlog(self, thing):
print >> sys.stderr, thing
-
+
def log(self, thing):
print thing
-
+
def progress(self, item, current, total):
sys.stdout.write('\r' + ' ' * 80)
sys.stdout.write("\r%d/%d - %s" % (current, total, item))
sys.stdout.flush()
-
-
+
+
class MetaDataGenerator:
def __init__(self, config_obj=None, callback=None):
self.conf = config_obj
@@ -124,31 +124,31 @@ class MetaDataGenerator:
if not callback:
self.callback = SimpleMDCallBack()
else:
- self.callback = callback
-
-
+ self.callback = callback
+
+
self.ts = rpmUtils.transaction.initReadOnlyTransaction()
self.pkgcount = 0
self.current_pkg = 0
self.files = []
self.rpmlib_reqs = {}
self.read_pkgs = []
-
+
if not self.conf.directory and not self.conf.directories:
raise MDError, "No directory given on which to run."
-
+
if not self.conf.directories: # just makes things easier later
self.conf.directories = [self.conf.directory]
if not self.conf.directory: # ensure we have both in the config object
self.conf.directory = self.conf.directories[0]
-
+
# the cachedir thing:
if self.conf.cachedir:
self.conf.use_cache = True
-
+
# this does the dir setup we need done
self._parse_directory()
- self._test_setup_dirs()
+ self._test_setup_dirs()
def _parse_directory(self):
"""pick up the first directory given to us and make sure we know
@@ -160,11 +160,11 @@ class MetaDataGenerator:
self.conf.basedir = os.path.realpath(self.conf.basedir)
self.conf.relative_dir = self.conf.directory
- self.package_dir = os.path.join(self.conf.basedir,
+ self.package_dir = os.path.join(self.conf.basedir,
self.conf.relative_dir)
-
+
if not self.conf.outputdir:
- self.conf.outputdir = os.path.join(self.conf.basedir,
+ self.conf.outputdir = os.path.join(self.conf.basedir,
self.conf.relative_dir)
def _test_setup_dirs(self):
@@ -196,7 +196,7 @@ class MetaDataGenerator:
raise MDError, _('Cannot create/verify %s') % temp_final
if self.conf.deltas:
- temp_delta = os.path.join(self.conf.outputdir,
+ temp_delta = os.path.join(self.conf.outputdir,
self.conf.delta_relative)
if not checkAndMakeDir(temp_delta):
raise MDError, _('Cannot create/verify %s') % temp_delta
@@ -212,7 +212,7 @@ class MetaDataGenerator:
direcs.append('deltadir')
for direc in direcs:
- filepath = os.path.join(self.conf.outputdir, getattr(self.conf,
+ filepath = os.path.join(self.conf.outputdir, getattr(self.conf,
direc))
if os.path.exists(filepath):
if not os.access(filepath, os.W_OK):
@@ -287,9 +287,9 @@ class MetaDataGenerator:
def errorlog(self, thing):
"""subclass this if you want something different...."""
errorprint(thing)
-
+
def checkTimeStamps(self):
- """check the timestamp of our target dir. If it is not newer than
+ """check the timestamp of our target dir. If it is not newer than
the repodata return False, else True"""
if self.conf.checkts:
dn = os.path.join(self.conf.basedir, self.conf.directory)
@@ -301,9 +301,9 @@ class MetaDataGenerator:
self.callback.errorlog(_('cannot get to file: %s') % fn)
if os.path.getctime(fn) > self.conf.mdtimestamp:
return False
-
+
return True
-
+
return False
def trimRpms(self, files):
@@ -346,22 +346,22 @@ class MetaDataGenerator:
def _setup_grabber(self):
if not hasattr(self, '_grabber'):
self._grabber = grabber.URLGrabber()
-
+
return self._grabber
grabber = property(fget = lambda self: self._setup_grabber())
-
-
+
+
def doPkgMetadata(self):
"""all the heavy lifting for the package metadata"""
if self.conf.update:
- self._setup_old_metadata_lookup()
+ self._setup_old_metadata_lookup()
# rpms we're going to be dealing with
if self.conf.pkglist:
packages = self.conf.pkglist
else:
packages = self.getFileList(self.package_dir, '.rpm')
-
+
if not isinstance(packages, MetaSack):
packages = self.trimRpms(packages)
self.pkgcount = len(packages)
@@ -371,8 +371,8 @@ class MetaDataGenerator:
self.closeMetadataDocs()
except (IOError, OSError), e:
raise MDError, _('Cannot access/write repodata files: %s') % e
-
-
+
+
def openMetadataDocs(self):
if self.conf.database_only:
self.setup_sqlite_dbs()
@@ -385,7 +385,7 @@ class MetaDataGenerator:
def _setupPrimary(self):
# setup the primary metadata file
- primaryfilepath = os.path.join(self.conf.outputdir, self.conf.tempdir,
+ primaryfilepath = os.path.join(self.conf.outputdir, self.conf.tempdir,
self.conf.primaryfile)
fo = _gzipOpen(primaryfilepath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
@@ -396,17 +396,17 @@ class MetaDataGenerator:
def _setupFilelists(self):
# setup the filelist file
- filelistpath = os.path.join(self.conf.outputdir, self.conf.tempdir,
+ filelistpath = os.path.join(self.conf.outputdir, self.conf.tempdir,
self.conf.filelistsfile)
fo = _gzipOpen(filelistpath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
fo.write('<filelists xmlns="http://linux.duke.edu/metadata/filelists"' \
' packages="%s">' % self.pkgcount)
return fo
-
+
def _setupOther(self):
# setup the other file
- otherfilepath = os.path.join(self.conf.outputdir, self.conf.tempdir,
+ otherfilepath = os.path.join(self.conf.outputdir, self.conf.tempdir,
self.conf.otherfile)
fo = _gzipOpen(otherfilepath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
@@ -417,13 +417,13 @@ class MetaDataGenerator:
def _setupDelta(self):
# setup the other file
- deltafilepath = os.path.join(self.conf.outputdir, self.conf.tempdir,
+ deltafilepath = os.path.join(self.conf.outputdir, self.conf.tempdir,
self.conf.deltafile)
fo = _gzipOpen(deltafilepath, 'w')
fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
fo.write('<prestodelta>\n')
return fo
-
+
def read_in_package(self, rpmfile, pkgpath=None, reldir=None):
"""rpmfile == relative path to file from self.packge_dir"""
@@ -434,15 +434,15 @@ class MetaDataGenerator:
if not rpmfile.strip():
raise MDError, "Blank filename passed in, skipping"
-
+
if rpmfile.find("://") != -1:
-
+
if not hasattr(self, 'tempdir'):
self.tempdir = tempfile.mkdtemp()
-
+
pkgname = os.path.basename(rpmfile)
baseurl = os.path.dirname(rpmfile)
- reldir = self.tempdir
+ reldir = self.tempdir
dest = os.path.join(self.tempdir, pkgname)
if not self.conf.quiet:
self.callback.log('\nDownloading %s' % rpmfile)
@@ -452,12 +452,12 @@ class MetaDataGenerator:
raise MDError, "Unable to retrieve remote package %s: %s" % (
rpmfile, e)
-
+
else:
rpmfile = '%s/%s' % (pkgpath, rpmfile)
-
+
try:
- po = yumbased.CreateRepoPackage(self.ts, rpmfile,
+ po = yumbased.CreateRepoPackage(self.ts, rpmfile,
sumtype=self.conf.sumtype)
except Errors.MiscError, e:
raise MDError, "Unable to open package: %s" % e
@@ -469,17 +469,17 @@ class MetaDataGenerator:
for r in po.requires_print:
if r.startswith('rpmlib('):
self.rpmlib_reqs[r] = 1
-
+
if po.checksum in (None, ""):
raise MDError, "No Package ID found for package %s, not going to" \
" add it" % po
-
+
return po
def writeMetadataDocs(self, pkglist=[], pkgpath=None):
if not pkglist:
- pkglist = self.conf.pkglist
+ pkglist = self.conf.pkglist
if not pkgpath:
directory = self.conf.directory
@@ -489,7 +489,7 @@ class MetaDataGenerator:
for pkg in pkglist:
self.current_pkg += 1
recycled = False
-
+
# look to see if we can get the data from the old repodata
# if so write this one out that way
if self.conf.update:
@@ -501,21 +501,21 @@ class MetaDataGenerator:
nodes = self.oldData.getNodes(old_pkg)
if nodes is not None:
recycled = True
-
+
# FIXME also open up the delta file
-
+
# otherwise do it individually
if not recycled:
#scan rpm files
- if not pkgpath:
+ if not pkgpath:
reldir = os.path.join(self.conf.basedir, directory)
else:
reldir = pkgpath
-
+
if not isinstance(pkg, YumAvailablePackage):
try:
- po = self.read_in_package(pkg, pkgpath=pkgpath,
+ po = self.read_in_package(pkg, pkgpath=pkgpath,
reldir=reldir)
except MDError, e:
# need to say something here
@@ -525,11 +525,11 @@ class MetaDataGenerator:
if self.conf.deltas:
self._do_delta_rpm_package(po)
self.read_pkgs.append(pkg)
-
+
else:
po = pkg
self.read_pkgs.append(po.localpath)
-
+
if self.conf.database_only:
pass # disabled right now for sanity reasons (mine)
#po.do_sqlite_dump(self.md_sqlite)
@@ -540,9 +540,9 @@ class MetaDataGenerator:
clog_limit=self.conf.changelog_limit))
else:
if self.conf.verbose:
- self.callback.log(_("Using data from old metadata for %s")
+ self.callback.log(_("Using data from old metadata for %s")
% pkg)
- (primarynode, filenode, othernode) = nodes
+ (primarynode, filenode, othernode) = nodes
for node, outfile in ((primarynode, self.primaryfile),
(filenode, self.flfile),
@@ -576,7 +576,7 @@ class MetaDataGenerator:
if not self.conf.quiet:
if self.conf.verbose:
- self.callback.log('%d/%d - %s' % (self.current_pkg,
+ self.callback.log('%d/%d - %s' % (self.current_pkg,
self.pkgcount, pkg))
else:
self.callback.progress(pkg, self.current_pkg, self.pkgcount)
@@ -588,7 +588,7 @@ class MetaDataGenerator:
if not self.conf.quiet:
self.callback.log('')
-
+
# save them up to the tmp locations:
if not self.conf.quiet:
self.callback.log(_('Saving Primary metadata'))
@@ -631,14 +631,14 @@ class MetaDataGenerator:
drpm_pkg_time = time.time()
# duck and cover if the pkg.size is > whatever
if int(pkg.size) > self.conf.max_delta_rpm_size:
- if not self.conf.quiet:
+ if not self.conf.quiet:
self.callback.log("Skipping %s package " \
"that is > max_delta_rpm_size" % pkg)
return
# generate a list of all the potential 'old rpms'
opd = self._get_old_package_dict()
- # for each of our old_package_paths -
+ # for each of our old_package_paths -
# make a drpm from the newest of that pkg
# get list of potential candidates which are likely to match
for d in self.conf.oldpackage_paths:
@@ -648,11 +648,11 @@ class MetaDataGenerator:
for fn in opd[d]:
if os.path.basename(fn).startswith(pkg.name):
pot_cand.append(fn)
-
+
candidates = []
for fn in pot_cand:
try:
- thispo = yumbased.CreateRepoPackage(self.ts, fn,
+ thispo = yumbased.CreateRepoPackage(self.ts, fn,
sumtype=self.conf.sumtype)
except Errors.MiscError, e:
continue
@@ -675,13 +675,13 @@ class MetaDataGenerator:
self.callback.log('created drpm from %s to %s: %s in %0.3f' % (
delta_p, pkg, drpmfn, (time.time() - dt_st)))
if self.conf.profile:
- self.callback.log('total drpm time for %s: %0.3f' % (pkg,
+ self.callback.log('total drpm time for %s: %0.3f' % (pkg,
(time.time() - drpm_pkg_time)))
def _get_old_package_dict(self):
if hasattr(self, '_old_package_dict'):
return self._old_package_dict
-
+
self._old_package_dict = {}
opl = []
for d in self.conf.oldpackage_paths:
@@ -695,7 +695,7 @@ class MetaDataGenerator:
if not self._old_package_dict.has_key(d):
self._old_package_dict[d] = []
self._old_package_dict[d].append(d + '/' + f)
-
+
return self._old_package_dict
def generate_delta_xml(self):
@@ -709,17 +709,17 @@ class MetaDataGenerator:
targets = {}
results = []
for drpm_fn in self.getFileList(self.conf.deltadir, 'drpm'):
- drpm_rel_fn = os.path.normpath(self.conf.delta_relative +
+ drpm_rel_fn = os.path.normpath(self.conf.delta_relative +
'/' + drpm_fn) # this is annoying
- drpm_po = yumbased.CreateRepoPackage(self.ts,
+ drpm_po = yumbased.CreateRepoPackage(self.ts,
self.conf.deltadir + '/' + drpm_fn, sumtype=self.conf.sumtype)
-
- drpm = deltarpms.DeltaRPMPackage(drpm_po, self.conf.outputdir,
+
+ drpm = deltarpms.DeltaRPMPackage(drpm_po, self.conf.outputdir,
drpm_rel_fn)
if not targets.has_key(drpm_po.pkgtup):
targets[drpm_po.pkgtup] = []
targets[drpm_po.pkgtup].append(drpm.xml_dump_metadata())
-
+
for (n, a, e, v, r) in targets.keys():
results.append(""" <newpackage name="%s" epoch="%s" version="%s" release="%s" arch="%s">\n""" % (
n, e, v, r, a))
@@ -731,12 +731,12 @@ class MetaDataGenerator:
return ' '.join(results)
- def addArbitraryMetadata(self, mdfile, mdtype, xml_node, compress=True,
+ def addArbitraryMetadata(self, mdfile, mdtype, xml_node, compress=True,
compress_type='gzip', attribs={}):
"""add random metadata to the repodata dir and repomd.xml
mdfile = complete path to file
mdtype = the metadata type to use
- xml_node = the node of the repomd xml object to append this
+ xml_node = the node of the repomd xml object to append this
data onto
compress = compress the file before including it
"""
@@ -756,23 +756,23 @@ class MetaDataGenerator:
else:
outfn = os.path.join(outdir, sfile)
output = open(outfn, 'w')
-
+
output.write(fo.read())
output.close()
fo.seek(0)
open_csum = misc.checksum(self.conf.sumtype, fo)
fo.close()
-
+
if self.conf.unique_md_filenames:
(csum, outfn) = checksum_and_rename(outfn, self.conf.sumtype)
sfile = os.path.basename(outfn)
else:
if compress:
- csum = misc.checksum(self.conf.sumtype, outfn)
+ csum = misc.checksum(self.conf.sumtype, outfn)
else:
csum = open_csum
-
+
timest = os.stat(outfn)[8]
# add all this garbage into the xml node like:
@@ -793,19 +793,19 @@ class MetaDataGenerator:
# add the random stuff
for (k, v) in attribs.items():
data.newChild(None, k, str(v))
-
-
+
+
def doRepoMetadata(self):
- """wrapper to generate the repomd.xml file that stores the info
+ """wrapper to generate the repomd.xml file that stores the info
on the other files"""
repodoc = libxml2.newDoc("1.0")
reporoot = repodoc.newChild(None, "repomd", None)
repons = reporoot.newNs('http://linux.duke.edu/metadata/repo', None)
reporoot.setNs(repons)
- rpmns = reporoot.newNs("http://linux.duke.edu/metadata/rpm", 'rpm')
+ rpmns = reporoot.newNs("http://linux.duke.edu/metadata/rpm", 'rpm')
repopath = os.path.join(self.conf.outputdir, self.conf.tempdir)
repofilepath = os.path.join(repopath, self.conf.repomdfile)
-
+
revision = reporoot.newChild(None, 'revision', self.conf.revision)
if self.conf.content_tags or self.conf.distro_tags:
tags = reporoot.newChild(None, 'tags', None)
@@ -822,14 +822,14 @@ class MetaDataGenerator:
db_workfiles = [(self.md_sqlite.pri_sqlite_file, 'primary_db'),
(self.md_sqlite.file_sqlite_file, 'filelists_db'),
(self.md_sqlite.other_sqlite_file, 'other_db')]
- dbversion = '10'
+ dbversion = '10'
else:
workfiles = [(self.conf.otherfile, 'other',),
(self.conf.filelistsfile, 'filelists'),
(self.conf.primaryfile, 'primary')]
db_workfiles = []
repoid = 'garbageid'
-
+
if self.conf.deltas:
workfiles.append((self.conf.deltafile, 'prestodelta'))
if self.conf.database:
@@ -842,7 +842,7 @@ class MetaDataGenerator:
for (rpm_file, ftype) in workfiles:
complete_path = os.path.join(repopath, rpm_file)
-
+
zfo = _gzipOpen(complete_path)
# This is misc.checksum() done locally so we can get the size too.
data = misc.Checksums([sumtype])
@@ -856,28 +856,28 @@ class MetaDataGenerator:
db_csums = {}
db_compressed_sums = {}
-
+
if self.conf.database:
if ftype in ['primary', 'filelists', 'other']:
if self.conf.verbose:
- self.callback.log("Starting %s db creation: %s" % (ftype,
+ self.callback.log("Starting %s db creation: %s" % (ftype,
time.ctime()))
-
+
if ftype == 'primary':
rp.getPrimary(complete_path, csum)
-
+
elif ftype == 'filelists':
rp.getFilelists(complete_path, csum)
-
+
elif ftype == 'other':
rp.getOtherdata(complete_path, csum)
-
- if ftype in ['primary', 'filelists', 'other']:
+
+ if ftype in ['primary', 'filelists', 'other']:
tmp_result_name = '%s.xml.gz.sqlite' % ftype
tmp_result_path = os.path.join(repopath, tmp_result_name)
good_name = '%s.sqlite' % ftype
resultpath = os.path.join(repopath, good_name)
-
+
# rename from silly name to not silly name
os.rename(tmp_result_path, resultpath)
compressed_name = '%s.bz2' % good_name
@@ -887,7 +887,7 @@ class MetaDataGenerator:
# compress the files
bzipFile(resultpath, result_compressed)
# csum the compressed file
- db_compressed_sums[ftype] = misc.checksum(sumtype,
+ db_compressed_sums[ftype] = misc.checksum(sumtype,
result_compressed)
# timestamp+size the uncompressed file
un_stat = os.stat(resultpath)
@@ -897,44 +897,44 @@ class MetaDataGenerator:
if self.conf.unique_md_filenames:
csum_compressed_name = '%s-%s.bz2' % (
db_compressed_sums[ftype], good_name)
- csum_result_compressed = os.path.join(repopath,
+ csum_result_compressed = os.path.join(repopath,
csum_compressed_name)
os.rename(result_compressed, csum_result_compressed)
result_compressed = csum_result_compressed
compressed_name = csum_compressed_name
-
+
# timestamp+size the compressed file
db_stat = os.stat(result_compressed)
-
+
# add this data as a section to the repomdxml
db_data_type = '%s_db' % ftype
data = reporoot.newChild(None, 'data', None)
data.newProp('type', db_data_type)
location = data.newChild(None, 'location', None)
-
+
if self.conf.baseurl is not None:
location.newProp('xml:base', self.conf.baseurl)
-
- location.newProp('href', os.path.join(self.conf.finaldir,
+
+ location.newProp('href', os.path.join(self.conf.finaldir,
compressed_name))
- checksum = data.newChild(None, 'checksum',
+ checksum = data.newChild(None, 'checksum',
db_compressed_sums[ftype])
checksum.newProp('type', sumtype)
- db_tstamp = data.newChild(None, 'timestamp',
+ db_tstamp = data.newChild(None, 'timestamp',
str(db_stat.st_mtime))
data.newChild(None, 'size', str(db_stat.st_size))
data.newChild(None, 'open-size', str(un_stat.st_size))
- unchecksum = data.newChild(None, 'open-checksum',
+ unchecksum = data.newChild(None, 'open-checksum',
db_csums[ftype])
unchecksum.newProp('type', sumtype)
- database_version = data.newChild(None, 'database_version',
+ database_version = data.newChild(None, 'database_version',
dbversion)
if self.conf.verbose:
- self.callback.log("Ending %s db creation: %s" % (ftype,
+ self.callback.log("Ending %s db creation: %s" % (ftype,
time.ctime()))
-
-
+
+
data = reporoot.newChild(None, 'data', None)
data.newProp('type', ftype)
@@ -954,33 +954,33 @@ class MetaDataGenerator:
orig_file = os.path.join(repopath, rpm_file)
dest_file = os.path.join(repopath, res_file)
os.rename(orig_file, dest_file)
-
+
else:
res_file = rpm_file
- rpm_file = res_file
-
+ rpm_file = res_file
+
location.newProp('href', os.path.join(self.conf.finaldir, rpm_file))
- if not self.conf.quiet and self.conf.database:
+ if not self.conf.quiet and self.conf.database:
self.callback.log('Sqlite DBs complete')
for (fn, ftype) in db_workfiles:
attribs = {'database_version':dbversion}
- self.addArbitraryMetadata(fn, ftype, reporoot, compress=True,
+ self.addArbitraryMetadata(fn, ftype, reporoot, compress=True,
compress_type='bzip2', attribs=attribs)
try:
os.unlink(fn)
except (IOError, OSError), e:
pass
-
+
if self.conf.groupfile is not None:
self.addArbitraryMetadata(self.conf.groupfile, 'group_gz', reporoot)
- self.addArbitraryMetadata(self.conf.groupfile, 'group', reporoot,
+ self.addArbitraryMetadata(self.conf.groupfile, 'group', reporoot,
compress=False)
-
+
if self.conf.additional_metadata:
for md_type, mdfile in self.conf.additional_metadata.items():
self.addArbitraryMetadata(mdfile, md_type, reporoot)
@@ -990,27 +990,27 @@ class MetaDataGenerator:
# rpmlib = reporoot.newChild(rpmns, 'lib', None)
# for r in self.rpmlib_reqs.keys():
# req = rpmlib.newChild(rpmns, 'requires', r)
-
-
+
+
# save it down
try:
repodoc.saveFormatFileEnc(repofilepath, 'UTF-8', 1)
except:
self.callback.errorlog(
_('Error saving temp file for repomd.xml: %s') % repofilepath)
- raise MDError, 'Could not save temp file: %s' % repofilepath
+ raise MDError, 'Could not save temp file: %s' % repofilepath
del repodoc
def doFinalMove(self):
"""move the just-created repodata from .repodata to repodata
- also make sure to preserve any files we didn't mess with in the
+ also make sure to preserve any files we didn't mess with in the
metadata dir"""
-
- output_final_dir = os.path.join(self.conf.outputdir, self.conf.finaldir)
+
+ output_final_dir = os.path.join(self.conf.outputdir, self.conf.finaldir)
output_old_dir = os.path.join(self.conf.outputdir, self.conf.olddir)
-
+
if os.path.exists(output_final_dir):
try:
os.rename(output_final_dir, output_old_dir)
@@ -1027,7 +1027,7 @@ class MetaDataGenerator:
os.rename(output_old_dir, output_final_dir)
raise MDError, _('Error moving final metadata into place')
- for f in ['primaryfile', 'filelistsfile', 'otherfile', 'repomdfile',
+ for f in ['primaryfile', 'filelistsfile', 'otherfile', 'repomdfile',
'groupfile']:
if getattr(self.conf, f):
fn = os.path.basename(getattr(self.conf, f))
@@ -1051,11 +1051,11 @@ class MetaDataGenerator:
'other.xml.gz','filelists.xml.gz'):
os.remove(oldfile) # kill off the old ones
continue
- if f in ('filelists.sqlite.bz2', 'other.sqlite.bz2',
+ if f in ('filelists.sqlite.bz2', 'other.sqlite.bz2',
'primary.sqlite.bz2'):
os.remove(oldfile)
continue
-
+
if os.path.exists(finalfile):
# Hmph? Just leave it alone, then.
try:
@@ -1077,11 +1077,11 @@ class MetaDataGenerator:
try:
os.rmdir(output_old_dir)
except OSError, e:
- self.errorlog(_('Could not remove old metadata dir: %s')
+ self.errorlog(_('Could not remove old metadata dir: %s')
% self.conf.olddir)
self.errorlog(_('Error was %s') % e)
self.errorlog(_('Please clean up this directory manually.'))
-
+
# write out the read_pkgs_list file with self.read_pkgs
if self.conf.read_pkgs_list:
try:
@@ -1090,7 +1090,7 @@ class MetaDataGenerator:
fo.flush()
fo.close()
except (OSError, IOError), e:
- self.errorlog(_('Could not write out readpkgs list: %s')
+ self.errorlog(_('Could not write out readpkgs list: %s')
% self.conf.read_pkgs_list)
self.errorlog(_('Error was %s') % e)
@@ -1102,9 +1102,9 @@ class MetaDataGenerator:
except sqlite.OperationalError, e:
raise MDError, _('Cannot create sqlite databases: %s.\n'\
'Maybe you need to clean up a .repodata dir?') % e
-
-
-
+
+
+
class SplitMetaDataGenerator(MetaDataGenerator):
"""takes a series of dirs and creates repodata for all of them
most commonly used with -u media:// - if no outputdir is specified
@@ -1112,7 +1112,7 @@ class SplitMetaDataGenerator(MetaDataGenerator):
"""
def __init__(self, config_obj=None, callback=None):
MetaDataGenerator.__init__(self, config_obj=config_obj, callback=None)
-
+
def _getFragmentUrl(self, url, fragment):
import urlparse
urlparse.uses_fragment.append('media')
@@ -1147,7 +1147,7 @@ class SplitMetaDataGenerator(MetaDataGenerator):
if self.conf.update:
self._setup_old_metadata_lookup()
-
+
filematrix = {}
for mydir in self.conf.directories:
if os.path.isabs(mydir):
@@ -1157,7 +1157,7 @@ class SplitMetaDataGenerator(MetaDataGenerator):
thisdir = os.path.realpath(mydir)
else:
thisdir = os.path.join(self.conf.basedir, mydir)
-
+
filematrix[mydir] = self.getFileList(thisdir, '.rpm')
self.trimRpms(filematrix[mydir])
self.pkgcount += len(filematrix[mydir])
@@ -1190,13 +1190,13 @@ class MetaDataSqlite(object):
self.primary_cursor = self.pri_cx.cursor()
self.filelists_cursor = self.file_cx.cursor()
-
+
self.other_cursor = self.other_cx.cursor()
-
+
self.create_primary_db()
self.create_filelists_db()
self.create_other_db()
-
+
def create_primary_db(self):
# make the tables
schema = [
@@ -1218,17 +1218,17 @@ class MetaDataSqlite(object):
"""CREATE INDEX pkgrequires on requires (pkgKey);""",
"""CREATE INDEX providesname ON provides (name);""",
"""CREATE INDEX requiresname ON requires (name);""",
- """CREATE TRIGGER removals AFTER DELETE ON packages
- BEGIN
- DELETE FROM files WHERE pkgKey = old.pkgKey;
- DELETE FROM requires WHERE pkgKey = old.pkgKey;
- DELETE FROM provides WHERE pkgKey = old.pkgKey;
- DELETE FROM conflicts WHERE pkgKey = old.pkgKey;
+ """CREATE TRIGGER removals AFTER DELETE ON packages
+ BEGIN
+ DELETE FROM files WHERE pkgKey = old.pkgKey;
+ DELETE FROM requires WHERE pkgKey = old.pkgKey;
+ DELETE FROM provides WHERE pkgKey = old.pkgKey;
+ DELETE FROM conflicts WHERE pkgKey = old.pkgKey;
DELETE FROM obsoletes WHERE pkgKey = old.pkgKey;
END;""",
"""INSERT into db_info values (%s, 'direct_create');""" % sqlitecachec.DBVERSION,
]
-
+
for cmd in schema:
executeSQL(self.primary_cursor, cmd)
@@ -1242,15 +1242,15 @@ class MetaDataSqlite(object):
"""CREATE INDEX dirnames ON filelist (dirname);""",
"""CREATE INDEX keyfile ON filelist (pkgKey);""",
"""CREATE INDEX pkgId ON packages (pkgId);""",
- """CREATE TRIGGER remove_filelist AFTER DELETE ON packages
- BEGIN
- DELETE FROM filelist WHERE pkgKey = old.pkgKey;
+ """CREATE TRIGGER remove_filelist AFTER DELETE ON packages
+ BEGIN
+ DELETE FROM filelist WHERE pkgKey = old.pkgKey;
END;""",
- """INSERT into db_info values (%s, 'direct_create');""" % sqlitecachec.DBVERSION,
+ """INSERT into db_info values (%s, 'direct_create');""" % sqlitecachec.DBVERSION,
]
for cmd in schema:
executeSQL(self.filelists_cursor, cmd)
-
+
def create_other_db(self):
schema = [
"""PRAGMA synchronous="OFF";""",
@@ -1260,13 +1260,12 @@ class MetaDataSqlite(object):
"""CREATE TABLE packages ( pkgKey INTEGER PRIMARY KEY, pkgId TEXT);""",
"""CREATE INDEX keychange ON changelog (pkgKey);""",
"""CREATE INDEX pkgId ON packages (pkgId);""",
- """CREATE TRIGGER remove_changelogs AFTER DELETE ON packages
- BEGIN
- DELETE FROM changelog WHERE pkgKey = old.pkgKey;
+ """CREATE TRIGGER remove_changelogs AFTER DELETE ON packages
+ BEGIN
+ DELETE FROM changelog WHERE pkgKey = old.pkgKey;
END;""",
- """INSERT into db_info values (%s, 'direct_create');""" % sqlitecachec.DBVERSION,
+ """INSERT into db_info values (%s, 'direct_create');""" % sqlitecachec.DBVERSION,
]
-
+
for cmd in schema:
executeSQL(self.other_cursor, cmd)
-
diff --git a/createrepo/deltarpms.py b/createrepo/deltarpms.py
index d14d3fa..3edcbb5 100644
--- a/createrepo/deltarpms.py
+++ b/createrepo/deltarpms.py
@@ -47,7 +47,7 @@ class DeltaRPMPackage:
del fo
del fd
self._getDRPMInfo(os.path.join(basedir, filename))
-
+
def _stringToNEVR(self, string):
i = string.rfind("-", 0, string.rfind("-")-1)
name = string[:i]
@@ -60,13 +60,13 @@ class DeltaRPMPackage:
length = length * 256
length += ord(val)
return length
-
+
def _getDRPMInfo(self, filename):
d = deltarpm.readDeltaRPM(filename)
self.oldnevrstring = d['old_nevr']
self.oldnevr = self._stringToNEVR(d['old_nevr'])
self.sequence = d['seq']
-
+
def _stringToVersion(self, strng):
i = strng.find(':')
if i != -1:
@@ -89,7 +89,7 @@ class DeltaRPMPackage:
return (epoch, version, release)
def xml_dump_metadata(self):
- """takes an xml doc object and a package metadata entry node, populates a
+ """takes an xml doc object and a package metadata entry node, populates a
package node with the md information"""
(oldname, oldepoch, oldver, oldrel) = self.oldnevr
@@ -120,8 +120,5 @@ def create_drpm(old_pkg, new_pkg, destdir):
if code:
print "Error genDeltaRPM for %s: exitcode was %s - Reported Error: %s" % (old_pkg.name, code, out)
return None
-
- return delta_rpm_path
-
-
+ return delta_rpm_path
diff --git a/createrepo/merge.py b/createrepo/merge.py
index d4b8359..78514a3 100644
--- a/createrepo/merge.py
+++ b/createrepo/merge.py
@@ -70,7 +70,7 @@ class RepoMergeBase:
for repo in repos:
for pkg in repo.sack:
others = self.yumbase.pkgSack.searchNevra(name=pkg.name, arch=pkg.arch)
- # NOTE the above is definitely going to catch other versions which may
+ # NOTE the above is definitely going to catch other versions which may
# be an invalid comparison
if len(others) > 1:
for thatpkg in others:
@@ -95,7 +95,7 @@ class RepoMergeBase:
myrepos = self.yumbase.repos.listEnabled()
self.sort_func(myrepos)
-
+
def write_metadata(self, outputdir=None):
mytempdir = tempfile.mkdtemp()
@@ -105,7 +105,7 @@ class RepoMergeBase:
compsfile.write(self.yumbase.comps.xml())
compsfile.close()
self.mdconf.groupfile=comps_fn
-
+
if self.updateinfo:
ui_fn = mytempdir + '/updateinfo.xml'
uifile = open(ui_fn, 'w')
@@ -114,7 +114,7 @@ class RepoMergeBase:
try: # attempt to grab the updateinfo.xml.gz from the repodata
umd.add(repo)
except yum.Errors.RepoMDError:
- continue
+ continue
umd.xml(fileobj=uifile)
uifile.close()
self.mdconf.additional_metadata['updateinfo'] = ui_fn
diff --git a/createrepo/readMetadata.py b/createrepo/readMetadata.py
index 6711d30..4f13662 100644
--- a/createrepo/readMetadata.py
+++ b/createrepo/readMetadata.py
@@ -42,7 +42,7 @@ class MetadataIndex(object):
otherfile = os.path.join(self.outputdir, o)
else:
basefile = filelistfile = otherfile = ""
-
+
self.files = {'base' : basefile,
'filelist' : filelistfile,
'other' : otherfile}
@@ -95,7 +95,7 @@ class MetadataIndex(object):
mtime = None
size = None
relpath = None
- do_stat = self.opts.get('do_stat', True)
+ do_stat = self.opts.get('do_stat', True)
while node is not None:
if node.type != "element":
node = node.next
@@ -121,7 +121,7 @@ class MetadataIndex(object):
if size is None:
print _("size missing for %s") % relpath
return
- if do_stat:
+ if do_stat:
filepath = os.path.join(self.opts['pkgdir'], relpath)
try:
st = os.stat(filepath)
@@ -205,9 +205,9 @@ class MetadataIndex(object):
if __name__ == "__main__":
cwd = os.getcwd()
- opts = {'verbose':1,
+ opts = {'verbose':1,
'pkgdir': cwd}
-
+
idx = MetadataIndex(cwd, opts)
for fn in idx.basenodes.keys():
a,b,c, = idx.getNodes(fn)
@@ -215,5 +215,3 @@ if __name__ == "__main__":
b.serialize()
c.serialize()
idx.freeNodes(fn)
-
-
diff --git a/createrepo/utils.py b/createrepo/utils.py
index fb23964..3fa077f 100644
--- a/createrepo/utils.py
+++ b/createrepo/utils.py
@@ -53,21 +53,21 @@ class GzipFile(gzip.GzipFile):
def _gzipOpen(filename, mode="rb", compresslevel=9):
return GzipFile(filename, mode, compresslevel)
-
+
def bzipFile(source, dest):
-
+
s_fn = open(source, 'rb')
destination = bz2.BZ2File(dest, 'w', compresslevel=9)
while True:
data = s_fn.read(1024000)
-
+
if not data: break
destination.write(data)
destination.close()
s_fn.close()
-
+
def returnFD(filename):
try:
diff --git a/createrepo/yumbased.py b/createrepo/yumbased.py
index f04f4fb..acb5851 100644
--- a/createrepo/yumbased.py
+++ b/createrepo/yumbased.py
@@ -46,13 +46,13 @@ class CreateRepoPackage(YumLocalPackage):
# not using the cachedir
if not self._cachedir:
self._checksum = misc.checksum(self.checksum_type, self.localpath)
- self._checksums = [(self.checksum_type, self._checksum, 1)]
+ self._checksums = [(self.checksum_type, self._checksum, 1)]
return self._checksum
t = []
if type(self.hdr[rpm.RPMTAG_SIGGPG]) is not types.NoneType:
- t.append("".join(self.hdr[rpm.RPMTAG_SIGGPG]))
+ t.append("".join(self.hdr[rpm.RPMTAG_SIGGPG]))
if type(self.hdr[rpm.RPMTAG_SIGPGP]) is not types.NoneType:
t.append("".join(self.hdr[rpm.RPMTAG_SIGPGP]))
if type(self.hdr[rpm.RPMTAG_HDRID]) is not types.NoneType:
@@ -61,7 +61,7 @@ class CreateRepoPackage(YumLocalPackage):
kcsum = misc.Checksums(checksums=[self.checksum_type])
kcsum.update("".join(t))
key = kcsum.hexdigest()
-
+
csumtag = '%s-%s-%s-%s' % (os.path.basename(self.localpath),
key, self.size, self.filetime)
csumfile = '%s/%s' % (self._cachedir, csumtag)
@@ -70,7 +70,7 @@ class CreateRepoPackage(YumLocalPackage):
csumo = open(csumfile, 'r')
checksum = csumo.readline()
csumo.close()
-
+
else:
checksum = misc.checksum(self.checksum_type, self.localpath)
@@ -84,19 +84,19 @@ class CreateRepoPackage(YumLocalPackage):
os.rename(tmpfilename, csumfile)
except:
pass
-
+
self._checksum = checksum
self._checksums = [(self.checksum_type, checksum, 1)]
return self._checksum
-
+
# sqlite-direct dump code below here :-/
def _sqlite_null(self, item):
if not item:
return None
return item
-
+
def do_primary_sqlite_dump(self, cur):
"""insert primary data in place, this assumes the tables exist"""
if self.crp_reldir and self.localpath.startswith(self.crp_reldir):
@@ -106,38 +106,38 @@ class CreateRepoPackage(YumLocalPackage):
relpath = self.localpath
p = (self.crp_packagenumber, self.checksum, self.name, self.arch,
- self.version, self.epoch, self.release, self.summary.strip(),
- self.description.strip(), self._sqlite_null(self.url), self.filetime,
- self.buildtime, self._sqlite_null(self.license),
- self._sqlite_null(self.vendor), self._sqlite_null(self.group),
- self._sqlite_null(self.buildhost), self._sqlite_null(self.sourcerpm),
- self.hdrstart, self.hdrend, self._sqlite_null(self.packager),
- self.packagesize, self.size, self.archivesize, relpath,
+ self.version, self.epoch, self.release, self.summary.strip(),
+ self.description.strip(), self._sqlite_null(self.url), self.filetime,
+ self.buildtime, self._sqlite_null(self.license),
+ self._sqlite_null(self.vendor), self._sqlite_null(self.group),
+ self._sqlite_null(self.buildhost), self._sqlite_null(self.sourcerpm),
+ self.hdrstart, self.hdrend, self._sqlite_null(self.packager),
+ self.packagesize, self.size, self.archivesize, relpath,
self.crp_baseurl, self.checksum_type)
-
+
q = """insert into packages values (?, ?, ?, ?, ?, ?,
- ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?,
+ ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?,
?, ?, ?)"""
-
- # write out all of do_primary_sqlite as an executescript - work on the
+
+ # write out all of do_primary_sqlite as an executescript - work on the
# quoting for pretty much any contingency - take from sqlutils.py
- #
+ #
# e
#p = None
#q = """insert into packages values (%s, %s, %s, %s, """
-
+
cur.execute(q, p)
- # provides, obsoletes, conflicts
+ # provides, obsoletes, conflicts
for pco in ('obsoletes', 'provides', 'conflicts'):
thispco = []
for (name, flag, (epoch, ver, rel)) in getattr(self, pco):
thispco.append((name, flag, epoch, ver, rel, self.crp_packagenumber))
- q = "insert into %s values (?, ?, ?, ?, ?, ?)" % pco
+ q = "insert into %s values (?, ?, ?, ?, ?, ?)" % pco
cur.executemany(q, thispco)
- # requires
+ # requires
reqs = []
for (name, flag, (epoch, ver, rel), pre) in self._requires_with_pre():
if name.startswith('rpmlib('):
@@ -146,18 +146,18 @@ class CreateRepoPackage(YumLocalPackage):
if pre == 1:
pre_bool = 'TRUE'
reqs.append((name, flag, epoch, ver,rel, self.crp_packagenumber, pre_bool))
- q = "insert into requires values (?, ?, ?, ?, ?, ?, ?)"
+ q = "insert into requires values (?, ?, ?, ?, ?, ?, ?)"
cur.executemany(q, reqs)
# files
p = []
for f in self._return_primary_files():
p.append((f,))
-
+
if p:
q = "insert into files values (?, 'file', %s)" % self.crp_packagenumber
cur.executemany(q, p)
-
+
# dirs
p = []
for f in self._return_primary_dirs():
@@ -165,8 +165,8 @@ class CreateRepoPackage(YumLocalPackage):
if p:
q = "insert into files values (?, 'dir', %s)" % self.crp_packagenumber
cur.executemany(q, p)
-
-
+
+
# ghosts
p = []
for f in self._return_primary_files(list_of_files = self.returnFileEntries('ghost')):
@@ -174,17 +174,17 @@ class CreateRepoPackage(YumLocalPackage):
if p:
q = "insert into files values (?, 'ghost', %s)" % self.crp_packagenumber
cur.executemany(q, p)
-
-
+
+
def do_filelists_sqlite_dump(self, cur):
"""inserts filelists data in place, this assumes the tables exist"""
# insert packagenumber + checksum into 'packages' table
q = 'insert into packages values (?, ?)'
p = (self.crp_packagenumber, self.checksum)
-
+
cur.execute(q, p)
-
+
# break up filelists and encode them
dirs = {}
for (filetype, files) in [('file', self.filelist), ('dir', self.dirlist),
@@ -199,27 +199,27 @@ class CreateRepoPackage(YumLocalPackage):
# insert packagenumber|dir|files|types into files table
p = []
for (dirname,direc) in dirs.items():
- p.append((self.crp_packagenumber, dirname,
+ p.append((self.crp_packagenumber, dirname,
utils.encodefilenamelist(direc['files']),
utils.encodefiletypelist(direc['types'])))
if p:
q = 'insert into filelist values (?, ?, ?, ?)'
cur.executemany(q, p)
-
-
+
+
def do_other_sqlite_dump(self, cur):
- """inserts changelog data in place, this assumes the tables exist"""
+ """inserts changelog data in place, this assumes the tables exist"""
# insert packagenumber + checksum into 'packages' table
q = 'insert into packages values (?, ?)'
p = (self.crp_packagenumber, self.checksum)
-
+
cur.execute(q, p)
if self.changelog:
q = 'insert into changelog ("pkgKey", "date", "author", "changelog") values (%s, ?, ?, ?)' % self.crp_packagenumber
cur.executemany(q, self.changelog)
-
+
def do_sqlite_dump(self, md_sqlite):
"""write the metadata out to the sqlite dbs"""
self.do_primary_sqlite_dump(md_sqlite.primary_cursor)
@@ -228,8 +228,3 @@ class CreateRepoPackage(YumLocalPackage):
md_sqlite.file_cx.commit()
self.do_other_sqlite_dump(md_sqlite.other_cursor)
md_sqlite.other_cx.commit()
-
-
-
-
-
diff --git a/dmd.py b/dmd.py
index fdce45c..684bac6 100755
--- a/dmd.py
+++ b/dmd.py
@@ -89,7 +89,7 @@ class MdType(object):
additions = deltatree.find(self.deltasns + 'additions').getchildren()
removals = deltatree.find(self.deltasns + 'removals').getchildren()
-
+
for pkg in additions:
pkgid = self.get_pkg_id(pkg)
if oldpkgshash.has_key(pkgid):
@@ -106,7 +106,7 @@ class MdType(object):
oldcount = int(oldroot.get('packages'))
newcount = oldcount + len(additions) - len(removals)
- oldroot.set('packages', str(newcount))
+ oldroot.set('packages', str(newcount))
print tostring(oldtree, pretty_print=True)
diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index 7877ba9..4ab4e9a 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
@@ -16,7 +16,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Copyright 2004 Duke University
-# Portions Copyright 2009 Red Hat, Inc -
+# Portions Copyright 2009 Red Hat, Inc -
# written by seth vidal skvidal at fedoraproject.org
import os
@@ -36,7 +36,7 @@ def parse_args(args, conf):
Parse the command line args. return a config object.
Sanity check all the things being passed in.
"""
-
+
_def = yum.misc._default_checksums[0]
_avail = yum.misc._available_checksums
parser = OptionParser(version = "createrepo %s" % createrepo.__version__)
@@ -67,21 +67,21 @@ def parse_args(args, conf):
parser.add_option("-d", "--database", default=False, action="store_true",
help="create sqlite database files")
# temporarily disabled
- #parser.add_option("--database-only", default=False, action="store_true",
+ #parser.add_option("--database-only", default=False, action="store_true",
# dest='database_only',
# help="Only make the sqlite databases - does not work with --update, yet")
parser.add_option("--update", default=False, action="store_true",
help="use the existing repodata to speed up creation of new")
parser.add_option("--update-md-path", default=None, dest='update_md_path',
help="use the existing repodata for --update from this path")
- parser.add_option("--skip-stat", dest='skip_stat', default=False,
+ parser.add_option("--skip-stat", dest='skip_stat', default=False,
help="skip the stat() call on a --update, assumes if the file" \
"name is the same then the file is still the same " \
"(only use this if you're fairly trusting or gullible)",
action="store_true")
parser.add_option("--split", default=False, action="store_true",
help="generate split media")
- parser.add_option("-i", "--pkglist", default=None,
+ parser.add_option("-i", "--pkglist", default=None,
help="use only the files listed in this file from the " \
"directory specified")
parser.add_option("-n", "--includepkg", default=[], action="append",
@@ -100,35 +100,35 @@ def parse_args(args, conf):
default=False, action="store_true")
parser.add_option("--distro", default=[], action="append",
help="distro tag and optional cpeid: --distro" "'cpeid,textname'")
- parser.add_option("--content", default=[], dest='content_tags',
+ parser.add_option("--content", default=[], dest='content_tags',
action="append", help="tags for the content in the repository")
parser.add_option("--revision", default=None,
help="user-specified revision for this repository")
parser.add_option("--deltas", default=False, action="store_true",
help="create delta rpms and metadata")
- parser.add_option("--oldpackagedirs", default=[], dest="oldpackage_paths",
+ parser.add_option("--oldpackagedirs", default=[], dest="oldpackage_paths",
action="append", help="paths to look for older pkgs to delta against")
parser.add_option("--num-deltas", default=1, dest='num_deltas', type='int',
help="the number of older versions to make deltas against")
parser.add_option("--read-pkgs-list", default=None, dest='read_pkgs_list',
help="output the paths to the pkgs actually read useful with --update")
- parser.add_option("--max-delta-rpm-size", default=100000000,
- dest='max_delta_rpm_size', type='int',
+ parser.add_option("--max-delta-rpm-size", default=100000000,
+ dest='max_delta_rpm_size', type='int',
help="max size of an rpm that to run deltarpm against (in bytes)")
(opts, argsleft) = parser.parse_args(args)
if len(argsleft) > 1 and not opts.split:
errorprint(_('Error: Only one directory allowed per run.'))
parser.print_usage()
sys.exit(1)
-
+
elif len(argsleft) == 0:
errorprint(_('Error: Must specify a directory to index.'))
parser.print_usage()
sys.exit(1)
-
+
else:
directories = argsleft
-
+
if opts.sumtype == 'sha1':
errorprint(_('Warning: It is more compatible to use sha instead of sha1'))
@@ -143,7 +143,7 @@ def parse_args(args, conf):
if opts.simple_md_filenames:
opts.unique_md_filenames = False
-
+
# let's switch over to using the conf object - put all the opts into it
for opt in parser.option_list:
if opt.dest is None: # this is fairly silly
@@ -152,7 +152,7 @@ def parse_args(args, conf):
if getattr(opts, opt.dest) is None:
continue
setattr(conf, opt.dest, getattr(opts, opt.dest))
-
+
directory = directories[0]
conf.directory = directory
conf.directories = directories
@@ -175,15 +175,15 @@ def parse_args(args, conf):
continue
lst.append(line)
pfo.close()
-
+
conf.pkglist = lst
if conf.includepkg:
conf.pkglist.extend(conf.includepkg)
-
+
if conf.changelog_limit: # make sure it is an int, not a string
conf.changelog_limit = int(conf.changelog_limit)
-
+
return conf
class MDCallBack(object):
@@ -191,18 +191,18 @@ class MDCallBack(object):
def errorlog(self, thing):
"""error log output"""
print >> sys.stderr, thing
-
+
def log(self, thing):
"""log output"""
print thing
-
+
def progress(self, item, current, total):
"""progress bar"""
beg = "%*d/%d - " % (len(str(total)), current, total)
left = 80 - len(beg)
sys.stdout.write("\r%s%-*.*s" % (beg, left, left, item))
sys.stdout.flush()
-
+
def main(args):
"""createrepo from cli main flow"""
start_st = time.time()
@@ -211,13 +211,13 @@ def main(args):
if conf.profile:
print ('start time: %0.3f' % (time.time() - start_st))
- mid_st = time.time()
+ mid_st = time.time()
try:
if conf.split:
- mdgen = createrepo.SplitMetaDataGenerator(config_obj=conf,
+ mdgen = createrepo.SplitMetaDataGenerator(config_obj=conf,
callback=MDCallBack())
else:
- mdgen = createrepo.MetaDataGenerator(config_obj=conf,
+ mdgen = createrepo.MetaDataGenerator(config_obj=conf,
callback=MDCallBack())
if mdgen.checkTimeStamps():
if mdgen.conf.verbose:
@@ -226,7 +226,7 @@ def main(args):
if conf.profile:
print ('mid time: %0.3f' % (time.time() - mid_st))
-
+
pm_st = time.time()
mdgen.doPkgMetadata()
if conf.profile:
@@ -239,8 +239,8 @@ def main(args):
mdgen.doFinalMove()
if conf.profile:
print ('fm time: %0.3f' % (time.time() - fm_st))
-
-
+
+
except MDError, errormsg:
errorprint(_('%s') % errormsg)
sys.exit(1)
diff --git a/mergerepo.py b/mergerepo.py
index 6b0a7ff..80ab504 100755
--- a/mergerepo.py
+++ b/mergerepo.py
@@ -30,9 +30,9 @@ def parse_args(args):
"""Parse our opts/args"""
usage = """
mergerepo: take 2 or more repositories and merge their metadata into a new repo
-
+
mergerepo --repo=url --repo=url --outputdir=/some/path"""
-
+
parser = OptionParser(version = "mergerepo 0.1", usage=usage)
# query options
parser.add_option("-r", "--repo", dest='repos', default=[], action="append",
@@ -40,7 +40,7 @@ def parse_args(args):
parser.add_option("-a", "--archlist", default=[], action="append",
help="Defaults to all arches - otherwise specify arches")
parser.add_option("-d", "--database", default=False, action="store_true")
- parser.add_option("-o", "--outputdir", default=None,
+ parser.add_option("-o", "--outputdir", default=None,
help="Location to create the repository")
parser.add_option("", "--nogroups", default=False, action="store_true",
help="Do not merge group(comps) metadata")
@@ -52,16 +52,16 @@ def parse_args(args):
parser.print_usage()
sys.exit(1)
- # sort out the comma-separated crap we somehow inherited.
+ # sort out the comma-separated crap we somehow inherited.
archlist = []
for archs in opts.archlist:
for arch in archs.split(','):
archlist.append(arch)
opts.archlist = archlist
-
+
return opts
-
+
def main(args):
"""main"""
opts = parse_args(args)
diff --git a/modifyrepo.py b/modifyrepo.py
index bbf938d..1fd9ea4 100755
--- a/modifyrepo.py
+++ b/modifyrepo.py
@@ -93,7 +93,7 @@ class RepoMetadata:
csum, destmd = checksum_and_rename(destmd, self.checksum_type)
base_destmd = os.path.basename(destmd)
-
+
## Remove any stale metadata
for elem in self.doc.getElementsByTagName('data'):
@@ -109,21 +109,21 @@ class RepoMetadata:
self._insert_element(data, 'location',
attrs={ 'href' : 'repodata/' + base_destmd })
data.appendChild(self.doc.createTextNode("\n "))
- self._insert_element(data, 'checksum',
- attrs={ 'type' : self.checksum_type },
+ self._insert_element(data, 'checksum',
+ attrs={ 'type' : self.checksum_type },
text=csum)
data.appendChild(self.doc.createTextNode("\n "))
self._insert_element(data, 'timestamp',
text=str(os.stat(destmd).st_mtime))
data.appendChild(self.doc.createTextNode("\n "))
- self._insert_element(data, 'open-checksum',
+ self._insert_element(data, 'open-checksum',
attrs={ 'type' : self.checksum_type },
text=open_csum)
data.appendChild(self.doc.createTextNode("\n "))
root.appendChild(self.doc.createTextNode("\n"))
- print " type =", mdtype
+ print " type =", mdtype
print " location =", 'repodata/' + mdname
print " checksum =", csum
print " timestamp =", str(os.stat(destmd).st_mtime)
@@ -151,4 +151,3 @@ if __name__ == '__main__':
except MDError, e:
print "Could not add metadata from file %s: %s" % (sys.argv[1], str(e))
sys.exit(1)
-
More information about the Rpm-metadata
mailing list