From 515ab3ada00addcc89b19dfcb5e4f1e1ff489aad Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 29 Jul 2012 19:46:53 +0200 Subject: Support systemd in dh_installinit and postinst/postrm --- dh_installinit | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) (limited to 'dh_installinit') diff --git a/dh_installinit b/dh_installinit index 9c8c1550..65e143a5 100755 --- a/dh_installinit +++ b/dh_installinit @@ -2,7 +2,7 @@ =head1 NAME -dh_installinit - install init scripts and/or upstart jobs into package build directories +dh_installinit - install init scripts and/or upstart jobs and/or systemd services into package build directories =cut @@ -42,6 +42,16 @@ build directory. If this exists, it is installed into etc/init/I.conf in the package build directory. +=item debian/I.service + +If this exists, it is installed into lib/systemd/system/I.service in +the package build directory. + +=item debian/I.tmpfile + +If this exists, it is installed into usr/lib/tmpfiles.d/I.conf in the +package build directory. + =back =head1 OPTIONS @@ -55,9 +65,10 @@ Do not modify F/F/F scripts. =item B<-o>, B<--onlyscripts> Only modify F/F/F scripts, do not actually install any init -script, default files, or upstart job. May be useful if the init script or -upstart job is shipped and/or installed by upstream in a way that doesn't -make it easy to let B find it. +script, default files, upstart job or systemd service file. May be useful if +the init script, upstart job or systemd service file is shipped and/or +installed by upstream in a way that doesn't make it easy to let +B find it. =item B<-R>, B<--restart-after-upgrade> @@ -171,6 +182,26 @@ foreach my $package (@{$dh{DOPACKAGES}}) { $script=$package; } + my $service=pkgfile($package,"service"); + if ($service ne '' && ! $dh{ONLYSCRIPTS}) { + my $path="$tmp/lib/systemd/system"; + if (! -d "$path") { + doit("install","-d","$path"); + } + + doit("install","-p","-m644",$service,"$path/$script.service"); + } + + my $tmpfile=pkgfile($package,"tmpfile"); + if ($tmpfile ne '' && ! $dh{ONLYSCRIPTS}) { + my $path="$tmp/usr/lib/tmpfiles.d"; + if (! -d "$path") { + doit("install","-d","$path"); + } + + doit("install","-p","-m644",$tmpfile,"$path/$script.conf"); + } + my $job=pkgfile($package,"upstart"); if ($job ne '' && ! $dh{ONLYSCRIPTS}) { @@ -203,7 +234,11 @@ foreach my $package (@{$dh{DOPACKAGES}}) { error("Can't use --init-script with an upstart job"); } - if ($job ne '' || $init ne '' || $dh{ONLYSCRIPTS}) { + # NB: The case that only $tmpfile is set makes no sense. The + # tmpfiles.d(5) mechanism is only available when using systemd (at + # least currently), so there has to be an init script which does the + # same thing for sysvinit. + if ($service ne '' || $job ne '' || $init ne '' || $dh{ONLYSCRIPTS}) { # 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". @@ -265,4 +300,6 @@ Joey Hess Steve Langasek +Michael Stapelberg + =cut -- cgit v1.2.3