More minimization (now 15.9 MB)
[febootstrap.git] / febootstrap-minimize.sh
1 #!/bin/bash -
2 # febootstrap minimize
3 # (C) Copyright 2009 Red Hat Inc.
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 #
19 # Written by Richard W.M. Jones <rjones@redhat.com>
20
21 TEMP=`getopt \
22         -o '' \
23         --long help,all,none,keep-locales,drop-locales,keep-docs,drop-docs,keep-cracklib,drop-cracklib,keep-i18n,drop-i18n,keep-zoneinfo,drop-zoneinfo,keep-rpmdb,drop-rpmdb,keep-yum-cache,drop-yum-cache,keep-services,drop-services,keep-sln,drop-sln,keep-ldconfig,drop-ldconfig \
24         -n febootstrap-minimize -- "$@"`
25 if [ $? != 0 ]; then
26     echo "febootstrap-minimize: problem parsing the command line arguments"
27     exit 1
28 fi
29 eval set -- "$TEMP"
30
31 set_all ()
32 {
33   keep_locales=no
34      keep_docs=no
35  keep_cracklib=no
36      keep_i18n=no
37  keep_zoneinfo=no
38     keep_rpmdb=no
39 keep_yum_cache=no
40  keep_services=no
41       keep_sln=no
42  keep_ldconfig=no
43 }
44
45 set_none ()
46 {
47   keep_locales=yes
48      keep_docs=yes
49  keep_cracklib=yes
50      keep_i18n=yes
51  keep_zoneinfo=yes
52     keep_rpmdb=yes
53 keep_yum_cache=yes
54  keep_services=yes
55       keep_sln=yes
56  keep_ldconfig=yes
57 }
58
59 set_all
60
61 usage ()
62 {
63     echo "Usage: febootstrap-minimize [--options] DIR"
64     echo "Please read febootstrap-minimize(8) man page for more information."
65 }
66
67 while true; do
68     case "$1" in
69         --all)
70             set_all
71             shift;;
72         --none)
73             set_none
74             shift;;
75         --keep-locales)
76             keep_locales=yes
77             shift;;
78         --drop-locales)
79             keep_locales=no
80             shift;;
81         --keep-docs)
82             keep_docs=yes
83             shift;;
84         --drop-docs)
85             keep_docs=no
86             shift;;
87         --keep-cracklib)
88             keep_cracklib=yes
89             shift;;
90         --drop-cracklib)
91             keep_cracklib=no
92             shift;;
93         --keep-i18n)
94             keep_i18n=yes
95             shift;;
96         --drop-i18n)
97             keep_i18n=no
98             shift;;
99         --keep-zoneinfo)
100             keep_zoneinfo=yes
101             shift;;
102         --drop-zoneinfo)
103             keep_zoneinfo=no
104             shift;;
105         --keep-rpmdb)
106             keep_rpmdb=yes
107             shift;;
108         --drop-rpmdb)
109             keep_rpmdb=no
110             shift;;
111         --keep-yum-cache)
112             keep_yum_cache=yes
113             shift;;
114         --drop-yum-cache)
115             keep_yum_cache=no
116             shift;;
117         --keep-services)
118             keep_services=yes
119             shift;;
120         --drop-services)
121             keep_services=no
122             shift;;
123         --keep-sln)
124             keep_sln=yes
125             shift;;
126         --drop-sln)
127             keep_sln=no
128             shift;;
129         --keep-ldconfig)
130             keep_ldconfig=yes
131             shift;;
132         --drop-ldconfig)
133             keep_ldconfig=no
134             shift;;
135         --help)
136             usage
137             exit 0;;
138         --)
139             shift
140             break;;
141         *)
142             echo "Internal error!"
143             exit 1;;
144     esac
145 done
146
147 if [ $# -lt 1 ]; then
148     usage
149     exit 1
150 fi
151
152 target="$1"
153
154 #----------------------------------------------------------------------
155
156 if [ ! -d "$target" ]; then
157     echo "febootstrap-minimize: $target: target directory not found"
158     exit 1
159 fi
160
161 #du -sh "$target"
162
163 if [ "$keep_locales" != "yes" ]; then
164     rm -f "$target"/usr/lib/locale/*
165     rm -rf "$target"/usr/share/locale
166     rm -rf "$target"/usr/lib*/gconv
167     rm -f "$target"/usr/bin/localedef
168     rm -f "$target"/usr/sbin/build-locale-archive
169 fi
170
171 if [ "$keep_docs" != "yes" ]; then
172     rm -rf "$target"/usr/share/man
173     rm -rf "$target"/usr/share/doc
174     rm -rf "$target"/usr/share/info
175 fi
176
177 if [ "$keep_cracklib" != "yes" ]; then
178     rm -rf "$target"/usr/share/cracklib
179 fi
180
181 if [ "$keep_i18n" != "yes" ]; then
182     rm -rf "$target"/usr/share/i18n
183 fi
184
185 if [ "$keep_zoneinfo" != "yes" ]; then
186     mv "$target"/usr/share/zoneinfo/{UCT,UTC,Universal,Zulu,GMT*,*.tab} \
187       "$target"
188     rm -rf "$target"/usr/share/zoneinfo/*
189     mv "$target"/{UCT,UTC,Universal,Zulu,GMT*,*.tab} \
190       "$target"/usr/share/zoneinfo/
191 fi
192
193 if [ "$keep_rpmdb" != "yes" ]; then
194     rm -rf "$target"/var/lib/rpm/*
195 fi
196
197 if [ "$keep_yum_cache" != "yes" ]; then
198     rm -rf "$target"/var/cache/yum/*
199 fi
200
201 if [ "$keep_services" != "yes" ]; then
202     rm -f "$target"/etc/services
203     cat > "$target"/etc/services <<'__EOF__'
204 tcpmux 1/tcp
205 tcpmux 1/udp
206 echo 7/tcp
207 echo 7/udp
208 discard 9/tcp sink null
209 discard 9/udp sink null
210 ftp 21/tcp
211 ftp 21/udp fsp fspd
212 ssh 22/tcp
213 ssh 22/udp
214 telnet 23/tcp
215 telnet 23/udp
216 smtp 25/tcp mail
217 smtp 25/udp mail
218 time 37/tcp timserver
219 time 37/udp timserver
220 nameserver 42/tcp name
221 nameserver 42/udp name
222 domain 53/tcp
223 domain 53/udp
224 bootps 67/tcp
225 bootps 67/udp
226 bootpc 68/tcp dhcpc
227 bootpc 68/udp dhcpc
228 tftp 69/tcp
229 tftp 69/udp
230 finger 79/tcp
231 finger 79/udp
232 http 80/tcp www www-http
233 http 80/udp www www-http
234 http 80/sctp
235 kerberos 88/tcp kerberos5 krb5
236 kerberos 88/udp kerberos5 krb5
237 pop3 110/tcp pop-3
238 pop3 110/udp pop-3
239 sunrpc 111/tcp portmapper rpcbind
240 sunrpc 111/udp portmapper rpcbind
241 auth 113/tcp authentication tap ident
242 auth 113/udp authentication tap ident
243 ntp 123/tcp
244 ntp 123/udp
245 imap 143/tcp imap2
246 imap 143/udp imap2
247 snmp 161/tcp
248 snmp 161/udp
249 snmptrap 162/tcp
250 snmptrap 162/udp snmp-trap
251 __EOF__
252 fi
253
254 if [ "$keep_sln" != "yes" ]; then
255     rm -f "$target"/sbin/sln
256 fi
257
258 if [ "$keep_ldconfig" != "yes" ]; then
259     rm -f "$target"/sbin/ldconfig
260     rm -f "$target"/etc/ld.so.cache
261     rm -rf "$target"/var/cache/ldconfig/*
262 fi