mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
build: improve and simplify distro detection
Add a --with-distro=ID argument for configure, so it is possible to manually specify the distro to use for the packages (in case os-release does not provide ID=.., or the ID is not recognized yet). In the case when --with-distro is not set, keep doing the autodetection, but using os-release only, i.e. dropping the checks for all the other -release files -- since there is --with-distro, older distros with no os-release can still be used. RWMJ: Add documentation to guestfs-building(1).
This commit is contained in:
committed by
Richard W.M. Jones
parent
2cc70fca71
commit
531316cc3f
@@ -648,6 +648,20 @@ Note that despite this setting, all backends are built into
|
||||
libguestfs, and you can override the backend at runtime by setting the
|
||||
C<$LIBGUESTFS_BACKEND> environment variable (or using API methods).
|
||||
|
||||
=item B<--with-distro=REDHAT|DEBIAN|...>
|
||||
|
||||
Libguestfs needs to know which Linux distro is in use so it can choose
|
||||
package names for the appliance correctly (see for example
|
||||
F<appliance/packagelist.in>). It normally does this automatically.
|
||||
|
||||
However if you can building or packaging libguestfs on a new distro
|
||||
then you can use I<--with-distro> to specify that the distro is
|
||||
similar to an existing one (eg. I<--with-distro=REDHAT> if the distro
|
||||
is a new Red Hat or CentOS derivative).
|
||||
|
||||
Note that if your distro is completely new then it may still require
|
||||
upstream modifications.
|
||||
|
||||
=item B<--with-extra=">I<distroname>=I<version>,libvirt,...B<">
|
||||
|
||||
=item B<--with-extra="local">
|
||||
|
||||
@@ -94,31 +94,25 @@ dnl names vary slightly across distros. (See
|
||||
dnl appliance/packagelist.in, appliance/excludefiles.in,
|
||||
dnl appliance/hostfiles.in)
|
||||
AC_MSG_CHECKING([which Linux distro for package names])
|
||||
if test -f /etc/os-release; then
|
||||
( . /etc/os-release && echo $ID | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@' ) >&AS_MESSAGE_LOG_FD
|
||||
DISTRO="`. /etc/os-release && echo $ID | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@'`"
|
||||
AS_CASE([$DISTRO],
|
||||
[FEDORA | RHEL | CENTOS],[DISTRO=REDHAT],
|
||||
[OPENSUSE | SLED | SLES],[DISTRO=SUSE],
|
||||
[ARCH],[DISTRO=ARCHLINUX])
|
||||
elif test -f /etc/debian_version; then
|
||||
DISTRO=DEBIAN
|
||||
if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>&AS_MESSAGE_LOG_FD; then
|
||||
DISTRO=UBUNTU
|
||||
fi
|
||||
elif test -f /etc/arch-release; then
|
||||
DISTRO=ARCHLINUX
|
||||
elif test -f /etc/SuSE-release; then
|
||||
DISTRO=SUSE
|
||||
elif test -f /etc/frugalware-release; then
|
||||
DISTRO=FRUGALWARE
|
||||
elif test -f /etc/mageia-release; then
|
||||
DISTRO=MAGEIA
|
||||
else
|
||||
dnl fallback option
|
||||
DISTRO=REDHAT
|
||||
fi
|
||||
AC_MSG_RESULT([$DISTRO])
|
||||
AC_ARG_WITH([distro],
|
||||
[AS_HELP_STRING([--with-distro="DISTRO_ID"],
|
||||
[distro ID @<:@default=ID in /etc/os-release@:>@])],[
|
||||
DISTRO="$withval"
|
||||
AC_MSG_RESULT([$DISTRO (manually specified)])
|
||||
],[
|
||||
if test -f /etc/os-release; then
|
||||
( . /etc/os-release && echo $ID | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@' ) >&AS_MESSAGE_LOG_FD
|
||||
DISTRO="`. /etc/os-release && echo $ID | tr '@<:@:lower:@:>@' '@<:@:upper:@:>@'`"
|
||||
AS_CASE([$DISTRO],
|
||||
[FEDORA | RHEL | CENTOS],[DISTRO=REDHAT],
|
||||
[OPENSUSE | SLED | SLES],[DISTRO=SUSE],
|
||||
[ARCH],[DISTRO=ARCHLINUX])
|
||||
AC_MSG_RESULT([$DISTRO (from /etc/os-release)])
|
||||
else
|
||||
AC_MSG_ERROR([/etc/os-release not available, please specify the distro using --with-distro=DISTRO])
|
||||
fi
|
||||
]
|
||||
)
|
||||
AC_SUBST([DISTRO])
|
||||
|
||||
dnl Add extra packages to the appliance.
|
||||
|
||||
Reference in New Issue
Block a user