mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Add version_cmp for FreeBSD pkg.
This commit is contained in:
parent
ad7045ad3b
commit
f9ef30aabe
2 changed files with 40 additions and 0 deletions
|
@ -1670,3 +1670,35 @@ def updating(name,
|
|||
python_shell=False,
|
||||
output_loglevel='trace'
|
||||
)
|
||||
|
||||
|
||||
def version_cmp(pkg1, pkg2, ignore_epoch=False):
|
||||
'''
|
||||
Do a cmp-style comparison on two packages. Return -1 if pkg1 < pkg2, 0 if
|
||||
pkg1 == pkg2, and 1 if pkg1 > pkg2. Return None if there was a problem
|
||||
making the comparison.
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt '*' pkg.version_cmp '2.1.11' '2.1.12'
|
||||
'''
|
||||
# Don't worry about ignore_epoch since we're shelling out to pkg.
|
||||
sym = {
|
||||
'<': -1,
|
||||
'>': 1,
|
||||
'=': 0,
|
||||
}
|
||||
try:
|
||||
cmd = ['pkg', 'version', '--test-version', pkg1, pkg2]
|
||||
ret = __salt__['cmd.run_all'](cmd,
|
||||
output_loglevel='trace',
|
||||
python_shell=False,
|
||||
ignore_retcode=True)
|
||||
except Exception as exc:
|
||||
log.error(exc)
|
||||
|
||||
if ret['stdout'] in sym:
|
||||
return sym[ret['stdout']]
|
||||
return None
|
||||
|
|
|
@ -165,6 +165,10 @@ def _fulfills_version_spec(versions, oper, desired_version,
|
|||
otherwise returns False
|
||||
'''
|
||||
cmp_func = __salt__.get('pkg.version_cmp')
|
||||
# stripping "with_origin" dict wrapper
|
||||
if salt.utils.is_freebsd():
|
||||
if isinstance(versions, dict) and 'version' in versions:
|
||||
versions = versions['version']
|
||||
for ver in versions:
|
||||
if salt.utils.compare_versions(ver1=ver,
|
||||
oper=oper,
|
||||
|
@ -1241,10 +1245,14 @@ def installed(
|
|||
failed_hold = None
|
||||
if targets or to_reinstall:
|
||||
reinstall = bool(to_reinstall)
|
||||
force = False
|
||||
if salt.utils.is_freebsd():
|
||||
force = True # Downgrades need to be forced.
|
||||
try:
|
||||
pkg_ret = __salt__['pkg.install'](name,
|
||||
refresh=refresh,
|
||||
version=version,
|
||||
force=force,
|
||||
fromrepo=fromrepo,
|
||||
skip_verify=skip_verify,
|
||||
pkgs=pkgs,
|
||||
|
|
Loading…
Add table
Reference in a new issue