From 749041201efee685fbf577228f43fee99d7b57aa Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Tue, 27 Jun 2023 13:01:28 +0200 Subject: [PATCH] initial package creation Signed-off-by: Toshaan Bharvani --- SOURCES/.gitkeeper | 0 SPECS/icinga2.spec | 401 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 401 insertions(+) create mode 100644 SOURCES/.gitkeeper create mode 100644 SPECS/icinga2.spec diff --git a/SOURCES/.gitkeeper b/SOURCES/.gitkeeper new file mode 100644 index 0000000..e69de29 diff --git a/SPECS/icinga2.spec b/SPECS/icinga2.spec new file mode 100644 index 0000000..6fbf18d --- /dev/null +++ b/SPECS/icinga2.spec @@ -0,0 +1,401 @@ +%define _rundir %{_localstatedir}/run +%define _fillupdir %{_localstatedir}/adm/fillup-templates +%define _libexecdir %{_prefix}/lib/ +%define plugindir %{_libdir}/nagios/plugins +%define apachename httpd +%define apacheconfdir %{_sysconfdir}/httpd/conf.d +%define apacheuser apache +%define apachegroup apache +%define use_systemd 1 +%global selinux_variants mls targeted +%global selinux_modulename %{name} +%define configure_systemd_limits 1 +%define icinga_user icinga +%define icinga_group icinga +%define icingacmd_group icingacmd +%bcond_without unity_build +%bcond_with systemd_and_init +%bcond_without compat +%bcond_without livestatus +%bcond_without notification +%bcond_without perfdata +%bcond_without tests +%define logmsg logger -t %{name}/rpm + +Summary: Network monitoring application +License: GPLv2+ +Group: System/Monitoring +Name: icinga2 +Version: 2.13.7 +Release: 1%{?dist} +Url: https://www.icinga.com/ +Source: https://github.com/Icinga/%{name}/archive/v%{version}%{?src_version_suffix}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build +Requires: %{name}-bin = %{version}-%{release} +Requires: %{name}-common = %{version}-%{release} +Conflicts: %{name}-common < %{version}-%{release} + + +%description +Meta package for Icinga 2 Core, DB IDO and Web. + + +%package bin +Summary: Icinga 2 binaries and libraries +Group: System/Monitoring +Requires: %{name}-bin = %{version}-%{release} +BuildRequires: libedit-devel +BuildRequires: ncurses-devel +BuildRequires: gcc-c++ +BuildRequires: libstdc++-devel +BuildRequires: openssl-devel +BuildRequires: bison +BuildRequires: cmake +BuildRequires: flex >= 2.5.35 +BuildRequires: make +BuildRequires: boost-devel >= 1.69 +BuildRequires: systemd-devel +Requires: systemd +Obsoletes: %{name}-libs <= 2.10.0 +Conflicts: %{name}-libs <= 2.10.0 +%description bin +Icinga 2 is a general-purpose network monitoring application. +This subpackage provides the binaries for Icinga 2 Core. + + +%package common +Summary: Common Icinga 2 configuration +Group: System/Monitoring +Requires(pre): shadow-utils +Requires(post): shadow-utils +BuildRequires: logrotate +%description common +This subpackage provides common directories, and the UID and GUID definitions +among Icinga 2 related packages. + + +%package doc +Summary: Documentation for Icinga 2 +Group: Documentation/Other +%description doc +This subpackage provides documentation for Icinga 2. + + +%package ido-mysql +Summary: IDO MySQL database backend for Icinga 2 +Group: System/Monitoring +BuildRequires: mysql-devel +Requires: %{name}-bin = %{version}-%{release} +%description ido-mysql +Icinga 2 IDO mysql database backend. Compatible with Icinga 1.x +IDOUtils schema >= 1.12 + + +%package ido-pgsql +Summary: IDO PostgreSQL database backend for Icinga 2 +Group: System/Monitoring +BuildRequires: postgresql-devel +Requires: %{name}-bin = %{version}-%{release} +%description ido-pgsql +Icinga 2 IDO PostgreSQL database backend. Compatible with Icinga 1.x +IDOUtils schema >= 1.12 + + +%package selinux +Summary: SELinux policy module supporting icinga2 +Group: System/Base +BuildRequires: checkpolicy +BuildRequires: hardlink +BuildRequires: selinux-policy-devel +Requires: %{name}-bin = %{version}-%{release} +Requires(post): policycoreutils-python-utils +Requires(postun): policycoreutils-python-utils +%description selinux +SELinux policy module supporting icinga2. +%endif + + +%package -n vim-icinga2 +Summary: Vim syntax highlighting for icinga2 +Group: Productivity/Text/Editors +Requires: vim-filesystem +%description -n vim-icinga2 +Provides Vim syntax highlighting for icinga2. + + +%package -n nano-icinga2 +Summary: Nano syntax highlighting for icinga2 +Group: Productivity/Text/Editors +Requires: nano +%description -n nano-icinga2 +Provides Nano syntax highlighting for icinga2. + + +%prep +%setup -q -n %{name}-%{version} + + +%build +source /opt/rh/devtoolset-10/enable +%global optflags %(echo %{optflags} | sed 's/-mdirect-move/ /') + +# set basedir to allow cache to hit between different builds +# this will make all paths below BUILD/icinga2-x.x.x relative for cache +export CCACHE_BASEDIR="${CCACHE_BASEDIR:-$(pwd)}" + +CMAKE_OPTS="-DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_SYSCONFDIR=/etc \ + -DCMAKE_INSTALL_LOCALSTATEDIR=/var \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DBoost_NO_BOOST_CMAKE=ON \ + -DICINGA2_PLUGINDIR=%{plugindir} \ + -DICINGA2_RUNDIR=%{_rundir} \ + -DICINGA2_SYSCONFIGFILE=/etc/sysconfig/icinga2 \ + -DICINGA2_USER=%{icinga_user} \ + -DICINGA2_GROUP=%{icinga_group} \ + -DICINGA2_COMMAND_GROUP=%{icingacmd_group}" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_STUDIO=true" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_UNITY_BUILD=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_LTO_BUILD=ON" +CMAKE_OPTS="$CMAKE_OPTS -DINSTALL_SYSTEMD_SERVICE_AND_INITSCRIPT=OFF" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_COMPAT=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_LIVESTATUS=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_NOTIFICATION=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_PERFDATA=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_TESTS=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_MYSQL=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_WITH_PGSQL=ON" +CMAKE_OPTS="$CMAKE_OPTS -DCMAKE_INSTALL_RPATH=%{boost_rpath}" +CMAKE_OPTS="$CMAKE_OPTS -DUSE_SYSTEMD=ON" +CMAKE_OPTS="$CMAKE_OPTS -DICINGA2_BUILD_HOST_NAME:STRING=%_buildhost" + +cmake3 $CMAKE_OPTS -DCMAKE_C_FLAGS:STRING="%{optflags} %{?march_flag}" -DCMAKE_CXX_FLAGS:STRING="%{optflags} %{?march_flag}" . + +make %{?_smp_mflags} + +pushd tools/selinux +for selinuxvariant in %{selinux_variants} +do + make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile + mv %{selinux_modulename}.pp %{selinux_modulename}.pp.${selinuxvariant} + make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile clean +done +popd + + +%install +make install DESTDIR="%{buildroot}" +install -D -m 0644 etc/initsystem/icinga2.service.limits.conf %{buildroot}/etc/systemd/system/%{name}.service.d/limits.conf +rm -f %{buildroot}/%{_sysconfdir}/%{name}/features-enabled/*.conf + +pushd tools/selinux +for selinuxvariant in %{selinux_variants} +do + install -d %{buildroot}%{_datadir}/selinux/${selinuxvariant} + install -p -m 644 %{selinux_modulename}.pp.${selinuxvariant} \ + %{buildroot}%{_datadir}/selinux/${selinuxvariant}/%{selinux_modulename}.pp +done +popd + +install -D -m 0644 tools/syntax/vim/syntax/%{name}.vim %{buildroot}%{_datadir}/vim/vimfiles/syntax/%{name}.vim +install -D -m 0644 tools/syntax/vim/ftdetect/%{name}.vim %{buildroot}%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim +install -D -m 0644 tools/syntax/nano/%{name}.nanorc %{buildroot}%{_datadir}/nano/%{name}.nanorc + + +%check +export CTEST_OUTPUT_ON_FAILURE=1 +make test + + +%post +%systemd_post %{name}.service +if [ ${1:-0} -eq 1 ] +then + # initial installation, enable default features + for feature in checker notification mainlog; do + ln -sf ../features-available/${feature}.conf %{_sysconfdir}/%{name}/features-enabled/${feature}.conf + done +fi +exit 0 + + +%preun +%systemd_preun %{name}.service +exit 0 + + +%postun +%systemd_postun_with_restart %{name}.service +if [ "$1" = "0" ]; then + # deinstallation of the package - remove enabled features + rm -rf %{_sysconfdir}/%{name}/features-enabled +fi +exit 0 + + +%pre common +getent group %{icinga_group} >/dev/null || %{_sbindir}/groupadd -r %{icinga_group} +getent group %{icingacmd_group} >/dev/null || %{_sbindir}/groupadd -r %{icingacmd_group} +getent passwd %{icinga_user} >/dev/null || %{_sbindir}/useradd -c "icinga" -s /sbin/nologin -r -d %{_localstatedir}/spool/%{name} -G %{icingacmd_group} -g %{icinga_group} %{icinga_user} + + +%post ido-mysql +if [ ${1:-0} -eq 1 ] && [ -e %{_sysconfdir}/%{name}/features-enabled/ido-mysql.conf ] +then + # initial installation, enable ido-mysql feature + ln -sf ../features-available/ido-mysql.conf %{_sysconfdir}/%{name}/features-enabled/ido-mysql.conf +fi +exit 0 + + +%postun ido-mysql +if [ "$1" = "0" ]; then + # deinstallation of the package - remove feature + rm -f %{_sysconfdir}/%{name}/features-enabled/ido-mysql.conf +fi +exit 0 + + +%post ido-pgsql +if [ ${1:-0} -eq 1 ] && [ -e %{_sysconfdir}/%{name}/features-enabled/ido-pgsql.conf ] +then + # initial installation, enable ido-pgsql feature + ln -sf ../features-available/ido-pgsql.conf %{_sysconfdir}/%{name}/features-enabled/ido-pgsql.conf +fi +exit 0 + + +%postun ido-pgsql +if [ "$1" = "0" ]; then + # deinstallation of the package - remove feature + rm -f %{_sysconfdir}/%{name}/features-enabled/ido-pgsql.conf +fi +exit 0 + + +%post selinux +for selinuxvariant in %{selinux_variants} +do + /usr/sbin/semodule -s ${selinuxvariant} -i \ + %{_datadir}/selinux/${selinuxvariant}/%{selinux_modulename}.pp &> /dev/null || : +done +/sbin/fixfiles -R icinga2 restore &> /dev/null || : +/sbin/fixfiles -R icinga2-bin restore &> /dev/null || : +/sbin/fixfiles -R icinga2-common restore &> /dev/null || : +/sbin/semanage port -a -t icinga2_port_t -p tcp 5665 &> /dev/null || : + + +%postun selinux +if [ $1 -eq 0 ] ; then + /sbin/semanage port -d -t icinga2_port_t -p tcp 5665 &> /dev/null || : + for selinuxvariant in %{selinux_variants} + do + /usr/sbin/semodule -s ${selinuxvariant} -r %{selinux_modulename} &> /dev/null || : + done + /sbin/fixfiles -R icinga2 restore &> /dev/null || : + /sbin/fixfiles -R icinga2-bin restore &> /dev/null || : + /sbin/fixfiles -R icinga2-common restore &> /dev/null || : +fi +%endif + + +%files +%defattr(-,root,root,-) +%doc COPYING +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} +%attr(644,root,root) %{_unitdir}/%{name}.service +%dir /etc/systemd/system/%{name}.service.d +%attr(644,root,root) %config(noreplace) /etc/systemd/system/%{name}.service.d/limits.conf +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} +%{_sbindir}/%{name} +%dir %{_libexecdir}/%{name} +%{_libexecdir}/%{name}/prepare-dirs +%{_libexecdir}/%{name}/safe-reload +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_sysconfdir}/%{name} +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_sysconfdir}/%{name}/conf.d +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_sysconfdir}/%{name}/features-available +%exclude %{_sysconfdir}/%{name}/features-available/ido-*.conf +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_sysconfdir}/%{name}/features-enabled +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_sysconfdir}/%{name}/scripts +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_sysconfdir}/%{name}/zones.d +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/%{name}.conf +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/constants.conf +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/zones.conf +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/conf.d/*.conf +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/features-available/*.conf +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/zones.d/* +%config(noreplace) %{_sysconfdir}/%{name}/scripts/* +%attr(0750,%{icinga_user},%{icingacmd_group}) %{_localstatedir}/cache/%{name} +%attr(0750,%{icinga_user},%{icingacmd_group}) %dir %{_localstatedir}/log/%{name} +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_localstatedir}/log/%{name}/crash +%attr(0750,%{icinga_user},%{icingacmd_group}) %dir %{_localstatedir}/log/%{name}/compat +%attr(0750,%{icinga_user},%{icingacmd_group}) %dir %{_localstatedir}/log/%{name}/compat/archives +%attr(0750,%{icinga_user},%{icinga_group}) %{_localstatedir}/lib/%{name} +%attr(0750,%{icinga_user},%{icingacmd_group}) %ghost %dir %{_rundir}/%{name} +%attr(2750,%{icinga_user},%{icingacmd_group}) %ghost %{_rundir}/%{name}/cmd +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_localstatedir}/spool/%{name} +%attr(0770,%{icinga_user},%{icinga_group}) %dir %{_localstatedir}/spool/%{name}/perfdata +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_localstatedir}/spool/%{name}/tmp + + +%files bin +%defattr(-,root,root,-) +%doc COPYING README.md NEWS AUTHORS CHANGELOG.md +%dir %{_libdir}/%{name} +%dir %{_libdir}/%{name}/sbin +%{_libdir}/%{name}/sbin/%{name} +%{plugindir}/check_nscp_api +%{_datadir}/%{name} +%exclude %{_datadir}/%{name}/include +%{_mandir}/man8/%{name}.8.gz + + +%files common +%defattr(-,root,root,-) +%doc COPYING README.md NEWS AUTHORS CHANGELOG.md tools/syntax +%{_sysconfdir}/bash_completion.d/%{name} +%attr(0750,%{icinga_user},%{icinga_group}) %dir %{_datadir}/%{name}/include +%{_datadir}/%{name}/include/* + + +%files doc +%defattr(-,root,root,-) +%{_datadir}/doc/%{name} +%docdir %{_datadir}/doc/%{name} + + +%files ido-mysql +%defattr(-,root,root,-) +%doc COPYING README.md NEWS AUTHORS CHANGELOG.md +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/features-available/ido-mysql.conf +%{_libdir}/%{name}/libmysql_shim* +%{_datadir}/icinga2-ido-mysql + + +%files ido-pgsql +%defattr(-,root,root,-) +%doc COPYING README.md NEWS AUTHORS CHANGELOG.md +%config(noreplace) %attr(0640,%{icinga_user},%{icinga_group}) %{_sysconfdir}/%{name}/features-available/ido-pgsql.conf +%{_libdir}/%{name}/libpgsql_shim* +%{_datadir}/icinga2-ido-pgsql + + +%files selinux +%defattr(-,root,root,0755) +%doc tools/selinux/* +%{_datadir}/selinux/*/%{selinux_modulename}.pp + + +%files -n vim-icinga2 +%defattr(-,root,root,-) +%{_datadir}/vim/vimfiles/syntax/%{name}.vim +%{_datadir}/vim/vimfiles/ftdetect/%{name}.vim + + +%files -n nano-icinga2 +%defattr(-,root,root,-) +%{_datadir}/nano/%{name}.nanorc + + +%changelog