diff options
author | Chmouel Boudjnah <chmouel@mandriva.org> | 2000-02-18 20:00:57 +0000 |
---|---|---|
committer | Chmouel Boudjnah <chmouel@mandriva.org> | 2000-02-18 20:00:57 +0000 |
commit | 48bff1047b38c3f134a179786438440cc691f227 (patch) | |
tree | c3379252ab0d021163a9ba39d3fd52705f62d7d0 /strip_files | |
parent | 00a20e122852338baa6d892413f212d30db1da5d (diff) | |
download | spec-helper-topic/MandrakeSoft.tar spec-helper-topic/MandrakeSoft.tar.gz spec-helper-topic/MandrakeSoft.tar.bz2 spec-helper-topic/MandrakeSoft.tar.xz spec-helper-topic/MandrakeSoft.zip |
Initial revisionCookertopic/MandrakeSoft
Diffstat (limited to 'strip_files')
-rwxr-xr-x | strip_files | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/strip_files b/strip_files new file mode 100755 index 0000000..fe3ef48 --- /dev/null +++ b/strip_files @@ -0,0 +1,73 @@ +#!/usr/bin/perl -w +#--------------------------------------------------------------- +# Project : Linux-Mandrake +# Module : spec-helper +# File : strip_files +# Version : $Id$ +# Author : Frederic Lepied +# Created On : Thu Feb 10 09:23:02 2000 +# Purpose : Strip files. +#--------------------------------------------------------------- + +use File::Find; + +################################################################################ +# 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. + + $fn="$File::Find::dir/$_"; + + # Does its filename look like a shared library? + if (m/.*\.so.*?/) { + # Ok, do the expensive test. + my $type=`file $_`; + if ($type=~m/.*ELF.*shared.*/) { + push @shared_libs, $fn; + return; + } + } + + # Is it executable? -x isn't good enough, so we need to use stat. + (undef,undef,$mode,undef)=stat(_); + if ($mode & 0111) { + # Ok, expensive test. + my $type=`file $_`; + if ($type=~m/.*ELF.*executable.*/) { + 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; + } +} + +################################################################################ +$RPM_BUILD_ROOT=$ENV{RPM_BUILD_ROOT}; +chdir($RPM_BUILD_ROOT) || die "Can't cd to $ENV{RPM_BUILD_ROOT}: $!"; + +@shared_libs=@executables=@static_libs=(); +find(\&testfile,$RPM_BUILD_ROOT); + +foreach (@shared_libs) { + # Note that all calls to strip on shared libs + # *must* inclde the --strip-unneeded. + system("strip","--remove-section=.comment","--remove-section=.note","--strip-unneeded",$_); +} + +foreach (@executables) { + system("strip","--remove-section=.comment","--remove-section=.note",$_); +} + +# foreach (@static_libs) { +# system("strip","--strip-debug",$_); +# } + +# strip_files ends here |