138 lines
4.4 KiB
Diff
138 lines
4.4 KiB
Diff
|
From a1a8b5a886705e5f005cb7ab067e42095066ef80 Mon Sep 17 00:00:00 2001
|
||
|
From: Jochen Breuer <jbreuer@suse.de>
|
||
|
Date: Fri, 30 Aug 2019 14:20:06 +0200
|
||
|
Subject: [PATCH] Restore default behaviour of pkg list return
|
||
|
|
||
|
The default behaviour for pkg list return was to not include patches,
|
||
|
even when installing patches. Only the packages where returned. There
|
||
|
is now parameter to also return patches if that is needed.
|
||
|
|
||
|
Co-authored-by: Mihai Dinca <mdinca@suse.de>
|
||
|
---
|
||
|
salt/modules/zypperpkg.py | 34 +++++++++++++++++++++++++---------
|
||
|
1 file changed, 25 insertions(+), 9 deletions(-)
|
||
|
|
||
|
diff --git a/salt/modules/zypperpkg.py b/salt/modules/zypperpkg.py
|
||
|
index 9d16fcb0b1..6adf5f9aa3 100644
|
||
|
--- a/salt/modules/zypperpkg.py
|
||
|
+++ b/salt/modules/zypperpkg.py
|
||
|
@@ -1456,8 +1456,10 @@ def refresh_db(force=None, root=None):
|
||
|
return ret
|
||
|
|
||
|
|
||
|
-def _find_types(pkgs):
|
||
|
+def _detect_includes(pkgs, inclusion_detection):
|
||
|
"""Form a package names list, find prefixes of packages types."""
|
||
|
+ if not inclusion_detection:
|
||
|
+ return None
|
||
|
return sorted({pkg.split(":", 1)[0] for pkg in pkgs if len(pkg.split(":", 1)) == 2})
|
||
|
|
||
|
|
||
|
@@ -1473,6 +1475,7 @@ def install(
|
||
|
ignore_repo_failure=False,
|
||
|
no_recommends=False,
|
||
|
root=None,
|
||
|
+ inclusion_detection=False,
|
||
|
**kwargs
|
||
|
):
|
||
|
"""
|
||
|
@@ -1588,6 +1591,9 @@ def install(
|
||
|
|
||
|
.. versionadded:: 2018.3.0
|
||
|
|
||
|
+ inclusion_detection:
|
||
|
+ Detect ``includes`` based on ``sources``
|
||
|
+ By default packages are always included
|
||
|
|
||
|
Returns a dict containing the new package names and versions::
|
||
|
|
||
|
@@ -1663,7 +1669,8 @@ def install(
|
||
|
|
||
|
diff_attr = kwargs.get("diff_attr")
|
||
|
|
||
|
- includes = _find_types(targets)
|
||
|
+ includes = _detect_includes(targets, inclusion_detection)
|
||
|
+
|
||
|
old = (
|
||
|
list_pkgs(attr=diff_attr, root=root, includes=includes)
|
||
|
if not downloadonly
|
||
|
@@ -1964,7 +1971,7 @@ def upgrade(
|
||
|
return ret
|
||
|
|
||
|
|
||
|
-def _uninstall(name=None, pkgs=None, root=None):
|
||
|
+def _uninstall(inclusion_detection, name=None, pkgs=None, root=None):
|
||
|
"""
|
||
|
Remove and purge do identical things but with different Zypper commands,
|
||
|
this function performs the common logic.
|
||
|
@@ -1974,7 +1981,7 @@ def _uninstall(name=None, pkgs=None, root=None):
|
||
|
except MinionError as exc:
|
||
|
raise CommandExecutionError(exc)
|
||
|
|
||
|
- includes = _find_types(pkg_params.keys())
|
||
|
+ includes = _detect_includes(pkg_params.keys(), inclusion_detection)
|
||
|
old = list_pkgs(root=root, includes=includes)
|
||
|
targets = []
|
||
|
for target in pkg_params:
|
||
|
@@ -2037,7 +2044,7 @@ def normalize_name(name):
|
||
|
|
||
|
|
||
|
def remove(
|
||
|
- name=None, pkgs=None, root=None, **kwargs
|
||
|
+ name=None, pkgs=None, root=None, inclusion_detection=False, **kwargs
|
||
|
): # pylint: disable=unused-argument
|
||
|
"""
|
||
|
.. versionchanged:: 2015.8.12,2016.3.3,2016.11.0
|
||
|
@@ -2069,8 +2076,11 @@ def remove(
|
||
|
root
|
||
|
Operate on a different root directory.
|
||
|
|
||
|
- .. versionadded:: 0.16.0
|
||
|
+ inclusion_detection:
|
||
|
+ Detect ``includes`` based on ``pkgs``
|
||
|
+ By default packages are always included
|
||
|
|
||
|
+ .. versionadded:: 0.16.0
|
||
|
|
||
|
Returns a dict containing the changes.
|
||
|
|
||
|
@@ -2082,10 +2092,12 @@ def remove(
|
||
|
salt '*' pkg.remove <package1>,<package2>,<package3>
|
||
|
salt '*' pkg.remove pkgs='["foo", "bar"]'
|
||
|
"""
|
||
|
- return _uninstall(name=name, pkgs=pkgs, root=root)
|
||
|
+ return _uninstall(inclusion_detection, name=name, pkgs=pkgs, root=root)
|
||
|
|
||
|
|
||
|
-def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-argument
|
||
|
+def purge(
|
||
|
+ name=None, pkgs=None, root=None, inclusion_detection=False, **kwargs
|
||
|
+): # pylint: disable=unused-argument
|
||
|
"""
|
||
|
.. versionchanged:: 2015.8.12,2016.3.3,2016.11.0
|
||
|
On minions running systemd>=205, `systemd-run(1)`_ is now used to
|
||
|
@@ -2117,6 +2129,10 @@ def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-
|
||
|
root
|
||
|
Operate on a different root directory.
|
||
|
|
||
|
+ inclusion_detection:
|
||
|
+ Detect ``includes`` based on ``pkgs``
|
||
|
+ By default packages are always included
|
||
|
+
|
||
|
.. versionadded:: 0.16.0
|
||
|
|
||
|
|
||
|
@@ -2130,7 +2146,7 @@ def purge(name=None, pkgs=None, root=None, **kwargs): # pylint: disable=unused-
|
||
|
salt '*' pkg.purge <package1>,<package2>,<package3>
|
||
|
salt '*' pkg.purge pkgs='["foo", "bar"]'
|
||
|
"""
|
||
|
- return _uninstall(name=name, pkgs=pkgs, root=root)
|
||
|
+ return _uninstall(inclusion_detection, name=name, pkgs=pkgs, root=root)
|
||
|
|
||
|
|
||
|
def list_holds(pattern=None, full=True, root=None, **kwargs):
|
||
|
--
|
||
|
2.39.2
|
||
|
|
||
|
|