#!/bin/bash if [ -z "$1" -o ! -d "$1" ]; then echo "$0: updates instimage from a Red Hat RPMS directory" echo "usage: $0 " exit 1 fi ARCH=`uname -m | sed -e 's/i.86/i386/'` if [ "$ARCH" = sparc64 ]; then exec sparc32 $0 $* fi HOMEDIR=`pwd` echo HOMEDIR $HOMEDIR # remove all non unused python files pythondeps() { DIR=$1 mkdir -p $DIR/proc mount -t proc /proc $DIR/proc if [ $ARCH = "sparc" ]; then mkdir $DIR/dev mknod $DIR/dev/openprom c 10 139 fi (chroot $DIR /usr/bin/anaconda -m dir://mnt/source --test --text --traceonly; \ cd $DIR; find usr/lib/python* usr/lib/anaconda -type f | sed 's,^,/,' ) | \ sort | uniq -u | sed s,^,./, | while read fn; do [ ! -d $DIR/$fn ] && rm $DIR/$fn done umount $DIR/proc rmdir $DIR/proc rm -rf $DIR/dev } SRC=$1/RedHat/RPMS cd ../trees/hdimage DEST=$PWD cd - mkdir -p ../../../RedHat/instimage cd ../../../RedHat/instimage DESTGR=$PWD cd - echo "DEST is $DEST" echo "DESTGR is $DESTGR" PACKAGES="glibc-2 ldconfig setup e2fsprogs-1 XFree86-libs XFree86-SVGA XFree86-S3 XFree86-S3V XFree86-Mach32 XFree86-Mach64 XFree86-FBDev XFree86-I128 XFree86-3DLabs XFree86-VGA16 XFree86-Sun XFree86-75dpi-fonts XFree86-100dpi-fonts XFree86-ISO8859-2 XFree86-cyrillic-fonts XFree86-3. xpm-3 glib- gtk+- gnome-libs python-1 newt imlib-1 libpng libtiff libjpeg- libtermcap-2 zlib rpm rpm-devel rpm-python ash- bash- pygtk- pygnome- util-linux procps esound-0 audiofile-0 kernel-pcmcia-cs Xconfigurator raidtools- locale-ja open- cpio- tar- fileutils- net-tools- grep- sed- mt-st- gzip- iputils- traceroute- sh-utils- textutils- pine- less- rsh- ncurses- popt mtools- ftp- readline- mount- modutils-" KEEPFILE=/tmp/keepfile.$$ cat > $KEEPFILE <> $KEEPFILEGR <> $KEEPFILEGR <<-EOF usr/X11R6/lib/X11/fonts/100dpi/cour* usr/X11R6/lib/X11/fonts/100dpi/helv* usr/X11R6/lib/X11/fonts/100dpi/tim* usr/X11R6/lib/X11/fonts/100dpi/fonts* usr/share/fonts/ISO8859-2/100dpi/cour* usr/share/fonts/ISO8859-2/100dpi/helv* usr/share/fonts/ISO8859-2/100dpi/tim* usr/share/fonts/ISO8859-2/100dpi/fonts* EOF fi for I in $PACKAGES; do for J in `ls $SRC/$I*`; do if [ "$I" != "rpm-devel" ]; then if ! echo $J | egrep "(devel|sparcv9)" > /dev/null; then RPMS="$RPMS $J" fi else RPMS="$RPMS $J" fi done done rm -rf $DEST; mkdir -p $DEST/usr/sbin rm -rf $DESTGR; mkdir -p $DESTGR/usr/sbin for n in $RPMS; do echo "expanding $n" rpm2cpio $n | (cd $DEST; cpio -E $KEEPFILE --quiet -iumd) rpm2cpio $n | (cd $DESTGR; cpio -E $KEEPFILEGR --quiet -iumd) done # XXX kludge, fix me rm -f $DEST/usr/lib/python1.5/site-packages/rpmmodule.so rm -f $DESTGR/usr/lib/python1.5/site-packages/rpmmodule.so if [ $ARCH = sparc ]; then rm -f $DESTGR/usr/X11R6/bin/XF86_VGA16 fi for I in $DESTGR/usr/X11R6/lib/X11/fonts/* $DESTGR/usr/share/fonts/ISO8859-2/*; do mkfontdir $I done rm -f $KEEPFILE $KEEPFILEGR make install-hd DESTDIR=$DEST > /dev/null make install DESTDIR=$DESTGR > /dev/null # clean collage out of larger image so we can use real commands like 'ls' for i in collage cat chmod df gunzip ln ls lsmod mkdir mknod umount mount rm uncpio; do rm -f $DESTGR/usr/bin/$i done for p in $DEST $DESTGR; do find $p -type d | xargs chmod 755 if [ -f $p/bin/bash ]; then rm -f $p/bin/ash ln -s bash $p/bin/sh else ln -s ash $p/bin/sh fi (cd $p/bin; tar cSpf - .) | (cd $p/usr/bin; tar xSpf -) (cd $p/sbin; tar cSpf - .) | (cd $p/usr/sbin; tar xSpf -) rm -rf $p/bin rm -rf $p/sbin rm -rf $p/boot $p/home $p/root $p/tmp cp /sbin/ldconfig $p # Must create ld.so.conf, because ldconfig does not cache # dirs specified on the command line. touch $p/etc/ld.so.conf [ -d $p/usr/X11R6/lib ] && echo /usr/X11R6/lib > $p/etc/ld.so.conf (cd $p; chroot $p ./ldconfig ) rm -f $p/ldconfig $p/etc/ld.so.conf for l in `find $p -exec file {} \; | sed -n 's/^\([^:]*\):.*ELF.*$/\1/p'`; do # Strip dwarf stuff, symbols and unneeded not-alloced sections strip $l -R .comment -R .note `objdump -h $l | \ sed -n 's/^.*\(\.gnu\.warning\.[^ ]*\) .*$/-R \1/p'` done find $p -name "*.a" | xargs rm -rf (cd /usr/share/zoneinfo; find . -type f -or -type l | grep '^./[A-Z]' | sort | sed 's/^..//' | gzip -9) > $p/usr/lib/timezones.gz done # always use passive mode for ftp installs cd $DEST/usr/lib/python1.5 patch -p0 < python1.5.cgz rm -rf python1.5 find anaconda | cpio --quiet -H crc -o | gzip -9 > anaconda.cgz rm -rf anaconda ls libnewt* libslang* | cpio --quiet -H crc -o | gzip -9 > slang-newt.cgz rm -f libnewt* libslang* cd $DEST/usr/bin echo python1.5 | cpio --quiet -H crc -o | gzip -9 > python1.5.cgz rm -f python python1.5 ln -s python1.5 python mv anaconda anaconda.real cd $DEST/lib ls libcom* libcrypt* libdl* libe2p* libext2* libm* libnss* libnsl* \ libpthread* libss* libtermcap* libuuid* \ | cpio --quiet -H crc -o | gzip -9 > libs.cgz rm -f libcom* libcrypt* libdl* libe2p* libext2* libm* libnss* libnsl* \ libpthread* libss* libtermcap* libuuid* cd $DEST/usr find X11R6 | cpio --quiet -H crc -o | gzip -9 > X11R6.cgz rm -rf X11R6 cd $DEST/usr/sbin ls [a-r]* | cpio --quiet -H crc -o | gzip -9 > sbin.cgz rm -f [a-r]* find $DEST/usr/share/locale -name \*.mo | xargs gzip -9 cp -a $HOMEDIR/anaconda-stub $DEST/usr/bin/anaconda