Blame SOURCES/BZ-1281593-yum-fs-vars.patch

5e9bef
commit 22271bf34e71bbfc75d0a59354fc0108e004f36c
5e9bef
Author: James Antill <james@and.org>
5e9bef
Date:   Mon Jun 9 16:09:32 2014 -0400
5e9bef
5e9bef
    Read FS yumvars before yum.conf setup, and reread if installroot changed.
5e9bef
5e9bef
diff --git a/yum/config.py b/yum/config.py
5e9bef
index 6e0ecdc..1b5a11d 100644
5e9bef
--- a/yum/config.py
5e9bef
+++ b/yum/config.py
5e9bef
@@ -1022,6 +1022,23 @@ class VersionGroupConf(BaseConfig):
5e9bef
     pkglist = ListOption()
5e9bef
     run_with_packages = BoolOption(False)
5e9bef
 
5e9bef
+def _read_yumvars(yumvars, root):
5e9bef
+    # Read the FS yumvars
5e9bef
+    try:
5e9bef
+        dir_fsvars = root + "/etc/yum/vars/"
5e9bef
+        fsvars = os.listdir(dir_fsvars)
5e9bef
+    except OSError:
5e9bef
+        fsvars = []
5e9bef
+    for fsvar in fsvars:
5e9bef
+        if os.path.islink(dir_fsvars + fsvar):
5e9bef
+            continue
5e9bef
+        try:
5e9bef
+            val = open(dir_fsvars + fsvar).readline()
5e9bef
+            if val and val[-1] == '\n':
5e9bef
+                val = val[:-1]
5e9bef
+        except (OSError, IOError):
5e9bef
+            continue
5e9bef
+        yumvars[fsvar] = val
5e9bef
 
5e9bef
 def readStartupConfig(configfile, root, releasever=None):
