X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=appliance%2Fmake.sh.in;h=e856c3fd970911ecf0e62a43b620ca37b31bc9d1;hp=e98c32570f484af5fc5ecaa08ef86957b4be4afc;hb=HEAD;hpb=9f19ddd0c42a509018340a82bd7dc13a0996e6f5 diff --git a/appliance/make.sh.in b/appliance/make.sh.in index e98c325..e856c3f 100755 --- a/appliance/make.sh.in +++ b/appliance/make.sh.in @@ -1,6 +1,6 @@ #!/bin/bash - # @configure_input@ -# Copyright (C) 2009 Red Hat Inc. +# Copyright (C) 2009-2010 Red Hat Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -14,139 +14,53 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# This is called from the Makefile to build the initramfs. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. unset CDPATH set -e -if [ "@DIST@" = "REDHAT" ]; then - cd @top_builddir@ - # Decide on names for the final output. These have to match Makefile.am. - output=appliance/initramfs.@REPO@.@host_cpu@.img - koutput=appliance/vmlinuz.@REPO@.@host_cpu@ - rm -f $output - rm -f $koutput - - # Create the basic initramfs. - exec 5= 11, it pulls in all of Perl from somewhere. Nuke from orbit. - @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /usr/lib/perl5 /usr/lib64/perl5 - - # Anaconda? JPEG images? - @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /usr/lib/anaconda-runtime - - # Don't need any firmware. - @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /lib/firmware - - # Don't need any keyboard maps. - @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /lib/kbd - - # Remove anything in home directory. Because this is potentially - # liable to monstrous fuck-ups, we don't put a slash before 'home'. - (cd initramfs && echo home/*) | - xargs @FEBOOTSTRAP_RUN@ initramfs -- rm -rf - - # Remove /var/lib/yum stuff. - @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /var/lib/yum +# Turn excludelist file into command line arguments. +exec 5 hosts.new <<'__EOF__' - 127.0.0.1 guestfs localhost.localdomain localhost - ::1 localhost6.localdomain6 localhost6 -__EOF__ - @FEBOOTSTRAP_INSTALL@ initramfs hosts.new /etc/hosts 0644 root.root - rm hosts.new - fi - - if [ ! -f initramfs/etc/fstab ]; then - @FEBOOTSTRAP_RUN@ initramfs -- touch /etc/fstab - fi - - echo nameserver 10.0.2.3 > resolv.conf.new - @FEBOOTSTRAP_INSTALL@ initramfs resolv.conf.new /etc/resolv.conf 0644 root.root - rm resolv.conf.new - - # Create the init script. - @FEBOOTSTRAP_INSTALL@ initramfs appliance/init /init 0755 root.root - - # Just in case the kernel isn't looking for /init, make /sbin/init - # be our script, not the real init. - #@FEBOOTSTRAP_RUN@ initramfs -- ln -f /init /sbin/init - - ls -lh $koutput +# Run febootstrap on the package list. +if [ "x@FEBOOTSTRAP_YUM_CONFIG@" != "xno" ]; then + extra="--yum-config @FEBOOTSTRAP_YUM_CONFIG@" +fi - # Now directly run the update script to copy/update the daemon in the - # initramfs. - cd appliance && bash update.sh +echo @FEBOOTSTRAP@ -v -o supermin.d --names $(< packagelist ) $excludes $extra +@FEBOOTSTRAP@ -v -o supermin.d --names $(< packagelist ) $excludes $extra + +# Remove some things that we don't want in the appliance. This is +# copied from the old febootstrap-minimize. However minimization is +# not so important now that we are caching the appliance. +< supermin.d/hostfiles \ +grep -v '^/usr/lib/locale' | +grep -v '^/usr/share/locale' | +grep -v '^/usr/lib/gconv' | +grep -v '^/usr/lib64/gconv' | +grep -v '^/usr/bin/localedef' | +grep -v '^/usr/sbin/build-locale-archive' | +grep -v '^/usr/share/man/' | +grep -v '^/usr/share/doc/' | +grep -v '^/usr/share/info/' | +grep -v '^/usr/share/gnome/help/' | +grep -v '^/usr/share/cracklib/' | +grep -v '^/usr/share/i18n/' > supermin.d/hostfiles-t + +# XXX resolv.conf? The old script had: +# echo nameserver 169.254.2.3 > resolv.conf +if ! grep -q /etc/resolv.conf supermin.d/hostfiles-t; then + echo /etc/resolv.conf >> supermin.d/hostfiles-t +fi -elif [ "@DIST@" = "DEBIAN" ]; then - cd @top_builddir@/appliance - debirf make -n debian +# Include any Augeas lenses from the host. +if grep -q /usr/share/augeas/lenses supermin.d/hostfiles-t; then + echo "/usr/share/augeas/lenses/*.aug" >> supermin.d/hostfiles-t fi +mv supermin.d/hostfiles-t supermin.d/hostfiles