--- cdrom.image/updates/smeupgradeclass.py 2005/07/30 07:28:39 1.1 +++ cdrom.image/updates/smeupgradeclass.py 2005/08/19 04:34:57 1.4 @@ -1,9 +1,53 @@ from installclass import BaseInstallClass from rhpl.translate import N_, _ from rhpl.log import log +from constants import * import os +import string import iutil +import security + +class Script: + def __repr__(self): + str = ("(s: '%s' i: %s c: %d)") % \ + (self.script, self.interp, self.inChroot) + return string.replace(str, "\n", "|") + + def __init__(self, script, interp, inChroot, logfile = None): + self.script = script + self.interp = interp + self.inChroot = inChroot + self.logfile = logfile + + def run(self, chroot, serial): + scriptRoot = "/" + if self.inChroot: + scriptRoot = chroot + + path = scriptRoot + "/tmp/sme-script" + + f = open(path, "w") + f.write(self.script) + f.close() + os.chmod(path, 0700) + + if self.logfile is not None: + messages = self.logfile + elif serial: + messages = "/tmp/sme-script.log" + else: + messages = "/dev/tty3" + + rc = iutil.execWithRedirect(self.interp, + [self.interp,"/tmp/sme-script"], + stdout = messages, stderr = messages, + root = scriptRoot) + + if rc != 0: + log("WARNING - Error code %s encountered running a sme script", rc) + + os.unlink(path) class InstallClass(BaseInstallClass): name = N_("Upgrade Existing System") @@ -20,11 +64,14 @@ class InstallClass(BaseInstallClass): "language", "keyboard", "findrootparts", + "findinstall", + "installtype", "partitionobjinit", "upgrademount", "upgrademigfind", "upgrademigratefs", "upgradecontinue", + "bootloadersetup", "readcomps", "findpackages", "checkdeps", @@ -42,33 +89,12 @@ class InstallClass(BaseInstallClass): ) def postAction(self, rootPath, serial): - if serial: - messages = "/tmp/postupgrade.log" - else: - messages = "/dev/tty3" - args = [ "/usr/sbin/lokkit", "--quiet", "--nostart", "--selinux=disabled"] - - try: - iutil.execWithRedirect(args[0], args, root=rootPath, - stdout=messages, stderr=messages) - except RuntimeError, msg: - log ("lokkit run failed: %s", msg) - except OSError, (errno, msg): - log ("lokkit run failed: %s", msg) - - path = rootPath + "/tmp/postupgrade.sh" - cmds = ["/sbin/syslogd &", "sleep 2", "/sbin/e-smith/signal-event post-upgrade"] - - f = open(path, "w") - f.writelines(cmds) - f.close - os.chmod(path, 0700) - - rc = iutil.execWithRedirect("/bin/sh", ["/bin/sh", "/tmp/postupgrade.sh"], - stdout=messages, stderr=messages, root=rootPath) - if rc != 0: - log("WARNING - Error code %s encountered running postupgrade script", rc) - os.unlink(path) + script = ( "/sbin/syslogd &\n" + "sleep 2\n" + "/sbin/e-smith/signal-event post-upgrade\n" ) + s = Script(script, interp="/bin/sh", inChroot=1) + log("%s", s) + s.run(rootPath, serial) def setInstallData(self, id): BaseInstallClass.setInstallData(self, id)