--- cdrom.image/updates/smeupgradeclass.py 2008/03/15 14:55:47 1.10.2.2 +++ cdrom.image/updates/smeupgradeclass.py 2008/03/15 18:11:42 1.10.2.4 @@ -1,18 +1,16 @@ from installclass import getBaseInstallClass from rhpl.translate import N_, _ - -import logging -log = logging.getLogger("anaconda") - from constants import * - import os import iutil -import string import rhpl baseclass = getBaseInstallClass() +import logging +log = logging.getLogger("anaconda") + +import string class Script: def __repr__(self): @@ -27,33 +25,37 @@ class Script: 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) + import tempfile + import os.path + + if self.inChroot: + scriptRoot = chroot + else: + scriptRoot = "/" + + (fd, path) = tempfile.mkstemp("", "sme-script-", scriptRoot + "/tmp") + + os.write(fd, self.script) + os.close(fd) + 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) + elif serial: + messages = "%s.log" % path + else: + messages = "/dev/tty3" + + rc = iutil.execWithRedirect(self.interp, ["/tmp/%s" % os.path.basename(path)], + stdin = messages, stdout = messages, stderr = messages, + root = scriptRoot) if rc != 0: - log.info("WARNING - Error code %s encountered running a sme script", rc) + log.error("WARNING - Error code %s encountered running a sme script", rc) os.unlink(path) + if serial or self.logfile is not None: + os.chmod("%s" % messages, 0600) class InstallClass(baseclass): name = N_("Upgrade Existing System") @@ -108,7 +110,7 @@ class InstallClass(baseclass): win = anaconda.intf.waitWindow(_("Post Upgrade Script"), _("The post upgrade script is running...")) - script = ( "#! /bin/sh\n/sbin/syslogd ; sleep 2; /sbin/e-smith/signal-event post-upgrade\n" ) + script = ( "#!/bin/sh\nmkdir -p /var/lib/dhcp; /sbin/syslogd ; sleep 2; /sbin/e-smith/signal-event post-upgrade\n" ) s = Script(script, interp="/bin/sh", inChroot=1) log.info("%s", s) s.run(anaconda.rootPath, serial)