From 6d8437617c2173a00cef9d8f6335db51cbf493fe Mon Sep 17 00:00:00 2001 From: David Wittman Date: Fri, 27 Mar 2015 11:07:51 -0500 Subject: [PATCH] Set disabled repos before enabled repos The ordering of disabling/enabling yum repositories matters, and the yum module was mixing and matching the order. Specifically, when yum-utils isn't installed, the codepath which uses the yum python module was incorrectly ordering enabling and disabling. The preferred order is to disable repositories and then enable them to prevent clobbering. This was previously discussed in ansible/ansible#5255 and incompletely addressed in 0cca4a3. --- packaging/os/yum.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packaging/os/yum.py b/packaging/os/yum.py index 671dbf7fde3..a0a3965d503 100644 --- a/packaging/os/yum.py +++ b/packaging/os/yum.py @@ -187,10 +187,10 @@ def is_installed(module, repoq, pkgspec, conf_file, qf=def_qf, en_repos=[], dis_ pkgs = [] try: my = yum_base(conf_file) - for rid in en_repos: - my.repos.enableRepo(rid) for rid in dis_repos: my.repos.disableRepo(rid) + for rid in en_repos: + my.repos.enableRepo(rid) e,m,u = my.rpmdb.matchPackageNames([pkgspec]) pkgs = e + m @@ -226,10 +226,10 @@ def is_available(module, repoq, pkgspec, conf_file, qf=def_qf, en_repos=[], dis_ pkgs = [] try: my = yum_base(conf_file) - for rid in en_repos: - my.repos.enableRepo(rid) for rid in dis_repos: my.repos.disableRepo(rid) + for rid in en_repos: + my.repos.enableRepo(rid) e,m,u = my.pkgSack.matchPackageNames([pkgspec]) pkgs = e + m @@ -269,10 +269,10 @@ def is_update(module, repoq, pkgspec, conf_file, qf=def_qf, en_repos=[], dis_rep try: my = yum_base(conf_file) - for rid in en_repos: - my.repos.enableRepo(rid) for rid in dis_repos: my.repos.disableRepo(rid) + for rid in en_repos: + my.repos.enableRepo(rid) pkgs = my.returnPackagesByDep(pkgspec) + my.returnInstalledPackagesByDep(pkgspec) if not pkgs: @@ -313,10 +313,10 @@ def what_provides(module, repoq, req_spec, conf_file, qf=def_qf, en_repos=[], d pkgs = [] try: my = yum_base(conf_file) - for rid in en_repos: - my.repos.enableRepo(rid) for rid in dis_repos: my.repos.disableRepo(rid) + for rid in en_repos: + my.repos.enableRepo(rid) pkgs = my.returnPackagesByDep(req_spec) + my.returnInstalledPackagesByDep(req_spec) if not pkgs: