File icinga-web.spec of Package icinga-web
# $Id$
# Authority: The icinga devel team <icinga-devel at lists.icinga.org>
# Upstream: The icinga devel team <icinga-devel at lists.icinga.org>
# ExcludeDist: el4 el3
%define revision 1
%define logdir %{_localstatedir}/log/%{name}
%define cachedir %{_localstatedir}/cache/%{name}
%define reportingcachedir %{_localstatedir}/cache/%{name}/reporting
%define phpname php
# el5 requires newer php53 rather than php (5.1)
%if 0%{?el5} || 0%{?rhel} == 5 || "%{?dist}" == ".el5"
%define phpname php53
%endif
%if "%{_vendor}" == "suse"
%define apacheconfdir %{_sysconfdir}/apache2/conf.d
%define apacheuser wwwrun
%define apachegroup www
%define extcmdfile %{_localstatedir}/icinga/rw/icinga.cmd
%endif
%if "%{_vendor}" == "redhat"
%define apacheconfdir %{_sysconfdir}/httpd/conf.d
%define apacheuser apache
%define apachegroup apache
%define extcmdfile %{_localstatedir}/spool/icinga/cmd/icinga.cmd
%endif
Summary: Open Source host, service and network monitoring Web UI
Name: icinga-web
Version: 1.14.1
Release: %{revision}%{?dist}
License: GPL-3.0+
Group: Applications/System
URL: http://www.icinga.org
BuildArch: noarch
%if "%{_vendor}" == "suse"
AutoReqProv: Off
%endif
Source0: https://github.com/Icinga/icinga-web/releases/download/v%{version}/icinga-web-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: make
BuildRequires: %{phpname} >= 5.2.3
BuildRequires: %{phpname}-devel >= 5.2.3
BuildRequires: %{phpname}-gd
BuildRequires: %{phpname}-ldap
BuildRequires: %{phpname}-pdo
%if "%{_vendor}" == "redhat"
BuildRequires: %{phpname}-xml
BuildRequires: php-pear
%endif
%if "%{_vendor}" == "suse"
# needed for the directory ownership:
BuildRequires: apache2
BuildRequires: %{phpname}-json
BuildRequires: %{phpname}-sockets
BuildRequires: %{phpname}-xsl
BuildRequires: %{phpname}-dom
BuildRequires: %{phpname}-pear
%endif
Requires: pcre >= 7.6
Requires: %{phpname} >= 5.2.3
Requires: %{phpname}-gd
Requires: %{phpname}-ldap
Requires: %{phpname}-pdo
%if "%{_vendor}" == "redhat"
Requires: %{phpname}-common
Requires: %{phpname}-xml
Requires: php-pear
%endif
%if "%{_vendor}" == "suse"
Requires: %{phpname}-pear
Requires: %{phpname}-xsl
Requires: %{phpname}-dom
Requires: %{phpname}-tokenizer
Requires: %{phpname}-gettext
Requires: %{phpname}-ctype
Requires: %{phpname}-json
Requires: %{phpname}-pear
Requires: mod_php_any
%endif
%description
Icinga Web for Icinga Core, uses Icinga IDOUtils DB as data source.
%package mysql
Summary: Database config for mysql
Group: Applications/System
Requires: %{name} = %{version}-%{release}
Requires: %{phpname}-mysql
Conflicts: %{name}-pgsql
%description mysql
Database config and requirements for mysql for icinga-web
%package pgsql
Summary: Database config for pgsql
Group: Applications/System
Requires: %{name} = %{version}-%{release}
Requires: %{phpname}-pgsql
Conflicts: %{name}-mysql
%description pgsql
Database config and requirements for pgsql for icinga-web
%package module-pnp
Summary: PNP Integration module for Icinga Web
Group: Applications/System
Requires: pnp4nagios
Requires: %{name} = %{version}-%{release}
%description module-pnp
PNP Integration module for Icinga Web
%package scheduler
Summary: Scheduler for Icinga Web
Group: Applications/System
Requires: %{name} = %{version}-%{release}
%if "%{_vendor}" == "suse"
Requires: cron
%endif
%if "%{_vendor}" == "redhat"
%if 0%{?el5} || 0%{?rhel} == 5 || "%{?dist}" == ".el5"
Requires: vixie-cron
%else
Requires: cronie
%endif
%endif
%description scheduler
Scheduler for Icinga Web
%prep
%setup -q -n %{name}-%{version}
%build
%configure \
--prefix="%{_datadir}/%{name}" \
--datadir="%{_datadir}/%{name}" \
--datarootdir="%{_datadir}/%{name}" \
--sysconfdir="%{_sysconfdir}/%{name}" \
--with-conf-dir='%{_sysconfdir}/%{name}/conf.d' \
--with-web-user='%{apacheuser}' \
--with-web-group='%{apachegroup}' \
--with-api-cmd-file='%{extcmdfile}' \
--with-log-dir='%{logdir}' \
--with-cache-dir='%{cachedir}' \
--with-reporting-tmp-dir='%{reportingcachedir}' \
--with-icinga-bin='%{_bindir}/icinga' \
--with-icinga-cfg='%{_sysconfdir}/icinga/icinga.cfg' \
--with-icinga-objects-dir='%{_sysconfdir}/icinga/objects' \
--with-clearcache-path='%{_bindir}' \
--with-web-apache-path=%{apacheconfdir}
%install
%{__rm} -rf %{buildroot}
%{__mkdir} -p %{buildroot}/%{apacheconfdir}
%{__mkdir} -p %{buildroot}/%{_bindir}
%{__make} install \
install-apache-config \
DESTDIR="%{buildroot}" \
INSTALL_OPTS="" \
COMMAND_OPTS="" \
INSTALL_OPTS_WEB="" \
INSTALL_OPTS_CACHE="" \
INIT_OPTS=""
# install scheduler
%{__mkdir} -p %{buildroot}%{_sysconfdir}/cron.d/
sed -e "s#%%USER%%#icinga#;s#%%PATH%%#%{_datadir}/%{name}#" etc/scheduler/icingaCron > %{buildroot}%{_sysconfdir}/cron.d/icingaCron
%{__mkdir} -p %{buildroot}%{_localstatedir}/log/icingaCron
# we only want clearcache.sh prefixed in {_bindir}, generated from configure
%{__mv} %{buildroot}%{_bindir}/clearcache.sh %{buildroot}%{_bindir}/%{name}-clearcache
# wipe the rest of bin/, we don't need prepackage stuff in installed envs
%{__rm} -rf %{buildroot}%{_datadir}/%{name}/bin
# place the pnp templates for -module-pnp
%{__cp} contrib/PNP_Integration/templateExtensions/* %{buildroot}%{_datadir}/%{name}/app/modules/Cronks/data/xml/extensions/
#%pre
# Add apacheuser in the icingacmd group
# If the group exists, add the apacheuser in the icingacmd group.
# It is not neccessary that icinga-web is installed on the same system as
# icinga and only on systems with icinga installed the icingacmd
# group exists. In all other cases the user used for ssh access has
# to be added to the icingacmd group on the remote icinga server.
#getent group icingacmd > /dev/null
#
#if [ $? -eq 0 ]; then
#%if "%{_vendor}" == "suse"
# %{_sbindir}/usermod -G icingacmd %{apacheuser}
#%else
# %{_sbindir}/usermod -a -G icingacmd %{apacheuser}
#%endif
#fi
# uncomment if building from git
# %{__rm} -rf %{buildroot}%{_datadir}/icinga-web/.git
%preun
%if "%{_vendor}" == "suse"
%restart_on_update apache2
%endif
%post
# clean config cache, e.g. after upgrading
test -x %{_bindir}/%{name}-clearcache && %{_bindir}/%{name}-clearcache
#%if "%{_vendor}" == "suse"
# a2enmod rewrite
# %restart_on_update apache2
#%endif
#%postun
#%if "%{_vendor}" == "suse"
# %restart_on_update apache2
#%endif
#%post pgsql
#### change databases.xml to match pgsql config
## check if this is an upgrade
#if [ $1 -eq 2 ]
#then
# %{__cp} %{_sysconfdir}/%{name}/conf.d/databases.xml %{_sysconfdir}/%{name}/conf.d/databases.xml.pgsql
# %{__perl} -pi -e '
# s|db_servertype=mysql|db_servertype=pgsql|;
# s|db_port=3306|db_port=5432|;
# ' %{_sysconfdir}/%{name}/conf.d/databases.xml.pgsql
# %logmsg "Warning: upgrade, pgsql config written to databases.xml.pgsql"
#fi
## install
#if [ $1 -eq 1 ]
#then
# %{__perl} -pi -e '
# s|db_servertype=mysql|db_servertype=pgsql|;
# s|db_port=3306|db_port=5432|;
# ' %{_sysconfdir}/%{name}/conf.d/databases.xml
#fi
#%post module-pnp
## clean cronk template cache
#test -x %{_bindir}/%{name}-clearcache && %{_bindir}/%{name}-clearcache
#
#%postun module-pnp
#test -x %{_bindir}/%{name}-clearcache && %{_bindir}/%{name}-clearcache
%clean
%{__rm} -rf %{buildroot}
%files
# main dirs
%defattr(-,root,root)
%if "%{_vendor}" == "redhat"
%doc etc/schema doc/README.RHEL doc/AUTHORS doc/CHANGELOG-1.14 doc/LICENSE
%endif
%if "%{_vendor}" == "suse"
%doc etc/schema doc/README.SUSE doc/AUTHORS doc/CHANGELOG-1.14 doc/LICENSE
%endif
# packaged by subpackages
%exclude %{_datadir}/%{name}/app/modules/Cronks/data/xml/extensions
%exclude %{_sysconfdir}/%{name}/conf.d/databases.xml
%{_datadir}/%{name}
%{_datadir}/%{name}/app
%{_datadir}/%{name}/doc
%{_datadir}/%{name}/etc
%{_datadir}/%{name}/lib
%{_datadir}/%{name}/pub
# configs
%defattr(-,root,root)
%config(noreplace) %attr(-,root,root) %{apacheconfdir}/icinga-web.conf
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/conf.d
%config(noreplace) %attr(644,-,-) %{_sysconfdir}/%{name}/conf.d/*
# logs+cache
%attr(2775,%{apacheuser},%{apachegroup}) %dir %{logdir}
%attr(-,%{apacheuser},%{apachegroup}) %{cachedir}
%attr(-,%{apacheuser},%{apachegroup}) %{cachedir}/config
# data directory writable for web server
%attr(-,%{apacheuser},%{apachegroup}) %{_datadir}/%{name}/app/data/tmp
# binaries
%defattr(-,root,root)
%{_bindir}/%{name}-clearcache
# stylesheet
%config(noreplace) %{_datadir}/%{name}/pub/styles/icinga.site.css
%files mysql
%config(noreplace) %attr(644,-,-) %{_sysconfdir}/%{name}/conf.d/databases.xml
%files pgsql
%config(noreplace) %attr(644,-,-) %{_sysconfdir}/%{name}/conf.d/databases.xml
%files module-pnp
# templates, experimental treatment as configs (noreplace)
%defattr(-,root,root)
%doc contrib/PNP_Integration/README contrib/PNP_Integration/INSTALL
%doc contrib/PNP_Integration/doc contrib/nginx
%dir %{_datadir}/icinga-web/app/modules/Cronks/data/xml/extensions
%config(noreplace) %attr(644,-,-) %{_datadir}/%{name}/app/modules/Cronks/data/xml/extensions/*
%files scheduler
%defattr(-,root,root)
%{_sysconfdir}/cron.d/icingaCron
%attr(-,icinga,icinga) %{_localstatedir}/log/icingaCron
%changelog