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
pull/18777/head
Toshio Kuratomi 8 years ago committed by Matt Clay
parent b8279e7447
commit 9aac87e08c

@ -216,18 +216,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 ..." 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 # added to stave off future warnings about apt api
import warnings import warnings
warnings.filterwarnings('ignore', "apt API not stable yet", FutureWarning) warnings.filterwarnings('ignore', "apt API not stable yet", FutureWarning)
import os
import datetime import datetime
import fnmatch import fnmatch
import itertools import itertools
import os
import re
import sys 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._text import to_native
from ansible.module_utils.urls import fetch_url
# APT related constants # APT related constants
APT_ENV_VARS = dict( APT_ENV_VARS = dict(
@ -392,16 +396,19 @@ def expand_pkgspec_from_fnmatches(m, pkgspec, cache):
if frozenset('*?[]!').intersection(pkgname_pattern): if frozenset('*?[]!').intersection(pkgname_pattern):
# handle multiarch pkgnames, the idea is that "apt*" should # handle multiarch pkgnames, the idea is that "apt*" should
# only select native packages. But "apt*:i386" should still work # 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: try:
pkg_name_cache = _non_multiarch pkg_name_cache = _non_multiarch
except NameError: 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: else:
# Create a cache of pkg_names including multiarch only once
try: try:
pkg_name_cache = _all_pkg_names pkg_name_cache = _all_pkg_names
except NameError: 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) matches = fnmatch.filter(pkg_name_cache, pkgname_pattern)
if len(matches) == 0: if len(matches) == 0:
@ -445,12 +452,13 @@ def install(m, pkgspec, cache, upgrade=False, default_release=None,
packages = "" packages = ""
pkgspec = expand_pkgspec_from_fnmatches(m, pkgspec, cache) pkgspec = expand_pkgspec_from_fnmatches(m, pkgspec, cache)
for package in pkgspec: for package in pkgspec:
name, version = package_split(package)
installed, upgradable, has_files = package_status(m, name, version, cache, state='install')
if build_dep: if build_dep:
# Let apt decide what to install # Let apt decide what to install
pkg_list.append("'%s'" % package) pkg_list.append("'%s'" % package)
continue 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): if not installed or (upgrade and upgradable):
pkg_list.append("'%s'" % package) pkg_list.append("'%s'" % package)
if installed and upgradable and version: if installed and upgradable and version:
@ -823,7 +831,6 @@ def main():
# reopen cache w/ modified config # reopen cache w/ modified config
cache.open(progress=None) cache.open(progress=None)
mtimestamp, updated_cache_time = get_updated_cache_time() mtimestamp, updated_cache_time = get_updated_cache_time()
# Cache valid time is default 0, which will update the cache if # Cache valid time is default 0, which will update the cache if
# needed and `update_cache` was set to true # needed and `update_cache` was set to true
@ -923,9 +930,6 @@ def main():
except apt.cache.FetchFailedException: except apt.cache.FetchFailedException:
module.fail_json(msg="Could not fetch updated apt files") 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__": if __name__ == "__main__":
main() main()

Loading…
Cancel
Save