X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_installdeb;h=def76d16cbf1329952d3133c5cbe799c6490e51e;hb=e2a6d4cec4a7ee952cf6a7f250d80f1d75a38f95;hp=386640b7ed6250ac8d0a3cfe046459423294b635;hpb=a243946176b92b5fafd84f43d5a455551cf27210;p=debhelper.git diff --git a/dh_installdeb b/dh_installdeb index 386640b..def76d1 100755 --- a/dh_installdeb +++ b/dh_installdeb @@ -15,8 +15,8 @@ B [S>] =head1 DESCRIPTION -dh_installdeb is a debhelper program that is responsible for installing -files into the DEBIAN directories in package build directories with the +B is a debhelper program that is responsible for installing +files into the F directories in package build directories with the correct permissions. =head1 FILES @@ -31,7 +31,7 @@ correct permissions. =item I.prerm -These maintainer scripts are installed into the DEBIAN directory. +These maintainer scripts are installed into the F directory. Inside the scripts, the token B<#DEBHELPER#> is replaced with shell script snippets generated by other debhelper commands. @@ -40,22 +40,42 @@ shell script snippets generated by other debhelper commands. =item I.shlibs -These control files are installed into the DEBIAN directory. +These control files are installed into the F directory. =item I.conffiles -This control file will be installed into the DEBIAN directory. +This control file will be installed into the F directory. -In V3 compatibility mode and higher, all files in the etc/ directory in a +In v3 compatibility mode and higher, all files in the F directory in a package will automatically be flagged as conffiles by this program, so there is no need to list them manually here. +=item I.maintscript + +Lines in this file correspond to L commands and +parameters. Any shell metacharacters will be escaped, so arbitrary shell +code cannot be inserted here. For example, a line such as C will insert maintainer script snippets +into all maintainer scripts sufficient to move that conffile. + +A versioned Pre-Dependency on dpkg is needed to use +L. An appropriate Pre-Dependency is +set in ${misc:Pre-Depends} ; you should make sure to put that token into +an appropriate place in your debian/control file. + =back =cut init(); +# dpkg-maintscript-helper commands with their associated dpkg pre-dependency +# versions. +my %maintscript_predeps = ( + "rm_conffile" => "1.15.7.2", + "mv_conffile" => "1.15.7.2", +); + foreach my $package (@{$dh{DOPACKAGES}}) { my $tmp=tmpdir($package); @@ -76,6 +96,22 @@ foreach my $package (@{$dh{DOPACKAGES}}) { next; } + my $maintscriptfile=pkgfile($package, "maintscript"); + if ($maintscriptfile) { + foreach my $line (filedoublearray($maintscriptfile)) { + my $cmd=$line->[0]; + error("unknown dpkg-maintscript-helper command: $cmd") + unless exists $maintscript_predeps{$cmd}; + addsubstvar($package, "misc:Pre-Depends", "dpkg", + ">= $maintscript_predeps{$cmd}"); + my $params=escape_shell(@$line); + foreach my $script (qw{postinst preinst prerm postrm}) { + autoscript($package, $script, "maintscript-helper", + "s!#PARAMS#!$params!g"); + } + } + } + # Install debian scripts. foreach my $script (qw{postinst preinst prerm postrm}) { debhelper_script_subst($package, $script);