[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Update to the latest pykickstart version.



Now that pykickstart has the special section handling, we don't need to do
a lot of this subclassing anymore.
---
 anaconda.spec.in        |    2 +-
 pyanaconda/kickstart.py |   73 +++++++++++-----------------------------------
 2 files changed, 19 insertions(+), 56 deletions(-)

diff --git a/anaconda.spec.in b/anaconda.spec.in
index 079e7bd..90f01f3 100644
--- a/anaconda.spec.in
+++ b/anaconda.spec.in
@@ -28,7 +28,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 %define intltoolver 0.31.2-3
 %define libnlver 1.0
 %define libselinuxver 1.6
-%define pykickstartver 1.81
+%define pykickstartver 1.99.0
 %define rpmpythonver 4.2-0.61
 %define slangver 2.0.6-2
 %define yumver 2.9.2
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index a0adaa3..121aa0b 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -45,11 +45,13 @@ import upgrade
 import pykickstart.commands as commands
 from storage.devices import *
 from scdate.core import zonetab
+
 from pykickstart.base import KickstartCommand, BaseData
 from pykickstart.constants import *
-from pykickstart.errors import *
-from pykickstart.parser import *
-from pykickstart.version import *
+from pykickstart.errors import formatErrorMsg, KickstartError, KickstartValueError, KickstartParseError
+from pykickstart.parser import Group, KickstartParser, Packages, Script
+from pykickstart.sections import PreScriptSection, NullSection
+from pykickstart.version import returnClassForVersion
 
 import gettext
 _ = lambda x: gettext.ldgettext("anaconda", x)
@@ -61,6 +63,8 @@ stdoutLog = logging.getLogger("anaconda.stdout")
 from anaconda_log import logger, logLevelMap, setHandlersLevel,\
     DEFAULT_TTY_LEVEL
 
+packagesSeen = False
+
 class AnacondaKSScript(Script):
     def run(self, chroot, serial, intf = None):
         if self.inChroot:
@@ -131,14 +135,6 @@ class AnacondaKSScript(Script):
         if serial or self.logfile is not None:
             os.chmod("%s" % messages, 0600)
 
-class AnacondaKSPackages(Packages):
-    def __init__(self):
-        Packages.__init__(self)
-
-        # Has the %packages section been seen at all?
-        self.seen = False
-
-
 def getEscrowCertificate(anaconda, url):
     if not url:
         return None
@@ -1146,7 +1142,6 @@ superclass = returnClassForVersion()
 class AnacondaKSHandler(superclass):
     def __init__ (self, anaconda):
         superclass.__init__(self, commandUpdates=commandMap, dataUpdates=dataMap)
-        self.packages = AnacondaKSPackages()
 
         self.anaconda = anaconda
         self.onPart = {}
@@ -1204,54 +1199,20 @@ class AnacondaPreParser(KickstartParser):
                   missingIncludeIsFatal=True):
         KickstartParser.__init__(self, handler, missingIncludeIsFatal=False)
 
-    def addScript (self):
-        if self._script["type"] != KS_SCRIPT_PRE:
-            return
-
-        s = AnacondaKSScript (self._script["body"], type=self._script["type"],
-                              interp=self._script["interp"],
-                              lineno=self._script["lineno"],
-                              inChroot=self._script["chroot"],
-                              logfile=self._script["log"],
-                              errorOnFail=self._script["errorOnFail"])
-        self.handler.scripts.append(s)
-
-    def addPackages (self, line):
-        pass
-
     def handleCommand (self, lineno, args):
         pass
 
-    def handlePackageHdr (self, lineno, args):
-        pass
-
-    def handleScriptHdr (self, lineno, args):
-        if not args[0] == "%pre":
-            return
-
-        KickstartParser.handleScriptHdr(self, lineno, args)
+    def setupSections(self):
+        self.registerSection(PreScriptSection(self.handler, dataObj=AnacondaKSScript))
+        self.registerSection(NullSection(self.handler, sectionOpen="%post"))
+        self.registerSection(NullSection(self.handler, sectionOpen="%traceback"))
+        self.registerSection(NullSection(self.handler, sectionOpen="%packages"))
 
 class AnacondaKSParser(KickstartParser):
     def __init__ (self, handler, followIncludes=True, errorsAreFatal=True,
                   missingIncludeIsFatal=True):
         KickstartParser.__init__(self, handler)
 
-    def addScript (self):
-        if string.join(self._script["body"]).strip() == "":
-            return
-
-        s = AnacondaKSScript (self._script["body"], type=self._script["type"],
-                              interp=self._script["interp"],
-                              lineno=self._script["lineno"],
-                              inChroot=self._script["chroot"],
-                              logfile=self._script["log"],
-                              errorOnFail=self._script["errorOnFail"])
-        self.handler.scripts.append(s)
-
-    def handlePackageHdr (self, lineno, args):
-        KickstartParser.handlePackageHdr (self, lineno, args)
-        self.handler.packages.seen = True
-
     def handleCommand (self, lineno, args):
         if not self.handler:
             return
@@ -1331,6 +1292,8 @@ def parseKickstart(anaconda, file):
                               "configuration file:\n\n%s") % e)
             sys.exit(1)
 
+    global packagesSeen
+    packagesSeen = ksparser.getSection("%packages").timesSeen > 0
     return handler
 
 def runPostScripts(anaconda):
@@ -1386,9 +1349,9 @@ def selectPackages(anaconda):
     # If no %packages header was seen, use the installclass's default group
     # selections.  This can also be explicitly specified with %packages
     # --default.  Otherwise, select whatever was given (even if it's nothing).
-    if not ksdata.packages.seen or ksdata.packages.default:
+    if not packagesSeen or ksdata.packages.default:
         anaconda.instClass.setGroupSelection(anaconda)
-        if not ksdata.packages.seen:
+        if not packagesSeen:
             return
 
     for pkg in ksdata.packages.packageList:
@@ -1494,12 +1457,12 @@ def setSteps(anaconda):
         dispatch.skip_steps("tasksel", "group-selection")
 
         # Special check for this, since it doesn't make any sense.
-        if ksdata.packages.seen:
+        if packagesSeen:
             warnings.warn("Ignoring contents of %packages section due to upgrade.")
     elif havePackages(ksdata.packages):
         dispatch.skip_steps("tasksel", "group-selection")
     else:
-        if ksdata.packages.seen:
+        if packagesSeen:
             dispatch.skip_steps("tasksel", "group-selection")
         else:
             dispatch.request_steps("tasksel", "group-selection")
-- 
1.7.4.1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]