summaryrefslogtreecommitdiff
path: root/dh_installinit
diff options
context:
space:
mode:
Diffstat (limited to 'dh_installinit')
-rwxr-xr-xdh_installinit117
1 files changed, 66 insertions, 51 deletions
diff --git a/dh_installinit b/dh_installinit
index 2ea3440f..7836a9e2 100755
--- a/dh_installinit
+++ b/dh_installinit
@@ -1,58 +1,73 @@
-#!/bin/sh -e
+#!/usr/bin/perl -w
#
# Install debian/init[.d], and set up the postinst and postrm for init
# scripts.
-PATH=debian:$PATH:/usr/lib/debhelper
-. dh_lib
-
-for PACKAGE in $DH_DOPACKAGES; do
- TMP=`tmpdir $PACKAGE`
- EXT=`pkgext $PACKAGE`
-
- if [ -e debian/${EXT}init ]; then
- if [ ! -d $TMP/etc/init.d ]; then
- doit "install -d $TMP/etc/init.d"
- fi
-
- # Figure out what filename to install it as.
- if [ "$DH_D_FLAG" ]; then
- # -d on the command line sets DH_D_FLAG. We will
- # remove a trailing 'd' from the package name and
- # use that as the name.
- script=`expr $PACKAGE : '\(.*\)d$'` || true
- if [ ! "$script" ]; then
- echo `basename $0`" warning: \"$PACKAGE\" has no final -d, but -d was specified."
- script=$PACKAGE
- fi
- else
- script=$PACKAGE
- fi
- doit "install -p -m755 debian/${EXT}init $TMP/etc/init.d/$script"
+use Debian::Debhelper::Dh_Lib;
+init();
+
+foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
+ $TMP=tmpdir($PACKAGE);
+
+ # Figure out what filename to install it as.
+ my $script;
+ if ($dh{D_FLAG}) {
+ # -d on the command line sets D_FLAG. We will
+ # remove a trailing 'd' from the package name and
+ # use that as the name.
+ $script=$PACKAGE;
+ if ($script=~m/(.*)d$/) {
+ $script=$1;
+ }
+ else {
+ warning("\"$PACKAGE\" has no final d' in its name, but -d was specified.");
+ }
+ }
+ elsif ($dh{INIT_SCRIPT}) {
+ $script=$dh{INIT_SCRIPT};
+ }
+ else {
+ $script=$PACKAGE;
+ }
+
+ $init=pkgfile($PACKAGE,$script) || pkgfile($PACKAGE,"init") ||
+ pkgfile($PACKAGE,"init.d");
+
+ if ($init ne '') {
+ if (! -d "$TMP/etc/init.d") {
+ doit("install","-d","$TMP/etc/init.d");
+ }
+
+ 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,
+ # the parameters to pass to update-rc.d. If not set,
# we have to say "defaults".
- if [ "$DH_U_PARAMS" = "" ]; then
- DH_U_PARAMS="defaults"
- fi
-
- # -r on the command line sets DH_R_FLAG. If it's set, there
- # is no restart on upgrade.
- if [ ! "$DH_NOSCRIPTS" ]; then
- if [ "$DH_R_FLAG" ]; then
- autoscript "postinst" "postinst-init-norestart" \
- "s/#SCRIPT#/$script/;s/#INITPARMS#/$DH_U_PARAMS/"
- autoscript "postrm" "postrm-init" \
- "s/#SCRIPT#/$script/;s/#INITPARMS#/$DH_U_PARAMS/"
- else
- autoscript "postinst" "postinst-init" \
- "s/#SCRIPT#/$script/;s/#INITPARMS#/$DH_U_PARAMS/"
- autoscript "postrm" "postrm-init" \
- "s/#SCRIPT#/$script/;s/#INITPARMS#/$DH_U_PARAMS/"
- autoscript "prerm" "prerm-init" \
- "s/#SCRIPT#/$script/;s/#INITPARMS#/$DH_U_PARAMS/"
- fi
- fi
- fi
-done
+ my $params='';
+ if (defined($dh{U_PARAMS})) {
+ $params=join(' ',@{$dh{U_PARAMS}});
+ }
+ if ($params eq '') {
+ $params="defaults";
+ }
+
+ if (! $dh{NOSCRIPTS}) {
+ # -r on the command line sets R_FLAG. If it's set, there
+ # is no restart on upgrade.
+ if ($dh{R_FLAG}) {
+ autoscript($PACKAGE,"postinst","postinst-init-norestart",
+ "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/");
+ autoscript($PACKAGE,"postrm","postrm-init",
+ "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/");
+ }
+ else {
+ autoscript($PACKAGE,"postinst","postinst-init",
+ "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/");
+ autoscript($PACKAGE,"postrm","postrm-init",
+ "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/");
+ autoscript($PACKAGE,"prerm","prerm-init",
+ "s/#SCRIPT#/$script/;s/#INITPARMS#/$params/");
+ }
+ }
+ }
+}