summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lehman <dlehman@redhat.com>2009-03-04 20:45:57 -0600
committerDavid Lehman <dlehman@redhat.com>2009-03-04 20:45:57 -0600
commitdb77fac58a1ab609a73bd7dd6d71ee51bcf0e1f3 (patch)
tree0279b0573115d6d79f5b4c1892fdd55cb5f7f41b
parent78b1415591a1db738d0c09b9de50e501e2048c28 (diff)
parent270003cd1f0c09a77608c4b0a07687c822f56274 (diff)
downloadanaconda-db77fac58a1ab609a73bd7dd6d71ee51bcf0e1f3.tar.gz
anaconda-db77fac58a1ab609a73bd7dd6d71ee51bcf0e1f3.tar.xz
anaconda-db77fac58a1ab609a73bd7dd6d71ee51bcf0e1f3.zip
Merge branch 'master' into storage
Conflicts: anaconda fsset.py iutil.py iw/partition_gui.py partedUtils.py
-rw-r--r--Makefile7
-rwxr-xr-xanaconda10
-rw-r--r--anaconda.spec5
-rw-r--r--dispatch.py3
-rwxr-xr-xgui.py1
-rw-r--r--installclass.py2
-rw-r--r--iutil.py180
-rw-r--r--iw/congrats_gui.py33
-rw-r--r--iw/network_gui.py1
-rw-r--r--loader/linuxrc.s39032
-rw-r--r--loader/loader.c55
-rw-r--r--packages.py23
-rw-r--r--po/pt_BR.po6
-rwxr-xr-xscripts/buildinstall8
-rwxr-xr-xscripts/mk-images12
-rw-r--r--scripts/mk-images.efi11
-rw-r--r--scripts/mk-images.x8614
-rwxr-xr-xscripts/upd-instroot6
-rw-r--r--textw/complete_text.py32
-rw-r--r--upgrade.py1
20 files changed, 348 insertions, 94 deletions
diff --git a/Makefile b/Makefile
index eed63f625..d7186a45b 100644
--- a/Makefile
+++ b/Makefile
@@ -108,11 +108,13 @@ tag:
ChangeLog:
(GIT_DIR=.git git log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2)
+ARCHIVE_TAG := anaconda-$(VERSION)-$(RELEASE)
+
archive-no-tag:
@rm -f ChangeLog docs/kickstart-docs.txt docs/command-line.txt
@make ChangeLog
@make -C docs kickstart-docs.txt command-line.txt
- @git archive --format=tar --prefix=anaconda-$(VERSION)/ anaconda-$(VERSION)-$(RELEASE) > anaconda-$(VERSION).tar
+ @git archive --format=tar --prefix=anaconda-$(VERSION)/ $(ARCHIVE_TAG) > anaconda-$(VERSION).tar
@mkdir -p anaconda-$(VERSION)/docs/
@cp docs/kickstart-docs.txt docs/command-line.txt anaconda-$(VERSION)/docs/
@cp ChangeLog anaconda-$(VERSION)/
@@ -120,6 +122,9 @@ archive-no-tag:
@bzip2 -f anaconda-$(VERSION).tar
@rm -rf anaconda-$(VERSION)
+scratch:
+ $(MAKE) ARCHIVE_TAG=master archive-no-tag
+
archive:
@make tag
@make archive-no-tag
diff --git a/anaconda b/anaconda
index 4e328b8c3..3abce5dcf 100755
--- a/anaconda
+++ b/anaconda
@@ -497,6 +497,8 @@ class Anaconda:
self.updateSrc = None
self.mediaDevice = None
self.platform = None
+ self.canReIPL = False
+ self.reIPLMessage = None
# *sigh* we still need to be able to write this out
self.xdriver = None
@@ -1024,3 +1026,11 @@ if __name__ == "__main__":
isys.ejectCdrom(drive)
del anaconda.intf
+
+ if iutil.isS390():
+ if anaconda.canReIPL:
+ log.info(_("reipl configuration successful => reboot"))
+ os.kill(os.getppid(), signal.SIGUSR2)
+ else:
+ log.info(_("reipl configuration failed => halt"))
+ os.kill(os.getppid(), signal.SIGUSR1)
diff --git a/anaconda.spec b/anaconda.spec
index 21a2071bf..2657076e6 100644
--- a/anaconda.spec
+++ b/anaconda.spec
@@ -20,6 +20,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# match the requires versions of things).
%define dmver 1.02.17-6
%define gettextver 0.11
+%define genisoimagever 1.1.9-4
%define intltoolver 0.31.2-3
%define libnlver 1.0
%define libselinuxver 1.6
@@ -124,9 +125,9 @@ Requires: zenity
%endif
Requires: createrepo >= %{createrepover}
Requires: squashfs-tools
-Requires: mkisofs
+Requires: genisoimage >= %{genisoimagever}
%ifarch %{ix86} x86_64
-Requires: syslinux
+Requires: syslinux >= 3.73
Requires: makebootfat
Requires: device-mapper
%endif
diff --git a/dispatch.py b/dispatch.py
index 262adc1ad..d6fbcce2a 100644
--- a/dispatch.py
+++ b/dispatch.py
@@ -47,6 +47,8 @@ from backend import doPostSelection, doBackendSetup, doBasePackageSelect
from backend import doPreInstall, doPostInstall, doInstall
from backend import writeConfiguration
+from packages import doReIPL
+
import logging
log = logging.getLogger("anaconda")
@@ -97,6 +99,7 @@ installSteps = [
("basepkgsel", doBasePackageSelect, ),
("group-selection", ),
("postselection", doPostSelection, ),
+ ("reipl", doReIPL, ),
("install", ),
("preinstallconfig", doPreInstall, ),
("installpackages", doInstall, ),
diff --git a/gui.py b/gui.py
index 113d31da2..f1443ed04 100755
--- a/gui.py
+++ b/gui.py
@@ -34,7 +34,6 @@ import time
import isys
import iutil
import sys
-import parted
import shutil
import gtk
import gtk.glade
diff --git a/installclass.py b/installclass.py
index 47ea1c62b..8e43df193 100644
--- a/installclass.py
+++ b/installclass.py
@@ -40,7 +40,6 @@ import logging
log = logging.getLogger("anaconda")
from flags import flags
-from constants import *
class BaseInstallClass(object):
# default to not being hidden
@@ -113,6 +112,7 @@ class BaseInstallClass(object):
"tasksel",
"postselection",
"confirminstall",
+ "reipl",
"install",
"enablefilesystems",
"setuptime",
diff --git a/iutil.py b/iutil.py
index b1114f4db..a5082195c 100644
--- a/iutil.py
+++ b/iutil.py
@@ -21,6 +21,7 @@
#
import os, string, stat, sys
+import signal
import os.path
from errno import *
import inspect
@@ -28,6 +29,9 @@ import rhpl
import warnings
import subprocess
from flags import flags
+from constants import *
+from rhpl.translate import _
+import re
import logging
log = logging.getLogger("anaconda")
@@ -726,4 +730,180 @@ def numeric_type(num):
return num
+def writeReiplMethod(reipl_path, reipl_type):
+ filename = "%s/reipl_type" % (reipl_path,)
+
+ try:
+ f = open(filename, "w")
+ except Exception, e:
+ message = _("Error: On open, cannot set reIPL method to %s (%s: %s)" % (reipl_type,filename,e,))
+ log.warning(message)
+ raise Exception (message)
+
+ try:
+ f.write(reipl_type)
+ f.flush()
+ except Exception, e:
+ message = _("Error: On write, cannot set reIPL method to %s (%s: %s)" % (reipl_type,filename,e,))
+ log.warning(message)
+ raise Exception (message)
+
+ try:
+ f.close()
+ except Exception, e:
+ message = _("Error: On close, cannot set reIPL method to %s (%s: %s)" % (reipl_type,filename,e,))
+ log.warning(message)
+ raise Exception (message)
+
+def reIPLonCCW(iplsubdev, reipl_path):
+ device = "<unknown>"
+
+ try:
+ iplbits = re.split ('([0-9]+)', iplsubdev)
+ if len (iplbits) != 3:
+ message = _("Error: %s splits into %s but not like we expect" % (iplsubdev,iplbits,))
+ log.warning(message)
+ raise Exception (message)
+
+ device = os.readlink("/sys/block/" + iplbits[0] + "/device").split('/')[-1]
+
+ writeReiplMethod(reipl_path, 'ccw')
+
+ try:
+ f = open("%s/ccw/device" % (reipl_path,), "w")
+ f.write(device)
+ f.close()
+ except Exception, e:
+ message = _("Error: Could not set %s as reIPL device (%s)" % (device,e,))
+ log.warning(message)
+ raise Exception (message)
+
+ try:
+ f = open("%s/ccw/loadparm" % (reipl_path,), "w")
+ f.write("\n")
+ f.close()
+ except Exception, e:
+ message = _("Error: Could not reset loadparm (%s)" % (e,))
+ log.warning(message)
+ raise Exception (message)
+
+ try:
+ f = open("%s/ccw/parm" % (reipl_path,), "w")
+ f.write("\n")
+ f.close()
+ except Exception, e:
+ message = _("Warning: Could not reset parm (%s)" % (e,))
+ log.warning(message)
+ # do NOT raise an exception since this might not exist or not be writable
+
+ except Exception, e:
+ try:
+ message = e.args[0]
+ except:
+ message = e.__str__ ()
+ return (message,
+ (_("After shutdown, please perform a manual IPL from DASD device %s to continue "
+ "installation") % (device,)))
+
+ return None
+
+def reIPLonFCP(iplsubdev, reipl_path):
+ fcpvalue = { "device": "<unknown>", "wwpn": "<unknown>", "lun": "<unknown>" }
+
+ try:
+ iplbits = re.split ('([0-9]+)', iplsubdev)
+ if len (iplbits) != 3:
+ message = _("Error: %s splits into %s but not like we expect" % (iplsubdev,iplbits,))
+ log.warning(message)
+ raise Exception (message)
+
+ syspath = "/sys/block/" + iplbits[0] + "/device"
+
+ fcpprops = [ ("hba_id", "device"), ("wwpn", "wwpn"), ("fcp_lun", "lun") ]
+
+ # Read in values to change.
+ # This way, if we can't set FCP mode, we can tell the user what to manually reboot to.
+ for (syspath_property, reipl_property) in fcpprops:
+ try:
+ f = open(syspath + "/" + syspath_property, "r")
+ value = f.read().strip()
+ fcpvalue[reipl_property] = value
+ f.close()
+ except Exception, e:
+ message = _("Error: reading FCP property %s for reIPL (%s)" % (syspath_property,e,))
+ log.warning(message)
+ raise Exception (message)
+
+ writeReiplMethod(reipl_path, 'fcp')
+
+ # Write out necessary parameters.
+ for (syspath_property, reipl_property) in fcpprops:
+ try:
+ f = open("%s/fcp/%s" % (reipl_path, reipl_property,), "w")
+ f.write(fcpvalue[reipl_property])
+ f.close()
+ except Exception, e:
+ message = _("Error: writing FCP property %s for reIPL (%s)" % (reipl_property,e,))
+ log.warning(message)
+ raise Exception (message)
+
+ defaultprops = [ ("bootprog", "0"), ("br_lba", "0") ]
+
+ # Write out default parameters.
+ for (reipl_property, default_value) in defaultprops:
+ try:
+ f = open("%s/fcp/%s" % (reipl_path, reipl_property,), "w")
+ f.write (default_value)
+ f.close()
+ except Exception, e:
+ message = _("Error: writing default FCP property %s for reIPL (%s)" % (reipl_property,e,))
+ log.warning(message)
+ raise Exception (message)
+
+ except Exception, e:
+ try:
+ message = e.args[0]
+ except:
+ message = e.__str__ ()
+ return (message,
+ (_("After shutdown, please perform a manual IPL from FCP %(device)s with WWPN %(wwpn)s "
+ "and LUN %(lun)s to continue installation") % (fcpvalue)))
+
+ return None
+
+
+def reIPL(anaconda, loader_pid):
+ instruction = _("After shutdown, please perform a manual IPL from the device "
+ "now containing /boot to continue installation")
+
+ reipl_path = "/sys/firmware/reipl"
+
+ iplfs = anaconda.id.fsset.getEntryByMountPoint("/boot")
+ if iplfs is None:
+ iplfs = anaconda.id.fsset.getEntryByMountPoint("/")
+
+ if iplfs is None:
+ message = _("Could not get information for mount point /boot or /")
+ log.warning(message)
+ return (message, instruction)
+
+ try:
+ ipldev = iplfs.device.device
+ except:
+ ipldev = None
+
+ if ipldev is None:
+ message = _("Error determining mount point type")
+ log.warning(message)
+ return (message, instruction)
+
+ message = (_("The mount point /boot or / is on a disk that we are not familiar with"), instruction)
+ if ipldev.startswith("dasd"):
+ message = reIPLonCCW(ipldev, reipl_path)
+ elif ipldev.startswith("sd"):
+ message = reIPLonFCP(ipldev, reipl_path)
+
+ # the final return is either None if reipl configuration worked (=> reboot),
+ # or a two-item list with errorMessage and rebootInstr (=> shutdown)
+ return message
diff --git a/iw/congrats_gui.py b/iw/congrats_gui.py
index 18667dc99..b5f0101cf 100644
--- a/iw/congrats_gui.py
+++ b/iw/congrats_gui.py
@@ -20,7 +20,6 @@
import gtk
import gui
-import iutil
from iw_gui import *
from constants import *
import os
@@ -40,6 +39,8 @@ class CongratulationWindow (InstallWindow):
# force buttonbar on in case release notes viewer is running
ics.cw.mainxml.get_widget("buttonBar").set_sensitive(True)
+ self.rebootButton = ics.cw.mainxml.get_widget("rebootButton")
+
# this mucks around a bit, but it's the weird case and it's
# better than adding a lot of complication to the normal
ics.cw.mainxml.get_widget("nextButton").hide()
@@ -47,6 +48,8 @@ class CongratulationWindow (InstallWindow):
ics.cw.mainxml.get_widget("closeButton").show()
ics.cw.mainxml.get_widget("closeButton").grab_focus()
else:
+ self.rebootButton.show()
+ self.rebootButton.grab_focus()
ics.cw.mainxml.get_widget("rebootButton").show()
ics.cw.mainxml.get_widget("rebootButton").grab_focus()
@@ -66,11 +69,29 @@ class CongratulationWindow (InstallWindow):
a.set_size_request(200, -1)
hbox.pack_start (a, False, False, 36)
- txt = _("Congratulations, your %s installation is complete.\n\n"
- "Please reboot to use the installed system. "
- "Note that updates may be available to ensure the proper "
- "functioning of your system and installation of these "
- "updates is recommended after the reboot.") %(productName,)
+ if iutil.isS390():
+ txt = _("Congratulations, your %s installation is complete.\n\n") % (productName,)
+
+ if not anaconda.canReIPL:
+ self.rebootButton.set_label(_("Shutdown"))
+
+ txt = txt + _("Please shutdown to use the installed system.\n")
+ else:
+ txt = txt + _("Please reboot to use the installed system.\n")
+
+ if not anaconda.reIPLMessage is None:
+ txt = txt + "\n" + anaconda.reIPLMessage + "\n\n"
+
+ txt = txt + _("Note that updates may be available to ensure the proper "
+ "functioning of your system and installation of these "
+ "updates is recommended after the reboot.")
+ else:
+ txt = _("Congratulations, your %s installation is complete.\n\n"
+ "Please reboot to use the installed system. "
+ "Note that updates may be available to ensure the proper "
+ "functioning of your system and installation of these "
+ "updates is recommended after the reboot.") %(productName,)
+
label = gui.WrappingLabel(txt)
label.set_size_request(250, -1)
diff --git a/iw/network_gui.py b/iw/network_gui.py
index 90ee1237b..365333ac3 100644
--- a/iw/network_gui.py
+++ b/iw/network_gui.py
@@ -25,7 +25,6 @@ import string
from iw_gui import *
import gui
import network
-import socket
from constants import *
import gettext
diff --git a/loader/linuxrc.s390 b/loader/linuxrc.s390
index 9acab9b97..af2d43956 100644
--- a/loader/linuxrc.s390
+++ b/loader/linuxrc.s390
@@ -61,35 +61,13 @@ checkipv4()
doshutdown()
{
- exec /sbin/shutdown
- exit 0
+ echo $"about to exec shutdown"
+ exec /sbin/shutdown
+ exit 0
}
doreboot()
{
- # find out the location of /boot and use it to re-ipl
- boot="$(cat /proc/mounts | grep " /mnt/sysimage/boot " | awk -F" " '{print $1}')"
- if [ -z $boot ]; then
- # use root if /boot not used
- boot="$(cat /proc/mounts | grep " /mnt/sysimage " | awk -F" " '{print $1}')"
- fi
-
- # lookup dasd disk
- echo $boot | grep "dasd" > /dev/null
- if [ $? -eq 0 ]; then
- type="ccw"
- boot="$(basename $boot)"
- # strip partition number from dasd device
- boot="$(echo ${boot%[0-9]})"
- id="$(basename $(readlink /sys/block/$boot/device))"
- echo $type > /sys/firmware/reipl/reipl_type
- echo $id > /sys/firmware/reipl/$type/device
- else
- # scsi re-ipl only supported on newer machines
- doshutdown
- exit 0
- fi
-
echo $"about to exec shutdown -r"
exec /sbin/shutdown -r
exit 0
@@ -670,7 +648,9 @@ if [ -n "$RUNKS" ]; then
/sbin/loader
fi
-doreboot
+# A shutdown needs to be performed here to avoid a loop booting back into the installer
+echo $"Finishing up with doshutdown"
+doshutdown
# ;;; Local Variables: ***
# ;;; mode: sh ***
diff --git a/loader/loader.c b/loader/loader.c
index 10ac30756..98ea24cba 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -121,6 +121,8 @@ uint64_t flags = LOADER_FLAGS_SELINUX;
int num_link_checks = 5;
int post_link_sleep = 0;
+static pid_t init_pid = 1;
+
static struct installMethod installMethods[] = {
{ N_("Local CD/DVD"), 0, DEVICE_CDROM, mountCdromImage },
{ N_("Hard drive"), 0, DEVICE_DISK, mountHardDrive },
@@ -1716,6 +1718,11 @@ void loaderSegvHandler(int signum) {
exit(1);
}
+void loaderUsrXHandler(int signum) {
+ logMessage(INFO, "Sending signal %d to process %d\n", signum, init_pid);
+ kill(init_pid, signum);
+}
+
static int anaconda_trace_init(void) {
#ifdef USE_MTRACE
setenv("MALLOC_TRACE","/malloc",1);
@@ -1798,6 +1805,26 @@ int main(int argc, char ** argv) {
{ 0, 0, 0, 0, 0, 0, 0 }
};
+ /* get init PID if we have it */
+ if ((f = fopen("/var/run/init.pid", "r")) != NULL) {
+ char linebuf[256];
+ memset(linebuf, '\0', sizeof(linebuf));
+
+ while (fgets(linebuf, sizeof(linebuf) - 1, f) != NULL) {
+ errno = 0;
+ init_pid = strtol((const char *) &linebuf, NULL, 10);
+ if (errno == EINVAL || errno == ERANGE) {
+ logMessage(ERROR, "%s (%d): %m", __func__, __LINE__);
+ init_pid = 1;
+ }
+ }
+
+ fclose(f);
+ }
+
+ signal(SIGUSR1, loaderUsrXHandler);
+ signal(SIGUSR2, loaderUsrXHandler);
+
/* Make sure sort order is right. */
setenv ("LC_COLLATE", "C", 1);
@@ -2228,34 +2255,6 @@ int main(int argc, char ** argv) {
waitpid(pid, &status, 0);
}
-#if defined(__s390__) || defined(__s390x__)
- /* FIXME: we have to send a signal to linuxrc on s390 so that shutdown
- * can happen. this is ugly */
- FILE * f;
- f = fopen("/var/run/init.pid", "r");
- if (!f) {
- logMessage(WARNING, "can't find init.pid, guessing that init is pid 1");
- pid = 1;
- } else {
- char * buf = malloc(256);
- char *ret;
-
- ret = fgets(buf, 256, f);
- errno = 0;
- pid = strtol(buf, NULL, 10);
-
- if ((errno == ERANGE && (pid == LONG_MIN || pid == LONG_MAX)) ||
- (errno != 0 && pid == 0)) {
- logMessage(ERROR, "%s: %d: %m", __func__, __LINE__);
- abort();
- }
-
- free(buf);
- fclose(f);
- }
-
- kill(pid, SIGUSR2);
-#endif
stop_fw_loader(&loaderData);
return rc;
}
diff --git a/packages.py b/packages.py
index 1de32a7a9..2bac9d331 100644
--- a/packages.py
+++ b/packages.py
@@ -443,3 +443,26 @@ def betaNagScreen(anaconda):
sys.exit(0)
else:
break
+
+def doReIPL(anaconda):
+# # This is here as an example to fix the screen during the TUI debugging path
+# anaconda.intf.screen.suspend ()
+# import pdb
+# pdb.set_trace ()
+
+ if not iutil.isS390():
+ return DISPATCH_NOOP
+
+ messageInfo = iutil.reIPL(anaconda, os.getppid())
+
+ if messageInfo is None:
+ anaconda.canReIPL = True
+ else:
+ anaconda.canReIPL = False
+
+ (errorMessage, rebootInstr) = messageInfo
+
+ # errorMessage intentionally not shown in UI
+ anaconda.reIPLMessage = rebootInstr
+
+ return DISPATCH_FORWARD
diff --git a/po/pt_BR.po b/po/pt_BR.po
index a0ee0325f..1886c87ab 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -20,7 +20,7 @@ msgstr ""
"Project-Id-Version: Anaconda\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-13 10:57-0400\n"
-"PO-Revision-Date: 2008-10-14 16:07-0300\n"
+"PO-Revision-Date: 2009-02-26 15:52-0300\n"
"Last-Translator: Igor Pires Soares <igor@projetofedora.org>\n"
"Language-Team: Brazilian Portuguese <fedora-trans-pt_br@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -6589,8 +6589,8 @@ msgid "Marathi"
msgstr "Marati"
#. generated from lang-table
-msgid "Norwegian(Bokmål)"
-msgstr "Norueguês (BokmÃ¥l)"
+msgid "Norwegian(Bokmål)"
+msgstr "Norueguês (Bokmål)"
#. generated from lang-table
msgid "Northern Sotho"
diff --git a/scripts/buildinstall b/scripts/buildinstall
index 3c59a3157..ab8d2df49 100755
--- a/scripts/buildinstall
+++ b/scripts/buildinstall
@@ -179,6 +179,9 @@ echo "Running buildinstall..."
pushd $BUILDINSTDIR
BUILDARCH=`repoquery -c $yumconf --qf "%{ARCH}\n" anaconda`
+# This is a crappy implementation but x86 is the only place we currently see
+# BUILDARCH != BASEARCH (e.g. i586 != i386) so it'll suffice.
+BASEARCH=`echo $BUILDARCH | sed -e 's/i.86/i386/'`
yumdownloader -c $yumconf anaconda || exit 1
rpm2cpio anaconda*rpm | cpio --quiet -iumd './usr*'
rm -f anaconda*rpm
@@ -212,11 +215,12 @@ echo "Building images..."
$UPD_INSTROOT $DEBUGSTR $NOGRSTR --arch $BUILDARCH $UPDATES --imgdir $TREEDIR/install $yumconf || die "upd-instroot failed"
echo "Writing .treeinfo file..."
-$MK_TREEINFO --family="$PRODUCTSTR" ${VARIANT:+--variant="$VARIANT"} --version=$VERSION --arch=$BUILDARCH --outfile=$OUTPUT/.treeinfo
+# NOTE --arch must match MK_IMAGES or the resulting treeinfo will be invalid
+$MK_TREEINFO --family="$PRODUCTSTR" ${VARIANT:+--variant="$VARIANT"} --version=$VERSION --arch=$BASEARCH --outfile=$OUTPUT/.treeinfo
# FIXME: need to update mk-images to take the yumconf
echo "Making images..."
-$MK_IMAGES $DEBUGSTR $NOGRSTR --imgdir $TREEDIR/install --arch $BUILDARCH --product "$PRODUCTSTR" --version $VERSION --bugurl "$BUGURL" --output $OUTPUT $yumconf || die "image creation failed"
+$MK_IMAGES $DEBUGSTR $NOGRSTR --imgdir $TREEDIR/install --arch $BASEARCH --product "$PRODUCTSTR" --version $VERSION --bugurl "$BUGURL" --output $OUTPUT $yumconf || die "image creation failed"
echo "Writing .discinfo file"
$MK_STAMP --releasestr="$RELEASESTR" --arch=$BUILDARCH --discNum="ALL" --outfile=$OUTPUT/.discinfo
diff --git a/scripts/mk-images b/scripts/mk-images
index d86da0a77..d4cac465f 100755
--- a/scripts/mk-images
+++ b/scripts/mk-images
@@ -30,7 +30,7 @@ usage () {
}
DEBUG=""
-BUILDARCH=`uname -m | sed -e 's/i.86/i386/'`
+BUILDARCH=`uname -m`
BOOTISO="boot.iso"
while [ $# -gt 0 ]; do
@@ -44,7 +44,7 @@ while [ $# -gt 0 ]; do
shift
;;
--arch)
- BUILDARCH=`echo $2 | sed -e 's/i.86/i386/'`
+ BUILDARCH=$2
shift; shift
;;
--imgdir)
@@ -96,7 +96,7 @@ TOPDIR=$(cd $TOPDIR; pwd)
# modules that are needed. this is the generic "needed for every arch" stuff
COMMONMODS="fat vfat nfs sunrpc lockd floppy cramfs loop edd pcspkr squashfs ipv6 virtio_pci"
-USBMODS="ohci-hcd uhci-hcd ehci-hcd hid mousedev usb-storage sd_mod sr_mod ub appletouch"
+USBMODS="ohci-hcd uhci-hcd ehci-hcd usbhid mousedev usb-storage sd_mod sr_mod ub appletouch"
FIREWIREMODS="ohci1394 sbp2 fw-ohci fw-sbp2 firewire-sbp2 firewire-ohci"
SDMODS="mmc-block sdhci sdhci-pci"
IDEMODS="ide-cd ide-cd_mod"
@@ -810,8 +810,8 @@ makemainimage () {
ERROR=$(du -sk $IMGPATH/usr/lib/anaconda-runtime | awk '{ print $1 }')
SIZE=$(expr $SIZE - $ERROR)
fi
- if [ -d $IMGPATH/usr/lib/syslinux ]; then
- ERROR=$(du -sk $IMGPATH/usr/lib/syslinux | awk '{ print $1 }')
+ if [ -d $IMGPATH/usr/share/syslinux ]; then
+ ERROR=$(du -sk $IMGPATH/usr/share/syslinux | awk '{ print $1 }')
SIZE=$(expr $SIZE - $ERROR)
fi
dd if=/dev/zero bs=1k count=${SIZE} of=$mmi_tmpimage 2>/dev/null
@@ -821,7 +821,7 @@ makemainimage () {
(cd $IMGPATH; find . |
fgrep -v "./usr/lib/anaconda-runtime" |
- fgrep -v "./usr/lib/syslinux"
+ fgrep -v "./usr/share/syslinux"
cpio -H crc -o) | (cd $mmi_mntpoint; cpio -iumd)
makeproductfile $mmi_mntpoint
umount $mmi_mntpoint
diff --git a/scripts/mk-images.efi b/scripts/mk-images.efi
index 9bd202431..687d76c01 100644
--- a/scripts/mk-images.efi
+++ b/scripts/mk-images.efi
@@ -157,8 +157,13 @@ prepareEfiTree() {
mv $MBD_BOOTTREE_TMP/EFI/boot/grub.efi $MBD_BOOTTREE_TMP/EFI/boot/boot${efiarch}.efi
mv $MBD_BOOTTREE_TMP/EFI/boot/grub.conf $MBD_BOOTTREE_TMP/EFI/boot/boot${efiarch}.conf
- yumdownloader -c $yumconf ${brandpkgname}-logos
- rpm2cpio $artpkg.rpm | (cd $KERNELROOT; cpio --quiet -iumd)
+ artpkg=$(repoquery --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}" --whatprovides ${brandpkgname}-logos | grep -v generic-logos | head -1)
+ if [ -z "$artpkg" ]; then
+ argpkg="generic-logos"
+ fi
+
+ yumdownloader -c ${yumconf} ${artpkg}
+ rpm2cpio ${artpkg}.rpm | (cd $KERNELROOT; cpio --quiet -iumd)
cp $KERNELROOT/boot/grub/splash.xpm.gz $MBD_BOOTTREE_TMP/EFI/boot/splash.xpm.gz
}
@@ -167,7 +172,7 @@ makeEfiImages() {
if [ "$kernelvers" != "$kernelxen" ]; then
local grubarch=${efiarch}
case ${efiarch} in
- ia32) grubarch=i386 ;;
+ ia32) grubarch=i?86 ;;
x64) grubarch=x86_64 ;;
esac
diff --git a/scripts/mk-images.x86 b/scripts/mk-images.x86
index 3e227395f..813d94185 100644
--- a/scripts/mk-images.x86
+++ b/scripts/mk-images.x86
@@ -17,7 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-SYSLINUX=$IMGPATH/usr/lib/syslinux/syslinux-nomtools
+SYSLINUX=$IMGPATH/usr/share/syslinux/syslinux-nomtools
if [ ! -f $SYSLINUX ]; then
echo "Warning: nomtools syslinux doesn't exist"
@@ -38,7 +38,7 @@ prepareBootTree() {
if [ -f $IMGPATH/usr/lib/anaconda-runtime/syslinux-vesa-splash.jpg ]; then
cp $IMGPATH/usr/lib/anaconda-runtime/syslinux-vesa-splash.jpg $MBD_BOOTTREE/splash.jpg
- cp $IMGPATH/usr/lib/syslinux/vesamenu.c32 $MBD_BOOTTREE/vesamenu.c32
+ cp $IMGPATH/usr/share/syslinux/vesamenu.c32 $MBD_BOOTTREE/vesamenu.c32
sed -i s'/default linux/default vesamenu.c32/g' $MBD_BOOTTREE/syslinux.cfg
sed -i 's/prompt 1/#prompt 1/g' $MBD_BOOTTREE/syslinux.cfg
elif [ -x $IMGPATH/usr/lib/anaconda-runtime/splashtolss.sh ]; then
@@ -102,12 +102,12 @@ makeBootImages() {
[ $? = 0 ] || exit 1
if [ "$kernelvers" != "$kernelxen" ] ; then
- if [ -f $IMGPATH/usr/lib/syslinux/isolinux.bin ]; then
+ if [ -f $IMGPATH/usr/share/syslinux/isolinux.bin ]; then
echo "Building isolinux directory"
MBD_BOOTTREE=$TOPDESTPATH/isolinux
MBD_FSIMAGE=$TOPDESTPATH/images/pxeboot/initrd.img
mkdir $MBD_BOOTTREE
- cp $IMGPATH/usr/lib/syslinux/isolinux.bin $MBD_BOOTTREE/isolinux.bin
+ cp $IMGPATH/usr/share/syslinux/isolinux.bin $MBD_BOOTTREE/isolinux.bin
prepareBootTree
@@ -157,7 +157,11 @@ __EOT__
doPostImages() {
if [ -n "$BOOTISO" ]; then
- mkisofs -quiet -o $TOPDESTPATH/images/$BOOTISO -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "$PRODUCT" -T -graft-points isolinux=$TOPDESTPATH/isolinux images/install.img=$TOPDESTPATH/images/install.img
+ EFIARGS=""
+ if [ -f isolinux/efiboot.img ]; then
+ EFIARGS="-eltorito-alt-boot -e isolinux/efiboot.img -no-emul-boot"
+ fi
+ mkisofs -o $TOPDESTPATH/images/$BOOTISO -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $EFIARGS -R -J -V "$PRODUCT" -T -graft-points isolinux=$TOPDESTPATH/isolinux images/install.img=$TOPDESTPATH/images/install.img
implantisomd5 $TOPDESTPATH/images/$BOOTISO
fi
diff --git a/scripts/upd-instroot b/scripts/upd-instroot
index b7dfca23f..1da86f508 100755
--- a/scripts/upd-instroot
+++ b/scripts/upd-instroot
@@ -183,8 +183,8 @@ PACKAGES="GConf2 NetworkManager ORBit2 PolicyKit acl anaconda
reiserfs-utils rhpl rpm rpm-libs rpm-python sed selinux-policy-targeted
setup slang smc-fonts-meera specspo sqlite synaptics system-config-date
system-config-keyboard ${brandpkgname}-logos ${brandpkgname}-release taipeifonts tcp_wrappers
- tzdata udev un-core-fonts-dotum urw-fonts util-linux-ng tightvnc-server
- tightvnc-server-module vlgothic-fonts
+ tzdata udev un-core-fonts-dotum urw-fonts util-linux-ng tigervnc-server
+ tigervnc-server-module vlgothic-fonts
wpa_supplicant xkeyboard-config xfsdump xfsprogs xorg-x11 xorg-x11-auth
xorg-x11-base xorg-x11-drivers xorg-x11-font-utils xorg-x11-fonts-ethiopic
xorg-x11-fonts-misc xorg-x11-libs xorg-x11-libs-data xorg-x11-server-utils
@@ -512,7 +512,7 @@ usr/lib/python?.?/site-packages/yum
usr/lib/rpm/macros
usr/lib/rpm/rpmpopt
usr/lib/rpm/rpmrc
-usr/lib/syslinux
+usr/share/syslinux
usr/lib/yaboot
usr/lib/yum-plugins/blacklist.py*
usr/lib/yum-plugins/fedorakmod.py*
diff --git a/textw/complete_text.py b/textw/complete_text.py
index df735547f..1793cab10 100644
--- a/textw/complete_text.py
+++ b/textw/complete_text.py
@@ -28,17 +28,37 @@ class FinishedWindow:
def __call__ (self, screen, anaconda):
bootstr = ""
+ buttonstr = _("Reboot")
bottomstr = _("<Enter> to exit")
screen.pushHelpLine (string.center(bottomstr, screen.width))
- txt = _("Congratulations, your %s installation is complete.\n\n"
- "Please reboot to use the installed system. "
- "Note that updates may be available to ensure the proper "
- "functioning of your system and installation of these "
- "updates is recommended after the reboot.") %(productName,)
+ if iutil.isS390():
+ txt = _("Congratulations, your %s installation is complete.\n\n") % (productName,)
+
+ if not anaconda.canReIPL:
+ buttonstr = _("Shutdown")
+
+ txt = txt + _("Please shutdown to use the installed system.\n")
+ else:
+ txt = txt + _("Please reboot to use the installed system.\n")
+
+ if not anaconda.reIPLMessage is None:
+ txt = txt + "\n" + anaconda.reIPLMessage + "\n\n"
+
+ txt = txt + _("Note that updates may be available to ensure the proper "
+ "functioning of your system and installation of these "
+ "updates is recommended after the reboot.")
+ else:
+ txt = _("Congratulations, your %s installation is complete.\n\n"
+ "Please reboot to use the installed system. "
+ "Note that updates may be available to ensure the proper "
+ "functioning of your system and installation of these "
+ "updates is recommended after the reboot.") %(productName,)
+
+
rc = ButtonChoiceWindow (screen, _("Complete"), txt,
- [ _("Reboot") ], help = "finished", width=60)
+ [ buttonstr ], help = "finished", width=60)
return INSTALL_OK
diff --git a/upgrade.py b/upgrade.py
index e89742a40..fc025a5d6 100644
--- a/upgrade.py
+++ b/upgrade.py
@@ -325,6 +325,7 @@ def setSteps(anaconda):
"dependencies",
"confirmupgrade",
"postselection",
+ "reipl",
"install",
"preinstallconfig",
"installpackages",