diff options
Diffstat (limited to 'src/os-plugins/plugins/plymouth/OpenSLX/OSPlugin')
-rw-r--r-- | src/os-plugins/plugins/plymouth/OpenSLX/OSPlugin/plymouth.pm | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/plymouth/OpenSLX/OSPlugin/plymouth.pm b/src/os-plugins/plugins/plymouth/OpenSLX/OSPlugin/plymouth.pm new file mode 100644 index 00000000..34b6241c --- /dev/null +++ b/src/os-plugins/plugins/plymouth/OpenSLX/OSPlugin/plymouth.pm @@ -0,0 +1,152 @@ +# Copyright (c) 2007..2011 - 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/ +# ----------------------------------------------------------------------------- +# plymouth.pm +# ----------------------------------------------------------------------------- +package OpenSLX::OSPlugin::plymouth; + +use strict; +use warnings; + +use base qw(OpenSLX::OSPlugin::Base); + +use File::Path; + +use OpenSLX::Basics; +use OpenSLX::Utils; +use OpenSLX::DistroUtils; + +sub new +{ + my $class = shift; + + my $self = { + name => 'plymouth', + }; + + return bless $self, $class; +} + +sub getInfo +{ + my $self = shift; + + return { + description => unshiftHereDoc(<<' End-of-Here'), + Splashscreen for the boot process using plymouth. + End-of-Here + precedence => 30, + }; +} + +sub getAttrInfo +{ + my $self = shift; + + return { + 'plymouth::active' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + should the plymouth-plugin be executed during boot? + End-of-Here + content_regex => qr{^(0|1)$}, + content_descr => '1 means active - 0 means inactive', + default => '1', + }, + + 'plymouth::theme' => { + applies_to_systems => 1, + applies_to_clients => 1, + description => unshiftHereDoc(<<' End-of-Here'), + name of the theme to apply to plymouth (default unifr-rz) + End-of-Here + content_regex => undef, + content_descr => undef, + default => 'unifr-rz', + }, + }; +} + +sub suggestAdditionalKernelParams +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedParams; + + # add quiet, if not already set + if (!$makeInitRamFSEngine->haveKernelParam('quiet')) { + push @suggestedParams, 'quiet'; + } + + # add splash, required by plymouth to start correctly + if (!$makeInitRamFSEngine->haveKernelParam('splash')) { + push @suggestedParams, 'splash'; + } + + return @suggestedParams; +} + +sub suggestAdditionalKernelModules +{ + my $self = shift; + my $makeInitRamFSEngine = shift; + + my @suggestedModules; + + push @suggestedModules, qw( drm drm_ms_helper ch7006 sil164 i810 i830 i915 mga nouveau r128 radeon savage sis tdfx ttm via ); + + return @suggestedModules; +} + +sub installationPhase +{ + my $self = shift; + my $info = shift; + + return; +} + +sub removalPhase +{ + my $self = shift; + my $info = shift; + + return; +} + + +sub copyRequiredFilesIntoInitramfs +{ + my $self = shift; + my $targetPath = shift; + my $attrs = shift; + my $makeInitRamFSEngine = shift; + + # TODO: multi-theme support + + my $plymouthDir = "$openslxConfig{'base-path'}/lib/plugins/plymouth"; + my $plymouthTheme = $attrs->{'plymouth::theme'} || ''; + my $themeDir = ''; + + if ($plymouthTheme) { + $themeDir = "$plymouthDir/files/lib/plymouth/themes/$plymouthTheme"; + } + + $makeInitRamFSEngine->addCMD( + "cp -p $plymouthDir/files/lib/plymouth/themes/default.plymouth $targetPath/lib/plymouth/themes + cp -rp $themeDir $targetPath/lib/plymouth/themes" + ); + + return; +} + +1; |