[Rpm-metadata] 6 commits - createrepo/__init__.py createrepo/yumbased.py genpkgmetadata.py

James Antill james at osuosl.org
Tue Nov 6 21:45:12 UTC 2012


 createrepo/__init__.py |   17 +++++++++++++++--
 createrepo/yumbased.py |    8 ++++++++
 genpkgmetadata.py      |    8 +++++++-
 3 files changed, 30 insertions(+), 3 deletions(-)

New commits:
commit 7831e49bf8377829066c8b65218e89d72c5ff446
Author: James Antill <james at and.org>
Date:   Tue Nov 6 16:44:47 2012 -0500

    float => int on st_mtime before str, stupid python API.

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index 25b5565..7e75789 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
@@ -897,7 +897,7 @@ class MetaDataGenerator:
             thisdata.openchecksum  = (self.conf.sumtype, open_csum)
         
         thisdata.size = str(os.stat(outfn).st_size)
-        thisdata.timestamp = str(os.stat(outfn).st_mtime)
+        thisdata.timestamp = str(int(os.stat(outfn).st_mtime))
         for (k, v) in attribs.items():
             setattr(thisdata, k, str(v))
         
@@ -1028,7 +1028,7 @@ class MetaDataGenerator:
                     data.location = (self.conf.baseurl, 
                               os.path.join(self.conf.finaldir, compressed_name))
                     data.checksum = (sumtype, db_compressed_sums[ftype])
-                    data.timestamp = str(db_stat.st_mtime)
+                    data.timestamp = str(int(db_stat.st_mtime))
                     data.size = str(db_stat.st_size)
                     data.opensize = str(un_stat.st_size)
                     data.openchecksum = (sumtype, db_csums[ftype])
commit 9361bbef7362785e47a08e8700dd52a52948c69c
Merge: b38e0ad 248a834
Author: James Antill <james at and.org>
Date:   Mon Oct 22 16:33:25 2012 -0400

    Merge branch 'master' of ssh://yum.baseurl.org/srv/projects/createrepo/git/createrepo
    
    * 'master' of ssh://yum.baseurl.org/srv/projects/createrepo/git/createrepo:
      modifyrepo: use available compression only.  BZ 865845.

commit b38e0ade29d3bcb621f4e271a2169f02217dae89
Author: James Antill <james at and.org>
Date:   Thu Oct 4 17:09:46 2012 -0400

    Manually set the permmissions for tempfile created cachefiles. BZ 833350.

diff --git a/createrepo/yumbased.py b/createrepo/yumbased.py
index ac06196..f87ac6d 100644
--- a/createrepo/yumbased.py
+++ b/createrepo/yumbased.py
@@ -16,6 +16,11 @@
 
 
 import os
+def _get_umask():
+   oumask = os.umask(0)
+   os.umask(oumask)
+   return oumask
+_b4rpm_oumask = _get_umask()
 import rpm
 import types
 
@@ -86,6 +91,9 @@ class CreateRepoPackage(YumLocalPackage):
                 csumo = os.fdopen(csumo, 'w', -1)
                 csumo.write(checksum)
                 csumo.close()
+                #  tempfile forces 002 ... we want to undo that, so that users
+                # can share the cache. BZ 833350.
+                os.chmod(tmpfilename, 0666 ^ _b4rpm_oumask)
                 os.rename(tmpfilename, csumfile)
             except:
                 pass
commit 934b847107f05b06c1ca2d269e5a96ad3c1c2f53
Author: James Antill <james at and.org>
Date:   Fri Sep 14 17:30:37 2012 -0400

    Setup a default for workers based on nice.

diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index 9bf8c8d..c46e441 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
@@ -37,6 +37,12 @@ def parse_args(args, conf):
        Sanity check all the things being passed in.
     """
 
+    def_workers = os.nice(0)
+    if def_workers > 0:
+        def_workers = 1 # We are niced, so just use a single worker.
+    else:
+        def_workers = 0 # zoooom....
+
     _def   = yum.misc._default_checksums[0]
     _avail = yum.misc._available_checksums
     parser = OptionParser(version = "createrepo %s" % createrepo.__version__)
@@ -121,7 +127,7 @@ def parse_args(args, conf):
     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)")
-    parser.add_option("--workers", default=1,
+    parser.add_option("--workers", default=def_workers,
         dest='workers', type='int',
         help="number of workers to spawn to read rpms")
     parser.add_option("--xz", default=False,
commit 151a31113f7fb37c4c8ba0ecba46c30da8d70840
Merge: 079d4c3 71cd4c4
Author: James Antill <james at and.org>
Date:   Thu Sep 13 15:51:06 2012 -0400

    Merge branch 'master' of ssh://yum.baseurl.org/srv/projects/createrepo/git/createrepo
    
    * 'master' of ssh://yum.baseurl.org/srv/projects/createrepo/git/createrepo:
      Fix the deadlock issue.  BZ 856363

commit 079d4c38333a10321a28ef930c3774d0b7602e7d
Author: James Antill <james at and.org>
Date:   Mon Sep 10 15:39:01 2012 -0400

    Filter rpm files to pkglist, when in split media mode. BZ 646644

diff --git a/createrepo/__init__.py b/createrepo/__init__.py
index d2e2039..6495e85 100644
--- a/createrepo/__init__.py
+++ b/createrepo/__init__.py
@@ -1307,6 +1307,19 @@ class SplitMetaDataGenerator(MetaDataGenerator):
                     thisdir = os.path.join(self.conf.basedir, mydir)
 
             filematrix[mydir] = self.getFileList(thisdir, '.rpm')
+
+            #  pkglist is a bit different for split media, as we have to know
+            # which dir. it belongs to. So we walk the dir. and then filter.
+            # We could be faster by not walking the dir. ... but meh.
+            if self.conf.pkglist:
+                pkglist = set(self.conf.pkglist)
+                pkgs = []
+                for fname in filematrix[mydir]:
+                    if fname not in pkglist:
+                        continue
+                    pkgs.append(fname)
+                filematrix[mydir] = pkgs
+
             self.trimRpms(filematrix[mydir])
             self.pkgcount += len(filematrix[mydir])
 


More information about the Rpm-metadata mailing list