#!/usr/bin/python

from Tkinter import *
from setupfstab import setupFstab
from format import formatParts
from bootstrap import *
from packageset import *
from chooser import *
from finish import *
from clock import setupclock
from keyboard import setupkbd
from lilo import runLilo
from rhutil import rhsystem
from parttable import readPartitionTable
from series import getSeriesList
from password import setrootpw
from modem import setupmodem

import os

# magic to keep a root window from appearing
L = Label()
L.tk.call('wm', 'withdraw', '.')
del L

test = 0

partList = readPartitionTable()

fstab = setupFstab(partList)
formatParts(fstab, test)
fstab.mountAll("/mnt", 1, test)
installbootstrap(test)

if (test):
    print "would create /mnt/etc/fstab"
else:
    fstab.create("/mnt/etc/fstab")

w = WaitBox("Scanning available packages")
pset =  PackagePathSet("/image/RedHat/RPMS")
w.quit()

(customize, names) = getSeriesList()

if (customize):
    availw = AvailableWindow(test, Toplevel())
    availgr = Group(pset)
    availw.setGroup(availgr)

if (not len(names.keys())):
    customize = 1
    for p in pset.getPackages():
	p.select()
else:
    for p in pset.getPackages():
	if (names.has_key(p.getName())):
	    p.select()

if (customize):
    availw.wait_window(availw)
else:
    pset = pset.selectedPackages()
    DoInstall(pset, "/mnt", test)

w = WaitBox("Copying kernel to hard drive")
rhsystem("/bin/cp", ("/bootdisk/vmlinuz", "/mnt"), test)
rhsystem("/mnt/usr/sbin/rdev", ("-r", "/mnt/vmlinuz", "0"), test)
rhsystem("/mnt/usr/sbin/rdev", ("-R", "/mnt/vmlinuz", "1"), test)
rhsystem("/mnt/usr/sbin/rdev", ("-v", "/mnt/vmlinuz", "-1"), test)
w.quit()

# network config should be done here - for now, the user has to do it
# in text mode though

setupmodem(test, "/mnt")
setupclock(test, "/mnt")
setupkbd(test, "/mnt")
runLilo("/mnt", fstab.findPartByPoint("/"), fstab, partList, test)

setrootpw(test)

finishInstall(test)

if (test):
    print "Killing X"
else:
    os.system("/usr/rhs/install/killall X")
