From b2ff07395c692dd7164a5a5434ef9ae9e83d7ce6 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Sun, 15 Apr 2007 11:33:43 +0000 Subject: * improved installer such that it can continue in case the basic system had been successully created in a previous run (it used to break in that case, complaining about several folders not being empty). * added support for invoking any potential vendor-specific configuration script (like SuSEconfig) after each metapackager session. Implemented invocation of SuSEconfig for all supported SUSE distros. This improves the result of an installation a lot, as it brings the system into a more directly usable state. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@892 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/OpenSLX/OSSetup/Distro/Base.pm | 8 ++++ installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm | 29 ++++++++++++- installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm | 47 ++++++++++++++-------- .../OpenSLX/OSSetup/Distro/SUSE_10_2_x86_64.pm | 15 +++++++ installer/OpenSLX/OSSetup/Engine.pm | 32 ++++++++++----- installer/OpenSLX/OSSetup/MetaPackager/Base.pm | 18 ++++++++- installer/OpenSLX/OSSetup/MetaPackager/yum.pm | 9 ----- 7 files changed, 121 insertions(+), 37 deletions(-) (limited to 'installer/OpenSLX/OSSetup') diff --git a/installer/OpenSLX/OSSetup/Distro/Base.pm b/installer/OpenSLX/OSSetup/Distro/Base.pm index 0f4a0ffa..cb2ac57c 100644 --- a/installer/OpenSLX/OSSetup/Distro/Base.pm +++ b/installer/OpenSLX/OSSetup/Distro/Base.pm @@ -118,6 +118,14 @@ sub initDistroInfo { } +sub startSession +{ +} + +sub finishSession +{ +} + 1; ################################################################################ diff --git a/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm b/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm index e6f7203b..3d5f8a09 100644 --- a/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm +++ b/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm @@ -55,13 +55,28 @@ sub fixPrerequiredFiles } } +sub finishSession +{ + my $self = shift; + + # make sure there's a /dev/zero, as SuSEconfig requires it: + if (!-e "/dev/zero" && slxsystem("mknod /dev/zero c 1 5")) { + die _tr("unable to create node '%s' (%s)\n", "/dev/zero", $!); + } + # invoke SuSEconfig in order to allow it to update the configuration: + if (slxsystem("SuSEconfig")) { + die _tr("unable to run SuSEconfig (%s)", $!); + } + $self->SUPER::finishSession(); +} + sub initDistroInfo { my $self = shift; $self->{config}->{'repository'} = { 'base' => { 'urls' => " - ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source + ftp://ftp5.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source ftp://suse.inode.at/opensuse/distribution/SL-10.1/inst-source http://mirrors.uol.com.br/pub/suse/distribution/SL-10.1/inst-source ftp://klid.dk/opensuse/distribution/SL-10.1/inst-source @@ -71,6 +86,18 @@ sub initDistroInfo 'name' => 'SUSE Linux 10.1', 'repo-subdir' => 'suse', }, + 'base_non-oss' => { + 'urls' => " + ftp://ftp5.gwdg.de/pub/opensuse/distribution/SL-10.1/non-oss-inst-source + ftp://suse.inode.at/opensuse/distribution/SL-10.1/non-oss-inst-source + http://mirrors.uol.com.br/pub/suse/distribution/SL-10.1/non-oss-inst-source + ftp://klid.dk/opensuse/distribution/SL-10.1/non-oss-inst-source + ftp://ftp.estpak.ee/pub/suse/opensuse/distribution/SL-10.1/non-oss-inst-source + ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/SL-10.1/non-oss-inst-source + ", + 'name' => 'openSUSE 10.2 non-OSS', + 'repo-subdir' => 'suse', + }, 'base_update' => { 'urls' => " ftp://ftp.gwdg.de/pub/suse/update/10.1 diff --git a/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm b/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm index 97dd80f2..28da0584 100644 --- a/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm +++ b/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm @@ -55,13 +55,28 @@ sub fixPrerequiredFiles } } +sub finishSession +{ + my $self = shift; + + # make sure there's a /dev/zero, as SuSEconfig requires it: + if (!-e "/dev/zero" && slxsystem("mknod /dev/zero c 1 5")) { + die _tr("unable to create node '%s' (%s)\n", "/dev/zero", $!); + } + # invoke SuSEconfig in order to allow it to update the configuration: + if (slxsystem("SuSEconfig")) { + die _tr("unable to run SuSEconfig (%s)", $!); + } + $self->SUPER::finishSession(); +} + sub initDistroInfo { my $self = shift; $self->{config}->{'repository'} = { 'base' => { 'urls' => " - ftp://ftp.gwdg.de/pub/opensuse/distribution/10.2/repo/oss + ftp://ftp5.gwdg.de/pub/opensuse/distribution/10.2/repo/oss ftp://suse.inode.at/opensuse/distribution/10.2/repo/oss http://mirrors.uol.com.br/pub/suse/distribution/10.2/repo/oss ftp://klid.dk/opensuse/distribution/10.2/repo/oss @@ -73,7 +88,7 @@ sub initDistroInfo }, 'base_non-oss' => { 'urls' => " - ftp://ftp.gwdg.de/pub/opensuse/distribution/10.2/repo/non-oss + ftp://ftp5.gwdg.de/pub/opensuse/distribution/10.2/repo/non-oss ftp://suse.inode.at/opensuse/distribution/10.2/repo/non-oss http://mirrors.uol.com.br/pub/suse/distribution/10.2/repo/non-oss ftp://klid.dk/opensuse/distribution/10.2/repo/non-oss @@ -123,6 +138,8 @@ sub initDistroInfo i586/findutils-4.2.28-24.i586.rpm i586/gawk-3.1.5-41.i586.rpm i586/gdbm-1.8.3-261.i586.rpm + i586/glib2-2.12.4-15.i586.rpm + i586/gnome-filesystem-0.1-288.i586.rpm i586/gpg-1.4.5-24.i586.rpm i586/grep-2.5.1a-40.i586.rpm i586/gzip-1.3.5-178.i586.rpm @@ -137,6 +154,8 @@ sub initDistroInfo i586/libstdc++41-4.1.2_20061115-5.i586.rpm i586/libvolume_id-103-12.i586.rpm i586/libxcrypt-2.4-30.i586.rpm + i586/libxml2-2.6.26-26.i586.rpm + i586/libxml2-python-2.6.26-29.i586.rpm i586/libzio-0.2-20.i586.rpm i586/limal-1.2.9-5.i586.rpm i586/limal-bootloader-1.2.4-6.i586.rpm @@ -147,7 +166,6 @@ sub initDistroInfo i586/mkinitrd-1.2-149.i586.rpm i586/mktemp-1.5-763.i586.rpm i586/module-init-tools-3.2.2-62.i586.rpm - i586/nbd-2.8.7-14.i586.rpm i586/ncurses-5.5-42.i586.rpm i586/net-tools-1.60-606.i586.rpm i586/openldap2-client-2.3.27-25.i586.rpm @@ -160,31 +178,28 @@ sub initDistroInfo i586/perl-Bootloader-0.4.5-3.i586.rpm i586/perl-gettext-1.05-31.i586.rpm i586/permissions-2006.11.13-5.i586.rpm + i586/python-2.5-19.i586.rpm + i586/python-sqlite-1.1.8-11.i586.rpm + i586/python-urlgrabber-3.1.0-18.i586.rpm + i586/python-xml-2.5-19.i586.rpm i586/readline-5.1-55.i586.rpm i586/reiserfs-3.6.19-37.i586.rpm + i586/rpm-python-4.4.2-76.i586.rpm i586/sed-4.1.5-21.i586.rpm - i586/squashfs-kmp-default-3.1_2.6.18.2_34-34.i586.rpm + i586/sqlite-3.3.8-14.i586.rpm i586/sysvinit-2.86-47.i586.rpm i586/udev-103-12.i586.rpm i586/util-linux-2.12r-61.i586.rpm - noarch/pciutils-ids-2006.11.18-2.noarch.rpm - noarch/suse-build-key-1.0-707.noarch.rpm - i586/glib2-2.12.4-15.i586.rpm - i586/gnome-filesystem-0.1-288.i586.rpm - i586/libxml2-2.6.26-26.i586.rpm - i586/libxml2-python-2.6.26-29.i586.rpm - i586/rpm-python-4.4.2-76.i586.rpm - i586/python-2.5-19.i586.rpm - i586/python-sqlite-1.1.8-11.i586.rpm - i586/python-urlgrabber-3.1.0-18.i586.rpm - i586/python-xml-2.5-19.i586.rpm - i586/sqlite-3.3.8-14.i586.rpm i586/yum-3.0.1-9.i586.rpm i586/yum-metadata-parser-1.0.2-23.i586.rpm + noarch/pciutils-ids-2006.11.18-2.noarch.rpm + noarch/suse-build-key-1.0-707.noarch.rpm "; $self->{config}->{'selection'} = { 'default' => " + nbd + squashfs-kmp-default ", 'kde' => " diff --git a/installer/OpenSLX/OSSetup/Distro/SUSE_10_2_x86_64.pm b/installer/OpenSLX/OSSetup/Distro/SUSE_10_2_x86_64.pm index cb72ea89..885bb605 100644 --- a/installer/OpenSLX/OSSetup/Distro/SUSE_10_2_x86_64.pm +++ b/installer/OpenSLX/OSSetup/Distro/SUSE_10_2_x86_64.pm @@ -55,6 +55,21 @@ sub fixPrerequiredFiles } } +sub finishSession +{ + my $self = shift; + + # make sure there's a /dev/zero, as SuSEconfig requires it: + if (!-e "/dev/zero" && slxsystem("mknod /dev/zero c 1 5")) { + die _tr("unable to create node '%s' (%s)\n", "/dev/zero", $!); + } + # invoke SuSEconfig in order to allow it to update the configuration: + if (slxsystem("SuSEconfig")) { + die _tr("unable to run SuSEconfig (%s)", $!); + } + $self->SUPER::finishSession(); +} + sub initDistroInfo { my $self = shift; diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm index 16d8a801..d2feebd5 100644 --- a/installer/OpenSLX/OSSetup/Engine.pm +++ b/installer/OpenSLX/OSSetup/Engine.pm @@ -160,14 +160,22 @@ sub installVendorOS } $self->createVendorOSPath(); - $self->setupStage1A(); - executeInSubprocess( sub { - # some tasks that involve a chrooted environment: - changePersonalityIfNeeded($self->{distro}->{'base-name'}); - $self->setupStage1B(); - $self->setupStage1C(); - }); - $self->stage1C_cleanupBasicVendorOS(); + my $baseSystemFile = "$self->{'vendor-os-path'}/.openslx-base-system"; + if (-e $baseSystemFile) { + vlog 0, _tr("found existing base system, continuing...\n"); + } else { + # basic setup, stage1a-c: + $self->setupStage1A(); + executeInSubprocess( sub { + # some tasks that involve a chrooted environment: + changePersonalityIfNeeded($self->{distro}->{'base-name'}); + $self->setupStage1B(); + $self->setupStage1C(); + }); + $self->stage1C_cleanupBasicVendorOS(); + slxsystem("touch $baseSystemFile"); + # just touch the file, in order to indicate a basic system + } executeInSubprocess( sub { # another task that involves a chrooted environment: changePersonalityIfNeeded($self->{distro}->{'base-name'}); @@ -175,6 +183,8 @@ sub installVendorOS }); slxsystem("touch $installInfoFile"); # just touch the file, in order to indicate a proper installation + slxsystem("rm $baseSystemFile"); + # no longer needed, we have a full system now vlog 0, _tr("Vendor-OS '%s' installed succesfully.\n", $self->{'vendor-os-name'}); @@ -671,7 +681,6 @@ sub setupStage1D $self->stage1D_setupPackageSources(); $self->stage1D_updateBasicVendorOS(); $self->stage1D_installPackageSelection(); - $self->{'meta-packager'}->cleanup(); } sub updateStage1D @@ -680,7 +689,6 @@ sub updateStage1D vlog 1, "updating $self->{'vendor-os-name'}..."; $self->stage1D_updateBasicVendorOS(); - $self->{'meta-packager'}->cleanup(); } sub stage1D_setupPackageSources() @@ -710,7 +718,9 @@ sub stage1D_updateBasicVendorOS() or die _tr("unable to chroot into '%s' (%s)\n", $osDir, $!); vlog 1, "updating basic vendor-os..."; + $self->{'meta-packager'}->startSession(); $self->{'meta-packager'}->updateBasicVendorOS(); + $self->{'meta-packager'}->finishSession(); } sub stage1D_installPackageSelection @@ -729,7 +739,9 @@ sub stage1D_installPackageSelection vlog 0, _tr("No packages listed for selection '%s', nothing to do.", $selectionName); } else { + $self->{'meta-packager'}->startSession(); $self->{'meta-packager'}->installSelection(join " ", @pkgs); + $self->{'meta-packager'}->finishSession(); } } diff --git a/installer/OpenSLX/OSSetup/MetaPackager/Base.pm b/installer/OpenSLX/OSSetup/MetaPackager/Base.pm index be11ae51..313460f6 100644 --- a/installer/OpenSLX/OSSetup/MetaPackager/Base.pm +++ b/installer/OpenSLX/OSSetup/MetaPackager/Base.pm @@ -51,8 +51,24 @@ sub installSelection { } -sub clean +sub startSession { + my $self = shift; + + system('mount -t proc proc /proc 2>/dev/null'); + + $self->{engine}->{distro}->startSession(); + # allow vendor specific extensions +} + +sub finishSession +{ + my $self = shift; + + $self->{engine}->{distro}->finishSession(); + # allow vendor specific extensions + + system('umount /proc 2>/dev/null'); } 1; diff --git a/installer/OpenSLX/OSSetup/MetaPackager/yum.pm b/installer/OpenSLX/OSSetup/MetaPackager/yum.pm index 8e0cda3f..62a9806a 100644 --- a/installer/OpenSLX/OSSetup/MetaPackager/yum.pm +++ b/installer/OpenSLX/OSSetup/MetaPackager/yum.pm @@ -47,7 +47,6 @@ sub initPackageSources { my $self = shift; - slxsystem("cp /proc/cpuinfo $self->{engine}->{'vendor-os-path'}/proc"); slxsystem("rm -f $self->{engine}->{'vendor-os-path'}/etc/yum.repos.d/*"); slxsystem("mkdir -p $self->{engine}->{'vendor-os-path'}/etc/yum.repos.d"); } @@ -94,12 +93,4 @@ sub updateBasicVendorOS } } -sub cleanup -{ - my $self = shift; - - slxsystem('umount /proc 2>/dev/null'); - slxsystem('rm /proc/cpuinfo'); -} - 1; \ No newline at end of file -- cgit v1.2.3-55-g7522