mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
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.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,6 +2,7 @@
|
||||
*.a
|
||||
ABOUT-NLS
|
||||
aclocal.m4
|
||||
appliance/excludelist
|
||||
appliance/make.sh
|
||||
appliance/packagelist
|
||||
appliance/stamp-supermin
|
||||
|
||||
@@ -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
|
||||
|
||||
58
appliance/excludelist.in
Normal file
58
appliance/excludelist.in
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -204,7 +204,8 @@ if test "x$enable_appliance" = "xyes"; then
|
||||
dnl
|
||||
dnl This used to be Very Important but is now just used to select
|
||||
dnl which packages to install in the appliance, since the package
|
||||
dnl names vary slightly across distros. (See appliance/packagelist.in)
|
||||
dnl names vary slightly across distros. (See
|
||||
dnl appliance/packagelist.in and appliance/excludelist.in)
|
||||
AC_MSG_CHECKING([which Linux distro for package names])
|
||||
DISTRO=REDHAT
|
||||
if test -f /etc/debian_version; then
|
||||
|
||||
Reference in New Issue
Block a user