diff options
Diffstat (limited to 'dh_bugfiles')
-rwxr-xr-x | dh_bugfiles | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/dh_bugfiles b/dh_bugfiles new file mode 100755 index 00000000..83428f51 --- /dev/null +++ b/dh_bugfiles @@ -0,0 +1,136 @@ +#!/usr/bin/perl -w + +=head1 NAME + +dh_bugfiles - install bug reporting customization files into package build directories + +=cut + +use strict; +use Debian::Debhelper::Dh_Lib; + +=head1 SYNOPSIS + +B<dh_bugfiles> [B<-A>] [S<I<debhelper options>>] + +=head1 DESCRIPTION + +B<dh_bugfiles> is a debhelper program that is responsible for installing +bug reporting customization files (bug scripts and/or bug control files +and/or presubj files) into package build directories. + +=head1 FILES + +=over 4 + +=item debian/I<package>.bug-script + +This is the script to be run by the bug reporting program for generating a bug +report template. This file is installed as F<usr/share/bug/package> in the +package build directory if no other types of bug reporting customization +files are going to be installed for the package in question. Otherwise, +this file is installed as F<usr/share/bug/package/script>. Finally, the +installed script is given execute permissions. + +=item debian/I<package>.bug-control + +It is the bug control file containing some directions for the bug reporting +tool. This file is installed as F<usr/share/bug/package/control> in the +package build directory. + +=item debian/I<package>.bug-presubj + +The contents of this file are displayed to the user by the bug reporting +tool before allowing the user to write a bug report on the package to the +Debian Bug Tracking System. This file is installed as +F<usr/share/bug/package/presubj> in the package build directory. + +=back + +=head1 OPTIONS + +=over 4 + +=item B<-A>, B<--all> + +Install F<debian/bug-*> files to ALL packages acted on when respective +F<debian/package.bug-*> files do not exist. Normally, F<debian/bug-*> will +be installed to the first package only. + +=back + +=cut + +init(); + +# Types of bug files this debhelper program handles. +# Hash value is the name of the pkgfile of the respective +# type. +my %bugfile_types = ( + "script" => "bug-script", + "control" => "bug-control", + "presubj" => "bug-presubj", +); +# PROMISE: DH NOOP WITHOUT bug-script bug-control bug-presubj + +foreach my $package (@{$dh{DOPACKAGES}}) { + next if is_udeb($package); + + my $tmp=tmpdir($package); + my $dir="$tmp/usr/share/bug/$package"; + + # Gather information which bug files are available for the + # package in question + my %bugfiles=(); + while (my ($type, $pkgfilename) = each(%bugfile_types)) { + my $file=pkgfile($package,$pkgfilename); + if ($file) { + $bugfiles{$type}=$file; + } + elsif (-f "debian/$pkgfilename" && $dh{PARAMS_ALL}) { + $bugfiles{$type}="debian/$pkgfilename"; + } + } + + # If there is only a bug script to install, install it as + # usr/share/bug/$package (unless this path is a directory) + if (! -d $dir && scalar(keys(%bugfiles)) == 1 && exists $bugfiles{script}) { + doit("install","-D","-p","-m755",$bugfiles{script},$dir); + } + elsif (scalar(keys(%bugfiles)) > 0) { + if (-f $dir) { + # Move usr/share/bug/$package to usr/share/bug/$package/script + doit("mv", $dir, "${dir}.tmp"); + doit("install","-d",$dir); + doit("mv", "${dir}.tmp", "$dir/script"); + } + elsif (! -d $dir) { + doit("install","-d",$dir); + } + while (my ($type, $srcfile) = each(%bugfiles)) { + doit("install","-p","-m644",$srcfile, "$dir/$type"); + } + } + + # Ensure that the bug script is executable + if (-f $dir) { + chmod 0755, $dir; + } + elsif (-f "$dir/script") { + chmod 0755, "$dir/script"; + } +} + +=head1 SEE ALSO + +F</usr/share/doc/reportbug/README.developers.gz> + +L<debhelper(1)> + +This program is a part of debhelper. + +=head1 AUTHOR + +Modestas Vainius <modestas@vainius.eu> + +=cut |