diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2010-12-19 10:56:06 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2010-12-19 10:57:06 +0000 |
commit | da24e7aab06361b8d9bb5b5c8417611501e94684 (patch) | |
tree | e4041b7a905f825e7d5009071567be75d52e10b1 /appliance | |
parent | 9556903888eed268895a8454491d56302985f7e1 (diff) | |
download | libguestfs-da24e7aab06361b8d9bb5b5c8417611501e94684.tar.gz libguestfs-da24e7aab06361b8d9bb5b5c8417611501e94684.tar.xz libguestfs-da24e7aab06361b8d9bb5b5c8417611501e94684.zip |
appliance: Don't hard-code febootstrap --exclude parameters.
Create a separate file 'excludelist.in' that contains these
regular expressions, and process it the same way as packagelist.in.
Diffstat (limited to 'appliance')
-rw-r--r-- | appliance/Makefile.am | 10 | ||||
-rw-r--r-- | appliance/excludelist.in | 58 | ||||
-rwxr-xr-x | appliance/make.sh.in | 11 | ||||
-rw-r--r-- | appliance/packagelist.in | 3 |
4 files changed, 75 insertions, 7 deletions
diff --git a/appliance/Makefile.am b/appliance/Makefile.am index f1c23279..503160ea 100644 --- a/appliance/Makefile.am +++ b/appliance/Makefile.am @@ -19,6 +19,7 @@ include $(top_srcdir)/subdir-rules.mk EXTRA_DIST = \ packagelist.in \ + excludelist.in \ init \ make.sh.in @@ -46,8 +47,13 @@ packagelist: packagelist.in grep -v '^[[:space:]]*$$' | grep -v '^#' > $@-t mv $@-t $@ +excludelist: excludelist.in + cpp -undef -D$(DISTRO)=1 < $< | \ + grep -v '^[[:space:]]*$$' | grep -v '^#' > $@-t + mv $@-t $@ + supermin.d/base.img supermin.d/hostfiles: stamp-supermin -stamp-supermin: make.sh packagelist +stamp-supermin: make.sh packagelist excludelist mkdir -p supermin.d rm -f $@ supermin.d/base.img supermin.d/hostfiles ./make.sh @@ -70,7 +76,7 @@ supermin.d/init.img: init # Make clean. -CLEANFILES = packagelist +CLEANFILES = packagelist excludelist clean-local: rm -rf supermin.d diff --git a/appliance/excludelist.in b/appliance/excludelist.in new file mode 100644 index 00000000..7e2abc22 --- /dev/null +++ b/appliance/excludelist.in @@ -0,0 +1,58 @@ +/* This is the list of distro packages which are + * excluded from the appliance, even if they appear in + * packagelist.in (or more likely, as dependencies of + * packages in packagelist.in). + * + * List is a list of basic regular expressions, one per line. + * + * This file is processed by cpp with one of the + * following symbols defined (depending on the distro): + * + * REDHAT=1 For Fedora, RHEL, EPEL and workalikes. + * DEBIAN=1 For Debian. + * UBUNTU=1 For Ubuntu. + * ARCHLINUX=1 For Archlinux. + * + * Note that any file provided by one of these packages will + * be dropped from the appliance. Of course, this may break + * the appliance, so be careful. Other files are also dropped + * from the appliance such as docs and man pages: see 'make.sh.in' + * for the full details. + */ + +/* Basically the same with a few minor tweaks. */ +#ifdef UBUNTU +#define DEBIAN 1 +#endif + +/* Don't need any Perl or Python appearing in the appliance. */ +^perl +^python + +/* Plymouth is a graphical boot thing - not needed. */ +^plymouth + +/* Replacements for SysVinit. We don't use ordinary init in the + * appliance. + */ +^upstart +^systemd + +/* Linux firmware. Note that febootstrap itself excludes the kernel + * which is also not needed since we get the kernel, modules etc + * from the host at appliance boot. + */ +^linux-firmware + +/* Keyboard maps - appliance is not interactive. */ +^kbd-misc + +#ifdef REDHAT +^fedora-logos +^redhat-logos +^dracut +#endif + +#ifdef DEBIAN +^file-rc +#endif diff --git a/appliance/make.sh.in b/appliance/make.sh.in index 10609da6..cb243b55 100755 --- a/appliance/make.sh.in +++ b/appliance/make.sh.in @@ -20,11 +20,12 @@ unset CDPATH set -e -# XXX Distro-dependent in future. -excludes="--exclude ^perl --exclude ^python --exclude ^fedora-logos --exclude ^redhat-logos --exclude ^dracut --exclude ^upstart --exclude ^plymouth --exclude ^systemd --exclude ^linux-firmware --exclude ^kbd-misc" - -# For Debian: -excludes="$excludes --exclude ^file-rc" +# Turn excludelist file into command line arguments. +exec 5<excludelist +while read regexp <&5; do + excludes="$excludes --exclude $regexp" +done +exec 5<&- # Run febootstrap on the package list. if [ "x@FEBOOTSTRAP_YUM_CONFIG@" != "xno" ]; then diff --git a/appliance/packagelist.in b/appliance/packagelist.in index f479a9b7..2562e592 100644 --- a/appliance/packagelist.in +++ b/appliance/packagelist.in @@ -8,6 +8,9 @@ * DEBIAN=1 For Debian. * UBUNTU=1 For Ubuntu. * ARCHLINUX=1 For Archlinux. + * + * There is also a list of packages which are excluded if they appear + * as dependencies of the packages below. See: excludelist.in */ /* Basically the same with a few minor tweaks. */ |