#!/bin/bash

ORIGDIR=`pwd`
DEBUG=""
NEEDGR=yes

if [ "$1" == "--debug" ]; then
    DEBUG="--debug"
    shift
fi

if [ "$1" == "--nogr" ]; then
    NEEDGR=""
    shift
fi

if [ -z "$1" ]; then
	echo "upd-instroot: updates instimage from a Red Hat RPMS directory"
	echo "usage:        $0 <packagedir> [templatedir] [instroot]"
	exit 1
fi

if [ ! -d $1 ]; then
	if [ -z "$ARCH" ]; then
		echo "ARCH must be set" >&2
		exit 1
	fi
fi

PACKAGEDIR=$1

if [ -z "$ARCH" ]; then
	ARCH=`rpm --nodigest --nosignature -qp --qf "%{ARCH}" $PACKAGEDIR/anaconda-runtime*.rpm`
fi

if [ $ARCH = x86_64 -o $ARCH = s390x -o $ARCH = ppc64 ]; then
    LIBDIR=lib64
else
    LIBDIR=lib
fi


prunePackageList() {
	PACKAGEPATH=$1
	PACKAGES="$2"

	PATTERN=""
	PACKAGEFILES=""
#CJS added code to look in PACKAGEPATH if did not find exact rpm in 
# <site>/$SITERPMDIR .  Case is where something like rpm-* find something other
# than what we are looking for such as rpm-analyzer, but rpm-4* is not in
# <site>/SITERPMDIR .  The first find finds something but not what
# we want,  before this code it would just go to next item, this code goes and
# looks in <default>/RPMS if specific item is not found
	for PKG in $PACKAGES; do
            SITEPATH=`dirname $PACKAGEPATH`
            if [  -d $SITEPATH/$SITERPMDIR/ ]; then 
	        path=$SITEPATH/$SITERPMDIR/
	        this=$(ls $path/${PKG}*{${ARCH},noarch}.rpm 2>/dev/null)
#  	        this=$(ls $path/${PKG}[.-]*{${ARCH},noarch}.rpm 2>/dev/null)
  	    fi
	    myi=0
           while [ $myi -lt 2 ]
	   do
  	    if [ -z "$this" ]; then
	    	path=$PACKAGEPATH
		this=$(ls $path/${PKG}[.-]*{${ARCH},noarch}.rpm 2>/dev/null)
  	    fi
	    if [ -z "$this" ]; then
 		MYRESULT=""
		myi=2
		continue
#		echo "Did not find $PKG"
	    else 
	       # libstdc++, enough said
	       PATTERN=$(echo $PKG | sed 's,[\+\*],\\&,g')
	       if [ $PATTERN = "krb5-libs-1" ]; then
		  PATTERN="krb5-libs"
	       fi
#	       PACKAGEFILES="$PACKAGEFILES $(rpm --nodigest --nosignature -qp $this --qf "%{NAME} $path/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n"  | egrep "(^$PATTERN )" | sed 's/.* //')"
	       MYRESULT=`rpm --nodigest --nosignature -qp $this --qf "%{NAME} $path/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n"  | egrep "(^$PATTERN )" | sed 's/.* //'`
	       if [ -z "$MYRESULT" ]; then
	         this="" 
		 myi=`expr $myi + 1`
	       else
		 myi=2
               fi
	    fi
	  done  # of while loop
          PACKAGEFILES="$PACKAGEFILES $MYRESULT"
  	done  # of for loop
  
	ls -1 $PACKAGEFILES |sort -u
#CJS end of change
}

