From 3390e19f8a2947295551371c8ab2839573a1dca1 Mon Sep 17 00:00:00 2001 From: Jeroen Schot Date: Fri, 22 Apr 2011 12:15:10 +0200 Subject: [PATCH] Bug#213078: debhelper: please consider providing dh_ucf 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 | 4 ++ autoscripts/postrm-ucf | 12 ++++++ dh_installucf | 92 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 autoscripts/postinst-ucf create mode 100644 autoscripts/postrm-ucf create mode 100755 dh_installucf diff --git a/autoscripts/postinst-ucf b/autoscripts/postinst-ucf new file mode 100644 index 0000000..633d3ff --- /dev/null +++ b/autoscripts/postinst-ucf @@ -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 index 0000000..47237a4 --- /dev/null +++ b/autoscripts/postrm-ucf @@ -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 index 0000000..caba6e8 --- /dev/null +++ b/dh_installucf @@ -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 [S>] [B<-n>] [S ...>] + +=head1 DESCRIPTION + +B is a debhelper program that is responsible for generating the +F and F commands that register files with ucf(1) and ucfr(1). + +=head1 FILES + +=over 4 + +=item debian/I.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/F scripts. Turns this command into a no-op. + +=back + +=head1 NOTES + +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(); + +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 + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess +Jeroen Schot + +=cut -- 2.39.2