[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [PATCH] Update to the latest pykickstart version.
- From: David Lehman <dlehman redhat com>
- To: Discussion of Development and Customization of the Red Hat Linux Installer <anaconda-devel-list redhat com>
- Subject: Re: [PATCH] Update to the latest pykickstart version.
- Date: Wed, 08 Jun 2011 09:10:19 -0500
On Tue, 2011-06-07 at 15:54 -0400, Chris Lumens wrote:
> Now that pykickstart has the special section handling, we don't need to do
> a lot of this subclassing anymore.
Looks reasonable to me.
> ---
> 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")
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]