summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToshio Kuratomi <a.badger@gmail.com>2016-10-22 08:36:29 -0700
committerToshio Kuratomi <a.badger@gmail.com>2016-10-22 08:56:40 -0700
commitfb1efed96e139316cba5d15493ef76ff0fb23055 (patch)
tree463338359590889dfcbd6f3a05a5b803aa687a4c
parentde71913bcc75a0efe450926bfafc34a6cda024f3 (diff)
downloadansible-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.py26
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()