[PATCH] handle bug excluding groups

Alexander Todorov atodorov at redhat.com
Thu Jan 7 13:05:50 UTC 2010


Hello,
there's a bug in handling exclusion of groups in pykickstart. Automated test
case template for SNAKE which contains:
ks.packages.add(['*'])
ks.packages.add(['- at conflicts'])

is generating incorrect ks.cfg:
%packages --ignoremissing
*

The conflicts group is a new group in RHEL5 which lists all packages conflicting
with packages from the base channel. Those are for example samba3x vs. samba,
freeradius2 vs. freeradius, etc. It is expected that QE will perform test cases
like:
@everything
- at conflicts

to verify that there are no unresolved dependencies or conflicts between all
base channel packages.

The comments in the code says "Support syntax for removing a previously included
group" but I think pykickstart doesn't know that * includes packages from
@conflicts as well.

Here are two different patches that fix the issue (and verified that generate
expected ks.cfg).

This one is proposed by James Laska:
--- /usr/lib/python2.5/site-packages/pykickstart/parser.py	2010-01-07
04:16:41.000000000 -0500
+++ /tmp/parser.py	2010-01-07 04:16:29.000000000 -0500
@@ -365,4 +365,3 @@
                         pass
-                else:
-                    newExcludedSet.add(stripped[1:])
+                newExcludedSet.add(stripped[1:])
             else:


This one is from myself:

diff --git a/pykickstart/parser.py b/pykickstart/parser.py
index 2e27f03..c03c666 100644
--- a/pykickstart/parser.py
+++ b/pykickstart/parser.py
@@ -365,6 +365,7 @@ class Packages(KickstartObject):
                 if stripped[1] == "@":
                     try:
                         self.groupList = filter(lambda g: g.name !=
stripped[2:], self.groupList)
+                        newExcludedSet.add(stripped[2:])
                     except ValueError:
                         pass
                 else:


--
Alexander.




More information about the Kickstart-list mailing list