diff options
author | Oliver Tappe | 2007-07-31 21:02:23 +0200 |
---|---|---|
committer | Oliver Tappe | 2007-07-31 21:02:23 +0200 |
commit | 91d09dd1b452b5cb3883a2c050e261835171e738 (patch) | |
tree | f77f1138d545905b10f342f9eb44df93d82b44b8 /installer/OpenSLX | |
parent | Renaming of nbd* variables to reflect a more general blockdevice (base (diff) | |
download | core-91d09dd1b452b5cb3883a2c050e261835171e738.tar.gz core-91d09dd1b452b5cb3883a2c050e261835171e738.tar.xz core-91d09dd1b452b5cb3883a2c050e261835171e738.zip |
* fixed problem reported by Bastian about pickKernelFile not correctly being
used (turned out to be a problem when loading the distro-module for
clone-only distributions)
* cleaned up the distro module structure while looking at it
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1293 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer/OpenSLX')
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/Any_Clone.pm | 6 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/Base.pm | 2 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/Debian.pm | 9 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/Fedora.pm | 9 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/Gentoo.pm | 58 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/SUSE.pm | 9 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Distro/Ubuntu.pm | 16 | ||||
-rw-r--r-- | installer/OpenSLX/OSSetup/Engine.pm | 16 |
8 files changed, 102 insertions, 23 deletions
diff --git a/installer/OpenSLX/OSSetup/Distro/Any_Clone.pm b/installer/OpenSLX/OSSetup/Distro/Any_Clone.pm index 0433b9a4..9f3f54cc 100644 --- a/installer/OpenSLX/OSSetup/Distro/Any_Clone.pm +++ b/installer/OpenSLX/OSSetup/Distro/Any_Clone.pm @@ -19,14 +19,12 @@ use warnings; use base qw(OpenSLX::OSSetup::Distro::Base); ################################################################################ -### implementation +### interface methods ################################################################################ sub new { my $class = shift; - my $self = { - 'base-name' => 'any-clone', - }; + my $self = {}; return bless $self, $class; } diff --git a/installer/OpenSLX/OSSetup/Distro/Base.pm b/installer/OpenSLX/OSSetup/Distro/Base.pm index 020215ea..f29c7e46 100644 --- a/installer/OpenSLX/OSSetup/Distro/Base.pm +++ b/installer/OpenSLX/OSSetup/Distro/Base.pm @@ -37,7 +37,7 @@ sub initialize $self->{'engine'} = $engine; - if ($self->{'base-name'} =~ m[x86_64]) { + if ($engine->{'distro-name'} =~ m[x86_64]) { # be careful to only try installing 64-bit systems if actually # running on a 64-bit host, as otherwise we are going to fail later, # anyway: diff --git a/installer/OpenSLX/OSSetup/Distro/Debian.pm b/installer/OpenSLX/OSSetup/Distro/Debian.pm index 48391f55..69f08256 100644 --- a/installer/OpenSLX/OSSetup/Distro/Debian.pm +++ b/installer/OpenSLX/OSSetup/Distro/Debian.pm @@ -21,8 +21,15 @@ use base qw(OpenSLX::OSSetup::Distro::Base); use OpenSLX::Basics; ################################################################################ -### implementation +### interface methods ################################################################################ +sub new +{ + my $class = shift; + my $self = {}; + return bless $self, $class; +} + sub initialize { my $self = shift; diff --git a/installer/OpenSLX/OSSetup/Distro/Fedora.pm b/installer/OpenSLX/OSSetup/Distro/Fedora.pm index 5206a07e..7fe4973c 100644 --- a/installer/OpenSLX/OSSetup/Distro/Fedora.pm +++ b/installer/OpenSLX/OSSetup/Distro/Fedora.pm @@ -21,8 +21,15 @@ use base qw(OpenSLX::OSSetup::Distro::Base); use OpenSLX::Basics; ################################################################################ -### implementation +### interface methods ################################################################################ +sub new +{ + my $class = shift; + my $self = {}; + return bless $self, $class; +} + sub initialize { my $self = shift; diff --git a/installer/OpenSLX/OSSetup/Distro/Gentoo.pm b/installer/OpenSLX/OSSetup/Distro/Gentoo.pm new file mode 100644 index 00000000..4d1032f7 --- /dev/null +++ b/installer/OpenSLX/OSSetup/Distro/Gentoo.pm @@ -0,0 +1,58 @@ +# Copyright (c) 2006, 2007 - OpenSLX GmbH +# +# This program is free software distributed under the GPL version 2. +# See http://openslx.org/COPYING +# +# If you have any feedback please consult http://openslx.org/feedback and +# send your suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# SUSE.pm +# - provides SUSE-specific overrides of the OpenSLX OSSetup API. +# ----------------------------------------------------------------------------- +package OpenSLX::OSSetup::Distro::Gentoo; + +use strict; +use warnings; + +use base qw(OpenSLX::OSSetup::Distro::Base); + +use OpenSLX::Basics; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + my $class = shift; + my $self = {}; + return bless $self, $class; +} + +sub pickKernelFile +{ + my $self = shift; + my $kernelPath = shift; + + my $newestKernelFile; + my $newestKernelFileSortKey = ''; + foreach my $kernelFile (glob("$kernelPath/kernel-genkernel-x86-*")) { + next unless $kernelFile =~ m{ + x86-(\d+)\.(\d+)\.(\d+)(?:\.(\d+))?-(\d+(?:\.\d+)?) + }x; + my $sortKey + = sprintf("%02d.%02d.%02d.%02d-%2.1f", $1, $2, $3, $4||0, $5); + if ($newestKernelFileSortKey lt $sortKey) { + $newestKernelFile = $kernelFile; + $newestKernelFileSortKey = $sortKey; + } + } + + if (!defined $newestKernelFile) { + die _tr("unable to pick a kernel-file from path '%s'!", $kernelPath); + } + return $newestKernelFile; +} + +1; diff --git a/installer/OpenSLX/OSSetup/Distro/SUSE.pm b/installer/OpenSLX/OSSetup/Distro/SUSE.pm index 0662cd64..00cd4bc4 100644 --- a/installer/OpenSLX/OSSetup/Distro/SUSE.pm +++ b/installer/OpenSLX/OSSetup/Distro/SUSE.pm @@ -21,8 +21,15 @@ use base qw(OpenSLX::OSSetup::Distro::Base); use OpenSLX::Basics; ################################################################################ -### implementation +### interface methods ################################################################################ +sub new +{ + my $class = shift; + my $self = {}; + return bless $self, $class; +} + sub initialize { my $self = shift; diff --git a/installer/OpenSLX/OSSetup/Distro/Ubuntu.pm b/installer/OpenSLX/OSSetup/Distro/Ubuntu.pm index 17c30662..32e9e91c 100644 --- a/installer/OpenSLX/OSSetup/Distro/Ubuntu.pm +++ b/installer/OpenSLX/OSSetup/Distro/Ubuntu.pm @@ -21,8 +21,15 @@ use base qw(OpenSLX::OSSetup::Distro::Base); use OpenSLX::Basics; ################################################################################ -### implementation +### interface methods ################################################################################ +sub new +{ + my $class = shift; + my $self = {}; + return bless $self, $class; +} + sub initialize { my $self = shift; @@ -35,11 +42,4 @@ sub initialize return; } -sub fixPrerequiredFiles -{ - my $self = shift; - my $stage1cDir = shift; - return; -} - 1;
\ No newline at end of file diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm index 0e43443c..2a6d4e35 100644 --- a/installer/OpenSLX/OSSetup/Engine.pm +++ b/installer/OpenSLX/OSSetup/Engine.pm @@ -46,10 +46,10 @@ use vars qw(%supportedDistros); module => 'Fedora_6_x86_64', support => 'clone,install' }, 'gentoo-2005.1' => { - module => 'Gentoo_2005_1', support => 'clone' + module => 'Gentoo', support => 'clone' }, 'gentoo-2006.1' => { - module => 'Gentoo_2006_1', support => 'clone' + module => 'Gentoo', support => 'clone' }, 'mandriva-2007.0' => { module => 'Mandriva_2007_0', support => 'clone' @@ -129,7 +129,7 @@ sub initialize my $selectionName = $2 || 'default'; $self->{'vendor-os-name'} = $vendorOSName; $self->{'action-type'} = $actionType; - $self->{'distro-name'} = $distroName; + $self->{'distro-name'} = lc($distroName); $self->{'selection-name'} = $selectionName; $self->{'clone-source'} = ''; if (!exists $supportedDistros{lc($distroName)}) { @@ -173,6 +173,8 @@ sub initialize if (!eval { $distro = instantiateClass("OpenSLX::OSSetup::Distro::$distroClass") }) { + vlog(2, "could not load distro module '$distroClass' ($@) ..."); + vlog(2, "falling back to module 'Any_Clone'"); # allow fallback to generic clone module, such that we can clone # distro's for which there is no specific distro-module yet # (like for example for Gentoo): @@ -186,7 +188,7 @@ sub initialize if ($actionType =~ m{^(install|update|shell)}) { # setup path to distribution-specific info: my $sharedDistroInfoDir - = "$openslxConfig{'base-path'}/share/distro-info/$distro->{'base-name'}"; + = "$openslxConfig{'base-path'}/share/distro-info/$self->{'distro-name'}"; if (!-d $sharedDistroInfoDir) { die _tr( "unable to find shared distro-info in '%s'\n", @@ -195,7 +197,7 @@ sub initialize } $self->{'shared-distro-info-dir'} = $sharedDistroInfoDir; my $configDistroInfoDir = - "$openslxConfig{'config-path'}/distro-info/$distro->{'base-name'}"; + "$openslxConfig{'config-path'}/distro-info/$self->{'distro-name'}"; if (!-d $configDistroInfoDir) { die _tr( "unable to find configurable distro-info in '%s'\n", @@ -212,7 +214,7 @@ sub initialize die( _tr( "selection '%s' is unknown to distro '%s'\n", - $selectionName, $distro->{'base-name'} + $selectionName, $self->{'distro-name'} ) . _tr("These selections are available:\n\t") . join("\n\t", keys %{$self->{'distro-info'}->{'selection'}}) @@ -1338,7 +1340,7 @@ sub _changePersonalityIfNeeded { my $self = shift; - my $distroName = $self->{distro}->{'base-name'}; + my $distroName = $self->{'distro-name'}; if ($self->_hostIs64Bit() && $distroName !~ m[_64]) { # trying to handle a 32-bit vendor-OS on a 64-bit machine, so we change # the personality accordingly (from 64-bit to 32-bit): |