#!/usr/bin/python import sys, os import gettext import traceback import string if (os.path.exists('isys')): sys.path.append('isys') import isys import iutil setverPath = None gettext.bindtextdomain("anaconda", "/usr/share/locale") gettext.textdomain("anaconda") _ = gettext.gettext (args, extra) = isys.getopt(sys.argv[1:], 'GTtdr:fm:', [ 'gui', 'text', 'test', 'debug', 'method=', 'rootpath=', 'testpath=', 'mountfs', 'traceonly', 'kickstart=', 'expert']) # remove the arguments - gnome_init doesn't understand them for arg in sys.argv[1:]: sys.argv.remove (arg) sys.argc = 1 mode = None test = 0 debug = 0 rootPath = '/mnt/sysimage' localInstall = 0 forceMount = 0 mode = 'g' method = None traceOnly = 0 mouseInfo = None x = None kickstart = None expert = 0 for n in args: (str, arg) = n if (str == '-G' or str == '--gui'): mode = 'g' elif (str == '-T' or str == '--text'): mode = 't' elif (str == '-t' or str == '--test'): test = 1 elif (str == '-m' or str == '--method'): method = arg elif (str == '-d' or str == '--debug'): debug = 1 elif (str == '--kickstart'): kickstart = arg elif (str == '-r' or str == '--rootpath'): rootPath = arg localInstall = 1 elif (str == '--mountfs'): forceMount = 1 elif (str == '--traceonly'): traceOnly = 1 elif (str == '--expert'): expert = 1 if (not method): print "no install method specified" sys.exit(1) if (debug): import pdb pdb.set_trace() if (not test and not localInstall and os.getpid() > 50): print "you're running me on a live system! that's incredibly stupid." sys.exit(1) if (os.path.exists('rpmmodule')): sys.path.append('rpmmodule') sys.path.append('libfdisk') sys.path.append('balkan') sys.path.append('kudzu') sys.path.append('gnome-map') #elif (mode == None): # try: # f = open('/dev/fb0', 'r') # f.close() # mode = 'g' # except: # mode = 't' import rpm import lilo from todo import ToDo import isys from installclass import CustomInstall from kickstart import Kickstart if (iutil.memInstalled() < 30000): mode = 't' if (mode == 'g' and not os.environ.has_key('DISPLAY')): import xserver try: result = xserver.startX () except RuntimeError: print "X startup failed, falling back to text mode" mode = 't' else: (mouseInfo, x) = (result) if (mode == 'g'): if not test and not localInstall: for i in ( "imrc", "im_palette.pal" ): os.symlink ("../mnt/source/RedHat/instimage/etc/" + i, "/etc/" + i) from gui import InstallInterface elif (mode == 't'): from text import InstallInterface else: print "No mode was specified" sys.exit(1) if traceOnly: # prints a list of all the modules imported import pdb import image import harddrive import urlinstall import mimetools import mimetypes for module in sys.__dict__['modules'].keys (): if module not in [ "__builtin__", "__main__" ]: foo = repr (sys.__dict__['modules'][module]) bar = string.split (foo, "'") if len (bar) > 3: print bar[3] sys.exit(0) # imports after setting up the path if (method[0:5] == "dir:/"): from image import InstallMethod method = InstallMethod(method[5:]) elif (method[0:6] == "ftp://" or method[0:7] == "http://"): from urlinstall import InstallMethod method = InstallMethod(method) elif (method[0:5] == "hd://"): method = method[5:] i = string.index(method, '/') dir = method[i:] driveAndType = method[0:i] i = string.index(driveAndType, ":") drive = driveAndType[0:i] type = driveAndType[i + 1:] from harddrive import InstallMethod method = InstallMethod(drive, type, dir) else: print "unknown install method:", method sys.exit(1) intf = InstallInterface() # set the default actions installPackages = 1 setupFilesystems = 1 if localInstall: installPackages = 1 setupFilesystems = 0 if test: installPackages = 0 setupFilesystems = 0 if forceMount: setupFilesystems = 1 if kickstart: instClass = Kickstart(kickstart) else: instClass = CustomInstall() try: todo = ToDo(intf, method, rootPath, installSystem = installPackages, setupFilesystems = setupFilesystems, mouse = mouseInfo, instClass = instClass, x = x, expert = expert) intf.run(todo, test = test) except: (type, value, tb) = sys.exc_info() from string import joinfields list = traceback.format_exception (type, value, tb) text = joinfields (list, "") rc = intf.exceptionWindow (_("Exception Occured"), text) intf.__del__ () if rc: import pdb pdb.post_mortem (tb) os._exit (1) del intf