summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xanaconda49
-rw-r--r--installclass.py23
-rw-r--r--installclasses/upgradeonly.py4
3 files changed, 52 insertions, 24 deletions
diff --git a/anaconda b/anaconda
index eddb39dae..1f90c7e73 100755
--- a/anaconda
+++ b/anaconda
@@ -194,6 +194,8 @@ from installclass import DefaultInstall
from installclass import ReconfigStation
from kickstart import Kickstart
+
+
#
# override display mode if machine cannot nicely run X
#
@@ -201,6 +203,26 @@ if (not test):
if (iutil.memInstalled() < 30000):
forced_display_mode = 't'
+
+#
+# handle class passed from loader
+#
+instClass = None
+if customClass:
+ import installclass
+
+ classes = installclass.availableClasses(showHidden=1)
+ for (className, objectClass, logo) in classes:
+ if className == customClass:
+ instClass = objectClass(expert)
+ reqmode = instClass.requiredDisplayMode()
+ if reqmode:
+ forced_display_mode = reqmode
+
+ if not instClass:
+ raise TypeError, "installation class "+customClass+" not available"
+ sys.exit(0)
+
#
# if in reconfig mode set display mode based on inittab default runlevel
#
@@ -279,26 +301,15 @@ if traceOnly:
sys.exit(0)
#
-# handle class passed from loader
+# if no instClass declared by user figure it out based on other cmdline args
#
-if customClass:
- import installclass
-
- instClass = None
- classes = installclass.availableClasses(1)
- for (className, objectClass, logo) in classes:
- if className == customClass:
- instClass = objectClass(expert)
-
- if not instClass:
- raise TypeError, "installation class "+customClass+" not available"
- sys.exit(0)
-elif kickstart:
- instClass = Kickstart(kickstart, serial)
-elif reconfigOnly:
- instClass = ReconfigStation(expert)
-else:
- instClass = DefaultInstall(expert)
+if not instClass:
+ if kickstart:
+ instClass = Kickstart(kickstart, serial)
+ elif reconfigOnly:
+ instClass = ReconfigStation(expert)
+ else:
+ instClass = DefaultInstall(expert)
intf = InstallInterface()
diff --git a/installclass.py b/installclass.py
index 631ccfca0..953420b0a 100644
--- a/installclass.py
+++ b/installclass.py
@@ -256,12 +256,17 @@ class ReconfigStation(BaseInstallClass):
self.addToSkipList("xconfig")
allClasses = []
+allClasses_hidden = []
# returns ( className, classObject, classLogo ) tuples
-def availableClasses(showhidden=0):
+def availableClasses(showHidden=0):
global allClasses
+ global allClasses_hidden
- if allClasses: return allClasses
+ if not showHidden:
+ if allClasses: return allClasses
+ else:
+ if allClasses_hidden: return allClasses_hidden
if os.access("installclasses", os.R_OK):
path = "installclasses"
@@ -291,14 +296,20 @@ def availableClasses(showhidden=0):
else:
sortOrder = 0
- if obj.hidden == 0 or showhidden == 1:
+ if obj.hidden == 0 or showHidden == 1:
list.append(((obj.name, obj, obj.pixmap), sortOrder))
list.sort(ordering)
for (item, priority) in list:
- allClasses.append(item)
+ if showHidden:
+ allClasses_hidden.append(item)
+ else:
+ allClasses.append(item)
- return allClasses
+ if showHidden:
+ return allClasses_hidden
+ else:
+ return allClasses
def ordering(first, second):
((name1, obj, logo), priority1) = first
@@ -317,3 +328,5 @@ def ordering(first, second):
return 0
+def requireDisplayMode():
+ return None
diff --git a/installclasses/upgradeonly.py b/installclasses/upgradeonly.py
index ddf1bf206..5e59a2690 100644
--- a/installclasses/upgradeonly.py
+++ b/installclasses/upgradeonly.py
@@ -8,6 +8,10 @@ class InstallClass(BaseInstallClass):
hidden = 1
sortPriority = 1
+
+ def requiredDisplayMode(self):
+ return 't'
+
def __init__(self, expert):
BaseInstallClass.__init__(self)