From da24e7aab06361b8d9bb5b5c8417611501e94684 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 19 Dec 2010 10:56:06 +0000 Subject: [PATCH] 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. --- .gitignore | 1 + appliance/Makefile.am | 10 +++++++-- appliance/excludelist.in | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ appliance/make.sh.in | 11 ++++----- appliance/packagelist.in | 3 +++ configure.ac | 3 ++- 6 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 appliance/excludelist.in diff --git a/.gitignore b/.gitignore index 4887c31..3fe4eb0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.a ABOUT-NLS aclocal.m4 +appliance/excludelist appliance/make.sh appliance/packagelist appliance/stamp-supermin diff --git a/appliance/Makefile.am b/appliance/Makefile.am index f1c2327..503160e 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 0000000..7e2abc2 --- /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 10609da..cb243b5 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