Handle dnf immutable mutable datatypes (#47434)
* Handle dnf immutable mutable datatypes
In DNF < 3.0 are lists, and modifying them works
In DNF >= 3.0 < 3.6 are lists, but modifying them doesn't work
In DNF >= 3.6 have been turned into tuples, to communicate that
modifying them doesn't work
Further explanation of this is available via Adam Williamson from
the Fedora QA Team.
https://www.happyassassin.net/2018/06/27/adams-debugging-adventures-the-immutable-mutable-object/
Signed-off-by: Adam Miller <admiller@redhat.com>
(cherry picked from commit 70025e7b56
)
* add backport changelog
Signed-off-by: Adam Miller <admiller@redhat.com>
This commit is contained in:
parent
7812c065f4
commit
b14c45a16c
2 changed files with 19 additions and 3 deletions
3
changelogs/fragments/dnf-immutable-mutable.yaml
Normal file
3
changelogs/fragments/dnf-immutable-mutable.yaml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
minor_changes:
|
||||
- "dnf - properly handle modifying the enable/disable excludes data field"
|
|
@ -489,13 +489,26 @@ class DnfModule(YumDnf):
|
|||
# Set installroot
|
||||
conf.installroot = installroot
|
||||
|
||||
# Handle different DNF versions immutable mutable datatypes and
|
||||
# dnf v1/v2/v3
|
||||
#
|
||||
# In DNF < 3.0 are lists, and modifying them works
|
||||
# In DNF >= 3.0 < 3.6 are lists, but modifying them doesn't work
|
||||
# In DNF >= 3.6 have been turned into tuples, to communicate that modifying them doesn't work
|
||||
#
|
||||
# https://www.happyassassin.net/2018/06/27/adams-debugging-adventures-the-immutable-mutable-object/
|
||||
#
|
||||
# Set excludes
|
||||
if self.exclude:
|
||||
conf.exclude(self.exclude)
|
||||
|
||||
_excludes = list(conf.exclude)
|
||||
_excludes.extend(self.exclude)
|
||||
conf.exclude = _excludes
|
||||
# Set disable_excludes
|
||||
if self.disable_excludes:
|
||||
conf.disable_excludes.append(self.disable_excludes)
|
||||
_disable_excludes = list(conf.disable_excludes)
|
||||
if self.disable_excludes not in _disable_excludes:
|
||||
_disable_excludes.append(self.disable_excludes)
|
||||
conf.disable_excludes = _disable_excludes
|
||||
|
||||
# Set releasever
|
||||
if self.releasever is not None:
|
||||
|
|
Loading…
Reference in a new issue