# =========================================================================== # SYNOPSIS # # AX_NAGIOS_GET_PATHS # # DESCRIPTION # # This macro figures out the installation & run paths for various systems # The argument are: # the O/S determined by the AX_NAGIOS_GET_OS macro. # the distribution type as determined by AX_NAGIOS_GET_DISTRIB_TYPE # the init type as determined by AX_NAGIOS_GET_INIT # the inetd type as determined by AX_NAGIOS_GET_INETD # # LICENSE # # Copyright (c) 2016 Nagios Core Development Team # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. # =========================================================================== AU_ALIAS([AC_NAGIOS_GET_PATHS], [AX_NAGIOS_GET_PATHS]) AC_DEFUN([AX_NAGIOS_GET_PATHS], [ AC_SUBST(pkgsysconfdir) AC_SUBST(objsysconfdir) AC_SUBST(initname) AC_SUBST(inetdname) AC_SUBST(pluginsdir) AC_SUBST(brokersdir) AC_SUBST(cgibindir) AC_SUBST(webdir) AC_SUBST(privatesysconfdir) AC_SUBST(pkglocalstatedir) AC_SUBST(logdir) AC_SUBST(piddir) AC_SUBST(pipedir) AC_SUBST(spooldir) AC_SUBST(initdir) AC_SUBST(initdiroverridden) AC_SUBST(inetddir) AC_SUBST(tmpfilesd) AC_SUBST(subsyslockdir) AC_SUBST(subsyslockfile) if test x$DBG_PATHS != x; then echo echo Incoming paths: echo " prefix $prefix" echo " exec_prefix $exec_prefix" echo " bindir $bindir" echo " libexecdir $libexecdir" echo " sysconfdir $sysconfdir" echo " localstatedir $localstatedir" echo " datarootdir $datarootdir" echo " datadir $datadir" echo " localedir $localedir" echo fi AC_MSG_CHECKING(for which paths to use ) AC_ARG_ENABLE(install_method, AC_HELP_STRING([--enable-install-method=], [sets the install method to use: 'default' (the default) will install to /usr/local/nagios, 'os' will try to determine which method to use based on OS type and distribution. Fine tuning using the '--bindir', etc. overrides above will still work]), install_method=$enableval, install_method=default ) AC_ARG_ENABLE(showdirs_only, AC_HELP_STRING([--enable-showdirs-only=yes], [This option will cause 'configure' to stop after determining the install locations based on '--enable-install-method', so you can see the destinations before a full './configure', 'make', 'make install' process.]), showdirs_only=$enableval, showdirs_only=no ) AS_CASE([$install_method], [yes], install_method="os", [no], install_method="default", [default|os], :, [*], echo >&6; AC_MSG_ERROR(['--enable-install-method=$install_method' is invalid]) ) if test $showdirs_only != "no"; then showdirs_only="yes"; fi AS_CASE([$dist_type], [*solaris*|*hp-ux*|*aix*|*osx*], opsys=unix) # Does this package need to know: need_cgi=no # where the cgi-bin directory is need_web=no # where the website directory is need_brk=no # where the event broker modules directory is need_plg=no # where the plugins directory is need_pipe=no # where the pipe directory is need_spl=no # where the spool directory is need_loc=no # where the locale directory is need_log_subdir=no # where the loc sub-directory is need_etc_subdir=no # where the etc sub-directory is need_pls_dir=no # where the package locate state directory is if test x"$INIT_PROG" = x; then INIT_PROG="$PKG_NAME" fi AS_CASE([$PKG_NAME], [nagios], need_log_subdir=yes need_etc_subdir=yes need_pls_dir=yes need_brk=yes need_pipe=yes need_spl=yes need_loc=yes need_cgi=yes need_web=yes, [ndoutils], need_brk=yes need_spl=yes, [nrpe], need_plg=yes, [nsca], need_cgi=no, [plugins], need_loc=yes need_plg=yes ) AC_ARG_WITH(pkgsysconfdir, AC_HELP_STRING([--with-pkgsysconfdir=DIR], [where configuration files should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then pkgsysconfdir="$withval" fi) AC_ARG_WITH(objsysconfdir, AC_HELP_STRING([--with-objsysconfdir=DIR], [where object configuration files should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then objsysconfdir="$withval" fi) AC_ARG_WITH(privatesysconfdir, AC_HELP_STRING([--with-privatesysconfdir=DIR], [where private configuration files should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then privatesysconfdir="$withval" fi) AC_ARG_WITH(webdir, AC_HELP_STRING([--with-webdir=DIR], [where the website files should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then webdir="$withval" fi) AC_ARG_WITH(pluginsdir, AC_HELP_STRING([--with-pluginsdir=DIR], [where the plugins should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then pluginsdir="$withval" fi) AC_ARG_WITH(brokersdir, AC_HELP_STRING([--with-brokersdir=DIR], [where the broker modules should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then brokersdir="$withval" fi) AC_ARG_WITH(cgibindir, AC_HELP_STRING([--with-cgibindir=DIR], [where the CGI programs should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then cgibindir="$withval" fi) AC_ARG_WITH(logdir, AC_HELP_STRING([--with-logdir=DIR], [where log files should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then logdir="$withval" fi) AC_ARG_WITH(piddir, AC_HELP_STRING([--with-piddir=DIR], [where the PID file should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then piddir="$withval" fi) AC_ARG_WITH(pipedir, AC_HELP_STRING([--with-pipedir=DIR], [where socket and pipe files should be placed]), if test x$withval != x -a x$withval != xno -a x$withval != xyes; then pipedir="$withval" fi) # # Setup the base directory # if test $install_method = "default"; then if test $opsys = "unix"; then if test x"$prefix" = "xNONE"; then prefix="/usr/local/nagios"; fi else if test x"$prefix" = "xNONE"; then prefix=${ac_default_prefix}; fi fi datarootdir=${datarootdir="$prefix"} else if test x"$datadir" = x'${datarootdir}'; then AS_UNSET(datadir); fi if test x"$sysconfdir" = x'${prefix}/etc'; then AS_UNSET(sysconfdir); fi if test x"$prefix" = "xNONE"; then if test $dist_type = freebsd -o $dist_type = openbsd -o $dist_type = osx; then prefix="/usr/local" elif test $dist_type = netbsd; then prefix="/usr/pkg" else prefix="/usr" fi fi if test x"$exec_prefix" = "xNONE"; then exec_prefix=$prefix; fi if test x"$localstatedir" = x'${prefix}/var'; then if test $dist_type = "osx"; then localstatedir="/private/var" else localstatedir="/var" fi fi if test $opsys = "unix"; then if test x"$datarootdir" = x'${prefix}/share'; then if test $dist_type = "hp-ux"; then datarootdir="/usr/local/share" if test x"$libexecdir" = x'${exec_prefix}/libexec'; then libexecdir="/usr/nagios" fi elif test $dist_type = "osx"; then datarootdir="/usr/local/share" if test x"$libexecdir" = x'${exec_prefix}/libexec'; then libexecdir="/usr/local/nagios" fi elif test x"$libexecdir" = x'${exec_prefix}/libexec'; then libexecdir="/usr/lib/nagios" fi fi if test $dist_type = "osx"; then if test x"$libexecdir" = x'${exec_prefix}/libexec'; then libexecdir="/usr/local/libexec/nagios" fi fi elif test $opsys = "bsd"; then if test x"$libexecdir" = x'${exec_prefix}/libexec'; then libexecdir=${exec_prefix}/libexec/nagios; fi elif test x"$libexecdir" = x'${exec_prefix}/lib'; then libexecdir=${libexecdir}/nagios; elif test x"$libexecdir" = x'${exec_prefix}/libexec'; then libexecdir=${exec_prefix}/lib/nagios; fi fi if test x"$exec_prefix" = "xNONE"; then exec_prefix=${prefix}; fi tmpfilesd=${tmpfilesd="/usr/lib/tmpfiles.d"} if test ! -d "$tmpfilesd"; then tmpfilesd="N/A" else tmpfilesd="$tmpfilesd/$INIT_PROG.conf" fi subsyslockdir=${subsyslockdir="/run"} if test ! -d "$subsyslockdir"; then subsyslockdir="N/A" subsyslockfile="N/A" else subsyslockfile="$subsyslockdir/$INIT_PROG.lock" fi if test "$need_loc" = no; then localedir="N/A" fi if test $install_method = "default" ; then # # Do the default setup # datadir=${datadir="$datarootdir"} if test $need_web = yes; then webdir=${webdir="$datadir"} else webdir="N/A" fi if test $opsys = "unix"; then sysconfdir=${sysconfdir="/etc/opt"} fi pkgsysconfdir=${pkgsysconfdir="$sysconfdir"} if test $need_etc_subdir = yes; then objsysconfdir=${objsysconfdir="$pkgsysconfdir/objects"} else objsysconfdir="N/A" fi privatesysconfdir=${privatesysconfdir="$pkgsysconfdir"} logdir=${logdir="$localstatedir"} piddir=${piddir="$localstatedir"} if test "$need_pipe" = yes; then pipedir=${pipedir="$localstatedir/rw"} else pipedir="N/A" fi if test "$need_pls_dir" = yes; then pkglocalstatedir=${pkglocalstatedir="$localstatedir"} else pkglocalstatedir="N/A" fi if test "$need_spl" = yes; then spooldir=${spooldir="$localstatedir/var"} else spooldir="N/A" fi if test $need_brk = yes; then brokersdir=${brokersdir="$bindir"} else brokersdir="N/A" fi if test $need_plg = yes; then pluginsdir=${pluginsdir="$libexecdir"} else pluginsdir="N/A" fi if test $need_cgi = yes; then cgibindir=${cgibindir="$prefix/sbin"} else cgibindir="N/A" fi elif test $opsys = "linux"; then # # Linux "Standard" install # install_method="$install_method : FHS" datadir=${datadir="$datarootdir/nagios"} if test $need_web = yes; then webdir=${webdir="$datadir/html"} else webdir="N/A" fi sysconfdir=${sysconfdir="/etc"} pkgsysconfdir=${pkgsysconfdir="$sysconfdir/nagios"} if test $need_etc_subdir = yes; then objsysconfdir=${objsysconfdir="$pkgsysconfdir/objects"} else objsysconfdir="N/A" fi privatesysconfdir=${privatesysconfdir="$pkgsysconfdir/private"} if test $need_log_subdir = yes; then logdir=${logdir="$localstatedir/log/$INIT_PROG"} else logdir=${logdir="$localstatedir/log"} fi piddir=${piddir="$localstatedir/run/${INIT_PROG}"} if test "$need_pipe" = yes; then pipedir=${pipedir="$localstatedir/run/${INIT_PROG}"} else pipedir="N/A" fi if test "$need_pls_dir" = yes; then pkglocalstatedir=${pkglocalstatedir="$localstatedir/lib/$INIT_PROG"} else pkglocalstatedir="N/A" fi if test "$need_spl" = yes; then spooldir=${spooldir="$localstatedir/spool/$INIT_PROG"} else spooldir="N/A" fi if test $need_brk = yes; then brokersdir=${brokersdir="$libexecdir/brokers"} else brokersdir="N/A" fi if test $need_plg = yes; then pluginsdir=${pluginsdir="$libexecdir/plugins"} else pluginsdir="N/A" fi if test $need_cgi = yes; then cgibindir=${cgibindir="$libexecdir/cgi-bin"} else cgibindir="N/A" fi elif test $opsys = "unix"; then # # "Standard" Unix install # install_method="$install_method : Unix Standard" if test $dist_type = osx; then install_method="$install_method : OS X Standard" fi datadir=${datadir="$datarootdir/nagios"} if test $need_web = yes; then webdir=${webdir="$datadir/html"} else webdir="N/A" fi if test $dist_type = osx; then sysconfdir=${sysconfdir="/private/etc"} else sysconfdir=${sysconfdir="/etc"} fi pkgsysconfdir=${pkgsysconfdir="$sysconfdir/nagios"} if test $need_etc_subdir = yes; then objsysconfdir=${objsysconfdir="$pkgsysconfdir/objects"} else objsysconfdir="N/A" fi privatesysconfdir=${privatesysconfdir="$pkgsysconfdir/private"} if test "$need_pls_dir" = yes; then pkglocalstatedir=${pkglocalstatedir="$localstatedir/lib/$INIT_PROG"} else pkglocalstatedir="N/A" fi if test "$need_loc" = yes; then localedir=${localedir="/usr/local/share/locale//LC_MESSAGES/nagios-plugins.mo"} fi if test "$need_spl" = yes; then spooldir=${spooldir="$localstatedir/spool/$INIT_PROG"} else spooldir="N/A" fi if test $need_brk = yes; then brokersdir=${brokersdir="$libexecdir/brokers"} else brokersdir="N/A" fi if test $need_plg = yes; then pluginsdir=${pluginsdir="$libexecdir/plugins"} else pluginsdir="N/A" fi if test $need_cgi = yes; then cgibindir=${cgibindir="$libexecdir/cgi-bin"} else cgibindir="N/A" fi AS_CASE([$dist_type], [*hp-ux*], piddir=${piddir="$pkgsysconfdir"} pipedir=${pipedir="$pkglocalstatedir"} logdir=${logdir="$pkglocalstatedir/log"}, [*], piddir=${piddir="$localstatedir/run/${INIT_PROG}"} if test "$need_pipe" = yes; then pipedir=${pipedir="$localstatedir/run/${INIT_PROG}"} else pipedir="N/A" fi if test $need_log_subdir = yes; then logdir=${logdir="$localstatedir/log/$INIT_PROG"} else logdir=${logdir="$localstatedir/log"} fi ) elif test $opsys = "bsd"; then # # "Standard" BSD install # install_method="$install_method : BSD" if test $dist_type = freebsd -o $dist_type = openbsd; then prefix=${prefix="/usr/local"} exec_prefix=${exec_prefix="/usr/local"} if test $dist_type = freebsd; then install_method="$install_method : FreeBSD" else install_method="$install_method : OpenBSD" fi elif test $dist_type = netbsd; then prefix=${prefix="/usr/pkg"} exec_prefix=${exec_prefix="/usr/pkg"} install_method="$install_method : NetBSD" fi datadir=${datadir="$datarootdir/nagios"} if test $need_web = yes -o $need_cgi = yes; then if test $dist_type = freebsd; then webdir=${webdir="$prefix/www/nagios"} elif test $dist_type = netbsd; then webdir=${webdir="$prefix/share/nagios"} elif test $dist_type = openbsd; then webdir=${webdir="/var/www/nagios"} fi else webdir="N/A" fi if test $dist_type = freebsd; then sysconfdir=${sysconfdir="/usr/local/etc"} else sysconfdir=${sysconfdir="/etc"} fi pkgsysconfdir=${pkgsysconfdir="$sysconfdir/nagios"} if test $need_etc_subdir = yes; then objsysconfdir=${objsysconfdir="$pkgsysconfdir/objects"} else objsysconfdir="N/A" fi privatesysconfdir=${privatesysconfdir="$pkgsysconfdir/private"} if test "$need_pls_dir" = yes; then pkglocalstatedir=${pkglocalstatedir="$localstatedir/lib/$INIT_PROG"} else pkglocalstatedir="N/A" fi if test "$need_loc" = yes; then localedir=${localedir="/usr/local/share/locale//LC_MESSAGES/nagios-plugins.mo"} fi if test "$need_spl" = yes; then spooldir=${spooldir="$localstatedir/spool/$INIT_PROG"} else spooldir="N/A" fi if test $need_brk = yes; then brokersdir=${brokersdir="$libexecdir/brokers"} else brokersdir="N/A" fi if test $need_plg = yes; then pluginsdir=${pluginsdir="$libexecdir/plugins"} else pluginsdir="N/A" fi if test $need_cgi = yes; then if test $dist_type = freebsd; then cgibindir=${cgibindir="$webdir/cgi-bin"} elif test $dist_type = netbsd; then cgibindir=${pluginsdir="$libexecdir/cgi-bin"} elif test $dist_type = openbsd; then cgibindir=${pluginsdir="/var/www/cgi-bin/nagios"} fi else cgibindir="N/A" fi piddir=${piddir="$localstatedir/run/${INIT_PROG}"} if test "$need_pipe" = yes; then pipedir=${pipedir="$localstatedir/run/${INIT_PROG}"} else pipedir="N/A" fi if test $need_log_subdir = yes; then logdir=${logdir="$localstatedir/log/$INIT_PROG"} else logdir=${logdir="$localstatedir/log"} fi else # # Unknown install # install_method="unknown" webdir=unknown pkgsysconfdir=unknown objsysconfdir=unknown privatesysconfdir=unknown logdir=unknown piddir=unknown pipedir=unknown pkglocalstatedir=unknown spooldir=unknown brokersdir=unknown pluginsdir=unknown cgibindir=unknown fi eval prefix=$prefix eval exec_prefix=$exec_prefix eval bindir=$bindir eval datarootdir=$datarootdir eval datadir=$datadir eval libexecdir=$libexecdir eval brokersdir=$brokersdir eval pluginsdir=$pluginsdir eval cgibindir=$cgibindir eval localstatedir=$localstatedir eval pkglocalstatedir=$pkglocalstatedir eval webdir=$webdir eval localedir=$localedir eval sysconfdir=$sysconfdir eval pkgsysconfdir=$pkgsysconfdir eval piddir=$piddir # We test systemd first because in case # someone tries to install Nagios on a # system with a newer version, that doesn't # have the defined versions ..we can just # (hopefully) fall back to SysV # And if that doesn't work, well... AS_CASE([$init_type], [systemd], if test -d "/lib/systemd/system"; then initdir=${initdir="/lib/systemd/system"} elif test -d "/usr/lib/systemd/system"; then initdir=${initdir="/usr/lib/systemd/system"} elif test -d "/usr/local/lib/systemd/system"; then initdir=${initdir="/usr/local/lib/systemd/system"} elif test -d "/run/systemd/system"; then initdir=${initdir="/run/systemd/system"} elif test -d "/etc/systemd/system"; then initdir=${initdir="/etc/systemd/system"} elif test -d "/etc/systemd/user"; then initdir=${initdir="/etc/systemd/user"} elif test -d "/run/systemd/user"; then initdir=${initdir="/run/systemd/user"} elif test -d "/usr/lib/systemd/user"; then initdir=${initdir="/usr/lib/systemd/user"} elif test -d "/usr/local/lib/systemd/user"; then initdir=${initdir="/usr/local/lib/systemd/user"} elif test -d "/usr/share/systemd/user"; then initdir=${initdir="/usr/share/systemd/user"} elif test -d "/usr/local/share/systemd/user"; then initdir=${initdir="/usr/local/share/systemd/user"} elif test -d "$HOME/.config/systemd/user"; then initdir=${initdir="$HOME/.config/systemd/user"} elif test -d "$HOME/.local/share/systemd/user"; then initdir=${initdir="$HOME/.local/share/systemd/user"} elif test -d "$XDG_CONFIG_HOME/systemd/user/"; then initdir=${initdir="$XDG_CONFIG_HOME/systemd/user/"} elif test -d "$XDG_RUNTIME_DIR/systemd/user/"; then initdir=${initdir="$XDG_RUNTIME_DIR/systemd/user/"} elif test -d "$XDG_DATA_HOME/systemd/user/"; then initdir=${initdir="$XDG_DATA_HOME/systemd/user/"} else init_type="sysv" fi initname=${initname="$INIT_PROG.service"}, ) # # Init scripts/files # AS_CASE([$init_type], [sysv], if test $dist_type = "hp-ux"; then initdir=${initdir="/sbin/init.d"} else initdir=${initdir="/etc/init.d"} fi initname=${initname="$INIT_PROG"} initconfdir=${initconfdir="/etc/conf.d"} initconf=${initconf="$initconfdir/$INIT_PROG"}, [bsd], if test $dist_type = "aix"; then initdir=${initdir="/sbin/rc.d/init.d"} initname=${initname="$INIT_PROG"} else initdir=${initdir="/etc/rc.d"} initname=${initname="rc.$INIT_PROG"} fi, [newbsd], initdir=${initdir="/usr/local/etc/rc.d"} initname=${initname="$INIT_PROG"}, [gentoo], initdir=${initdir="/etc/init.d"} initname=${initname="$INIT_PROG"} initconfdir=${initconfdir="/etc/init.d"} initconf=${initconf="$initconfdir/$INIT_PROG"}, [openrc], initdir=${initdir="/etc/init.d"} initname=${initname="$INIT_PROG"} initconfdir=${initconfdir="/etc/conf.d"} initconf=${initconf="$initconfdir/$INIT_PROG"}, [smf*], if test $init_type = smf10; then initdir=${initdir="/var/svc/manifest/network/nagios"} else initdir=${initdir="/lib/svc/manifest/network/nagios"} fi initname=${initname="$INIT_PROG.xml"} initconfdir=unknown initconf=unknown, [upstart], initdir=${initdir="/etc/init"} initname=${initname="$INIT_PROG.conf"} initconfdir=${initconfdir="/etc/default"} initconf=${initconf="$initconfdir/$INIT_PROG"}, [launchd], initdir=${initdir="/Library/LaunchDaemons"} initname=${initname="org.nagios.$INIT_PROG.plist"}, # initconfdir=${initconfdir="/private/etc"} # initconf=${initconf="$initconfdir/$INIT_PROG"}, [systemd], init_type=systemd, [*], initdir=unknown initname=unknown) # Now see if they supplied any overwriting values initdiroverridden=no AC_ARG_WITH(initdir, AC_HELP_STRING([--with-initdir=], [overrides path for initdir]), initdir=$withval initdiroverridden=yes, initdir=$initdir ) # # Inetd (per connection) scripts/files # AS_CASE([$inetd_type], [inetd*], inetddir=${inetddir="/etc"} inetdname=${inetdname="inetd.conf"}, [xinetd], inetddir=${inetddir="/etc/xinetd.d"} inetdname=${inetdname="$INIT_PROG"}, [systemd], if test $dist_type = "debian"; then inetddir=${inetddir="/lib/systemd/system"} else inetddir=${inetddir="/usr/lib/systemd/system"} fi netdname=${inetdname="$INIT_PROG.socket"}, [smf*], if test $init_type = smf10; then inetddir=${inetddir="/var/svc/manifest/network/nagios"} else inetddir=${inetddir="/lib/svc/manifest/network/nagios"} fi inetdname=${inetdname="$INIT_PROG.xml"}, # [upstart], # inetddir=${inetddir="/etc/init.d"} # inetdname=${inetdname="$INIT_PROG"}, [launchd], inetddir=${inetddir="/Library/LaunchDaemons"} inetdname=${inetdname="org.nagios.$INIT_PROG.plist"}, [*], inetddir=${inetddir="unknown"} inetdname=${inetdname="unknown"}) AC_MSG_RESULT($install_method) ])