7 if [ "$1" == "--debug" ]; then
12 if [ "$1" == "--comp" ]; then
18 echo "upd-instroot: updates instimage from a Red Hat RPMS directory"
19 echo "usage: $0 --comp <comp> <packagedir> [templatedir] [instroot]"
24 if [ -z "$ARCH" ]; then
25 echo "ARCH must be set" >&2
32 if [ -z "$ARCH" ]; then
33 ARCH=`rpm --nodigest --nosignature -qp --qf "%{ARCH}" $PACKAGEDIR/anaconda-runtime*.rpm`
36 if [ $ARCH = x86_64 -o $ARCH = s390x ]; then
50 for PKG in $PACKAGES; do
51 PATTERN="${PATTERN:+${PATTERN}|}(^$PKG )"
52 PACKAGEFILES="$PACKAGEFILES $(ls $PACKAGEPATH/$PKG*{$ARCH,noarch}.rpm 2>/dev/null)"
56 PATTERN=$(echo $PATTERN | sed 's,[\+\*],\\&,g')
58 PACKAGEFILES=$(ls $PACKAGEFILES | sort -u)
60 rpm --nodigest --nosignature --qf "%{NAME} $PACKAGEPATH/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n" \
61 -qp $PACKAGEFILES | egrep "$PATTERN" | sed 's/.* //'
69 [ -d $PKGDEST ] || die "ERROR: directory missing: $PKGDEST"
71 [ -n "$DEBUG" ] && echo -ne "\rExpanding packages..." $(basename $n)
72 if [ "$(rpm --nosignature --nodigest -qp --qf '%{NAME}' $n)" = "tzdata" ] ; then
75 rpm2cpio $n | (cd $PKGDEST; cpio -E $KEEPFILES --quiet -iumd)
76 [ -n "$DEBUG" ] && echo -ne "\rExpanding packages..." "$(basename $n | sed 's/./ /g')"
78 pushd $PKGDEST/$LIBDIR >/dev/null 2>&1
79 if [ -d obsolete/linuxthreads/ ]; then
80 for x in obsolete/linuxthreads/*-* ; do
81 lib_base=$(basename $x | cut -d- -f1)
82 rm -f ./$lib_base[.-]*
83 mv -f obsolete/linuxthreads/$lib_base[.-]* .
85 rmdir obsolete/linuxthreads obsolete
92 echo "Aborting instroot creation..."
97 DEST=/tmp/upd-instroot
103 DESTGR=/tmp/upd-instroot
112 PACKAGES="glibc glibc-common setup openssl python newt slang libselinux
113 libsepol libtermcap zlib ash e2fsprogs util-linux raidtools popt
114 procps rpm rpm-lib XFree86 Xconfigurator anaconda tzdata
115 anaconda-runtime kudzu hwdata bzip2 beecrypt mdadm libsemanage
116 bzip2-libs dosfstools pciutils reiserfsprogs parted sed
117 busybox-anaconda python-rpm python-booty hdparm lvm2 beecrypt device-mapper dlm
118 python-rhpl pyxf86config libxml2 python-libxml2 glib2 sqlite neon
119 elfutils-libelf krb5-libs convertdb1 jfsutils
120 xfsprogs xfsdump dmapi libacl libattr attr acl python-urlgrabber
121 policy policycoreutils pyparted X11 X11-tools selinux-policy-targeted
122 libstdc++ expat libgcc readline ncurses yum python-sqlite
123 python-elementtree pykickstart e2fsprogs-libs iscsi-initiator-utils
124 db4 bash glibc-misc python-libs python-parted python-xf86config"
126 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
127 PACKAGES="$PACKAGES pcmciautils pcmcia-cs"
130 if [ $ARCH = ia64 ]; then
131 PACKAGES="$PACKAGES elilo"
134 if [ $ARCH = s390 -o $ARCH = s390x ]; then
135 PACKAGES="$PACKAGES s390utils binutils libgcc tcp_wrappers
136 sed net-tools xinetd openssl openssh openssh-server coreutils
137 login initscripts XFree86-xauth bash portmap pam
138 telnet-server login mount grep modutils gawk
139 XFree86-libs strace xorg-x11-xauth xorg-x11-libs"
142 if [ $ARCH != s390 -a $ARCH != s390x ]; then
143 PACKAGES="$PACKAGES python-pyblock"
146 if [ $ARCH = ppc -o $ARCH = ppc64 ]; then
147 PACKAGES="$PACKAGES pcmciautils pdisk yaboot hfsutils"
152 # Some packages are listed twice, but that's okay
154 # The packages in this list are needed for the graphical installer to run
156 # Extra stuff we want for rescue mode should go in PACKAGESRESCUE
158 PACKAGESGR="anaconda XFree86-libs libpng XFree86-75dpi-fonts
159 XFree86-ISO8859-2-75dpi-fonts gtk2 libglade2
160 XFree86-ISO8859-9-75dpi-fonts
161 XFree86-100dpi-fonts fonts-ISO8859-2 fonts-ISO8859-9
162 XFree86-xfs e2fsprogs coreutils glibc glibc-common
163 popt specspo util-linux rpm rpm-libs tzdata
164 procps bash cpio gpm pygtk2-libglade
165 XFree86 Xconfigurator pygtk2 gdk-pixbuf
166 XFree86-KOI8-R XFree86-KOI8-R-75dpi-fonts pam libpixman
167 reiserfsprogs atk pango freetype gnome-python2-canvas cairo
168 libgnomecanvas libart_lgpl libgcc libacl libattr libstdc++ expat
169 anaconda-images anaconda-help XFree86-base-fonts
170 ttfonts-ko taipeifonts XFree86-ISO8859-15-75dpi-fonts rhpl
171 system-config-keyboard Xft fontconfig gtk2-engines gnome-themes
172 gtkhtml2 gnome-python2-gtkhtml2 gail
173 ttfonts-ja ttfonts-zh_TW bitmap-fonts-cjk urw-fonts fonts-arabic
174 comps-extras XFree86-libs-data convertdb1 fonts-bengali
175 vnc-server libjpeg tcp_wrappers system-config-date
176 xfsprogs xfsdump dmapi attr acl policy policycoreutils
177 selinux-policy-targeted ttfonts-zh_CN redhat-artwork audit-libs
178 xorg-x11-libs xorg-x11-ISO8859-2-75dpi-fonts
179 xorg-x11-ISO8859-9-75dpi-fonts xorg-x11-100dpi-fonts
180 xorg-x11-xfs xorg-x11 xorg-x11-KOI8-R xorg-x11-KOI8-R-75dpi-fonts
181 xorg-x11-base-fonts xorg-x11-ISO8859-15-75dpi-fonts
182 fonts-xorg-ISO8859-2-75dpi fonts-xorg-ISO8859-15-75dpi
183 fonts-xorg-ISO8859-9-75dpi fonts-xorg-100dpi
184 fonts-xorg-KOI8-R fonts-xorg-KOI8-R-75dpi fonts-xorg-base
185 xorg-x11-base xorg-x11-ISO8859-15-75dpi system-logos
186 xorg-x11-libs-data xorg-x11-xfs prelink redhat-logos fedora-logos
187 ttfonts-ta ttfonts-bn ttfonts-gu ttfonts-hi ttfonts-pa
188 fonts-japanese fonts-chinese fonts-korean fonts-indic
189 fonts-gujarati fonts-hindi fonts-punjabi fonts-tamil synaptics
190 firstboot rhpxl pycairo pirut bitstream-vera-fonts
191 X11-fonts-100dpi-ISO8859-15
192 X11-fonts-100dpi-ISO8859-2
193 X11-fonts-100dpi-ISO8859-9
200 # stuff ONLY included for rescue mode
202 # these packages are combined with the PACKAGES and PACKAGESGR for big stage 2
204 PACKAGESRESCUE="bzip2 bzip2-libs dump
205 findutils ftp gzip iputils joe krb5-libs less man man-config man-pages
206 modutils mtools mt-st mtr net-tools open
207 openssh openssh-clients pciutils rsh traceroute tar rsync"
209 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
210 PACKAGESRESCUE="$PACKAGESRESCUE gpart grub"
213 # turn off options we dont want, ie. set package list to something harmless
214 if [ -z "$NEEDGR" ]; then
216 PACKAGESRESCUE="bash"
220 if [ $ARCH != s390 -a $ARCH != s390x ]; then
221 PACKAGESRESCUE="$PACKAGESRESCUE device-mapper dmraid"
225 # add bootloader for particular arch
227 if [ $ARCH = sparc ]; then
228 PACKAGESGR="$PACKAGESGR tilo silo"
231 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
232 PACKAGESGR="$PACKAGESGR syslinux memtest86+"
235 if [ $ARCH = alpha ]; then
236 PACKAGESGR="$PACKAGESGR aboot"
239 if [ $ARCH = ia64 ]; then
240 PACKAGESGR="$PACKAGESGR elilo"
243 if [ $ARCH = ppc ]; then
244 PACKAGESGR="$PACKAGESGR fbset yaboot ppc64-utils"
248 PACKAGESGR="$PACKAGESGR gail at-spi libbonobo ORBit2"
251 if [ $ARCH != s390 -a $ARCH != s390x ]; then
252 PACKAGESGR="$PACKAGESGR python-pyblock"
256 XORGLIBS="libICE libSM libX11 libXcursor libXext libXfixes libXft libXi libxkbfile libXmu libXpm libXrandr libXrender libXt libXxf86misc libXaw liblbxutil libXfont libfontenc libXau libXdmcp libXfont libXinerama"
257 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"
258 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"
259 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"
261 PACKAGESGR="$PACKAGESGR $XORG"
265 # KEEPFILE is all files to keep from the packages in PACKAGES
267 # This is what is present in http, ftp, and hard drive installs, and is
268 # supposed to be a small image because these methods keep it in RAM.
270 # It also is the base on which the other install images build on top of,
271 # so if something is needed by all images it should go here
273 KEEPFILE=/tmp/keepfile.$$
275 cat > $KEEPFILE <<EOF
276 boot/efi/EFI/redhat/elilo.efi
287 etc/selinux/targeted/booleans
288 etc/selinux/targeted/policy/policy.*
289 etc/selinux/targeted/contexts/files/*
290 etc/selinux/targeted/contexts/*
291 etc/selinux/targeted/*
292 usr/share/selinux/targeted/*
293 etc/security/selinux/policy.*
294 etc/security/selinux/file_contexts
304 $LIBDIR/libdevmapper*
309 $LIBDIR/liblvm-10.so*
313 $LIBDIR/libnss_files*
326 sbin/busybox.anaconda
355 sbin/pcmcia-socket-startup
377 usr/lib/anaconda-runtime/*
379 usr/lib/anaconda/installclasses/*
380 usr/lib/anaconda/textw/*
382 usr/kerberos/$LIBDIR/libkrb5.so*
383 usr/kerberos/$LIBDIR/libkrb5support.so*
384 usr/kerberos/$LIBDIR/libk5crypto.so*
385 usr/kerberos/$LIBDIR/libcom_err.so*
386 usr/kerberos/$LIBDIR/libgssapi_krb5.so*
387 usr/$LIBDIR/libkrb5.so*
388 usr/$LIBDIR/libkrb5support.so*
389 usr/$LIBDIR/libk5crypto.so*
390 usr/$LIBDIR/libcom_err.so*
391 usr/$LIBDIR/libgssapi_krb5.so*
392 usr/$LIBDIR/gconv/ISO8859-1.so
393 usr/$LIBDIR/gconv/gconv-modules
394 usr/$LIBDIR/libbeecrypt*
396 usr/$LIBDIR/libgmodule*
397 usr/$LIBDIR/libgobject*
398 usr/$LIBDIR/libgthread*
400 usr/$LIBDIR/libcrypto*
403 usr/$LIBDIR/libncurses*
405 usr/$LIBDIR/libparted*
407 usr/$LIBDIR/libpython*
409 usr/$LIBDIR/libsqlite3*
410 usr/$LIBDIR/librpm-*4.?.so*
411 usr/$LIBDIR/librpmbuild-*4.?.so*
412 usr/$LIBDIR/librpmdb*4.?.so*
413 usr/$LIBDIR/librpmio*4.?.so*
414 usr/$LIBDIR/libslang*
415 usr/$LIBDIR/libstdc++.so.6*
416 usr/$LIBDIR/libxml2.so*
418 usr/$LIBDIR/libreadline*
419 usr/$LIBDIR/python?.?/*
420 usr/$LIBDIR/python?.?/email/*
421 usr/$LIBDIR/python?.?/site-packages/libxml2*
422 usr/$LIBDIR/python?.?/site-packages/*kudzu*
423 usr/$LIBDIR/python?.?/site-packages/rpmmodule.so
424 usr/$LIBDIR/python?.?/site-packages/partedmodule.so
425 usr/$LIBDIR/python?.?/site-packages/ixf86configmodule.so
426 usr/$LIBDIR/python?.?/site-packages/xf86config.py
427 usr/$LIBDIR/python?.?/site-packages/*sqlite*
428 usr/$LIBDIR/python?.?/site-packages/rhpl
429 usr/$LIBDIR/python?.?/site-packages/cElementTree.so
430 usr/$LIBDIR/python?.?/site-packages/block
432 usr/lib/python?.?/site-packages/elementtree/*
433 usr/lib/python?.?/site-packages/rpmUtils/*
434 usr/lib/python?.?/site-packages/urlgrabber/*
435 usr/lib/python?.?/site-packages/yum/*
436 usr/lib/python?.?/site-packages/repomd/*
437 usr/lib/python?.?/site-packages/pirut/*
438 usr/lib/python?.?/site-packages/pykickstart/*
442 usr/lib/yaboot/addnote
443 usr/lib/yaboot/ofboot
444 usr/lib/yaboot/yaboot
445 usr/libexec/convertdb1
446 usr/share/locale/*/LC_MESSAGES/anaconda.mo
447 usr/share/locale/locale.alias
456 usr/sbin/genhomedircon
459 usr/sbin/build-locale-archive
460 usr/share/anaconda/anaconda.conf
461 usr/share/selinux/targeted/base.pp
462 usr/share/terminfo/b/bterm
463 usr/share/terminfo/l/linux
464 usr/share/terminfo/v/vt100
465 usr/share/terminfo/v/vt100-nav
466 usr/share/hwdata/pci.ids
467 usr/share/hwdata/videoaliases
468 usr/share/hwdata/videoaliases/*
469 usr/share/hwdata/videodrivers
470 usr/share/hwdata/MonitorsDB
473 if [ $ARCH = s390 -o $ARCH = s390x ]; then
474 cat >> $KEEPFILE <<EOF
475 usr/share/terminfo/a/ansi
476 usr/share/terminfo/d/dumb
477 usr/share/terminfo/k/kterm
478 usr/share/terminfo/s/screen
479 usr/share/terminfo/v/vt100
480 usr/share/terminfo/v/vt100-nav
481 usr/share/terminfo/v/vt102
482 usr/share/terminfo/x/xterm
483 usr/share/terminfo/x/xterm-color
488 usr/sbin/glibc_post_upgrade
493 sbin/busybox.anaconda
521 $LIBDIR/libutil-*.so*
527 $LIBDIR/libresolv.so*
528 $LIBDIR/libresolv-*.so*
534 etc/security/limits.conf
535 etc/security/pam_env.conf
537 $LIBDIR/security/pam_*
538 usr/$LIBDIR/libwrap.so*
539 usr/$LIBDIR/libXmuu.so*
540 usr/$LIBDIR/libX11.so*
541 usr/$LIBDIR/libXext.so*
542 usr/$LIBDIR/libXxf86misc.so*
548 # KEEPFILEGR is all files to keep from the packages in PACKAGESGR
550 # This defines the files in addition to KEEPFILE that make up the install
551 # images for NFS and CD/DVD based installs. This image is not loaded into
552 # memory so it can be considerably larger.
554 # The rescue mode of anaconda uses these files as well as those defined
555 # by KEEPFILERESCUE below. The total size of this image should be
556 # under the size of the miniature CD used for the rescue CD (around 68MB).
558 KEEPFILEGR=/tmp/keepfilegr.$$
559 cp $KEEPFILE $KEEPFILEGR
560 cat >> $KEEPFILEGR <<EOF
561 boot/efi/EFI/redhat/elilo.efi
589 etc/rpm/macros.prelink
592 $LIBDIR/libaudit*.so*
615 usr/share/X11/XKeysymDB
616 usr/share/X11/fonts/misc/6x13*
617 usr/share/X11/fonts/misc/fonts*
618 usr/share/X11/fonts/misc/cursor*
619 usr/share/X11/fonts/misc/olcursor*
620 usr/share/X11/fonts/Type1/l047013t*
621 usr/share/X11/fonts/Type1/*
622 usr/share/X11/fonts/TTF/GohaTibebZemen.ttf
623 usr/share/X11/locale/*
626 usr/$LIBDIR/xserver/SecurityPolicy
629 usr/$LIBDIR/libXaw.so*
631 usr/$LIBDIR/libXcursor*
633 usr/$LIBDIR/libXfixes*
636 usr/$LIBDIR/libxkbfile*
639 usr/$LIBDIR/libXrandr*
640 usr/$LIBDIR/libXrender*
642 usr/$LIBDIR/libXxf86misc*
643 usr/$LIBDIR/liblbxutil*
644 usr/$LIBDIR/libXfont*
645 usr/$LIBDIR/libfontenc*
647 usr/$LIBDIR/libXdmcp*
648 usr/$LIBDIR/xorg/modules/*
649 usr/$LIBDIR/xorg/modules/input/*
653 usr/bin/gdk-pixbuf-query-loaders*
671 usr/$LIBDIR/gdk-pixbuf/loaders/*xpm*
672 usr/$LIBDIR/gdk-pixbuf/loaders/*png*
673 usr/$LIBDIR/gdk-pixbuf/loaders/*la*
674 usr/$LIBDIR/gtk-2.0/*/engines/libclearlooks.so
675 usr/$LIBDIR/gtk-2.0/*/loaders/*xpm*
676 usr/$LIBDIR/gtk-2.0/*/loaders/*png*
677 usr/$LIBDIR/gtk-2.0/*/loaders/*la*
678 usr/$LIBDIR/gtk-2.0/immodules/
679 usr/$LIBDIR/libImlib*
683 usr/$LIBDIR/libaudio*
684 usr/$LIBDIR/libpixman*
685 usr/$LIBDIR/libcairo*
687 usr/$LIBDIR/libfontconfig*
688 usr/$LIBDIR/libfreetype*
689 usr/$LIBDIR/libgailutil*
691 usr/$LIBDIR/libglade*
692 usr/$LIBDIR/libgnomecanvas*
693 usr/$LIBDIR/libgnomeui*
697 usr/$LIBDIR/libpango*
698 usr/$LIBDIR/libpng.so.3*
699 usr/$LIBDIR/libpng12.so*
700 usr/$LIBDIR/libstdc++.so.*
703 usr/$LIBDIR/python?.?/site-packages/cairo/*
704 usr/$LIBDIR/python?.?/site-packages/gtk*/gtk/*
705 usr/$LIBDIR/python?.?/site-packages/gtk*/*
706 usr/$LIBDIR/rpm/rpmpopt
709 usr/lib/python?.?/site-packages/rhpxl/*
716 usr/share/firstboot/firstboot_module_window*
717 usr/share/icons/default/*
718 usr/share/icons/gnome/cursors/*
719 usr/share/icons/gnome/*/stock/*
720 usr/share/icons/gnome/index.theme
721 usr/share/icons/Bluecurve/cursors/*
722 usr/share/icons/Bluecurve/*/stock/*
723 usr/share/icons/Bluecurve/index.theme
724 usr/share/fonts/bitstream-vera/Vera.ttf
725 usr/share/fonts/bitstream-vera/VeraBd.ttf
726 usr/share/fonts/bitstream-vera/VeraMono.ttf
727 usr/share/fonts/default/Type1/n019003l*
728 usr/share/fonts/default/Type1/n019004l*
729 usr/share/fonts/default/Type1/n019023l*
730 usr/share/fonts/default/Type1/n019024l*
731 usr/share/fonts/default/Type1/n021003l*
732 usr/share/fonts/default/Type1/n021004l*
733 usr/share/fonts/default/Type1/n021023l*
734 usr/share/fonts/default/Type1/n021024l*
735 usr/share/fonts/korean/TrueType/dotum.ttf
736 usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
737 usr/share/fonts/chinese/TrueType/uming*.ttf
738 usr/share/fonts/bengali/MuktiNarrow.ttf
739 usr/share/fonts/arabic/KacstFarsi.ttf
740 usr/share/fonts/arabic/KacstQura.ttf
741 usr/share/fonts/tamil/lohit_ta.ttf
742 usr/share/fonts/gujarati/lohit_gu.ttf
743 usr/share/fonts/bengali/lohit_bn.ttf
744 usr/share/fonts/hindi/lohit_hi.ttf
745 usr/share/fonts/panjabi/lohit_pa.ttf
746 usr/share/fonts/punjabi/lohit_pa.ttf
747 usr/share/locale/*/LC_MESSAGES/anaconda.mo
748 usr/share/locale/*/LC_MESSAGES/system-config-date.mo
749 usr/share/locale/*/LC_MESSAGES/redhat-dist.mo
750 usr/share/locale/*/LC_MESSAGES/system-config-keyboard.mo
751 usr/share/locale/*/LC_MESSAGES/gtk20.mo
752 usr/share/locale/*/LC_MESSAGES/libc.mo
753 usr/share/locale/*/LC_MESSAGES/rhpl.mo
754 usr/share/locale/*/LC_MESSAGES/rhpxl.mo
755 usr/share/locale/*/LC_MESSAGES/parted.mo
756 usr/share/locale/*/LC_MESSAGES/pirut.mo
758 usr/share/pixmaps/comps/*.png
759 usr/share/pixmaps/gnome-default-dlg.png
760 usr/share/pixmaps/gnome-error.png
761 usr/share/pixmaps/gnome-info.png
762 usr/share/pixmaps/gnome-question.png
763 usr/share/pixmaps/gnome-warning.png
764 usr/share/pixmaps/no.xpm
765 usr/share/pixmaps/yes.xpm
766 usr/share/ppc64-utils/*
767 usr/share/system-config-keyboard/*
768 usr/share/system-config-date/*
769 usr/share/terminfo/l/linux
770 usr/share/terminfo/x/xterm
771 usr/share/terminfo/v/vt100
772 usr/share/terminfo/v/vt100-nav
773 usr/share/themes/Clearlooks/gtk-2.0/*
774 usr/share/themes/Clearlooks/index.theme
775 usr/share/vte/termcap/xterm
776 usr/share/xorg/extramodes
777 usr/share/xorg/vesamodes
778 usr/share/zoneinfo/zone.tab
782 usr/share/zoneinfo/Africa
783 usr/share/zoneinfo/America
784 usr/share/zoneinfo/Antarctica
785 usr/share/zoneinfo/Arctic
786 usr/share/zoneinfo/Asia
787 usr/share/zoneinfo/Atlantic
788 usr/share/zoneinfo/Australia
789 usr/share/zoneinfo/Canada
790 usr/share/zoneinfo/Europe
791 usr/share/zoneinfo/Indian
792 usr/share/zoneinfo/Japan
793 usr/share/zoneinfo/Mideast
794 usr/share/zoneinfo/Pacific
795 usr/share/zoneinfo/US
798 # more dogtail stuff...
799 cat >> $KEEPFILEGR <<EOF
800 usr/$LIBDIR/gtk-2.0/modules/libatk-bridge.so
801 usr/$LIBDIR/gtk-2.0/modules/libgail.so
802 usr/libexec/bonobo-activation-server
803 usr/libexec/at-spi-registryd
804 usr/$LIBDIR/libORBit*
805 usr/$LIBDIR/libbonobo*
808 usr/$LIBDIR/bonobo/servers/*
809 usr/$LIBDIR/libXevie*
815 # KEEPFILERESCUE is all files to keep from the packages in PACKAGESRESCUE
817 # This defines the files in addition to KEEPFILE and KEEPFILEGR that make up
818 # the install images for NFS and CD/DVD based rescue mode installs. This
819 # image is not loaded into memory so it can be considerably larger.
821 # NOTE: hd, ftp, and http rescue mode use and image based on KEEPFILE since
822 # it has to be much smaller due to memory usage.
824 KEEPFILERESCUE=/tmp/keepfilerescue.$$
825 cat > $KEEPFILERESCUE <<EOF
891 usr/kerberos/$LIBDIR/libgssapi*
892 usr/kerberos/$LIBDIR/libkrb5*
893 usr/kerberos/$LIBDIR/libk5crypto*
894 usr/kerberos/$LIBDIR/libcom_err*
900 if [ $ARCH != s390 -a $ARCH != s390x ]; then
901 cat >> $KEEPFILERESCUE <<-EOF
907 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
908 cat >> $KEEPFILERESCUE <<-EOF
913 sbin/grub-set-default
920 echo "Assembling package list..."
921 RPMS=$(prunePackageList $PACKAGEDIR "$PACKAGES")
922 [ -n "$DEBUG" ] && echo "RPMS are $RPMS"
923 RPMSGR=$(prunePackageList $PACKAGEDIR "$PACKAGESGR $PACKAGESRESCUE")
924 [ -n "$DEBUG" ] && echo "RPMSGR are $RPMSGR"
926 rm -rf $DEST; mkdir -p $DEST/usr/sbin
927 rm -rf $DESTGR; mkdir -p $DESTGR/usr/sbin $DESTGR/var/lib $DESTGR/boot
928 ln -s /tmp $DESTGR/var/lib/xkb
931 # concat KEEPFILEGR and KEEPFILERESCUE lists
933 cat $KEEPFILERESCUE >> $KEEPFILEGR
936 # filter paths in keepfile lists for use by cpio
938 for file in $KEEPFILE $KEEPFILEGR; do
939 cat $file | awk '{print $1 "\n./" $1}' > $file-
943 echo "Expanding text packages..."
944 expandPackageSet "$RPMS" $DEST $KEEPFILE
946 (cd $DEST; tar cSpf - .) | (cd $DESTGR; tar xSpf -)
948 echo "Expanding graphical packages..."
949 expandPackageSet "$RPMSGR" $DESTGR $KEEPFILEGR
951 echo "retrieving timezones"
952 TZDIR=/tmp/glibc-timezone-$$
953 mkdir -p $TZDIR/usr/share/zoneinfo
954 rpm2cpio $TZDATA | (cd $TZDIR; cpio --quiet -iumd usr/share/zoneinfo ./usr/share/zoneinfo ./usr/share/zoneinfo/* usr/share/zoneinfo/*)
955 [ $? = 0 ] || die "ERROR: Unable to expand timezone data ($TZDATA)"
956 (cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DEST; tar xSpf -)
957 (cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DESTGR; tar xSpf -)
959 chown -R root:root $DEST $DESTGR
960 chmod -R a+rX-w $DEST $DESTGR
961 if [ $ARCH = s390 -o $ARCH = s390x ]; then
962 for i in $DEST $DESTGR; do
963 mv $i/bin/sed $i/bin/sed_save
964 mv $i/bin/sort $i/bin/sort_save
967 for i in $DEST $DESTGR; do
968 # there's never a case with only one of these...
969 if [ -f $i/sbin/dmraid.static ]; then
970 mv $i/sbin/dmraid.static $i/sbin/dmraid
971 mv $i/sbin/dmsetup.static $i/sbin/dmsetup
976 # change mtimes to 0 (to match what happens on the cramfs)
977 for p in $DEST $DESTGR; do
978 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
979 runroot $COMPONENT --onlyone --arch $ARCH "cd $p\; usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p"
981 $p/usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p
985 # Remove locales unused during the install
986 cat $DESTGR/usr/lib/anaconda/lang-table* | gawk '
989 print gensub(/\..*$/,"","",$4);
990 print gensub(/_.*$/,"","",$4);
991 if (split ($4, a, ".") > 1) {
992 print gensub(/\..*$/,tolower("." a[2]),"",$4);
996 ' | LC_ALL=C sort -u > $DESTGR/locales
998 cd $DESTGR/usr/$p/locale && {
999 ls | grep -v locale.alias | LC_ALL=C sort > $DESTGR/locales.list
1000 LC_ALL=C comm -13 $DESTGR/locales $DESTGR/locales.list | xargs rm -rf
1003 rm -f $DESTGR/locales $DESTGR/locales.list
1005 # now, create a locale archive and nuke the locale dirs since
1006 # that ends up taking less space
1007 #for p in $DEST $DESTGR; do
1008 # echo "Building locale archive"
1009 # if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1010 # runroot $COMPONENT --onlyone --arch $ARCH "/usr/sbin/chroot $p /usr/sbin/build-locale-archive"
1012 # /usr/sbin/chroot $p /usr/sbin/build-locale-archive
1014 # mv $p/usr/lib/locale/locale-archive $p/usr/lib/locale-archive
1015 # rm -rf $p/usr/lib/locale/*
1016 # rm -f $p/usr/sbin/build-locale-archive
1017 # mv $p/usr/lib/locale-archive $p/usr/lib/locale/locale-archive
1020 # Remove unneeded XFree86 modules
1021 rm -rf $DESTGR/usr/X11R6/$LIBDIR/modules/dri
1022 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/libscanpci.a
1023 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/libxf1bpp.a
1024 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/fonts/libspeedo.a
1025 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/drivers/linux/v4l_drv.o
1026 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/libdri.a
1027 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/libxtrap.a
1028 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/librecord.a
1030 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/lib{GLcore,glx,pex5}*
1033 ln -fs jpicorc $DESTGR/etc/joe/picorc
1034 ln -fs jpicorc $DESTGR/etc/joe/jnanorc
1035 ln -fs jpicorc $DESTGR/etc/joe/nanorc
1036 ln -fs jmacsrc $DESTGR/etc/joe/emacsrc
1037 ln -fs jmacs $DESTGR/usr/bin/emacs
1038 ln -fs jpico $DESTGR/usr/bin/pico
1039 ln -fs jpico $DESTGR/usr/bin/nano
1041 # create selinux config
1042 if [ -e $DEST/etc/selinux/targeted ]; then
1043 cat > $DEST/etc/selinux/config <<EOF
1045 SELINUXTYPE=targeted
1047 cp $DEST/etc/selinux/config $DESTGR/etc/selinux/config
1050 cat > $DEST/etc/shells <<EOF
1054 echo "Creating nsswitch.conf"
1055 cat > $DEST/etc/nsswitch.conf <<EOF
1056 # munged nsswitch.conf with just what anaconda needs
1057 # created by upd-instroot
1074 cp $DEST/etc/shells $DESTGR/etc/shells
1075 cp $DEST/etc/nsswitch.conf $DESTGR/etc/nsswitch.conf
1077 # fixup man.config to point into /mnt/sysimage for rescue
1078 echo "Fixing up /etc/man.config to point into /mnt/sysimage"
1079 if [ -n "$NEEDGR" ]; then
1080 mv $DESTGR/etc/man.config $DESTGR/etc/man.config-old
1081 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
1082 rm -f $DESTGR/etc/man.config-old
1085 echo "Running mkfontdir..."
1086 if [ -n "$NEEDGR" ]; then
1087 /usr/X11R6/bin/mkfontdir $DESTGR/usr/share/fonts/*
1090 echo "Creating SELinux policy..."
1091 if [ -x $DESTGR/usr/sbin/semodule -a -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1092 runroot $COMPONENT --onlyone --arch $ARCH "/usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp -n -s targeted"
1094 /usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp -n -s targeted
1096 rm -rf $DEST/etc/selinux
1097 mkdir $DEST/etc/selinux
1098 cp -r $DESTGR/etc/selinux/* $DEST/etc/selinux/
1100 echo "Getting pango modules"
1101 if [ -n "$NEEDGR" ]; then
1102 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1103 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"
1105 LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules > $DESTGR/etc/pango/pango.modules
1107 rm -f $DESTGR/usr/bin/pango-querymodules
1108 # more sick hackery since it doesn't fall back to this like owen thought
1109 cat > $DESTGR/etc/pango/pangorc <<EOF
1111 ModuleFiles=/etc/pango/pango.modules
1115 host=`rpm -E %{_host}`
1119 *linux) canonhost="$host-gnu"
1125 # autoconf uses powerpc not ppc
1126 HOSTTRIPLET=`echo $canonhost | sed "s/^ppc/powerpc/"`
1129 mkdir -p $DESTGR/etc/gtk-2.0/$HOSTTRIPLET
1131 echo "Getting gtk2 input method modules"
1132 if [ -n "$NEEDGR" ]; then
1133 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1134 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"
1136 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
1138 rm -f $DESTGR/usr/bin/gtk-query-immodules-2.0
1141 echo "Getting gtk2 gdk-pixbuf loaders"
1142 if [ -n "$NEEDGR" ]; then
1143 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1144 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"
1146 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
1148 rm -f $DESTGR/usr/bin/gdk-pixbuf-query-loaders
1151 rm -f $KEEPFILE $KEEPFILEGR $KEEPFILERESCUE
1153 for p in $DEST $DESTGR; do
1154 echo "Scrubbing trees..." "$p"
1155 install -d $p/usr/bin
1156 cp $p/usr/lib/anaconda/raidstart-stub $p/usr/bin/raidstart
1157 cp $p/usr/lib/anaconda/raidstop-stub $p/usr/bin/raidstop
1158 cp $p/usr/lib/anaconda/losetup-stub $p/usr/bin/losetup
1159 cp $p/usr/lib/anaconda/pump-stub $p/usr/bin/pump
1160 cp $p/usr/lib/anaconda/list-harddrives-stub $p/usr/bin/list-harddrives
1161 cp $p/usr/lib/anaconda/kudzu-probe-stub $p/usr/bin/kudzu-probe
1162 cp $p/usr/lib/anaconda/loadkeys-stub $p/usr/bin/loadkeys
1163 cp $p/usr/lib/anaconda/mknod-stub $p/usr/bin/mknod
1164 cp $p/usr/lib/anaconda/rescue-startx-stub $p/usr/bin/rescue-startx
1165 mv $p/usr/sbin/anaconda $p/usr/bin/anaconda
1166 mv $p/usr/lib/anaconda-runtime/lib* $p/usr/$LIBDIR
1168 # we only want the libunicode-lite stuff on the minimal image
1169 if [ $p = $DESTGR ]; then
1170 rm -f $p/usr/$LIBDIR/libunicode-lite*
1173 find $p -type d | xargs chmod 755
1175 if [ -f $p/bin/bash ]; then
1177 ln -s bash $p/bin/sh
1179 ln -sf busybox $p/bin/sh
1182 [ -d $p/bin ] || die "ERROR: directory missing: $p/bin"
1183 [ -d $p/sbin ] || die "ERROR: directory missing: $p/sbin"
1184 (cd $p/bin; find) | (cd $p/bin; /bin/cpio --quiet -pdmu $p/usr/bin)
1185 (cd $p/sbin; find) | (cd $p/sbin; /bin/cpio --quiet -pdmu $p/usr/sbin)
1189 # copy bootloader files for sparc
1190 if [ $ARCH = sparc -a $p = $DESTGR ]; then
1191 mkdir -p $p/usr/lib/anaconda-runtime/boot
1192 [ -d $p/boot ] || die "ERROR: directory missing: $p/boot"
1193 (cd $p/boot; find -name "*.b") | (cd $p/boot; /bin/cpio --quiet -pdmu $p/usr/lib/anaconda-runtime/boot)
1196 # copy bootloader file for alpha
1197 if [ $ARCH = alpha -a $p = $DESTGR ]; then
1198 mkdir -p $p/usr/lib/anaconda-runtime/boot
1199 cp -af $p/boot/bootlx $p/usr/lib/anaconda-runtime/boot
1202 # copy bootloader files for ia64
1203 if [ $ARCH = ia64 -a $p = $DESTGR ]; then
1204 mkdir -p $p/usr/lib/anaconda-runtime/boot
1205 cp -af $p/boot/efi/EFI/redhat//* $p/usr/lib/anaconda-runtime/boot
1208 # copy bootloader files for i386/x86_64
1209 if [ $ARCH = i386 -o $ARCH = i686 -o $ARCH = x86_64 ]; then
1210 if [ $p = $DESTGR ]; then
1211 mkdir -p $p/usr/lib/anaconda-runtime/boot
1212 cp -af $p/boot/memtest* $p/usr/lib/anaconda-runtime/boot
1216 rm -rf $p/boot $p/home $p/root $p/tmp
1218 find $p -name "*.a" | grep -v "usr/X11R6/$LIBDIR/modules" | xargs rm -rf
1219 find $p -name "lib*.la" |grep -v "usr/$LIBDIR/gtk-2.0" | xargs rm -rf
1220 for f in newt popt rpm rpmio; do
1221 rm -f $p/usr/$LIBDIR/lib$f.so
1224 # nuke some python stuff we don't need
1225 for d in idle distutils bsddb lib-old hotshot doctest.py pydoc.py site-packages/japanese site-packages/japanese.pth ; do
1229 if [ "$ARCH" != "s390" -a "$ARCH" != "s390x" ]; then
1230 (cd $p/lib* && rm -f libnss_files.so.1 libnss_dns.so.1)
1233 if [ -d $DEST/usr/share/zoneinfo ]; then
1234 (cd $DEST/usr/share/zoneinfo; find . -type f -or -type l |
1235 grep '^./[A-Z]' | sort | sed 's/^..//' |
1236 gzip -9) > $p/usr/lib/timezones.gz
1238 echo "ERROR: unable to explode tzdata for small images"
1241 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1242 runroot $COMPONENT --onlyone --arch $ARCH "cd $p\; usr/lib/anaconda-runtime/scrubtree $DEBUG $p"
1244 $p/usr/lib/anaconda-runtime/scrubtree $p
1248 echo "Compressing .mo files in stage2 images..."
1249 if [ -d $DEST/usr/share/locale ]; then
1250 for i in `find $DEST/usr/share/locale -name anaconda.mo`; do
1256 echo "Creating fontconfig cache"
1257 if [ -n "$NEEDGR" ]; then
1258 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1259 runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/fc-cache"
1261 LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/fc-cache
1263 rm -f $DESTGR/usr/bin/fc-cache
1266 echo "Creating debug dir"
1267 for p in $DEST $DESTGR ; do
1268 mkdir -p $p/usr/lib/debug
1269 mkdir -p $p/usr/src/debug
1272 if [ $ARCH = "alpha" ]; then
1273 rm -rf $DEST/usr/share/locale
1274 rm -rf $DEST/usr/$LIBDIR/locale
1277 echo "Patching python library..."
1279 # always use passive mode for ftp installs
1280 cd $DEST/usr/$LIBDIR/python2.4
1281 patch -p0 > /dev/null <<EOF
1282 --- urllib.py.orig Thu Oct 25 17:05:06 2001
1283 +++ urllib.py Thu Oct 25 17:05:34 2001
1285 path, attrs = splitattr(path)
1286 path = unquote(path)
1287 dirs = path.split('/')
1288 + dirs[0] = '/' + dirs[0]
1289 dirs, file = dirs[:-1], dirs[-1]
1290 if dirs and not dirs[0]: dirs = dirs[1:]
1291 if dirs and not dirs[0]: dirs[0] = '/'
1293 self.ftp = ftplib.FTP()
1294 self.ftp.connect(self.host, self.port)
1295 self.ftp.login(self.user, self.passwd)
1296 + self.ftp.set_pasv(1)
1297 for dir in self.dirs:
1302 echo -n -e "Removing unused python files in hdimage... "
1304 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1305 runroot $COMPONENT --onlyone --arch $ARCH "cd $DEST\; usr/lib/anaconda-runtime/pythondeps $DEST"
1307 $DEST/usr/lib/anaconda-runtime/pythondeps $DEST
1311 for p in $DEST $DESTGR; do
1312 find $p -name "*.py" | while read fn; do
1315 ln -sf /dev/null ${fn}c
1319 # do some stripping of debugging symbols
1320 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1321 runroot $COMPONENT --onlyone --arch $ARCH "\"find $DEST -type f -name '*.so' -exec strip -g '{}' ';'\""
1322 runroot $COMPONENT --onlyone --arch $ARCH "\"find $DESTGR -type f -name '*.so' -exec strip -g '{}' ';'\""
1324 find $DEST -type f -name '*.so' |xargs strip -g
1325 find $DESTGR -type f -name '*.so' |xargs strip -g
1328 # some python stuff we don't need for stage2
1329 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/distutils/
1330 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/lib-dynload/japanese
1331 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/encodings/
1332 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/compiler/
1333 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/email/test/
1334 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/curses/
1335 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/pydoc.py
1340 # this is only for the minimal second stage
1341 echo "Cleaning ramdisk install images..."
1342 rm -rf $DEST/usr/lib/anaconda-runtime