Merge branch 'issue_3421_apt_pkg_iU' into devel
This commit is contained in:
commit
c6fdb85d88
1 changed files with 19 additions and 8 deletions
|
@ -136,6 +136,13 @@ APTITUDE_ZERO = "0 packages upgraded, 0 newly installed, 0 to remove and 0 not u
|
||||||
APT_LISTS_PATH = "/var/lib/apt/lists"
|
APT_LISTS_PATH = "/var/lib/apt/lists"
|
||||||
APT_UPDATE_SUCCESS_STAMP_PATH = "/var/lib/apt/periodic/update-success-stamp"
|
APT_UPDATE_SUCCESS_STAMP_PATH = "/var/lib/apt/periodic/update-success-stamp"
|
||||||
|
|
||||||
|
HAS_PYTHON_APT = True
|
||||||
|
try:
|
||||||
|
import apt
|
||||||
|
import apt_pkg
|
||||||
|
except:
|
||||||
|
HAS_PYTHON_APT = False
|
||||||
|
|
||||||
def package_split(pkgspec):
|
def package_split(pkgspec):
|
||||||
parts = pkgspec.split('=')
|
parts = pkgspec.split('=')
|
||||||
if len(parts) > 1:
|
if len(parts) > 1:
|
||||||
|
@ -145,7 +152,12 @@ def package_split(pkgspec):
|
||||||
|
|
||||||
def package_status(m, pkgname, version, cache, state):
|
def package_status(m, pkgname, version, cache, state):
|
||||||
try:
|
try:
|
||||||
|
# get the package from the cache, as well as the
|
||||||
|
# the low-level apt_pkg.Package object which contains
|
||||||
|
# state fields not directly acccesible from the
|
||||||
|
# higher-level apt.package.Package object.
|
||||||
pkg = cache[pkgname]
|
pkg = cache[pkgname]
|
||||||
|
ll_pkg = cache._cache[pkgname] # the low-level package object
|
||||||
except KeyError:
|
except KeyError:
|
||||||
if state == 'install':
|
if state == 'install':
|
||||||
m.fail_json(msg="No package matching '%s' is available" % pkgname)
|
m.fail_json(msg="No package matching '%s' is available" % pkgname)
|
||||||
|
@ -158,16 +170,18 @@ def package_status(m, pkgname, version, cache, state):
|
||||||
|
|
||||||
if version:
|
if version:
|
||||||
try :
|
try :
|
||||||
return pkg.is_installed and fnmatch.fnmatch(pkg.installed.version, version), False, has_files
|
return ll_pkg.current_state == apt_pkg.CURSTATE_INSTALLED and \
|
||||||
|
fnmatch.fnmatch(pkg.installed.version, version), False, has_files
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
#assume older version of python-apt is installed
|
#assume older version of python-apt is installed
|
||||||
return pkg.isInstalled and fnmatch.fnmatch(pkg.installedVersion, version), False, has_files
|
return ll_pkg.current_state == apt_pkg.CURSTATE_INSTALLED and \
|
||||||
|
fnmatch.fnmatch(pkg.installedVersion, version), False, has_files
|
||||||
else:
|
else:
|
||||||
try :
|
try :
|
||||||
return pkg.is_installed, pkg.is_upgradable, has_files
|
return ll_pkg.current_state == apt_pkg.CURSTATE_INSTALLED, pkg.is_upgradable, has_files
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
#assume older version of python-apt is installed
|
#assume older version of python-apt is installed
|
||||||
return pkg.isInstalled, pkg.isUpgradable, has_files
|
return ll_pkg.current_state == apt_pkg.CURSTATE_INSTALLED, pkg.isUpgradable, has_files
|
||||||
|
|
||||||
def expand_pkgspec_from_fnmatches(m, pkgspec, cache):
|
def expand_pkgspec_from_fnmatches(m, pkgspec, cache):
|
||||||
new_pkgspec = []
|
new_pkgspec = []
|
||||||
|
@ -308,10 +322,7 @@ def main():
|
||||||
supports_check_mode = True
|
supports_check_mode = True
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
if not HAS_PYTHON_APT:
|
||||||
import apt
|
|
||||||
import apt_pkg
|
|
||||||
except:
|
|
||||||
module.fail_json(msg="Could not import python modules: apt, apt_pkg. Please install python-apt package.")
|
module.fail_json(msg="Could not import python modules: apt, apt_pkg. Please install python-apt package.")
|
||||||
|
|
||||||
global APTITUDE_CMD
|
global APTITUDE_CMD
|
||||||
|
|
Loading…
Reference in a new issue