3 # (C) Copyright 2009 Red Hat Inc.
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.
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.
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.
19 # Written by Richard W.M. Jones <rjones@redhat.com>
25 --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,no-pack-executables,pack-executables \
26 -n febootstrap-minimize -- "$@"`
28 echo "febootstrap-minimize: problem parsing the command line arguments"
66 echo "Usage: febootstrap-minimize [--options] DIR"
67 echo "Please read febootstrap-minimize(8) man page for more information."
138 --no-pack-executables)
151 echo "Internal error!"
156 if [ $# -lt 1 ]; then
163 if [ ! -d "$target" ]; then
164 echo "febootstrap-minimize: $target: target directory not found"
168 # Create a temporary directory, make sure it gets cleaned up at the end.
173 rm -rf "$tmpdir" && exit $status
175 trap remove_tmpdir EXIT
177 #----------------------------------------------------------------------
179 # ***NOTE*** Wildcards cannot be passed to febootstrap-run.
181 if [ "$keep_locales" != "yes" ]; then
182 febootstrap-run "$target" -- rm -rf usr/lib/locale
183 febootstrap-run "$target" -- rm -rf usr/share/locale
184 febootstrap-run "$target" -- rm -rf usr/lib/gconv usr/lib64/gconv
185 febootstrap-run "$target" -- rm -f usr/bin/localedef
186 febootstrap-run "$target" -- rm -f usr/sbin/build-locale-archive
189 if [ "$keep_docs" != "yes" ]; then
190 febootstrap-run "$target" -- rm -rf usr/share/man
191 febootstrap-run "$target" -- rm -rf usr/share/doc
192 febootstrap-run "$target" -- rm -rf usr/share/info
193 febootstrap-run "$target" -- rm -rf usr/share/gnome/help
196 if [ "$keep_cracklib" != "yes" ]; then
197 febootstrap-run "$target" -- rm -rf usr/share/cracklib
200 if [ "$keep_i18n" != "yes" ]; then
201 febootstrap-run "$target" -- rm -rf usr/share/i18n
204 if [ "$keep_zoneinfo" != "yes" ]; then
205 mv "$target"/usr/share/zoneinfo/{UCT,UTC,Universal,Zulu,GMT*,*.tab} \
207 febootstrap-run "$target" -- rm -rf usr/share/zoneinfo
208 febootstrap-run "$target" -- mkdir -p --mode=0755 usr/share/zoneinfo
209 mv "$target"/{UCT,UTC,Universal,Zulu,GMT*,*.tab} \
210 "$target"/usr/share/zoneinfo/
213 if [ "$keep_rpmdb" != "yes" ]; then
214 febootstrap-run "$target" -- rm -rf var/lib/rpm
215 febootstrap-run "$target" -- mkdir -p --mode=0755 var/lib/rpm
218 if [ "$keep_yum_cache" != "yes" ]; then
219 febootstrap-run "$target" -- rm -rf var/cache/yum
220 febootstrap-run "$target" -- mkdir -p --mode=0755 var/cache/yum
223 if [ "$keep_services" != "yes" ]; then
224 # NB: Overwrite the same file so that we have the same inode,
225 # since fakeroot tracks files by inode number.
226 cat > "$target"/etc/services <<'__EOF__'
231 discard 9/tcp sink null
232 discard 9/udp sink null
241 time 37/tcp timserver
242 time 37/udp timserver
243 nameserver 42/tcp name
244 nameserver 42/udp name
255 http 80/tcp www www-http
256 http 80/udp www www-http
258 kerberos 88/tcp kerberos5 krb5
259 kerberos 88/udp kerberos5 krb5
262 sunrpc 111/tcp portmapper rpcbind
263 sunrpc 111/udp portmapper rpcbind
264 auth 113/tcp authentication tap ident
265 auth 113/udp authentication tap ident
273 snmptrap 162/udp snmp-trap
277 if [ "$keep_sln" != "yes" ]; then
278 febootstrap-run "$target" -- rm -f sbin/sln
281 if [ "$keep_ldconfig" != "yes" ]; then
282 febootstrap-run "$target" -- rm -f sbin/ldconfig
283 febootstrap-run "$target" -- rm -f etc/ld.so.cache
284 febootstrap-run "$target" -- rm -rf var/cache/ldconfig
285 febootstrap-run "$target" -- mkdir -p --mode=0755 var/cache/ldconfig
288 if [ "$pack_executables" = "yes" ]; then
289 # NB. Be careful to keep the same inode number, since fakeroot
290 # tracks files by inode number.
291 for path in $(find "$target" -type f -perm /111 |
294 awk -F: '{print $1}'); do
295 base=$(basename "$path")
297 (cd "$tmpdir" && upx -q -q --best "$base")
298 cat "$tmpdir"/"$base" > "$path"