From: Seth Vidal Date: Fri, 9 Jun 2006 13:49:44 +0000 (+0000) Subject: include Panu's patch to support --noepoch for use with old versions of rpm X-Git-Tag: upstream/0.9.9~245 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3002ae0952ea1c7839c4a626058235fcd8491d74;p=tools%2Fcreaterepo.git include Panu's patch to support --noepoch for use with old versions of rpm --- diff --git a/dumpMetadata.py b/dumpMetadata.py index 0d5db57..04272ce 100644 --- a/dumpMetadata.py +++ b/dumpMetadata.py @@ -225,6 +225,10 @@ class RpmMetaData: raise MDError, "Error Stat'ing file %s %s" % (basedir, filename) self.options = options self.localurl = options['baseurl'] + if options['noepoch']: + self.noepoch = "" + else: + self.noepoch = 0 self.relativepath = filename fd = returnFD(os.path.join(basedir, filename)) self.hdr = returnHdr(ts, fd) @@ -323,7 +327,7 @@ class RpmMetaData: if i != -1: epoch = strng[:i] else: - epoch = '0' + epoch = self.noepoch j = strng.find('-') if j != -1: if strng[i + 1:j] == '': @@ -438,7 +442,7 @@ class RpmMetaData: def epoch(self): if self.hdr['epoch'] is None: - return 0 + return self.noepoch else: return self.tagByName('epoch') @@ -592,7 +596,8 @@ def generateXML(doc, node, formatns, rpmObj, sumtype): pkgNode.newChild(None, 'name', rpmObj.tagByName('name')) pkgNode.newChild(None, 'arch', rpmObj.arch()) version = pkgNode.newChild(None, 'version', None) - version.newProp('epoch', str(rpmObj.epoch())) + if str(rpmObj.epoch()): + version.newProp('epoch', str(rpmObj.epoch())) version.newProp('ver', str(rpmObj.tagByName('version'))) version.newProp('rel', str(rpmObj.tagByName('release'))) csum = pkgNode.newChild(None, 'checksum', rpmObj.pkgid) @@ -643,7 +648,7 @@ def generateXML(doc, node, formatns, rpmObj, sumtype): if flags == 12: arg = 'GE' entry.newProp('flags', arg) # if we've got a flag we've got a version, I hope :) - if e: + if str(e): entry.newProp('epoch', str(e)) if v: entry.newProp('ver', str(v)) @@ -664,7 +669,7 @@ def generateXML(doc, node, formatns, rpmObj, sumtype): if flags == 12: arg = 'GE' entry.newProp('flags', arg) # if we've got a flag we've got a version, I hope :) - if e: + if str(e): entry.newProp('epoch', str(e)) if v: entry.newProp('ver', str(v)) @@ -696,7 +701,8 @@ def fileListXML(doc, node, rpmObj): pkg.newProp('name', rpmObj.tagByName('name')) pkg.newProp('arch', rpmObj.arch()) version = pkg.newChild(None, 'version', None) - version.newProp('epoch', str(rpmObj.epoch())) + if str(rpmObj.epoch()): + version.newProp('epoch', str(rpmObj.epoch())) version.newProp('ver', str(rpmObj.tagByName('version'))) version.newProp('rel', str(rpmObj.tagByName('release'))) for file in rpmObj.filenames: @@ -721,7 +727,8 @@ def otherXML(doc, node, rpmObj): pkg.newProp('name', rpmObj.tagByName('name')) pkg.newProp('arch', rpmObj.arch()) version = pkg.newChild(None, 'version', None) - version.newProp('epoch', str(rpmObj.epoch())) + if str(rpmObj.epoch()): + version.newProp('epoch', str(rpmObj.epoch())) version.newProp('ver', str(rpmObj.tagByName('version'))) version.newProp('rel', str(rpmObj.tagByName('release'))) clogs = rpmObj.changelogLists() diff --git a/genpkgmetadata.py b/genpkgmetadata.py index 58d949b..d8c7455 100755 --- a/genpkgmetadata.py +++ b/genpkgmetadata.py @@ -49,6 +49,9 @@ def usage(retval=1): -o, --outputdir = optional directory to output to -x, --exclude = files globs to exclude, can be specified multiple times -q, --quiet = run quietly + -n, --noepoch = don't add zero epochs for non-existent epochs + (incompatible with yum and smart but required for + systems with rpm < 4.2.1) -g, --groupfile to point to for group information (precreated) ( relative to directory-of-packages) -v, --verbose = run verbosely @@ -364,6 +367,7 @@ def parseArgs(args): cmds['baseurl'] = None cmds['groupfile'] = None cmds['sumtype'] = 'sha' + cmds['noepoch'] = False cmds['pretty'] = 0 # cmds['updategroupsonly'] = 0 cmds['cachedir'] = None @@ -375,11 +379,11 @@ def parseArgs(args): cmds['dir-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*'] try: - gopts, argsleft = getopt.getopt(args, 'phqVvg:s:x:u:c:U:o:', ['help', 'exclude=', + gopts, argsleft = getopt.getopt(args, 'phqVvng:s:x:u:c:U:o:', ['help', 'exclude=', 'quiet', 'verbose', 'cachedir=', 'basedir=', 'baseurl=', 'groupfile=', 'checksum=', 'version', 'pretty', 'split', 'outputdir=', - 'update-info-location=']) + 'update-info-location=', 'noepoch']) except getopt.error, e: errorprint(_('Options Error: %s.') % e) usage() @@ -443,6 +447,8 @@ def parseArgs(args): cmds['basedir'] = a elif arg in ['-o','--outputdir']: cmds['outputdir'] = a + elif arg in ['-n', '--noepoch']: + cmds['noepoch'] = True except ValueError, e: errorprint(_('Options Error: %s') % e)