summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSemyon Deviatkin <devjatkin@gmail.com>2015-05-18 08:10:22 +0000
committerToshio Kuratomi <toshio@fedoraproject.org>2015-05-26 12:37:59 -0700
commitaae2ae8478d9da4528ce299157fd2147b6587030 (patch)
tree38a907c5efe1eeaa3be7d1af5e35d106e329fa55
parent03a02e03347ba1968b22ed04e87934012b218834 (diff)
downloadansible-modules-core-aae2ae8478d9da4528ce299157fd2147b6587030.tar.gz
Fix issue #1230
When virtual package providing only one package, look up status of target package
-rw-r--r--packaging/os/apt.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/packaging/os/apt.py b/packaging/os/apt.py
index 584177a9..61e2fc3f 100644
--- a/packaging/os/apt.py
+++ b/packaging/os/apt.py
@@ -228,8 +228,16 @@ def package_status(m, pkgname, version, cache, state):
except KeyError:
if state == 'install':
try:
- if cache.get_providing_packages(pkgname):
- return False, True, False
+ provided_packages = cache.get_providing_packages(pkgname)
+ if provided_packages:
+ is_installed = False
+ # when virtual package providing only one package, look up status of target package
+ if cache.is_virtual_package(pkgname) and len(provided_packages) == 1:
+ package = provided_packages[0]
+ installed, upgradable, has_files = package_status(m, package.name, version, cache, state='install')
+ if installed:
+ is_installed = True
+ return is_installed, True, False
m.fail_json(msg="No package matching '%s' is available" % pkgname)
except AttributeError:
# python-apt version too old to detect virtual packages