From: Thierry Parmentelat Date: Mon, 14 Dec 2009 16:02:49 +0000 (+0000) Subject: initial X-Git-Tag: 3.2.28-5-f1x~16 X-Git-Url: http://git.onelab.eu/?p=yum.git;a=commitdiff_plain;h=18cd99bd457e8d80a42c7f4be5f44c570688896a initial --- 18cd99bd457e8d80a42c7f4be5f44c570688896a diff --git a/yum-3.2.25-chroot.patch b/yum-3.2.25-chroot.patch new file mode 100644 index 0000000..236f14f --- /dev/null +++ b/yum-3.2.25-chroot.patch @@ -0,0 +1,111 @@ +diff -ur yum-3.2.25.orig/cli.py yum-3.2.25/cli.py +--- yum-3.2.25.orig/cli.py 2009-12-14 15:33:38.708870457 +0100 ++++ yum-3.2.25/cli.py 2009-12-14 15:34:58.904693320 +0100 +@@ -1257,13 +1257,14 @@ + def getRoot(self,opts): + # If the conf file is inside the installroot - use that. + # otherwise look for it in the normal root ++ if opts.conffile is None: ++ opts.conffile = '/etc/yum/yum.conf' ++ if opts.installroot: ++ if os.access(opts.installroot+opts.conffile, os.R_OK): ++ opts.conffile = opts.installroot+opts.conffile ++ elif os.access(opts.installroot+'/etc/yum.conf', os.R_OK): ++ opts.conffile = opts.installroot+'/etc/yum.conf' + if opts.installroot: +- if os.access(opts.installroot+'/'+opts.conffile, os.R_OK): +- opts.conffile = opts.installroot+'/'+opts.conffile +- elif opts.conffile == '/etc/yum/yum.conf': +- # check if /installroot/etc/yum.conf exists. +- if os.access(opts.installroot+'/etc/yum.conf', os.R_OK): +- opts.conffile = opts.installroot+'/etc/yum.conf' + root=opts.installroot + else: + root = '/' +@@ -1302,7 +1303,7 @@ + help=_("be tolerant of errors")) + group.add_option("-C", dest="cacheonly", action="store_true", + help=_("run entirely from cache, don't update cache")) +- group.add_option("-c", dest="conffile", default='/etc/yum/yum.conf', ++ group.add_option("-c", dest="conffile", default=None, + help=_("config file location"), metavar=' [config file]') + group.add_option("-R", dest="sleeptime", type='int', default=None, + help=_("maximum command wait time"), metavar=' [minutes]') +diff -ur yum-3.2.25.orig/yum/config.py yum-3.2.25/yum/config.py +--- yum-3.2.25.orig/yum/config.py 2009-12-14 15:33:38.711856129 +0100 ++++ yum-3.2.25/yum/config.py 2009-12-14 15:39:44.204522759 +0100 +@@ -600,6 +600,29 @@ + syslog_ident = Option() + syslog_facility = Option('LOG_DAEMON') + ++ ++ ++ def getRootedPath(self, path, enforce_default=False, defaults_to_host=False): ++ instroot = self.installroot ++ if instroot is None: ++ return path ++ ++ if path.startswith('hostfs://'): res = path[9:] ++ elif path.startswith('chrootfs://'): res = instroot + '/' + path[11:] ++ else: ++ tmp = instroot + '/' + path ++ ++ if enforce_default: ++ if defaults_to_host: res = path ++ else: res = tmp ++ else: ++ if os.path.exists(tmp): res = tmp ++ elif defaults_to_host: res = path ++ else: res = tmp ++ ++ return res ++ ++ + class YumConf(StartupConf): + ''' + Configuration option definitions for yum.conf\'s [main] section. +@@ -613,6 +636,7 @@ + persistdir = Option('/var/lib/yum') + keepcache = BoolOption(True) + logfile = Option('/var/log/yum.log') ++ lockfile = Option('/var/run/yum.pid') + reposdir = ListOption(['/etc/yum/repos.d', '/etc/yum.repos.d']) + + commands = ListOption() +@@ -827,9 +851,9 @@ + yumconf.populate(startupconf._parser, 'main') + + # Apply the installroot to directory options +- for option in ('cachedir', 'logfile', 'persistdir'): ++ for option in ('cachedir', 'logfile', 'lockfile', 'persistdir'): + path = getattr(yumconf, option) +- ir_path = yumconf.installroot + path ++ ir_path = yumconf.getRootedPath(path) + ir_path = ir_path.replace('//', '/') # os.path.normpath won't fix this and + # it annoys me + ir_path = varReplace(ir_path, yumvars) +diff -ur yum-3.2.25.orig/yum/__init__.py yum-3.2.25/yum/__init__.py +--- yum-3.2.25.orig/yum/__init__.py 2009-12-14 15:33:38.711856129 +0100 ++++ yum-3.2.25/yum/__init__.py 2009-12-14 15:36:05.306160196 +0100 +@@ -386,8 +386,7 @@ + # this check makes sure that our dirs exist properly. + # if they aren't in the installroot then don't prepend the installroot path + # if we don't do this then anaconda likes to not work. +- if os.path.exists(self.conf.installroot+'/'+reposdir): +- reposdir = self.conf.installroot + '/' + reposdir ++ reposdir = self.conf.getRootedPath(reposdir) + + if os.path.isdir(reposdir): + for repofn in sorted(glob.glob('%s/*.repo' % reposdir)): +@@ -1266,9 +1265,8 @@ + return + + root = self.conf.installroot +- lockfile = root + '/' + lockfile # lock in the chroot +- lockfile = os.path.normpath(lockfile) # get rid of silly preceding extra / +- ++ lockfile = self.conf.lockfile ++ + mypid=str(os.getpid()) + while not self._lock(lockfile, mypid, 0644): + fd = open(lockfile, 'r')