expandPackageSet() {
    RPMS=$1
    PKGDEST=$2
    KEEPFILES=$3

    [ -d $PKGDEST ] || die "ERROR: directory missing: $PKGDEST"
    for n in $RPMS; do 
	[ -n "$DEBUG" ] && echo -e "\rExpanding packages..." $(basename $n)
	rpm2cpio $n | (cd $PKGDEST; cpio -E $KEEPFILES --quiet -iumd)
	[ -n "$DEBUG" ] && echo -e "\rExpanding packages..." "$(basename $n | sed 's/./ /g')"
    done
    pushd $PKGDEST/$LIBDIR >/dev/null 2>&1
    if [ -d obsolete/linuxthreads/ ]; then
	for x in obsolete/linuxthreads/*-* ; do 
	    lib_base=$(basename $x | cut -d- -f1)
	    rm -f ./$lib_base[.-]*
	    mv -f obsolete/linuxthreads/$lib_base[.-]* .
	done
	rmdir obsolete/linuxthreads obsolete
    fi
    popd >/dev/null 2>&1
}

die () {
    echo "$@"
    echo "Aborting instroot creation..."
    exit 1
}

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 python-libs newt slang libselinux
	 libsepol libtermcap zlib ash e2fsprogs util-linux raidtools popt
	 procps rpm rpm-libs XFree86 Xconfigurator anaconda tzdata
	 anaconda-runtime kudzu hwdata bzip2 beecrypt mdadm libsemanage
	 bzip2-libs dosfstools pciutils reiserfs-utils parted sed
	 busybox rpm-python booty hdparm lvm2 beecrypt device-mapper
	 rhpl pyxf86config libxml2 libxml2-python glib2 sqlite neon
	 elfutils-libelf krb5-libs convertdb1 jfsutils audit-libs pam
	 xfsprogs xfsdump dmapi libacl libattr attr acl python-urlgrabber
	 policy policycoreutils pyparted xorg-x11 selinux-policy-targeted
	 libstdc++ expat libgcc readline ncurses yum python-sqlite
	 python-elementtree pykickstart e2fsprogs-libs iscsi-initiator-utils
	 db4 rhpxl xorg-x11-server-Xorg libuser system-config-date
         yum-metadata-parser gfs-utils kmod-gfs gfs2-utils libvolume_id
         rhel-instnum yum-kmod libdhcp libnl libdhcp6client libdhcp4client
         device-mapper-multipath
	 kpartx dmraid python-pyblock mkinitrd libbdevid libbdevid-python
	 libselinux-python nss udev keyutils-libs nspr python-iniparse
	 cryptsetup-luks e4fsprogs fipscheck fipscheck-lib libdrm libmlx4
	 subscription-manager python-dmidecode python-ethtool
	 python-rhsm python-simplejson PyXML m2crypto portmap"

if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
    PACKAGES="$PACKAGES pcmciautils"
fi

if [ $ARCH = i386 -o $ARCH = x86_64 -o $ARCH = ia64 ]; then
    PACKAGES="$PACKAGES dmidecode"
fi

if [ $ARCH = ia64 ]; then
    PACKAGES="$PACKAGES elilo"
fi

if [ $ARCH = s390 -o $ARCH = s390x ]; then
    PACKAGES="$PACKAGES s390utils binutils libgcc tcp_wrappers
              sed net-tools xinetd openssl openssh openssh-server coreutils
              login initscripts XFree86-xauth bash pam 
              telnet-server login mount grep modutils gawk
              XFree86-libs strace xorg-x11-xauth xorg-x11-libs"
fi

if [ $ARCH = ppc -o $ARCH = ppc64 ]; then
    PACKAGES="$PACKAGES pcmciautils pdisk yaboot hfsutils"
fi

# xpm is missing

# Some packages are listed twice, but that's okay
#
# The packages in this list are needed for the graphical installer to run
# 
# Extra stuff we want for rescue mode should go in PACKAGESRESCUE
#
PACKAGESGR="anaconda XFree86-libs libpng XFree86-75dpi-fonts
           XFree86-ISO8859-2-75dpi-fonts gtk2 libglade2
           XFree86-ISO8859-9-75dpi-fonts  
           XFree86-100dpi-fonts fonts-ISO8859-2 fonts-ISO8859-9
           XFree86-xfs e2fsprogs coreutils glibc glibc-common
           popt specspo util-linux rpm rpm-libs tzdata
           procps bash cpio gpm pygtk2-libglade pygobject2
           XFree86 Xconfigurator pygtk2 gdk-pixbuf 
           XFree86-KOI8-R XFree86-KOI8-R-75dpi-fonts libpixman
           reiserfs-utils atk pango freetype gnome-python2-canvas cairo
           libgnomecanvas libart_lgpl libgcc libacl libattr libstdc++ expat
           anaconda-images anaconda-help XFree86-base-fonts
           ttfonts-ko taipeifonts XFree86-ISO8859-15-75dpi-fonts rhpl
           system-config-keyboard Xft fontconfig gtk2-engines gnome-themes
           gtkhtml2 gnome-python2-gtkhtml2 gail
           ttfonts-ja ttfonts-zh_TW bitmap-fonts-cjk urw-fonts fonts-arabic
           comps-extras XFree86-libs-data convertdb1 fonts-bengali
           vnc-server libjpeg tcp_wrappers system-config-date
           xfsprogs xfsdump dmapi attr acl policy policycoreutils
           selinux-policy-targeted ttfonts-zh_CN redhat-artwork
           xorg-x11-libs xorg-x11-ISO8859-2-75dpi-fonts
           xorg-x11-ISO8859-9-75dpi-fonts xorg-x11-100dpi-fonts
           xorg-x11-xfs xorg-x11 xorg-x11-KOI8-R xorg-x11-KOI8-R-75dpi-fonts
           xorg-x11-base-fonts xorg-x11-ISO8859-15-75dpi-fonts
           fonts-xorg-ISO8859-2-75dpi fonts-xorg-ISO8859-15-75dpi
           fonts-xorg-ISO8859-9-75dpi fonts-xorg-100dpi
           fonts-xorg-KOI8-R fonts-xorg-KOI8-R-75dpi fonts-xorg-base
           xorg-x11-base xorg-x11-ISO8859-15-75dpi system-logos
           xorg-x11-libs-data xorg-x11-xfs prelink redhat-logos fedora-logos
           ttfonts-ta ttfonts-bn ttfonts-gu ttfonts-hi ttfonts-pa
           fonts-japanese fonts-chinese fonts-korean fonts-indic fonts-sinhala
           fonts-malayalam fonts-oriya fonts-kannada fonts-telugu
           fonts-gujarati fonts-hindi fonts-punjabi fonts-tamil synaptics
           firstboot pycairo pirut dejavu-lgc-fonts
           dmraid python-pyblock libbdevid libbdevid-python e4fsprogs"

#
# stuff ONLY included for rescue mode
#
# these packages are combined with the PACKAGES and PACKAGESGR for big stage 2
#
PACKAGESRESCUE="bzip2 bzip2-libs dump groff xfsprogs xfsdump dmapi
                findutils ftp gzip iputils joe krb5-libs less man
                modutils mtools mt-st mtr net-tools open smartmontools
                openssh openssh-clients pciutils rsh traceroute tar rsync
                device-mapper device-mapper-multipath kpartx dmraid
                dhclient dhcpv6-client"

if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
    PACKAGESRESCUE="$PACKAGESRESCUE gpart grub"
fi

# turn off options we dont want, ie. set package list to something harmless
if [ -z "$NEEDGR" ]; then
    PACKAGESGR="bash"
    PACKAGESRESCUE="bash"
fi

#
# add bootloader for particular arch
#
if [ $ARCH = sparc ]; then
    PACKAGESGR="$PACKAGESGR tilo silo"
fi

if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
    PACKAGESGR="$PACKAGESGR syslinux syslinux-perl memtest86+"
fi

if [ $ARCH = alpha ]; then
    PACKAGESGR="$PACKAGESGR aboot"
fi

if [ $ARCH = ia64 ]; then
    PACKAGESGR="$PACKAGESGR elilo"
fi

if [ $ARCH = ppc ]; then
    PACKAGESGR="$PACKAGESGR fbset yaboot ppc64-utils"
fi

# dogtail stuff...
PACKAGESGR="$PACKAGESGR gail at-spi libbonobo ORBit2"

# modular xorg...
XORGLIBS="libICE libSM libX11 libXcursor libXext libXfixes libXft libXi libxkbfile libXmu libXpm libXrandr libXrender libXt libXxf86misc libXaw liblbxutil libXfont libfontenc libXau libXdmcp libXfont libXinerama"
XORGDRIVERS="xorg-x11-drv-acecad xorg-x11-drv-aiptek xorg-x11-drv-apm xorg-x11-drv-ark xorg-x11-drv-ast xorg-x11-drv-ati xorg-x11-drv-calcomp xorg-x11-drv-chips xorg-x11-drv-cirrus xorg-x11-drv-citron xorg-x11-drv-cyrix xorg-x11-drv-digitaledge xorg-x11-drv-dmc xorg-x11-drv-dummy xorg-x11-drv-dynapro xorg-x11-drv-elo2300 xorg-x11-drv-elographics xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-fpit xorg-x11-drv-glint xorg-x11-drv-hyperpen xorg-x11-drv-i128 xorg-x11-drv-i740 xorg-x11-drv-i810 xorg-x11-drv-jamstudio xorg-x11-drv-joystick xorg-x11-drv-keyboard xorg-x11-drv-magellan xorg-x11-drv-magictouch xorg-x11-drv-mga xorg-x11-drv-microtouch xorg-x11-drv-mouse xorg-x11-drv-mutouch xorg-x11-drv-neomagic xorg-x11-drv-nsc xorg-x11-drv-nv xorg-x11-drv-palmax xorg-x11-drv-penmount xorg-x11-drv-qxl xorg-x11-drv-rendition xorg-x11-drv-s3 xorg-x11-drv-s3virge xorg-x11-drv-savage xorg-x11-drv-siliconmotion xorg-x11-drv-sis xorg-x11-drv-sisusb xorg-x11-drv-spaceorb xorg-x11-drv-summa xorg-x11-drv-tdfx xorg-x11-drv-tek4957 xorg-x11-drv-trident xorg-x11-drv-tseng xorg-x11-drv-v4l xorg-x11-drv-vesa xorg-x11-drv-vga xorg-x11-drv-via xorg-x11-drv-vmware xorg-x11-drv-void xorg-x11-drv-voodoo"
XORGFONTS="xorg-x11-fonts-75dpi xorg-x11-fonts-base xorg-x11-fonts-cyrillic xorg-x11-fonts-ISO8859-15-75dpi xorg-x11-fonts-ISO8859-1-75dpi xorg-x11-fonts-ISO8859-2-75dpi xorg-x11-fonts-ISO8859-9-75dpi xorg-x11-fonts-misc xorg-x11-fonts-ethiopic"
XORG="$XORGLIBS $XORGDRIVERS $XORGFONTS xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-font-utils xorg-x11-xkb-utils xorg-x11-xkbdata xorg-x11-server-utils xkeyboard-config"

PACKAGES="$PACKAGES $XORGDRIVERS"
PACKAGESGR="$PACKAGESGR $XORG"


#
# KEEPFILE is all files to keep from the packages in PACKAGES
#
# This is what is present in http, ftp, and hard drive installs, and is
# supposed to be a small image because these methods keep it in RAM.
#
# It also is the base on which the other install images build on top of,
# so if something is needed by all images it should go here
#
KEEPFILE=/tmp/keepfile.$$

cat > $KEEPFILE <<EOF
boot/efi/EFI/redhat/elilo.efi
bin/ash
bin/fdisk*
bin/mkfs*
bin/sed
etc/group
etc/passwd
etc/iscsid.conf
etc/mke2fs.conf
etc/mke4fs.conf
etc/pcmcia/*
etc/protocols
etc/services
etc/selinux/targeted/booleans
etc/selinux/targeted/policy/policy.*
etc/selinux/targeted/contexts/files/*
etc/selinux/targeted/contexts/*
etc/selinux/targeted/*
usr/share/selinux/targeted/*
etc/security/selinux/policy.*
etc/security/selinux/file_contexts
etc/yum/pluginconf.d/kmod.conf
etc/modprobe.d/libmlx4.conf
$LIBDIR/bdevid/*
$LIBDIR/libaudit*.so*
$LIBDIR/libc[-.]*
$LIBDIR/libm[-.]*
$LIBDIR/libpthread*
$LIBDIR/librt[-.]*
$LIBDIR/ld*.so*
$LIBDIR/libblkid*
$LIBDIR/libcom_err*
$LIBDIR/libcrypt*
$LIBDIR/libdb-*
$LIBDIR/libdevmapper*
$LIBDIR/libdl*
$LIBDIR/libe2p*
$LIBDIR/libexpat*
$LIBDIR/libext2fs*
$LIBDIR/libkeyutils*
$LIBDIR/liblvm-10.so*
$LIBDIR/libgcc_s*
$LIBDIR/libnsl*
$LIBDIR/libnss_dns*
$LIBDIR/libnss_files*
$LIBDIR/libpam*
$LIBDIR/libresolv*
$LIBDIR/libselinux*
$LIBDIR/libsemanage*
$LIBDIR/libsepol*
$LIBDIR/libss*
$LIBDIR/libtermcap*
$LIBDIR/libhandle*
$LIBDIR/libattr*
$LIBDIR/libdm*
$LIBDIR/libutil*
$LIBDIR/libuuid*
$LIBDIR/libglib*
$LIBDIR/libgmodule*
$LIBDIR/libgobject*
$LIBDIR/libgthread*
$LIBDIR/libvolume_id*
usr/$LIBDIR/libfipscheck*
usr/lib/libfipscheck*
sbin/dmraid.static
sbin/dmsetup.static
sbin/multipath.static
sbin/kpartx.static
sbin/mpath_prio_*.static
lib/udev/scsi_id
sbin/badblocks
sbin/busybox
sbin/clock
sbin/cryptsetup
sbin/debugfs
sbin/dosfslabel
sbin/dumpe4fs
sbin/e2fsck
sbin/e2fsadm
sbin/e2label
sbin/e4label
sbin/fsck.ext2
sbin/fsck.ext3
sbin/fsck.ext4
sbin/fsck.jfs
sbin/fsck.xfs
sbin/fdisk
sbin/hdparm
sbin/hwclock
sbin/jfs_tune
sbin/ldconfig
sbin/lspci
sbin/lvm*
sbin/mdadm
sbin/mkdosfs
sbin/mke2fs
sbin/mke4fs
sbin/mkfs.ext2
sbin/mkfs.ext3
sbin/mkfs.ext4
sbin/mkfs.jfs
sbin/mkfs.xfs
sbin/mkfs.msdos
sbin/mkfs.vfat
sbin/mkreiserfs
sbin/mkraid
sbin/mkswap
sbin/parted
sbin/pcmcia-socket-startup
sbin/pdisk
sbin/portmap
sbin/probe
sbin/reiserfstune
sbin/resize2fs
sbin/sfdisk
sbin/tune2fs
sbin/tune4fs
sbin/xfsdump
sbin/xfsrestore
sbin/xfs_repair
usr/sbin/xfs_db
usr/sbin/xfs_check
usr/sbin/xfs_copy
sbin/*gfs*
sbin/iscsid
sbin/iscsiadm
sbin/iscsistart
usr/bin/python
usr/bin/python?.?
usr/bin/hmount
usr/bin/humount
usr/bin/hcopy
usr/bin/hattrib
usr/bin/hformat
usr/lib/anaconda-runtime/*
usr/lib/anaconda/*
usr/lib/anaconda/installclasses/*
usr/lib/anaconda/textw/*
usr/lib/booty/*
usr/kerberos/$LIBDIR/libkrb5.so*
usr/kerberos/$LIBDIR/libkrb5support.so*
usr/kerberos/$LIBDIR/libk5crypto.so*
usr/kerberos/$LIBDIR/libcom_err.so*
usr/kerberos/$LIBDIR/libgssapi_krb5.so*
usr/$LIBDIR/libbdevid.so*
usr/$LIBDIR/libdmraid.so*
usr/$LIBDIR/libkrb5.so*
usr/$LIBDIR/libkrb5support.so*
usr/$LIBDIR/libk5crypto.so*
usr/$LIBDIR/libcom_err.so*
usr/$LIBDIR/libgssapi_krb5.so*
usr/$LIBDIR/gconv/ISO8859-1.so
usr/$LIBDIR/gconv/gconv-modules
usr/$LIBDIR/libbeecrypt*
usr/$LIBDIR/libssl*
usr/$LIBDIR/libcrypto*
usr/$LIBDIR/libbz2*
usr/$LIBDIR/libdhcp*
usr/$LIBDIR/libelf*
usr/$LIBDIR/libiscsi.so*
usr/$LIBDIR/libncurses*
usr/$LIBDIR/libnewt*
usr/$LIBDIR/libnl*
usr/$LIBDIR/libnssutil3.so
usr/$LIBDIR/libparted*
usr/$LIBDIR/libpopt*
usr/$LIBDIR/libpython*
usr/$LIBDIR/libneon*
usr/$LIBDIR/libnspr*
usr/$LIBDIR/libplc4*
usr/$LIBDIR/libplds4*
usr/$LIBDIR/libsqlite3*
usr/$LIBDIR/libsoftokn3*
usr/$LIBDIR/librpm-*4.?.so*
usr/$LIBDIR/librpmbuild-*4.?.so*
usr/$LIBDIR/librpmdb*4.?.so*
usr/$LIBDIR/librpmio*4.?.so*
usr/$LIBDIR/libslang*
usr/$LIBDIR/libstdc++.so.6*
usr/$LIBDIR/libuser.so*
usr/$LIBDIR/libuser/*
usr/$LIBDIR/libxml2.so*
usr/$LIBDIR/libz.*
$LIBDIR/libz.*
usr/$LIBDIR/libreadline*
usr/$LIBDIR/python?.?/*
usr/$LIBDIR/libfreebl3.so
usr/$LIBDIR/libnss3.so
usr/$LIBDIR/libnssckbi.so
usr/$LIBDIR/libnsspem.so
usr/$LIBDIR/libsmime3.so
usr/$LIBDIR/libssl3.so
usr/$LIBDIR/libdrm.so.*
usr/$LIBDIR/python?.?/email/*
usr/$LIBDIR/python?.?/site-packages/libxml2*
usr/$LIBDIR/python?.?/site-packages/*kudzu*
usr/$LIBDIR/python?.?/site-packages/bdevid.so
usr/$LIBDIR/python?.?/site-packages/rpmmodule.so
usr/$LIBDIR/python?.?/site-packages/partedmodule.so
usr/$LIBDIR/python?.?/site-packages/ixf86configmodule.so
usr/$LIBDIR/python?.?/site-packages/xf86config.py
usr/$LIBDIR/python?.?/site-packages/libiscsimodule.so
usr/$LIBDIR/python?.?/site-packages/libusermodule.so
usr/$LIBDIR/python?.?/site-packages/*sqlite*
usr/$LIBDIR/python?.?/site-packages/rhpl
usr/$LIBDIR/python?.?/site-packages/cElementTree.so
usr/$LIBDIR/python?.?/site-packages/block
usr/$LIBDIR/python?.?/site-packages/*.pth
usr/$LIBDIR/python?.?/site-packages/*selinux*
usr/lib/locale/*
usr/lib/python?.?/site-packages/elementtree/*
usr/lib/python?.?/site-packages/iniparse/*
usr/lib/python?.?/site-packages/rpmUtils/*
usr/lib/python?.?/site-packages/urlgrabber/*
usr/lib/python?.?/site-packages/yum/*
usr/lib/python?.?/site-packages/repomd/*
usr/lib/python?.?/site-packages/pirut/*
usr/lib/python?.?/site-packages/pykickstart/*
usr/lib/python?.?/site-packages/rhpxl/*
usr/lib/python?.?/site-packages/instnum.*
usr/lib/python?.?/site-packages/*rhsm*
usr/lib/rpm/macros
usr/lib/rpm/rpmpopt
usr/lib/rpm/rpmrc
usr/lib/yaboot/addnote
usr/lib/yaboot/ofboot
usr/lib/yaboot/yaboot
usr/lib/yum-plugins/kmod.py*
usr/libexec/convertdb1
usr/share/locale/*/LC_MESSAGES/anaconda.mo
usr/share/locale/locale.alias
usr/sbin/anaconda
usr/sbin/ddcprobe
usr/sbin/dmidecode
usr/sbin/mkofboot
usr/sbin/ofpath
usr/sbin/ybin
usr/sbin/load_policy
usr/sbin/semodule
usr/sbin/genhomedircon
sbin/setfiles
usr/sbin/lvm
usr/sbin/gptsync
usr/share/anaconda/anaconda.conf
usr/share/selinux/targeted/base.pp
usr/share/system-config-date/zonetab.py*
usr/share/terminfo/a/ansi
usr/share/terminfo/l/linux
usr/share/terminfo/v/vt100
usr/share/terminfo/v/vt100-nav
usr/share/terminfo/v/vt102
usr/share/terminfo/v/vt320
usr/share/terminfo/v/vt320-w
usr/share/hwdata/pci.ids
usr/share/hwdata/videoaliases
usr/share/hwdata/videoaliases/*
usr/share/hwdata/videodrivers
usr/share/hwdata/MonitorsDB
usr/share/xorg/extramodes
usr/share/xorg/vesamodes
usr/share/zoneinfo/*
usr/share/rhsm/*
usr/lib/yum-plugins/product-id.py*
var/log/rhsm
etc/rhsm/*
etc/yum/pluginconf.d/product-id.conf
EOF

if [ $ARCH = s390 -o $ARCH = s390x ]; then
    cat >> $KEEPFILE <<EOF
usr/share/terminfo/a/ansi
usr/share/terminfo/d/dumb
usr/share/terminfo/k/kterm
usr/share/terminfo/s/screen
usr/share/terminfo/v/vt100
usr/share/terminfo/v/vt100-nav
usr/share/terminfo/v/vt102
usr/share/terminfo/v/vt320
usr/share/terminfo/v/vt320-w
usr/share/terminfo/x/xterm
usr/share/terminfo/x/xterm-color
usr/bin/printf
usr/bin/strace
usr/bin/ldd
usr/sbin/chroot
usr/sbin/sshd
usr/sbin/glibc_post_upgrade
usr/sbin/in.telnetd
usr/sbin/xinetd
sbin/cmsfslst
sbin/cmsfscat
sbin/busybox
sbin/ifconfig
sbin/route
sbin/fdasd
sbin/dasdfmt
sbin/swapon
sbin/swapoff
sbin/mkswap
sbin/udevsettle
sbin/udevd
bin/ipcalc
bin/bash
bin/dd
bin/gawk
bin/mount
bin/umount
bin/mknod
bin/sleep
bin/login
bin/cat
bin/chmod
bin/sort
$LIBDIR/libpam.so*
$LIBDIR/libdl.so*
$LIBDIR/libdl-*.so*
usr/$LIBDIR/libz.so*
$LIBDIR/libnsl.so*
$LIBDIR/libnsl-*.so*
$LIBDIR/libnss*
$LIBDIR/libutil.so*
$LIBDIR/libutil-*.so*
$LIBDIR/libcrypt*
$LIBDIR/libc.so*
$LIBDIR/libc-*so*
lib/ld*.so*
$LIBDIR/ld*.so*
$LIBDIR/libresolv.so*
$LIBDIR/libresolv-*.so*
$LIBDIR/libvtoc*.so*
lib/modules/ibm/*
etc/xinetd.conf
etc/pam.d/sshd
etc/pam.d/other
etc/security/limits.conf
etc/security/pam_env.conf
lib/security
$LIBDIR/security/pam_*
$LIBDIR/libwrap.so*
usr/$LIBDIR/libwrap.so*
usr/$LIBDIR/libXmuu.so*
usr/$LIBDIR/libX11.so*
usr/$LIBDIR/libXext.so*
usr/$LIBDIR/libXxf86misc.so*
usr/bin/xauth
EOF
fi
      
#
# KEEPFILEGR is all files to keep from the packages in PACKAGESGR
#
# This defines the files in addition to KEEPFILE that make up the install
# images for NFS and CD/DVD based installs.  This image is not loaded into
# memory so it can be considerably larger.
#
# The rescue mode of anaconda uses these files as well as those defined
# by KEEPFILERESCUE below.  The total size of this image should be
# under the size of the miniature CD used for the rescue CD (around 68MB).
#
KEEPFILEGR=/tmp/keepfilegr.$$
cp $KEEPFILE $KEEPFILEGR
cat >> $KEEPFILEGR <<EOF
boot/efi/EFI/redhat/elilo.efi
boot/memtest86*
bin/bash
bin/cat
bin/chmod
bin/cp
bin/cpio
bin/dd
bin/df
bin/du
bin/ln
bin/ls
bin/mkdir
bin/mv
bin/ps
bin/rm
bin/rpm
bin/touch
boot/*.b
boot/bootlx
etc/fb.modes
etc/gtk-2.0/gtkrc*
etc/im_palette.pal
etc/imrc
etc/man.config
etc/pango/*
etc/fonts/*
etc/prelink.conf
etc/rpm/macros.prelink
$LIBDIR/bdevid/*
$LIBDIR/libacl*
$LIBDIR/libattr*
$LIBDIR/libgcc*
$LIBDIR/libnss_dns*
$LIBDIR/libproc*
$LIBDIR/libwrap*
sbin/addRamDisk
sbin/addSystemMap
sbin/debugfs
sbin/e2fsck
sbin/e2label
sbin/reiserfsck
sbin/reiserfstune
sbin/fsck
sbin/fsck.ext2
sbin/fsck.ext3
sbin/fsck.jfs
sbin/fsck.reiserfs
sbin/parted
sbin/silo
sbin/tune2fs
sbin/tune4fs
usr/bin/Xorg
usr/bin/setxkbmap
usr/bin/xkbcomp
usr/share/X11/XKeysymDB
usr/share/X11/fonts/misc/6x13*
usr/share/X11/fonts/misc/fonts*
usr/share/X11/fonts/misc/cursor*
usr/share/X11/fonts/misc/olcursor*
usr/share/X11/fonts/Type1/l047013t*
usr/share/X11/fonts/Type1/*
usr/share/X11/fonts/TTF/GohaTibebZemen.ttf
usr/share/X11/locale/*
usr/share/X11/rgb*
usr/share/X11/xkb/*
usr/$LIBDIR/xserver/SecurityPolicy
usr/$LIBDIR/libbdevid.so*
usr/$LIBDIR/libICE*
usr/$LIBDIR/libSM*
usr/$LIBDIR/libXaw.so*
usr/$LIBDIR/libX11*
usr/$LIBDIR/libXcursor*
usr/$LIBDIR/libXext*
usr/$LIBDIR/libXfixes*
usr/$LIBDIR/libXft*
usr/$LIBDIR/libXi*
usr/$LIBDIR/libxkbfile*
usr/$LIBDIR/libXmu*
usr/$LIBDIR/libXpm*
usr/$LIBDIR/libXrandr*
usr/$LIBDIR/libXrender*
usr/$LIBDIR/libXt*
usr/$LIBDIR/libXxf86misc*
usr/$LIBDIR/liblbxutil*
usr/$LIBDIR/libXfont*
usr/$LIBDIR/libfontenc*
usr/$LIBDIR/libXau*
usr/$LIBDIR/libXdmcp*
usr/$LIBDIR/xorg/modules/*
usr/$LIBDIR/xorg/modules/input/*
usr/bin/chattr*
usr/bin/fc-cache
usr/bin/gtk-query*
usr/bin/gdk-pixbuf-query-loaders*
usr/bin/head
usr/bin/lsattr*
usr/bin/maketilo
usr/bin/mini-wm
usr/bin/pango*
usr/bin/syslinux
usr/bin/mkzimage
usr/bin/tac
usr/bin/tail
usr/bin/tilo
usr/bin/uniq
usr/bin/Xvnc
usr/bin/vncconfig
usr/bin/vncpasswd
usr/bin/reduce-font
usr/lib/anaconda/iw
usr/$LIBDIR/gconv/*
usr/$LIBDIR/gdk-pixbuf/loaders/*xpm*
usr/$LIBDIR/gdk-pixbuf/loaders/*png*
usr/$LIBDIR/gdk-pixbuf/loaders/*la*
usr/$LIBDIR/gtk-2.0/*/engines/libclearlooks.so
usr/$LIBDIR/gtk-2.0/*/loaders/*xpm*
usr/$LIBDIR/gtk-2.0/*/loaders/*png*
usr/$LIBDIR/gtk-2.0/*/loaders/*la*
usr/$LIBDIR/gtk-2.0/immodules/
usr/$LIBDIR/libImlib*
usr/$LIBDIR/libXft*
usr/$LIBDIR/libart*
usr/$LIBDIR/libatk*
usr/$LIBDIR/libaudio*
usr/$LIBDIR/libpixman*
usr/$LIBDIR/libcairo*
usr/$LIBDIR/libesd*
usr/$LIBDIR/libfontconfig*
usr/$LIBDIR/libfreetype*
usr/$LIBDIR/libgailutil*
usr/$LIBDIR/libgdk*
usr/$LIBDIR/libglade*
usr/$LIBDIR/libgnomecanvas*
usr/$LIBDIR/libgnomeui*
usr/$LIBDIR/libgpm*
usr/$LIBDIR/libgtk*
usr/$LIBDIR/libjpeg*
usr/$LIBDIR/libpango*
usr/$LIBDIR/libpng.so.3*
usr/$LIBDIR/libpng12.so*
usr/$LIBDIR/libstdc++.so.*
usr/$LIBDIR/libwrap*
usr/$LIBDIR/pango/*
usr/$LIBDIR/python?.?/site-packages/cairo/*
usr/$LIBDIR/python?.?/site-packages/gtk*/gtk/*
usr/$LIBDIR/python?.?/site-packages/gtk*/*
usr/$LIBDIR/rpm/rpmpopt
usr/share/syslinux/*
usr/lib/yaboot/*
usr/sbin/chroot
usr/sbin/ddcprobe
usr/sbin/fbset
usr/sbin/prelink
usr/sbin/smartctl
usr/share/anaconda/*
usr/share/firstboot/firstboot_module_window*
usr/share/icons/default/*
usr/share/icons/gnome/cursors/*
usr/share/icons/gnome/*/stock/*
usr/share/icons/gnome/index.theme
usr/share/icons/Bluecurve/cursors/*
usr/share/icons/Bluecurve/*/stock/*
usr/share/icons/Bluecurve/index.theme
usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf
usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf
usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf
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/korean/TrueType/dotum.ttf
usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
usr/share/fonts/chinese/TrueType/uming*.ttf
usr/share/fonts/bengali/MuktiNarrow.ttf
usr/share/fonts/arabic/KacstFarsi.ttf
usr/share/fonts/arabic/KacstQura.ttf
usr/share/fonts/tamil/lohit_ta.ttf
usr/share/fonts/gujarati/lohit_gu.ttf
usr/share/fonts/bengali/lohit_bn.ttf
usr/share/fonts/hindi/lohit_hi.ttf
usr/share/fonts/punjabi/lohit_pa.ttf
usr/share/fonts/oriya/lohit_or.ttf
usr/share/fonts/malayalam/lohit_ml.ttf
usr/share/fonts/kannada/lohit_kn.ttf
usr/share/fonts/telugu/lohit_te.ttf
usr/share/fonts/sinhala/lklug.ttf
usr/share/locale/*/LC_MESSAGES/anaconda.mo
usr/share/locale/*/LC_MESSAGES/system-config-date.mo
usr/share/locale/*/LC_MESSAGES/redhat-dist.mo
usr/share/locale/*/LC_MESSAGES/system-config-keyboard.mo
usr/share/locale/*/LC_MESSAGES/gtk20.mo
usr/share/locale/*/LC_MESSAGES/libc.mo
usr/share/locale/*/LC_MESSAGES/rhpl.mo
usr/share/locale/*/LC_MESSAGES/rhpxl.mo
usr/share/locale/*/LC_MESSAGES/parted.mo
usr/share/locale/*/LC_MESSAGES/pirut.mo
usr/share/pirut/*
usr/share/pixmaps/comps/*.png
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/ppc64-utils/*
usr/share/system-config-keyboard/*
usr/share/system-config-date/*
usr/share/terminfo/l/linux
usr/share/terminfo/x/xterm
usr/share/terminfo/v/vt100
usr/share/terminfo/v/vt100-nav
usr/share/terminfo/v/vt320
usr/share/terminfo/v/vt320-w
usr/share/themes/Clearlooks/gtk-2.0/*
usr/share/themes/Clearlooks/index.theme
usr/share/vte/termcap/xterm
usr/share/zoneinfo/*
EOF

# more dogtail stuff...
cat >> $KEEPFILEGR <<EOF
usr/$LIBDIR/gtk-2.0/modules/libatk-bridge.so
usr/$LIBDIR/gtk-2.0/modules/libgail.so
usr/libexec/bonobo-activation-server
usr/libexec/at-spi-registryd
usr/$LIBDIR/libORBit*
usr/$LIBDIR/libbonobo*
usr/$LIBDIR/libspi*
usr/$LIBDIR/libcspi*
usr/$LIBDIR/bonobo/servers/*
usr/$LIBDIR/libXevie*
EOF



#
# KEEPFILERESCUE is all files to keep from the packages in PACKAGESRESCUE
#
# This defines the files in addition to KEEPFILE and KEEPFILEGR that make up 
# the install images for NFS and CD/DVD based rescue mode installs.  This 
# image is not loaded into memory so it can be considerably larger.
#
# NOTE: hd, ftp, and http rescue mode use and image based on KEEPFILE since
#       it has to be much smaller due to memory usage.
#
KEEPFILERESCUE=/tmp/keepfilerescue.$$
cat > $KEEPFILERESCUE <<EOF
bin/gunzip
bin/gzip
bin/mt
bin/ping
bin/sync
bin/tar
bin/zcat
etc/joe/*
sbin/arp
sbin/depmod
sbin/dhclient
sbin/dhcp6c
sbin/dump
sbin/ifconfig
sbin/insmod
sbin/lsmod
sbin/modinfo
sbin/modprobe
sbin/netstat
sbin/restore
sbin/rrestore
sbin/rmmod
sbin/route
sbin/xfs_repair
usr/bin/bunzip2
usr/bin/bzcat
usr/bin/bzip2
usr/bin/emacs
usr/bin/find
usr/bin/ftp
usr/bin/jmacs
usr/bin/joe
usr/bin/jpico
usr/bin/less
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/mzip
usr/bin/open
usr/bin/rcp
usr/bin/rlogin
usr/bin/rsh
usr/bin/rsync
usr/bin/scp
usr/bin/sftp
usr/bin/shred
usr/bin/ssh
usr/bin/termidx
usr/bin/xargs
usr/bin/groff
usr/bin/iconv
usr/kerberos/$LIBDIR/libgssapi*
usr/kerberos/$LIBDIR/libkrb5*
usr/kerberos/$LIBDIR/libk5crypto*
usr/kerberos/$LIBDIR/libcom_err*
usr/sbin/mtr
usr/sbin/smartctl
usr/sbin/traceroute
usr/sbin/xfs_check
usr/sbin/xfs_copy
usr/sbin/xfs_db
usr/sbin/xfsdump
usr/sbin/xfsrestore
EOF

if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
    cat >> $KEEPFILERESCUE <<-EOF
boot/grub
sbin/grub
sbin/grub-install
sbin/grub-md5-crypt
sbin/grub-set-default
usr/bin/gpart
usr/bin/mbchk
usr/share/grub/*
EOF
fi

echo "Assembling package list..."
RPMS=$(prunePackageList $PACKAGEDIR "$PACKAGES")
[ -n "$DEBUG" ] && echo "RPMS are $RPMS"
RPMSGR=$(prunePackageList $PACKAGEDIR "$PACKAGESGR $PACKAGESRESCUE")
[ -n "$DEBUG" ] && echo "RPMSGR are $RPMSGR"

rm -rf $DEST; mkdir -p $DEST/usr/sbin
rm -rf $DESTGR; mkdir -p $DESTGR/usr/sbin $DESTGR/var/lib $DESTGR/boot
ln -s /tmp $DESTGR/var/lib/xkb 

#
# concat KEEPFILEGR and KEEPFILERESCUE lists
#
cat $KEEPFILERESCUE >> $KEEPFILEGR

#
# filter paths in keepfile lists for use by cpio
#
for file in $KEEPFILE $KEEPFILEGR; do
   cat $file | awk '{print $1 "\n./" $1}' > $file-
   mv -f $file- $file
done

echo "Expanding text packages..."
expandPackageSet "$RPMS" $DEST $KEEPFILE

(cd $DEST; tar cSpf - .) | (cd $DESTGR; tar xSpf -)

echo "Expanding graphical packages..."
expandPackageSet "$RPMSGR" $DESTGR $KEEPFILEGR

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
	mv $i/bin/sed $i/bin/sed_save
	mv $i/bin/sort $i/bin/sort_save
    done
fi

for i in $DEST $DESTGR; do
    # there's never a case with only one of these...
    for tool in dmraid dmsetup kpartx multipath ; do
        if [ -f $i/sbin/$tool.static ]; then
            mv $i/sbin/$tool.static $i/sbin/$tool
        fi
    done

    for mpath in $i/sbin/mpath_prio_*.static ; do
        if [ -f $mpath ]; then
            d=$(dirname $mpath)
            b=$(basename $mpath .static)
            mv $mpath $d/$b
        fi
    done
done

# change mtimes to 0 (to match what happens on the cramfs)
for p in $DEST $DESTGR; do
    $p/usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p
done

# Remove locales unused during the install
cat $DESTGR/usr/lib/anaconda/lang-table* | awk '
{ gsub("-", "", $4);
  print $4;
  print gensub(/\..*$/,"","",$4);
  print gensub(/_.*$/,"","",$4);
  if (split ($4, a, ".") > 1) {
    print gensub(/\..*$/,tolower("." a[2]),"",$4);
  };
  print $2;
}
' | sed -e 's/latn/Latn/g' | 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

# fixup joe links
if [ -n "$NEEDGR" ]; then
    ln -fs jpicorc $DESTGR/etc/joe/picorc
    ln -fs jpicorc $DESTGR/etc/joe/jnanorc
    ln -fs jpicorc $DESTGR/etc/joe/nanorc
    ln -fs jmacsrc $DESTGR/etc/joe/emacsrc
    ln -fs jmacs $DESTGR/usr/bin/emacs
    ln -fs jpico $DESTGR/usr/bin/pico
    ln -fs jpico $DESTGR/usr/bin/nano
fi

# create selinux config
if [ -e $DEST/etc/selinux/targeted ]; then
  cat > $DEST/etc/selinux/config <<EOF
SELINUX=permissive
SELINUXTYPE=targeted
EOF
  cp $DEST/etc/selinux/config $DESTGR/etc/selinux/config
fi

cat > $DEST/etc/shells <<EOF
/bin/sh
EOF

echo "Creating nsswitch.conf"
cat > $DEST/etc/nsswitch.conf <<EOF
# munged nsswitch.conf with just what anaconda needs
# created by upd-instroot
#
passwd:     files
shadow:     files
group:      files
hosts:      files dns
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files
netgroup:   files
automount:  files
aliases:    files
EOF

echo "Creating libuser.conf"
cat > $DEST/etc/libuser.conf <<EOF
[defaults]
skeleton = /mnt/sysimage/etc/skel
mailspooldir = /mnt/sysimage/var/mail
crypt_style = md5
modules = files shadow
create_modules = files shadow
[files]
directory = /mnt/sysimage/etc
[shadow]
directory = /mnt/sysimage/etc
EOF

echo "Creating multipath.conf"
cat > $DEST/etc/multipath.conf <<EOF
defaults {
        user_friendly_names yes
}
EOF

cp $DEST/etc/shells $DESTGR/etc/shells
cp $DEST/etc/nsswitch.conf $DESTGR/etc/nsswitch.conf
cp $DEST/etc/libuser.conf $DESTGR/etc/libuser.conf
cp $DEST/etc/multipath.conf $DESTGR/etc/multipath.conf

sed -i 's|\(installforallkernels\) = 0|\1 = 1|' $DEST/etc/yum/pluginconf.d/kmod.conf
cp $DEST/etc/yum/pluginconf.d/kmod.conf $DESTGR/etc/yum/pluginconf.d/

# fixup man.config to point into /mnt/sysimage for rescue
if [ -n "$NEEDGR" ]; then
    echo "Fixing up /etc/man.config to point into /mnt/sysimage"
    mv $DESTGR/etc/man.config $DESTGR/etc/man.config-old
    cat $DESTGR/etc/man.config-old | sed 's^/usr/bin^/mnt/sysimage/usr/bin^' | sed 's^/bin/cat^/mnt/sysimage/usr/bin/cat^'  > $DESTGR/etc/man.config
    rm -f $DESTGR/etc/man.config-old
fi

if [ -n "$NEEDGR" ]; then
    echo "Running mkfontdir..."
    mkfontdir $DESTGR/usr/share/X11/fonts/*
fi

echo "Creating SELinux policy..."
if [ -x $DESTGR/usr/sbin/semodule ]; then
    ( cd $DESTGR
      x=$(ls usr/share/selinux/targeted/*.pp | grep -v -e base.pp -e enableaudit.pp | awk '{ print "-i /" $1 }')
    /usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp $x -n -s targeted )
fi
rm -rf $DEST/etc/selinux
mkdir $DEST/etc/selinux
cp -r $DESTGR/etc/selinux/* $DEST/etc/selinux/

if [ -n "$NEEDGR" ]; then
    echo "Getting pango modules"
    # sick sick sick hack for pango-querymodules being -32 or -64
    mv $DESTGR/usr/bin/pango-querymodules* $DESTGR/usr/bin/pango-querymodules
    /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules > $DESTGR/etc/pango/pango.modules
    rm -f $DESTGR/usr/bin/pango-querymodules
    # more sick hackery since it doesn't fall back to this like owen thought
    cat > $DESTGR/etc/pango/pangorc <<EOF
[Pango]
ModuleFiles=/etc/pango/pango.modules
EOF
fi

host=`rpm --nodigest --nosignature -qp --qf "%{POSTIN}\n" $PACKAGEDIR/gtk2*.$ARCH.rpm |grep update-gdk-pixbuf |awk {'print $3;'}`

case "$host" in
  *linux) canonhost="$host-gnu"
  ;;
  *) canonhost=$host
  ;;
esac
 
# autoconf uses powerpc not ppc
HOSTTRIPLET=`echo $canonhost | sed "s/^ppc/powerpc/"`


mkdir -p $DESTGR/etc/gtk-2.0/$HOSTTRIPLET

if [ -n "$NEEDGR" ]; then
    echo "Getting gtk2 input method modules"
    mv $DESTGR/usr/bin/gtk-query-immodules-2.0* $DESTGR/usr/bin/gtk-query-immodules-2.0
    /usr/sbin/chroot $DESTGR /usr/bin/gtk-query-immodules-2.0 > $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gtk.immodules
    rm -f $DESTGR/usr/bin/gtk-query-immodules-2.0
fi

if [ -n "$NEEDGR" ]; then
    echo "Getting gtk2 gdk-pixbuf loaders"
    mv $DESTGR/usr/bin/gdk-pixbuf-query-loaders* $DESTGR/usr/bin/gdk-pixbuf-query-loaders
    /usr/sbin/chroot $DESTGR /usr/bin/gdk-pixbuf-query-loaders > $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gdk-pixbuf.loaders
    rm -f $DESTGR/usr/bin/gdk-pixbuf-query-loaders
fi

rm -f $KEEPFILE $KEEPFILEGR $KEEPFILERESCUE

for p in $DEST $DESTGR; do
	echo "Scrubbing trees..." "$p"
	cp $p/usr/lib/anaconda/raidstart-stub $p/usr/bin/raidstart
	cp $p/usr/lib/anaconda/raidstop-stub $p/usr/bin/raidstop
	cp $p/usr/lib/anaconda/losetup-stub $p/usr/bin/losetup
	cp $p/usr/lib/anaconda/pump-stub $p/usr/bin/pump
	cp $p/usr/lib/anaconda/list-harddrives-stub $p/usr/bin/list-harddrives
	cp $p/usr/lib/anaconda/kudzu-probe-stub $p/usr/bin/kudzu-probe
	cp $p/usr/lib/anaconda/loadkeys-stub $p/usr/bin/loadkeys
	cp $p/usr/lib/anaconda/mknod-stub $p/usr/bin/mknod
	cp $p/usr/lib/anaconda/syslogd-stub $p/usr/bin/syslogd
	mv $p/usr/sbin/anaconda $p/usr/bin/anaconda
	mv $p/usr/lib/anaconda-runtime/lib* $p/usr/$LIBDIR

	# we only want the libunicode-lite stuff on the minimal image
	if [ $p = $DESTGR ]; then
	    rm -f $p/usr/$LIBDIR/libunicode-lite*
	fi

	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 -sf busybox $p/bin/sh
	fi

	[ -d $p/bin ] || die "ERROR: directory missing: $p/bin"
	[ -d $p/sbin ] || die "ERROR: directory missing: $p/sbin"
	(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
	    [ -d $p/boot ] || die "ERROR: directory missing: $p/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/EFI/redhat//* $p/usr/lib/anaconda-runtime/boot
	fi    

	# copy bootloader files for i386/x86_64
	if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
	    if [ $p = $DESTGR ]; then
		mkdir -p $p/usr/lib/anaconda-runtime/boot
		cp -af $p/boot/memtest* $p/usr/lib/anaconda-runtime/boot
	    fi
	fi

	rm -rf $p/boot $p/home $p/root $p/tmp

	find $p -name "*.a" | xargs rm -rf
	find $p -name "lib*.la" |grep -v "usr/$LIBDIR/gtk-2.0" | xargs rm -rf
	for f in newt popt rpm rpmio; do
	    rm -f $p/usr/$LIBDIR/lib$f.so
	done

	# nuke some python stuff we don't need
        for d in idle distutils bsddb lib-old hotshot doctest.py pydoc.py site-packages/japanese site-packages/japanese.pth ; do
	    rm -rf $p/$d
	done

	if [ "$ARCH" != "s390" -a "$ARCH" != "s390x" ]; then
	   (cd $p/lib* && rm -f libnss_files.so.1 libnss_dns.so.1)
	fi

	$p/usr/lib/anaconda-runtime/scrubtree $p
done

echo "Compressing .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 [ -n "$NEEDGR" ]; then
    echo "Creating fontconfig cache"
    /usr/sbin/chroot $DESTGR /usr/bin/fc-cache
    rm -f $DESTGR/usr/bin/fc-cache
fi

echo "Creating debug dir"
for p in $DEST $DESTGR ; do
    mkdir -p $p/usr/lib/debug
    mkdir -p $p/usr/src/debug
done

if [ $ARCH = "alpha" ]; then
    rm -rf $DEST/usr/share/locale
    rm -rf $DEST/usr/$LIBDIR/locale
fi

echo "Patching python library..."

# always use passive mode for ftp installs
cd $DEST/usr/$LIBDIR/python2.4
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 -

for p in $DEST $DESTGR; do
	find $p -name "*.py" | while read fn; do
	    rm -f ${fn}o
	    rm -f ${fn}c
	    ln -sf /dev/null ${fn}c
	done
done

# do some stripping of debugging symbols
find $DEST -type f -name '*.so' |xargs strip -g
find $DESTGR -type f -name '*.so' |xargs strip -g

# some python stuff we don't need for stage2
rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/distutils/
rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/lib-dynload/japanese
rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/compiler/
rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/email/test/
rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/curses/
rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/pydoc.py

# this is only for the minimal second stage
echo "Cleaning ramdisk install images..."
rm -rf $DEST/usr/lib/anaconda-runtime