+++ /dev/null
-from installclass import BaseInstallClass
-from constants import *
-from filer import *
-from flags import flags
-import os
-import iutil
-import types
-import yuminstall
-try:
- import instnum
-except ImportError:
- instnum = None
-
-import gettext
-_ = lambda x: gettext.ldgettext("anaconda", x)
-
-import logging
-log = logging.getLogger("anaconda")
-
-# custom installs are easy :-)
-class InstallClass(BaseInstallClass):
- # name has underscore used for mnemonics, strip if you dont need it
- id = "pld"
- name = N_("PLD Linux")
- pixmap = "custom.png"
- _description = N_("The default installation of %s includes a set of "
- "software applicable for general internet usage. "
- "What additional tasks would you like your system "
- "to include support for?")
- _descriptionFields = (productName,)
- sortPriority = 10000
- allowExtraRepos = True
-
- repopaths = { "base": ["PLD/i686/RPMS", "PLD/noarch/RPMS"], }
- taskMap = {'client': [
- (N_("GNOME Desktop"), [
- "gnome",
- "gnome_complete",
- "gnome_games",
- "gnome_themes",
- ]),
- (N_("KDE Desktop"), [
- "kde_kdepim",
- "kde_kdeedu",
- "kde_multimedia",
- "kde_koffice",
- "kde_network",
- "kde_graphics",
- "kde_admin",
- "kde_games",
- "kde_look"
- ]),
- (N_("Basic IceWM"), [
- "icewm",
- ]),
- (N_("WindowMaker"), [
- "wmaker",
- ]),
- (N_("General Development Tools"), [
- "devel"
- ]),
- (N_("Java Development Tools"), [
- "java"
- ]),
- ]}
-
- def setInstallData(self, anaconda):
- BaseInstallClass.setInstallData(self, anaconda)
- if not anaconda.isKickstart:
- BaseInstallClass.setDefaultPartitioning(self,
- anaconda.id.partitions,
- CLEARPART_TYPE_LINUX)
-
- def setGroupSelection(self, anaconda):
- grps = anaconda.backend.getDefaultGroups(anaconda)
- map(lambda x: anaconda.backend.selectGroup(x), grps)
-
- def setSteps(self, anaconda):
- dispatch = anaconda.dispatch
- BaseInstallClass.setSteps(self, anaconda);
- dispatch.skipStep("partition")
- dispatch.skipStep("regkey")
-
- # for rhel, we're putting the metadata under productpath
- def getPackagePaths(self, uri):
- rc = {}
- for (name, path) in self.repopaths.items():
- if not type(uri) == types.ListType:
- uri = [uri,]
- if not type(path) == types.ListType:
- path = [path,]
-
- lst = []
- for i in uri:
- for p in path:
- lst.append("%s/%s" % (i, p))
-
- rc[name] = lst
-
- log.info("package paths is %s" %(rc,))
- return rc
-
- def handleRegKey(self, key, intf, interactive = True):
- self.repopaths = { "base": "%s" %(productPath,) }
- self.tasks = self.taskMap[productPath.lower()]
- self.installkey = key
-
- try:
- inum = instnum.InstNum(key)
- except Exception, e:
- if True or not BETANAG: # disable hack keys for non-beta
- # make sure the log is consistent
- log.info("repopaths is %s" %(self.repopaths,))
- raise
- else:
- inum = None
-
- if inum is not None:
- # make sure the base products match
- if inum.get_product_string().lower() != productPath.lower():
- raise ValueError, "Installation number incompatible with media"
-
- for name, path in inum.get_repos_dict().items():
- # virt is only supported on i386/x86_64. so, let's nuke it
- # from our repo list on other arches unless you boot with
- # 'linux debug'
- if name.lower() == "virt" and ( \
- rhpl.getArch() not in ("x86_64","i386")
- and not flags.debug):
- continue
- self.repopaths[name.lower()] = path
- log.info("Adding %s repo" % (name,))
-
- else:
- key = key.upper()
- # simple and stupid for now... if C is in the key, add Clustering
- # if V is in the key, add Virtualization. etc
- if key.find("C") != -1:
- self.repopaths["cluster"] = "Cluster"
- log.info("Adding Cluster option")
- if key.find("S") != -1:
- self.repopaths["clusterstorage"] = "ClusterStorage"
- log.info("Adding ClusterStorage option")
- if key.find("W") != -1:
- self.repopaths["workstation"] = "Workstation"
- log.info("Adding Workstation option")
- if key.find("V") != -1:
- self.repopaths["virt"] = "VT"
- log.info("Adding Virtualization option")
-
- for repo in self.repopaths.values():
- if not self.taskMap.has_key(repo.lower()):
- continue
-
- for task in self.taskMap[repo.lower()]:
- if task not in self.tasks:
- self.tasks.append(task)
- self.tasks.sort()
-
- log.info("repopaths is %s" %(self.repopaths,))
-
- def getBackend(self):
- return yuminstall.YumBackend
-
- def __init__(self, expert):
- BaseInstallClass.__init__(self, expert)
-
- self.repopaths = { "base": "%s" %(productPath,) }
-
- # minimally set up tasks in case no key is provided
- self.tasks = self.taskMap[productPath.lower()]
-
+++ /dev/null
-#!/bin/bash
-LANG=C
-
-PATH=$PATH:/sbin:/usr/sbin
-IMAGEUUID=$(date +%Y%m%d%H%M).$(uname -i)
-
-usage () {
- echo "usage: mk-images <pkgsrc> <toplevel> <template> <imgdir> <buildarch> <productname> <version> [<productpath>]"
- exit 0
-}
-
-DEBUG=""
-if [ "$1" == "--debug" ]; then
- DEBUG="--debug"
- shift
-fi
-
-if [ -z "$1" -o -z "$2" -o -z "$3" -o -z "$4" -o -z "$5" -o -z "$6" -o -z "$7" -o -z "$8" ]; then usage; fi
-
-PRODUCT=$6
-VERSION=$7
-PRODUCTPATH=$8
-if [ -n "$9" ]; then
- BUGURL=$9
-fi
-
-TOPDIR=$(echo $0 | sed "s,/[^/]*$,,")
-if [ $TOPDIR = $0 ]; then
- $TOPDIR="."
-fi
-TOPDIR=$(cd $TOPDIR; pwd)
-
-# modules that are needed. this is the generic "needed for every arch" stuff
-COMMONMODS="fat vfat nfs sunrpc lockd floppy cramfs loop edd pcspkr squashfs"
-USBMODS="ohci-hcd uhci-hcd ehci-hcd hid mousedev usb-storage sd_mod sr_mod ub"
-FIREWIREMODS="ieee1394 ohci1394 sbp2"
-IDEMODS="ide-cd"
-SCSIMODS="sr_mod sg st sd_mod scsi_mod iscsi_tcp"
-FSMODS="fat msdos vfat ext3 reiserfs jfs xfs"
-LVMMODS="dm-mod dm-zero dm-snapshot dm-mirror"
-RAIDMODS="md raid0 raid1 raid5 raid6"
-SECSTAGE="$RAIDMODS $LVMMODS $FSMODS $IDEMODS $SCSIMODS"
-BTERMMODS="vga16fb"
-PCMCIASOCKMODS="yenta_socket i82365 tcic pcmcia"
-INITRDMODS="$USBMODS $FIREWIREMODS $IDEMODS $SCSIMODS $FSMODS $LVMMODS $RAIDMODS $BTERMMODS $COMMONMODS $PCMCIASOCKMODS =scsi =net"
-
-# Set, verify, and create paths
- KERNELPATH=$1
- TOPDESTPATH=$2
- IMAGEPATH=$TOPDESTPATH/images
- FULLMODPATH=/tmp/instimagemods.$$
- FINALFULLMODPATH=$4/modules
- INSTIMGPATH=$TOPDESTPATH/$PRODUCTPATH/base
- INSTIMGTEMPLATE=$3
- IMGPATH=$4
- KERNELBASE=/tmp/updboot.kernel.$$
- MODDEPS=$KERNELBASE/moddeps
- MODALIAS=$KERNELBASE/modules.alias
- BUILDARCH=$5
-
- KERNELNAME=vmlinuz
-
- if [ "$BUILDARCH" = "ia64" ]; then
- KERNELDIR="/boot/efi/EFI/redhat"
- else
- KERNELDIR="/boot"
- fi
-
- if [ "$BUILDARCH" = "sparc64" ]; then
- BASEARCH=sparc
- else
- BASEARCH=$BUILDARCH
- fi
-
- # explicit block size setting for some arches (FIXME: we compose
- # ppc64-ish trees as ppc, so we have to set the "wrong" block size)
- if [ "$BUILDARCH" = "sparc64" ]; then
- CRAMBS="--blocksize 8192"
- elif [ "$BUILDARCH" = "sparc" ]; then
- CRAMBS="--blocksize 4096"
- else
- CRAMBS=""
- fi
-
- if [ $BUILDARCH = x86_64 -o $BUILDARCH = s390x ]; then
- LIBDIR=lib64
- else
- LIBDIR=lib
- fi
-
- FONTARCH=${BASEARCH}
- if [ $FONTARCH = i686 ]; then
- FONTARCH=i386
- fi
-
- rm -rf $IMAGEPATH
- rm -rf $FULLMODPATH
- rm -rf $FINALFULLMODPATH
- rm -rf $KERNELBASE
- mkdir -p $IMAGEPATH
- mkdir -p $FULLMODPATH
- mkdir -p $FINALFULLMODPATH
- mkdir -p $KERNELBASE
- mkdir -p $INSTIMGPATH
-
-# Stuff that we need
- TRIMMODALIAS=$IMGPATH/usr/lib/anaconda-runtime/trimmodalias
- TRIMPCIIDS=$IMGPATH/usr/lib/anaconda-runtime/trimpciids
- GETKEYMAPS=$IMGPATH/usr/lib/anaconda-runtime/getkeymaps
- KEYMAPS=/tmp/keymaps-$BUILDARCH.$$
- SCREENFONT=$IMGPATH/usr/lib/anaconda-runtime/screenfont-${FONTARCH}.gz
- GETMODDEPS=$IMGPATH/usr/lib/anaconda-runtime/moddeps
- MODLIST=$IMGPATH/usr/lib/anaconda-runtime/modlist
- MODINFO=$IMGPATH/usr/lib/anaconda-runtime/loader/module-info
- FILTERMODDEPS=$IMGPATH/usr/lib/anaconda-runtime/filtermoddeps
- LOADERBINDIR=$IMGPATH/usr/lib/anaconda-runtime/loader
- BOOTDISKDIR=$IMGPATH/usr/lib/anaconda-runtime/boot
- LANGTABLE=$IMGPATH/usr/lib/anaconda/lang-table
- PCIIDS=$IMGPATH/usr/share/hwdata/pci.ids
- XDRIVERS=$IMGPATH/usr/share/hwdata/videoaliases
- XDRIVERDESCS=$IMGPATH/usr/share/hwdata/videodrivers
- CACHE=$KERNELBASE/.cache
- MODULESUSED=$KERNELBASE/modules-used
-
- touch $MODULESUSED
-
- REQUIREMENTS="$TRIMMODALIAS $TRIMPCIIDS $PCIIDS $XDRIVERDESCS $GETMODDEPS $MODINFO
- $FILTERMODDEPS $LANGTABLE $GETKEYMAPS"
-
- dieLater=
- for n in $REQUIREMENTS; do
- if [ ! -f $n ]; then
- echo "$n doesn't exist"
- dieLater=1
- fi
- done
-
- for n in $BOOTDISKDIR; do
- if [ ! -d $n ]; then
- echo "$n doesn't exist"
- dieLater=1
- fi
- done
-
- if [ -n "$dieLater" ]; then exit 1; fi
-
- if [ "$BUILDARCH" != "s390" -a "$BUILDARCH" != "s390x" ]; then
- # go ahead and create the keymaps so we only have to do it once
- if [ -f $IMGPATH/usr/lib/anaconda-runtime/keymaps-override-$BUILDARCH ]; then
- echo "Found keymap override, using it"
- cp $IMGPATH/usr/lib/anaconda-runtime/keymaps-override-$BUILDARCH $KEYMAPS
- else
- echo "Running: $GETKEYMAPS $BUILDARCH $KEYMAPS $IMGPATH"
- $GETKEYMAPS $BUILDARCH $KEYMAPS $IMGPATH
- if [ $? != 0 ]; then
- echo "Unable to create keymaps and thus can't create initrd."
- exit 1
- fi
- fi
- fi
-
-findPackage() {
- dir=$1
- name=$2
-
- for n in $dir/$name*{$KERNELARCH,noarch}.rpm; do
- thisName=$(rpm --nodigest --nosignature --qf '%{NAME}' -qp $n)
- if [ -z "$thisName" ]; then
- continue
- fi
- if [ $thisName = $name ]; then
- echo $n
- return
- fi
- done
-
- echo "cannot find package $name in path $dir" >&2
-}
-
-findmodule () {
- if [ ! -f $CACHE ]; then
- find $KERNELROOT/lib/modules/ > $CACHE
- fi
-
- grep "/$1\.ko" $CACHE
-}
-
-rundepmod () {
- what=$1
- final=$2
-
- $FAKEARCH /sbin/depmod -a -F $KERNELROOT/boot/System.map-$version \
- -b $KERNELROOT $version
- mv $KERNELROOT/lib/modules/$version/modules.alias $MODALIAS
-
- cat $KERNELROOT/lib/modules/$version/modules.dep | $FILTERMODDEPS > $final
-}
-
-getmoddeps () {
- what=$1
- final=$2
-
- for mod in $what ; do
- mod=$(echo $mod | sed 's/\.ko */|^/g;s/\.ko$//;s/.*\///')
- egrep $mod $MODDEPS >> $final.foo
- done
- mv $final.foo $final
-}
-
-intcopymodules () {
- dir=$2
-
- for n in $1; do
- m=$(findmodule $n)
- if [ -z "$m" ]; then
- [ -n "$DEBUG" ] && echo "Module $n not found in kernel rpm" >&2
- else
- echo $n >> $MODULESUSED
- for o in $m ; do
- echo $n
- ver=$(echo $o |cut -d / -f 7)
- myarch=$(echo $o |cut -d / -f 4)
- if ! [ -d $dir/$ver/$myarch ] ; then mkdir -p $dir/$ver/$myarch ; fi
- if ! cp $o $dir/$ver/$myarch; then
- echo "Failed to copy $o to $dir/$ver/$myarch (for module $n)" >&2
- fi
- done
- fi
- done
-}
-
-# This loops to make sure it resolves dependencies of dependencies of...
-resdeps () {
- items="$*"
-
- before=1
- after=2
-
- while [ $before != $after ]; do
- before=`echo $items | wc -c`
-
- if [ $? != "0" ] ; then
- kill -9 $$
- fi
- list=`$GETMODDEPS -m $MODDEPS $items`
- items=$(for n in $items $list; do echo $n; done | sort -u)
- after=`echo $items | wc -c`
- done
-
- echo $items
-}
-
-expandModuleSet() {
- SET=""
- for name in $1; do
- char=$(echo $name | cut -c1)
- if [ $char = '=' ]; then
- NAME=$(echo $name | cut -c2-)
- SET="$SET $($MODLIST --modinfo-file $MODINFO $NAME)"
- elif [ $char = '+' ]; then
- NAME=$(echo $name | cut -c2-)
-
- # all of the modules of this type
- $MODLIST --modinfo-file $MODINFO $NAME > /tmp/emsAll.$$
- # the modules used that are of this type
- sort -u $MODULESUSED | cat - /tmp/emsAll.$$ | sort |
- uniq -d > /tmp/emsUsed.$$
- # the modules that are of this type, but not used
- SET="$SET $(cat /tmp/emsAll.$$ /tmp/emsUsed.$$ | sort | uniq -u)"
-
- rm -f /tmp/emsAll.$$ /tmp/emsUsed.$$
- else
- SET="$SET $name"
- fi
- done
-
- echo $SET
-}
-
-makemoduleball() {
- unset MMB_DD
- MMB_MODINFO="module-info"
- MMB_NAME="modules.cgz"
-
- while [ x$(echo $1 | cut -c1-2) = x"--" ]; do
- if [ "$1" = "--dd" ]; then
- MMB_DD="$2"
- shift; shift
- MMB_MODINFO="modinfo"
- continue
- elif [ "$1" = "--name" ]; then
- MMB_NAME="$2"
- shift; shift
- continue
- fi
- echo "unknown option passed to $0"
- exit 1
- done
-
- MMB_DIR=$1
- MMB_MODULESET=$(resdeps $2)
-
- rm -rf $MMB_DIR/modules $MMB_DIR/$MMB_NAME $MMB_DIR/modules.dep $MMB_DIR/modules.alias \
- $MMB_DIR/modules.pcimap $MMB_DIR/pcitable $MMB_DIR/$MMB_MODINFO \
- $MMB_DIR/pci.ids
- mkdir -p $MMB_DIR/modules
-
- MMB_MODULESET=$(intcopymodules "$MMB_MODULESET" $MMB_DIR/modules)
-
- pushd $MMB_DIR/modules > /dev/null
-
- $MODLIST --modinfo-file $MODINFO --ignore-missing --modinfo \
- $MMB_MODULESET > ../$MMB_MODINFO
-
- getmoddeps "$(find . -name *.ko)" ../modules.dep
-
- # create the modules.alias file
- $TRIMMODALIAS $(find . -name *.ko -exec basename {} \;) < $MODALIAS > ../modules.alias
-
- # create the pci.ids, from modules.alias and the X driver aliases
- awk '!/^(\t\t|#)/ { print ;if ($0 == "ffff Illegal Vendor ID") nextfile; }' < $PCIIDS | \
- $TRIMPCIIDS ../modules.alias $XDRIVERS/* > ../pci.ids
-
- if [ -n "$MMB_DD" ]; then
- echo $MMB_DD > $MMB_DIR/rhdd
- fi
-
- find . -type f | cpio --quiet -H crc -o | gzip -9 > ../$MMB_NAME
- cd ..
- rm -rf modules
- chmod 644 *
- popd > /dev/null
-}
-
-makeproductfile() {
- root=$1
-
- rm -f $root/.buildstamp
- echo $IMAGEUUID > $root/.buildstamp
- echo $PRODUCT >> $root/.buildstamp
- echo $VERSION >> $root/.buildstamp
- echo $PRODUCTPATH >> $root/.buildstamp
- if [ -n "$BUGURL" ]; then
- echo $BUGURL >> $root/.buildstamp
- fi
-}
-
-setupShellEnvironment() {
- # setup password/group entries
- cat > $MBD_DIR/etc/passwd << EOF
-root::0:0::/:/sbin/loader
-debug::0:0:debug shell:/:/bin/bash
-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
-EOF
- cat > $MBD_DIR/etc/group << EOF
-root:x:0:root
-tty:x:5:
-EOF
- echo "sshd:x:74:" >> $MBD_DIR/etc/group
- echo "telnet 23/tcp" > $MBD_DIR/etc/services
- echo "tcp 6 TCP" > $MBD_DIR/etc/protocols
-
- # PAM configuration
- for i in pam_limits.so pam_env.so pam_unix.so pam_deny.so; do
- cp -f $IMGPATH/$LIBDIR/security/$i $MBD_DIR/$LIBDIR/security
- done
-
- cp -f $IMGPATH/etc/pam.d/other $MBD_DIR/etc/pam.d
- cat > $MBD_DIR/etc/pam.d/login << EOF
-#%PAM-1.0
-auth required pam_env.so
-auth sufficient pam_unix.so likeauth nullok
-auth required pam_deny.so
-account required pam_unix.so
-password sufficient pam_unix.so nullok use_authtok md5 shadow
-password required pam_deny.so
-session required pam_limits.so
-session required pam_unix.so
-EOF
- cp -f $MBD_DIR/etc/pam.d/login $MBD_DIR/etc/pam.d/sshd
- cp -f $MBD_DIR/etc/pam.d/login $MBD_DIR/etc/pam.d/remote
-
- cp -f $IMGPATH/etc/security/{limits.conf,pam_env.conf} $MBD_DIR/etc/security/
-
- # setup xinetd for telnet
- cp -f $IMGPATH/etc/xinetd.conf $MBD_DIR/etc/xinetd.conf
- mkdir -p $MBD_DIR/etc/xinetd.d
- cat > $MBD_DIR/etc/xinetd.d/telnet <<EOF
-service telnet
-{
- flags = REUSE
- socket_type = stream
- wait = no
- user = root
- server = /sbin/in.telnetd
- log_on_failure += USERID
- disable = no
-}
-EOF
-
- # key generation takes ages on s390, you really don't want this for every
- # installation attempt. These are NOT the keys of the installed system!
- mkdir -m 0700 -p $MBD_DIR/etc/ssh
- echo -n "Generating SSH1 RSA host key: "
- /usr/bin/ssh-keygen -q -t rsa1 -f $MBD_DIR/etc/ssh/ssh_host_key \
- -C '' -N '' >&/dev/null
- echo
- echo -n "Generating SSH2 RSA host key: "
- /usr/bin/ssh-keygen -q -t rsa -f $MBD_DIR/etc/ssh/ssh_host_rsa_key \
- -C '' -N '' >&/dev/null
- echo
- echo -n "Generating SSH2 DSA host key: "
- /usr/bin/ssh-keygen -q -t dsa -f $MBD_DIR/etc/ssh/ssh_host_dsa_key \
- -C '' -N '' >&/dev/null
- echo
- (cd $MBD_DIR/etc/ssh; \
- chmod 600 ssh_host_key ssh_host_rsa_key ssh_host_dsa_key; \
- chmod 644 ssh_host_key.pub ssh_host_rsa_key.pub ssh_host_dsa_key.pub; )
-
-
- cat > $MBD_DIR/etc/ssh/sshd_config <<EOF
-Port 22
-HostKey /etc/ssh/ssh_host_key
-HostKey /etc/ssh/ssh_host_rsa_key
-HostKey /etc/ssh/ssh_host_dsa_key
-PermitRootLogin yes
-IgnoreRhosts yes
-StrictModes yes
-X11Forwarding yes
-X11DisplayOffset 10
-PrintMotd yes
-XAuthLocation /sbin/xauth
-KeepAlive yes
-SyslogFacility AUTHPRIV
-RSAAuthentication yes
-PasswordAuthentication yes
-PermitEmptyPasswords yes
-PermitUserEnvironment yes
-EOF
- chmod 600 $MBD_DIR/etc/ssh/sshd_config
-
- # copy in the binaries
- cp -f $IMGPATH/bin/login $MBD_DIR/sbin/login
- cp -f $IMGPATH/usr/sbin/sshd $MBD_DIR/sbin/sshd
- cp -f $IMGPATH/usr/sbin/xinetd $MBD_DIR/sbin/xinetd
- cp -f $IMGPATH/usr/sbin/in.telnetd $MBD_DIR/sbin/in.telnetd
- cp -f $IMGPATH/bin/bash $MBD_DIR/sbin/bash
- cp -f $IMGPATH/bin/busybox $MBD_DIR/sbin/busybox
-
- # make some symlinks
- ln -sf bash $MBD_DIR/bin/sh
- (cd $MBD_DIR/sbin;
- set $(./busybox 2>&1| awk '/^\t([[:alnum:]_\[]+,)+/' | sed 's/,//g' | sed 's/ +//');
- while [ -n "$1" ]; do
- if [ $1 != "busybox" -a $1 != "sh" ]; then
- # if file doesnt already exist, link to busybox
- if [ ! -f "$1" ]; then
- ln -sf ./busybox $1
- else
- [ -n "$DEBUG" ] && echo "Overriding busybox version of $1"
- fi
- fi
- shift
- done )
-
- # and copy libraries too
- mkdir -p $MBD_DIR/$LIBDIR
- for lib in $IMGPATH/$LIBDIR/libc.so* \
- $IMGPATH/$LIBDIR/libc-*.so* \
- $IMGPATH/$LIBDIR/ld-*.so* \
- $IMGPATH/$LIBDIR/ld.so* \
- $IMGPATH/$LIBDIR/ld64.so* \
- $IMGPATH/$LIBDIR/libtermcap.so* \
- $IMGPATH/$LIBDIR/libpam.so* \
- $IMGPATH/$LIBDIR/libdl.so* \
- $IMGPATH/$LIBDIR/libdl-*.so* \
- $IMGPATH/$LIBDIR/libnss_files* \
- $IMGPATH/$LIBDIR/libnsl* \
- $IMGPATH/$LIBDIR/libutil.so* \
- $IMGPATH/$LIBDIR/libutil-*.so* \
- $IMGPATH/$LIBDIR/libcrypt*so* \
- $IMGPATH/$LIBDIR/libselinux*so* \
- $IMGPATH/$LIBDIR/libsepol*so* \
- $IMGPATH/$LIBDIR/libattr*so* \
- $IMGPATH/$LIBDIR/libresolv.so* \
- $IMGPATH/$LIBDIR/libresolv-*.so* \
- $IMGPATH/$LIBDIR/libm.so* \
- $IMGPATH/$LIBDIR/libm-*.so* \
- $IMGPATH/usr/$LIBDIR/libz.so* \
- $IMGPATH/$LIBDIR/libssl* \
- $IMGPATH/$LIBDIR/libcom_err* \
- $IMGPATH/$LIBDIR/libe2p* \
- $IMGPATH/$LIBDIR/libuuid* \
- $IMGPATH/usr/$LIBDIR/libwrap*.so* \
- $IMGPATH/usr/X11R6/$LIBDIR/libX11.so* \
- $IMGPATH/usr/X11R6/$LIBDIR/libXmuu.so* \
- $IMGPATH/usr/X11R6/$LIBDIR/libXext.so* \
- $IMGPATH/usr/X11R6/$LIBDIR/libXt.so* \
- $IMGPATH/usr/X11R6/$LIBDIR/libSM.so* \
- $IMGPATH/usr/X11R6/$LIBDIR/libICE.so* ; do
- if [ -e $lib ]; then cp -df $lib $MBD_DIR/$LIBDIR/ ; fi
- done
-
- mkdir -p $MBD_DIR/usr/$LIBDIR
- for lib in $IMGPATH/usr/$LIBDIR/libkrb5.so* \
- $IMGPATH/usr/$LIBDIR/libkrb5support.so* \
- $IMGPATH/usr/$LIBDIR/libgssapi_krb5.so* \
- $IMGPATH/usr/$LIBDIR/libk5crypto.so* \
- $IMGPATH/usr/$LIBDIR/libcom_err.so* ; do
- if [ -e $lib ]; then cp -df $lib $MBD_DIR/usr/$LIBDIR/ ; fi
- done
-}
-
-makeinitrd() {
- EXTRAINITRDPATH=""
- INITRDSIZE=""
- KEEP=""
- PADSIZE=""
- LOADERBIN=""
- INITRDMODULES=""
- MODULEBALLNAME="modules.cgz"
- MYLANGTABLE=$LANGTABLE
- MYLOADERTR=loader.tr
- while [ x$(echo $1 | cut -c1-2) = x"--" ]; do
- if [ $1 = "--initrdto" ]; then
- EXTRAINITRDPATH=$2
- shift; shift
- continue
- elif [ $1 = "--keep" ]; then
- KEEP=yes
- shift
- continue
- elif [ $1 = "--initrdsize" ]; then
- INITRDSIZE=$2
- shift; shift
- continue
- elif [ $1 = "--loaderbin" ]; then
- LOADERBIN=$2
- shift; shift
- continue
- elif [ $1 = "--modules" ]; then
- INITRDMODULES=$2
- shift; shift
- continue
- elif [ $1 = "--moduleballname" ]; then
- MODULEBALLNAME=$2
- shift; shift
- continue
- fi
- echo "Unknown option passed to makeinitrd"
- exit 1
- done
- if [ -z "$LOADERBIN" ]; then
- echo "no loader binary specified!" >&2
- exit 1
- fi
- if [ -z "$INITRDMODULES" ]; then
- echo "warning: no loader modules specified!" >&2
- fi
- if [ -z "$INITRDSIZE" ]; then
- echo "I don't know how big to make the initrd image!" >&2
- exit 1
- fi
-
- MBD_DIR=/tmp/makebootdisk.dir.$$
- MBD_FSIMAGE=/tmp/makebootdisk.initrdimage.$$
- MBD_BOOTTREE=/tmp/makebootdisk.tree.$$
-
- rm -rf $MBD_DIR MBD_FSIMAGE
- mkdir -p $MBD_DIR/modules
- mkdir -p $MBD_DIR/sbin
- mkdir -p $MBD_DIR/dev
- mkdir -p $MBD_DIR/etc
- mkdir -p $MBD_DIR/proc
- mkdir -p $MBD_DIR/selinux
- mkdir -p $MBD_DIR/sys
- mkdir -p $MBD_DIR/tmp
- mkdir -p $MBD_DIR/etc/terminfo/{a,b,d,l,s,v,x}
- mkdir -p $MBD_DIR/var/state
- mkdir -p $MBD_DIR/var/run
- mkdir -p $MBD_DIR/var/lock/rpm
-
- if [ "$BUILDARCH" = "ppc" -o "$BUILDARCH" = "ppc64" ]; then
- mkdir -p $MBD_DIR/dev/iseries
- fi
-
- if [ "$BUILDARCH" = "s390" -o "$BUILDARCH" = "s390x" ]; then
- mkdir -m 111 -p $MBD_DIR/var/empty/sshd
- mkdir -p $MBD_DIR/etc/{pam.d,security}
- mkdir -p $MBD_DIR/$LIBDIR/security
- cp $IMGPATH/$LIBDIR/libpam_misc.so.0.* $MBD_DIR/$LIBDIR/libpam_misc.so.0
- ln -s /tmp $MBD_DIR/var/state/xkb
- cp $IMGPATH/usr/X11R6/bin/xauth $MBD_DIR/sbin/xauth
- cp $IMGPATH/usr/sbin/cmsfs* $MBD_DIR/sbin/
- fi
-
- if [ -n "$INITRDMODULES" ]; then
- MODSET=`expandModuleSet "$INITRDMODULES"`
- makemoduleball --name $MODULEBALLNAME $MBD_DIR/modules "$MODSET"
- fi
-
- cat > $MBD_DIR/etc/passwd << EOF
- root::0:0:root:/:/bin/bash
-EOF
-
- # set up the arch bits
- echo $arch > $MBD_DIR/etc/arch
-
- install -s -m 755 $LOADERBINDIR/$LOADERBIN $MBD_DIR/sbin/loader
- strip $MBD_DIR/sbin/loader
- if [ "$BUILDARCH" != "s390" -a "$BUILDARCH" != "s390x" ]; then
- install -s -m 755 $LOADERBINDIR/init $MBD_DIR/sbin
- strip $MBD_DIR/sbin/init
- ln -s ./init $MBD_DIR/sbin/shutdown
- ln -s ./init $MBD_DIR/sbin/halt
- ln -s ./init $MBD_DIR/sbin/poweroff
- else
- install -s -m 755 $LOADERBINDIR/shutdown $MBD_DIR/sbin/shutdown
- install -m 755 $IMGPATH/usr/lib/anaconda-runtime/loader/linuxrc.s390 $MBD_DIR/sbin/init
- install -m 755 $IMGPATH/usr/sbin/dasdfmt $MBD_DIR/sbin/dasdfmt
- fi
-
- if [ "$BUILDARCH" != "s390" -a "$BUILDARCH" != "s390x" ]; then
- install -m 644 $KEYMAPS $MBD_DIR/etc/keymaps.gz
- install -m 644 $SCREENFONT $MBD_DIR/etc/screenfont.gz
- fi
- install -m 644 $MYLANGTABLE $MBD_DIR/etc/lang-table
-
- install -m 644 $LOADERBINDIR/$MYLOADERTR $MBD_DIR/etc/loader.tr
- for i in a/ansi d/dumb l/linux s/screen v/vt100 v/vt100-nav v/vt102 x/xterm x/xterm-color b/bterm g/gnome ; do
- [ -f $IMGPATH/usr/share/terminfo/$i ] && \
- install -m 644 $IMGPATH/usr/share/terminfo/$i $MBD_DIR/etc/terminfo/$i
- done
-
- makeproductfile $MBD_DIR
-
- for n in insmod rmmod modprobe; do
- ln -s loader $MBD_DIR/sbin/$n
- done
-
- ln -s /usr/bin/sh $MBD_DIR/sbin/sh
- ln -s /sbin/init $MBD_DIR/init
- ln -s /proc/mounts $MBD_DIR/etc/mtab
- ln -s sbin $MBD_DIR/bin
- mkdir -p $MBD_DIR/var/lib
- ln -s ../../tmp $MBD_DIR/var/lib/xkb
-
- # s390/s390x need sshd/telnet setup
- if [ "$BUILDARCH" = "s390" -o "$BUILDARCH" = "s390x" ]; then
- setupShellEnvironment
- fi
-
-cat > $MBD_DIR/.profile <<EOF
-PATH=/bin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/mnt/sysimage/sbin:/mnt/sysimage/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin
-export PATH
-EOF
-
- rm -f $MBD_FSIMAGE
- (cd $MBD_DIR; find . |cpio --quiet -c -o) |gzip -9 > $MBD_FSIMAGE
-
- size=$(du $MBD_FSIMAGE | awk '{ print $1 }')
-
- echo "Wrote $MBD_FSIMAGE (${size}k compressed)"
-
- if [ -n "$EXTRAINITRDPATH" ]; then
- mkdir -p `dirname $EXTRAINITRDPATH`
- cp -a $MBD_FSIMAGE $EXTRAINITRDPATH
- fi
-
- if [ -z "$KEEP" ]; then
- rm -rf $MBD_FSIMAGE $MBD_BOOTTREE
- fi
-}
-
-makeinstimage () {
- imagename=$1
- type=$2
- tmpdir=/tmp/instimage.dir.$$
-
- rm -rf $tmpimage $tmpdir
- mkdir -p $mntpoint $tmpdir
-
- mkdir -p $tmpdir
- (cd $INSTIMGTEMPLATE; find . | cpio --quiet -p $tmpdir)
- makeproductfile $tmpdir
-
- if [ -z "$type" -o "$type" = "cramfs" ]; then
- echo "Running mkcramfs $CRAMBS $tmpdir $INSTIMGPATH/${imagename}2.img"
- mkfs.cramfs $CRAMBS $tmpdir /tmp/${imagename}2.img.$$
- elif [ "$type" = "squashfs" ]; then
- echo "Running mksquashfs $tmpdir /tmp/${imagename}2.img -all-root"
- mksquashfs $tmpdir /tmp/${imagename}2.img.$$ -all-root
- chmod 0644 /tmp/${imagename}2.img.$$
- fi
- cp /tmp/${imagename}2.img.$$ $INSTIMGPATH/${imagename}2.img
- size=$(ls -l $INSTIMGPATH/${imagename}2.img | awk '{print $5}')
- size=$(expr $size / 1024)
- echo "Wrote $INSTIMGPATH/${imagename}2.img (${size}k)..."
- rm -rf $tmpdir
-}
-
-makemainimage () {
- imagename=$1
- type=$2
- mmi_tmpimage=/tmp/instimage.img.$$
- mmi_mntpoint=/tmp/instimage.mnt.$$
-
- rm -rf $mmi_tmpimage $mmi_mntpoint
- mkdir $mmi_mntpoint
-
- if [ $type = "ext2" ]; then
- SIZE=$(du -sk $IMGPATH | awk '{ print int($1 * 1.1) }')
- if [ -d $IMGPATH/usr/lib/anaconda-runtime ]; then
- ERROR=$(du -sk $IMGPATH/usr/lib/anaconda-runtime | awk '{ print $1 }')
- SIZE=$(expr $SIZE - $ERROR)
- fi
- dd if=/dev/zero bs=1k count=${SIZE} of=$mmi_tmpimage 2>/dev/null
- mke2fs -q -F $mmi_tmpimage > /dev/null
- tune2fs -c0 -i0 $mmi_tmpimage >/dev/null
- mount -o loop $mmi_tmpimage $mmi_mntpoint
-
- (cd $IMGPATH; find . | fgrep -v "./usr/lib/anaconda-runtime" |
- cpio -H crc -o) | (cd $mmi_mntpoint; cpio -iumd)
- makeproductfile $mmi_mntpoint
- umount $mmi_mntpoint
- rmdir $mmi_mntpoint
- elif [ $type = "squashfs" ]; then
- makeproductfile $IMGPATH
- echo "Running mksquashfs $IMGPATH $mmi_tmpimage -all-root"
- mksquashfs $IMGPATH $mmi_tmpimage -all-root
- chmod 0644 $mmi_tmpimage
- SIZE=$(expr `cat $mmi_tmpimage | wc -c` / 1024)
- elif [ $type = "cramfs" ]; then
- makeproductfile $IMGPATH
- echo "Running mkcramfs $CRAMBS $IMGPATH $mmi_tmpimage"
- mkfs.cramfs $CRAMBS $IMGPATH $mmi_tmpimage
- SIZE=$(expr `cat $mmi_tmpimage | wc -c` / 1024)
- fi
-
- cp $mmi_tmpimage $INSTIMGPATH/${imagename}.img
- chmod 644 $INSTIMGPATH/${imagename}.img
-
- echo "Wrote $INSTIMGPATH/${imagename}.img (${SIZE}k)"
-
- rm $mmi_tmpimage
-}
-
-makeSecondStage() {
- echo "Building minstg.img"
- makeinstimage "minstg" "squashfs"
- [ $? = 0 ] || exit 1
- echo "Building stage2.img"
- makemainimage "stage2" "squashfs"
- [ $? = 0 ] || exit 1
-}
-
-doPostImages() {
- /bin/true
-}
-
-# source the architecture specific mk-images file so we can call functions
-# in it
-if [ ${BUILDARCH} = s390x ]; then
- # FIXME: this is a bad hack for s390, but better than copying for now
- source $TOPDIR/mk-images.s390
-elif [ ${BUILDARCH} = i686 ]; then
- source $TOPDIR/mk-images.i386
-else
- source $TOPDIR/mk-images.${BUILDARCH}
-fi
-
-# Find the kernel, unpack it, and verify it
-kerneltags="kernel"
-if [ "$BUILDARCH" = "ppc" -o "$BUILDARCH" = "ppc64" ]; then
- arches="ppc64pseries ppc64 ppc64iseries ppc"
-elif [ "$BUILDARCH" = "i686" ]; then
- arches="i386 i586 i686"
- kerneltags="kernel kernel-xenU"
-elif [ "$BUILDARCH" = "x86_64" ]; then
- arches="x86_64"
- kerneltags="kernel kernel-xenU"
-else
- arches="$BUILDARCH"
-fi
-
-foundakernel=""
-for KERNELARCH in $arches; do
- for kernelvers in $kerneltags; do
- kpackage=$(findPackage $KERNELPATH $kernelvers)
- if [ "$KERNELARCH" = "i586" -a ! -f "$kpackage" ]; then
- echo "No i586 kernel, trying i686..."
- KERNELARCH="i686"
- kpackage=$(findPackage $KERNELPATH $kernelvers)
- fi
-
- if [ ! -f "$kpackage" ]; then
- echo "kernel ($kernelvers) doesn't exist for $KERNELARCH. skipping"
- continue
- fi
-
- KERNELROOT=$KERNELBASE/$KERNELARCH
- mkdir -p $KERNELROOT/lib/modules/misc
-
- foundakernel="yes"
-
- if [ "${kernelvers}" = "kernel-xenU" ]; then kerneltag="xenU" ; fi
-
- version=$(rpm --nodigest --nosignature --qf '%{VERSION}-%{RELEASE}' -qp $kpackage)${kerneltag}
- arch=$(rpm --nodigest --nosignature --qf '%{ARCH}\n' -qp $kpackage)
- echo "unpacking $kpackage.$arch"
-
- rpm2cpio $kpackage | (cd $KERNELROOT; cpio --quiet -iumd)
-
- if [ ! -d "$KERNELROOT/lib/modules/$version" ]; then
- echo "$KERNELROOT/lib/modules/$version is not a valid modules directory" 2>&1
- exit 1
- fi
-
- if [ ! -f "$KERNELROOT/$KERNELDIR/${KERNELNAME}-$version" ]; then
- echo "$KERNELROOT/$KERNELDIR/${KERNELNAME}-$version does not exist"
- exit 1
- fi
-
- allmods=$(find $KERNELROOT/lib/modules/$version -name *.ko)
-
- rundepmod "$allmods" $MODDEPS
- find $KERNELROOT/lib/modules/$version > $CACHE
-
- # make the boot images
- makeBootImages
- done
-done
-
-doPostImages
-
-# do some clean up before making the cramfs of the second stage
-rm -rf $INSTIMGTEMPLATE/usr/lib/anaconda-runtime $INSTIMGTEMPLATE/usr/lib/syslinux $IMGPATH/usr/lib/syslinux
-
-if [ -n "$foundakernel" ]; then
- # make the second stage
- find $KERNELBASE/*/lib/modules/ > $CACHE
- makeSecondStage
- rm -rf $KERNELBASE
-fi
-
-cd $TOPDIR
+++ /dev/null
-SYSLINUX=$IMGPATH/usr/lib/syslinux/syslinux-nomtools
-
-if [ ! -f $SYSLINUX ]; then
- echo "Warning: nomtools syslinux doesn't exist"
- SYSLINUX=$IMGPATH/usr/bin/syslinux
- if [ ! -f $SYSLINUX ]; then
- echo "$SYSLINUX doesn't exist"
- exit 1
- fi
-fi
-
-prepareBootImage() {
- dd if=/dev/zero bs=1k count=$BOOTDISKSIZE of=/$MBD_TMPIMAGE 2>/dev/null
- mkdosfs -r 16 -C $MBD_TMPIMAGE $BOOTDISKSIZE >/dev/null
- $SYSLINUX $MBD_TMPIMAGE
- mount -o loop -t msdos $MBD_TMPIMAGE $MBD_BOOTTREE
-
- prepareBootTree
-}
-
-# prepare a directory with the kernel, initrd, and various message files
-# used to populate a boot image
-prepareBootTree() {
- (cd $BOOTDISKDIR; find . ! -name "*.msg" -maxdepth 1 ! -type d | cpio --quiet -p $MBD_BOOTTREE)
-
- cp $MBD_FSIMAGE $MBD_BOOTTREE/initrd.img
- cp $KERNELROOT/boot/vmlinuz-* $MBD_BOOTTREE/vmlinuz
-
- $IMGPATH/usr/lib/anaconda-runtime/splashtolss.sh $BOOTDISKDIR/syslinux-splash.png $BOOTDISKDIR/splash.lss
- if [ $? != 0 ]; then
- echo $0: Failed to create splash.lss
- exit 1
- fi
- cp $BOOTDISKDIR/splash.lss $MBD_BOOTTREE/splash.lss
- rm -f $MBD_BOOTTREE/syslinux-splash.png
- rm -f $MBD_BOOTTREE/memtest*
- for file in $BOOTDISKDIR/*.msg; do
- filename=`basename $file`
- sed -e "s/@VERSION@/$VERSION/g" $file > $MBD_BOOTTREE/$filename
- done
- if [ $? != 0 ]; then
- echo $0: Failed to copy messages from $BOOTDISKDIR to $MBD_BOOTTREE.
- umount $MBD_BOOTTREE
- rm -rf $MBD_BOOTTREE $MBD_TMPIMAGE
- exit 1
- fi
-}
-
-mkdir -p $TOPDESTPATH/images/pxeboot
-cat > $TOPDESTPATH/images/README <<EOF
-This directory contains image files that can be used to create media
-capable of starting the $PRODUCT installation process.
-
-The boot.iso file is an ISO 9660 image of a bootable CD-ROM. It is useful
-in cases where the CD-ROM installation method is not desired, but the
-CD-ROM's boot speed would be an advantage.
-
-To use this image file, burn the file onto CD-R (or CD-RW) media as you
-normally would.
-
-The diskboot.img file is a VFAT filesystem image that can be written to a
-USB pendrive or other bootable media larger than a floppy. Note that
-booting via USB is dependent on your BIOS supporting this. It should
-be written to the device using dd.
-EOF
-
-makeBootImages() {
- if [ "$kerneltag" != "xenU" ]; then
- echo "Building $KERNELARCH initrd.img"
- makeinitrd --initrdto $TOPDESTPATH/images/pxeboot/initrd.img \
- --initrdsize 7000 \
- --loaderbin loader \
- --modules "$INITRDMODS"
- [ $? = 0 ] || exit 1
-
- if [ -f $IMGPATH/usr/lib/syslinux/isolinux.bin ]; then
- echo "Building isolinux directory"
- MBD_BOOTTREE=$TOPDESTPATH/isolinux
- MBD_FSIMAGE=$TOPDESTPATH/images/pxeboot/initrd.img
- mkdir $MBD_BOOTTREE 2>/dev/null
- cp $IMGPATH/usr/lib/syslinux/isolinux.bin $MBD_BOOTTREE/isolinux.bin
-
- prepareBootTree
-
- # isolinux needs the config file to be isolinux.cfg
- mv $MBD_BOOTTREE/syslinux.cfg $MBD_BOOTTREE/isolinux.cfg
-
- # copy in memtest if present
- if [ -f $IMGPATH/usr/lib/anaconda-runtime/boot/memtest* ]; then
- cp $IMGPATH/usr/lib/anaconda-runtime/boot/memtest* $MBD_BOOTTREE/memtest
- echo -e "label memtest86\n kernel memtest\n append -\n" >> $MBD_BOOTTREE/isolinux.cfg
- fi
- else
- echo "No isolinux binaries. Skipping isolinux creation"
- fi
-
- # clean up time -- being very explicit about what's linked
- if [ -f $TOPDESTPATH/isolinux/vmlinuz -a -f $TOPDESTPATH/isolinux/initrd.img ] ;then
- echo "Cleaning up images"
- # links for the pxeboot bits
- rm -f $TOPDESTPATH/images/pxeboot/*
- ln $TOPDESTPATH/isolinux/vmlinuz $TOPDESTPATH/images/pxeboot/vmlinuz
- ln $TOPDESTPATH/isolinux/initrd.img $TOPDESTPATH/images/pxeboot/initrd.img
-
- # links for the autoboot bits
- if [ -f $TOPDESTPATH/dosutils/loadlin.exe ]; then
- rm -f $TOPDESTPATH/dosutils/autoboot/*
- mkdir -p $TOPDESTPATH/dosutils/autoboot/
- ln $TOPDESTPATH/isolinux/vmlinuz $TOPDESTPATH/dosutils/autoboot/vmlinuz
- ln $TOPDESTPATH/isolinux/initrd.img $TOPDESTPATH/dosutils/autoboot/initrd.img
- fi
- fi
-
- # now make a boot iso
- mkdir -p $TOPDESTPATH/images/isopath
- cp -rl $TOPDESTPATH/isolinux $TOPDESTPATH/images/isopath
- mkisofs -quiet -o $TOPDESTPATH/images/boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "$PRODUCT" -T $TOPDESTPATH/images/isopath
- rm -rf $TOPDESTPATH/images/isopath
-
- # now make a boot pendrive image
- mkdir -p $TOPDESTPATH/images/fobpath
- dd if=/dev/zero of=$TOPDESTPATH/images/diskboot.img bs=1M count=8 2>/dev/null
- mkdosfs $TOPDESTPATH/images/diskboot.img
- $SYSLINUX $TOPDESTPATH/images/diskboot.img
- mount -o loop $TOPDESTPATH/images/diskboot.img $TOPDESTPATH/images/fobpath
- cp -r $TOPDESTPATH/isolinux/* $TOPDESTPATH/images/fobpath/
- grep -v local $TOPDESTPATH/images/fobpath/isolinux.cfg > $TOPDESTPATH/images/fobpath/syslinux.cfg
- rm -f $TOPDESTPATH/images/fobpath/isolinux.cfg
- umount -f $TOPDESTPATH/images/fobpath
- rmdir $TOPDESTPATH/images/fobpath
-
- cat > $TOPDESTPATH/images/pxeboot/README <<EOF
-The files in this directory are useful for booting a machine via PXE.
-
-The following files are available:
-vmlinuz - the BOOT kernel used for the installer
-initrd.img - an initrd with support for all install methods and
- drivers supported for installation of $PRODUCT
-EOF
-
- else # set up the boot stuff for the xen guest kernel
- echo "Building $KERNELARCH guest initrd.img"
- mkdir -p $TOPDESTPATH/images/xen
- makeinitrd --initrdto $TOPDESTPATH/images/xen/initrd.img \
- --initrdsize 7000 \
- --loaderbin loader \
- --modules "$INITRDMODS"
- [ $? = 0 ] || exit 1
- cp $KERNELROOT/boot/vmlinuz-*xenU $TOPDESTPATH/images/xen/vmlinuz
- fi
-}
+++ /dev/null
-#!/bin/bash
-
-DEBUG=""
-
-if [ "$1" == "--debug" ]; then
- DEBUG="--debug"
- shift
-fi
-
-if [ -z "$1" ]; then
- echo "Usage: $0 /path/to/tree"
- exit 1
-fi
-
-p=$1
-
-STRIP=strip
-ARCH=`uname -m | sed -e 's/i.86/i386/'`
-
-if [ $ARCH = ia64 ]; then
- STRIP="strip --strip-debug"
-fi
-
-if [ $ARCH = x86_64 -o $ARCH = s390x ]; then
- LIBDIR=lib64
-else
- LIBDIR=lib
-fi
-
-# Must create ld.so.conf, because ldconfig does not cache
-# dirs specified on the command line.
-touch $p/etc/ld.so.conf
-mkdir $p/proc
-mount -t proc proc $p/proc
-[ -d $p/usr/X11R6/$LIBDIR ] && echo /usr/X11R6/$LIBDIR > $p/etc/ld.so.conf
-echo /usr/kerberos/$LIBDIR > $p/etc/ld.so.conf
-(cd $p; /usr/sbin/chroot $p usr/sbin/ldconfig )
-
-if [ $ARCH != s390 -a $ARCH != s390x ]; then
- rm -f $p/usr/sbin/ldconfig
-fi
-rm $p/etc/ld.so.conf
-
-#
-# make sure we have links for programs supplied by busybox
-#
-# HOWEVER dont clobber existing programs supplied by other packages if exist
-#
-mv $p/sbin/busybox.anaconda $p/usr/bin/busybox
-(cd $p/usr/bin;
-set $(./busybox 2>&1| awk '/^\t([[:alnum:]_\[]+,)+/' | sed 's/,//g' | sed 's/ +//');
-dontclobber=(sh busybox reboot shutdown poweroff)
-while [ -n "$1" ]; do
- save=
- for n in ${dontclobber[@]} ; do
- if [ "$1" == "$n" ]; then
- save=$n
- fi
- done
- # if it's not in our list and it doesn't exist, link to busybox
- if [ -z "$save" -a ! -f "$1" ]; then
- ln -sf ./busybox $1
- else
- [ -n "$DEBUG" ] && echo "Overriding busybox version of $1"
- fi
- shift
-done
-)
-
-umount $p/proc
-
-for l in `find $p -type f -perm +100 | grep -v "usr/X11R6/$LIBDIR/modules" | xargs file | sed -n 's/^\([^:]*\):.*ELF.*$/\1/p'`; do
- $STRIP $l -R .comment -R .note `objdump -h $l | \
- sed -n 's/^.*\(\.gnu\.warning\.[^ ]*\) .*$/-R \1/p'`
-done
+++ /dev/null
-#!/bin/bash
-
-ORIGDIR=`pwd`
-COMPONENT=""
-DEBUG=""
-
-if [ "$1" == "--debug" ]; then
- DEBUG="--debug"
- shift
-fi
-
-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
-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 ]; then
- LIBDIR=lib64
-else
- LIBDIR=lib
-fi
-
-NEEDGR=yes
-
-prunePackageList() {
- PACKAGEPATH=$1
- PACKAGES="$2"
-
- 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 --nodigest --nosignature --qf "%{NAME} $PACKAGEPATH/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n" \
- -qp $PACKAGEFILES | egrep "$PATTERN" | sed 's/.* //'
-}
-
-expandPackageSet() {
- RPMS=$1
- PKGDEST=$2
- KEEPFILES=$3
-
- [ -d $PKGDEST ] || die "ERROR: directory missing: $PKGDEST"
- for n in $RPMS; do
- [ -n "$DEBUG" ] && echo -ne "\rExpanding packages..." $(basename $n)
- if [ "$(rpm --nosignature --nodigest -qp --qf '%{NAME}' $n)" = "tzdata" ] ; then
- TZDATA=$n
- fi
- rpm2cpio $n | (cd $PKGDEST; cpio -E $KEEPFILES --quiet -iumd)
- [ -n "$DEBUG" ] && echo -ne "\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 newt slang libselinux
- libsepol libtermcap zlib ash e2fsprogs util-linux raidtools popt
- procps rpm rpm-lib XFree86 Xconfigurator anaconda tzdata
- anaconda-runtime kudzu hwdata bzip2 beecrypt mdadm libsemanage
- bzip2-libs dosfstools pciutils reiserfsprogs parted sed
- busybox-anaconda python-rpm python-booty hdparm lvm2 beecrypt device-mapper dlm
- python-rhpl pyxf86config libxml2 python-libxml2 glib2 sqlite neon
- elfutils-libelf krb5-libs convertdb1 jfsutils
- xfsprogs xfsdump dmapi libacl libattr attr acl python-urlgrabber
- policy policycoreutils pyparted X11 X11-tools selinux-policy-targeted
- libstdc++ expat libgcc readline ncurses yum python-sqlite
- python-elementtree pykickstart e2fsprogs-libs iscsi-initiator-utils
- db4 bash glibc-misc python-libs python-parted python-xf86config"
-
-if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
- PACKAGES="$PACKAGES pcmciautils pcmcia-cs"
-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 portmap pam
- telnet-server login mount grep modutils gawk
- XFree86-libs strace xorg-x11-xauth xorg-x11-libs"
-fi
-
-if [ $ARCH != s390 -a $ARCH != s390x ]; then
- PACKAGES="$PACKAGES python-pyblock"
-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
- XFree86 Xconfigurator pygtk2 gdk-pixbuf
- XFree86-KOI8-R XFree86-KOI8-R-75dpi-fonts pam libpixman
- reiserfsprogs 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 audit-libs
- 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-gujarati fonts-hindi fonts-punjabi fonts-tamil synaptics
- firstboot rhpxl pycairo pirut bitstream-vera-fonts
-X11-fonts-100dpi-ISO8859-15
-X11-fonts-100dpi-ISO8859-2
-X11-fonts-100dpi-ISO8859-9
-X11-fonts-ISO8859-15
-X11-fonts-ISO8859-2
-X11-fonts-ISO8859-9
-"
-
-#
-# stuff ONLY included for rescue mode
-#
-# these packages are combined with the PACKAGES and PACKAGESGR for big stage 2
-#
-PACKAGESRESCUE="bzip2 bzip2-libs dump
- findutils ftp gzip iputils joe krb5-libs less man man-config man-pages
- modutils mtools mt-st mtr net-tools open
- openssh openssh-clients pciutils rsh traceroute tar rsync"
-
-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
-
-# dmraid stuff
-if [ $ARCH != s390 -a $ARCH != s390x ]; then
- PACKAGESRESCUE="$PACKAGESRESCUE device-mapper dmraid"
-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 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"
-
-# dmraid stuff
-if [ $ARCH != s390 -a $ARCH != s390x ]; then
- PACKAGESGR="$PACKAGESGR python-pyblock"
-fi
-
-# 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-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-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"
-
-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/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
-$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/liblvm-10.so*
-$LIBDIR/libgcc_s*
-$LIBDIR/libnsl*
-$LIBDIR/libnss_dns*
-$LIBDIR/libnss_files*
-$LIBDIR/libresolv*
-$LIBDIR/libselinux*
-$LIBDIR/libsemanage*
-$LIBDIR/libsepol*
-$LIBDIR/libss*
-$LIBDIR/libtermcap*
-$LIBDIR/libhandle*
-$LIBDIR/libattr*
-$LIBDIR/libdm*
-$LIBDIR/libutil*
-$LIBDIR/libuuid*
-sbin/badblocks
-sbin/busybox.anaconda
-sbin/clock
-sbin/debugfs
-sbin/e2fsck
-sbin/e2fsadm
-sbin/e2label
-sbin/fsck.ext2
-sbin/fsck.ext3
-sbin/fsck.jfs
-sbin/fsck.xfs
-sbin/fdisk
-sbin/hdparm
-sbin/hwclock
-sbin/jfs_tune
-sbin/ldconfig
-sbin/lvm*
-sbin/mdadm
-sbin/mkdosfs
-sbin/mke2fs
-sbin/mkfs.ext2
-sbin/mkfs.ext3
-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/probe
-sbin/reiserfstune
-sbin/resize2fs
-sbin/sfdisk
-sbin/tune2fs
-sbin/xfsdump
-sbin/xfsrestore
-sbin/xfs_repair
-usr/sbin/xfs_db
-usr/sbin/xfs_check
-usr/sbin/xfs_copy
-sbin/iscsid
-sbin/iscsiadm
-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/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/libglib*
-usr/$LIBDIR/libgmodule*
-usr/$LIBDIR/libgobject*
-usr/$LIBDIR/libgthread*
-usr/$LIBDIR/libssl*
-usr/$LIBDIR/libcrypto*
-usr/$LIBDIR/libbz2*
-usr/$LIBDIR/libelf*
-usr/$LIBDIR/libncurses*
-usr/$LIBDIR/libnewt*
-usr/$LIBDIR/libparted*
-usr/$LIBDIR/libpopt*
-usr/$LIBDIR/libpython*
-usr/$LIBDIR/libneon*
-usr/$LIBDIR/libsqlite3*
-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/libxml2.so*
-usr/$LIBDIR/libz.*
-usr/$LIBDIR/libreadline*
-usr/$LIBDIR/python?.?/*
-usr/$LIBDIR/python?.?/email/*
-usr/$LIBDIR/python?.?/site-packages/libxml2*
-usr/$LIBDIR/python?.?/site-packages/*kudzu*
-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/*sqlite*
-usr/$LIBDIR/python?.?/site-packages/rhpl
-usr/$LIBDIR/python?.?/site-packages/cElementTree.so
-usr/$LIBDIR/python?.?/site-packages/block
-usr/share/locale/*
-usr/lib/python?.?/site-packages/elementtree/*
-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/rpm/macros
-usr/lib/rpm/rpmpopt
-usr/lib/rpm/rpmrc
-usr/lib/yaboot/addnote
-usr/lib/yaboot/ofboot
-usr/lib/yaboot/yaboot
-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
-usr/sbin/setfiles
-usr/sbin/lvm
-usr/sbin/build-locale-archive
-usr/share/anaconda/anaconda.conf
-usr/share/selinux/targeted/base.pp
-usr/share/terminfo/b/bterm
-usr/share/terminfo/l/linux
-usr/share/terminfo/v/vt100
-usr/share/terminfo/v/vt100-nav
-usr/share/hwdata/pci.ids
-usr/share/hwdata/videoaliases
-usr/share/hwdata/videoaliases/*
-usr/share/hwdata/videodrivers
-usr/share/hwdata/MonitorsDB
-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/x/xterm
-usr/share/terminfo/x/xterm-color
-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.anaconda
-sbin/ifconfig
-sbin/route
-sbin/portmap
-sbin/fdasd
-sbin/dasdfmt
-sbin/swapon
-sbin/swapoff
-sbin/mkswap
-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_*
-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/libacl*
-$LIBDIR/libattr*
-$LIBDIR/libaudit*.so*
-$LIBDIR/libgcc*
-$LIBDIR/libnss_dns*
-$LIBDIR/libpam*
-$LIBDIR/libproc*
-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
-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/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/lib/syslinux/*
-usr/lib/yaboot/*
-usr/lib/python?.?/site-packages/rhpxl/*
-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/bitstream-vera/Vera.ttf
-usr/share/fonts/bitstream-vera/VeraBd.ttf
-usr/share/fonts/bitstream-vera/VeraMono.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/panjabi/lohit_pa.ttf
-usr/share/fonts/punjabi/lohit_pa.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/themes/Clearlooks/gtk-2.0/*
-usr/share/themes/Clearlooks/index.theme
-usr/share/vte/termcap/xterm
-usr/share/xorg/extramodes
-usr/share/xorg/vesamodes
-usr/share/zoneinfo/zone.tab
-EOF
-
-TIMEZONES="
-usr/share/zoneinfo/Africa
-usr/share/zoneinfo/America
-usr/share/zoneinfo/Antarctica
-usr/share/zoneinfo/Arctic
-usr/share/zoneinfo/Asia
-usr/share/zoneinfo/Atlantic
-usr/share/zoneinfo/Australia
-usr/share/zoneinfo/Canada
-usr/share/zoneinfo/Europe
-usr/share/zoneinfo/Indian
-usr/share/zoneinfo/Japan
-usr/share/zoneinfo/Mideast
-usr/share/zoneinfo/Pacific
-usr/share/zoneinfo/US
-"
-
-# 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/dump
-sbin/ifconfig
-sbin/insmod
-sbin/lsmod
-sbin/lspci
-sbin/modinfo
-sbin/modprobe
-sbin/netstat
-sbin/restore
-sbin/rrestore
-sbin/rmmod
-sbin/route
-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/kerberos/$LIBDIR/libgssapi*
-usr/kerberos/$LIBDIR/libkrb5*
-usr/kerberos/$LIBDIR/libk5crypto*
-usr/kerberos/$LIBDIR/libcom_err*
-usr/sbin/mtr
-usr/sbin/traceroute
-EOF
-
-# dmraid stuff
-if [ $ARCH != s390 -a $ARCH != s390x ]; then
- cat >> $KEEPFILERESCUE <<-EOF
-sbin/dmraid.static
-sbin/dmsetup.static
-EOF
-fi
-
-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
-
-echo "retrieving timezones"
-TZDIR=/tmp/glibc-timezone-$$
-mkdir -p $TZDIR/usr/share/zoneinfo
-rpm2cpio $TZDATA | (cd $TZDIR; cpio --quiet -iumd usr/share/zoneinfo ./usr/share/zoneinfo ./usr/share/zoneinfo/* usr/share/zoneinfo/*)
-[ $? = 0 ] || die "ERROR: Unable to expand timezone data ($TZDATA)"
-(cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DEST; tar xSpf -)
-(cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DESTGR; tar xSpf -)
-
-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
-else
- for i in $DEST $DESTGR; do
- # there's never a case with only one of these...
- if [ -f $i/sbin/dmraid.static ]; then
- mv $i/sbin/dmraid.static $i/sbin/dmraid
- mv $i/sbin/dmsetup.static $i/sbin/dmsetup
- fi
- done
-fi
-
-# change mtimes to 0 (to match what happens on the cramfs)
-for p in $DEST $DESTGR; do
- if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "cd $p\; usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p"
- else
- $p/usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p
- fi
-done
-
-# Remove locales unused during the install
-cat $DESTGR/usr/lib/anaconda/lang-table* | gawk '
-{ gsub("-", "", $4);
- print $4;
- print gensub(/\..*$/,"","",$4);
- print gensub(/_.*$/,"","",$4);
- if (split ($4, a, ".") > 1) {
- print gensub(/\..*$/,tolower("." a[2]),"",$4);
- };
- print $2;
-}
-' | LC_ALL=C sort -u > $DESTGR/locales
-for p in 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
-
-# now, create a locale archive and nuke the locale dirs since
-# that ends up taking less space
-#for p in $DEST $DESTGR; do
-# echo "Building locale archive"
-# if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
-# runroot $COMPONENT --onlyone --arch $ARCH "/usr/sbin/chroot $p /usr/sbin/build-locale-archive"
-# else
-# /usr/sbin/chroot $p /usr/sbin/build-locale-archive
-# fi
-# mv $p/usr/lib/locale/locale-archive $p/usr/lib/locale-archive
-# rm -rf $p/usr/lib/locale/*
-# rm -f $p/usr/sbin/build-locale-archive
-# mv $p/usr/lib/locale-archive $p/usr/lib/locale/locale-archive
-#done
-
-# Remove unneeded XFree86 modules
-rm -rf $DESTGR/usr/X11R6/$LIBDIR/modules/dri
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/libscanpci.a
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/libxf1bpp.a
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/fonts/libspeedo.a
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/drivers/linux/v4l_drv.o
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/libdri.a
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/libxtrap.a
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/librecord.a
-
-rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/lib{GLcore,glx,pex5}*
-
-# fixup joe links
-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
-
-# 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
-
-cp $DEST/etc/shells $DESTGR/etc/shells
-cp $DEST/etc/nsswitch.conf $DESTGR/etc/nsswitch.conf
-
-# fixup man.config to point into /mnt/sysimage for rescue
-echo "Fixing up /etc/man.config to point into /mnt/sysimage"
-if [ -n "$NEEDGR" ]; then
- 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
-
-echo "Running mkfontdir..."
-if [ -n "$NEEDGR" ]; then
- /usr/X11R6/bin/mkfontdir $DESTGR/usr/share/fonts/*
-fi
-
-echo "Creating SELinux policy..."
-if [ -x $DESTGR/usr/sbin/semodule -a -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "/usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp -n -s targeted"
-else
- /usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp -n -s targeted
-fi
-rm -rf $DEST/etc/selinux
-mkdir $DEST/etc/selinux
-cp -r $DESTGR/etc/selinux/* $DEST/etc/selinux/
-
-echo "Getting pango modules"
-if [ -n "$NEEDGR" ]; then
- if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules 2> $DESTGR/etc/pango/pango.modules"
- else
- LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules > $DESTGR/etc/pango/pango.modules
- fi
- 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 -E %{_host}`
-
-
-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
-
-echo "Getting gtk2 input method modules"
-if [ -n "$NEEDGR" ]; then
- if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/gtk-query-immodules-2.0 2> $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gtk.immodules"
- else
- LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/gtk-query-immodules-2.0 > $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gtk.immodules
- fi
- rm -f $DESTGR/usr/bin/gtk-query-immodules-2.0
-fi
-
-echo "Getting gtk2 gdk-pixbuf loaders"
-if [ -n "$NEEDGR" ]; then
- if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/gdk-pixbuf-query-loaders 2> $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gdk-pixbuf.loaders"
- else
- LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/gdk-pixbuf-query-loaders > $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gdk-pixbuf.loaders
- fi
- 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"
- install -d $p/usr/bin
- 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/rescue-startx-stub $p/usr/bin/rescue-startx
- 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 = i686 -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" | grep -v "usr/X11R6/$LIBDIR/modules" | 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
-
- if [ -d $DEST/usr/share/zoneinfo ]; then
- (cd $DEST/usr/share/zoneinfo; find . -type f -or -type l |
- grep '^./[A-Z]' | sort | sed 's/^..//' |
- gzip -9) > $p/usr/lib/timezones.gz
- else
- echo "ERROR: unable to explode tzdata for small images"
- fi
-
- if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "cd $p\; usr/lib/anaconda-runtime/scrubtree $DEBUG $p"
- else
- $p/usr/lib/anaconda-runtime/scrubtree $p
- fi
-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
-
-echo "Creating fontconfig cache"
-if [ -n "$NEEDGR" ]; then
- if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/fc-cache"
- else
- LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/fc-cache
- fi
- 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 -
-
-echo -n -e "Removing unused python files in hdimage... "
-
-if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "cd $DEST\; usr/lib/anaconda-runtime/pythondeps $DEST"
-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
- rm -f ${fn}c
- ln -sf /dev/null ${fn}c
- done
-done
-
-# do some stripping of debugging symbols
-if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
- runroot $COMPONENT --onlyone --arch $ARCH "\"find $DEST -type f -name '*.so' -exec strip -g '{}' ';'\""
- runroot $COMPONENT --onlyone --arch $ARCH "\"find $DESTGR -type f -name '*.so' -exec strip -g '{}' ';'\""
-else
- find $DEST -type f -name '*.so' |xargs strip -g
- find $DESTGR -type f -name '*.so' |xargs strip -g
-fi
-
-# 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/encodings/
-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
-
-# clean up tzdata
-rm -rf $TZDIR
-
-# this is only for the minimal second stage
-echo "Cleaning ramdisk install images..."
-rm -rf $DEST/usr/lib/anaconda-runtime