=item B<--dbg-package=>I<package>
-This option tells dh_strip that the given package has an associated "-dbg"
-package. dh_strip will, when stripping off the debug symbols of files in
-the given package, save them to independent files in the package build
-directory for the "-dbg" package.
+Causes dh_strip to save debug symbols stripped from the packages it acts on
+as independent files in the package build directory of the specified debugging
+package.
-For example, you might have a package named libfoo, and want to include a
-libfoo-dbg package that contains debugging symbols. The command "dh_strip
---dbg-package=libfoo" will make dh_strip save the debugging symbols for
-usr/lib/libfoo.so.0 into usr/lib/debug/usr/lib/libfoo.so.0 in the package
-build directory for libfoo-dbg. If libfoo-dbg is installed, gdb will
-automatically load up the debugging symbols from it when debugging libfoo.
+For example, if your packages are libfoo and foo and you want to include a
+foo-dbg package with debugging symbols, use dh_strip --dbg-package=foo-dbg.
-This option may be repeated to list more than one package.
-
-Note that if you use this option, your package should build-depend on
-binutils (>= 2.14.90.0.7).
+Note that this option behaves significantly different in debhelper
+compatibility levels 4 and below. Instead of specifying the name of a debug
+package to put symbols in, it specifies a package (or packages) which
+should have separated debug symbols, and the separated symbols are placed
+in packages with "-dbg" added to their name.
=item B<-k>, B<--keep-debug>
file in usr/lib/debug/ in the package build directory. --dbg-package
is easier to use than this option, but this option is more flexible.
-Note that if you use this option, your package should build-depend on
-binutils (>= 2.12.90.0.9).
-
=back
=head1 NOTES
If the DEB_BUILD_OPTIONS environment variable contains "nostrip", nothing
-will be stripped, in accordance with Debian policy.
+will be stripped, in accordance with Debian policy (section 10.1
+"Binaries").
=head1 CONFORMS TO
=cut
-init();
+init(options => {
+ "keep-debug" => \$dh{K_FLAG},
+});
# This variable can be used to turn off stripping (see Policy).
if (defined $ENV{DEB_BUILD_OPTIONS} && $ENV{DEB_BUILD_OPTIONS} =~ /nostrip/) {
my $file=shift;
my $tmp=shift;
my $desttmp=shift;
+
+ # Don't try to copy debug symbols out if the file is already
+ # stripped.
+ return unless get_file_type($file) =~ /not stripped/;
my ($base_file)=$file=~/^\Q$tmp\E(.*)/;
my $debug_path=$desttmp."/usr/lib/debug/".$base_file;
my $tmp=tmpdir($package);
# Support for keeping the debugging symbols in a detached file.
- my $keep_debug=$dh{KEEP_DEBUG};
+ my $keep_debug=$dh{K_FLAG};
my $debugtmp=$tmp;
- if (ref $dh{DEBUGPACKAGES} && grep { $_ eq $package } @{$dh{DEBUGPACKAGES}}) {
- $keep_debug=1;
- $debugtmp=tmpdir($package."-dbg");
+ if (! compat(4)) {
+ if (ref $dh{DEBUGPACKAGES}) {
+ $keep_debug=1;
+ # Note that it's only an array for the v4 stuff;
+ # for v5 only one value is used.
+ my $debugpackage=@{$dh{DEBUGPACKAGES}}[0];
+ if (! grep { $_ eq $debugpackage } getpackages()) {
+ error("debug package $debugpackage is not listed in the control file");
+ }
+ $debugtmp=tmpdir($debugpackage);
+ }
+ }
+ else {
+ if (ref $dh{DEBUGPACKAGES} && grep { $_ eq $package } @{$dh{DEBUGPACKAGES}}) {
+ $keep_debug=1;
+ $debugtmp=tmpdir($package."-dbg");
+ }
}
@shared_libs=@executables=@static_libs=();
# *must* inclde the --strip-unneeded.
doit("strip","--remove-section=.comment",
"--remove-section=.note","--strip-unneeded",$_);
- attach_debug($_, $debug_path) if $keep_debug;
+ attach_debug($_, $debug_path) if defined $debug_path;
}
foreach (@executables) {
my $debug_path = make_debug($_, $tmp, $debugtmp) if $keep_debug;
doit("strip","--remove-section=.comment",
"--remove-section=.note",$_);
- attach_debug($_, $debug_path) if $keep_debug
+ attach_debug($_, $debug_path) if defined $debug_path;
}
foreach (@static_libs) {