From fd3ddfacbfc3e2b843bc65a9c84aee0e19192a94 Mon Sep 17 00:00:00 2001 From: Alexander Hoppe Date: Fri, 4 Sep 2009 14:30:14 +0000 Subject: integrated firmware copy process into kernel module process, deleted unused attribute an function git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@3143 95ad53e4-c205-0410-b2fa-d234c58c8868 --- boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm | 60 ++++++++++++------------ boot-env/OpenSLX/MakeInitRamFS/Engine/Preboot.pm | 2 - boot-env/OpenSLX/MakeInitRamFS/Engine/SlxBoot.pm | 2 - config-db/OpenSLX/AttributeRoster.pm | 10 ---- config-db/OpenSLX/DBSchema.pm | 1 - 5 files changed, 29 insertions(+), 46 deletions(-) diff --git a/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm b/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm index 30ad500a..662c073e 100644 --- a/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm +++ b/boot-env/OpenSLX/MakeInitRamFS/Engine/Base.pm @@ -15,6 +15,7 @@ package OpenSLX::MakeInitRamFS::Engine::Base; use strict; use warnings; +use Switch; use File::Basename; use POSIX qw(strftime); @@ -187,36 +188,6 @@ sub _addFilteredKernelModules return; } -sub _copyFirmware -{ - my $self = shift; - - my $sourcePath = "$self->{'root-path'}/lib/firmware/$self->{'kernel-version'}"; - vlog(3,"sourcePath: $sourcePath"); - - my $targetPath - = "$self->{'build-path'}/lib/firmware"; - vlog(3,"targetPath: $targetPath"); - $self->addCMD("mkdir -p $targetPath"); - - # add a couple of kernel modules that we expect to be used in stage3 - # (some of these modules do not exist on all distros, so they will be - # filtered out again by the respective distro object): - my @firmwareModules; - vlog(3,"ramfs_firmmods: $self->{attrs}->{ramfs_firmmods}"); - push @firmwareModules, split ' ', $self->{attrs}->{ramfs_firmmods}; - # copy all the modules that we think are required - foreach my $moduleToBeCopied (@firmwareModules) { - my $source = followLink( - "$self->{'root-path'}/lib/firmware/$self->{'kernel-version'}/$moduleToBeCopied", $self->{'root-path'} - ); - my $target = "$targetPath/$moduleToBeCopied"; - $self->addCMD("cp -pa --dereference $source $target"); - - } - return; -} - sub _copyKernelModules { my $self = shift; @@ -300,10 +271,37 @@ sub _copyKernelModules } } + # build a list of required firmwares out of the list of modules + my @firmwares; + $self->addCMD("mkdir -p $self->{'root-path'}/lib/firmware/$self->{'kernel-version'}"); + foreach my $moduleToBeCopied(%modulesToBeCopied) { + $moduleToBeCopied =~ /.*\/(.*?)$/; + # implies usage of Switch + vlog(1,$1); + switch ($1){ + case "e100.ko" {push @firmwares, split ' ', "e100"} + case "tg3.ko" {push @firmwares, split ' ', "tigon/"} + + } + } + # copy all the firmwares that we think are required + foreach my $firmwareToBeCopied (@firmwares) { + my $source = followLink( + "$self->{'root-path'}/lib/firmware/$self->{'kernel-version'}/$firmwareToBeCopied", $self->{'root-path'} + ); + if (-e $source){ + my $target = "$self->{'build-path'}/lib/firmware/$firmwareToBeCopied"; + (-d $target) or $self->addCMD("mkdir -p $target"); + $self->addCMD("cp -pa --dereference $source $target"); + } else { + vlog(3,"unable to find $source for copying purposes"); + } + } + # copy all the modules that we think are required foreach my $moduleToBeCopied (sort keys %modulesToBeCopied) { my $targetDir = "$self->{'build-path'}" . dirname($moduleToBeCopied); - $self->addCMD("mkdir -p $targetDir"); + (-d $targetDir) or $self->addCMD("mkdir -p $targetDir"); my $source = followLink( "$self->{'root-path'}$moduleToBeCopied", $self->{'root-path'} ); diff --git a/boot-env/OpenSLX/MakeInitRamFS/Engine/Preboot.pm b/boot-env/OpenSLX/MakeInitRamFS/Engine/Preboot.pm index 5605df62..aecfd00f 100644 --- a/boot-env/OpenSLX/MakeInitRamFS/Engine/Preboot.pm +++ b/boot-env/OpenSLX/MakeInitRamFS/Engine/Preboot.pm @@ -43,8 +43,6 @@ sub _collectCMDs $self->_copyKernelModules(); - $self->_copyFirmware(); - $self->_createInitRamFS(); return; diff --git a/boot-env/OpenSLX/MakeInitRamFS/Engine/SlxBoot.pm b/boot-env/OpenSLX/MakeInitRamFS/Engine/SlxBoot.pm index e67b1fc4..f4e2708c 100644 --- a/boot-env/OpenSLX/MakeInitRamFS/Engine/SlxBoot.pm +++ b/boot-env/OpenSLX/MakeInitRamFS/Engine/SlxBoot.pm @@ -53,8 +53,6 @@ sub _collectCMDs $self->_copyKernelModules(); - $self->_copyFirmware(); - $self->_createInitRamFS(); return; diff --git a/config-db/OpenSLX/AttributeRoster.pm b/config-db/OpenSLX/AttributeRoster.pm index c0c7f549..f039d20e 100644 --- a/config-db/OpenSLX/AttributeRoster.pm +++ b/config-db/OpenSLX/AttributeRoster.pm @@ -171,16 +171,6 @@ sub _init content_descr => 'a space-separated list of NIC modules', default => 'forcedeth e1000 e100 tg3 via-rhine r8169 pcnet32', }, - 'ramfs_firmmods' => { - applies_to_systems => 1, - applies_to_clients => 0, - description => unshiftHereDoc(<<' End-of-Here'), - list of wifi network card modules to load - End-of-Here - content_regex => qr{^\s*([-\w]+\s*)*$}, - content_descr => 'a space-separated list of firmware modules', - default => '', - }, 'hw_local_disk' => { applies_to_systems => 1, applies_to_clients => 1, diff --git a/config-db/OpenSLX/DBSchema.pm b/config-db/OpenSLX/DBSchema.pm index f913b3ba..d3e7573b 100644 --- a/config-db/OpenSLX/DBSchema.pm +++ b/config-db/OpenSLX/DBSchema.pm @@ -380,7 +380,6 @@ sub _schemaUpgradeDBFrom 'attr_ramfs_fsmods', 'attr_ramfs_miscmods', 'attr_ramfs_nicmods', - 'attr_ramfs_firmmods', 'attr_ramfs_screen', 'attr_sane_scanner', 'attr_scratch', -- cgit v1.2.3-55-g7522