#!/usr/bin/perl -w =head1 NAME dh_installdebconf - install files used by debconf in package build directories =cut use strict; use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS B [S>] [B<-n>] [S I>] =head1 DESCRIPTION B is a debhelper program that is responsible for installing files used by debconf into package build directories. It also automatically generates the F commands needed to interface with debconf. The commands are added to the maintainer scripts by B. See L for an explanation of how that works. Note that if you use debconf, your package probably needs to depend on it (it will be added to B<${misc:Depends}> by this program). Note that for your config script to be called by B, your F needs to source debconf's confmodule. B does not install this statement into the F automatically as it is too hard to do it right. =head1 FILES =over 4 =item debian/I.config This is the debconf F script, and is installed into the F directory in the package build directory. Inside the script, the token B<#DEBHELPER#> is replaced with shell script snippets generated by other debhelper commands. =item debian/I.templates This is the debconf F file, and is installed into the F directory in the package build directory. =item F If this directory is present, this program will automatically use L to generate merged templates files that include the translations from there. For this to work, your package should build-depend on F. =back =head1 OPTIONS =over 4 =item B<-n>, B<--noscripts> Do not modify F script. =item B<--> I Pass the params to B. =back =cut init(); my @extraparams; if (defined($dh{U_PARAMS})) { @extraparams=@{$dh{U_PARAMS}}; } # PROMISE: DH NOOP WITHOUT config templates foreach my $package (@{$dh{DOPACKAGES}}) { my $tmp=tmpdir($package); my $config=pkgfile($package,"config"); my $templates=pkgfile($package,"templates"); if (! -d "$tmp/DEBIAN") { doit("install","-o",0,"-g",0,"-d","$tmp/DEBIAN"); } if (! is_udeb($package)) { debhelper_script_subst($package, "config"); } if ($templates ne '') { # Are there old-style translated templates? if (glob("$templates.??"), glob("$templates.??_??")) { warning "Ignoring debian/templates.ll files. Switch to po-debconf!"; } umask(0022); # since I do a redirect below if (-d "debian/po") { complex_doit("po2debconf @extraparams $templates > $tmp/DEBIAN/templates"); } else { doit("install", "-o", 0, "-g", 0, "-m", 644, "-p", $templates, "$tmp/DEBIAN/templates"); } } # I'm going with debconf 0.5 because it was the first # "modern" one. udebs just need cdebconf. my $debconfdep=is_udeb($package) ? "cdebconf-udeb" : "debconf (>= 0.5) | debconf-2.0"; if ($config ne '' || $templates ne '') { addsubstvar($package, "misc:Depends", $debconfdep); } if (($config ne '' || $templates ne '') && ! $dh{NOSCRIPTS}) { autoscript($package,"postrm","postrm-debconf"); } } =head1 SEE ALSO L This program is a part of debhelper. =head1 AUTHOR Joey Hess =cut