diff options
author | Semyon Deviatkin <devjatkin@gmail.com> | 2015-05-18 08:10:22 +0000 |
---|---|---|
committer | Toshio Kuratomi <toshio@fedoraproject.org> | 2015-05-26 12:37:59 -0700 |
commit | aae2ae8478d9da4528ce299157fd2147b6587030 (patch) | |
tree | 38a907c5efe1eeaa3be7d1af5e35d106e329fa55 | |
parent | 03a02e03347ba1968b22ed04e87934012b218834 (diff) | |
download | ansible-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.py | 12 |
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 |