diff options
Diffstat (limited to 'dh_strip')
-rwxr-xr-x | dh_strip | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/dh_strip b/dh_strip deleted file mode 100755 index 9e107f46..00000000 --- a/dh_strip +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/perl -w - -=head1 NAME - -dh_strip - strip executables, shared libraries, and some static libraries - -=cut - -use strict; -use File::Find; -use Debian::Debhelper::Dh_Lib; - -=head1 SYNOPSIS - -B<dh_strip> [S<I<debhelper options>>] [B<-X>I<item>] - -=head1 DESCRIPTION - -dh_strip is a debhelper program that is responsible for stripping -executables, shared libraries, and static libraries that are not used for -debugging. - -This program examines your package build directories and works out what -to strip on its own. It uses L<file(1)> and file permisions and filenames -to figure out what files are shared libraries (*.so), executable binaries, -and static (lib*.a) and debugging libraries (lib*_g.a, debug/*.so), and -strips each as much as is possible. (Which is not at all for debugging -libraries.) In general it seems to make very good guesses, and will do the -right thing in almost all cases. - -Since it is very hard to automatically guess if a file is a -module, and hard to determine how to strip a module, dh_strip does not -currently deal with stripping binary modules such as .o files. - -=head1 OPTIONS - -=over 4 - -=item B<-X>I<item>, B<--exclude=>I<item> - -Exclude files that contain "item" anywhere in their filename from being -stripped. You may use this option multiple times to build up a list of -things to exclude. - -=back - -=head1 NOTES - -If the DEB_BUILD_OPTIONS environment variable contains "nostrip", nothing -will be stripped, in accordance with Debian policy. - -=head1 CONFORMS TO - -Debian policy, version 3.0.1 - -=cut - -init(); - -# This variable can be used to turn off stripping (see Policy). -if (defined $ENV{DEB_BUILD_OPTIONS} && $ENV{DEB_BUILD_OPTIONS} =~ /nostrip/) { - exit; -} - -# I could just use `file $_[0]`, but this is safer -sub get_file_type { - my $file=shift; - open (FILE, '-|') # handle all filenames safely - || exec('file', $file) - || die "can't exec file: $!"; - my $type=<FILE>; - close FILE; - return $type; -} - -# Check if a file is an elf binary, shared library, or static library, -# for use by File::Find. It'll fill the following 3 arrays with anything -# it finds: -my (@shared_libs, @executables, @static_libs); -sub testfile { - return if -l $_ or -d $_; # Skip directories and symlinks always. - - # See if we were asked to exclude this file. - # Note that we have to test on the full filename, including directory. - my $fn="$File::Find::dir/$_"; - foreach my $f (@{$dh{EXCLUDE}}) { - return if ($fn=~m/\Q$f\E/); - } - - # Is it a debug library in a debug subdir? - return if $fn=~m/debug\/.*\.so/; - - # Does its filename look like a shared library? - if (m/.*\.so.*?/) { - # Ok, do the expensive test. - my $type=get_file_type($_); - if ($type=~m/.*ELF.*shared.*/) { - push @shared_libs, $fn; - return; - } - } - - # Is it executable? -x isn't good enough, so we need to use stat. - my (undef,undef,$mode,undef)=stat(_); - if ($mode & 0111) { - # Ok, expensive test. - my $type=get_file_type($_); - if ($type=~m/.*ELF.*(executable|shared).*/) { - push @executables, $fn; - return; - } - } - - # Is it a static library, and not a debug library? - if (m/lib.*\.a$/ && ! m/.*_g\.a$/) { - push @static_libs, $fn; - return; - } -} - -foreach my $package (@{$dh{DOPACKAGES}}) { - my $tmp=tmpdir($package); - - @shared_libs=@executables=@static_libs=(); - find(\&testfile,$tmp); - - foreach (@shared_libs) { - # Note that all calls to strip on shared libs - # *must* inclde the --strip-unneeded. - doit("strip","--remove-section=.comment", - "--remove-section=.note","--strip-unneeded",$_); - } - - foreach (@executables) { - doit("strip","--remove-section=.comment", - "--remove-section=.note",$_); - } - - foreach (@static_libs) { - doit("strip","--strip-debug",$_); - } -} - -=head1 SEE ALSO - -L<debhelper(7)> - -This program is a part of debhelper. - -=head1 AUTHOR - -Joey Hess <joeyh@debian.org> - -=cut |