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-libs XFree86 Xconfigurator anaconda tzdata
115 anaconda-runtime kudzu hwdata bzip2 beecrypt mdadm libsemanage
116 bzip2-libs dosfstools pciutils reiserfs-utils parted sed
117 busybox-anaconda rpm-python booty hdparm lvm2 beecrypt device-mapper
118 rhpl pyxf86config libxml2 libxml2-python glib2 sqlite neon
119 elfutils-libelf krb5-libs convertdb1 jfsutils
120 xfsprogs xfsdump dmapi libacl libattr attr acl python-urlgrabber
121 policy policycoreutils pyparted xorg-x11 selinux-policy-targeted
122 libstdc++ expat libgcc readline ncurses yum python-sqlite
123 python-elementtree pykickstart e2fsprogs-libs iscsi-initiator-utils
126 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
127 PACKAGES="$PACKAGES pcmciautils kernel-utils"
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 reiserfs-utils 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"
193 # stuff ONLY included for rescue mode
195 # these packages are combined with the PACKAGES and PACKAGESGR for big stage 2
197 PACKAGESRESCUE="bzip2 bzip2-libs dump
198 findutils ftp gzip iputils joe krb5-libs less man
199 modutils mtools mt-st mtr net-tools open
200 openssh openssh-clients pciutils rsh traceroute tar rsync"
202 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
203 PACKAGESRESCUE="$PACKAGESRESCUE gpart grub"
206 # turn off options we dont want, ie. set package list to something harmless
207 if [ -z "$NEEDGR" ]; then
209 PACKAGESRESCUE="bash"
213 if [ $ARCH != s390 -a $ARCH != s390x ]; then
214 PACKAGESRESCUE="$PACKAGESRESCUE device-mapper dmraid"
218 # add bootloader for particular arch
220 if [ $ARCH = sparc ]; then
221 PACKAGESGR="$PACKAGESGR tilo silo"
224 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
225 PACKAGESGR="$PACKAGESGR syslinux memtest86+"
228 if [ $ARCH = alpha ]; then
229 PACKAGESGR="$PACKAGESGR aboot"
232 if [ $ARCH = ia64 ]; then
233 PACKAGESGR="$PACKAGESGR elilo"
236 if [ $ARCH = ppc ]; then
237 PACKAGESGR="$PACKAGESGR fbset yaboot ppc64-utils"
241 PACKAGESGR="$PACKAGESGR gail at-spi libbonobo ORBit2"
244 if [ $ARCH != s390 -a $ARCH != s390x ]; then
245 PACKAGESGR="$PACKAGESGR python-pyblock"
249 XORGLIBS="libICE libSM libX11 libXcursor libXext libXfixes libXft libXi libxkbfile libXmu libXpm libXrandr libXrender libXt libXxf86misc libXaw liblbxutil libXfont libfontenc libXau libXdmcp libXfont libXinerama"
250 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"
251 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"
252 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"
254 PACKAGESGR="$PACKAGESGR $XORG"
258 # KEEPFILE is all files to keep from the packages in PACKAGES
260 # This is what is present in http, ftp, and hard drive installs, and is
261 # supposed to be a small image because these methods keep it in RAM.
263 # It also is the base on which the other install images build on top of,
264 # so if something is needed by all images it should go here
266 KEEPFILE=/tmp/keepfile.$$
268 cat > $KEEPFILE <<EOF
269 boot/efi/EFI/redhat/elilo.efi
280 etc/selinux/targeted/booleans
281 etc/selinux/targeted/policy/policy.*
282 etc/selinux/targeted/contexts/files/*
283 etc/selinux/targeted/contexts/*
284 etc/selinux/targeted/*
285 usr/share/selinux/targeted/*
286 etc/security/selinux/policy.*
287 etc/security/selinux/file_contexts
297 $LIBDIR/libdevmapper*
302 $LIBDIR/liblvm-10.so*
306 $LIBDIR/libnss_files*
319 sbin/busybox.anaconda
348 sbin/pcmcia-socket-startup
370 usr/lib/anaconda-runtime/*
372 usr/lib/anaconda/installclasses/*
373 usr/lib/anaconda/textw/*
375 usr/kerberos/$LIBDIR/libkrb5.so*
376 usr/kerberos/$LIBDIR/libkrb5support.so*
377 usr/kerberos/$LIBDIR/libk5crypto.so*
378 usr/kerberos/$LIBDIR/libcom_err.so*
379 usr/kerberos/$LIBDIR/libgssapi_krb5.so*
380 usr/$LIBDIR/libkrb5.so*
381 usr/$LIBDIR/libkrb5support.so*
382 usr/$LIBDIR/libk5crypto.so*
383 usr/$LIBDIR/libcom_err.so*
384 usr/$LIBDIR/libgssapi_krb5.so*
385 usr/$LIBDIR/gconv/ISO8859-1.so
386 usr/$LIBDIR/gconv/gconv-modules
387 usr/$LIBDIR/libbeecrypt*
389 usr/$LIBDIR/libgmodule*
390 usr/$LIBDIR/libgobject*
391 usr/$LIBDIR/libgthread*
393 usr/$LIBDIR/libcrypto*
396 usr/$LIBDIR/libncurses*
398 usr/$LIBDIR/libparted*
400 usr/$LIBDIR/libpython*
402 usr/$LIBDIR/libsqlite3*
403 usr/$LIBDIR/librpm-*4.?.so*
404 usr/$LIBDIR/librpmbuild-*4.?.so*
405 usr/$LIBDIR/librpmdb*4.?.so*
406 usr/$LIBDIR/librpmio*4.?.so*
407 usr/$LIBDIR/libslang*
408 usr/$LIBDIR/libstdc++.so.6*
409 usr/$LIBDIR/libxml2.so*
411 usr/$LIBDIR/libreadline*
412 usr/$LIBDIR/python?.?/*
413 usr/$LIBDIR/python?.?/email/*
414 usr/$LIBDIR/python?.?/site-packages/libxml2*
415 usr/$LIBDIR/python?.?/site-packages/*kudzu*
416 usr/$LIBDIR/python?.?/site-packages/rpmmodule.so
417 usr/$LIBDIR/python?.?/site-packages/partedmodule.so
418 usr/$LIBDIR/python?.?/site-packages/ixf86configmodule.so
419 usr/$LIBDIR/python?.?/site-packages/xf86config.py
420 usr/$LIBDIR/python?.?/site-packages/*sqlite*
421 usr/$LIBDIR/python?.?/site-packages/rhpl
422 usr/$LIBDIR/python?.?/site-packages/cElementTree.so
423 usr/$LIBDIR/python?.?/site-packages/block
425 usr/lib/python?.?/site-packages/elementtree/*
426 usr/lib/python?.?/site-packages/rpmUtils/*
427 usr/lib/python?.?/site-packages/urlgrabber/*
428 usr/lib/python?.?/site-packages/yum/*
429 usr/lib/python?.?/site-packages/repomd/*
430 usr/lib/python?.?/site-packages/pirut/*
431 usr/lib/python?.?/site-packages/pykickstart/*
435 usr/lib/yaboot/addnote
436 usr/lib/yaboot/ofboot
437 usr/lib/yaboot/yaboot
438 usr/libexec/convertdb1
439 usr/share/locale/*/LC_MESSAGES/anaconda.mo
440 usr/share/locale/locale.alias
449 usr/sbin/genhomedircon
452 usr/sbin/build-locale-archive
453 usr/share/anaconda/anaconda.conf
454 usr/share/selinux/targeted/base.pp
455 usr/share/terminfo/b/bterm
456 usr/share/terminfo/l/linux
457 usr/share/terminfo/v/vt100
458 usr/share/terminfo/v/vt100-nav
459 usr/share/hwdata/pci.ids
460 usr/share/hwdata/videoaliases
461 usr/share/hwdata/videoaliases/*
462 usr/share/hwdata/videodrivers
463 usr/share/hwdata/MonitorsDB
466 if [ $ARCH = s390 -o $ARCH = s390x ]; then
467 cat >> $KEEPFILE <<EOF
468 usr/share/terminfo/a/ansi
469 usr/share/terminfo/d/dumb
470 usr/share/terminfo/k/kterm
471 usr/share/terminfo/s/screen
472 usr/share/terminfo/v/vt100
473 usr/share/terminfo/v/vt100-nav
474 usr/share/terminfo/v/vt102
475 usr/share/terminfo/x/xterm
476 usr/share/terminfo/x/xterm-color
481 usr/sbin/glibc_post_upgrade
486 sbin/busybox.anaconda
514 $LIBDIR/libutil-*.so*
520 $LIBDIR/libresolv.so*
521 $LIBDIR/libresolv-*.so*
527 etc/security/limits.conf
528 etc/security/pam_env.conf
530 $LIBDIR/security/pam_*
531 usr/$LIBDIR/libwrap.so*
532 usr/$LIBDIR/libXmuu.so*
533 usr/$LIBDIR/libX11.so*
534 usr/$LIBDIR/libXext.so*
535 usr/$LIBDIR/libXxf86misc.so*
541 # KEEPFILEGR is all files to keep from the packages in PACKAGESGR
543 # This defines the files in addition to KEEPFILE that make up the install
544 # images for NFS and CD/DVD based installs. This image is not loaded into
545 # memory so it can be considerably larger.
547 # The rescue mode of anaconda uses these files as well as those defined
548 # by KEEPFILERESCUE below. The total size of this image should be
549 # under the size of the miniature CD used for the rescue CD (around 68MB).
551 KEEPFILEGR=/tmp/keepfilegr.$$
552 cp $KEEPFILE $KEEPFILEGR
553 cat >> $KEEPFILEGR <<EOF
554 boot/efi/EFI/redhat/elilo.efi
582 etc/rpm/macros.prelink
585 $LIBDIR/libaudit*.so*
608 usr/share/X11/XKeysymDB
609 usr/share/X11/fonts/misc/6x13*
610 usr/share/X11/fonts/misc/fonts*
611 usr/share/X11/fonts/misc/cursor*
612 usr/share/X11/fonts/misc/olcursor*
613 usr/share/X11/fonts/Type1/l047013t*
614 usr/share/X11/fonts/Type1/*
615 usr/share/X11/fonts/TTF/GohaTibebZemen.ttf
616 usr/share/X11/locale/*
619 usr/$LIBDIR/xserver/SecurityPolicy
622 usr/$LIBDIR/libXaw.so*
624 usr/$LIBDIR/libXcursor*
626 usr/$LIBDIR/libXfixes*
629 usr/$LIBDIR/libxkbfile*
632 usr/$LIBDIR/libXrandr*
633 usr/$LIBDIR/libXrender*
635 usr/$LIBDIR/libXxf86misc*
636 usr/$LIBDIR/liblbxutil*
637 usr/$LIBDIR/libXfont*
638 usr/$LIBDIR/libfontenc*
640 usr/$LIBDIR/libXdmcp*
641 usr/$LIBDIR/xorg/modules/*
642 usr/$LIBDIR/xorg/modules/input/*
646 usr/bin/gdk-pixbuf-query-loaders*
664 usr/$LIBDIR/gdk-pixbuf/loaders/*xpm*
665 usr/$LIBDIR/gdk-pixbuf/loaders/*png*
666 usr/$LIBDIR/gdk-pixbuf/loaders/*la*
667 usr/$LIBDIR/gtk-2.0/*/engines/libclearlooks.so
668 usr/$LIBDIR/gtk-2.0/*/loaders/*xpm*
669 usr/$LIBDIR/gtk-2.0/*/loaders/*png*
670 usr/$LIBDIR/gtk-2.0/*/loaders/*la*
671 usr/$LIBDIR/gtk-2.0/immodules/
672 usr/$LIBDIR/libImlib*
676 usr/$LIBDIR/libaudio*
677 usr/$LIBDIR/libpixman*
678 usr/$LIBDIR/libcairo*
680 usr/$LIBDIR/libfontconfig*
681 usr/$LIBDIR/libfreetype*
682 usr/$LIBDIR/libgailutil*
684 usr/$LIBDIR/libglade*
685 usr/$LIBDIR/libgnomecanvas*
686 usr/$LIBDIR/libgnomeui*
690 usr/$LIBDIR/libpango*
691 usr/$LIBDIR/libpng.so.3*
692 usr/$LIBDIR/libpng12.so*
693 usr/$LIBDIR/libstdc++.so.*
696 usr/$LIBDIR/python?.?/site-packages/cairo/*
697 usr/$LIBDIR/python?.?/site-packages/gtk*/gtk/*
698 usr/$LIBDIR/python?.?/site-packages/gtk*/*
699 usr/$LIBDIR/rpm/rpmpopt
702 usr/lib/python?.?/site-packages/rhpxl/*
709 usr/share/firstboot/firstboot_module_window*
710 usr/share/icons/default/*
711 usr/share/icons/gnome/cursors/*
712 usr/share/icons/gnome/*/stock/*
713 usr/share/icons/gnome/index.theme
714 usr/share/icons/Bluecurve/cursors/*
715 usr/share/icons/Bluecurve/*/stock/*
716 usr/share/icons/Bluecurve/index.theme
717 usr/share/fonts/bitstream-vera/Vera.ttf
718 usr/share/fonts/bitstream-vera/VeraBd.ttf
719 usr/share/fonts/bitstream-vera/VeraMono.ttf
720 usr/share/fonts/default/Type1/n019003l*
721 usr/share/fonts/default/Type1/n019004l*
722 usr/share/fonts/default/Type1/n019023l*
723 usr/share/fonts/default/Type1/n019024l*
724 usr/share/fonts/default/Type1/n021003l*
725 usr/share/fonts/default/Type1/n021004l*
726 usr/share/fonts/default/Type1/n021023l*
727 usr/share/fonts/default/Type1/n021024l*
728 usr/share/fonts/korean/TrueType/dotum.ttf
729 usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf
730 usr/share/fonts/chinese/TrueType/uming*.ttf
731 usr/share/fonts/bengali/MuktiNarrow.ttf
732 usr/share/fonts/arabic/KacstFarsi.ttf
733 usr/share/fonts/arabic/KacstQura.ttf
734 usr/share/fonts/tamil/lohit_ta.ttf
735 usr/share/fonts/gujarati/lohit_gu.ttf
736 usr/share/fonts/bengali/lohit_bn.ttf
737 usr/share/fonts/hindi/lohit_hi.ttf
738 usr/share/fonts/panjabi/lohit_pa.ttf
739 usr/share/fonts/punjabi/lohit_pa.ttf
740 usr/share/locale/*/LC_MESSAGES/anaconda.mo
741 usr/share/locale/*/LC_MESSAGES/system-config-date.mo
742 usr/share/locale/*/LC_MESSAGES/redhat-dist.mo
743 usr/share/locale/*/LC_MESSAGES/system-config-keyboard.mo
744 usr/share/locale/*/LC_MESSAGES/gtk20.mo
745 usr/share/locale/*/LC_MESSAGES/libc.mo
746 usr/share/locale/*/LC_MESSAGES/rhpl.mo
747 usr/share/locale/*/LC_MESSAGES/rhpxl.mo
748 usr/share/locale/*/LC_MESSAGES/parted.mo
749 usr/share/locale/*/LC_MESSAGES/pirut.mo
751 usr/share/pixmaps/comps/*.png
752 usr/share/pixmaps/gnome-default-dlg.png
753 usr/share/pixmaps/gnome-error.png
754 usr/share/pixmaps/gnome-info.png
755 usr/share/pixmaps/gnome-question.png
756 usr/share/pixmaps/gnome-warning.png
757 usr/share/pixmaps/no.xpm
758 usr/share/pixmaps/yes.xpm
759 usr/share/ppc64-utils/*
760 usr/share/system-config-keyboard/*
761 usr/share/system-config-date/*
762 usr/share/terminfo/l/linux
763 usr/share/terminfo/x/xterm
764 usr/share/terminfo/v/vt100
765 usr/share/terminfo/v/vt100-nav
766 usr/share/themes/Clearlooks/gtk-2.0/*
767 usr/share/themes/Clearlooks/index.theme
768 usr/share/vte/termcap/xterm
769 usr/share/xorg/extramodes
770 usr/share/xorg/vesamodes
771 usr/share/zoneinfo/zone.tab
775 usr/share/zoneinfo/Africa
776 usr/share/zoneinfo/America
777 usr/share/zoneinfo/Antarctica
778 usr/share/zoneinfo/Arctic
779 usr/share/zoneinfo/Asia
780 usr/share/zoneinfo/Atlantic
781 usr/share/zoneinfo/Australia
782 usr/share/zoneinfo/Canada
783 usr/share/zoneinfo/Europe
784 usr/share/zoneinfo/Indian
785 usr/share/zoneinfo/Japan
786 usr/share/zoneinfo/Mideast
787 usr/share/zoneinfo/Pacific
788 usr/share/zoneinfo/US
791 # more dogtail stuff...
792 cat >> $KEEPFILEGR <<EOF
793 usr/$LIBDIR/gtk-2.0/modules/libatk-bridge.so
794 usr/$LIBDIR/gtk-2.0/modules/libgail.so
795 usr/libexec/bonobo-activation-server
796 usr/libexec/at-spi-registryd
797 usr/$LIBDIR/libORBit*
798 usr/$LIBDIR/libbonobo*
801 usr/$LIBDIR/bonobo/servers/*
802 usr/$LIBDIR/libXevie*
808 # KEEPFILERESCUE is all files to keep from the packages in PACKAGESRESCUE
810 # This defines the files in addition to KEEPFILE and KEEPFILEGR that make up
811 # the install images for NFS and CD/DVD based rescue mode installs. This
812 # image is not loaded into memory so it can be considerably larger.
814 # NOTE: hd, ftp, and http rescue mode use and image based on KEEPFILE since
815 # it has to be much smaller due to memory usage.
817 KEEPFILERESCUE=/tmp/keepfilerescue.$$
818 cat > $KEEPFILERESCUE <<EOF
884 usr/kerberos/$LIBDIR/libgssapi*
885 usr/kerberos/$LIBDIR/libkrb5*
886 usr/kerberos/$LIBDIR/libk5crypto*
887 usr/kerberos/$LIBDIR/libcom_err*
893 if [ $ARCH != s390 -a $ARCH != s390x ]; then
894 cat >> $KEEPFILERESCUE <<-EOF
900 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
901 cat >> $KEEPFILERESCUE <<-EOF
906 sbin/grub-set-default
913 echo "Assembling package list..."
914 RPMS=$(prunePackageList $PACKAGEDIR "$PACKAGES")
915 [ -n "$DEBUG" ] && echo "RPMS are $RPMS"
916 RPMSGR=$(prunePackageList $PACKAGEDIR "$PACKAGESGR $PACKAGESRESCUE")
917 [ -n "$DEBUG" ] && echo "RPMSGR are $RPMSGR"
919 rm -rf $DEST; mkdir -p $DEST/usr/sbin
920 rm -rf $DESTGR; mkdir -p $DESTGR/usr/sbin $DESTGR/var/lib $DESTGR/boot
921 ln -s /tmp $DESTGR/var/lib/xkb
924 # concat KEEPFILEGR and KEEPFILERESCUE lists
926 cat $KEEPFILERESCUE >> $KEEPFILEGR
929 # filter paths in keepfile lists for use by cpio
931 for file in $KEEPFILE $KEEPFILEGR; do
932 cat $file | awk '{print $1 "\n./" $1}' > $file-
936 echo "Expanding text packages..."
937 expandPackageSet "$RPMS" $DEST $KEEPFILE
939 (cd $DEST; tar cSpf - .) | (cd $DESTGR; tar xSpf -)
941 echo "Expanding graphical packages..."
942 expandPackageSet "$RPMSGR" $DESTGR $KEEPFILEGR
944 echo "retrieving timezones"
945 TZDIR=/tmp/glibc-timezone-$$
946 mkdir -p $TZDIR/usr/share/zoneinfo
947 rpm2cpio $TZDATA | (cd $TZDIR; cpio --quiet -iumd usr/share/zoneinfo ./usr/share/zoneinfo ./usr/share/zoneinfo/* usr/share/zoneinfo/*)
948 [ $? = 0 ] || die "ERROR: Unable to expand timezone data ($TZDATA)"
949 (cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DEST; tar xSpf -)
950 (cd $TZDIR; tar cSpf - $TIMEZONES) | (cd $DESTGR; tar xSpf -)
952 chown -R root:root $DEST $DESTGR
953 chmod -R a+rX-w $DEST $DESTGR
954 if [ $ARCH = s390 -o $ARCH = s390x ]; then
955 for i in $DEST $DESTGR; do
956 mv $i/bin/sed $i/bin/sed_save
957 mv $i/bin/sort $i/bin/sort_save
960 for i in $DEST $DESTGR; do
961 # there's never a case with only one of these...
962 if [ -f $i/sbin/dmraid.static ]; then
963 mv $i/sbin/dmraid.static $i/sbin/dmraid
964 mv $i/sbin/dmsetup.static $i/sbin/dmsetup
969 # change mtimes to 0 (to match what happens on the cramfs)
970 for p in $DEST $DESTGR; do
971 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
972 runroot $COMPONENT --onlyone --arch $ARCH "cd $p\; usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p"
974 $p/usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p
978 # Remove locales unused during the install
979 cat $DESTGR/usr/lib/anaconda/lang-table* | awk '
982 print gensub(/\..*$/,"","",$4);
983 print gensub(/_.*$/,"","",$4);
984 if (split ($4, a, ".") > 1) {
985 print gensub(/\..*$/,tolower("." a[2]),"",$4);
989 ' | LC_ALL=C sort -u > $DESTGR/locales
990 for p in lib share; do (
991 cd $DESTGR/usr/$p/locale && {
992 ls | grep -v locale.alias | LC_ALL=C sort > $DESTGR/locales.list
993 LC_ALL=C comm -13 $DESTGR/locales $DESTGR/locales.list | xargs rm -rf
996 rm -f $DESTGR/locales $DESTGR/locales.list
998 # now, create a locale archive and nuke the locale dirs since
999 # that ends up taking less space
1000 for p in $DEST $DESTGR; do
1001 echo "Building locale archive"
1002 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1003 runroot $COMPONENT --onlyone --arch $ARCH "/usr/sbin/chroot $p /usr/sbin/build-locale-archive"
1005 /usr/sbin/chroot $p /usr/sbin/build-locale-archive
1007 mv $p/usr/lib/locale/locale-archive $p/usr/lib/locale-archive
1008 rm -rf $p/usr/lib/locale/*
1009 rm -f $p/usr/sbin/build-locale-archive
1010 mv $p/usr/lib/locale-archive $p/usr/lib/locale/locale-archive
1013 # Remove unneeded XFree86 modules
1014 rm -rf $DESTGR/usr/X11R6/$LIBDIR/modules/dri
1015 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/libscanpci.a
1016 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/libxf1bpp.a
1017 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/fonts/libspeedo.a
1018 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/drivers/linux/v4l_drv.o
1019 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/libdri.a
1020 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/libxtrap.a
1021 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/librecord.a
1023 rm -f $DESTGR/usr/X11R6/$LIBDIR/modules/extensions/lib{GLcore,glx,pex5}*
1026 ln -fs jpicorc $DESTGR/etc/joe/picorc
1027 ln -fs jpicorc $DESTGR/etc/joe/jnanorc
1028 ln -fs jpicorc $DESTGR/etc/joe/nanorc
1029 ln -fs jmacsrc $DESTGR/etc/joe/emacsrc
1030 ln -fs jmacs $DESTGR/usr/bin/emacs
1031 ln -fs jpico $DESTGR/usr/bin/pico
1032 ln -fs jpico $DESTGR/usr/bin/nano
1034 # create selinux config
1035 if [ -e $DEST/etc/selinux/targeted ]; then
1036 cat > $DEST/etc/selinux/config <<EOF
1038 SELINUXTYPE=targeted
1040 cp $DEST/etc/selinux/config $DESTGR/etc/selinux/config
1043 cat > $DEST/etc/shells <<EOF
1047 echo "Creating nsswitch.conf"
1048 cat > $DEST/etc/nsswitch.conf <<EOF
1049 # munged nsswitch.conf with just what anaconda needs
1050 # created by upd-instroot
1067 cp $DEST/etc/shells $DESTGR/etc/shells
1068 cp $DEST/etc/nsswitch.conf $DESTGR/etc/nsswitch.conf
1070 # fixup man.config to point into /mnt/sysimage for rescue
1071 echo "Fixing up /etc/man.config to point into /mnt/sysimage"
1072 if [ -n "$NEEDGR" ]; then
1073 mv $DESTGR/etc/man.config $DESTGR/etc/man.config-old
1074 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
1075 rm -f $DESTGR/etc/man.config-old
1078 echo "Running mkfontdir..."
1079 if [ -n "$NEEDGR" ]; then
1080 mkfontdir $DESTGR/usr/share/X11/fonts/*
1083 echo "Creating SELinux policy..."
1084 if [ -x $DESTGR/usr/sbin/semodule -a -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1085 runroot $COMPONENT --onlyone --arch $ARCH "/usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp -n -s targeted"
1087 /usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp -n -s targeted
1089 rm -rf $DEST/etc/selinux
1090 mkdir $DEST/etc/selinux
1091 cp -r $DESTGR/etc/selinux/* $DEST/etc/selinux/
1093 echo "Getting pango modules"
1094 if [ -n "$NEEDGR" ]; then
1095 # sick sick sick hack for pango-querymodules being -32 or -64
1096 mv $DESTGR/usr/bin/pango-querymodules* $DESTGR/usr/bin/pango-querymodules
1097 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1098 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"
1100 LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules > $DESTGR/etc/pango/pango.modules
1102 rm -f $DESTGR/usr/bin/pango-querymodules
1103 # more sick hackery since it doesn't fall back to this like owen thought
1104 cat > $DESTGR/etc/pango/pangorc <<EOF
1106 ModuleFiles=/etc/pango/pango.modules
1110 host=`rpm --nodigest --nosignature -qp --qf "%{POSTIN}\n" $PACKAGEDIR/gtk2*.$ARCH.rpm |grep update-gdk-pixbuf |awk {'print $2;'}`
1113 *linux) canonhost="$host-gnu"
1119 # autoconf uses powerpc not ppc
1120 HOSTTRIPLET=`echo $canonhost | sed "s/^ppc/powerpc/"`
1123 mkdir -p $DESTGR/etc/gtk-2.0/$HOSTTRIPLET
1125 echo "Getting gtk2 input method modules"
1126 if [ -n "$NEEDGR" ]; then
1127 mv $DESTGR/usr/bin/gtk-query-immodules-2.0* $DESTGR/usr/bin/gtk-query-immodules-2.0
1128 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1129 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"
1131 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
1133 rm -f $DESTGR/usr/bin/gtk-query-immodules-2.0
1136 echo "Getting gtk2 gdk-pixbuf loaders"
1137 if [ -n "$NEEDGR" ]; then
1138 mv $DESTGR/usr/bin/gdk-pixbuf-query-loaders* $DESTGR/usr/bin/gdk-pixbuf-query-loaders
1139 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1140 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"
1142 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
1144 rm -f $DESTGR/usr/bin/gdk-pixbuf-query-loaders
1147 rm -f $KEEPFILE $KEEPFILEGR $KEEPFILERESCUE
1149 for p in $DEST $DESTGR; do
1150 echo "Scrubbing trees..." "$p"
1151 cp $p/usr/lib/anaconda/raidstart-stub $p/usr/bin/raidstart
1152 cp $p/usr/lib/anaconda/raidstop-stub $p/usr/bin/raidstop
1153 cp $p/usr/lib/anaconda/losetup-stub $p/usr/bin/losetup
1154 cp $p/usr/lib/anaconda/pump-stub $p/usr/bin/pump
1155 cp $p/usr/lib/anaconda/list-harddrives-stub $p/usr/bin/list-harddrives
1156 cp $p/usr/lib/anaconda/kudzu-probe-stub $p/usr/bin/kudzu-probe
1157 cp $p/usr/lib/anaconda/loadkeys-stub $p/usr/bin/loadkeys
1158 cp $p/usr/lib/anaconda/mknod-stub $p/usr/bin/mknod
1159 cp $p/usr/lib/anaconda/rescue-startx-stub $p/usr/bin/rescue-startx
1160 mv $p/usr/sbin/anaconda $p/usr/bin/anaconda
1161 mv $p/usr/lib/anaconda-runtime/lib* $p/usr/$LIBDIR
1163 # we only want the libunicode-lite stuff on the minimal image
1164 if [ $p = $DESTGR ]; then
1165 rm -f $p/usr/$LIBDIR/libunicode-lite*
1168 find $p -type d | xargs chmod 755
1170 if [ -f $p/bin/bash ]; then
1172 ln -s bash $p/bin/sh
1174 ln -sf busybox $p/bin/sh
1177 [ -d $p/bin ] || die "ERROR: directory missing: $p/bin"
1178 [ -d $p/sbin ] || die "ERROR: directory missing: $p/sbin"
1179 (cd $p/bin; find) | (cd $p/bin; /bin/cpio --quiet -pdmu $p/usr/bin)
1180 (cd $p/sbin; find) | (cd $p/sbin; /bin/cpio --quiet -pdmu $p/usr/sbin)
1184 # copy bootloader files for sparc
1185 if [ $ARCH = sparc -a $p = $DESTGR ]; then
1186 mkdir -p $p/usr/lib/anaconda-runtime/boot
1187 [ -d $p/boot ] || die "ERROR: directory missing: $p/boot"
1188 (cd $p/boot; find -name "*.b") | (cd $p/boot; /bin/cpio --quiet -pdmu $p/usr/lib/anaconda-runtime/boot)
1191 # copy bootloader file for alpha
1192 if [ $ARCH = alpha -a $p = $DESTGR ]; then
1193 mkdir -p $p/usr/lib/anaconda-runtime/boot
1194 cp -af $p/boot/bootlx $p/usr/lib/anaconda-runtime/boot
1197 # copy bootloader files for ia64
1198 if [ $ARCH = ia64 -a $p = $DESTGR ]; then
1199 mkdir -p $p/usr/lib/anaconda-runtime/boot
1200 cp -af $p/boot/efi/EFI/redhat//* $p/usr/lib/anaconda-runtime/boot
1203 # copy bootloader files for i386/x86_64
1204 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
1205 if [ $p = $DESTGR ]; then
1206 mkdir -p $p/usr/lib/anaconda-runtime/boot
1207 cp -af $p/boot/memtest* $p/usr/lib/anaconda-runtime/boot
1211 rm -rf $p/boot $p/home $p/root $p/tmp
1213 find $p -name "*.a" | grep -v "usr/X11R6/$LIBDIR/modules" | xargs rm -rf
1214 find $p -name "lib*.la" |grep -v "usr/$LIBDIR/gtk-2.0" | xargs rm -rf
1215 for f in newt popt rpm rpmio; do
1216 rm -f $p/usr/$LIBDIR/lib$f.so
1219 # nuke some python stuff we don't need
1220 for d in idle distutils bsddb lib-old hotshot doctest.py pydoc.py site-packages/japanese site-packages/japanese.pth ; do
1224 if [ "$ARCH" != "s390" -a "$ARCH" != "s390x" ]; then
1225 (cd $p/lib* && rm -f libnss_files.so.1 libnss_dns.so.1)
1228 if [ -d $DEST/usr/share/zoneinfo ]; then
1229 (cd $DEST/usr/share/zoneinfo; find . -type f -or -type l |
1230 grep '^./[A-Z]' | sort | sed 's/^..//' |
1231 gzip -9) > $p/usr/lib/timezones.gz
1233 echo "ERROR: unable to explode tzdata for small images"
1236 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1237 runroot $COMPONENT --onlyone --arch $ARCH "cd $p\; usr/lib/anaconda-runtime/scrubtree $DEBUG $p"
1239 $p/usr/lib/anaconda-runtime/scrubtree $p
1243 echo "Compressing .mo files in stage2 images..."
1244 if [ -d $DEST/usr/share/locale ]; then
1245 for i in `find $DEST/usr/share/locale -name anaconda.mo`; do
1251 echo "Creating fontconfig cache"
1252 if [ -n "$NEEDGR" ]; then
1253 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1254 runroot $COMPONENT --onlyone --arch $ARCH "LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/fc-cache"
1256 LD_LIBRARY_PATH=/usr/X11R6/$LIBDIR:$LD_LIBRARY_PATH /usr/sbin/chroot $DESTGR /usr/bin/fc-cache
1258 rm -f $DESTGR/usr/bin/fc-cache
1261 echo "Creating debug dir"
1262 for p in $DEST $DESTGR ; do
1263 mkdir -p $p/usr/lib/debug
1264 mkdir -p $p/usr/src/debug
1267 if [ $ARCH = "alpha" ]; then
1268 rm -rf $DEST/usr/share/locale
1269 rm -rf $DEST/usr/$LIBDIR/locale
1272 echo "Patching python library..."
1274 # always use passive mode for ftp installs
1275 cd $DEST/usr/$LIBDIR/python2.4
1276 patch -p0 > /dev/null <<EOF
1277 --- urllib.py.orig Thu Oct 25 17:05:06 2001
1278 +++ urllib.py Thu Oct 25 17:05:34 2001
1280 path, attrs = splitattr(path)
1281 path = unquote(path)
1282 dirs = path.split('/')
1283 + dirs[0] = '/' + dirs[0]
1284 dirs, file = dirs[:-1], dirs[-1]
1285 if dirs and not dirs[0]: dirs = dirs[1:]
1286 if dirs and not dirs[0]: dirs[0] = '/'
1288 self.ftp = ftplib.FTP()
1289 self.ftp.connect(self.host, self.port)
1290 self.ftp.login(self.user, self.passwd)
1291 + self.ftp.set_pasv(1)
1292 for dir in self.dirs:
1297 echo -n -e "Removing unused python files in hdimage... "
1299 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1300 runroot $COMPONENT --onlyone --arch $ARCH "cd $DEST\; usr/lib/anaconda-runtime/pythondeps $DEST"
1302 $DEST/usr/lib/anaconda-runtime/pythondeps $DEST
1306 for p in $DEST $DESTGR; do
1307 find $p -name "*.py" | while read fn; do
1310 ln -sf /dev/null ${fn}c
1314 # do some stripping of debugging symbols
1315 if [ -x /usr/bin/runroot -a -n "$COMPONENT" ]; then
1316 runroot $COMPONENT --onlyone --arch $ARCH "\"find $DEST -type f -name '*.so' -exec strip -g '{}' ';'\""
1317 runroot $COMPONENT --onlyone --arch $ARCH "\"find $DESTGR -type f -name '*.so' -exec strip -g '{}' ';'\""
1319 find $DEST -type f -name '*.so' |xargs strip -g
1320 find $DESTGR -type f -name '*.so' |xargs strip -g
1323 # some python stuff we don't need for stage2
1324 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/distutils/
1325 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/lib-dynload/japanese
1326 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/encodings/
1327 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/compiler/
1328 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/email/test/
1329 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/curses/
1330 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/pydoc.py
1335 # this is only for the minimal second stage
1336 echo "Cleaning ramdisk install images..."
1337 rm -rf $DEST/usr/lib/anaconda-runtime