From 1f6874db7ad37a3b2948997ab4919e1ec7ea5100 Mon Sep 17 00:00:00 2001 From: Michael Janczyk Date: Tue, 11 Mar 2008 17:43:03 +0000 Subject: firts part. split of theme plugin into bootsplash plugin and displaymanager plugin, both including config files,... and setting theme git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@1617 95ad53e4-c205-0410-b2fa-d234c58c8868 --- .../bootsplash/OpenSLX/OSPlugin/bootsplash.pm | 161 +++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm (limited to 'os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm') diff --git a/os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm b/os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm new file mode 100644 index 00000000..8748dfb2 --- /dev/null +++ b/os-plugins/plugins/bootsplash/OpenSLX/OSPlugin/bootsplash.pm @@ -0,0 +1,161 @@ +# Copyright (c) 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/ +# ----------------------------------------------------------------------------- +# bootsplash.pm +# - implementation of the 'bootsplash' plugin, which installs splashy +# into the ramfs, including changeing theme +# ----------------------------------------------------------------------------- +package OpenSLX::OSPlugin::bootsplash; + +use strict; +use warnings; + +use base qw(OpenSLX::OSPlugin::Base); + +use OpenSLX::Basics; +use OpenSLX::Utils; + +sub new +{ + my $class = shift; + + my $self = { + name => 'bootsplash', + }; + + return bless $self, $class; +} + +sub getInfo +{ + my $self = shift; + + return { + description => unshiftHereDoc(<<' End-of-Here'), + Installs Splashy as bootsplash into ramfs and sets a Theme. + End-of-Here + mustRunAfter => [], + }; +} + +sub getAttrInfo +{ + my $self = shift; + + return { + 'bootsplash::active' => { + applies_to_systems => 1, + applies_to_clients => 0, + description => unshiftHereDoc(<<' End-of-Here'), + should the 'bootsplash'-plugin be executed during boot? + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => '1 means active - 0 means inactive', + default => '1', + }, + 'bootsplash::precedence' => { + applies_to_systems => 1, + applies_to_clients => 0, + description => unshiftHereDoc(<<' End-of-Here'), + the execution precedence of the 'bootsplash' plugin + End-of-Here + content_regex => qr{^\d\d$}, + content_descr => 'allowed range is from 01-99', + default => 30, + }, + + 'bootsplash::theme' => { + applies_to_systems => 1, + applies_to_clients => 0, + description => unshiftHereDoc(<<' End-of-Here'), + name of the theme to apply to bootsplash (unset for no theme) + End-of-Here + content_regex => undef, + content_descr => undef, + default => 'openslx', + }, + }; +} + +sub suggestAdditionalKernelParams +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedParams; + + # add vga=0x317 unless explicit vga-mode is already set + if (!$makeInitRamFSEngine->haveKernelParam(qr{\bvga=})) { + push @suggestedParams, 'vga=0x317'; + } + + # add quiet, if not already set + if (!$makeInitRamFSEngine->haveKernelParam('quiet')) { + push @suggestedParams, 'quiet'; + } + + return @suggestedParams; +} + +sub suggestAdditionalKernelModules +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedModules; + + # Ubuntu needs vesafb and fbcon (which drags along some others) + if ($makeInitRamFSEngine->{'distro-name'} =~ m{^ubuntu}i) { + push @suggestedModules, qw( vesafb fbcon ) + } + + return @suggestedModules; +} + +sub copyRequiredFilesIntoInitramfs +{ + my $self = shift; + my $targetPath = shift; + my $attrs = shift; + my $makeInitRamFSEngine = shift; + + my $themesDir = "$openslxConfig{'base-path'}/share/themes"; + my $bootsplashTheme = $attrs->{'bootsplash::theme'} || ''; + if ($bootsplashTheme) { + my $bootsplashThemeDir = "$themesDir/$bootsplashTheme/bootsplash"; + if (-d $bootsplashThemeDir) { + my $splashyPath = "$openslxConfig{'base-path'}/share/splashy"; + $makeInitRamFSEngine->addCMD( + "cp -p $splashyPath/* $targetPath/bin/" + ); + $makeInitRamFSEngine->addCMD( + "mkdir -p $targetPath/etc/splashy" + ); + $makeInitRamFSEngine->addCMD( + "cp -a $bootsplashThemeDir/* $targetPath/etc/splashy/" + ); + } + } + else { + $bootsplashTheme = ''; + } + + vlog( + 1, + _tr( + "bootsplash-plugin: bootsplash=%s + $bootsplashTheme + ) + ); + + return; +} + +1; -- cgit v1.2.3-55-g7522