summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Tappe2007-04-15 13:33:43 +0200
committerOliver Tappe2007-04-15 13:33:43 +0200
commitb2ff07395c692dd7164a5a5434ef9ae9e83d7ce6 (patch)
treec6944164191cd3f1e43047ab13d3be421989c4e9
parent* activated check for required modules in slxos-export, such that you can onl... (diff)
downloadcore-b2ff07395c692dd7164a5a5434ef9ae9e83d7ce6.tar.gz
core-b2ff07395c692dd7164a5a5434ef9ae9e83d7ce6.tar.xz
core-b2ff07395c692dd7164a5a5434ef9ae9e83d7ce6.zip
* 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
-rw-r--r--installer/OpenSLX/OSSetup/Distro/Base.pm8
-rw-r--r--installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm29
-rw-r--r--installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm47
-rw-r--r--installer/OpenSLX/OSSetup/Distro/SUSE_10_2_x86_64.pm15
-rw-r--r--installer/OpenSLX/OSSetup/Engine.pm32
-rw-r--r--installer/OpenSLX/OSSetup/MetaPackager/Base.pm18
-rw-r--r--installer/OpenSLX/OSSetup/MetaPackager/yum.pm9
7 files changed, 121 insertions, 37 deletions
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