932 lines
28 KiB
Plaintext
Executable File
932 lines
28 KiB
Plaintext
Executable File
# -*- Autoconf -*-
|
|
# Process this file with autoconf to produce a configure script.
|
|
|
|
# Disable caching
|
|
define([AC_CACHE_LOAD],)
|
|
define([AC_CACHE_SAVE],)
|
|
|
|
AC_PREREQ([2.61])
|
|
|
|
AC_INIT([pnp4nagios],[0.6.27],[pnp4nagios-devel@lists.sourceforge.net],[],[https://github.com/pnp4nagios/pnp4nagios])
|
|
PKG_NAME="$PACKAGE_NAME"
|
|
PKG_VERSION="$PACKAGE_VERSION"
|
|
|
|
#
|
|
# release and release_date
|
|
# ...gets overwritten by github release-building
|
|
#
|
|
PACKAGE_RELEASE="5"
|
|
PKG_REL_DATE="2024-03-18"
|
|
AC_SUBST(PACKAGE_RELEASE)
|
|
AC_SUBST(PKG_REL_DATE)
|
|
|
|
AC_CONFIG_SRCDIR(src/)
|
|
AC_CONFIG_HEADERS(include/config.h:include/config.h.in)
|
|
|
|
#
|
|
if echo $PATH | grep -qv '/sbin' ; then
|
|
echo "PATH variable doesn't include sbin, probable failure"
|
|
exit 1
|
|
fi
|
|
#
|
|
AC_SUBST(ac_configure_args)
|
|
XML_STRUCTURE_VERSION="4"
|
|
AC_SUBST(XML_STRUCTURE_VERSION)
|
|
|
|
DEBUG_LEVEL=0
|
|
AC_ARG_WITH(debug_level, [ --with-debug_level=<debuglevel> ],
|
|
DEBUG_LEVEL=$withval, DEBUG_LEVEL=0)
|
|
if test $DEBUG_LEVEL -gt 0 ; then
|
|
CFLAGS="${CFLAGS} -O0 -ggdb3 -g3"
|
|
fi
|
|
AC_SUBST(DEBUG_LEVEL)
|
|
|
|
#dnl What OS are we running?
|
|
AC_CANONICAL_HOST
|
|
#dnl kinda doubt much cross-compiling, but just in case...
|
|
AC_CANONICAL_TARGET
|
|
|
|
dnl Get Nagios autoconf-macros
|
|
AC_PREFIX_DEFAULT(/usr/local/pnp4nagios)
|
|
INIT_PROG=npcd
|
|
AX_NAGIOS_GET_OS
|
|
AX_NAGIOS_GET_DISTRIB_TYPE
|
|
AX_NAGIOS_GET_INIT
|
|
|
|
dnl permissions for 'init' files
|
|
if test $init_type = systemd ; then
|
|
INIT_PERM=0644
|
|
else
|
|
INIT_PERM=0755
|
|
fi
|
|
AC_SUBST(INIT_PERM)
|
|
|
|
|
|
AX_NAGIOS_GET_PATHS
|
|
AX_NAGIOS_GET_FILES
|
|
dnl undo some of the AX_NAGIOS_GET_PATHS problem with netbsd
|
|
if test $opsys = bsd -a $dist_type = netbsd ; then
|
|
sysconfdir="${prefix}/etc"
|
|
pkgsysconfdir="${sysconfdir}/pnp4nagios"
|
|
datarootdir="${datarootdir}/pnp4nagios"
|
|
libdir="${prefix}/lib/pnp4nagios"
|
|
libexecdir="${prefix}/libexec/pnp4nagios"
|
|
if test $initdiroverridden = no -a $init_type = newbsd ; then
|
|
initdir=/etc/rc.d
|
|
fi
|
|
fi
|
|
|
|
|
|
# for some reason AX_NAGIOS_GET_PATHS doesn't AC_SUBST this...
|
|
AC_SUBST(datadir)
|
|
|
|
dnl Checks for programs.
|
|
AC_PROG_INSTALL
|
|
dnl netbsd (and others?) uses different switch for suffix
|
|
dnl -S for GNU variety install, taken as default
|
|
INSTALL_SUFFIX="-S"
|
|
dnl -B for netbsd
|
|
inbk=`install --help 2>&1|grep -o -e '-B suffix'|head -n 1`
|
|
if test "$inbk" = "-B suffix" ; then
|
|
INSTALL_SUFFIX="-B"
|
|
fi
|
|
AC_SUBST(INSTALL_SUFFIX)
|
|
|
|
AC_PROG_CC
|
|
AC_PROG_MAKE_SET
|
|
AC_PATH_PROG([STRIP],[strip],[true])
|
|
AC_PROG_GREP
|
|
AC_PROG_EGREP
|
|
AC_PROG_AWK
|
|
AC_PROG_SED
|
|
AC_PROG_LN_S
|
|
AC_PATH_PROG(CP,cp)
|
|
AC_PATH_PROG(PERL,perl)
|
|
|
|
eval sbindir=$sbindir
|
|
|
|
# Checks for libraries.
|
|
AS_IF([test "q$target_cpu" = "qx86_64"],[x64="64"],[x64=""])
|
|
|
|
if test x$libdir = x ; then
|
|
if test -d "/usr/lib${x64}" ; then
|
|
libdir="${prefix}/usr/lib${x64}/${PACKAGE_NAME}"
|
|
elif test -d "/lib${x64}"; then
|
|
libdir="${prefix}/lib${x64}/${PACKAGE_NAME}"
|
|
elif test -d "/usr/lib" ; then
|
|
libdir="${prefix}/usr/lib/${PACKAGE_NAME}"
|
|
else
|
|
libdir="${prefix}/lib/${PACKAGE_NAME}"
|
|
fi
|
|
fi
|
|
AC_ARG_WITH(libdir,[ --with-libdir=<$libdir> pnp4nagios libs are kept ],
|
|
libdir=$withval
|
|
)
|
|
AC_SUBST(libdir)
|
|
|
|
# Check for Perl lib path
|
|
PERL_LIB_PATH=no
|
|
AC_ARG_WITH(perl_lib_path,[ --with-perl_lib_path=<path_to_perl_libs> sets path to rrdtool RRDs perl modules.],PERL_LIB_PATH=$withval,PERL_LIB_PATH=no)
|
|
AC_SUBST(PERL_LIB_PATH)
|
|
|
|
#
|
|
# Checking for Perl Modules
|
|
#
|
|
foo=`$PERL -V`
|
|
AC_MSG_RESULT($foo)
|
|
bar=`rpm -qa`
|
|
AC_MSG_RESULT($bar)
|
|
|
|
AC_MSG_CHECKING(for Perl Module Time::HiRes)
|
|
$PERL -MTime::HiRes -e exit >/dev/null 2>&1
|
|
if test $? -ne 0; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR(Perl Module Time::HiRes not available)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for Perl Module Getopt::Long)
|
|
$PERL -MGetopt::Long -e exit >/dev/null 2>&1
|
|
if test $? -ne 0; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR(Perl Module Getopt::Long not available)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
|
|
RRDS=0
|
|
AC_MSG_CHECKING(for optional Perl Module RRDs)
|
|
$PERL -I${PERL_LIB_PATH} -MRRDs -e exit >/dev/null 2>&1
|
|
if test $? -ne 0; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_WARN(Perl Module RRDs not available)
|
|
RRDS=0
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
RRDS=1
|
|
fi
|
|
AC_SUBST(RRDS)
|
|
|
|
AC_ARG_WITH(kohana,[ --without-kohana does not install the kohana framework],KOHANA=no,KOHANA=yes)
|
|
AC_SUBST(KOHANA)
|
|
AC_ARG_WITH(kohana_system,[ --with-kohana_system=<existing kohana system dir> Points to an already installed kohana framework],KOHANA_SYSTEM=$withval,KOHANA_SYSTEM="${datarootdir}/kohana/system")
|
|
eval KOHANA_SYSTEM="${KOHANA_SYSTEM}"
|
|
AC_SUBST(KOHANA_SYSTEM)
|
|
|
|
# Checks for library functions.
|
|
AC_FUNC_FORK
|
|
AC_CHECK_FUNCS([bzero socket alarm strerror strspn getloadavg])
|
|
AC_FUNC_MALLOC
|
|
AC_FUNC_STAT
|
|
AC_C_CONST
|
|
|
|
|
|
# Checks for header files.
|
|
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_SYS_WAIT
|
|
AC_CHECK_HEADERS(dirent.h stdio.h errno.h unistd.h syslog.h signal.h stdlib.h dirent.h string.h pthread.h getopt.h grp.h pwd.h sys/mman.h sys/types.h sys/wait.h sys/stat.h sys/socket.h sys/loadavg.h netinet/in.h fcntl.h limits.h)
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_UID_T
|
|
AC_STRUCT_DIRENT_D_TYPE
|
|
|
|
|
|
dnl decide on startup files, depending on distro
|
|
|
|
if test "x$initdiroverridden" != "xyes"; then
|
|
initname="npcd"
|
|
fi
|
|
|
|
#initname=`echo "$initname" | ${SED} "s#${PKG_NAME}#npcd#"`
|
|
initconf=`echo "$initconf" | ${SED} "s#${pkgsysconfdir}#npcd.cfg#"`
|
|
|
|
case $src_init in
|
|
default-service)
|
|
src_init=npcd.service
|
|
initname=npcd.service
|
|
;;
|
|
default-init)
|
|
src_init=rc.npcd
|
|
;;
|
|
newbsd-init)
|
|
src_init=newbsd.npcd
|
|
;;
|
|
openrc-init)
|
|
src_init=openrc.npcd
|
|
;;
|
|
upstart-init)
|
|
src_init=upstart.npcd
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR([missing an init file for npcd on this distro])
|
|
;;
|
|
esac
|
|
|
|
|
|
if test "x$spooldir" = "xN/A" ; then
|
|
spooldir="$localstatedir/spool/pnp4nagios"
|
|
fi
|
|
lockfile=`echo "${lockfile}"|${SED} "s#${localstatedir}#npcd.lock#"`
|
|
|
|
logdir=`echo "${logdir}"|${SED} 's#/log$##'`
|
|
logdir="${logdir}/log"
|
|
eval logdir="$logdir"
|
|
|
|
case $host_os in
|
|
*bsd*|darwin*)
|
|
root_grp=wheel
|
|
;;
|
|
*)
|
|
root_grp=root
|
|
;;
|
|
esac
|
|
|
|
AC_ARG_WITH(root_group,AS_HELP_STRING([--with-root-group=<grp>],[sets group name for installing init]),root_grp=$withval)
|
|
AC_SUBST(root_grp)
|
|
INIT_OPTS="-o root -g $root_grp"
|
|
AC_SUBST(INIT_OPTS)
|
|
|
|
|
|
# Check for rrdtool
|
|
RRDTOOL=no
|
|
AC_ARG_WITH(rrdtool,[ --with-rrdtool=<path_to_rrdtool> sets path to rrdtool],RRDTOOL=$withval,RRDTOOL=no)
|
|
if test RRDTOOL=no; then
|
|
AC_PATH_PROG(RRDTOOL,rrdtool)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(rrdtool path $RRDTOOL)
|
|
if [ test -d $RRDTOOL ];then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR([$RRDTOOL is a directory! PNP needs the Path to the rrdtool binary!])
|
|
fi
|
|
AC_MSG_RESULT(yes)
|
|
AC_MSG_CHECKING(for executable Bit on $RRDTOOL)
|
|
if [ ! test -x $RRDTOOL] ;then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR([$RRDTOOL is not executable!])
|
|
fi
|
|
AC_MSG_RESULT(yes)
|
|
|
|
AC_SUBST(RRDTOOL)
|
|
|
|
dnl ======== SElinux info ===============
|
|
|
|
AC_MSG_CHECKING(selinux capability)
|
|
if test -e /etc/selinux/config ;
|
|
then
|
|
source /etc/selinux/config
|
|
CAN_SELINUX="yes"
|
|
SELINUX_POLICY="$SELINUXTYPE"
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
CAN_SELINUX="no"
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
SELINUX="no"
|
|
AC_ARG_ENABLE([selinux],
|
|
AS_HELP_STRING([--disable-selinux], [Disable selinux build]))
|
|
|
|
AS_IF([test "x$enable_selinux" != "xno"], [
|
|
SELINUX=$CAN_SELINUX
|
|
])
|
|
|
|
SELINUX_DEVELDIR="no"
|
|
if test "x${SELINUX}" = "xyes" ; then
|
|
AC_ARG_WITH(selinux_develdir,
|
|
[ --with-selinux_develdir=<location of selinux policy Makefile],
|
|
SELINUX_DEVELDIR=$withval,SELINUX_DEVELDIR=no)
|
|
if test "x${SELINUX_DEVELDIR}" = "xno" ; then
|
|
if test -e "/usr/share/selinux/devel/Makefile" ; then
|
|
SELINUX_DEVELDIR="/usr/share/selinux/devel"
|
|
elif test -e "/usr/share/selinux/mcs/include/Makefile" ; then
|
|
SELINUX_DEVELDIR="/usr/share/selinux/mcs/include"
|
|
elif test -e "/usr/share/doc/selinux-policy-dev/examples/Makefile" ; then
|
|
SELINUX_DEVELDIR="/usr/share/doc/selinux-policy-dev/examples"
|
|
else
|
|
AC_MSG_ERROR([Directory with selinux policy Makefile not fund, use --with-selinux_develdir to specify])
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
AC_SUBST(SELINUX)
|
|
AC_SUBST(SELINUX_DEVELDIR)
|
|
|
|
dnl conditional in Makefile
|
|
SE=""
|
|
if test $SELINUX = no ; then
|
|
SE=['#']
|
|
fi
|
|
AC_SUBST(SE)
|
|
|
|
dnl ================ Nagios configuration info ============
|
|
dnl check for location where Nagios keeps its config
|
|
|
|
dnl user inputs override info from system
|
|
AC_ARG_WITH(nagios_cfg,[ --with-nagios-cfg=<nagios_cfg_dir> sets path to nagios.cfg file], NAGIOS_CFG=$withval, NAGIOS_CFG=no)
|
|
|
|
AC_ARG_WITH(nagios_version,[ --with-nagios-version=<nagios_version> nagios version string, like 3.1 etc], NAGIOS_VER=$withval, NAGIOS_VER=no)
|
|
|
|
NAGIOS_EXE=no
|
|
|
|
if test x$NAGIOS_CFG = xno -a x$NAGIOS_VER = xno ; then
|
|
AC_MSG_CHECKING(Look for running nagios server)
|
|
rnag=`ps -A -o command | ${EGREP} '/nagios4?( |$)' | head -n 1 | ${AWK} '{print $1;}'`
|
|
|
|
if test x$rnag = x ; then
|
|
AC_MSG_RESULT([not seen])
|
|
else
|
|
AC_MSG_RESULT($rnag)
|
|
ncfg=`ps -A -o command | ${EGREP} '/nagios4? +.*\.cfg' | head -n 1 | ${AWK} -v RS=' ' '/\.cfg/{print $1;}'`
|
|
if test x$ncfg != x ; then
|
|
NAGIOS_CFG=$ncfg
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING(Nagios executable)
|
|
if test x$rnag = x ; then
|
|
rnag=`which nagios 2>/dev/null`
|
|
if test x$rnag = x ; then
|
|
rnag=`which nagios4 2>/dev/null`
|
|
fi
|
|
fi
|
|
if test x$rnag = x ; then
|
|
rnag=no
|
|
fi
|
|
NAGIOS_EXE=$rnag
|
|
AC_MSG_RESULT($NAGIOS_EXE)
|
|
|
|
AC_MSG_CHECKING(Nagios config file location)
|
|
|
|
if test x$NAGIOS_CFG = xno; then
|
|
if test -e /etc/nagios/nagios.cfg ; then
|
|
NAGIOS_CFG=/etc/nagios/nagios.cfg
|
|
elif test -e /etc/nagios4/nagios.cfg ; then
|
|
NAGIOS_CFG=/etc/nagios4/nagios.cfg
|
|
elif test -e /usr/local/etc/nagios/nagios.cfg ; then
|
|
NAGIOS_CFG=/usr/local/etc/nagios/nagios.cfg
|
|
fi
|
|
fi
|
|
if test x${NAGIOS_CFG} = xno ; then
|
|
NAGIOS_CFG=/etc/nagios/nagios.cfg
|
|
AC_MSG_RESULT([Not found, forced to $NAGIOS_CFG])
|
|
else
|
|
AC_MSG_RESULT($NAGIOS_CFG)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(Nagios version)
|
|
# if nagios not installed yet, probably will install a new version
|
|
# so just pick a recent version unless one is given in arguments
|
|
|
|
if test x$NAGIOS_VER = xno; then
|
|
if test x$NAGIOS_EXE != xno ; then
|
|
NAGIOS_VER=`${NAGIOS_EXE} --help | ${AWK} '/^Nagios /' | ${AWK} -v RS=' ' '/^[[0-9]]/'`
|
|
AC_MSG_RESULT($NAGIOS_VER)
|
|
else
|
|
NAGIOS_VER=4.4.6
|
|
AC_MSG_RESULT([not found, assuming $NAGIOS_VER])
|
|
fi
|
|
else
|
|
AC_MSG_RESULT([forced use of version $NAGIOS_VER])
|
|
fi
|
|
fi
|
|
AC_SUBST(NAGIOS_CFG)
|
|
AC_SUBST(NAGIOS_VER)
|
|
|
|
dnl check for service/init for nagios
|
|
AC_ARG_WITH(nagios_unit,[ --with-nagios_unit=<nagios_unit_name> sets name of unit for nagios service], NAGIOS_UNIT=$withval,NAGIOS_UNIT=no)
|
|
if test x$NAGIOS_UNIT = xno; then
|
|
nagunit=''
|
|
case $init_type in
|
|
systemd)
|
|
nagunit=`systemctl list-units -q 'nagios*.service'|${AWK} '{print $1;}'`
|
|
;;
|
|
sysv)
|
|
nagunit=`chkconfig --list 2>/dev/null|${GREPE} 'nagios.?\s+0'|${AWK} '{print $1;}'`
|
|
;;
|
|
# not sure how to do other init_types
|
|
esac
|
|
if test "x$nagunit" != x; then
|
|
NAGIOS_UNIT=$nagunit
|
|
fi
|
|
fi
|
|
NAGIOS_UNIT=${NAGIOS_UNIT%.service}
|
|
AC_SUBST(NAGIOS_UNIT)
|
|
|
|
|
|
nagios_dir=`dirname $NAGIOS_CFG`
|
|
|
|
dnl check for location of Nagios password file
|
|
|
|
AC_MSG_CHECKING(Nagios password file)
|
|
NAGIOS_PWD=no
|
|
AC_ARG_WITH(nagios_pwd,[ --with-nagios-pwd=<nagios_pwd_file> sets path to Nagios password file], NAGIOS_PWD=$withval,NAGIOS_PWD=no)
|
|
if test x$NAGIOS_PWD = xno; then
|
|
if test -e "${nagios_dir}/passwd" ; then
|
|
NAGIOS_PWD="${nagios_dir}/passwd"
|
|
AC_MSG_RESULT($NAGIOS_PWD)
|
|
elif test -e "${nagios_dir}/htpasswd.users" ; then
|
|
NAGIOS_PWD="${nagios_dir}/htpasswd.users"
|
|
AC_MSG_RESULT($NAGIOS_PWD)
|
|
elif test -e "${nagios_dir}/htdigest.users" ; then
|
|
NAGIOS_PWD="${nagios_dir}/htdigest.users"
|
|
AC_MSG_RESULT($NAGIOS_PWD)
|
|
else
|
|
NAGIOS_PWD="${nagios_dir}/passwd"
|
|
AC_MSG_RESULT([not found, assume default $NAGIOS_PWD])
|
|
fi
|
|
else
|
|
AC_MSG_RESULT([forced to $NAGIOS_PWD])
|
|
fi
|
|
AC_SUBST(NAGIOS_PWD)
|
|
|
|
dnl directory for nagios "object" files
|
|
AC_MSG_CHECKING(Nagios objects directory)
|
|
NAGIOS_OBJ=no
|
|
AC_ARG_WITH(nagios_objects,[ --with-nagios-objects=<nagios_objects_directory> location of nagios object config files], NAGIOS_OBJ=$withval,NAGIOS_OBJ=no)
|
|
if test x$NAGIOS_OBJ = xno; then
|
|
if test -e "${nagios_dir}/objects" ; then
|
|
NAGIOS_OBJ="${nagios_dir}/objects"
|
|
AC_MSG_RESULT($NAGIOS_OBJ)
|
|
else
|
|
NAGIOS_OBJ="${nagios_dir}/objects"
|
|
AC_MSG_RESULT([not found, assume default $NAGIOS_OBJ])
|
|
fi
|
|
else
|
|
AC_MSG_RESULT([forced to $NAGIOS_OBJ])
|
|
fi
|
|
AC_SUBST(NAGIOS_OBJ)
|
|
|
|
|
|
AC_MSG_CHECKING(Nagios user/group)
|
|
nagios_user=no
|
|
nagios_grp=no
|
|
if test -e "$NAGIOS_CFG" ; then
|
|
nagios_user=`${AWK} -F= '/nagios_user/ {print $2;}' $NAGIOS_CFG`
|
|
nagios_grp=`${AWK} -F= '/nagios_group/ {print $2;}' $NAGIOS_CFG`
|
|
fi
|
|
|
|
AC_ARG_WITH(nagios_user,[ --with-nagios-user=<user> sets user name to run nagios],nagios_user=$withval)
|
|
AC_ARG_WITH(nagios_group,[ --with-nagios-group=<grp> sets group name to run nagios],nagios_grp=$withval)
|
|
|
|
ugmsg=""
|
|
if test x$nagios_user = xno ; then
|
|
ugmsg="using default"
|
|
nagios_user=nagios
|
|
fi
|
|
|
|
if test x$nagios_grp = xno ; then
|
|
ugmsg="using_default"
|
|
nagios_grp=nagios
|
|
fi
|
|
|
|
if test x$ugmsg = x ; then
|
|
AC_MSG_RESULT([${nagios_user} / ${nagios_grp}])
|
|
else
|
|
AC_MSG_RESULT([$ugmsg ${nagios_user} / ${nagios_grp}])
|
|
fi
|
|
|
|
AC_SUBST(nagios_user)
|
|
AC_SUBST(nagios_grp)
|
|
INSTALL_OPTS="-o $nagios_user -g $nagios_grp"
|
|
AC_SUBST(INSTALL_OPTS)
|
|
|
|
#
|
|
# pnp4nagios locations and files
|
|
#
|
|
PNP_LOGDIR="${logdir}/pnp4nagios"
|
|
AC_ARG_WITH(pnp-logdir,[ --with-pnp-logdir=<location of pnp4nagios log files and directories],
|
|
PNP_LOGDIR=$withval
|
|
)
|
|
AC_SUBST(PNP_LOGDIR)
|
|
|
|
PERFDATA_LOG="${PNP_LOGDIR}/perfdata.log"
|
|
AC_SUBST(PERFDATA_LOG)
|
|
|
|
PERFDATA_STATS="${PNP_LOGDIR}/stats"
|
|
AC_SUBST(PERFDATA_STATS)
|
|
|
|
|
|
PERFDATA_DIR="${PNP_LOGDIR}/rrd"
|
|
AC_ARG_WITH(perfdata-dir,[ --with-perfdata-dir=<path_to_perfdata> Tell me where I should store the RRD Database Files],
|
|
PERFDATA_DIR=$withval
|
|
)
|
|
AC_SUBST(PERFDATA_DIR)
|
|
|
|
PERFDATA_SPOOL_DIR="$spooldir"
|
|
AC_ARG_WITH(perfdata-spool-dir,[ --with-perfdata-spool-dir=<path_to_perfdata_spool_dir> Tell me where I should store perfdata files for bulk mode with npcd],
|
|
PERFDATA_SPOOL_DIR=$withval
|
|
)
|
|
AC_SUBST(PERFDATA_SPOOL_DIR)
|
|
|
|
|
|
dnl ---not sure if these three are used ---
|
|
pnpsender_name=pnpsender
|
|
AC_SUBST(pnpsender_name)
|
|
|
|
npcd_name=npcd
|
|
AC_SUBST(npcd_name)
|
|
|
|
pp_pl_name=process_perfdata.pl
|
|
AC_SUBST(pp_pl_name)
|
|
|
|
|
|
dnl =================== http server settings ================
|
|
|
|
|
|
AC_MSG_CHECKING(http server)
|
|
HTTP_SERVER=no
|
|
AC_ARG_WITH(http_server,
|
|
[ --with-http_server=(http,apache,apache2,lighttpd,nginx) http server software],
|
|
HTTP_SERVER=$withval)
|
|
|
|
if test "x${HTTP_SERVER}" = xno ; then
|
|
http_server_types="httpd
|
|
apache
|
|
apache2
|
|
lighttpd
|
|
nginx"
|
|
http_unit=x
|
|
for HTTP_SERVER in $http_server_types
|
|
do
|
|
case "$init_type" in
|
|
systemd)
|
|
http_unit=`systemctl list-units -q "${HTTP_SERVER}.service"|${AWK} '{print $1;}'`
|
|
;;
|
|
sysv)
|
|
http_unit=`chkconfig --list 2>/dev/null|${GREPE} "${HTTP_SERVER}\s+0"|${AWK} '{print $1;}'`
|
|
;;
|
|
esac
|
|
if test "x${http_unit}" != x ; then
|
|
break;
|
|
fi
|
|
done
|
|
fi
|
|
|
|
AC_ARG_WITH(http_server_base,
|
|
[ --with-http_server_base=(http server base dir)],
|
|
http_base=$withval, http_base=no)
|
|
|
|
if test x$http_base = xno ; then
|
|
case "${HTTP_SERVER}" in
|
|
apache*)
|
|
if apachectl -t -D DUMP_RUN_CFG >/dev/null 2>/dev/null ;
|
|
then
|
|
http_base=`apachectl -t -D DUMP_RUN_CFG | ${AWK} '/^ServerRoot:/ {print $2;}'`
|
|
http_base=`echo "$srvroot"|${SED} 's/"//'`
|
|
HTTP_USER=`apachectl -t -D DUMP_RUN_CFG | ${AWK} '/^User:/ {print $2;}'`
|
|
HTTP_USER=`echo "${HTTP_USER}"|${SED} 's/name=//'`
|
|
HTTP_USER=`echo "${HTTP_USER}"|${SED} 's/"//g'`
|
|
HTTP_GROUP=`apachectl -t -D DUMP_RUN_CFG | ${AWK} '/^Group:/ {print $2;}'`
|
|
HTTP_GROUP=`echo "${HTTP_GROUP}"|${SED} 's/name=//'`
|
|
HTTP_GROUP=`echo "${HTTP_GROUP}"|${SED} 's/"//g'`
|
|
HTTP_CONFDIR=`apachectl -t -D DUMP_INCLUDES| ${GREP} "$http_base/.*\.conf" | ${AWK} '/\/conf/{print $2;}' | ${SED} -E 's/[^\/]+$//' | head -n 1`
|
|
|
|
HTTP_CONFDIR=`apachectl -t -D DUMP_INCLUDES |${GREP} "$http_base/.*\.conf" | awk '/\/conf/{print $2;}'|${SED} -E 's/\/[[^\/]]+$//' | head -n 1`
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
|
|
|
|
if test "x${http_base}" = xno ; then
|
|
if test -e "/etc/${HTTP_SERVER}" ; then
|
|
http_base="/etc/${HTTP_SERVER}"
|
|
elif test -e "/usr/local/${HTTP_SERVER}" ; then
|
|
http_base="/usr/local/${HTTP_SERVER}"
|
|
elif test -e "/usr/local/etc/${HTTP_SERVER}" ; then
|
|
http_base="/usr/local/etc/${HTTP_SERVER}"
|
|
elif test -e "/usr/pkg/etc/${HTTP_SERVER}" ; then
|
|
http_base="/usr/pkg/etc/${HTTP_SERVER}"
|
|
fi
|
|
fi
|
|
|
|
if test "x$http_base" = "xno" ; then
|
|
AC_MSG_ERROR(http server base directory not found)
|
|
fi
|
|
|
|
if test "x$HTTP_CONFDIR" = x ; then
|
|
case "$HTTP_SERVER" in
|
|
apache* | httpd )
|
|
if test -e "${http_base}/conf/httpd.conf" ; then
|
|
hconf="${http_base}/conf/httpd.conf"
|
|
elif test -e "${http_base}/httpd.conf" ; then
|
|
hconf="${http_base}/httpd.conf"
|
|
elif test -e "${http_base}/apache.conf" ; then
|
|
hconf="${http_base}/apache.conf"
|
|
elif test -e "${http_base}/apache2.conf" ; then
|
|
hconf="${http_base}/apache2.conf"
|
|
else
|
|
echo "HTTPD main configure file not found"
|
|
hconf="${http_base}/httpd.conf"
|
|
fi
|
|
if test -e $hconf ; then
|
|
HTTP_USER=`${AWK} '/^User/{print $2;}' $hconf`
|
|
HTTP_GROUP=`${AWK} '/^Group/{print $2;}' $hconf`
|
|
HTTP_CONFDIR=`${AWK} '/^IncludeOptional .*\*/{print $2;}' $hconf|head -n 1`
|
|
if test "x${HTTP_CONFDIR}" != x ; then
|
|
HTTP_CONFDIR=`dirname "${http_base}/${HTTP_CONFDIR}"`
|
|
fi
|
|
fi
|
|
HTTP_USER=${HTTP_USER:-daemon}
|
|
HTTP_GROUP=${HTTP_GROUP:-daemon}
|
|
HTTP_CONFDIR=${HTTP_CONFDIR:-$http_base}
|
|
;;
|
|
lighttpd )
|
|
HTTP_USER=lighttpd
|
|
HTTP_GROUP=lighttpd
|
|
HTTP_CONFDIR="${http_base}/conf.d"
|
|
;;
|
|
nginx )
|
|
HTTP_USER=nobody
|
|
HTTP_GROUP=root
|
|
HTTP_CONFDIR="${http_base}/conf.d"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if test ! -e ${HTTP_CONFDIR} ; then
|
|
HTTP_CONFDIR=${http_base}
|
|
fi
|
|
|
|
|
|
if test "${HTTP_SERVER}" = "httpd" ; then
|
|
HTTP_SERVER=apache
|
|
elif test "${HTTP_SERVER}" = "apache2" ; then
|
|
HTTP_SERVER=apache
|
|
fi
|
|
AC_MSG_RESULT($HTTP_SERVER)
|
|
AC_SUBST(HTTP_SERVER)
|
|
HTTP_UNIT=${HTTP_UNIT%.service}
|
|
AC_SUBST(HTTP_UNIT)
|
|
|
|
dnl user/grp are based on "tar" install defaults
|
|
dnl becuase package managers do their own thing.
|
|
dnl so if these user/group settings look unfamiliar, that
|
|
dnl might be why
|
|
|
|
AC_ARG_WITH(http_user,[ --with-http_user=<user> sets user name for http server],http_user=$withval,http_user=$HTTP_USER)
|
|
AC_ARG_WITH(http_group,[ --with-http_group=<grp> sets group name for http server],http_group=$withval,http_group=$HTTP_GROUP)
|
|
|
|
HTTP_USER=${http_user}
|
|
HTTP_GROUP=${http_group}
|
|
|
|
if test x${HTTP_USER} = xno ; then
|
|
AC_MSG_ERROR(http_user not defined)
|
|
elif test x${HTTP_GROUP} = xno ; then
|
|
AC_MSG_ERROR(http_group not defined)
|
|
fi
|
|
|
|
AC_SUBST(HTTP_USER)
|
|
AC_SUBST(HTTP_GROUP)
|
|
HTTP_INSTALL_OPTS="-o $HTTP_USER -g $HTTP_GROUP"
|
|
AC_SUBST(HTTP_INSTALL_OPTS)
|
|
|
|
dnl override the http server config directory, if requested
|
|
|
|
AC_ARG_WITH(http_confdir,[ --with-http_confdir=<path_to_conf_dir> sets path to http server conf.d directory],HTTP_CONFDIR=$withval)
|
|
AC_SUBST(HTTP_CONFDIR)
|
|
|
|
dnl cache directory, needed for XDG_CACHE_DIR
|
|
|
|
AC_ARG_WITH(cache_dir,[ --with-cache_dir=<path to cache dir>],
|
|
CACHE_DIR=$withval,CACHE_DIR=no)
|
|
if test "x$CACHE_DIR" = "xno" ; then
|
|
if test -e "/var/cache" ; then
|
|
CACHE_DIR=/var/cache/pnp4nagios
|
|
else
|
|
AC_MSG_ERROR([/var/cache missing, need to define cache_dir])
|
|
fi
|
|
fi
|
|
AC_SUBST(CACHE_DIR)
|
|
|
|
dnl set the url that points to pnp4nagios graphs
|
|
AC_ARG_WITH(pnp_url,
|
|
[--with-pnp_url=<pnp4nagios-url>],
|
|
PNP_URL=$withval,
|
|
PNP_URL=/pnp4nagios)
|
|
|
|
AC_SUBST(PNP_URL)
|
|
|
|
AC_MSG_CHECKING(Default paper size for pdf generation)
|
|
dnl autoconf resets locale, so can't use LC_PAPER
|
|
dnl look for system-wide locale setting entry
|
|
dnl countries/regions that primarily use "letter" size paper:
|
|
dnl Belize Canada Chile Colombia Costa Rica El Salvador Guatemala Mexico
|
|
dnl Nicaragua Panama Philippines Puerto Rico United States Venezuela
|
|
dnl
|
|
dnl codes: BZ,CA,CL,CO,CR,SV,GT,MX,NI,PA,PH,PR,US,VE
|
|
dnl ---- the rest of the world mostly uses A4.
|
|
|
|
PAPERSIZE=no
|
|
AC_ARG_WITH(papersize,[ --with-papersize=<paper_size> paper size to use A4 or letter],PAPERSIZE=$withval,PAPERSIZE=no)
|
|
if test x${PAPERSIZE} = xno ; then
|
|
localefile=no
|
|
if test -e "/etc/locale.conf" ; then
|
|
localefile=/etc/locale.conf
|
|
elif test -e "/etc/default/locale" ; then
|
|
localefile=/etc/default/locale
|
|
fi
|
|
if test x${localefile} = xno ; then
|
|
PAPERSIZE=A4
|
|
else
|
|
country=`${GREP} "_..\." -o ${localefile} | ${SED} 's/[[\._]]//g'`
|
|
if echo 'BZ,CA,CL,CO,CR,SV,GT,MX,NI,PA,PH,PR,US,VE' | ${GREP} -q ${country} ; then
|
|
PAPERSIZE=letter
|
|
else
|
|
PAPERSIZE=A4
|
|
fi
|
|
fi
|
|
fi
|
|
AC_SUBST(PAPERSIZE)
|
|
AC_MSG_RESULT($PAPERSIZE)
|
|
|
|
dnl - Modified version from www.erlang.org
|
|
dnl - Some 12/15/05 mods made after reading http://xaxxon.slackworks.com/phuku/dl.html
|
|
AC_MSG_CHECKING(for linker flags for loadable modules)
|
|
case $host_os in
|
|
solaris2*|sysv4*)
|
|
MOD_LDFLAGS="-G"
|
|
;;
|
|
aix4*|aix5*|aix6*|aix7*)
|
|
#MOD_LDFLAGS="-G -bnoentry -bexpall"
|
|
MOD_LDFLAGS="-shared -Wl,-G -Wl,-bM:SRE -Wl,-bnoentry -Wl,-bexpall"
|
|
;;
|
|
freebsd2*)
|
|
# Non-ELF GNU linker
|
|
MOD_LDFLAGS="-Bshareable"
|
|
;;
|
|
darwin*)
|
|
# Mach-O linker, a shared lib and a loadable
|
|
# object file is not the same thing.
|
|
MOD_LDFLAGS="-bundle -flat_namespace -undefined suppress"
|
|
MOD_CFLAGS="$MOD_CFLAGS -fno-common"
|
|
;;
|
|
linux* | k*bsd*-gnu*)
|
|
# assume GNU linker and ELF
|
|
MOD_LDFLAGS="-shared"
|
|
MOD_CFLAGS="-fPIC"
|
|
;;
|
|
*)
|
|
# assume GNU linker and ELF
|
|
MOD_LDFLAGS="-shared"
|
|
;;
|
|
esac
|
|
AC_MSG_RESULT([$MOD_LDFLAGS])
|
|
AC_SUBST(MOD_CFLAGS)
|
|
AC_SUBST(MOD_LDFLAGS)
|
|
|
|
|
|
AC_CONFIG_FILES( subst Makefile share/Makefile lib/Makefile scripts/Makefile src/Makefile sample-config/Makefile man/Makefile )
|
|
AC_CONFIG_FILES([include/stamp-h], [date '+%Y-%m-%dT%H:%M:%S%z' > include/stamp-h])
|
|
AC_CONFIG_FILES(scripts/rrd_modify.pl scripts/rc.npcd scripts/rc.pnp_gearman_worker)
|
|
AC_CONFIG_FILES(scripts/npcd.service scripts/pnp_gearman_worker.service)
|
|
AC_CONFIG_FILES(scripts/newbsd.npcd)
|
|
AC_CONFIG_FILES(scripts/check_pnp_rrds.pl share/pnp/index.php share/pnp/install.php)
|
|
AC_CONFIG_FILES(sample-config/README_config.md)
|
|
AC_CONFIG_FILES(sample-config/SetLogLevels)
|
|
AC_CONFIG_FILES(sample-config/config_tools/NagiosCfgMod.pl)
|
|
AC_CONFIG_FILES(sample-config/config_tools/TemplateMod.pl)
|
|
AC_CONFIG_FILES(sample-config/config_tools/verify_pnp_config)
|
|
AC_CONFIG_FILES(sample-config/config_samples/apache.pnp4nagios.conf)
|
|
AC_CONFIG_FILES(sample-config/config_samples/config.php)
|
|
AC_CONFIG_FILES(sample-config/config_samples/lighttpd.pnp4nagios.conf)
|
|
AC_CONFIG_FILES(sample-config/config_samples/nagios.cfg)
|
|
AC_CONFIG_FILES(sample-config/config_samples/nginx.pnp4nagios.conf)
|
|
AC_CONFIG_FILES(sample-config/config_samples/npcd.cfg)
|
|
AC_CONFIG_FILES(sample-config/config_samples/pnp-bulk.cfg)
|
|
AC_CONFIG_FILES(sample-config/config_samples/pnp-npcd.cfg)
|
|
AC_CONFIG_FILES(sample-config/config_samples/pnp-sync.cfg)
|
|
AC_CONFIG_FILES(sample-config/config_samples/process_perfdata.cfg)
|
|
AC_CONFIG_FILES(sample-config/pnp4nagios_release)
|
|
AC_CONFIG_FILES(man/npcd.8 ci/pnp4nagios.spec)
|
|
AC_CONFIG_FILES(pnp4nagios.fc src/config.c src/npcdmod.c)
|
|
AC_CONFIG_FILES(contrib/fedora/pnp4nagios.logrotate.conf)
|
|
AC_CONFIG_FILES(contrib/fedora/logwatch/conf/logfiles/pnp4nagios.conf)
|
|
AC_CONFIG_FILES(contrib/fedora/logwatch/scripts/services/pnp4nagios)
|
|
AC_CONFIG_FILES(contrib/ssi/status-header.ssi)
|
|
|
|
AC_OUTPUT
|
|
|
|
#### need to use 'subst' instead of configure for this
|
|
#### to deal with 'use lib "no"' case for perl scripts
|
|
$PERL subst summary
|
|
$PERL subst scripts/process_perfdata.pl
|
|
$PERL subst scripts/rrd_convert.pl
|
|
#
|
|
if test "x$RRDS" = "x1"; then
|
|
$PERL -MRRDs -e '1;' 2>/dev/null
|
|
if test "$?" -ne 0; then
|
|
RRDS=0
|
|
else
|
|
rrds_version=`$PERL -MRRDs -e 'print \$RRDs::VERSION;'`
|
|
fi
|
|
fi
|
|
rrdtest=`${RRDTOOL}|head -n1|cut -d' ' -f1| ${AWK} '{print tolower($0)}'`
|
|
rrdtest=`basename $rrdtest`
|
|
if test "x$rrdtest" != "xrrdtool" ; then
|
|
rrdtool_message="WARNING: '$RRDTOOL' does not look like rrdtool"
|
|
else
|
|
rrdtool_version=`${RRDTOOL}|head -n1|cut -d' ' -f2`
|
|
rrdtool_message="${RRDTOOL} Version ${rrdtool_version}"
|
|
fi
|
|
|
|
dnl Review options
|
|
echo ""
|
|
echo ""
|
|
AC_MSG_RESULT([*** Configuration summary for $PKG_NAME $PKG_VERSION $PKG_REL_DATE ***:])
|
|
|
|
echo ""
|
|
echo " General Options:"
|
|
echo " -------------------------"
|
|
|
|
AC_MSG_RESULT([ Host OS: $host_os])
|
|
AC_MSG_RESULT([ Distribution: $dist_type, $dist_ver])
|
|
AC_MSG_RESULT([ SELINUX enabled: $SELINUX])
|
|
AC_MSG_RESULT([ Install \${prefix}: $prefix])
|
|
AC_MSG_RESULT([ Nagios version: $NAGIOS_VER])
|
|
AC_MSG_RESULT([ Nagios user/group: $nagios_user,$nagios_grp])
|
|
AC_MSG_RESULT([ Root user/group: root,$root_grp])
|
|
AC_MSG_RESULT([ PNP HTML dir: $datarootdir])
|
|
AC_MSG_RESULT([ Config dir: $pkgsysconfdir])
|
|
AC_MSG_RESULT([ rrdtool binary: $rrdtool_message])
|
|
if test "x$RRDS" = "x0" ; then
|
|
AC_MSG_RESULT([ RRDs Perl Modules: *** NOT FOUND ***])
|
|
else
|
|
AC_MSG_RESULT([ RRDs Perl Modules: (Version $rrds_version) FOUND])
|
|
fi
|
|
if test "x$PERL_LIB_PATH" != "x" ; then
|
|
AC_MSG_RESULT([ RRDs Perl search path: $PERL_LIB_PATH])
|
|
fi
|
|
dnl
|
|
AC_MSG_RESULT([ RRD Files stored in: $PERFDATA_DIR])
|
|
AC_MSG_RESULT([ process_perfdata Logfile: $PERFDATA_LOG])
|
|
AC_MSG_RESULT([ NPCD perfdata stored in: $PERFDATA_SPOOL_DIR])
|
|
AC_MSG_RESULT([ fontconfig cache dir: $CACHE_DIR])
|
|
|
|
|
|
|
|
echo ""
|
|
echo " Web Interface Options:"
|
|
echo " ------------------------"
|
|
|
|
AC_MSG_RESULT([ http server: $HTTP_SERVER])
|
|
AC_MSG_RESULT([ http configs dir: $HTTP_CONFDIR])
|
|
AC_MSG_RESULT([ put pnp http config File: ${HTTP_CONFDIR}/${PACKAGE_NAME}.conf])
|
|
AC_MSG_RESULT([ http user/group: $HTTP_USER,$HTTP_GROUP])
|
|
AC_MSG_RESULT([ HTML URL: https://localhost${PNP_URL}/])
|
|
|
|
if test "x$DESTDIR" != "x" ; then
|
|
AC_MSG_RESULT([ WARNING \${DESTDIR} set: $DESTDIR])
|
|
fi
|
|
|
|
if test "x${DEBUG_LEVEL}" != "x0" ; then
|
|
echo " Debug output:"
|
|
echo " -------------"
|
|
AC_MSG_RESULT([ DEBUG_LEVEL: ${DEBUG_LEVEL}])
|
|
AC_MSG_RESULT([ perl exec: $PERL])
|
|
AC_MSG_RESULT([ shell exec: $SHELL])
|
|
AC_MSG_RESULT([ libexecdir: $libexecdir])
|
|
AC_MSG_RESULT([ libdir: $libdir])
|
|
AC_MSG_RESULT([ sysconfdir: $sysconfdir])
|
|
AC_MSG_RESULT([ datarootdir: $datarootdir])
|
|
AC_MSG_RESULT([ datadir: $datadir])
|
|
AC_MSG_RESULT([ exec prefix: $exec_prefix])
|
|
AC_MSG_RESULT([ sbindir: $sbindir])
|
|
AC_MSG_RESULT([ bindir: $bindir])
|
|
fi
|
|
|
|
if test $opsys = unix ; then
|
|
if test "x$prefix" = "x/usr/local/nagios" ; then
|
|
echo ""
|
|
echo ""
|
|
echo "prefix=$prefix"
|
|
echo "You probably wanted to do:"
|
|
echo " ./configure --prefix=/usr/local/pnp4nagios"
|
|
echo "(or some similar prefix) to get the correct prefix."
|
|
fi
|
|
fi
|
|
if test "$install_method" = default ; then
|
|
if test $opsys = bsd ; then
|
|
echo ""
|
|
echo ""
|
|
echo "prefix=$prefix"
|
|
echo "You probably wanted to do:"
|
|
echo " ./configure --enable-install-method=os "
|
|
echo "to get the correct installation paths"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo ""
|
|
echo "Review the options above for accuracy. If they look okay,"
|
|
echo "type 'make all' to compile the main program"
|
|
echo ""
|
|
echo "For more info run ./configure --with-debug_level=1"
|
|
dnl
|
|
dnl
|