summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSebastian Schmelzer2009-04-14 14:59:13 +0200
committerSebastian Schmelzer2009-04-14 14:59:13 +0200
commit40723717042782953fc94985b1d63802259e77af (patch)
tree9c82e356ea7b59c81f94b4712cbe4f1ba38e8b88 /lib
parentRemoved non-uclibc busyboxes as no longer needed (hopefully :)) (diff)
downloadcore-40723717042782953fc94985b1d63802259e77af.tar.gz
core-40723717042782953fc94985b1d63802259e77af.tar.xz
core-40723717042782953fc94985b1d63802259e77af.zip
current state of work on runlevel generator.. (still not fully useable)
git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@2813 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'lib')
-rw-r--r--lib/OpenSLX/DistroUtils.pm11
-rw-r--r--lib/OpenSLX/DistroUtils/Base.pm302
-rw-r--r--lib/OpenSLX/DistroUtils/Engine.pm5
-rw-r--r--lib/OpenSLX/DistroUtils/InitFile.pm114
-rw-r--r--lib/OpenSLX/DistroUtils/Suse.pm107
-rw-r--r--lib/OpenSLX/DistroUtils/Ubuntu.pm41
6 files changed, 367 insertions, 213 deletions
diff --git a/lib/OpenSLX/DistroUtils.pm b/lib/OpenSLX/DistroUtils.pm
index 82c85bfa..dd29a46a 100644
--- a/lib/OpenSLX/DistroUtils.pm
+++ b/lib/OpenSLX/DistroUtils.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -54,10 +54,17 @@ sub simpleInitFile {
sub getInitFileForDistro {
my $initFile = shift;
my $distroName = shift;
+ my $distro;
my $engine = OpenSLX::DistroUtils::Engine->new();
- my $distro = $engine->loadDistro($distroName);
+ if ($distroName) {
+ $distro = $engine->loadDistro($distroName);
+ } else {
+ $distro = $engine->loadDistro('Base');
+ }
+
+ #return $distro->dumpInit($initFile);
return $distro->generateInitFile($initFile);
}
diff --git a/lib/OpenSLX/DistroUtils/Base.pm b/lib/OpenSLX/DistroUtils/Base.pm
index e7e4f367..90cad7a0 100644
--- a/lib/OpenSLX/DistroUtils/Base.pm
+++ b/lib/OpenSLX/DistroUtils/Base.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -15,7 +15,11 @@ package OpenSLX::DistroUtils::Base;
use Data::Dumper;
use OpenSLX::Utils;
+use Clone qw(clone);
+use Switch;
+use strict;
+use warnings;
sub new
{
@@ -34,7 +38,7 @@ sub dumpInit
print $self->generateInitFile($initFile);
}
-sub _combineBlock
+sub _concatContent
{
my $self = shift;
my $block = shift;
@@ -46,7 +50,7 @@ sub _combineBlock
$output .= "\n";
my $content = $block->{'content'};
- while ( ($priority, $contentArray) = each %$content )
+ while ( my ($priority, $contentArray) = each %$content )
{
$output .= join("\n", @$contentArray);
$output .= "\n";
@@ -103,82 +107,254 @@ sub _insertSystemHelperFunctions
return $content;
}
-sub generateInitFile
+sub _renderHighlevelConfig
{
my $self = shift;
my $initFile = shift;
- my $block;
- my $config = $initFile->{'configHash'};
+ my $element;
+ my $hlc = $initFile->{'configHash'}->{'highlevelConfig'};
- print Dumper($initFile->{'configHash'});
+ while ( $element = shift(@$hlc)){
+ switch ($element->{type}) {
+ case 'daemon' {
+ my $tpl;
+ $tpl = "%s_BIN=%s \n";
+ $tpl .= "[ -x %s_BIN ] || exit 5\n\n";
+ $tpl .= "%s_OPTS=\"%s\" \n";
+ $tpl .= "[ -f /etc/sysconfig/%s ] . /etc/sysconfig/%s \n\n";
+ $tpl .= "[ -f /etc/default/%s ] . /etc/default/%s \n\n";
+ $tpl .= "%s_PIDFILE=\"/var/run/%s.init.pid\" \n\n";
+ $initFile->addToBlock('head',
+ sprintf(
+ $tpl,
+ uc($element->{shortname}),
+ $element->{binary},
+ uc($element->{shortname}),
+ uc($element->{shortname}),
+ $element->{parameters},
+ $element->{shortname},
+ $element->{shortname},
+ $element->{shortname},
+ $element->{shortname},
+ uc($element->{shortname}),
+ $element->{shortname}
+ )
+ );
+
+ $tpl = "echo -n \"Starting %s \"\n";
+ $tpl .= "startproc -f -p \$%s_PIDFILE \$%s_BIN \$%s_OPTS\n";
+ $tpl .= "rc_status -v";
+ $initFile->addToCase('start',
+ sprintf(
+ $tpl,
+ $element->{desc},
+ uc($element->{shortname}),
+ uc($element->{shortname}),
+ uc($element->{shortname})
+ )
+ );
+
+ $tpl = "echo -n \"Shutting down %s\" \n";
+ $tpl .= "killproc -p \$%s_PIDFILE -TERM \$%s_BIN\n";
+ $tpl .= "rc_status -v";
+ $initFile->addToCase('stop',
+ sprintf(
+ $tpl,
+ $element->{desc},
+ uc($element->{shortname}),
+ uc($element->{shortname})
+ )
+ );
+
+ $tpl = "## Stop the service and if this succeeds (i.e. the \n";
+ $tpl .= "## service was running before), start it again.\n";
+ $tpl .= "\$0 status >/dev/null && \$0 restart\n\n";
+ $tpl .= "# Remember status and be quiet\n";
+ $tpl .= "rc_status";
+ $initFile->addToCase('try-restart',
+ $tpl
+ );
+
+ $tpl = "## Stop the service and regardless of whether it was \n";
+ $tpl .= "## running or not, start it again.\n";
+ $tpl .= "\$0 stop\n";
+ $tpl .= "\$0 start\n\n";
+ $tpl .= "# Remember status and be quiet\n";
+ $tpl .= "rc_status";
+ $initFile->addToCase('restart',
+ $tpl
+ );
+
+ $tpl = "echo -n \"Reload service %s\"\n";
+ $tpl .= "killproc -p \$%s_PIDFILE -HUP \$%s_BIN\n";
+ $tpl .= "rc_status -v";
+ $initFile->addToCase('reload',
+ sprintf(
+ $tpl,
+ $element->{desc},
+ uc($element->{shortname}),
+ uc($element->{shortname}),
+ uc($element->{shortname})
+ )
+ );
+
+ $tpl = "echo -n \"Checking for service %s\"\n";
+ $tpl .= "checkproc -p \$%s_PIDFILE \$%s_BIN\n";
+ $tpl .= "rc_status -v";
+ $initFile->addToCase('status',
+ sprintf(
+ $tpl,
+ $element->{desc},
+ uc($element->{shortname}),
+ uc($element->{shortname})
+ )
+ );
+
+
+ }
+ }
+ }
+}
+
+
+sub _getInitsystemIncludes
+{
+ return "\n";
+}
+
+sub _renderCasePrefix
+{
+ return "\n";
+}
+
+sub _renderFooter
+{
+ return "exit 0\n";
+}
+
+sub _generateUsage
+{
+ my $self = shift;
+ my $usage = shift;
+ my $tpl;
+
+ $tpl = "## print out usage \n";
+ $tpl .= "echo \"Usage: \$0 {%s}\" >&2 \n";
+ $tpl .= "exit 1";
+
+ return sprintf(
+ $tpl,
+ $usage
+ );
+}
+
+sub _getAuthorBlock
+{
+ my $tpl;
+
+ $tpl = "# Copyright (c) 2009 - OpenSLX GmbH \n";
+ $tpl .= "# \n";
+ $tpl .= "# This program is free software distributed under the GPL version 2. \n";
+ $tpl .= "# See http://openslx.org/COPYING \n";
+ $tpl .= "# \n";
+ $tpl .= "# If you have any feedback please consult http://openslx.org/feedback and \n";
+ $tpl .= "# send your suggestions, praise, or complaints to feedback\@openslx.org \n";
+ $tpl .= "# \n";
+ $tpl .= "# General information about OpenSLX can be found at http://openslx.org/ \n";
+ $tpl .= "# -----------------------------------------------------------------------------\n";
+ $tpl .= "# §filename§ \n";
+ $tpl .= "# - §desc§ \n";
+ $tpl .= "# §generated§ \n";
+ $tpl .= "# -----------------------------------------------------------------------------\n\n";
+
+ return sprintf(
+ $tpl
+ );
+}
+
+sub generateInitFile
+{
+ my $self = shift;
+ my $initFile = shift;
+ my $content;
+ my @usage;
+
+ # get a copy of initFile object before modifying it..
+ my $initFileCopy = clone($initFile);
+
+ $self->_renderHighlevelConfig($initFileCopy);
- $output = "#!/bin/sh\n\n";
+ my $config = $initFileCopy->{'configHash'};
+ my $output;
+
+ # head
+ $output = "#!/bin/sh\n";
+ $output .= $self->_getAuthorBlock();
$output .= $self->_renderInfoBlock($config);
- $output .= "set -e \n\n";
- if (keys(%{$config->{'head'}->{'content'}}) > 0) {
- $output .= $self->_combineBlock($config->{'head'});
- }
- if (keys(%{$config->{'functions'}->{'content'}}) > 0) {
- $output .= $self->_combineBlock($config->{'functions'});
- }
- $output .= "case \"\$1\" in \n";
- if (keys(%{$config->{'start'}->{'content'}}) > 0) {
- $output .= " start)\n";
- $block = $self->_combineBlock($config->{'start'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- } else {
- # trigger error
- # start is essential
- }
- if (keys(%{$config->{'stop'}->{'content'}}) > 0) {
- $output .= " stop)\n";
- $block = $self->_combineBlock($config->{'stop'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- } else {
- # trigger error
- # stop is essential
+ $output .= $self->_getInitsystemIncludes();
+
+ if (keys(%{$config->{'blocks'}->{'head'}->{'content'}}) > 0) {
+ $output .= $self->_concatContent($config->{'blocks'}->{'head'});
}
- if (keys(%{$config->{'reload'}->{'content'}}) > 0) {
- $output .= " reload)\n";
- $block = $self->_combineBlock($config->{'reload'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
+
+ # functions
+ if (keys(%{$config->{'blocks'}->{'functions'}->{'content'}}) > 0) {
+ $output .= $self->_concatContent($config->{'blocks'}->{'functions'});
}
- if (keys(%{$config->{'restart'}->{'content'}}) > 0) {
- $output .= " restart)\n";
- $block = $self->_combineBlock($config->{'restart'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
+
+ # case block
+ $output .= $self->_renderCasePrefix();
+ $output .= "\ncase \"\$1\" in \n";
+
+ # get caseBlocks in defined order
+ my @blocks = sort{
+ $config->{'caseBlocks'}->{$a}->{'order'} <=>
+ $config->{'caseBlocks'}->{$b}->{'order'}
+ }
+ keys(%{$config->{'caseBlocks'}});
+
+ # case block
+ while (@blocks)
+ {
+ my $block= shift(@blocks);
+ if (keys(%{$config->{'caseBlocks'}->{$block}->{'content'}}) > 0) {
+ push(@usage, $block);
+ $output .= " $block)\n";
+ $content = $self->_concatContent($config->{'caseBlocks'}->{$block});
+ $content =~ s/^/ /mg;
+ $output .= $content;
+ $output .= " ;;\n";
+ } else {
+ if ($config->{'caseBlocks'}->{$block}->{'required'}) {
+ print "required block $block undefined";
+ }
+ }
}
- if (keys(%{$config->{'status'}->{'content'}}) > 0) {
- $output .= " status)\n";
- $block = $self->_combineBlock($config->{'status'});
- $block =~ s/^/ /mg;
- $output .= $block;
+
+ # autogenerate usage
+ if (scalar(grep(/usage/, @usage)) == 0) {
+ $initFileCopy->addToCase(
+ 'usage',
+ $self->_generateUsage(join(', ',@usage))
+ );
+
+ $output .= " *)\n";
+ $content = $self->_concatContent($config->{'caseBlocks'}->{'usage'});
+ $content =~ s/^/ /mg;
+ $output .= $content;
$output .= " ;;\n";
+
}
- if (keys(%{$config->{'usage'}->{'content'}}) > 0) {
- $output .= " *)\n";
- $block = $self->_combineBlock($config->{'usage'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " exit 1\n";
- } else {
- # try to generate usage
- # $this->_generateUsage();
- }
+
+ # footer
$output .= "esac\n\n";
- $output .= "exit 0\n";
+ $output .= $self->_renderFooter();
+
return $output;
}
+
1; \ No newline at end of file
diff --git a/lib/OpenSLX/DistroUtils/Engine.pm b/lib/OpenSLX/DistroUtils/Engine.pm
index 28a4bd1d..354210e3 100644
--- a/lib/OpenSLX/DistroUtils/Engine.pm
+++ b/lib/OpenSLX/DistroUtils/Engine.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -15,6 +15,9 @@ package OpenSLX::DistroUtils::Engine;
use OpenSLX::Basics;
+use strict;
+use warnings;
+
sub new
{
my $class = shift;
diff --git a/lib/OpenSLX/DistroUtils/InitFile.pm b/lib/OpenSLX/DistroUtils/InitFile.pm
index 704d4eb2..94d7c753 100644
--- a/lib/OpenSLX/DistroUtils/InitFile.pm
+++ b/lib/OpenSLX/DistroUtils/InitFile.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -38,50 +38,82 @@ sub _initialConfigHash() {
'defaultStart' => "2 3 4 5",
'defaultStop' => "1",
'shortDesc' => "",
-
- 'head' => {
- 'blockDesc' => "head: file existing checks, etc.",
- 'content' => {}
+ 'blocks' => {
+ 'head' => {
+ 'blockDesc' => "head: file existing checks, etc.",
+ 'content' => {}
+ },
+ 'functions' => {
+ 'blockDesc' => "functions: helper functions",
+ 'content' => {}
+ }
},
- 'functions' => {
- 'blockDesc' => "functions: helper functions",
- 'content' => {}
- },
- 'start' => {
- 'blockDesc' => "start: defines start function for initscript",
- 'content' => {}
- },
- 'stop' => {
- 'blockDesc' => "stop: defines stop function for initscript",
- 'content' => {}
- },
- 'reload' => {
- 'blockDesc' => "reload: defines reload function for initscript",
- 'content' => {}
- },
- 'force-reload' => {
- 'blockDesc' => "force-reload: defines force-reload function for initscript",
- 'content' => {}
- },
- 'restart' => {
- 'blockDesc' => "restart: defines restart function for initscript",
- 'content' => {}
- },
- 'try-restart' => {
- 'blockDesc' => "restart: defines restart function for initscript",
- 'content' => {}
- },
- 'status' => {
- 'blockDesc' => "status: defines status function for initscript",
- 'content' => {}
- },
- 'usage' => {
- 'blockDesc' => "usage: defines usage function for initscript",
- 'content' => {}
+ 'caseBlocks' => {
+ 'start' => {
+ 'blockDesc' => "start: defines start function for initscript",
+ 'content' => {},
+ 'order' => 1,
+ 'required' => 1
+ },
+ 'stop' => {
+ 'blockDesc' => "stop: defines stop function for initscript",
+ 'content' => {},
+ 'order' => 2,
+ 'required' => 1
+ },
+ 'reload' => {
+ 'blockDesc' => "reload: defines reload function for initscript",
+ 'content' => {},
+ 'order' => 3,
+ 'required' => 0
+ },
+ 'force-reload' => {
+ 'blockDesc' => "force-reload: defines force-reload function for initscript",
+ 'content' => {},
+ 'order' => 4,
+ 'required' => 0
+ },
+ 'restart' => {
+ 'blockDesc' => "restart: defines restart function for initscript",
+ 'content' => {},
+ 'order' => 5,
+ 'required' => 1
+ },
+ 'try-restart' => {
+ 'blockDesc' => "restart: defines restart function for initscript",
+ 'content' => {},
+ 'order' => 6,
+ 'required' => 0
+ },
+ 'status' => {
+ 'blockDesc' => "status: defines status function for initscript",
+ 'content' => {},
+ 'order' => 7,
+ 'required' => 0
+ },
+ 'usage' => {
+ 'blockDesc' => "usage: defines usage function for initscript",
+ 'content' => {},
+ 'order' => 8,
+ 'required' => 0
+ }
}
};
}
+sub addToCase {
+ my $self = shift;
+ my $blockName = shift;
+ my $content = shift;
+ my $priority = shift || 5;
+
+ #check if block is valid..
+
+ push(@{$self->{'configHash'}->{'caseBlocks'}->{$blockName}->{'content'}->{$priority}}, $content);
+
+ return $self;
+}
+
sub addToBlock {
my $self = shift;
my $blockName = shift;
@@ -90,7 +122,7 @@ sub addToBlock {
#check if block is valid..
- push(@{$self->{'configHash'}->{$blockName}->{'content'}->{$priority}}, $content);
+ push(@{$self->{'configHash'}->{'blocks'}->{$blockName}->{'content'}->{$priority}}, $content);
return $self;
}
diff --git a/lib/OpenSLX/DistroUtils/Suse.pm b/lib/OpenSLX/DistroUtils/Suse.pm
index d3d4ae96..3c370489 100644
--- a/lib/OpenSLX/DistroUtils/Suse.pm
+++ b/lib/OpenSLX/DistroUtils/Suse.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -53,7 +53,7 @@ sub _renderHighlevelConfig {
$tpl = "echo -n \"Starting %s \"\n";
$tpl .= "startproc -f -p \$%s_PIDFILE \$%s_BIN \$%s_OPTS\n";
$tpl .= "rc_status -v";
- $initFile->addToBlock('start',
+ $initFile->addToCase('start',
sprintf(
$tpl,
$element->{desc},
@@ -66,7 +66,7 @@ sub _renderHighlevelConfig {
$tpl = "echo -n \"Shutting down %s\" \n";
$tpl .= "killproc -p \$%s_PIDFILE -TERM \$%s_BIN\n";
$tpl .= "rc_status -v";
- $initFile->addToBlock('stop',
+ $initFile->addToCase('stop',
sprintf(
$tpl,
$element->{desc},
@@ -80,7 +80,7 @@ sub _renderHighlevelConfig {
$tpl .= "\$0 status >/dev/null && \$0 restart\n\n";
$tpl .= "# Remember status and be quiet\n";
$tpl .= "rc_status";
- $initFile->addToBlock('try-restart',
+ $initFile->addToCase('try-restart',
$tpl
);
@@ -90,14 +90,14 @@ sub _renderHighlevelConfig {
$tpl .= "\$0 start\n\n";
$tpl .= "# Remember status and be quiet\n";
$tpl .= "rc_status";
- $initFile->addToBlock('restart',
+ $initFile->addToCase('restart',
$tpl
);
$tpl = "echo -n \"Reload service %s\"\n";
$tpl .= "killproc -p \$%s_PIDFILE -HUP \$%s_BIN\n";
$tpl .= "rc_status -v";
- $initFile->addToBlock('reload',
+ $initFile->addToCase('reload',
sprintf(
$tpl,
$element->{desc},
@@ -110,7 +110,7 @@ sub _renderHighlevelConfig {
$tpl = "echo -n \"Checking for service %s\"\n";
$tpl .= "checkproc -p \$%s_PIDFILE \$%s_BIN\n";
$tpl .= "rc_status -v";
- $initFile->addToBlock('status',
+ $initFile->addToCase('status',
sprintf(
$tpl,
$element->{desc},
@@ -126,90 +126,19 @@ sub _renderHighlevelConfig {
}
-sub generateInitFile
+sub _getInitsystemIncludes
{
- my $self = shift;
- my $initFile = shift;
- my $block;
+ return ". /etc/rc.status\n\n";
+}
- $self->_renderHighlevelConfig($initFile);
-
- my $config = $initFile->{'configHash'};
- my $output;
-
- $output = "#!/bin/sh\n\n";
- $output .= $self->_renderInfoBlock($config);
- $output .= ". /etc/rc.status \n\n";
- if (keys(%{$config->{'head'}->{'content'}}) > 0) {
- $output .= $self->_combineBlock($config->{'head'});
- }
- if (keys(%{$config->{'functions'}->{'content'}}) > 0) {
- $output .= $self->_combineBlock($config->{'functions'});
- }
- $output .= "rc.reset \n\n";
- $output .= "case \"\$1\" in \n";
- if (keys(%{$config->{'start'}->{'content'}}) > 0) {
- $output .= " start)\n";
- $block .= $self->_combineBlock($config->{'start'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- } else {
- # trigger error
- # start is essential
- }
- if (keys(%{$config->{'stop'}->{'content'}}) > 0) {
- $output .= " stop)\n";
- $block = $self->_combineBlock($config->{'stop'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- } else {
- # trigger error
- # stop is essential
- }
- if (keys(%{$config->{'reload'}->{'content'}}) > 0) {
- $output .= " reload)\n";
- $block = $self->_combineBlock($config->{'reload'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- }
- if (keys(%{$config->{'restart'}->{'content'}}) > 0) {
- $output .= " restart)\n";
- $block = $self->_combineBlock($config->{'restart'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- }
- if (keys(%{$config->{'try-restart'}->{'content'}}) > 0) {
- $output .= " try-restart)\n";
- $block = $self->_combineBlock($config->{'try-restart'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- }
- if (keys(%{$config->{'status'}->{'content'}}) > 0) {
- $output .= " status)\n";
- $block = $self->_combineBlock($config->{'status'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " ;;\n";
- }
- if (keys(%{$config->{'usage'}->{'content'}}) > 0) {
- $output .= " *)\n";
- $block = $self->_combineBlock($config->{'usage'});
- $block =~ s/^/ /mg;
- $output .= $block;
- $output .= " exit 1\n";
- } else {
- # try to generate usage
- # $this->_generateUsage();
- }
- $output .= "esac\n\n";
- $output .= "rc_exit\n";
- return $output;
-
+sub _renderCasePrefix
+{
+ return "rc_reset\n";
+}
+
+sub _renderFooter
+{
+ return "rc_exit\n";
}
1; \ No newline at end of file
diff --git a/lib/OpenSLX/DistroUtils/Ubuntu.pm b/lib/OpenSLX/DistroUtils/Ubuntu.pm
index dceae7e4..b2526828 100644
--- a/lib/OpenSLX/DistroUtils/Ubuntu.pm
+++ b/lib/OpenSLX/DistroUtils/Ubuntu.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008, 2009 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -19,6 +19,22 @@ use Switch;
use base qw(OpenSLX::DistroUtils::Base);
+sub _getInitsystemIncludes
+{
+ return ". /lib/lsb/init-functions\n\n";
+}
+
+sub _renderCasePrefix
+{
+ return "";
+}
+
+sub _renderFooter
+{
+ return "exit 0\n";
+}
+
+
sub _renderHighlevelConfig {
my $self = shift;
my $initFile = shift;
@@ -32,7 +48,7 @@ sub _renderHighlevelConfig {
$element->{binary} =~ m/\/([^\/]*)$/;
my $shortname = $1;
my $tpl = "export %s_PARAMS=\"%s\" \n";
- $tpl .= "[ -f /etc/default/%s ] . /etc/default/%s \n";
+ $tpl .= "if [ -f /etc/default/%s ]; then . /etc/default/%s; fi \n";
$initFile->addToBlock('head',
sprintf(
$tpl,
@@ -44,12 +60,15 @@ sub _renderHighlevelConfig {
);
- $tpl = "start-stop-daemon --start --quiet --oknodo ";
+ $tpl = "log_daemon_msg \"Starting %s\" \"%s\" \n";
+ $tpl .= "start-stop-daemon --start --quiet --oknodo ";
$tpl .= "--pidfile /var/run/%s.pid --exec %s -- \$%s_PARAMS \n";
$tpl .= "log_end_msg \$?";
- $initFile->addToBlock('start',
+ $initFile->addToCase('start',
sprintf(
$tpl,
+ $element->{description},
+ $shortname,
$shortname,
$element->{binary},
uc($shortname)
@@ -59,7 +78,7 @@ sub _renderHighlevelConfig {
$tpl = "start-stop-daemon --stop --quiet --oknodo ";
$tpl .= "--pidfile /var/run/%s.pid \n";
$tpl .= "log_end_msg \$?";
- $initFile->addToBlock('stop',
+ $initFile->addToCase('stop',
sprintf(
$tpl,
$shortname
@@ -73,16 +92,4 @@ sub _renderHighlevelConfig {
}
-sub generateInitFile
-{
- my $self = shift;
- my $initFile = shift;
-
- $initFile->addToBlock('head', '#ubuntu test');
-
- $self->_renderHighlevelConfig($initFile);
-
- return $self->SUPER::generateInitFile($initFile);
-}
-
1; \ No newline at end of file