mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-24 13:50:22 -07:00
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
This commit is contained in:
parent
b8279e7447
commit
9aac87e08c
1 changed files with 15 additions and 11 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue