diff options
author | Toshio Kuratomi <a.badger@gmail.com> | 2016-10-22 08:36:29 -0700 |
---|---|---|
committer | Toshio Kuratomi <a.badger@gmail.com> | 2016-10-22 08:56:40 -0700 |
commit | fb1efed96e139316cba5d15493ef76ff0fb23055 (patch) | |
tree | 463338359590889dfcbd6f3a05a5b803aa687a4c | |
parent | de71913bcc75a0efe450926bfafc34a6cda024f3 (diff) | |
download | ansible-modules-core-fb1efed96e139316cba5d15493ef76ff0fb23055.tar.gz |
Fix builddep when a source package exists without a binary package
builddep only requires a source package to be in the repos but our code
was checking for a binary package before running buiddep. Reversing the
order makes it work correctly.
Fixes #4519
-rw-r--r-- | packaging/os/apt.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/packaging/os/apt.py b/packaging/os/apt.py index 72709420..5b62721c 100644 --- a/packaging/os/apt.py +++ b/packaging/os/apt.py @@ -190,18 +190,22 @@ stderr: sample: "AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to ..." ''' -import traceback # added to stave off future warnings about apt api import warnings warnings.filterwarnings('ignore', "apt API not stable yet", FutureWarning) -import os import datetime import fnmatch import itertools +import os +import re import sys +import time +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.pycompat24 import get_exception from ansible.module_utils._text import to_native +from ansible.module_utils.urls import fetch_url # APT related constants APT_ENV_VARS = dict( @@ -366,16 +370,19 @@ def expand_pkgspec_from_fnmatches(m, pkgspec, cache): if frozenset('*?[]!').intersection(pkgname_pattern): # handle multiarch pkgnames, the idea is that "apt*" should # only select native packages. But "apt*:i386" should still work - if not ":" in pkgname_pattern: + if ":" not in pkgname_pattern: + # Filter the multiarch packages from the cache only once try: pkg_name_cache = _non_multiarch except NameError: - pkg_name_cache = _non_multiarch = [pkg.name for pkg in cache if not ':' in pkg.name] + pkg_name_cache = _non_multiarch = [pkg.name for pkg in cache if ':' not in pkg.name] # noqa: F841 else: + # Create a cache of pkg_names including multiarch only once try: pkg_name_cache = _all_pkg_names except NameError: - pkg_name_cache = _all_pkg_names = [pkg.name for pkg in cache] + pkg_name_cache = _all_pkg_names = [pkg.name for pkg in cache] # noqa: F841 + matches = fnmatch.filter(pkg_name_cache, pkgname_pattern) if len(matches) == 0: @@ -419,12 +426,13 @@ def install(m, pkgspec, cache, upgrade=False, default_release=None, packages = "" pkgspec = expand_pkgspec_from_fnmatches(m, pkgspec, cache) for package in pkgspec: - name, version = package_split(package) - installed, upgradable, has_files = package_status(m, name, version, cache, state='install') if build_dep: # Let apt decide what to install pkg_list.append("'%s'" % package) continue + + name, version = package_split(package) + installed, upgradable, has_files = package_status(m, name, version, cache, state='install') if not installed or (upgrade and upgradable): pkg_list.append("'%s'" % package) if installed and upgradable and version: @@ -797,7 +805,6 @@ def main(): # reopen cache w/ modified config cache.open(progress=None) - mtimestamp, updated_cache_time = get_updated_cache_time() # Cache valid time is default 0, which will update the cache if # needed and `update_cache` was set to true @@ -897,9 +904,6 @@ def main(): except apt.cache.FetchFailedException: module.fail_json(msg="Could not fetch updated apt files") -# import module snippets -from ansible.module_utils.basic import * -from ansible.module_utils.urls import * if __name__ == "__main__": main() |