summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2011-01-20 13:00:31 -0500
committerChris Lumens <clumens@redhat.com>2011-01-25 10:31:40 -0500
commitbbb30b26655f34b187ec3fd8bcfe283044fe02a4 (patch)
tree327f0f8ce1863335bc95e8109c54101a0f5cbf41
parent43d57dc16e4fab2cde680812f27d3cf32888758c (diff)
Don't call preprocessKickstart from within anaconda as well.
Since the loader is doing this now, we can just call it once there, then pass the preprocessed file location into anaconda via the --kickstart parameter.
-rw-r--r--loader/kickstart.c10
-rw-r--r--loader/kickstart.h2
-rw-r--r--loader/loader.c10
-rw-r--r--pyanaconda/kickstart.py9
4 files changed, 14 insertions, 17 deletions
diff --git a/loader/kickstart.c b/loader/kickstart.c
index 337443245..298b3bb13 100644
--- a/loader/kickstart.c
+++ b/loader/kickstart.c
@@ -967,11 +967,11 @@ cleanup:
Py_XDECREF(proxyObj);
}
-int runKickstart(struct loaderData_s * loaderData, const char *file) {
+char *runKickstart(struct loaderData_s * loaderData, const char *file) {
PyObject *versionMod, *parserMod = NULL;
PyObject *handler, *parser;
PyObject *processedFile;
- int rc = 0;
+ char *retval = NULL;
PyObject *callable = NULL;
@@ -1014,9 +1014,9 @@ int runKickstart(struct loaderData_s * loaderData, const char *file) {
*/
for (cmd = ksTable; *cmd != NULL; cmd++)
(*cmd)(loaderData, handler);
- }
- rc = 1;
+ retval = strdup(PyString_AsString(processedFile));
+ }
quit:
Py_XDECREF(constantsMod);
@@ -1024,7 +1024,7 @@ quit:
Py_XDECREF(callable);
Py_XDECREF(parserMod);
Py_Finalize();
- return rc;
+ return retval;
}
/* vim:set sw=4 sts=4 et: */
diff --git a/loader/kickstart.h b/loader/kickstart.h
index 8f1c7343b..8163cb797 100644
--- a/loader/kickstart.h
+++ b/loader/kickstart.h
@@ -23,7 +23,7 @@
int isKickstartFileRemote(char *ksFile);
void getKickstartFile(struct loaderData_s * loaderData);
-int runKickstart(struct loaderData_s * loaderData, const char *file);
+char *runKickstart(struct loaderData_s * loaderData, const char *file);
int getKickstartFromBlockDevice(char *device, char *path);
#endif
diff --git a/loader/loader.c b/loader/loader.c
index e980913a2..08b8c3ce8 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1824,6 +1824,7 @@ int main(int argc, char ** argv) {
char ** argptr, ** tmparg;
char * anacondaArgs[50];
+ char * outputKSFile = NULL;
struct loaderData_s loaderData;
@@ -2139,7 +2140,7 @@ int main(int argc, char ** argv) {
if (!ksFile)
getKickstartFile(&loaderData);
if (FL_KICKSTART(flags))
- runKickstart(&loaderData, (ksFile)?ksFile:loaderData.ksFile);
+ outputKSFile = runKickstart(&loaderData, (ksFile)?ksFile:loaderData.ksFile);
}
if (FL_EARLY_NETWORKING(flags)) {
@@ -2255,9 +2256,12 @@ int main(int argc, char ** argv) {
*argptr++ = "--headless";
#endif
- if (FL_KICKSTART(flags)) {
+ /* Pass the local, preprocessed kickstart file to anaconda. There's no
+ * need for another fetch and another call to preprocessKickstart.
+ */
+ if (FL_KICKSTART(flags) && outputKSFile) {
*argptr++ = "--kickstart";
- *argptr++ = loaderData.ksFile;
+ *argptr++ = outputKSFile;
}
if (FL_SERIAL(flags))
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 27da8e475..c1fbf536d 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -1306,14 +1306,7 @@ def preScriptPass(anaconda, file):
runPreScripts(anaconda, ksparser.handler.scripts)
def parseKickstart(anaconda, file):
- try:
- file = preprocessKickstart(file)
- except KickstartError, msg:
- stderrLog.critical(_("Error processing %%ksappend lines: %s") % msg)
- sys.exit(1)
- except Exception, e:
- stderrLog.critical(_("Unknown error processing %%ksappend lines: %s") % e)
- sys.exit(1)
+ # preprocessing the kickstart file has already been handled by loader.
handler = AnacondaKSHandler(anaconda)
ksparser = AnacondaKSParser(handler)