[PATCH] Disable drpms for local repositories. BZ 1007097

Zdenek Pavlas zpavlas at redhat.com
Mon Sep 16 11:43:59 UTC 2013


- Change the "off" value from 1% to 0%
- Default is 0 for file:// repos, [main] value otherwise.
- Update docs.
---
 docs/yum.conf.5 |  4 ++--
 yum/config.py   |  4 ++--
 yum/drpm.py     | 13 +++++++++++--
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/docs/yum.conf.5 b/docs/yum.conf.5
index 90da81f..cb7ab14 100644
--- a/docs/yum.conf.5
+++ b/docs/yum.conf.5
@@ -401,9 +401,10 @@ slower).
 
 .IP
 \fBdeltarpm_percentage\fR
-
 When the relative size of delta vs pkg is larger than this, delta is not used.
 Default value is 75 (Deltas must be at least 25% smaller than the pkg).
+Use `0' to turn off delta rpm processing. Local repositories (with file://
+baseurl) have delta rpms turned off by default.
 
 .IP
 \fBsslcacert \fR
@@ -1018,7 +1019,6 @@ repository.
 
 .IP
 \fBdeltarpm_percentage\fR
-
 Overrides the \fBdeltarpm_percentage\fR option from the [main] section
 for this repository.
 
diff --git a/yum/config.py b/yum/config.py
index 3bc5bd1..52e539d 100644
--- a/yum/config.py
+++ b/yum/config.py
@@ -802,7 +802,7 @@ class YumConf(StartupConf):
             mapper  = {'4': 'ipv4', '6': 'ipv6'})
     max_connections = IntOption(0, range_min=0)
     deltarpm = IntOption(2, range_min=-16, range_max=128)
-    deltarpm_percentage = IntOption(75, range_min=1, range_max=100)
+    deltarpm_percentage = IntOption(75, range_min=0, range_max=100)
 
     http_caching = SelectionOption('all', ('none', 'packages', 'all'))
     metadata_expire = SecondsOption(60 * 60 * 6) # Time in seconds (6h).
@@ -971,7 +971,7 @@ class RepoConf(BaseConfig):
     throttle = Inherit(YumConf.throttle)
     timeout = Inherit(YumConf.timeout)
     ip_resolve = Inherit(YumConf.ip_resolve)
-    deltarpm_percentage = Inherit(YumConf.deltarpm_percentage)
+    deltarpm_percentage = IntOption(None, range_min=0, range_max=100)
 
     http_caching = Inherit(YumConf.http_caching)
     metadata_expire = Inherit(YumConf.metadata_expire)
diff --git a/yum/drpm.py b/yum/drpm.py
index 2e23241..d00cf1c 100644
--- a/yum/drpm.py
+++ b/yum/drpm.py
@@ -128,7 +128,13 @@ class DeltaInfo:
         pinfo = {}
         reposize = {}
         for index, po in enumerate(pkgs):
-            if po.repo.deltarpm_percentage == 1:
+            perc = po.repo.deltarpm_percentage
+            if perc is None:
+                urls = po.repo.urls
+                perc = ayum.conf.deltarpm_percentage
+                if len(urls) == 1 and urls[0].startswith('file:'):
+                    perc = 0 # for local repos, default to off.
+            if perc == 0:
                 continue # Allow people to turn off a repo. (meh)
             if po.state == TS_UPDATE: pass
             elif po.name in ayum.conf.installonlypkgs: pass
@@ -193,7 +199,10 @@ class DeltaInfo:
                 index = pinfo_repo.get(new)
                 if index is not None:
                     po = pkgs[index]
-                    best = po.size * (repo.deltarpm_percentage / 100.0)
+                    perc = repo.deltarpm_percentage
+                    if perc is None:
+                        perc = ayum.conf.deltarpm_percentage
+                    best = po.size * (perc / 100.0)
                     have = oldrpms.get(repo, {}).get((name, arch), {})
                     for el in el.findall('delta'):
                         size = int(el.find('size').text)
-- 
1.7.11.7



More information about the Yum-devel mailing list