From dad2def5fba256e42ee32b9c4d9e697a7d93d339 Mon Sep 17 00:00:00 2001 From: Modestas Vainius Date: Fri, 31 Oct 2008 12:43:31 +0200 Subject: Add dh_bugfiles - a helper for reportbug files * Add a new helper: dh_bugfiles. It can be used for installing bug reporting customization files (Closes: #326874). Signed-off-by: Modestas Vainius --- dh_bugfiles | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100755 dh_bugfiles (limited to 'dh_bugfiles') diff --git a/dh_bugfiles b/dh_bugfiles new file mode 100755 index 00000000..29414430 --- /dev/null +++ b/dh_bugfiles @@ -0,0 +1,131 @@ +#!/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 [B<-A>] [S>] + +=head1 DESCRIPTION + +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. + +This helper program installs the following files if they are found: + +=over 3 + +=item B, B + +It is the script to be run by the bug reporting program for generating a bug +report template. This file is installed as F into 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. Finally, the +installed script is given execute permissions. + +=item B, B + +It is the bug control file containing some directions for the bug reporting +tool. This file is installed as F into the +package build directory. + +=item B, B + +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 into the package build directory. + +=back + +=head1 OPTIONS + +=over 4 + +=item B<-A>, B<--all> + +Install debian/bug-* files to ALL packages acted on when respective +debian/package.bug-* files do not exist. Normally, 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", +); + +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 (needs B package installed) + +L + +This program is a part of debhelper. + +=head1 AUTHOR + +Modestas Vainius + +=cut -- cgit v1.2.3