summaryrefslogtreecommitdiff
path: root/dh_smf
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-07-18 20:04:48 +0400
committerIgor Pashev <pashev.igor@gmail.com>2013-07-18 20:04:48 +0400
commit34e97b1d41b4dd82e16dd2e8917d1f2c5ea038a4 (patch)
tree2ff9d444cde27c43f2d0ba7b72c465d3d85cf340 /dh_smf
parent33464750454b650d1bf53e8ddf66928df453a61b (diff)
downloaddh-smf-34e97b1d41b4dd82e16dd2e8917d1f2c5ea038a4.tar.gz
Can handle services on install/upgrade/remove
Diffstat (limited to 'dh_smf')
-rwxr-xr-xdh_smf27
1 files changed, 20 insertions, 7 deletions
diff --git a/dh_smf b/dh_smf
index 30bfa2a..79c7a14 100755
--- a/dh_smf
+++ b/dh_smf
@@ -151,7 +151,7 @@ foreach my $package ( @{ $dh{DOPACKAGES} } ) {
if ( exists $xml->{'service'}->{'create_default_instance'} ) {
push @services,
{
- 'name' => "$service_base:default",
+ 'name' => "svc:/$service_base:default",
'enabled' =>
$xml->{'service'}->{'create_default_instance'}->{'enabled'},
'exec_method' => $xml->{'service'}->{'exec_method'},
@@ -168,7 +168,7 @@ foreach my $package ( @{ $dh{DOPACKAGES} } ) {
{
push @services,
{
- 'name' => "$service_base:$k",
+ 'name' => "svc:/$service_base:$k",
'enabled' => $v->{'enabled'},
'exec_method' => $v->{'exec_method'}
// $xml->{'service'}->{'exec_method'},
@@ -193,10 +193,9 @@ foreach my $package ( @{ $dh{DOPACKAGES} } ) {
error("No SMF services found in @manifests") unless @services;
- print Dumper(@services); # debug
-
if ( !$dh{NOSCRIPTS} ) {
my @pkg_manifests = map { s!\Q$tmp\E/*!/!; $_ } @manifests;
+ my @svcs = ();
autoscript( $package, 'postinst', 'postinst-smf-import',
"s|#MANIFESTS#|@pkg_manifests|" );
@@ -205,22 +204,36 @@ foreach my $package ( @{ $dh{DOPACKAGES} } ) {
my @daemons_restart = grep { $_->{'upgrade'} eq 'restart' } @daemons;
my @daemons_refresh = grep { $_->{'upgrade'} eq 'refresh' } @daemons;
if (@daemons_stop) {
- my @svcs = map { $_->{'name'} } @daemons_stop;
+ @svcs = map { $_->{'name'} } @daemons_stop;
autoscript( $package, 'prerm', 'prerm-smf-stop',
"s|#SERVICES#|@svcs|" );
autoscript( $package, 'postinst', 'postinst-smf-start',
"s|#SERVICES#|@svcs|" );
}
if (@daemons_restart) {
- my @svcs = map { $_->{'name'} } @daemons_restart;
+ @svcs = map { $_->{'name'} } @daemons_restart;
autoscript( $package, 'postinst', 'postinst-smf-start',
"s|#SERVICES#|@svcs|" );
}
if (@daemons_refresh) {
- my @svcs = map { $_->{'name'} } @daemons_refresh;
+ @svcs = map { $_->{'name'} } @daemons_refresh;
autoscript( $package, 'postinst', 'postinst-smf-refresh',
"s|#SERVICES#|@svcs|" );
}
+
+ # Disable and delete services on removal.
+ # Other services (upgrade=stop) are already disabled.
+ my @services_nonstop = grep { $_->{'upgrade'} ne 'stop' } @services;
+ if (@services_nonstop) {
+ @svcs = map { $_->{'name'} } @services_nonstop;
+ autoscript( $package, 'prerm', 'prerm-smf-stop-before-remove',
+ "s|#SERVICES#|@svcs|" );
+ }
+
+ # Remove all services.
+ @svcs = map { $_->{'name'} } @services;
+ autoscript( $package, 'postrm', 'postrm-smf-delete',
+ "s|#SERVICES#|@svcs|" );
}
}