5e9bef
     """Parse Yum's main configuration file and return a
5e9bef
@@ -1044,6 +1061,7 @@ def readStartupConfig(configfile, root, releasever=None):
5e9bef
     confpp_obj = ConfigPreProcessor(configfile)
5e9bef
 
5e9bef
     yumvars = _getEnvVar()
5e9bef
+    _read_yumvars(yumvars, yumconf.installroot)
5e9bef
     confpp_obj._vars = yumvars
5e9bef
     startupconf.yumvars = yumvars
5e9bef
 
5e9bef
@@ -1102,22 +1120,12 @@ def readMainConfig(startupconf):
5e9bef
         ir_path = varReplace(ir_path, yumvars)
5e9bef
         setattr(yumconf, option, ir_path)
5e9bef
     
5e9bef
-    # Read the FS yumvars
5e9bef
-    try:
5e9bef
-        dir_fsvars = yumconf.installroot + "/etc/yum/vars/"
5e9bef
-        fsvars = os.listdir(dir_fsvars)
5e9bef
-    except OSError:
5e9bef
-        fsvars = []
5e9bef
-    for fsvar in fsvars:
5e9bef
-        if os.path.islink(dir_fsvars + fsvar):
5e9bef
-            continue
5e9bef
-        try:
5e9bef
-            val = open(dir_fsvars + fsvar).readline()
5e9bef
-            if val and val[-1] == '\n':
5e9bef
-                val = val[:-1]
5e9bef
-        except (OSError, IOError):
5e9bef
-            continue
5e9bef
-        yumvars[fsvar] = val
5e9bef
+    if StartupConf.installroot.default != yumconf.installroot:
5e9bef
+        #  Note that this isn't perfect, in that if the initial installroot has
5e9bef
+        # X=Y, and X doesn't exist in the new installroot ... then we'll still
5e9bef
+        # have X afterwards (but if the new installroot has X=Z, that will be
5e9bef
+        # the value after this).
5e9bef
+        _read_yumvars(yumvars, yumconf.installroot)
5e9bef
 
5e9bef
     # These can use the above FS yumvars
5e9bef
     for option in ('cachedir', 'logfile', 'persistdir'):
5e9bef
commit 1ccd91f4b195737d6bb1bdfabcbf3714de1d9b85
5e9bef
Author: James Antill <james@and.org>
5e9bef
Date:   Mon Jun 16 15:16:25 2014 -0400
5e9bef
5e9bef
    Fix merge typo. with FS vars. before yum.conf
5e9bef
5e9bef
diff --git a/yum/config.py b/yum/config.py
5e9bef
index 1b5a11d..8eab5bc 100644
5e9bef
--- a/yum/config.py
5e9bef
+++ b/yum/config.py
5e9bef
@@ -1061,7 +1061,7 @@ def readStartupConfig(configfile, root, releasever=None):
5e9bef
     confpp_obj = ConfigPreProcessor(configfile)
5e9bef
 
5e9bef
     yumvars = _getEnvVar()
5e9bef
-    _read_yumvars(yumvars, yumconf.installroot)
5e9bef
+    _read_yumvars(yumvars, startupconf.installroot)
5e9bef
     confpp_obj._vars = yumvars
5e9bef
     startupconf.yumvars = yumvars
5e9bef
 
5e9bef
commit 6148c8a10b22763592c141ce9ee6d85dce5816f7
5e9bef
Author: Michal Domonkos <mdomonko@redhat.com>
5e9bef
Date:   Thu Apr 21 16:08:19 2016 +0200
5e9bef
5e9bef
    Honor FS yumvars over defaults for special vars. BZ 1327561
5e9bef
    
5e9bef
    This fixes up commit 22271bf, which caused FS yumvars like $releasever
5e9bef
    to be unintentionally replaced by the default values (unless the
5e9bef
    installroot was redefined by yumconf, which caused us to reread them).
5e9bef
5e9bef
diff --git a/yum/config.py b/yum/config.py
5e9bef
index 954700b..2ef5fa4 100644
5e9bef
--- a/yum/config.py
5e9bef
+++ b/yum/config.py
5e9bef
@@ -1114,12 +1114,12 @@ def readMainConfig(startupconf):
5e9bef
     
5e9bef
     # ' xemacs syntax hack
5e9bef
 
5e9bef
-    # Set up substitution vars
5e9bef
+    # Set up substitution vars but make sure we always prefer FS yumvars
5e9bef
     yumvars = startupconf.yumvars
5e9bef
-    yumvars['basearch'] = startupconf.basearch
5e9bef
-    yumvars['arch'] = startupconf.arch
5e9bef
-    yumvars['releasever'] = startupconf.releasever
5e9bef
-    yumvars['uuid'] = startupconf.uuid
5e9bef
+    yumvars.setdefault('basearch', startupconf.basearch)
5e9bef
+    yumvars.setdefault('arch', startupconf.arch)
5e9bef
+    yumvars.setdefault('releasever', startupconf.releasever)
5e9bef
+    yumvars.setdefault('uuid', startupconf.uuid)
5e9bef
     # Note: We don't setup the FS yumvars here, because we want to be able to
5e9bef
     #       use the core yumvars in persistdir. Which is the base of FS yumvars.
5e9bef
     
5e9bef
commit 1897df3c1477afd8f221833120092f35c26f5a9d
5e9bef
Author: Michal Domonkos <mdomonko@redhat.com>
5e9bef
Date:   Thu Apr 21 16:23:47 2016 +0200
5e9bef
5e9bef
    Cosmetic: remove outdated comment
5e9bef
    
5e9bef
    It was no longer true after commit ade6d16.
5e9bef
5e9bef
diff --git a/yum/config.py b/yum/config.py
5e9bef
index 2ef5fa4..84be564 100644
5e9bef
--- a/yum/config.py
5e9bef
+++ b/yum/config.py
5e9bef
@@ -1120,8 +1120,6 @@ def readMainConfig(startupconf):
5e9bef
     yumvars.setdefault('arch', startupconf.arch)
5e9bef
     yumvars.setdefault('releasever', startupconf.releasever)
5e9bef
     yumvars.setdefault('uuid', startupconf.uuid)
5e9bef
-    # Note: We don't setup the FS yumvars here, because we want to be able to
5e9bef
-    #       use the core yumvars in persistdir. Which is the base of FS yumvars.
5e9bef
     
5e9bef
     # Read [main] section
5e9bef
     yumconf = YumConf()