X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_installinit;h=2f32b46be9f0e9e9f5e17ff7fc80d44da9e6dc3c;hb=452b7e6a61be42b2c345cdeeb00fbe51f88fce32;hp=360f378397176f34fe749c94b351ce8a41e2edc7;hpb=2bc0d0368dc148a3507d285bad9bc845f8bf382d;p=debhelper.git diff --git a/dh_installinit b/dh_installinit index 360f378..2f32b46 100755 --- a/dh_installinit +++ b/dh_installinit @@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B [S>] [B<--name=>I] [B<-n>] [B<-r>] [B<-d>] [S I>] +B [S>] [B<--name=>I] [B<-n>] [B<-R>] [B<-r>] [B<-d>] [S I>] =head1 DESCRIPTION @@ -38,9 +38,27 @@ by the package name. Do not modify postinst/postrm/prerm scripts. +=item B<-o>, B<--onlyscripts> + +Only modify postinst/postrm/prerm scripts, do not actually install any init +script or default files. May be useful if the init script is shipped and/or +installed by upstream in a way that doesn't make it easy to let +dh_installinit find it. + +=item B<-R>, B<--restart-after-upgrade> + +Do not stop the init script until after the package upgrade has been +completed. This is different than the default behavior, which stops the +script in the prerm, and starts it again in the postinst. + +This can be useful for daemons that should not have a possibly long +downtime during upgrade. But you should make sure that the daemon will not +get confused by the package being upgraded while it's running before using +this option. + =item B<-r>, B<--no-restart-on-upgrade> -Do not restart init script on upgrade. +Do not stop init script on upgrade. =item B<--no-start> @@ -81,17 +99,31 @@ preference to the files it normally installs. This parameter is deprecated, use the --name parameter instead. +=item B<--error-handler=>I + +Call the named shell function if running the init script fails. The +function should be provided in the prerm and postinst scripts, before the +#DEBHELPER# token. + =back =head1 NOTES -Note that this command is not idempotent. "dh_clean -k" should be called +Note that this command is not idempotent. L should be called between invocations of this command. Otherwise, it may cause multiple instances of the same text to be added to maintainer scripts. =cut -init(); +init(options => { + "r" => \$dh{R_FLAG}, + "no-restart-on-upgrade" => \$dh{R_FLAG}, + "no-start" => \$dh{NO_START}, + "R|restart-after-upgrade" => \$dh{RESTART_AFTER_UPGRADE}, + "init-script=s" => \$dh{INIT_SCRIPT}, + "update-rcd-params=s", => \$dh{U_PARAMS}, + "remove-d" => \$dh{D_FLAG}, +}); foreach my $package (@{$dh{DOPACKAGES}}) { my $tmp=tmpdir($package); @@ -124,20 +156,22 @@ foreach my $package (@{$dh{DOPACKAGES}}) { pkgfile($package,"init.d"); my $default=pkgfile($package,'default'); - if ($default ne '') { + if ($default ne '' && ! $dh{ONLYSCRIPTS}) { if (! -d "$tmp/etc/default") { doit("install","-d","$tmp/etc/default"); } doit("install","-p","-m644",$default,"$tmp/etc/default/$script"); } - if ($init ne '') { - if (! -d "$tmp/etc/init.d") { - doit("install","-d","$tmp/etc/init.d"); + if ($init ne '' || $dh{ONLYSCRIPTS}) { + if (! $dh{ONLYSCRIPTS}) { + if (! -d "$tmp/etc/init.d") { + doit("install","-d","$tmp/etc/init.d"); + } + + doit("install","-p","-m755",$init,"$tmp/etc/init.d/$script"); } - - doit("install","-p","-m755",$init,"$tmp/etc/init.d/$script"); - + # This is set by the -u "foo" command line switch, it's # the parameters to pass to update-rc.d. If not set, # we have to say "defaults". @@ -148,33 +182,41 @@ foreach my $package (@{$dh{DOPACKAGES}}) { if ($params eq '') { $params="defaults"; } - + if (! $dh{NOSCRIPTS}) { if (! $dh{NO_START}) { - # update-rc.d, and start script - autoscript($package,"postinst", "postinst-init", - "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/"); + if ($dh{RESTART_AFTER_UPGRADE}) { + # update-rc.d, and restart (or + # start if new install) script + autoscript($package,"postinst", "postinst-init-restart", + "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/;s/#ERROR_HANDLER#/$dh{ERROR_HANDLER}/"); + } + else { + # update-rc.d, and start script + autoscript($package,"postinst", "postinst-init", + "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/;s/#ERROR_HANDLER#/$dh{ERROR_HANDLER}/"); + } - if ($dh{R_FLAG}) { + if ($dh{R_FLAG} || $dh{RESTART_AFTER_UPGRADE}) { # stops script only on remove autoscript($package,"prerm","prerm-init-norestart", - "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/"); + "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/;s/#ERROR_HANDLER#/$dh{ERROR_HANDLER}/"); } else { # always stops script autoscript($package,"prerm","prerm-init", - "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/"); + "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/;s/#ERROR_HANDLER#/$dh{ERROR_HANDLER}/"); } } else { # just update-rc.d autoscript($package,"postinst", "postinst-init-nostart", - "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/"); + "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/;s/#ERROR_HANDLER#/$dh{ERROR_HANDLER}/"); } # removes rc.d links autoscript($package,"postrm","postrm-init", - "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/"); + "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/;s/#ERROR_HANDLER#/$dh{ERROR_HANDLER}/"); } } }