#!/bin/bash ORIGDIR=`pwd` COMPONENT="" if [ "$1" == "--comp" ]; then COMPONENT=$2 shift; shift fi if [ -z "$1" ]; then echo "upd-instroot: updates instimage from a Red Hat RPMS directory" echo "usage: $0 --comp <comp> <packagedir> [templatedir] [instroot]" exit 1 fi if [ ! -d $1 ]; then if [ -z "$ARCH" ]; then echo "ARCH must be set" >&2 exit 1 fi LATEST="latest --arch $ARCH" fi PACKAGEDIR=$1 if [ -z "$ARCH" ]; then ARCH=`rpm -qp --qf "%{ARCH}" $PACKAGEDIR/anaconda-runtime*.rpm` fi NEEDGR=yes prunePackageList() { PACKAGEPATH=$1 PACKAGES="$2" if [ -n "$LATEST" ]; then $LATEST $PACKAGEPATH $PACKAGES if [ $? != 0 ]; then $LATEST $PACKAGEPATH $PACKAGES >&2 kill -9 $$ fi return fi PATTERN="" PACKAGEFILES="" for PKG in $PACKAGES; do PATTERN="${PATTERN:+${PATTERN}|}(^$PKG )" PACKAGEFILES="$PACKAGEFILES $(ls $PACKAGEPATH/${PKG}*{${ARCH},noarch}.rpm 2>/dev/null)" done # gtk+, enough said PATTERN=$(echo $PATTERN | sed 's,[\+\*],\\&,g') PACKAGEFILES=$(ls $PACKAGEFILES | sort -u) rpm --qf "%{NAME} $PACKAGEPATH/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n" \ -qp $PACKAGEFILES | egrep "$PATTERN" | sed 's/.* //' } expandPackageSet() { RPMS=$1 PKGDEST=$2 KEEPFILES=$3 for n in $RPMS; do echo -ne "\rExpanding packages..." $(basename $n) if [ $(rpm -qp --qf '%{NAME}' $n) = "glibc-common" ] ; then GLIBC=$n fi rpm2cpio $n | (cd $PKGDEST; cpio -E $KEEPFILES --quiet -iumd) echo -ne "\rExpanding packages..." "$(basename $n | sed 's/./ /g')" done } if [ -z "$2" ]; then DEST=/tmp/upd-instroot else DEST=$2 fi if [ -z "$3" ]; then DESTGR=/tmp/upd-instroot else DESTGR=$3 fi rm -rf $DEST $DESTGR mkdir -p $DEST mkdir -p $DESTGR PACKAGES="glibc glibc-common setup openssl python python2 newt libtermcap zlib ash kon2 e2fsprogs util-linux raidtools popt mount procps rpm XFree86 Xconfigurator anaconda anaconda-runtime kudzu-devel kudzu hwdata db3 bzip2 bzip2-libs dosfstools pciutils reiserfs-utils parted busybox-anaconda rpm404-python anaconda-help booty hdparm lvm jfsutils librpm404 rhpl slang libxml2 libxml2-python" if [ $ARCH = i386 ]; then PACKAGES="$PACKAGES kernel-pcmcia-cs kernel-utils" fi if [ $ARCH = ia64 ]; then PACKAGES="$PACKAGES elilo slang" fi if [ $ARCH = s390 -o $ARCH = s390x ]; then PACKAGES="$PACKAGES s390utils oco binutils s390installer pdksh wget sed net-tools inetd openssh openssh-server fileutils modutils initscripts mount gawk xauth portmap textutils sh-utils telnet-server login ssh_keys" fi # xpm is missing # Some packages are listed twice, but that's okay PACKAGESGR="anaconda XFree86-libs imlib libpng libtiff libjpeg XFree86-S3 XFree86-SVGA XFree86-75dpi-fonts XFree86-ISO8859-2-75dpi-fonts glib2 gtk2 XFree86-ISO8859-9-75dpi-fonts esound audiofile libgnome XFree86-100dpi-fonts fonts-ISO8859-2 fonts-ISO8859-9 XFree86-xfs e2fsprogs fileutils glibc glibc-common rsh less ftp readline gzip popt specspo util-linux rpm librpm404 open grep net-tools traceroute tar procps textutils sed ncurses bash cpio mt-st iputils sh-utils XFree86 Xconfigurator gnome-python2 pygtk2 gdk-pixbuf XFree86-KOI8-R XFree86-KOI8-R-75dpi-fonts pciutils pam reiserfs-utils atk pango freetype gnome-python2-canvas libgnomecanvas libart_lgpl vte anaconda-images anaconda-help hdparm XFree86-base-fonts ttfonts-ko taipeifonts XFree86-ISO8859-15-75dpi-fonts rhpl redhat-config-keyboard Xft fontconfig expat redhat-artwork ttfonts-ja ttfonts-zh_CN ttfonts-zh_TW" if [ -z "$NEEDGR" ]; then PACKAGESGR="bash" fi PACKAGES="$PACKAGES db1 db2" if [ $ARCH != ia64 ]; then PACKAGESGR="$PACKAGESGR mtools pine modutils" fi if [ $ARCH = sparc ]; then PACKAGESGR="$PACKAGESGR XFree86-3DLabs XFree86-Mach64 tilo silo" fi if [ $ARCH = i386 ]; then PACKAGESGR="$PACKAGESGR XFree86-3DLabs XFree86-8514 XFree86-AGX XFree86-FBDev XFree86-I128 XFree86-Mach32 XFree86-Mach64 XFree86-Mach8 XFree86-Mono XFree86-P9000 XFree86-S3 XFree86-S3V XFree86-SVGA XFree86-VGA16 XFree86-W32 syslinux" fi if [ $ARCH = alpha ]; then PACKAGESGR="$PACKAGESGR XFree86-3DLabs XFree86-Mono XFree86-P9000 XFree86-S3 XFree86-SVGA aboot" fi if [ $ARCH = ia64 ]; then PACKAGESGR="$PACKAGESGR elilo slang" fi if [ $ARCH = s390 -o $ARCH = s390x ]; then PACKAGESGR="$PACKAGESGR s390utils oco binutils s390installer pdksh sed net-tools inetd openssh openssh-server fileutils login wget initscripts xauth modutils portmap textutils openssl telnet-server strace ssh_keys" fi KEEPFILE=/tmp/keepfile.$$ cat > $KEEPFILE <<EOF boot/efi/elilo.efi boot/efi/efi/boot/bootia64.efi bin/ash bin/fdisk* bin/mkfs* etc/group etc/nsswitch.conf etc/passwd etc/protocols etc/services lib/ld-* lib/libc* lib/libcom_err* lib/libcrypt* lib/libdb-* lib/libdb-3.0 lib/libdb.so.2 lib/libdb.so.3 lib/libdb1* lib/libdl* lib/libe2p* lib/libext2fs* lib/liblvm-10.so* lib/libm[-.]* lib/libnsl* lib/libnss_dns* lib/libnss_files* lib/libpthread* lib/libresolv* lib/librt[-.]* lib/libss* lib/libtermcap* lib/libutil* lib/libuuid* sbin/badblocks sbin/clock sbin/debugfs sbin/e2fsadm sbin/e2label sbin/fdisk sbin/hdparm sbin/hwclock sbin/ldconfig sbin/lvchange sbin/lvcreate sbin/lvdisplay sbin/lvextend sbin/lvmchange sbin/lvmcreate_initrd sbin/lvmdiskscan sbin/lvmsadc sbin/lvmsar sbin/lvreduce sbin/lvremove sbin/lvrename sbin/lvscan sbin/mkdosfs sbin/mke2fs sbin/busybox.anaconda sbin/mkfs.ext2 sbin/mkfs.ext3 sbin/mkfs.jfs sbin/mkfs.msdos sbin/mkfs.vfat sbin/mkreiserfs sbin/mkraid sbin/mkswap sbin/parted sbin/pvchange sbin/pvcreate sbin/pvdata sbin/pvdisplay sbin/pvmove sbin/pvscan sbin/probe sbin/sfdisk sbin/tune2fs sbin/vgcfgbackup sbin/vgcfgrestore sbin/vgchange sbin/vgck sbin/vgcreate sbin/vgdisplay sbin/vgexport sbin/vgextend sbin/vgimport sbin/vgmerge sbin/vgmknodes sbin/vgreduce sbin/vgremove sbin/vgrename sbin/vgscan sbin/vgsplit usr/X11R6/lib/X11/Cards usr/X11R6/share/Xconfigurator/MonitorsDB usr/bin/python usr/bin/python2.2 usr/lib/anaconda-runtime/* usr/lib/anaconda/* usr/lib/anaconda/installclasses/* usr/lib/anaconda/textw/* usr/lib/booty/* usr/lib/gconv/ISO8859-1.so usr/lib/gconv/gconv-modules usr/lib/libssl* usr/lib/libcrypto* usr/lib/libbz2* usr/lib/libdb.so.2 usr/lib/libdb.so.3 usr/lib/libdb1* usr/lib/libnewt* usr/lib/libparted* usr/lib/libpopt* usr/lib/librpm-*4.0.4.so* usr/lib/librpmdb*4.0.4.so* usr/lib/librpmio*4.0.4.so* usr/lib/libslang* usr/lib/libxml2.so* usr/lib/libz.* usr/lib/python2.2/* usr/lib/python2.2/site-packages/libxml2* usr/lib/python2.2/site-packages/*vte* usr/lib/python2.2/site-packages/*kudzu* usr/lib/python2.2/site-packages/rpmmodule.so usr/lib/python2.2/site-packages/partedmodule.so usr/lib/python2.2/site-packages/rhpl usr/lib/rpm/macros usr/lib/rpm/rpmpopt usr/lib/rpm/rpmrc usr/share/locale/*/LC_MESSAGES/anaconda.mo usr/sbin/anaconda usr/sbin/ddcprobe usr/sbin/dmidecode usr/share/anaconda/locale-list usr/share/anaconda/anaconda.conf usr/share/terminfo/l/linux usr/share/doc/kon2*/terminfo.kon usr/share/hwdata/pcitable usr/share/hwdata/pci.ids usr/share/hwdata/Cards usr/share/hwdata/MonitorsDB usr/share/rhpl/extramodes usr/share/rhpl/vesamodes EOF if [ $ARCH = s390 -o $ARCH = s390x ]; then cat >> $KEEPFILE <<EOF linuxrc usr/share/terminfo/a/ansi usr/share/terminfo/d/dumb usr/share/terminfo/s/screen usr/share/terminfo/v/vt100 usr/share/terminfo/v/vt102 usr/share/terminfo/x/xterm usr/share/terminfo/x/xterm-color usr/bin/strace usr/bin/ldd usr/bin/wget usr/bin/printf usr/bin/dasdformat usr/bin/formatmnt usr/bin/mountpoint usr/bin/netsetup usr/bin/pkgselect usr/bin/pkgsrc usr/sbin/chroot usr/sbin/sshd usr/sbin/glibc_post_upgrade usr/sbin/inetd usr/sbin/in.telnetd sbin/busybox.anaconda sbin/consoletype sbin/rhsetup sbin/ifconfig sbin/route sbin/portmap sbin/fdasd sbin/dasdfmt sbin/swapon sbin/swapoff sbin/mkswap sbin/tune2fs bin/dd bin/gawk-3.1.0 bin/mknod bin/login bin/ksh bin/cat bin/chmod bin/sed bin/sort bin/mount bin/umount bin/rpm lib/libpam.so* lib/libdl.so* lib/libdl-*.so* usr/lib/libz.so* lib/libnsl.so* lib/libnsl-*.so* lib/libnss* lib/libutil.so* lib/libutil-*.so* lib/libcrypt* lib/libc.so* lib/libc-*so* lib/ld.so* lib/ld-*.so* lib/libresolv.so* lib/libresolv-*.so* lib/libvtoc*.so* lib/modules/ibm* etc/inetd.conf etc/ssh/* etc/motd etc/issue.net usr/X11R6/bin/xauth EOF fi KEEPFILEGR=/tmp/keepfilegr.$$ cp $KEEPFILE $KEEPFILEGR cat >> $KEEPFILEGR <<EOF boot/efi/elilo.efi boot/efi/efi/boot/bootia64.efi bin/bash bin/cat bin/chmod bin/cp bin/cpio bin/dd bin/df bin/du bin/grep bin/gunzip bin/gzip bin/ln bin/ls bin/mkdir bin/mt bin/mv bin/ping bin/ps bin/rm bin/rpm bin/sed bin/sync bin/tar bin/touch bin/umount bin/zcat boot/*.b boot/bootlx etc/gtk-2.0/gtkrc* etc/im_palette.pal etc/imrc etc/pango/* etc/fonts/* lib/libnss_dns* lib/libpam* lib/libproc* sbin/depmod sbin/debugfs sbin/e2fsck sbin/e2label sbin/reiserfsck sbin/fsck sbin/fsck.ext2 sbin/fsck.ext3 sbin/fsck.jfs sbin/ifconfig sbin/insmod sbin/lsmod sbin/lspci sbin/modprobe sbin/parted sbin/rmmod sbin/route sbin/silo sbin/tune2fs usr/X11R6/bin/XF86_3DLabs usr/X11R6/bin/XF86_FBDev usr/X11R6/bin/XF86_I128 usr/X11R6/bin/XF86_Mach32 usr/X11R6/bin/XF86_Mach64 usr/X11R6/bin/XF86_S3 usr/X11R6/bin/XF86_S3V usr/X11R6/bin/XF86_SVGA usr/X11R6/bin/XF86_TGA usr/X11R6/bin/XF86_VGA16 usr/X11R6/bin/XFree86 usr/X11R6/bin/Xsun usr/X11R6/bin/Xsun24 usr/X11R6/bin/XsunMono usr/X11R6/bin/Xtest usr/X11R6/bin/setxkbmap usr/X11R6/bin/xsetroot usr/X11R6/lib/X11/XKeysymDB usr/X11R6/lib/X11/fonts/misc/6x13* usr/X11R6/lib/X11/fonts/misc/fonts* usr/X11R6/lib/X11/fonts/misc/cursor* usr/X11R6/lib/X11/fonts/misc/olcursor* usr/X11R6/lib/X11/fonts/Type1/l047013t* usr/X11R6/lib/X11/fonts/Type1/* usr/X11R6/lib/X11/locale/* usr/X11R6/lib/X11/rgb* usr/X11R6/lib/X11/xkb/* usr/X11R6/lib/X11/xserver/SecurityPolicy usr/X11R6/lib/libICE* usr/X11R6/lib/libSM* usr/X11R6/lib/libX11* usr/X11R6/lib/libXext* usr/X11R6/lib/libXft* usr/X11R6/lib/libXi* usr/X11R6/lib/libXmu* usr/X11R6/lib/libXpm* usr/X11R6/lib/libXrender* usr/X11R6/lib/libXt* usr/X11R6/lib/modules/* usr/X11R6/share/Xconfigurator/pixmaps/* usr/bin/chattr* usr/bin/ftp usr/bin/gtk-query* usr/bin/head usr/bin/less usr/bin/lsattr* usr/bin/maketilo usr/bin/mattrib usr/bin/mbadblocks usr/bin/mcd usr/bin/mcopy usr/bin/mdel usr/bin/mdeltree usr/bin/mdir usr/bin/mdu usr/bin/mformat usr/bin/minfo usr/bin/mlabel usr/bin/mmd usr/bin/mmount usr/bin/mmove usr/bin/mpartition usr/bin/mrd usr/bin/mread usr/bin/mren usr/bin/mshowfat usr/bin/mtools usr/bin/mtype usr/bin/mwrite usr/bin/mzip usr/bin/open usr/bin/pango* usr/bin/pico usr/bin/rcp usr/bin/rlogin usr/bin/rsh usr/bin/syslinux usr/bin/tac usr/bin/tail usr/bin/tilo usr/bin/uniq usr/lib/anaconda/iw usr/lib/gconv/* usr/lib/gdk-pixbuf/loaders/*png* usr/lib/gdk-pixbuf/loaders/*la* usr/lib/gdkimlib* usr/lib/gtk-2.0/*/engines/libwonderland.so usr/lib/gtk-2.0/*/loaders/*png* usr/lib/gtk-2.0/*/loaders/*la* usr/lib/gtk-2.0/immodules/ usr/lib/libImlib* usr/lib/libXft* usr/lib/libart* usr/lib/libatk* usr/lib/libaudio* usr/lib/libesd* usr/lib/libexpat* usr/lib/libfontconfig* usr/lib/libfreetype* usr/lib/libgdk* usr/lib/libglib* usr/lib/libgmodule* usr/lib/libgnome* usr/lib/libgnomesupport* usr/lib/libgnomeui* usr/lib/libgnorba* usr/lib/libgnorbagtk* usr/lib/libgobject* usr/lib/libgthread* usr/lib/libgtk* usr/lib/libgtkxmhtml* usr/lib/libimlib-png* usr/lib/libimlib-pnm* usr/lib/libimlib-xpm* usr/lib/libjpeg* usr/lib/libncurses* usr/lib/libpango* usr/lib/libpng.so.3* usr/lib/libpng12* usr/lib/libreadline* usr/lib/libthread* usr/lib/libtiff* usr/lib/libvte* usr/lib/locale/* usr/lib/pango/* usr/lib/rpm/rpmpopt usr/lib/syslinux/* usr/sbin/chroot usr/sbin/ddcprobe usr/sbin/gnome-pty-helper usr/sbin/traceroute usr/share/anaconda/* usr/share/fonts/default/Type1/n019003l* usr/share/fonts/default/Type1/n019004l* usr/share/fonts/default/Type1/n019023l* usr/share/fonts/default/Type1/n019024l* usr/share/fonts/default/Type1/n021003l* usr/share/fonts/default/Type1/n021004l* usr/share/fonts/default/Type1/n021023l* usr/share/fonts/default/Type1/n021024l* usr/share/fonts/ko/TrueType/dotum.ttf usr/share/fonts/ja/TrueType/kochi-gothic.ttf usr/share/fonts/zh_CN/TrueType/gkai00mp.ttf usr/share/fonts/zh_TW/TrueType/bsmi00lp.ttf usr/share/locale/* usr/share/pixmaps/gnome-default-dlg.png usr/share/pixmaps/gnome-error.png usr/share/pixmaps/gnome-info.png usr/share/pixmaps/gnome-question.png usr/share/pixmaps/gnome-warning.png usr/share/pixmaps/no.xpm usr/share/pixmaps/yes.xpm usr/share/redhat-config-keyboard/* usr/share/terminfo/l/linux usr/share/terminfo/x/xterm usr/share/terminfo/k/kon usr/share/themes/Wonderland/gtk-2.0/* usr/share/vte/termcap/xterm usr/share/zoneinfo/zone.tab EOF TIMEZONES=" usr/share/zoneinfo/US usr/share/zoneinfo/Europe usr/share/zoneinfo/Japan usr/share/zoneinfo/America " # sparc needs 100dpi fonts as well, otherwise # things look ugly if [ $ARCH = sparc ]; then cat >> $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 echo "Assembling package list..." RPMS=$(prunePackageList $PACKAGEDIR "$PACKAGES") RPMSGR=$(prunePackageList $PACKAGEDIR "$PACKAGESGR") rm -rf $DEST; mkdir -p $DEST/usr/sbin rm -rf $DESTGR; mkdir -p $DESTGR/usr/sbin $DESTGR/var/lib ln -s /tmp $DESTGR/var/lib/xkb for file in $KEEPFILE $KEEPFILEGR; do cat $file | awk '{print $1 "\n./" $1}' > $file- mv -f $file- $file done echo -n "Expanding packages..." expandPackageSet "$RPMS" $DEST $KEEPFILE (cd $DEST; tar cSpf - .) | (cd $DESTGR; tar xSpf -) expandPackageSet "$RPMSGR" $DESTGR $KEEPFILEGR echo -e "\rExpanding packages..." if [ -f $DEST/usr/share/doc/kon2*/terminfo.kon ]; then tic $DEST/usr/share/doc/kon2*/terminfo.kon -o $DEST/usr/share/terminfo tic $DEST/usr/share/doc/kon2*/terminfo.kon -o $DESTGR/usr/share/terminfo rm $DEST/usr/share/doc/kon2*/terminfo.kon fi echo "retrieving timezones" TZDIR=/tmp/glibc-timezone-$$ mkdir -p $TZDIR/usr/share/zoneinfo rpm2cpio $GLIBC | (cd $TZDIR; cpio --quiet -iumd usr/share/zoneinfo ./usr/share/zoneinfo ./usr/share/zoneinfo/* usr/share/zoneinfo/*) (cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DEST; tar xSpf -) (cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DESTGR; tar xSpf -) rm -rf $TZDIR chown -R root:root $DEST $DESTGR chmod -R a+rX-w $DEST $DESTGR if [ $ARCH = s390 -o $ARCH = s390x ]; then for i in $DEST $DESTGR; do (cd $i/etc/ssh; chmod og-r ssh_host*key primes sshd_config) mv $i/bin/sed $i/bin/sed_save mv $i/bin/mount $i/bin/mount_save mv $i/bin/sort $i/bin/sort_save mv $i/bin/mknod $i/bin/mknod_save done fi if [ $ARCH = sparc ]; then rm -f $DESTGR/usr/X11R6/bin/XF86_VGA16 fi # Remove locales unused during the install cat $DESTGR/usr/lib/anaconda/lang-table* | awk ' { print $5; print gensub(/\..*$/,"","",$5); print gensub(/_.*$/,"","",$5); if (split ($5, a, "\.") > 1) { print gensub(/\..*$/,tolower("." a[2]),"",$5); }; } ' | LC_ALL=C sort -u > $DESTGR/locales for p in lib share; do ( cd $DESTGR/usr/$p/locale && { ls | grep -v locale.alias | LC_ALL=C sort > $DESTGR/locales.list LC_ALL=C comm -13 $DESTGR/locales $DESTGR/locales.list | xargs rm -rf } ); done rm -f $DESTGR/locales $DESTGR/locales.list # Remove unneeded XFree86 modules rm -rf $DESTGR/usr/X11R6/lib/modules/dri rm -f $DESTGR/usr/X11R6/lib/modules/extensions/lib{GLcore,glx,pex5}* echo "Running mkfontdir..." if [ -n "$NEEDGR" ]; then /usr/X11R6/bin/mkfontdir -p /usr/X11R6/lib/X11/fonts/encodings/ -e $DESTGR/usr/X11R6/lib/X11/fonts/encodings $DESTGR/usr/X11R6/lib/X11/fonts/* $DESTGR/usr/share/fonts/ISO8859-2/* $DESTGR/usr/share/fonts/ISO8859-9/* rm -f $DESTGR/usr/X11R6/bin/mkfontdir fi echo "Getting pango modules" if [ -n "$NEEDGR" ]; then if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then REALPATH=`(cd $DESTGR; /bin/pwd | sed 's,/md1/,/,g')` runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/lib:$LD_LIBRARY_PATH /usr/sbin/chroot $REALPATH /usr/bin/pango-querymodules 2> $REALPATH/etc/pango/pango.modules" else /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules > $DESTGR/etc/pango/pango.modules fi rm -f $DESTGR/usr/bin/pango-querymodules fi echo "Getting gtk2 input method modules" if [ -n "$NEEDGR" ]; then if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then REALPATH=`(cd $DESTGR; /bin/pwd | sed 's,/md1/,/,g')` runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/lib:$LD_LIBRARY_PATH /usr/sbin/chroot $REALPATH /usr/bin/gtk-query-immodules-2.0 2> $REALPATH/etc/gtk-2.0/gtk.immodules" else /usr/sbin/chroot $DESTGR /usr/bin/gtk-query-immodules-2.0 > $DESTGR/etc/gtk-2.0/gtk.immodules fi rm -f $DESTGR/usr/bin/gtk-query-immodules-2.0 fi rm -f $KEEPFILE $KEEPFILEGR echo -n "Scrubbing trees..." for p in $DEST $DESTGR; do echo -n -e "\rScrubbing trees..." "$p" ln -s ../lib/anaconda/raidstart-stub $p/usr/bin/raidstart ln -s ../lib/anaconda/raidstop-stub $p/usr/bin/raidstop ln -s ../lib/anaconda/losetup-stub $p/usr/bin/losetup ln -s ../lib/anaconda/pump-stub $p/usr/bin/pump mv $p/usr/sbin/anaconda $p/usr/bin/anaconda mv $p/usr/lib/anaconda-runtime/lib* $p/usr/lib mv $p/usr/lib/anaconda-runtime/collage $p/usr/bin 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; find) | (cd $p/bin; /bin/cpio --quiet -pdmu $p/usr/bin) (cd $p/sbin; find) | (cd $p/sbin; /bin/cpio --quiet -pdmu $p/usr/sbin) rm -rf $p/bin rm -rf $p/sbin # copy bootloader files for sparc if [ $ARCH = sparc -a $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot (cd $p/boot; find -name "*.b") | (cd $p/boot; /bin/cpio --quiet -pdmu $p/usr/lib/anaconda-runtime/boot) fi # copy bootloader file for alpha if [ $ARCH = alpha -a $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot cp -af $p/boot/bootlx $p/usr/lib/anaconda-runtime/boot fi # copy bootloader files for ia64 if [ $ARCH = ia64 -a $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot cp -af $p/boot/efi/* $p/usr/lib/anaconda-runtime/boot fi rm -rf $p/boot $p/home $p/root $p/tmp find $p -name "*.a" | grep -v "usr/X11R6/lib/modules" | xargs rm -rf find $p -name "lib*.la" |grep -v "usr/lib/gtk-2.0" | xargs rm -rf for f in newt popt rpm rpmio; do rm -f $p/usr/lib/lib$f.so done if [ "$ARCH" != "s390" -a "$ARCH" != "s390x" ]; then (cd $p/lib; rm -f libnss_files.so.1 libnss_dns.so.1) fi (cd /usr/share/zoneinfo; find . -type f -or -type l | grep '^./[A-Z]' | sort | sed 's/^..//' | gzip -9) > $p/usr/lib/timezones.gz if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then REALPATH=`(cd $p; /bin/pwd | sed 's,/md1/,/,g')` runroot $COMPONENT --onlyone --arch $ARCH "cd $REALPATH\; usr/lib/anaconda-runtime/scrubtree $REALPATH" else $p/usr/lib/anaconda-runtime/scrubtree $p fi echo -n -e "\rScrubbing trees..." "$(echo $p | sed 's/./ /g')" done echo -e "\nCompressing .mo files in stage2 images..." if [ -d $DEST/usr/share/locale ]; then for i in `find $DEST/usr/share/locale -name anaconda.mo`; do gzip -9 $i mv -f $i.gz $i done fi if [ $ARCH = "alpha" ]; then rm -rf $DEST/usr/share/locale rm -rf $DEST/usr/lib/locale fi echo "Patching python library..." # always use passive mode for ftp installs cd $DEST/usr/lib/python2.2 patch -p0 > /dev/null <<EOF --- urllib.py.orig Thu Oct 25 17:05:06 2001 +++ urllib.py Thu Oct 25 17:05:34 2001 @@ -453,6 +453,7 @@ path, attrs = splitattr(path) path = unquote(path) dirs = path.split('/') + dirs[0] = '/' + dirs[0] dirs, file = dirs[:-1], dirs[-1] if dirs and not dirs[0]: dirs = dirs[1:] if dirs and not dirs[0]: dirs[0] = '/' @@ -707,6 +708,7 @@ self.ftp = ftplib.FTP() self.ftp.connect(self.host, self.port) self.ftp.login(self.user, self.passwd) + self.ftp.set_pasv(1) for dir in self.dirs: self.ftp.cwd(dir) EOF cd - echo -n -e "Removing unused python files in hdimage... " if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then REALPATH=`(cd $DEST; /bin/pwd | sed 's,/md1/,/,g')` runroot $COMPONENT --onlyone --arch $ARCH "cd $REALPATH\; usr/lib/anaconda-runtime/pythondeps $REALPATH" else $DEST/usr/lib/anaconda-runtime/pythondeps $DEST fi echo "done." for p in $DEST $DESTGR; do find $p -name "*.py" | while read fn; do rm -f ${fn}o if [ $p = $DEST ]; then rm -f ${fn}c ln -sf /dev/null ${fn}c fi done done # this is only for the minimal second stage echo "Cleaning ramdisk install images..." rm -rf $DEST/usr/lib/anaconda-runtime if [ "$ARCH" != "s390" -a "$ARCH" != "s390x" ]; then if [ $NEEDGR ]; then # Xserver needs a place to put the compiled xkb maps. rm -rf $DESTGR/usr/X11R6/lib/X11/xkb/compiled ln -s /tmp $DESTGR/usr/X11R6/lib/X11/xkb/compiled fi if [ -n "$NEEDGR" ]; then cd $ORIGDIR $DESTGR/usr/lib/anaconda-runtime/checkcards.py $DESTGR/usr/share/hwdata/pcitable $DESTGR/usr/X11R6/lib/X11/Cards fi fi