Re: Zero epoch vs no epoch (patch)

Panu Matilainen <[email protected]>
Newsgroups gmane.linux.rpm.metadata
Message-ID <[email protected]>
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 -

_______________________________________________
Rpm-metadata mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/rpm-metadata
createrepo-0.4.4-noepoch.patch (text/plain, 5.2 KB)
--- 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()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.