diff --git a/Makefile b/Makefile
index 13982cf..1c48190 100644
--- a/Makefile
+++ b/Makefile
@@ -24,6 +24,7 @@ RPMBUILD_DEFINES := --define "_rpmdir rpm/" --define "_sourcedir $(TOP)/rpm/SOUR
spec_version = $(shell sed -n '/^Version:/s/.*:[ \t]\+//p' $(1))
package = $(shell \
+ mkdir -p rpm/SOURCES; \
cd rpm/SOURCES; \
rm -f $(1)-$(2)*; \
ln -s ../../$(1) $(1)-$(2); \
@@ -98,7 +99,8 @@ iso:
cp rpm_verify /usr/local/bin/
ln -sf `pwd` /tmp/qubes-installer
revisor --cli --config=conf/qubes-install.conf --model=qubes-x86_64 --install-dvd
- rpm_verify build/work/revisor-install/R1-*/qubes-x86_64/x86_64/os/Packages/*.rpm
+ isohybrid build/ISO/qubes-x86_64/iso/*.iso
+ rpm_verify build/work/revisor-install/R?-*/qubes-x86_64/x86_64/os/Packages/*.rpm
clean:
rm -fr rpm/SOURCES/*.bz2
diff --git a/anaconda/anaconda b/anaconda/anaconda
index 0f54d65..bb5bed5 100755
--- a/anaconda/anaconda
+++ b/anaconda/anaconda
@@ -1113,10 +1113,13 @@ if __name__ == "__main__":
doStartupX11Actions(opts.runres)
xserver_pid = proc.pid
except (OSError, RuntimeError):
- stdoutLog.warning(" X startup failed, falling back to text mode")
- anaconda.displayMode = 't'
- graphical_failed = 1
+ stdoutLog.warning(" X startup failed, aborting installation")
time.sleep(2)
+ sys.exit(1)
+ #stdoutLog.warning(" X startup failed, falling back to text mode")
+ #anaconda.displayMode = 't'
+ #graphical_failed = 1
+ #time.sleep(2)
finally:
signal.signal(signal.SIGUSR1, old_sigusr1)
signal.signal(signal.SIGCHLD, old_sigchld)
diff --git a/anaconda/anaconda.spec b/anaconda/anaconda.spec
index ae21020..0720769 100644
--- a/anaconda/anaconda.spec
+++ b/anaconda/anaconda.spec
@@ -4,7 +4,7 @@
Summary: Graphical system installer
Name: anaconda
Version: 13.42
-Release: 2%{?dist}
+Release: 4%{?dist}
Epoch: 1000
License: GPLv2+
Group: Applications/System
diff --git a/anaconda/backend.py b/anaconda/backend.py
index 2ec2109..713278b 100644
--- a/anaconda/backend.py
+++ b/anaconda/backend.py
@@ -188,7 +188,7 @@ class AnacondaBackend:
return 1
isys.lochangefd("/dev/loop0", self._loopbackFile)
- if os.path.ismount("/mnt/stage2"):
+ if os.path.ismount("/mnt/stage2") and not anaconda.methodstr.find("/mnt/stage2") >= 0:
isys.umount("/mnt/stage2")
def removeInstallImage(self):
diff --git a/anaconda/loader/loader.c b/anaconda/loader/loader.c
index a601f0f..d22d51e 100644
--- a/anaconda/loader/loader.c
+++ b/anaconda/loader/loader.c
@@ -1232,9 +1232,75 @@ static char *doLoaderMain(struct loaderData_s *loaderData,
* That will also then bypass any method selection UI in loader.
*/
if (!FL_ASKMETHOD(flags)) {
- url = findAnacondaCD("/mnt/stage2");
+ int stage2ok = 0;
+ // marmarek hack for USB install
+ if (loaderData->method == METHOD_HD) {
+ char *location = "/mnt/stage2";
+ char *device = ((struct hdInstallData *)loaderData->stage2Data)->partition;
+ char *stage2loc = "/mnt/stage2/images/install.img";
+ char *stage2img;
+ int stage2inram;
+
+ if (!(rc=doPwMount(device, location, "auto", "ro", NULL))) {
+ if (!access(stage2loc, R_OK)) {
+ char *updpath;
+
+ //TODO? queryCDMediaCheck(device, location);
+
+ /* if in rescue mode lets copy stage 2 into RAM so we can */
+ /* free up the CD drive and user can have it avaiable to */
+ /* aid system recovery. */
+ if (FL_RESCUE(flags) && !FL_TEXT(flags) &&
+ totalMemory() > MIN_GUI_RAM ) {
+ rc = copyFile(stage2loc, "/tmp/install.img");
+ stage2img = strdup("/tmp/install.img");
+ stage2inram = 1;
+ } else {
+ stage2img = strdup(stage2loc);
+ stage2inram = 0;
+ }
+
+ rc = mountStage2(stage2img);
+ free(stage2img);
+
+ if (!rc) {
+ checked_asprintf(&updpath, "%s/images/updates.img", location);
+
+ logMessage(INFO, "Looking for updates in %s", updpath);
+ copyUpdatesImg(updpath);
+ free(updpath);
+
+ checked_asprintf(&updpath, "%s/images/product.img", location);
+
+ logMessage(INFO, "Looking for product in %s", updpath);
+ copyProductImg(updpath);
+ free(updpath);
+
+ /* if in rescue mode and we copied stage2 to RAM */
+ /* we can now unmount the CD */
+ if (FL_RESCUE(flags) && stage2inram) {
+ umount(location);
+ }
+ stage2ok = 1;
+ checked_asprintf(&url, "file://%s", location);
+ } else {
+ logMessage(INFO, "mounting stage2 failed");
+ umount(location);
+ }
+ } else {
+ /* this wasnt the CD we were looking for, clean up and */
+ /* try the next CD drive */
+ umount(location);
+ }
+ } else {
+ logMessage(WARNING, "Mount failed for %s at %s", device, location);
+ }
+ }
+ if (!url)
+ url = findAnacondaCD("/mnt/stage2");
if (url) {
- setStage2LocFromCmdline(url, loaderData);
+ if (!stage2ok)
+ setStage2LocFromCmdline(url, loaderData);
skipMethodDialog = 1;
logMessage(INFO, "Detected stage 2 image on CD (url: %s)", url);
diff --git a/anaconda/scripts/mk-images.x86 b/anaconda/scripts/mk-images.x86
index 09fc9ae..228da60 100644
--- a/anaconda/scripts/mk-images.x86
+++ b/anaconda/scripts/mk-images.x86
@@ -18,7 +18,7 @@
#
SYSLINUX=$IMGPATH/usr/share/syslinux/syslinux-nomtools
-CDLABEL=$PRODUCT
+CDLABEL="$PRODUCT $VERSION x86_64 DVD"
if [ ! -f $SYSLINUX ]; then
echo "Warning: nomtools syslinux doesn't exist"
@@ -100,7 +100,7 @@ makeBootImages() {
# insert XEN boot options
sed -i 's/kernel vmlinuz/kernel mboot.c32/' $MBD_BOOTTREE/isolinux.cfg
- sed -i "s/append initrd=[^ ]*\(.*\)/append $xenimage --- $kernelimage stage2=hd:LABEL=\"$CDLABEL\"\1 --- $initrd/" $MBD_BOOTTREE/isolinux.cfg
+ sed -i "s/append initrd=[^ ]*\(.*\)/append $xenimage --- $kernelimage stage2=hd:LABEL=\"$CDLABEL\":\/images\/install.img repo=file:\/mnt\/stage2\1 --- $initrd/" $MBD_BOOTTREE/isolinux.cfg
# copy in memtest if present
if [ -f $IMGPATH/usr/lib/anaconda-runtime/boot/memtest* ]; then
diff --git a/anaconda/scripts/upd-instroot b/anaconda/scripts/upd-instroot
index 7ba06df..d274db4 100755
--- a/anaconda/scripts/upd-instroot
+++ b/anaconda/scripts/upd-instroot
@@ -366,6 +366,8 @@ etc/hosts
etc/im_palette.pal
etc/imrc
etc/iscsid.conf
+etc/ld.so.conf
+etc/ld.so.conf.d/*
etc/man.config
etc/mke2fs.conf
etc/netconfig
@@ -390,6 +392,7 @@ etc/shells
etc/sysconfig/network-scripts/network-functions*
etc/udev
etc/wpa_supplicant/wpa_supplicant.conf
+etc/X11/fontpath.d
etc/yum.repos.d/*
etc/yum/pluginconf.d/blacklist.conf
etc/yum/pluginconf.d/fedorakmod.conf
@@ -629,11 +632,13 @@ usr/share/fonts/*/lklug.ttf
usr/share/fonts/lohit*/*
usr/share/fonts/*/lklug.ttf
usr/share/fonts/cjkuni*/uming*.ttc
+usr/share/fonts/default
usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
usr/share/fonts/dejavu/DejaVuSans.ttf
usr/share/fonts/dejavu/DejaVuSansMono.ttf
usr/share/fonts/kacst/KacstFarsi.ttf
usr/share/fonts/kacst/KacstQura.ttf
+usr/share/fonts/liberation
usr/share/fonts/madan/Madan.ttf
usr/share/fonts/un-core/UnDotum.ttf
usr/share/fonts/*/VL-Gothic-Regular.ttf
diff --git a/anaconda/yuminstall.py b/anaconda/yuminstall.py
index ff9c7a3..478bbae 100644
--- a/anaconda/yuminstall.py
+++ b/anaconda/yuminstall.py
@@ -492,6 +492,10 @@ class AnacondaYum(YumSorter):
self._switchCD(1)
self.mediagrabber = self.mediaHandler
self._baseRepoURL = "file://%s" % self.tree
+ elif m.startswith("file:"):
+ self.tree = m[5:]
+ self._baseRepoURL = "file://%s" % self.tree
+
else:
# No methodstr was given. In order to find an installation source,
# we should first check to see if there's a CD/DVD with packages
diff --git a/conf/comps-qubes.xml b/conf/comps-qubes.xml
index 765f0fe..f7ba76a 100644
--- a/conf/comps-qubes.xml
+++ b/conf/comps-qubes.xml
@@ -83,7 +83,7 @@
kdeaccessibility
kdm
mesa-libEGL
- oxygen-icons-theme
+ oxygen-icon-theme
qubes-kde-dom0
redhat-menus
xsettings-kde
diff --git a/conf/qubes-install.conf b/conf/qubes-install.conf
index 0635d13..86f2860 100644
--- a/conf/qubes-install.conf
+++ b/conf/qubes-install.conf
@@ -38,7 +38,7 @@ revisor_comps = 1
comps = /tmp/qubes-installer/conf/comps-qubes.xml
destination_directory = /tmp/qubes-installer/build/ISO
-working_directory = /tmp/qubes-installer/build/work
+working_directory = /tmp/qubes-installer/build/work/
## Models
diff --git a/qubes-release/qubes-release.spec b/qubes-release/qubes-release.spec
index 12c0f4a..977aa39 100644
--- a/qubes-release/qubes-release.spec
+++ b/qubes-release/qubes-release.spec
@@ -75,7 +75,9 @@ EOF
# On Mar 31, 2012, the Qubes signing key has changed
# The new key is brought by this RPM, but we also
# need to explicitly import it to RPM DB
-rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-1-primary
+if [ $1 -gt 1 ]; then
+ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-1-primary
+fi
%clean
diff --git a/revisor/revisor-2.2-volume-label.patch b/revisor/revisor-2.2-volume-label.patch
new file mode 100644
index 0000000..9669597
--- /dev/null
+++ b/revisor/revisor-2.2-volume-label.patch
@@ -0,0 +1,12 @@
+diff -ru revisor-2.2.orig/revisor/pungi.py revisor-2.2/revisor/pungi.py
+--- revisor-2.2.orig/revisor/pungi.py 2010-06-04 15:36:04.000000000 +0200
++++ revisor-2.2/revisor/pungi.py 2012-04-28 02:32:04.675002111 +0200
+@@ -584,7 +584,7 @@
+ if mt["discs"] > 1:
+ volume = "%s%d" % (volume, disc)
+
+- extraargs.extend(['"%s"' % volume])
++ extraargs.extend(['%s' % volume])
+ extraargs.extend(['-o', isofile])
+
+ if not self.cfg.include_bootiso:
diff --git a/revisor/revisor.spec b/revisor/revisor.spec
index 7009174..7faff3b 100644
--- a/revisor/revisor.spec
+++ b/revisor/revisor.spec
@@ -19,7 +19,7 @@
Summary: Fedora "Spin" Graphical User Interface
Name: revisor
Version: 2.2
-Release: 4%{?dist}
+Release: 5%{?dist}
License: GPLv2
Group: Applications/System
URL: http://fedorahosted.org/revisor
@@ -132,6 +132,7 @@ Provides: revisor-wui = %{version}-%{release}
Source100: F13-buildinstall
Patch100: revisor-2.2-comps.patch
Patch101: revisor-2.2-release.patch
+Patch102: revisor-2.2-volume-label.patch
%description cli
Revisor provides a set of graphical tools for building customized, updated
@@ -354,6 +355,7 @@ This is the Revisor Web User Interface package
%setup -q
%patch100 -p1
%patch101 -p1
+%patch102 -p1
%build
%configure