[Yum-devel] [PATCH] Deal with canCoInstall problems for ppc64 vs ppc64p7. BZ 859202.
tim.lauridsen at gmail.com
tim.lauridsen at gmail.com
Wed Oct 17 05:20:53 UTC 2012
On Tue, Oct 16, 2012 at 11:04 PM, James Antill <james at and.org> wrote:
> ---
> yum/__init__.py | 32 ++++++++++++++++++++++++++++++++
> 1 files changed, 32 insertions(+), 0 deletions(-)
>
> diff --git a/yum/__init__.py b/yum/__init__.py
> index be5a608..e43bf3c 100644
> --- a/yum/__init__.py
> +++ b/yum/__init__.py
> @@ -4329,6 +4329,28 @@ much more problems).
>
> return False
>
> + def _valid_install_arch(self, po, ipkgs=None):
> + ''' See if we can install this arch of package, mainly for
> + i386 vs. i586 or ppc64 vs. ppc64 etc. '''
> + if not ipkgs:
> + ipkgs = self.rpmdb.searchNames([po.name])
> + for txmbr in self.tsInfo.matchNaevr(po.name):
> + if txmbr.output_state not in TS_INSTALL_STATES:
> + continue
> + ipkgs.append(txmbr.po)
> +
> + for ipkg in ipkgs:
> + if po.arch == ipkg.arch:
> + continue
> + if not po.verEQ(ipkg):
> + continue
> + if canCoinstall(po.arch, ipkg.arch):
> + continue
> + self.verbose_logger.log(logginglevels.INFO_2,
> + _("Package: %s - can't co-install with %s"), po, ipkg)
> + return False
> + return True
> +
> def install(self, po=None, **kwargs):
> """Mark the specified item for installation. If a package
> object is given, mark it for installation. Otherwise, mark
> @@ -4488,6 +4510,9 @@ much more problems).
> txmbrs = self.update(po=po)
> tx_return.extend(txmbrs)
> continue
> +
> + if not self._valid_install_arch(po, ipkgs):
> + continue
>
> # Make sure we're not installing a package which is
> obsoleted by
> # something else in the repo. Unless there is a obsoletion
> loop,
> @@ -4861,6 +4886,9 @@ much more problems).
> tx_return.append(txmbr)
>
> for available_pkg in availpkgs:
> + if not self._valid_install_arch(available_pkg):
> + continue
> +
> # "Just do it" if it's a local pkg.
> if isinstance(available_pkg, YumLocalPackage):
> n = available_pkg.name
> @@ -5373,6 +5401,10 @@ much more problems).
> # installed version. Indexed fromn the latest installed pkgtup.
> downgrade_apkgs = {}
> for pkg in sorted(apkgs):
> + # We are cleverer here, I think...
> + # if not self._valid_install_arch(pkg, ipkgs):
> + # continue
> +
> na = (pkg.name, pkg.arch)
>
> # Here we allow downgrades from .i386 => .noarch, or .i586 =>
> .i386
> --
> 1.7.6.5
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
>
ACK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.baseurl.org/pipermail/yum-devel/attachments/20121017/c991e1ae/attachment.html>
More information about the Yum-devel
mailing list