From 5222ac8ee35123a0e7913720444b1c4f8afe44fa Mon Sep 17 00:00:00 2001 From: James Antill Date: Aug 10 2015 19:32:45 +0000 Subject: Update to latest HEAD - Add support for weak deps. to repoquery. - yum-builddep: respect --tolerant to ignore missing dependencies - Add plugin for overlayfs issue workaround. Patch by Pavel Odvody. BZ#1213602 - yum-config-manager: require \* syntax to disable all repos. BZ#1151154 - yum-config-manager: update config file specified using -c option. BZ#1075708 - Deal with gpgdir and gpgcadir keys, in keys plugin. --- diff --git a/yum-utils-HEAD.patch b/yum-utils-HEAD.patch index 8e4ecc3..4c14717 100644 --- a/yum-utils-HEAD.patch +++ b/yum-utils-HEAD.patch @@ -139,6 +139,16 @@ index bc802f6..e9be2e4 100644 2008-08-04 James Antill +diff --git a/README b/README +index 8abe805..0c01d0e 100644 +--- a/README ++++ b/README +@@ -67,3 +67,5 @@ Author of the update on boot init scripts + - Tim Lauridsen + Maintainer of yum-utils - fixer of a lot of misc utils. + ++- Valentina Mukhamedzhanova ++Maintainer of yum-utils. diff --git a/debuginfo-install.py b/debuginfo-install.py index 177c6c3..bb61a1d 100755 --- a/debuginfo-install.py @@ -616,7 +626,7 @@ index 0000000..4d336a5 +See the Authors file included with this program. +.fi diff --git a/docs/repoquery.1 b/docs/repoquery.1 -index f5a8c5d..def752f 100644 +index f5a8c5d..195780d 100644 --- a/docs/repoquery.1 +++ b/docs/repoquery.1 @@ -1,11 +1,11 @@ @@ -683,7 +693,7 @@ index f5a8c5d..def752f 100644 .IP "\fB\-\-setopt=option=value\fP" Set any config option in yum config or repo files. For options in the global config just use: \-\-setopt=option=value for repo options use: \-\-setopt=repoid.option=value -@@ -64,13 +75,13 @@ config just use: \-\-setopt=option=value for repo options use: \-\-setopt=repoid +@@ -64,13 +75,21 @@ config just use: \-\-setopt=option=value for repo options use: \-\-setopt=repoid .PP .SH "PACKAGE QUERY OPTIONS" .IP "\fB\-i, \-\-info\fP" @@ -693,13 +703,21 @@ index f5a8c5d..def752f 100644 List files in package. .IP "\fB\-R, \-\-requires\fP" List package dependencies. ++.IP "\fB\-R, \-\-weak\-requires\fP" ++List package weak dependencies. ++.IP "\fB\-R, \-\-info\-requires\fP" ++List package informational dependencies. ++.IP "\fB\-R, \-\-weak\-reverse\-requires\fP" ++List package weak reverse dependencies. ++.IP "\fB\-R, \-\-info\-reverse\-requires\fP" ++List package informational reverse dependencies. .IP "\fB\-\-resolve\fP" -When used with --requires, resolve capabilities to originating packages. -+When used with \-\-requires, resolve capabilities to originating packages. ++When used with \-\-requires/\-\-weak\-requires/etc, resolve capabilities to originating packages. .IP "\fB\-\-provides\fP" List capabilities package provides. .IP "\fB\-\-obsoletes\fP" -@@ -81,7 +92,7 @@ List capabilities conflicting with package. +@@ -81,7 +100,7 @@ List capabilities conflicting with package. List package changelog. .IP "\fB\-\-location\fP" Show a location where the package could be downloaded from. @@ -708,7 +726,7 @@ index f5a8c5d..def752f 100644 .IP "\fB\-s, \-\-source\fP" Show package source RPM name. .IP "\fB\-\-srpm\fP" -@@ -95,16 +106,16 @@ Use name-epoch:version-release.architecture output format (default) +@@ -95,23 +114,26 @@ Use name-epoch:version-release.architecture output format (default) .IP "\fB\-\-envra\fP" Use epoch:name-version-release.architecture output format (easier to parse than nevra) @@ -718,17 +736,20 @@ index f5a8c5d..def752f 100644 ":isodate" to all the tags that are a time, and you can add ":k", ":m", ":g", ":t" and ":h" to sizes. You can also specify field width as in sprintf (Eg. %-20{name}) - .IP "\fB\-\-output [text|ascii-tree|dot-tree]\fP" +-.IP "\fB\-\-output [text|ascii-tree|dot-tree]\fP" -Output format which can be used with --requires/--whatrequires/--obsoletes/--conflicts. -+Output format which can be used with \-\-requires/\-\-whatrequires/\-\-obsoletes/\-\-conflicts. ++.IP "\fB\-\-output [text|ascii-tree|ascii-tree+|dot-tree|dot-tree+]\fP" ++Output format which can be used with \-\-requires/\-\-weak-requires/\-\-whatrequires/\-\-obsoletes/\-\-conflicts. The variants with a + suffix are used for weak dependencies and will merge the stronger variants into the output. Default output is 'text'. .IP "\fB\-\-level [all|any int]\fP" -In combination with --output ascii-tree|dot-tree this option specifies the -+In combination with \-\-output ascii-tree|dot-tree this option specifies the - number of level to print on the tree. Default level is 'all'. +-number of level to print on the tree. Default level is 'all'. ++In combination with \-\-output ascii-tree|dot-tree|ascii-tree+|dot-tree+ this ++option specifies the number of level to print on the tree. ++ Default level is 'all'. .PP -@@ -112,6 +123,8 @@ number of level to print on the tree. Default level is 'all'. + .SH "PACKAGE SELECTION OPTIONS" .IP "\fB\-a, \-\-all\fP" Query all available packages (for rpmquery compatibility / shorthand for repoquery '*') @@ -737,7 +758,7 @@ index f5a8c5d..def752f 100644 .IP "\fB\-f, \-\-file FILE\fP" Query package owning FILE. .IP "\fB\-\-whatobsoletes CAPABILITY\fP" -@@ -123,14 +136,15 @@ Query all packages that provide CAPABILITY. +@@ -123,14 +145,15 @@ Query all packages that provide CAPABILITY. .IP "\fB\-\-whatrequires CAPABILITY\fP" Query all packages that require CAPABILITY. .IP "\fB\-\-alldeps\fP" @@ -757,7 +778,7 @@ index f5a8c5d..def752f 100644 .IP "\fB\-\-archlist=ARCH1[,ARCH2...]\fP" Limit the query to packages of given architecture(s). Valid values are all architectures known to rpm/yum such as 'i386' and 'src' for -@@ -166,19 +180,19 @@ Query groups instead of packages. +@@ -166,19 +189,19 @@ Query groups instead of packages. .SH "EXAMPLES" .IP "List all packages whose name contains 'perl':" @@ -784,7 +805,7 @@ index f5a8c5d..def752f 100644 NB: This command will only work if you have repositories enabled which include srpms. .\"TODO: Add more examples... -@@ -204,7 +218,7 @@ of the following: +@@ -204,7 +227,7 @@ of the following: .br \fBepoch:name-ver-rel.arch\fP .IP @@ -2962,7 +2983,7 @@ index 5094881..5761e76 100644 + if create_snapshots_in_post: + create_snapshots(conduit) diff --git a/plugins/keys/keys.py b/plugins/keys/keys.py -index 3342576..4d2ca96 100644 +index 3342576..d765ef7 100644 --- a/plugins/keys/keys.py +++ b/plugins/keys/keys.py @@ -31,6 +31,15 @@ except: @@ -2981,7 +3002,21 @@ index 3342576..4d2ca96 100644 def match_keys(patterns, key, globs=True): for pat in patterns: if pat == key.keyid: -@@ -250,7 +259,7 @@ Key ID : %s +@@ -141,7 +150,12 @@ class KeysListCommand: + if gpgme is not None: + base.repos.doSetup() # Without this repo.cachedir is empty *sigh* + for repo in base.repos.listEnabled(): +- gpgdir = '%s/gpgdir' % repo.cachedir ++ if hasattr(repo, 'gpgcadir'): ++ gpgdirs = [repo.gpgcadir, repo.gpgdir] ++ else: ++ gpgdirs = ['%s/gpgdir' % repo.cachedir] ++ ++ for gpgdir in gpgdirs: + if not os.path.exists(gpgdir): + continue + +@@ -250,7 +264,7 @@ Key ID : %s time.ctime(key.createts), gpg_cert.version, gpg_cert.user_id, yum.pgpmsg.algo_pk_to_str[gpg_cert.public_key.pk_algo], @@ -3003,6 +3038,67 @@ index c45a1ce..cab69c5 100644 return conf_fname = '/etc/yum.repos.d/_local.repo' +diff --git a/plugins/ovl/ovl.conf b/plugins/ovl/ovl.conf +new file mode 100644 +index 0000000..8e4d76c +--- /dev/null ++++ b/plugins/ovl/ovl.conf +@@ -0,0 +1,2 @@ ++[main] ++enabled=1 +diff --git a/plugins/ovl/ovl.py b/plugins/ovl/ovl.py +new file mode 100644 +index 0000000..f2fbdd4 +--- /dev/null ++++ b/plugins/ovl/ovl.py +@@ -0,0 +1,47 @@ ++# Copyright (C) 2015 Red Hat, Inc. ++# ++# Authors: Pavel Odvody ++# ++# This copyrighted material is made available to anyone wishing to use, ++# modify, copy, or redistribute it subject to the terms and conditions of ++# the GNU General Public License v.2, or (at your option) any later version. ++# This program is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY expressed or implied, including the implied warranties of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. You should have received a copy of the ++# GNU General Public License along with this program; if not, write to the ++# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++# 02110-1301, USA. Any Red Hat trademarks that are incorporated in the ++# source code or documentation are not subject to the GNU General Public ++# License and may only be used or replicated with the express permission of ++# Red Hat, Inc. ++ ++from yum.plugins import TYPE_CORE ++from os import utime, walk, path ++ ++requires_api_version = '2.3' ++plugin_type = (TYPE_CORE,) ++mtab = '/etc/mtab' ++ ++def should_touch(): ++ """ ++ Touch the files only once we've verified that ++ we're on overlay mount ++ """ ++ with open(mtab, 'r') as f: ++ line = f.readline() ++ return line and line.startswith('overlay /') ++ return False ++ ++def prereposetup_hook(conduit): ++ if not should_touch(): ++ return ++ rpmdb_path = conduit.getRpmDB()._rpmdbpath ++ try: ++ for root, _, files in walk(rpmdb_path): ++ for f in files: ++ p = path.join(root, f) ++ with open(p, 'a'): ++ utime(p, None) ++ except Exception as e: ++ conduit.error(1, "Error while doing RPMdb copy-up:\n%s" % e) diff --git a/plugins/post-transaction-actions/post-transaction-actions.py b/plugins/post-transaction-actions/post-transaction-actions.py index b4da1ce..d59dc40 100644 --- a/plugins/post-transaction-actions/post-transaction-actions.py @@ -4499,7 +4595,7 @@ index ff77e0d..bef3b03 100755 # (c) Copyright Seth Vidal 2004 diff --git a/repoquery.py b/repoquery.py -index a3bb111..af70518 100755 +index a3bb111..dd4336c 100755 --- a/repoquery.py +++ b/repoquery.py @@ -8,11 +8,11 @@ @@ -4533,9 +4629,12 @@ index a3bb111..af70518 100755 Repository : %{repoid} Summary : %{summary} Source : %{sourcerpm} -@@ -74,6 +74,15 @@ querytags = [ 'name', 'version', 'release', 'epoch', 'arch', 'summary', +@@ -73,7 +73,18 @@ querytags = [ 'name', 'version', 'release', 'epoch', 'arch', 'summary', + 'vendor', 'group', 'license', 'buildtime', 'filetime', 'installedsize', 'archivesize', 'packagesize', 'repoid', 'requires', 'provides', 'conflicts', 'obsoletes', ++ 'weak_requires', 'info_requires', ++ 'weak_reverse_requires', 'info_reverse_requires', 'relativepath', 'hdrstart', 'hdrend', 'id', + 'checksum', 'pkgid', 'committer', 'committime', + 'ui_evr', 'evr', 'ui_nevra', 'ui_envra', @@ -4549,7 +4648,7 @@ index a3bb111..af70518 100755 ] def sec2isodate(timestr): -@@ -114,7 +123,7 @@ convertmap = { 'date': sec2date, +@@ -114,7 +125,7 @@ convertmap = { 'date': sec2date, 'h': size2h, } @@ -4558,7 +4657,78 @@ index a3bb111..af70518 100755 def __init__(self, value=None): Exception.__init__(self) self.value = value -@@ -316,12 +325,13 @@ class pkgQuery: +@@ -257,18 +268,42 @@ class pkgQuery: + return self._translated_qf[self.qf] % self + + def fmt_requires(self, **kw): +- if self.yb.options.output in ("ascii-tree", "dot-tree"): ++ if self.yb.options.output in ("ascii-tree", "dot-tree", ++ "ascii-tree+", "dot-tree+"): + self.fmt_tree_requires(output = self.yb.options.output, + tree_level = self.yb.options.tree_level, + dot = self.yb.options.dot) + else: + return "\n".join(self.prco('requires')) + ++ def fmt_weak_requires(self, **kw): ++ if self.yb.options.output in ("ascii-tree", "dot-tree", ++ "ascii-tree+", "dot-tree+"): ++ self.fmt_tree_weak_requires(output = self.yb.options.output, ++ tree_level = self.yb.options.tree_level, ++ dot = self.yb.options.dot) ++ else: ++ return "\n".join(self.prco('weak_requires')) ++ def fmt_recommends(self, **kw): ++ return self.fmt_weak_requires(**kw) ++ ++ def fmt_info_requires(self, **kw): ++ if self.yb.options.output in ("ascii-tree", "dot-tree", ++ "ascii-tree+", "dot-tree+"): ++ self.fmt_tree_info_requires(output = self.yb.options.output, ++ tree_level = self.yb.options.tree_level, ++ dot = self.yb.options.dot) ++ else: ++ return "\n".join(self.prco('info_requires')) ++ def fmt_suggests(self, **kw): ++ return self.fmt_info_requires(**kw) ++ + def fmt_provides(self, **kw): + return "\n".join(self.prco('provides')) + + def fmt_conflicts(self, **kw): +- if self.yb.options.output in ("ascii-tree", "dot-tree"): ++ if self.yb.options.output in ("ascii-tree", "dot-tree", ++ "ascii-tree+", "dot-tree+"): + self.fmt_tree_conflicts(output = self.yb.options.output, + tree_level = self.yb.options.tree_level, + dot = self.yb.options.dot) +@@ -276,13 +311,24 @@ class pkgQuery: + return "\n".join(self.prco('conflicts')) + + def fmt_obsoletes(self, **kw): +- if self.yb.options.output in ("ascii-tree", "dot-tree"): ++ if self.yb.options.output in ("ascii-tree", "dot-tree", ++ "ascii-tree+", "dot-tree+"): + self.fmt_tree_obsoletes(output = self.yb.options.output, + tree_level = self.yb.options.tree_level, + dot = self.yb.options.dot) + else: + return "\n".join(self.prco('obsoletes')) + ++ def fmt_weak_reverse_requires(self, **kw): ++ return "\n".join(self.prco('weak_reverse_requires')) ++ def fmt_supplements(self, **kw): ++ return self.fmt_weak_reverse_requires(**kw) ++ ++ def fmt_info_reverse_requires(self, **kw): ++ return "\n".join(self.prco('info_reverse_requires')) ++ def fmt_enhances(self, **kw): ++ return self.fmt_info_reverse_requires(**kw) ++ + def fmt_list(self, **kw): + return "\n".join(self.files()) + +@@ -316,12 +362,13 @@ class pkgQuery: print "%s%s [%s]" % (indent, str(req), str(val)) # These are common helpers for the --tree-* options... @@ -4575,7 +4745,13 @@ index a3bb111..af70518 100755 def _tree_pkg2uniq(self, pkg): """ Turn a pkg into a "unique" req.""" if self.yb and self.yb.conf.showdupesfromrepos: -@@ -365,6 +375,7 @@ class pkgQuery: +@@ -360,11 +407,12 @@ class pkgQuery: + level = kw.get('level', 0) + all_reqs = kw.get('all_reqs', {}) + +- if kw['output'].lower() == 'dot-tree': ++ if kw['output'].lower() in ('dot-tree', 'dot-tree+'): + if 'dot' not in kw.keys() or kw['dot'] is None: kw['dot'] = DotPlot() elif 'dot' not in kw.keys() or kw['dot'] is None: kw['dot'] = None @@ -4583,7 +4759,7 @@ index a3bb111..af70518 100755 if str(kw['tree_level']).lower() != 'all': try: -@@ -375,6 +386,15 @@ class pkgQuery: +@@ -375,6 +423,15 @@ class pkgQuery: if not 'output' in kw.keys(): kw['output'] = 'ascii-tree' @@ -4599,7 +4775,7 @@ index a3bb111..af70518 100755 __req2pkgs = {} def req2pkgs(ignore, req): req = str(req) -@@ -406,6 +426,8 @@ class pkgQuery: +@@ -406,6 +463,8 @@ class pkgQuery: providers = matches.keys() @@ -4608,13 +4784,18 @@ index a3bb111..af70518 100755 except yum.Errors.YumBaseError, err: print >>sys.stderr, "No package provides %s" % req return [] -@@ -413,14 +435,9 @@ class pkgQuery: +@@ -413,14 +472,14 @@ class pkgQuery: __req2pkgs[req] = providers return providers - dot = kw['dot'] - tups = getattr(pkg, prco_type) ++ if kw['output'].lower() in ('ascii-tree+', 'dot-tree+'): ++ if prco_type in ("info_requires",): ++ tups.extend(getattr(pkg, "weak_requires")) ++ if prco_type in ("info_requires", "weak_requires"): ++ tups.extend(getattr(pkg, "requires")) rpkgs, loc_reqs = self._tree_maybe_add_pkgs(all_reqs, tups, req2pkgs) - if dot is None: - self._tree_print_req(pkg, req, level) @@ -4624,7 +4805,16 @@ index a3bb111..af70518 100755 dot.addPackage(pkg, rpkgs) lim = level + 2 nlevel = level + 1 -@@ -449,6 +466,7 @@ class pkgQuery: +@@ -444,11 +503,16 @@ class pkgQuery: + + def fmt_tree_requires(self, **kw): + return self._fmt_tree_prov('requires', **kw) ++ def fmt_tree_weak_requires(self, **kw): ++ return self._fmt_tree_prov('weak_requires', **kw) ++ def fmt_tree_info_requires(self, **kw): ++ return self._fmt_tree_prov('info_requires', **kw) + def fmt_tree_conflicts(self, **kw): + return self._fmt_tree_prov('conflicts', **kw) def fmt_tree_obsoletes(self, **kw): pkg = kw.get('pkg', self.pkg) @@ -4632,7 +4822,7 @@ index a3bb111..af70518 100755 level = kw.get('level', 0) all_reqs = kw.get('all_reqs', {}) -@@ -457,6 +475,7 @@ class pkgQuery: +@@ -457,6 +521,7 @@ class pkgQuery: kw['dot'] = DotPlot() elif 'dot' not in kw.keys() or kw['dot'] is None: kw['dot'] = None @@ -4640,7 +4830,7 @@ index a3bb111..af70518 100755 if str(kw['tree_level']).lower() != 'all': try: -@@ -467,6 +486,15 @@ class pkgQuery: +@@ -467,6 +532,15 @@ class pkgQuery: if not 'output' in kw.keys(): kw['output'] = 'ascii-tree' @@ -4656,7 +4846,7 @@ index a3bb111..af70518 100755 def obs2pkgs(): if self.yb is None: return [] -@@ -496,10 +524,7 @@ class pkgQuery: +@@ -496,10 +570,7 @@ class pkgQuery: else: reason = 'cmd line' rpkgs = obs2pkgs() @@ -4668,7 +4858,7 @@ index a3bb111..af70518 100755 dot.addPackage(pkg, rpkgs) lim = level + 2 all_reqs[pkg] = None -@@ -514,6 +539,7 @@ class pkgQuery: +@@ -514,6 +585,7 @@ class pkgQuery: self._tree_print_req(rpkg, '', nlevel) continue self.fmt_tree_obsoletes(pkg=rpkg, level=nlevel, all_reqs=all_reqs, @@ -4676,7 +4866,7 @@ index a3bb111..af70518 100755 tree_level = kw['tree_level'], output = kw['output'], dot = dot) -@@ -527,6 +553,7 @@ class pkgQuery: +@@ -527,6 +599,7 @@ class pkgQuery: if kw['output'].lower() == 'dot-tree': if 'dot' not in kw.keys() or kw['dot'] is None: kw['dot'] = DotPlot() @@ -4684,7 +4874,7 @@ index a3bb111..af70518 100755 if str(kw['tree_level']).lower() != 'all': try: -@@ -537,6 +564,15 @@ class pkgQuery: +@@ -537,6 +610,15 @@ class pkgQuery: if not 'output' in kw.keys(): kw['output'] = 'ascii-tree' @@ -4700,7 +4890,7 @@ index a3bb111..af70518 100755 __prov2pkgs = {} def prov2pkgs(prov, ignore): if str(prov) in __prov2pkgs: -@@ -562,6 +598,8 @@ class pkgQuery: +@@ -562,6 +644,8 @@ class pkgQuery: arequirers = [pkg for pkg in areqs if pkg.pkgtup not in skip] @@ -4709,7 +4899,7 @@ index a3bb111..af70518 100755 except yum.Errors.YumBaseError, err: print >>sys.stderr, "No package provides %s" % str(prov) return [] -@@ -575,12 +613,8 @@ class pkgQuery: +@@ -575,12 +659,8 @@ class pkgQuery: tups = pkg.provides + filetupes rpkgs, loc_reqs = self._tree_maybe_add_pkgs(all_reqs, tups, prov2pkgs) @@ -4723,7 +4913,19 @@ index a3bb111..af70518 100755 dot.addPackage(pkg, rpkgs) lim = level + 2 nlevel = level + 1 -@@ -719,13 +753,13 @@ class groupQuery: +@@ -671,6 +751,11 @@ class instPkgQuery(pkgQuery): + + def prco(self, what, **kw): + prcodict = {} ++ what = {"weak_requires" : "recommends", ++ "info_requires" : "suggests", ++ "weak_reverse_requires" : "supplements", ++ "info_reverse_requires" : "enhances"}.get(what, what) ++ + # rpm names are without the trailing s :) + what = what[:-1] + +@@ -719,13 +804,13 @@ class groupQuery: raise queryError("Invalid group query: %s" % method) # XXX temporary hack to make --group -a query work @@ -4740,7 +4942,7 @@ index a3bb111..af70518 100755 pkgs = [] for t in self.grouppkgs.split(','): if t == "mandatory": -@@ -741,10 +775,10 @@ class groupQuery: +@@ -741,10 +826,10 @@ class groupQuery: return pkgs @@ -4753,7 +4955,7 @@ index a3bb111..af70518 100755 return ["%s:\n\n%s\n" % (self.name, self.group.description)] -@@ -848,6 +882,8 @@ class YumBaseQuery(yum.YumBase): +@@ -848,6 +933,8 @@ class YumBaseQuery(yum.YumBase): matches = yum.YumBase.searchPackageProvides(self, [str(depstring)]) provider = matches.keys() # provider.extend(yum.YumBase.returnPackagesByDep(self, depstring)) @@ -4762,7 +4964,7 @@ index a3bb111..af70518 100755 except yum.Errors.YumBaseError, err: self.logger.error("No package provides %s" % depstring) return self.queryPkgFactory(provider) -@@ -1008,12 +1044,12 @@ class YumBaseQuery(yum.YumBase): +@@ -1008,12 +1095,12 @@ class YumBaseQuery(yum.YumBase): def fmt_whatrequires(self, name, **kw): pkgs = {} @@ -4777,18 +4979,22 @@ index a3bb111..af70518 100755 provs = [name] -@@ -1054,10 +1090,21 @@ class YumBaseQuery(yum.YumBase): +@@ -1052,14 +1139,41 @@ class YumBaseQuery(yum.YumBase): + pkgs.append(pkg) + return self.queryPkgFactory(pkgs) - def fmt_requires(self, name, **kw): +- def fmt_requires(self, name, **kw): ++ def fmt_requires(self, name, requires="requires", **kw): pkgs = {} - for pkg in self.returnByName(name): +- for req in pkg.prco("requires"): + done = set() + def require_recursive(pkg): + if pkg.name in done: + return + done.add(pkg.name) + - for req in pkg.prco("requires"): ++ for req in pkg.prco(requires): for res in self.fmt_whatprovides(req): pkgs[(res.name, res.pkg.arch)] = res + if self.options.recursive: @@ -4799,8 +5005,26 @@ index a3bb111..af70518 100755 + return pkgs.values() ++ def fmt_weak_requires(self, name, **kw): ++ return self.fmt_requires(name, requires="weak_requires", **kw) ++ def fmt_recommends(self, name, **kw): ++ return self.fmt_requires(name, requires="recommends", **kw) ++ ++ def fmt_info_requires(self, name, **kw): ++ return self.fmt_requires(name, requires="info_requires", **kw) ++ def fmt_suggests(self, name, **kw): ++ return self.fmt_requires(name, requires="suggests", **kw) ++ ++ def fmt_weak_reverse_requires(self, name, **kw): ++ return self.fmt_requires(name, requires="weak_reverse_requires", **kw) ++ ++ def fmt_info_reverse_requires(self, name, **kw): ++ return self.fmt_requires(name, requires="info_reverse_requires", **kw) ++ def fmt_location(self, name): -@@ -1070,6 +1117,44 @@ class YumBaseQuery(yum.YumBase): + loc = [] + for pkg in self.returnByName(name): +@@ -1070,6 +1184,44 @@ class YumBaseQuery(yum.YumBase): loc.append("%s/%s" % (repo.urls[0], pkg['relativepath'])) return loc @@ -4845,7 +5069,52 @@ index a3bb111..af70518 100755 def main(args): -@@ -1172,6 +1257,8 @@ def main(args): +@@ -1099,6 +1251,44 @@ def main(args): + help="query all packages/groups") + parser.add_option("-R", "--requires", action="store_true", + help="list package dependencies") ++ parser.add_option("--weak-requires", action="store_true", ++ help="list package weak dependencies") ++ parser.add_option("--recommends", action="store_true", ++ dest="weak_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--weak-reverse-requires", action="store_true", ++ help="list package weak reverse dependencies") ++ parser.add_option("--reverse-weak-requires", action="store_true", ++ dest="weak_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--rev-weak-requires", action="store_true", ++ dest="weak_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--weak-rev-requires", action="store_true", ++ dest="weak_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--supplements", action="store_true", ++ dest="weak_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--info-requires", action="store_true", ++ help="list package informational dependencies") ++ parser.add_option("--suggests", action="store_true", ++ dest="info_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--info-reverse-requires", action="store_true", ++ help="list package informational reverse dependencies") ++ parser.add_option("--reverse-info-requires", action="store_true", ++ dest="info_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--rev-info-requires", action="store_true", ++ dest="info_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--info-rev-requires", action="store_true", ++ dest="info_reverse_requires", ++ help=SUPPRESS_HELP) ++ parser.add_option("--enhances", action="store_true", ++ dest="info_reverse_requires", ++ help=SUPPRESS_HELP) + parser.add_option("--provides", action="store_true", + help="list capabilities this package provides") + parser.add_option("--obsoletes", action="store_true", +@@ -1172,6 +1362,8 @@ def main(args): help="run from cache only") parser.add_option("--tempcache", action="store_true", help="use private cache (default when used as non-root)") @@ -4854,7 +5123,15 @@ index a3bb111..af70518 100755 parser.add_option("--querytags", action="store_true", help="list available tags in queryformat queries") parser.add_option("-c", "--config", dest="conffile", -@@ -1198,6 +1285,10 @@ def main(args): +@@ -1191,13 +1383,17 @@ def main(args): + parser.add_option("--level", dest="tree_level", default="all", + help="levels to display (can be any number or 'all', default to 'all')") + parser.add_option("--output", dest="output", default="text", +- help="output format to use (can be text|ascii-tree|dot-tree, default to 'text')") ++ help="output format to use (can be text|ascii-tree|dot-tree|ascii-tree+|dot-tree+, default to 'text')") + parser.add_option("--search", action="store_true", + dest="search", default=False, + help="Use yum's search to return pkgs") parser.add_option("--search-fields", action="append", dest="searchfields", default=[], help="search fields to search using --search") @@ -4865,7 +5142,34 @@ index a3bb111..af70518 100755 (opts, regexs) = parser.parse_args() -@@ -1261,9 +1352,10 @@ def main(args): +@@ -1225,6 +1421,26 @@ def main(args): + sackops.append("requires") + else: + pkgops.append("requires") ++ if opts.info_requires: ++ if opts.resolve: ++ sackops.append("info_requires") ++ else: ++ pkgops.append("info_requires") ++ if opts.weak_requires: ++ if opts.resolve: ++ sackops.append("weak_requires") ++ else: ++ pkgops.append("weak_requires") ++ if opts.info_reverse_requires: ++ if opts.resolve: ++ sackops.append("info_reverse_requires") ++ else: ++ pkgops.append("info_reverse_requires") ++ if opts.weak_reverse_requires: ++ if opts.resolve: ++ sackops.append("weak_reverse_requires") ++ else: ++ pkgops.append("weak_reverse_requires") + if opts.provides: + pkgops.append("provides") + if opts.obsoletes: +@@ -1261,9 +1477,10 @@ def main(args): if opts.srpm: needsource = 1 if opts.whatrequires: @@ -4877,7 +5181,7 @@ index a3bb111..af70518 100755 if opts.whatprovides: sackops.append("whatprovides") if opts.whatobsoletes: -@@ -1280,7 +1372,6 @@ def main(args): +@@ -1280,7 +1497,6 @@ def main(args): needgroup = 1 if opts.installed: opts.pkgnarrow = 'installed' @@ -4885,7 +5189,7 @@ index a3bb111..af70518 100755 if opts.nevra: pkgops.append("nevra") -@@ -1303,6 +1394,13 @@ def main(args): +@@ -1303,6 +1519,13 @@ def main(args): repoq = YumBaseQuery(pkgops, sackops, opts) @@ -4899,7 +5203,7 @@ index a3bb111..af70518 100755 # silence initialisation junk from modules etc unless verbose mode initnoise = (not opts.quiet) * 2 repoq.preconf.releasever = opts.releasever -@@ -1312,7 +1410,26 @@ def main(args): +@@ -1312,7 +1535,26 @@ def main(args): repoq.preconf.fn = opts.conffile repoq.preconf.debuglevel = initnoise repoq.preconf.init_plugins = opts.plugins @@ -4927,7 +5231,7 @@ index a3bb111..af70518 100755 if opts.repofrompath: # setup the fake repos -@@ -1327,8 +1444,13 @@ def main(args): +@@ -1327,8 +1569,13 @@ def main(args): else: baseurl = repopath @@ -4943,7 +5247,7 @@ index a3bb111..af70518 100755 if not opts.quiet: repoq.logger.info( "Added %s repo from %s" % (repoid,repopath)) -@@ -1345,6 +1467,11 @@ def main(args): +@@ -1345,6 +1592,11 @@ def main(args): repoq.repos.setProgressBar(TextMeter(fo=sys.stdout)) repoq.repos.callback = output.CacheProgressCallback() repoq.repos.setFailureCallback(freport) @@ -4955,7 +5259,7 @@ index a3bb111..af70518 100755 if not repoq.setCacheDir(opts.tempcache): repoq.logger.error("Error: Could not make cachedir, exiting") -@@ -1359,6 +1486,13 @@ def main(args): +@@ -1359,6 +1611,13 @@ def main(args): if opts.show_dupes: repoq.conf.showdupesfromrepos = True @@ -4969,7 +5273,7 @@ index a3bb111..af70518 100755 if opts.repoid: found_repos = set() for repo in repoq.repos.findRepos('*'): -@@ -1380,6 +1514,14 @@ def main(args): +@@ -1380,6 +1639,14 @@ def main(args): for repo in repoq.repos.findRepos(repo_match): repo.enable() @@ -4984,7 +5288,7 @@ index a3bb111..af70518 100755 try: if not hasattr(repoq, 'arch'): repoq.doSackSetup(archlist=archlist) -@@ -1396,10 +1538,12 @@ def main(args): +@@ -1396,10 +1663,12 @@ def main(args): except (yum.Errors.RepoError, yum.Errors.GroupsError), e: repoq.logger.error(e) sys.exit(1) @@ -5630,7 +5934,7 @@ index d1fe5e2..78e8264 100755 group = my.comps.return_group('core') for pname in group.mandatory_packages: diff --git a/yum-builddep.py b/yum-builddep.py -index d7a37c3..7c40713 100755 +index d7a37c3..5f59ab8 100755 --- a/yum-builddep.py +++ b/yum-builddep.py @@ -8,17 +8,18 @@ @@ -5721,29 +6025,29 @@ index d7a37c3..7c40713 100755 - print "Could not setup repo %s: %s" % (r.id, e) - sys.exit(1) - def install_deps(self, deplist): +- def install_deps(self, deplist): ++ def install_deps(self, deplist, opts): + errors = set() for dep in deplist: self.logger.debug(' REQ: %s' % dep) if dep.startswith("rpmlib("): -@@ -152,10 +159,13 @@ class YumBuildDep(YumUtilBase): +@@ -152,9 +159,13 @@ class YumBuildDep(YumUtilBase): pkg = self.returnPackageByDep(dep) self.logger.info(' --> %s' % pkg) self.install(pkg) - except yum.Errors.YumBaseError, e: - self.logger.error("Error: %s" % e) -- sys.exit(1) + errors.add(exception2msg(e)) + + if errors: + for i in sorted(errors): + self.logger.error("Error: %s" % i) -+ sys.exit(1) ++ if not opts.tolerant: + sys.exit(1) # go through each of the pkgs, figure out what they are/where they are - # if they are not a local package then run -@@ -170,10 +180,14 @@ class YumBuildDep(YumUtilBase): +@@ -170,10 +181,14 @@ class YumBuildDep(YumUtilBase): specnames = [] srpms = [] specworks = False @@ -5758,7 +6062,7 @@ index d7a37c3..7c40713 100755 for arg in self.cmds: if arg.endswith('.src.rpm'): -@@ -192,7 +206,6 @@ class YumBuildDep(YumUtilBase): +@@ -192,7 +207,6 @@ class YumBuildDep(YumUtilBase): toActOn = [] if srcnames: @@ -5766,7 +6070,7 @@ index d7a37c3..7c40713 100755 pkgs = self.pkgSack.returnPackages(patterns=srcnames) exact, match, unmatch = yum.packages.parsePackages(pkgs, srcnames, casematch=1) srpms += exact + match -@@ -206,22 +219,30 @@ class YumBuildDep(YumUtilBase): +@@ -206,28 +220,36 @@ class YumBuildDep(YumUtilBase): sys.exit(1) toActOn = [] @@ -5780,7 +6084,8 @@ index d7a37c3..7c40713 100755 for srpm in toActOn: self.logger.info('Getting requirements for %s' % srpm) - self.install_deps(srpm.requiresList()) +- self.install_deps(srpm.requiresList()) ++ self.install_deps(srpm.requiresList(), opts) for name in specnames: + # (re)load rpm config for target if set @@ -5800,6 +6105,13 @@ index d7a37c3..7c40713 100755 buildreqs = [] for d in rpm.ds(spec.sourceHeader, 'requires'): buildreqs.append(d.DNEVR()[2:]) + + self.logger.info('Getting requirements for %s' % name) +- self.install_deps(buildreqs) ++ self.install_deps(buildreqs, opts) + + if __name__ == '__main__': + setup_locale() diff --git a/yum-complete-transaction.py b/yum-complete-transaction.py index c5074ab..6b01e4e 100755 --- a/yum-complete-transaction.py @@ -5860,7 +6172,7 @@ index c5074ab..6b01e4e 100755 diff --git a/yum-config-manager.py b/yum-config-manager.py -index 50f5123..380a54f 100755 +index 50f5123..0531c72 100755 --- a/yum-config-manager.py +++ b/yum-config-manager.py @@ -7,8 +7,11 @@ import yum @@ -5897,7 +6209,33 @@ index 50f5123..380a54f 100755 logger.error(str(e)) sys.exit(50) -@@ -153,7 +162,7 @@ if (not args and not opts.addrepo) or 'main' in args: +@@ -137,8 +146,11 @@ if opts.enable and opts.disable: + logger.error("Error: Trying to enable and disable repos.") + opts.enable = opts.disable = False + if opts.enable and not args: +- logger.error("Error: Trying to enable already enabled repos.") ++ logger.error("Error: please specify repos to enable (\* to enable all).") + opts.enable = False ++if opts.disable and not args: ++ logger.error("Error: please specify repos to disable (\* to disable all).") ++ opts.disable = False + + only = None + +@@ -146,14 +158,17 @@ if (not args and not opts.addrepo) or 'main' in args: + print yb.fmtSection('main') + print yb.conf.dump() + if opts.save and hasattr(yb, 'main_setopts') and yb.main_setopts: +- fn = '/etc/yum/yum.conf' ++ fn = opts.conffile + if not os.path.exists(fn): +- # Try the old default +- fn = '/etc/yum.conf' ++ if fn == '/etc/yum/yum.conf': ++ # Try the old default ++ fn = '/etc/yum.conf' ++ else: ++ raise yum.Errors.ConfigError("Error accessing file for config %s" % fn) ybc = yb.conf writeRawConfigFile(fn, 'main', ybc.yumvar, ybc.cfg.options, ybc.iteritems, ybc.optionobj, @@ -5906,7 +6244,7 @@ index 50f5123..380a54f 100755 if opts.enable or opts.disable: opts.save = True -@@ -161,7 +170,13 @@ if opts.enable or opts.disable: +@@ -161,7 +176,13 @@ if opts.enable or opts.disable: only = ['enabled'] if args: @@ -5921,7 +6259,7 @@ index 50f5123..380a54f 100755 else: repos = yb.repos.listEnabled() -@@ -174,7 +189,7 @@ if not opts.addrepo: +@@ -174,7 +195,7 @@ if not opts.addrepo: repo.disable() print repo.dump() if (opts.save and @@ -5930,7 +6268,7 @@ index 50f5123..380a54f 100755 writeRawConfigFile(repo.repofile, repo.id, repo.yumvar, repo.cfg.options, repo.iteritems, repo.optionobj, only) -@@ -196,13 +211,16 @@ if opts.addrepo: +@@ -196,13 +217,16 @@ if opts.addrepo: if url.endswith('.repo'): # this is a .repo file - fetch it, put it in our reposdir and enable it destname = os.path.basename(url) destname = myrepodir + '/' + destname @@ -6366,7 +6704,7 @@ index 1d37231..04b78a7 100644 # mode: shell-script # sh-basic-offset: 4 diff --git a/yum-utils.spec b/yum-utils.spec -index ce7fb64..c1d0045 100644 +index ce7fb64..142afa1 100644 --- a/yum-utils.spec +++ b/yum-utils.spec @@ -1,4 +1,11 @@ @@ -6467,7 +6805,7 @@ index ce7fb64..c1d0045 100644 %description -n yum-plugin-fs-snapshot When this plugin is installed it will automatically snapshot any -@@ -378,6 +363,16 @@ Requires: puppet +@@ -378,6 +363,25 @@ Requires: puppet %description -n yum-plugin-puppetverify Supplies checksums for files in packages from puppet's state file. @@ -6481,10 +6819,19 @@ index ce7fb64..c1d0045 100644 +%description -n yum-plugin-copr +This plugin adds the command copr, for adding/listing/searching copr repos. + ++%package -n yum-plugin-ovl ++Summary: Yum plugin to work around overlayfs issues ++Group: System Environment/Base ++Provides: yum-ovl = %{version}-%{release} ++Requires: yum >= 3.4.3 ++ ++%description -n yum-plugin-ovl ++This plugin touches rpmdb files to work around overlayfs issues. ++ %prep %setup -q -@@ -395,11 +390,8 @@ plugins="\ +@@ -395,11 +399,8 @@ plugins="\ protectbase \ versionlock \ tsflags \ @@ -6496,11 +6843,12 @@ index ce7fb64..c1d0045 100644 upgrade-helper \ aliases \ list-data \ -@@ -416,16 +408,23 @@ plugins="\ +@@ -416,16 +417,24 @@ plugins="\ fs-snapshot \ ps \ puppetverify \ + copr \ ++ ovl \ +" + +%if %{package_yum_updatesd} @@ -6523,7 +6871,7 @@ index ce7fb64..c1d0045 100644 done install -m 644 aliases/aliases $RPM_BUILD_ROOT/%{_sysconfdir}/yum/aliases.conf install -m 644 versionlock/versionlock.list $RPM_BUILD_ROOT/%{_sysconfdir}/yum/pluginconf.d/ -@@ -433,6 +432,10 @@ install -m 644 versionlock/versionlock.list $RPM_BUILD_ROOT/%{_sysconfdir}/yum/p +@@ -433,6 +442,10 @@ install -m 644 versionlock/versionlock.list $RPM_BUILD_ROOT/%{_sysconfdir}/yum/p mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/yum.repos.d touch $RPM_BUILD_ROOT%{_sysconfdir}/yum.repos.d/_local.repo @@ -6534,7 +6882,7 @@ index ce7fb64..c1d0045 100644 %clean rm -rf $RPM_BUILD_ROOT -@@ -469,8 +472,8 @@ fi +@@ -469,8 +482,8 @@ fi %{_bindir}/yum-builddep %{_bindir}/yum-config-manager %{_bindir}/yum-debug-dump @@ -6544,7 +6892,7 @@ index ce7fb64..c1d0045 100644 %{_bindir}/show-installed %{_bindir}/show-changed-rco %{_sbindir}/yum-complete-transaction -@@ -487,10 +490,19 @@ fi +@@ -487,10 +500,19 @@ fi %{_mandir}/man1/show-installed.1.* %{_mandir}/man1/yum-builddep.1.* %{_mandir}/man1/yum-debug-dump.1.* @@ -6564,7 +6912,7 @@ index ce7fb64..c1d0045 100644 %files -n yum-updateonboot %defattr(-, root, root) -@@ -502,7 +514,7 @@ fi +@@ -502,7 +524,7 @@ fi %defattr(-, root, root) %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/changelog.conf %doc COPYING @@ -6573,7 +6921,7 @@ index ce7fb64..c1d0045 100644 %{_mandir}/man1/yum-changelog.1.* %{_mandir}/man5/yum-changelog.conf.5.* -@@ -510,20 +522,20 @@ fi +@@ -510,20 +532,20 @@ fi %defattr(-, root, root) %doc COPYING %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/fastestmirror.conf @@ -6597,7 +6945,7 @@ index ce7fb64..c1d0045 100644 %{_mandir}/man1/yum-versionlock.1.* %{_mandir}/man5/yum-versionlock.conf.5.* -@@ -531,85 +543,74 @@ fi +@@ -531,85 +553,74 @@ fi %defattr(-, root, root) %doc COPYING %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/tsflags.conf @@ -6696,7 +7044,7 @@ index ce7fb64..c1d0045 100644 %files -n yum-NetworkManager-dispatcher %defattr(-, root, root) -@@ -619,13 +620,13 @@ fi +@@ -619,13 +630,13 @@ fi %files -n yum-plugin-remove-with-leaves %defattr(-, root, root) %doc COPYING @@ -6712,7 +7060,7 @@ index ce7fb64..c1d0045 100644 %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/post-transaction-actions.conf %doc plugins/post-transaction-actions/sample.action # Default *.action file dropping dir. -@@ -634,19 +635,19 @@ fi +@@ -634,19 +645,19 @@ fi %files -n yum-plugin-rpm-warm-cache %defattr(-, root, root) %doc COPYING @@ -6735,7 +7083,7 @@ index ce7fb64..c1d0045 100644 %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/show-leaves.conf %files -n yum-plugin-local -@@ -654,13 +655,13 @@ fi +@@ -654,13 +665,13 @@ fi %doc COPYING %ghost %{_sysconfdir}/yum.repos.d/_local.repo %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/local.conf @@ -6751,7 +7099,7 @@ index ce7fb64..c1d0045 100644 %{_mandir}/man1/yum-fs-snapshot.1.* %{_mandir}/man5/yum-fs-snapshot.conf.5.* -@@ -668,13 +669,20 @@ fi +@@ -668,13 +679,26 @@ fi %defattr(-, root, root) %doc COPYING %config(noreplace) %{_sysconfdir}/yum/pluginconf.d/ps.conf @@ -6771,6 +7119,12 @@ index ce7fb64..c1d0045 100644 +%config(noreplace) %{_sysconfdir}/yum/pluginconf.d/copr.conf +%{pluginhome}/copr.* +%{_mandir}/man8/yum-copr.8.* ++ ++%files -n yum-plugin-ovl ++%defattr(-, root, root) ++%doc COPYING ++%config(noreplace) %{_sysconfdir}/yum/pluginconf.d/ovl.conf ++%{pluginhome}/ovl.* %changelog * Thu Aug 10 2011 Tim Lauridsen diff --git a/yum-utils.spec b/yum-utils.spec index f9e2af2..bca5500 100644 --- a/yum-utils.spec +++ b/yum-utils.spec @@ -10,7 +10,7 @@ Summary: Utilities based around the yum package manager Name: yum-utils Version: 1.1.31 -Release: 506%{?dist} +Release: 508%{?dist} License: GPLv2+ Group: Development/Tools Source: http://yum.baseurl.org/download/yum-utils/%{name}-%{version}.tar.gz @@ -684,6 +684,15 @@ fi %{_mandir}/man8/yum-copr.8.* %changelog +* Mon Aug 10 2015 James Antill - 1.1.31-508 +- Update to latest HEAD +- Add support for weak deps. to repoquery. +- yum-builddep: respect --tolerant to ignore missing dependencies +- Add plugin for overlayfs issue workaround. Patch by Pavel Odvody. BZ#1213602 +- yum-config-manager: require \* syntax to disable all repos. BZ#1151154 +- yum-config-manager: update config file specified using -c option. BZ#1075708 +- Deal with gpgdir and gpgcadir keys, in keys plugin. + * Fri Jun 19 2015 Fedora Release Engineering - 1.1.31-506 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild @@ -848,10 +857,10 @@ fi * Sat Jan 14 2012 Fedora Release Engineering - 1.1.31-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild -* Thu Aug 13 2011 Tim Lauridsen +* Sat Aug 13 2011 Tim Lauridsen - fix traceback in auto-update-debuginfo plugin (rhbz #729982) -* Thu Aug 10 2011 Tim Lauridsen +* Wed Aug 10 2011 Tim Lauridsen - mark as 1.1.31 - remove patches @@ -867,137 +876,3 @@ fi * Mon Jan 3 2011 Tim Lauridsen - Added yumutils python module - -* Thu Dec 30 2010 Tim Lauridsen -- Added Translation support and need Requires, BuildRequires - -* Sun Nov 7 2010 Tim Lauridsen -- mark as 1.1.29 - -* Tue Aug 3 2010 Seth Vidal -- add COPYING docs to all the plugins to make fedora(and Tim) happy. :) - -* Tue Aug 3 2010 Tim Lauridsen -- mark as 1.1.28 - -* Sun Jun 6 2010 Tim Lauridsen -- mark as 1.1.27 - -* Wed Feb 10 2010 Tim Lauridsen -- mark as 1.1.26 - -* Wed Jan 27 2010 Tim Lauridsen -- mark as 1.1.25 -- add touch /etc/yum.repos.d/_local.repo to install section -- this need for for the ghost in files section of yum-plugin-local - -* Sun Nov 8 2009 Tim Lauridsen -- remove basearchonly since all versions of yum for quite some time obsolete it -- truncate changelog to last 2 years - -* Sat Nov 7 2009 Tim Lauridsen -- mark as 1.1.24 - -* Wed Nov 4 2009 Seth Vidal -- add needs-restarting - -* Mon Oct 12 2009 Seth Vidal -- add python compileall to all plugins so we get .pyc/.pyo files in them -- fixes https://bugzilla.redhat.com/show_bug.cgi?id=493174 - -* Wed Sep 2 2009 Tim Lauridsen -- mark as 1.1.23 - -* Tue May 19 2009 Tim Lauridsen -- mark as 1.1.22 - -* Mon May 18 2009 Seth Vidal -- add show-leaves plugin from Ville Skyttä - -* Wed Mar 25 2009 Tim Lauridsen -- mark as 1.1.21 - -* Mon Mar 2 2009 Tim Lauridsen -- set yum require to 3.2.21 (the 3.2.21 in rawhide is patched to yum head, so it matches the need yum 3.2.22 code) -- Added versioned Provides: yum- to make rpm/yum happy. -- yum-updateonboot is not renamed and dont need Obsoletes/Conflicts/Provides - -* Sun Mar 1 2009 Tim Lauridsen -- mark as 1.1.20 -- rename plugins from yum-name to yum-plugin-name - -* Wed Feb 25 2009 Tim Lauridsen -- Remove yum-kernel-module & yum-fedorakmod plugins (no obsoleting yet) -- Remove yum-skip-broken plugin leftovers - -* Tue Feb 3 2009 James Antill -- add auto-update-debuginfo plugin - -* Wed Dec 17 2008 Tim Lauridsen -- mark as 1.1.19 - -* Wed Dec 10 2008 Seth Vidal -- add find-repos-of-install from James' stash of misc stuff - -* Wed Oct 29 2008 Tim Lauridsen -- mark as 1.1.18 - -* Mon Oct 27 2008 Seth Vidal -- add rpm-warm-cache plugin - -* Fri Sep 19 2008 Tim Lauridsen -- removed skip-broken plugin - -* Wed Sep 17 2008 Tim Lauridsen -- mark as 1.1.17 - -* Mon Sep 8 2008 Seth Vidal -- add yum-remove-with-leaves plugin - -* Wed Aug 27 2008 Tim Lauridsen -- mark as 1.1.16 -* Wed Aug 20 2008 James Antill -- add yum-groups-manager - -* Thu Aug 7 2008 Tim Lauridsen -- mark as 1.1.15 -* Wed May 21 2008 Tim Lauridsen -- add verifytree - -* Wed May 21 2008 Tim Lauridsen - Make yum-fastestmirror %%files handle the fastestmirror-asyncore.py file -* Wed May 21 2008 Tim Lauridsen -- mark as 1.1.14 -* Fri Apr 10 2008 James Antill -- Add keys plugin - -* Fri Mar 31 2008 James Antill -- Add yum-aliases man page - -* Fri Mar 21 2008 Tim Lauridsen -- mark as 1.1.13 -* Fri Mar 21 2008 Tim Lauridsen -- mark as 1.1.12 -* Tue Mar 18 2008 Shawn Starr -- Add yum-utils.1 manual page -- Rename yum-complete-transaction manual page to 8 -- Move yum-complete-transaction to /usr/sbin - -* Sat Mar 1 2008 James Antill -- Add verify plugin - -* Wed Feb 20 2008 James Antill -- Add empty versionlock file - -* Fri Feb 1 2008 James Antill -- Add filter-data plugin - -* Wed Jan 30 2008 Tim Lauridsen -- mark as 1.1.11 - -* Sun Jan 13 2008 Seth Vidal -- add repodiff - -* Thu Jan 3 2008 Tim Lauridsen -- mark as 1.1.10 -