dnl Check for the exact system name and type. This is only used at the moment
dnl to determine the packaging rule to be used through the OS_NAME variable.
dnl Derived from dist.m4 - OpenSS7 (Ditributed under the GNU GPL v2)
dnl Copyright (c) 2001-2006 OpenSS7 Corporation
dnl Copyright (c) 1997-2000 Brian F. G. Bidulock
AC_DEFUN_ONCE([NUT_OS_FUNCTIONS],
[
os_get_name() {
case "$[1]" in
(*CentOS*|*CENTOS*) echo 'centos' ;;
(*Lineox*|*LINEOX*) echo 'lineox' ;;
(*White?Box*|*WHITE?BOX*) echo 'whitebox' ;;
(*Fedora*|*FEDORA*) echo 'fedora' ;;
(*Mandrake*|*Mandriva*|*MANDRAKE*|*MANDRIVA*) echo 'mandriva' ;;
(*Red?Hat*|*RED?HAT*) echo 'redhat' ;;
(*SuSE*|*SUSE*|*Novell*|*NOVELL*) echo 'suse' ;;
(*Debian*|*DEBIAN*) echo 'debian' ;;
(*Ubuntu*|*UBUNTU*) echo 'ubuntu' ;;
(*Gentoo*|*gentoo*) echo 'gentoo' ;;
# FIXME: *BSD, Solaris, HPUX, Aix, ...
(*) # fallback for other systems
case "${host_cpu}-${host_os}" in
*-aix*) echo 'aix' ;;
*-freebsd*) echo 'freebsd' ;;
*-darwin*) echo 'darwin' ;;
*solaris*) echo 'esyscmd(uname -sp)' ;;
*-hpux*) echo 'hpux' ;;
esac
esac
}
# only list special cases.
os_get_target() {
case "$[1]" in
# some may fall under generic-rpm
(centos|lineox|whitebox|fedora|redhat) echo 'redhat' ;;
(suse) echo 'opensuse' ;;
(ubuntu) echo 'debian' ;;
(*) echo '$[1]' ;;
# FIXME: *BSD, Solaris, HPUX, Aix, ...
esac
}
])# _OS_FUNCTIONS
AC_DEFUN([NUT_CHECK_OS],
[
m4_pattern_allow([^PKG_TARGET$])
# Look for all possible source of OS name resolution
# 1) we look for a LSB release info file
eval "dist_search_path=\"
/etc/lsb-release\""
dist_search_path=$(echo "$dist_search_path" | sed -e 's|\||g;s|//|/|g')
for dist_file in $dist_search_path
do
if test -f "$dist_file"
then
dist_cv_build_lsb_file="$dist_file"
break
fi
done
if test -z "$dist_cv_build_lsb_file" ; then
dist_cv_build_lsb_file='no'
fi
# 2) we look at specific release info file
eval "dist_search_path=\"
/etc/gentoo-release
/etc/centos-release
/etc/lineox-release
/etc/whitebox-release
/etc/fedora-release
/etc/mandrake-release
/etc/mandriva-release
/etc/redhat-release
/etc/SuSE-release
/etc/debian_version\""
dist_search_path=$(echo "$dist_search_path" | sed -e 's|\||g;s|//|/|g')
for dist_file in $dist_search_path
do
if test -f "$dist_file"
then
dist_cv_build_rel_file="$dist_file"
break
fi
done
if test -z "$dist_cv_build_rel_file" ; then
dist_cv_build_rel_file='no'
fi
# 3) we try the generic issue info file
eval "dist_search_path=\"
/etc/issue
/etc/issue.net\""
dist_search_path=$(echo "$dist_search_path" | sed -e 's|\||g;s|//|/|g')
for dist_file in $dist_search_path
do
if test -f "$dist_file"
then
dist_cv_build_issue_file="$dist_file"
break
fi
done
if test -z "$dist_cv_build_issue_file" ; then
dist_cv_build_issue_file='no'
fi
# Now we parse these content to search for the OS name
AC_REQUIRE([NUT_OS_FUNCTIONS])
AC_CACHE_CHECK([for host system name], [dist_cv_build_flavor], [dnl
if test -z "$dist_cv_build_flavor" -a ":${dist_cv_build_rel_file:-no}" != :no ; then
if test `echo "$dist_cv_build_rel_file" | sed -e 's|.*/||'` != 'debian_version' ; then
dist_cv_build_flavor=$(os_get_name "$(cat $dist_cv_build_rel_file)")
fi
fi
if test -z "$dist_cv_build_flavor" -a ":${dist_cv_build_lsb_file:-no}" != :no ; then
. "$dist_cv_build_lsb_file"
dist_cv_build_flavor=$(os_get_name "${DISTRIB_DESCRIPTION:-unknown}")
if test -z "$dist_cv_build_flavor" ; then
dist_cv_build_flavor=$(echo "$DISTRIB_ID" | tr [[:upper:]] [[:lower:]] | sed -e 's|[[[:space:]]]*||g;s|linux||g')
fi
fi
if test -z "$dist_cv_build_flavor" -a ":${dist_cv_build_issue_file:-no}" != :no ; then
dist_cv_build_flavor=$(os_get_name "$(cat $dist_cv_build_issue_file | grep 'Linux\|Fedora\|Ubuntu' | head -1)")
fi
# do debian after lsb and issue for Ubuntu
if test -z "$dist_cv_build_flavor" -a ":${dist_cv_build_rel_file:-no}" != :no ; then
if test `echo "$dist_cv_build_rel_file" | sed -e 's|.*/||'` = 'debian_version' ; then
dist_cv_build_flavor='debian'
fi
fi
# FIXME
if test -z "$dist_cv_build_flavor" ; then
dist_cv_build_flavor=$(os_get_name "$(${CC-cc} $CFLAGS -v 2>&1 | grep 'gcc version')")
fi
# save the result
if test -n "$dist_cv_build_flavor" ; then
OS_NAME=$dist_cv_build_flavor
PKG_TARGET=$(os_get_target "$dist_cv_build_flavor")
fi
])
])# NUT_CHECK_OS
dnl checking for OS information file {/etc/lsb-release, /etc/xxx_version, /etc/issue, ...)
dnl Checking for host system name
dnl get the base type (linux, ...) from uname,
dnl then check the exact linux type?!
dnl FIXME: consider cross pf target
dnl detect build env (pbuilder, .rpm, ...)