Author: pebender
Date: Sat Jan 3 16:26:12 2009
New Revision: 4163
Modified:
trunk/gar-minimyth/html/minimyth/document-changelog.txt
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf.pm
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/rc.pl
trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums
trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm
Log:
- Improved perl init script error messages, including minimyth.pm.
Modified: trunk/gar-minimyth/html/minimyth/document-changelog.txt
==============================================================================
--- trunk/gar-minimyth/html/minimyth/document-changelog.txt (original)
+++ trunk/gar-minimyth/html/minimyth/document-changelog.txt Sat Jan 3
16:26:12 2009
@@ -13,7 +13,8 @@
MythTV trunk: version trunk.19538 trunk svn 19538.
Obsoleted sh init scripts
- - MM_INIT_TYPE=sh will no longer work.
+ - Obsoleted sh init scripts. MM_INIT_TYPE=sh will no longer work.
+ - Improved perl init script error messages, including minimyth.pm.
Modified MiniMyth configuration
- Obsoleted MM_WIIMOTE_ENABLED.
Modified:
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf.pm
==============================================================================
---
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf.pm
(original)
+++
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf.pm
Sat Jan 3 16:26:12 2009
@@ -100,12 +100,17 @@
}
if (-f "$dir/minimyth.pm")
{
- require init::minimyth;
- if (exists(&init::minimyth::start))
+ $minimyth->package_require(q(init::minimyth));
+
+ # Validate minimyth.pm.
+ $minimyth->package_member_require(q(init::minimyth), q(start));
+ $minimyth->package_member_require(q(init::minimyth), q(stop));
+
+ if ($minimyth->package_member_exists(q(init::minimyth), q(start)))
{
$minimyth->message_output('info', "running configuration
package ...");
init::minimyth->start($minimyth);
- }
+ }
}
# Enable configuration auto-detection udev rules.
@@ -128,8 +133,11 @@
$minimyth->var_save({ 'file' => '/etc/conf.d/dhcp.override', 'filter'
=> 'MM_DHCP_.*' });
# Start the DHCP client now that we have created the DHCP override
variables file.
- require init::dhcp;
- init::dhcp->start($minimyth);
+ $minimyth->package_require(q(init::dhcp));
+ if ($minimyth->package_member_require(q(init::dhcp), q(start)))
+ {
+ init::dhcp->start($minimyth);
+ }
$minimyth->message_output('info', "processing configuration file ...");
$minimyth->var_clear();
@@ -195,11 +203,16 @@
foreach (grep(s/^(MM_.*)\.pm$/$1/ && (-f "$dir/$_.pm"),
readdir(DIR)))
{
my $group = __PACKAGE__ . '::' . $_;
- eval "require $group";
- my $group_var_list = $group->var_list();
- foreach (grep( /^$filter$/, keys %{$group_var_list}))
+
+ $minimyth->package_require($group);
+
+ if ($minimyth->package_member_require($group, q(var_list)))
{
- $var_list{$_} = $group_var_list->{$_};
+ my $group_var_list = $group->var_list();
+ foreach (grep( /^$filter$/, keys %{$group_var_list}))
+ {
+ $var_list{$_} = $group_var_list->{$_};
+ }
}
}
closedir(DIR);
Modified:
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/rc.pl
==============================================================================
---
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/rc.pl
(original)
+++
trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/rc.pl
Sat Jan 3 16:26:12 2009
@@ -43,45 +43,79 @@
my $dir = Cwd::abs_path(File::Basename::dirname(__FILE__));
- my $count;
- my $script;
-
- $count = $#{$script_list} + 1;
+ my $count = $#{$script_list} + 1;
given ($phase)
{
when (/^0$/) { $minimyth->splash_progress_set(0 , 2*$count); }
when (/^1$/) { $minimyth->splash_progress_set($count, 2*$count); }
when (/^2$/) { $minimyth->splash_progress_set(0 , $count); }
}
+
+ unshift(@INC, $dir);
+
+ my $fail = 0;
foreach (@{$script_list})
{
- unshift(@INC, $dir);
my $package = "init::$_";
- eval "require $package";
- # An error occured, so start a virtual console login and a telnet
login.
- # This is a serious security hole, but users have difficulty
debugging
- # when they cannot connect.
- my $result;
- given ($action)
+
+ # Require package.
+ if (! $minimyth->package_require($package))
{
- when (/^start$/) { $result = $package->start($minimyth); }
- when (/^stop$/) { $result = $package->stop($minimyth); }
- default { $result = 0; }
+ $fail = 1;
+ last;
}
- if (! $result )
+
+ # Make sure that action exists.
+ if (! $minimyth->package_member_require($package, $action))
+ {
+ $fail = 1;
+ last;
+ }
+
+ # Perform action.
+ given ($action)
{
- if (! qx(/bin/pidof telnetd))
+ when (/^start$/)
{
- system('/usr/sbin/telnetd');
+ if (! $package->start($minimyth))
+ {
+ $fail = 1;
+ last;
+ }
}
- if (! qx(/bin/pidof agetty))
+ when (/^stop$/)
{
- system('/sbin/agetty 9600 tty1 &');
+ if (! $package->stop($minimyth))
+ {
+ $fail = 1;
+ last;
+ }
+ }
+ default
+ {
+ $fail = 1;
+ last;
}
- return 0;
}
+
$minimyth->splash_progress_update();
}
+ if ($fail)
+ {
+ # An error occured, so start a virtual console login and a telnet
login.
+ # This is a serious security hole, but users have difficulty
debugging
+ # when they cannot connect.
+ if (! qx(/bin/pidof telnetd))
+ {
+ system('/usr/sbin/telnetd');
+ }
+ if (! qx(/bin/pidof agetty))
+ {
+ system('/sbin/agetty 9600 tty1 &');
+ }
+ return 0;
+ }
+
return 1;
}
Modified: trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums
==============================================================================
--- trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums (original)
+++ trunk/gar-minimyth/script/perl/perl-MiniMyth/checksums Sat Jan 3
16:26:12 2009
@@ -1 +1 @@
-a596b80ee8598196f0f6c2081bd9edbf download/MiniMyth.pm
+f08decc626dabae47b39fa83ac5388d3 download/MiniMyth.pm
Modified: trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm
==============================================================================
--- trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm
(original)
+++ trunk/gar-minimyth/script/perl/perl-MiniMyth/files/MiniMyth.pm Sat Jan
3 16:26:12 2009
@@ -2558,4 +2558,59 @@
return 1;
}
+# package require
+sub package_require
+{
+ my $self = shift;
+ my $package = shift;
+
+ if (! eval(qq(require $package)))
+ {
+ my $message = $@;
+
+ $self->message_output('err', qq(error: 'require $package'
failed.));
+
+ if ($message)
+ {
+ my $logfile = qq(/var/log/$package.require.log);
+ if (open(FILE, '>', $logfile))
+ {
+ print FILE $message;
+ close(FILE);
+ $self->message_output('err', qq(error: ckeck '$logfile'
for details.));
+ }
+ }
+ return 0;
+ }
+
+ return 1;
+}
+
+sub package_member_require
+{
+ my $self = shift;
+ my $package = shift;
+ my $member = shift;
+
+ if (! $self->package_member_exists($package, $member))
+ {
+ my $function = $package . '::' . $member;
+ $self->message_output('err', qq(error: '$function' does not
exist.));
+ return 0;
+ }
+
+ return 1;
+}
+
+sub package_member_exists
+{
+ my $self = shift;
+ my $package = shift;
+ my $member = shift;
+
+ my $function = $package . '::' . $member;
+
+ return exists(&$function);
+}
+
1;
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"minimyth-commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/minimyth-commits?hl=en
-~----------~----~----~----~------~----~------~--~---