#!/usr/bin/perl -w =head1 NAME dh_installdeb - install files into the DEBIAN directory =cut use strict; use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS B [S>] =head1 DESCRIPTION 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 =over 4 =item I.postinst =item I.preinst =item I.postrm =item I.prerm 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. =item I.triggers =item I.shlibs These control files are installed into the F directory. =item I.conffiles This control file will be installed into the F directory. 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); if (! -d "$tmp/DEBIAN") { doit("install","-o",0,"-g",0,"-d","$tmp/DEBIAN"); } if (is_udeb($package)) { # For udebs, only do the postinst, and no #DEBHELPER#. # Udebs also support menutest and isinstallable scripts. foreach my $script (qw{postinst menutest isinstallable}) { my $f=pkgfile($package,$script); if ($f) { doit("install", "-o", 0, "-g", 0, "-m", 755, $f, "$tmp/DEBIAN/$script"); } } 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); } if (! is_udeb($package)) { # Install non-executable files foreach my $file (qw{shlibs conffiles triggers}) { my $f=pkgfile($package,$file); if ($f) { doit("install","-o",0,"-g",0,"-m",644,"-p",$f,"$tmp/DEBIAN/$file"); } } } # Automatic conffiles registration: If it is in /etc, it is a # conffile. if (! compat(2) && -d "$tmp/etc" && ! is_udeb($package)) { complex_doit("find $tmp/etc -type f -printf '/etc/%P\n' >> $tmp/DEBIAN/conffiles"); # Anything found? if (-z "$tmp/DEBIAN/conffiles") { doit("rm", "-f", "$tmp/DEBIAN/conffiles"); } else { doit("chmod", 644, "$tmp/DEBIAN/conffiles"); } } } =head1 SEE ALSO L This program is a part of debhelper. =head1 AUTHOR Joey Hess =cut