[Rpm-metadata] Zero epoch vs no epoch (patch)

Panu Matilainen pmatilai at laiskiainen.org
Sun Apr 30 11:13:32 UTC 2006


On Sat, 29 Apr 2006, Panu Matilainen wrote:

> On Sat, 29 Apr 2006, Panu Matilainen wrote:
>> Attached quick hack of a patch adds a switch to turn off adding those 
>> artificial zero epochs, using this as necessary this should be enough to 
>> allow using repodata with full rpm 3.0.x - 4.4.x range.
>
> Duh, and now with the actual patch...

And now with the correct patch, DOH. Too many variants of various patches 
lying around I guess.

 	- Panu -
-------------- next part --------------
--- createrepo-0.4.4/genpkgmetadata.py.noepoch	2006-04-29 20:59:04.000000000 +0300
+++ createrepo-0.4.4/genpkgmetadata.py	2006-04-29 21:02:01.000000000 +0300
@@ -49,6 +49,7 @@
      -o, --outputdir <dir> = optional directory to output to
      -x, --exclude = files globs to exclude, can be specified multiple times
      -q, --quiet = run quietly
+     -n, --noepoch = don't treat non-existent epochs as zero
      -g, --groupfile <filename> to point to for group information (precreated)
                     (<filename> relative to directory-of-packages)
      -v, --verbose = run verbosely
@@ -364,6 +365,7 @@
     cmds['baseurl'] = None
     cmds['groupfile'] = None
     cmds['sumtype'] = 'sha'
+    cmds['noepoch'] = False
     cmds['pretty'] = 0
 #    cmds['updategroupsonly'] = 0
     cmds['cachedir'] = None
@@ -375,11 +377,11 @@
     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 +445,8 @@
                 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)
--- createrepo-0.4.4/dumpMetadata.py.noepoch	2006-04-29 20:53:45.000000000 +0300
+++ createrepo-0.4.4/dumpMetadata.py	2006-04-29 21:32:37.000000000 +0300
@@ -225,6 +225,10 @@
             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 @@
         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 @@
         
     def epoch(self):
         if self.hdr['epoch'] is None:
-            return 0
+            return self.noepoch
         else:
             return self.tagByName('epoch')
             
@@ -592,7 +596,8 @@
     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 @@
                     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 @@
                 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 @@
     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 @@
     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()


More information about the Rpm-metadata mailing list