# 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; my $pluginRepoPath = $info->{'plugin-repo-path'}; my $pluginTempPath = $info->{'plugin-temp-path'}; my $openslxBasePath = $info->{'openslx-base-path'}; my $openslxConfigPath = $info->{'openslx-config-path'}; my $attrs = $info->{'plugin-attrs'}; my $filesDir = "$openslxBasePath/lib/plugins/plymouth/files"; copyDir("$filesDir", "$pluginRepoPath"); 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;