]>
Commit | Line | Data |
---|---|---|
6c4cc7ea | 1 | #!/usr/bin/env bash |
bc259fdc MT |
2 | |
3 | dirs="" | |
4 | excludes="/dev /proc /sys /run" | |
5 | ||
6 | while [ $# -gt 0 ]; do | |
7 | case "${1}" in | |
8 | --exclude=*) | |
9 | excludes="${excludes} ${1#*=}" | |
10 | ;; | |
11 | *) | |
12 | dirs="${dirs} ${1}" | |
13 | ;; | |
14 | esac | |
15 | shift | |
16 | done | |
fc44fa1f MT |
17 | |
18 | function _strip() { | |
19 | local file=${1} | |
fc44fa1f MT |
20 | local cmd="${STRIP-strip}" |
21 | ||
bc259fdc MT |
22 | local exclude l |
23 | for exclude in ${excludes}; do | |
24 | l=${#exclude} | |
25 | if [ "${file:0:${l}}" = "${exclude}" ]; then | |
26 | return 0 | |
27 | fi | |
28 | done | |
29 | ||
fc44fa1f | 30 | case "$(file -bi ${file})" in |
d9bb5239 | 31 | application/x-sharedlib*|application/x-archive*) |
fc44fa1f MT |
32 | cmd="${cmd} --strip-debug --remove-section=.comment --remove-section=.note" |
33 | ;; | |
34 | *) | |
35 | cmd="${cmd} --strip-unneeded" | |
36 | ;; | |
37 | esac | |
38 | ||
39 | echo "Stripping ${file}..." | |
40 | ${cmd} ${file} | |
41 | } | |
42 | ||
bc259fdc | 43 | for dir in ${dirs}; do |
d9bb5239 | 44 | # Strip shared objects. |
fc44fa1f | 45 | find ${dir} -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \ |
2ee623a8 | 46 | | file -N -f - | sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped.*/\1/p' | |
fc44fa1f | 47 | while read file; do |
b98ca5fa MT |
48 | _strip ${file} || exit $? |
49 | done || exit $? | |
d9bb5239 MT |
50 | |
51 | # Strip static archives. | |
52 | find ${dir} -name \*.a -a -exec file {} \; \ | |
53 | | grep 'current ar archive' | sed -n -e 's/^\(.*\):[ ]*current ar archive/\1/p' | | |
54 | while read file; do | |
b98ca5fa MT |
55 | _strip ${file} || exit $? |
56 | done || exit $? | |
fc44fa1f | 57 | done |