]> git.donarmstrong.com Git - debhelper.git/commitdiff
Bug#213078: debhelper: please consider providing dh_ucf
authorJeroen Schot <schot@A-Eskwadraat.nl>
Fri, 22 Apr 2011 10:15:10 +0000 (12:15 +0200)
committerJoey Hess <joey@kitenet.net>
Mon, 25 Apr 2011 23:24:53 +0000 (19:24 -0400)
Here is a patch against the master branch that adds such a command
called dh_installucf. It also registers the conffiles with ucfr and
removes stray ucf-{new,old,dist} files on purge.

autoscripts/postinst-ucf [new file with mode: 0644]
autoscripts/postrm-ucf [new file with mode: 0644]
dh_installucf [new file with mode: 0755]

diff --git a/autoscripts/postinst-ucf b/autoscripts/postinst-ucf
new file mode 100644 (file)
index 0000000..633d3ff
--- /dev/null
@@ -0,0 +1,4 @@
+if [ "$1" = "configure" ]; then
+       ucf #UCFSRC# #UCFDEST#
+       ucfr #PACKAGE# #UCFDEST#
+fi
diff --git a/autoscripts/postrm-ucf b/autoscripts/postrm-ucf
new file mode 100644 (file)
index 0000000..47237a4
--- /dev/null
@@ -0,0 +1,12 @@
+if [ "$1" = "purge" ]; then
+       for ext in .ucf-new .ucf-old .ucf-dist ""; do
+               rm -f #UCFDEST#$ext
+       done
+       
+       if [ -x `which ucf 2>/dev/null`]; then
+               ucf --purge #UCFDEST#
+       fi
+       if [ -x `which ucfr 2>/dev/null`]; then
+               ucfr --purge #PACKAGE# #UCFDEST#
+       fi
+fi
diff --git a/dh_installucf b/dh_installucf
new file mode 100755 (executable)
index 0000000..caba6e8
--- /dev/null
@@ -0,0 +1,92 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+dh_installucf - register configuration files with ucf 
+
+=cut
+
+use strict;
+use Debian::Debhelper::Dh_Lib;
+
+=head1 SYNOPSIS
+
+B<dh_installucf> [S<I<debhelper options>>] [B<-n>] [S<i<source destination> ...>]
+
+=head1 DESCRIPTION
+
+B<dh_installucf> is a debhelper program that is responsible for generating the
+F<postinst> and F<postrm> commands that register files with ucf(1) and ucfr(1).
+
+=head1 FILES
+
+=over 4
+
+=item debian/I<package>.ucf
+
+List pairs of source and destination files to register with ucf. Each pair
+should be put on its own line, with the source and destination separated by
+whitespace. Both source and destination must be absolute paths.
+
+A dependency on ucf will be generated in B<${misc:Depends}>.
+
+=back
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-n>, B<--noscripts>
+
+Do not modify F<postinst>/F<postrm> scripts. Turns this command into a no-op.
+
+=back
+
+=head1 NOTES
+
+Note that this command is not idempotent. L<dh_prep(1)> 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();
+
+foreach my $package (@{$dh{DOPACKAGES}}) {
+       my $tmp=tmpdir($package);
+       my $file=pkgfile($package,"ucf");
+
+       my @ucf;
+       if ($file) {
+               @ucf=filedoublearray($file);
+       }
+
+       if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) {
+               push @ucf, [@ARGV];
+       }
+       
+       if (! $dh{NOSCRIPTS}) {
+               if (@ucf) {
+                       addsubstvar($package, "misc:Depends", "ucf");
+               }
+               foreach my $set (@ucf) {
+                       my $src = $set->[0];
+                       my $dest = $set->[1];
+                       autoscript($package,"postinst","postinst-ucf","s:#UCFSRC#:$src:;s:#UCFDEST#:$dest:;s/#PACKAGE#/$package/",);
+                       autoscript($package,"postrm","postrm-ucf","s:#UCFDEST#:$dest:;s/#PACKAGE#/$package/");
+               }
+       }
+}
+
+=head1 SEE ALSO
+
+L<debhelper(7)>
+
+This program is a part of debhelper.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+Jeroen Schot <schot@a-eskwadraat.nl>
+
+=cut