package POEDaemon::WheelRun::SystemUpgrade; use strict; use warnings FATAL => 'all'; no warnings 'redefine'; use POE; use POEDaemon; sub states { return $_[0], [qw( systemupgrade_init systemupgrade_childexit )]; } sub systemupgrade_init { my ($kernel, $heap) = @_[KERNEL, HEAP]; log_enabled && logline 'event fired'; my $name = 'systemupgrade'; return if $heap->{wheel_run}->{children_by_name}->{$name} || $heap->{systemupgrade_active}; $heap->{systemupgrade_active} = 1; delete $heap->{systemupgrade_exitcode}; $kernel->yield(wheelrun_exec => { prog => [ 'util/systemupgrade-suidwrapper' ], name => $name, }); } sub systemupgrade_childexit { my ($heap, $args) = @_[HEAP, ARG0]; delete $heap->{systemupgrade_active}; $heap->{systemupgrade_exitcode} = $args->{exitcode}; } 1;