summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2003-07-16 03:23:20 +0000
committerJeremy Katz <katzj@redhat.com>2003-07-16 03:23:20 +0000
commita51764f258d46a2e2f0ae39f25144c6ffabb8804 (patch)
tree18980a7ca91a86f6432dd19e172608ed7c12e8f1
parent1b2f9fe18937b9f187b7fd77a50c2c7d0f369654 (diff)
downloadanaconda-a51764f258d46a2e2f0ae39f25144c6ffabb8804.tar.gz
anaconda-a51764f258d46a2e2f0ae39f25144c6ffabb8804.tar.xz
anaconda-a51764f258d46a2e2f0ae39f25144c6ffabb8804.zip
merge from taroon branch. product.img stuff, md can be modular, lots of
little things across the board
-rwxr-xr-xanaconda10
-rw-r--r--dispatch.py2
-rwxr-xr-xgui.py10
-rw-r--r--installclass.py2
-rw-r--r--isys/lang.c4
-rw-r--r--iutil.py3
-rw-r--r--iw/congrats_gui.py4
-rw-r--r--loader2/linuxrc.s3904
-rw-r--r--loader2/loader.c7
-rw-r--r--loader2/method.c5
-rw-r--r--loader2/net.c31
-rw-r--r--loader2/nfsinstall.c5
-rw-r--r--loader2/urlinstall.c2
-rw-r--r--network.py8
-rw-r--r--packages.py7
-rw-r--r--partedUtils.py5
-rwxr-xr-xreadConfigFile.py4
-rw-r--r--rescue.py35
-rwxr-xr-xscripts/mk-images13
-rw-r--r--scripts/mk-images.alpha2
-rw-r--r--scripts/mk-images.i3862
-rw-r--r--scripts/mk-images.ia642
-rw-r--r--scripts/mk-images.ppc2
-rw-r--r--scripts/mk-images.s3902
-rw-r--r--scripts/mk-images.sparc642
-rw-r--r--scripts/mk-images.x86_642
-rw-r--r--textw/complete_text.py11
-rw-r--r--utils/Makefile1
-rw-r--r--utils/trimmodmap43
-rw-r--r--whiteout.py2
30 files changed, 184 insertions, 48 deletions
diff --git a/anaconda b/anaconda
index f4eb0f11f..4a67f8b06 100755
--- a/anaconda
+++ b/anaconda
@@ -679,9 +679,15 @@ if customClass:
# if no instClass declared by user figure it out based on other cmdline args
#
if not instClass:
- from installclass import DefaultInstall
+ from installclass import DefaultInstall, availableClasses
instClass = DefaultInstall(flags.expert)
+ if len(availableClasses()) < 2:
+ (cname, cobject, clogo) = availableClasses()[0]
+ log("%s is only installclass, using it" %(cname,))
+ instClass = cobject(flags.expert)
+
+
# this lets install classes force text mode instlls
if instClass.forceTextMode:
dup_log(_("Install class forcing text mode installation"))
@@ -976,7 +982,7 @@ if xcfg is not None:
if kbd:
id.setKeyboard(kbd)
-
+
instClass.setInstallData(id)
dispatch = dispatch.Dispatcher(intf, id, methodobj, rootPath)
diff --git a/dispatch.py b/dispatch.py
index 97b5aac60..9ce6c5db3 100644
--- a/dispatch.py
+++ b/dispatch.py
@@ -110,7 +110,7 @@ installSteps = [
"instPath", "dir")),
("selectlangpackages", selectLanguageSupportGroups, ("id.grpset","id.langSupport")),
("package-selection", ("id.grpset", "id.langSupport", "id.instClass", "dispatch")),
- ("indivpackage", ("id.grpset")),
+ ("indivpackage", ("id.grpset",)),
("handleX11pkgs", handleX11Packages, ("dir", "intf", "dispatch",
"id", "instPath")),
("checkdeps", checkDependencies, ("dir", "intf", "dispatch",
diff --git a/gui.py b/gui.py
index e711e2148..5fec028be 100755
--- a/gui.py
+++ b/gui.py
@@ -430,7 +430,13 @@ class ProgressWindow:
rootPushBusyCursor()
def set (self, amount):
- self.progress.set_fraction (float (amount) / self.total)
+ # only update widget if we've changed by 5%
+ curval = self.progress.get_fraction()
+ newval = float (amount) / self.total
+ if newval < 0.998:
+ if (newval - curval) < 0.05 and newval > curval:
+ return
+ self.progress.set_fraction (newval)
processEvents ()
def pop(self):
@@ -1464,7 +1470,7 @@ class InstallControlState:
for path in ("/mnt/source/RHupdates/pixmaps/",
"/mnt/source/RHupdates/",
"/tmp/updates/pixmaps/", "/tmp/updates/",
- "/tmp/product/pixmaps/",
+ "/tmp/product/pixmaps/", "/tmp/product/",
"/usr/share/anaconda/pixmaps/", "pixmaps/",
"/usr/share/pixmaps/",
"/usr/share/anaconda/", ""):
diff --git a/installclass.py b/installclass.py
index 59a4b3c4f..8844a7dd3 100644
--- a/installclass.py
+++ b/installclass.py
@@ -182,7 +182,7 @@ class BaseInstallClass:
# if there's only one install class, it doesn't make much sense
# to show it
- if availableClasses() < 2:
+ if len(availableClasses()) < 2:
dispatch.skipStep("installtype")
# called from anaconda so that we can skip steps in the headless case
diff --git a/isys/lang.c b/isys/lang.c
index e1c12587b..177e02126 100644
--- a/isys/lang.c
+++ b/isys/lang.c
@@ -12,6 +12,7 @@
#include "linux/kd.h"
#include "cpio.h"
+#include "isys.h"
#include "lang.h"
#include "stubs.h"
@@ -85,6 +86,9 @@ int loadKeymap(gzFile stream) {
#if defined (__s390__) || defined (__s390x__)
return 0;
#endif
+ if (isVioConsole())
+ return 0;
+
if (gunzip_read(stream, &magic, sizeof(magic)) != sizeof(magic))
return -EIO;
diff --git a/iutil.py b/iutil.py
index bc663b51d..c4d716115 100644
--- a/iutil.py
+++ b/iutil.py
@@ -605,8 +605,9 @@ def writeRpmPlatform(root="/"):
if os.access("%s/etc/rpm/macros" %(root,), os.R_OK):
return
if not (rhpl.arch.canonArch.startswith("ppc64") or
- rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64")):
+ rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64", "ia64")):
return
f = open("%s/etc/rpm/macros" %(root,), 'w+')
f.write("%_transaction_color 3\n")
f.close()
+
diff --git a/iw/congrats_gui.py b/iw/congrats_gui.py
index a77c7853a..cbea4e748 100644
--- a/iw/congrats_gui.py
+++ b/iw/congrats_gui.py
@@ -79,8 +79,8 @@ class CongratulationWindow (InstallWindow):
"\thttp://www.redhat.com/docs/\n"
"\thttp://www.redhat.com/apps/support/\n\n"
"To register the product for support, visit:\n"
- "\thttp://www.redhat.com/apps/activate/\n\n"
- "Click 'Exit' to reboot the system.") % (floppystr, bootstr,))
+ "\thttp://www.redhat.com/apps/activate/\n\n") % (floppystr,
+ bootstr,))
hbox.pack_start (label, gtk.TRUE, gtk.TRUE)
return hbox
diff --git a/loader2/linuxrc.s390 b/loader2/linuxrc.s390
index 239a58842..3e0b01891 100644
--- a/loader2/linuxrc.s390
+++ b/loader2/linuxrc.s390
@@ -91,8 +91,8 @@ mount /dev/root / -o remount,rw
mount -t proc none /proc
mount -t devpts /dev/pts /dev/pts
-# limit output on x3270 console
-echo "1 4 1 1" > /proc/sys/kernel/printk
+# limit output on x3270 console (well, not really -- need debugging now)
+echo "8 4 1 1" > /proc/sys/kernel/printk
# make /tmp/ramfs
mount -t ramfs none /tmp
diff --git a/loader2/loader.c b/loader2/loader.c
index 37931a959..cd569d497 100644
--- a/loader2/loader.c
+++ b/loader2/loader.c
@@ -840,7 +840,10 @@ static char *doLoaderMain(char * location,
/* fall through to ip config */
case STEP_IP:
- if (!needsNetwork) step = STEP_METHOD; /* only hit going back */
+ if (!needsNetwork) {
+ step = STEP_METHOD; /* only hit going back */
+ break;
+ }
logMessage("going to do getNetConfig");
/* populate netDev based on any kickstart data */
@@ -1206,7 +1209,7 @@ int main(int argc, char ** argv) {
/* look for cards which require the agpgart module */
agpgartInitialize(modLoaded, modDeps, modInfo, flags);
- mlLoadModuleSetLocation("raid0:raid1:raid5:msdos:ext3:reiserfs:jfs:xfs:lvm-mod",
+ mlLoadModuleSetLocation("md:raid0:raid1:raid5:msdos:ext3:reiserfs:jfs:xfs:lvm-mod",
modLoaded, modDeps, modInfo, flags,
secondStageModuleLocation);
diff --git a/loader2/method.c b/loader2/method.c
index 1a8c633af..37b95886c 100644
--- a/loader2/method.c
+++ b/loader2/method.c
@@ -445,7 +445,8 @@ int copyDirectory(char * from, char * to) {
errno = 0;
while ((ent = readdir(dir))) {
- if (ent->d_name[0] == '.') continue;
+ /* we could lose .a this way, but at least, we lose less */
+ if ((ent->d_name[0] == '.') && (strlen(ent->d_name) <= 2)) continue;
sprintf(filespec, "%s/%s", from, ent->d_name);
sprintf(filespec2, "%s/%s", to, ent->d_name);
@@ -498,6 +499,7 @@ void copyUpdatesImg(char * path) {
if (!mountLoopback(path, "/tmp/update-disk", "loop7")) {
copyDirectory("/tmp/update-disk", "/tmp/updates");
umountLoopback("/tmp/update-disk", "loop7");
+ unlink("/tmp/update-disk");
}
}
}
@@ -507,6 +509,7 @@ void copyProductImg(char * path) {
if (!mountLoopback(path, "/tmp/product-disk", "loop7")) {
copyDirectory("/tmp/product-disk", "/tmp/product");
umountLoopback("/tmp/product-disk", "loop7");
+ unlink("/tmp/product-disk");
}
}
}
diff --git a/loader2/net.c b/loader2/net.c
index b874204f5..9f6adad2b 100644
--- a/loader2/net.c
+++ b/loader2/net.c
@@ -221,10 +221,15 @@ void setupNetworkDeviceConfig(struct networkDeviceConfig * cfg,
* be broken out into a function too */
logMessage("sending dhcp request through device %s", loaderData->netDev);
- startNewt(flags);
- winStatus(50, 3, _("Dynamic IP"),
- _("Sending request for IP information for %s..."),
- loaderData->netDev, 0);
+ if (!FL_CMDLINE(flags)) {
+ startNewt(flags);
+ winStatus(55, 3, _("Dynamic IP"),
+ _("Sending request for IP information for %s..."),
+ loaderData->netDev, 0);
+ } else {
+ printf(_("Sending request for IP information for %s..."),
+ loaderData->netDev);
+ }
if (!FL_TESTING(flags)) {
waitForLink(loaderData->netDev);
@@ -233,7 +238,9 @@ void setupNetworkDeviceConfig(struct networkDeviceConfig * cfg,
chptr = NULL;
}
- newtPopWindow();
+ if (!FL_CMDLINE(flags))
+ newtPopWindow();
+
if (chptr) {
logMessage("pump told us: %s", chptr);
return;
@@ -468,7 +475,7 @@ int readNetConfig(char * device, struct networkDeviceConfig * cfg, int flags) {
newCfg.isDynamic = 0;
} else {
if (!FL_TESTING(flags)) {
- winStatus(50, 3, _("Dynamic IP"),
+ winStatus(55, 3, _("Dynamic IP"),
_("Sending request for IP information for %s..."),
device, 0);
waitForLink(device);
@@ -624,10 +631,16 @@ int findHostAndDomain(struct networkDeviceConfig * dev, int flags) {
}
if (!(dev->dev.set & PUMP_NETINFO_HAS_HOSTNAME)) {
- winStatus(40, 3, _("Hostname"),
- _("Determining host name and domain..."));
+ if (!FL_CMDLINE(flags))
+ winStatus(40, 3, _("Hostname"),
+ _("Determining host name and domain..."));
+ else
+ printf(_("Determining host name and domain..."));
+
name = mygethostbyaddr(inet_ntoa(dev->dev.ip));
- newtPopWindow();
+
+ if (!FL_CMDLINE(flags))
+ newtPopWindow();
if (!name) {
logMessage("reverse name lookup failed");
diff --git a/loader2/nfsinstall.c b/loader2/nfsinstall.c
index 1a29a9239..41a26ec5a 100644
--- a/loader2/nfsinstall.c
+++ b/loader2/nfsinstall.c
@@ -162,6 +162,11 @@ char * mountNfsImage(struct installMethod * method,
if (rc == -1)
foundinvalid = 1;
} else {
+ /* JKFIXME: hack because /mnt/source is hard-coded
+ * in mountStage2() */
+ copyUpdatesImg("/mnt/source2/RedHat/base/updates.img");
+ copyUpdatesImg("/mnt/source2/RedHat/base/product.img");
+
queryIsoMediaCheck(path, flags);
stage = NFS_STAGE_DONE;
diff --git a/loader2/urlinstall.c b/loader2/urlinstall.c
index e372e3377..0a95782e7 100644
--- a/loader2/urlinstall.c
+++ b/loader2/urlinstall.c
@@ -97,6 +97,7 @@ static int loadUrlImages(struct iurlinfo * ui, int flags) {
copyDirectory("/tmp/update-disk", "/tmp/updates");
umountLoopback("/tmp/update-disk", "loop7");
unlink("/tmp/ramfs/updates-disk.img");
+ unlink("/tmp/update-disk");
}
/* grab the product.img before netstg1.img so that we minimize our
@@ -107,6 +108,7 @@ static int loadUrlImages(struct iurlinfo * ui, int flags) {
copyDirectory("/tmp/product-disk", "/tmp/product");
umountLoopback("/tmp/product-disk", "loop7");
unlink("/tmp/ramfs/product-disk.img");
+ unlink("/tmp/product-disk");
}
/* require 128MB for use of graphical stage 2 due to size of image */
diff --git a/network.py b/network.py
index 049461503..32733ea8e 100644
--- a/network.py
+++ b/network.py
@@ -223,10 +223,10 @@ class Network:
if desc is not None and len(desc) > 0:
self.netdevices[device].set(("desc", desc))
- # add hwaddr
- self.netdevices[device].set(("hwaddr", isys.getMacAddress(device)))
-
-
+ hwaddr = isys.getMacAddress(device)
+ if hwaddr and hwaddr != "00:00:00:00:00:00":
+ self.netdevices[device].set(("hwaddr", hwaddr))
+
def getDevice(self, device):
return self.netdevices[device]
diff --git a/packages.py b/packages.py
index 614597bbf..52d056af6 100644
--- a/packages.py
+++ b/packages.py
@@ -238,7 +238,7 @@ def getAnacondaTS(instPath = None):
# set color if needed. FIXME: why isn't this the default :/
if (rhpl.arch.canonArch.startswith("ppc64") or
- rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64")):
+ rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64", "ia64")):
ts.setColor(3)
return ts
@@ -1190,6 +1190,11 @@ def copyExtraModules(instPath, grpset, extraModules):
pattern = ""
names = ""
for (n, tag) in kernelVersions:
+ if tag == "up":
+ pkg = "kernel"
+ else:
+ pkg = "kernel-%s" %(tag,)
+ arch = grpset.hdrlist[pkg][rpm.RPMTAG_ARCH]
# version 1 path
pattern = pattern + " %s/%s/%s.o " % (n, arch, name)
# version 0 path
diff --git a/partedUtils.py b/partedUtils.py
index 5495d792f..f5c20c1c7 100644
--- a/partedUtils.py
+++ b/partedUtils.py
@@ -238,16 +238,15 @@ def getDefaultDiskType():
elif iutil.getArch() == "ppc":
return parted.disk_type_get("msdos")
else:
- # XXX fix me for alpha at least
return parted.disk_type_get("msdos")
archLabels = {'i386': ['msdos'],
- 'alpha': ['bsd'],
's390': ['dasd'],
'alpha': ['bsd', 'msdos'],
'sparc': ['sun'],
'ia64': ['msdos', 'gpt'],
- 'ppc': ['msdos', 'mac']}
+ 'ppc': ['msdos', 'mac'],
+ 'x86_64': ['msdos']}
def checkDiskLabel(disk, intf):
"""Check that the disk label on disk is valid for this machine type."""
diff --git a/readConfigFile.py b/readConfigFile.py
index 12bd3641e..fc46dafa4 100755
--- a/readConfigFile.py
+++ b/readConfigFile.py
@@ -7,6 +7,10 @@ def getConfigFile():
if os.access("custom/anaconda.conf", os.O_RDONLY):
f = open("custom/anaconda.conf", "r")
+ elif os.access("/tmp/product/anaconda.conf", os.O_RDONLY):
+ f = open("/tmp/product/anaconda.conf", "r")
+ elif os.access("/tmp/updates/anaconda.conf", os.O_RDONLY):
+ f = open("/tmp/updates/anaconda.conf", "r")
elif os.access("/usr/share/anaconda/custom/anaconda.conf", os.O_RDONLY):
f = open("/usr/share/anaconda/custom/anaconda.conf", "r")
elif os.access("anaconda.conf", os.O_RDONLY):
diff --git a/rescue.py b/rescue.py
index e12dff474..2a19e712f 100644
--- a/rescue.py
+++ b/rescue.py
@@ -13,7 +13,6 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-import kudzu
import upgrade
from snack import *
from constants_text import *
@@ -23,6 +22,7 @@ import os
import isys
import iutil
import fsset
+import shutil
from rhpl.log import log
from rhpl.translate import _
@@ -64,6 +64,36 @@ def makeMtab(instPath, theFsset):
f.close()
sys.exit(0)
+# make sure they have a resolv.conf in the chroot
+def makeResolvConf(instPath):
+ if not os.access("/etc/resolv.conf", os.R_OK):
+ return
+
+ if os.access("%s/etc/resolv.conf" %(instPath,), os.R_OK):
+ f = open("%s/etc/resolv.conf" %(instPath,), "r")
+ buf = f.read()
+ f.close()
+ else:
+ buf = ""
+
+ # already have a nameserver line, don't worry about it
+ if buf.find("nameserver") != -1:
+ return
+
+ f = open("/etc/resolv.conf", "r")
+ buf = f.read()
+ f.close()
+
+ # no nameserver, we can't do much about it
+ if buf.find("nameserver") == -1:
+ return
+
+ shutil.copyfile("%s/etc/resolv.conf" %(instPath,),
+ "%s/etc/resolv.conf.bak" %(instPath,))
+ f = open("%s/etc/resolv.conf" %(instPath,), "w+")
+ f.write(buf)
+ f.close()
+
# XXX
# probably belongs somewhere else
#
@@ -186,7 +216,7 @@ def runRescue(instPath, mountroot, id):
lastrc = rc
if step == -1:
- ButtonChoiceWindow(self.screen, _("Cancelled"),
+ ButtonChoiceWindow(screen, _("Cancelled"),
_("I can't go to the previous step "
"from here. You will have to try "
"again."),
@@ -388,6 +418,7 @@ def runRescue(instPath, mountroot, id):
print
if rootmounted and not readOnly:
makeMtab(instPath, fs)
+ makeResolvConf(instPath)
print _("Your system is mounted under the %s directory.") % (instPath,)
print
diff --git a/scripts/mk-images b/scripts/mk-images
index 68d9a9195..251ab96dc 100755
--- a/scripts/mk-images
+++ b/scripts/mk-images
@@ -36,6 +36,7 @@ TOPDIR=$(cd $TOPDIR; pwd)
IMGPATH=$4
KERNELBASE=/tmp/updboot.kernel.$$
MODDEPS=$KERNELBASE/moddeps
+ MODMAPS=$KERNELBASE/modules.pcimap
BUILDARCH=$5
if [ "$BUILDARCH" = "ppc" -o "$BUILDARCH" = "ppc64" ]; then
@@ -84,6 +85,7 @@ TOPDIR=$(cd $TOPDIR; pwd)
# Stuff that we need
TRIMPCITABLE=$IMGPATH/usr/lib/anaconda-runtime/trimpcitable
+ TRIMMODMAP=$IMGPATH/usr/lib/anaconda-runtime/trimmodmap
GETKEYMAPS=$IMGPATH/usr/lib/anaconda-runtime/getkeymaps
KEYMAPS=/tmp/keymaps-$BUILDARCH.$$
SCREENFONT=$IMGPATH/usr/lib/anaconda-runtime/screenfont-${BASEARCH}.gz
@@ -100,7 +102,7 @@ TOPDIR=$(cd $TOPDIR; pwd)
touch $MODULESUSED
- REQUIREMENTS="$TRIMPCITABLE $PCITABLE $GETMODDEPS $MODINFO
+ REQUIREMENTS="$TRIMPCITABLE $TRIMMODMAP $PCITABLE $GETMODDEPS $MODINFO
$FILTERMODDEPS $LANGTABLE $GETKEYMAPS"
dieLater=
@@ -170,6 +172,9 @@ rundepmod () {
$FAKEARCH /sbin/depmod -e -F $KERNELROOT/boot/System.map-$version \
$what > $final.foo 2>&1 |
egrep -v "modprobe: (${exclpattern}) multiply defined"
+ $FAKEARCH /sbin/depmod -a -F $KERNELROOT/boot/System.map-$version \
+ -b $KERNELROOT $version
+ mv $KERNELROOT/lib/modules/$version/modules.pcimap $MODMAPS
# For paride we need to change this:
# aten: paride
@@ -313,7 +318,7 @@ makemoduleball() {
MMB_MODULESET=$(resdeps $2)
rm -rf $MMB_DIR/modules $MMB_DIR/$MMB_NAME $MMB_DIR/modules.dep \
- $MMB_DIR/pcitable $MMB_DIR/$MMB_MODINFO
+ $MMB_DIR/modules.pcimap $MMB_DIR/pcitable $MMB_DIR/$MMB_MODINFO
mkdir -p $MMB_DIR/modules
MMB_MODULESET=$(intcopymodules "$MMB_MODULESET" $MMB_DIR/modules)
@@ -332,6 +337,9 @@ makemoduleball() {
# create the pcitable
$TRIMPCITABLE $(find . -name *.o -exec basename {} \;) < $PCITABLE > ../pcitable
+
+ # create the modules.pcimap
+ $TRIMMODMAP $PCITABLE $(find . -name *.o -exec basename {} \;) < $MODMAPS > ../modules.pcimap
if [ -n "$MMB_DD" ]; then
echo $MMB_DD > $MMB_DIR/rhdd
@@ -561,6 +569,7 @@ EOF
$MBD_DIR urandom c 1 9 644 root:root
$MBD_DIR nvram c 10 144 644 root:root
$MBD_DIR adb c 56 0 644 root:root
+ $MBD_DIR rtc c 10 135 644 root:root
EOF
ln -s fb0 $MBD_DIR/dev/fb
diff --git a/scripts/mk-images.alpha b/scripts/mk-images.alpha
index ea8569c0e..7adc5f8fb 100644
--- a/scripts/mk-images.alpha
+++ b/scripts/mk-images.alpha
@@ -3,7 +3,7 @@ SCSIMODULES="sd_mod isp_mod ide-cd aic7xxx"
EXTRASCSI="DAC960 cpqfc BusLogic 3w-xxxx dmx3191d dpt_i2o megaraid ncr53c8xx sym53c8xx qlogicisp qlogicfc qla2x00 qla1280 cciss cpqarray"
EXTRANET="3c509 3c59x 8139too dl2k eepro epic100 ewrk3 hamachi natsemi ne2k-pci ns83820 starfire yellowfin"
-SECSTAGE="sd_mod raid0 raid1 raid5 ext3 $NETMODULES $SCSIMODULES $EXTRASCSI $EXTRANET"
+SECSTAGE="sd_mod md raid0 raid1 raid5 ext3 $NETMODULES $SCSIMODULES $EXTRASCSI $EXTRANET"
prepareBootImage() {
dd if=/dev/zero of=$MBD_TMPIMAGE bs=1k count=$BOOTDISKSIZE 2>/dev/null
diff --git a/scripts/mk-images.i386 b/scripts/mk-images.i386
index d7aa49433..dd4f53e60 100644
--- a/scripts/mk-images.i386
+++ b/scripts/mk-images.i386
@@ -92,7 +92,7 @@ IDEMODS=""
SCSIMODS="sd_mod sg sr_mod st"
FSMODS="msdos vfat ext3 reiserfs jfs"
-SECSTAGE="agpgart raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS st parport_pc parport"
+SECSTAGE="agpgart md raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS st parport_pc parport"
BTERMMODULES="vga16fb"
COMMONMODULES="vfat nfs floppy $USBMODS $BTERMMODULES"
diff --git a/scripts/mk-images.ia64 b/scripts/mk-images.ia64
index 7ce27aab1..7ba193f59 100644
--- a/scripts/mk-images.ia64
+++ b/scripts/mk-images.ia64
@@ -4,7 +4,7 @@ LATEUSBMODS="mousedev"
BTERMMODULES="vga16fb"
COMMONMODULES="nfs fat vfat cramfs loop floppy $BTERMMODULES"
-SECSTAGE="nfs fat vfat raid0 raid1 raid5 lvm-mod ext3 $LATEUSBMODS"
+SECSTAGE="nfs fat vfat md raid0 raid1 raid5 lvm-mod ext3 $LATEUSBMODS"
NETMODULES="3c59x acenic bcm5700 e100 e1000 eepro100 hamachi sk98lin starfire sunhme tulip yellowfin tg3"
SCSIMODULES="sd_mod sg sr_mod st scsi_mod DAC960 cciss cpqarray aic7xxx aic7xxx_mod megaraid qla1280 qla2200 qla2300 sym53c8xx sym53c8xx_2 mptscsih mptbase ips"
IDEMODULES="ide-mod ide-probe-mod ide-disk ide-cd"
diff --git a/scripts/mk-images.ppc b/scripts/mk-images.ppc
index 25edfaba4..3a7edb6ed 100644
--- a/scripts/mk-images.ppc
+++ b/scripts/mk-images.ppc
@@ -3,7 +3,7 @@ FSMODS="msdos vfat ext3 reiserfs jfs"
IDEMODS="ide-cd"
SCSIMODS="sd_mod sg sr_mod st"
LATEUSBMODS="mousedev usb-storage"
-SECSTAGE="raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS"
+SECSTAGE="md raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS"
NETMODULES="sungem tg3 ne2k-pci 3c59x 8139too olympic
de4x5 acenic pcnet32 tulip natsemi e100 e1000 airport"
diff --git a/scripts/mk-images.s390 b/scripts/mk-images.s390
index 47a07b0e5..98e0c66ce 100644
--- a/scripts/mk-images.s390
+++ b/scripts/mk-images.s390
@@ -433,7 +433,7 @@ fi
IDEMODS=""
SCSIMODS=""
-SECSTAGE="$IDEMODS $SCSIMODS raid0 raid1 raid5 lvm-mod"
+SECSTAGE="$IDEMODS $SCSIMODS md raid0 raid1 raid5 lvm-mod"
COMMONMODULES="loop cramfs dasd_diag_mod dasd_eckd_mod dasd_fba_mod dasd_mod tape390 isofs ext3"
LOCALMODULES="$COMMONMODULES tape390 $IDEMODS $SCSIMODS"
diff --git a/scripts/mk-images.sparc64 b/scripts/mk-images.sparc64
index cb2f57a0e..980fc2824 100644
--- a/scripts/mk-images.sparc64
+++ b/scripts/mk-images.sparc64
@@ -1,4 +1,4 @@
-SECSTAGE="vfat raid0 raid1 raid5"
+SECSTAGE="vfat md raid0 raid1 raid5"
TILO=$IMGPATH/usr/bin/tilo
SILO=$IMGPATH/usr/sbin/silo
FAKEARCH=sparc64
diff --git a/scripts/mk-images.x86_64 b/scripts/mk-images.x86_64
index 9ab0f9acf..03387bc7f 100644
--- a/scripts/mk-images.x86_64
+++ b/scripts/mk-images.x86_64
@@ -37,7 +37,7 @@ IDEMODS="ide-cd"
SCSIMODS="sd_mod sg sr_mod st"
FSMODS="msdos vfat ext3 reiserfs"
-SECSTAGE="agpgart raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS st parport_pc parport"
+SECSTAGE="agpgart md raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS st parport_pc parport"
BTERMMODULES="vga16fb"
COMMONMODULES="vfat loop cramfs floppy $USBMODS $BTERMMODULES"
diff --git a/textw/complete_text.py b/textw/complete_text.py
index f0ac5dc19..d9d245632 100644
--- a/textw/complete_text.py
+++ b/textw/complete_text.py
@@ -21,9 +21,6 @@ import iutil
class FinishedWindow:
def __call__ (self, screen):
- screen.pushHelpLine (string.center(_("<Enter> to reboot"),
- screen.width))
-
if iutil.getArch() == "i386":
bootstr = _("If you created a boot diskette during this "
"installation as your primary means of "
@@ -33,13 +30,17 @@ class FinishedWindow:
bootstr = ""
if iutil.getArch() == "s390":
- floppystr = _("Press <Enter> to reboot your system.\n\n")
+ floppystr = _("Press <Enter> to end the installation process.\n\n")
+ bottomstr = _("<Enter> to exit")
else:
floppystr = _("Remove any installation media (diskettes or "
"CD-ROMs) used during the installation process "
"and press <Enter> to reboot your system."
"\n\n")
-
+ bottomstr = _("<Enter> to reboot")
+
+ screen.pushHelpLine (string.center(bottomstr, screen.width))
+
rc = ButtonChoiceWindow (screen, _("Complete"),
_("Congratulations, your %s installation is "
diff --git a/utils/Makefile b/utils/Makefile
index 384c32571..bf81bd2b2 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -52,6 +52,7 @@ install: all
mkdir -p $(DESTDIR)/$(RUNTIMEDIR)
install -m755 genhdlist $(DESTDIR)/$(RUNTIMEDIR)
install -m755 trimpcitable $(DESTDIR)/$(RUNTIMEDIR)
+ install -m755 trimmodmap $(DESTDIR)/$(RUNTIMEDIR)
install -m755 moddeps $(DESTDIR)/$(RUNTIMEDIR)
install -m755 filtermoddeps $(DESTDIR)/$(RUNTIMEDIR)
install -m755 modlist $(DESTDIR)/$(RUNTIMEDIR)
diff --git a/utils/trimmodmap b/utils/trimmodmap
new file mode 100644
index 000000000..c33e60dd9
--- /dev/null
+++ b/utils/trimmodmap
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+open (F, $ARGV[0]);
+@ents = (<F>);
+close (F);
+
+shift @ARGV;
+
+foreach $n (@ARGV) {
+ $n =~ s/\.o$//;
+ $mods{"$n"} = $n;
+}
+
+
+while (<STDIN>) {
+ chop;
+ $line = $_;
+ s/0x0000/0x/g;
+ @a = split;
+ if ($mods{$a[0]}) {
+ if ($a[1] ne "0xffffffff" && $a[2] ne "0xffffffff") {
+ if ($a[3] eq "0xffffffff" && $a[4] eq "0xffffffff") {
+ @res = grep (/^$a[1]\t$a[2]\t"$a[0]"/, @ents);
+ if (length(@res) != 0 && ! $res[0]) {
+ print $line."\n";
+ }
+ } else {
+ @res = grep (/^$a[1]\t$a[2]\t"$a[0]"/, @ents);
+ if ($res[0]) {
+ @b = split "\t",$res[0];
+ if ($b[2] ne "\"$a[0]\"") {
+ print $line."\n";
+ }
+ } else {
+ @res = grep (/^$a[1]\t$a[2]\t$a[3]\t$a[4]\t"$a[0]"/, @ents);
+ if (!$res[0]) {
+ print $line."\n";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/whiteout.py b/whiteout.py
index fb2b9fd15..5888a063e 100644
--- a/whiteout.py
+++ b/whiteout.py
@@ -57,5 +57,5 @@ rpm.addMacro("_dependency_whiteout", whiteout)
# ts coloring, more hacks to workaround #92285
if (rhpl.arch.canonArch.startswith("ppc64") or
- rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64")):
+ rhpl.arch.canonArch in ("s390x", "sparc64", "x86_64", "ia64")):
rpm.addMacro("_transaction_color", "3")