Merge pull request #120924 from helsinki-systems/pkg/icinga2

icinga2: Init at 2.12.3

authored by

ajs124 and committed by
GitHub
85784a66 6e1f3667

+205 -1
+101
pkgs/servers/monitoring/icinga2/default.nix
··· 1 + { stdenv, lib, fetchFromGitHub, cmake, flex, bison, systemd 2 + , boost, openssl, patchelf, mariadb-connector-c, postgresql, zlib 3 + # Databases 4 + , withMysql ? true, withPostgresql ? false 5 + # Features 6 + , withChecker ? true, withCompat ? false, withLivestatus ? false 7 + , withNotification ? true, withPerfdata ? true, withIcingadb ? true 8 + , nameSuffix ? "" }: 9 + 10 + stdenv.mkDerivation rec { 11 + pname = "icinga2${nameSuffix}"; 12 + version = "2.12.3"; 13 + 14 + src = fetchFromGitHub { 15 + owner = "icinga"; 16 + repo = "icinga2"; 17 + rev = "v${version}"; 18 + sha256 = "0pq6ixv7d9bqys8qjxqq0jki3zncj8jdfavkp7qw125iyfjq48xk"; 19 + }; 20 + 21 + patches = [ 22 + ./etc-icinga2.patch # Makes /etc/icinga2 relative to / instead of the store path 23 + ./no-systemd-service.patch # Prevent systemd service from being written to /usr 24 + ./no-var-directories.patch # Prevent /var directories from being created 25 + ]; 26 + 27 + cmakeFlags = let 28 + mkFeatureFlag = label: value: "-DICINGA2_WITH_${label}=${if value then "ON" else "OFF"}"; 29 + in [ 30 + # Paths 31 + "-DCMAKE_INSTALL_SYSCONFDIR=etc" 32 + "-DCMAKE_INSTALL_LOCALSTATEDIR=/var" 33 + "-DCMAKE_INSTALL_FULL_SBINDIR=bin" 34 + "-DICINGA2_RUNDIR=/run" 35 + "-DMYSQL_INCLUDE_DIR=${mariadb-connector-c.dev}/include/mariadb" 36 + "-DMYSQL_LIB=${mariadb-connector-c.out}/lib/mariadb/libmysqlclient.a" 37 + "-DICINGA2_PLUGINDIR=bin" 38 + "-DICINGA2_UNITY_BUILD=no" 39 + # Features 40 + (mkFeatureFlag "MYSQL" withMysql) 41 + (mkFeatureFlag "PGSQL" withPostgresql) 42 + (mkFeatureFlag "CHECKER" withChecker) 43 + (mkFeatureFlag "COMPAT" withCompat) 44 + (mkFeatureFlag "LIVESTATUS" withLivestatus) 45 + (mkFeatureFlag "NOTIFICATION" withNotification) 46 + (mkFeatureFlag "PERFDATA" withPerfdata) 47 + (mkFeatureFlag "ICINGADB" withIcingadb) 48 + # Misc. 49 + "-DICINGA2_USER=icinga2" 50 + "-DICINGA2_GROUP=icinga2" 51 + "-DICINGA2_GIT_VERSION_INFO=OFF" 52 + "-DICINGA2_WITH_TESTS=OFF" 53 + "-DUSE_SYSTEMD=ON" 54 + ]; 55 + 56 + buildInputs = [ boost openssl systemd ] 57 + ++ lib.optional withPostgresql postgresql; 58 + 59 + nativeBuildInputs = [ cmake flex bison patchelf ]; 60 + 61 + postFixup = '' 62 + rm -r $out/etc/logrotate.d $out/etc/sysconfig $out/lib/icinga2/prepare-dirs 63 + 64 + # Fix hardcoded paths 65 + sed -i 's:/usr/bin/::g' $out/etc/icinga2/scripts/* 66 + 67 + # Cleanup sbin 68 + sed -i 's/sbin/bin/g' $out/lib/icinga2/safe-reload 69 + rm $out/sbin 70 + 71 + ${lib.optionalString withMysql '' 72 + # Add dependencies of the MySQL shim to the shared library 73 + patchelf --add-needed ${zlib.out}/lib/libz.so $(readlink -f $out/lib/icinga2/libmysql_shim.so) 74 + 75 + # Make Icinga find the MySQL shim 76 + icinga2Bin=$out/lib/icinga2/sbin/icinga2 77 + patchelf --set-rpath $out/lib/icinga2:$(patchelf --print-rpath $icinga2Bin) $icinga2Bin 78 + ''} 79 + ''; 80 + 81 + vim = stdenv.mkDerivation { 82 + pname = "vim-icinga2"; 83 + inherit version src; 84 + 85 + dontConfigure = true; 86 + dontBuild = true; 87 + 88 + installPhase = '' 89 + mkdir -p $out/share/vim-plugins 90 + cp -r tools/syntax/vim $out/share/vim-plugins/icinga2 91 + ''; 92 + }; 93 + 94 + meta = { 95 + description = "Open source monitoring system"; 96 + homepage = "https://www.icinga.com"; 97 + license = lib.licenses.gpl2Plus; 98 + platforms = lib.platforms.linux; 99 + maintainers = with lib.maintainers; [ das_j ]; 100 + }; 101 + }
+13
pkgs/servers/monitoring/icinga2/etc-icinga2.patch
··· 1 + diff --git a/config.h.cmake b/config.h.cmake 2 + index 16fa190..152bf43 100644 3 + --- a/config.h.cmake 4 + +++ b/config.h.cmake 5 + @@ -13,7 +13,7 @@ 6 + 7 + #cmakedefine ICINGA2_UNITY_BUILD 8 + 9 + -#define ICINGA_CONFIGDIR "${ICINGA2_FULL_CONFIGDIR}" 10 + +#define ICINGA_CONFIGDIR "/etc/icinga2" 11 + #define ICINGA_DATADIR "${ICINGA2_FULL_DATADIR}" 12 + #define ICINGA_LOGDIR "${ICINGA2_FULL_LOGDIR}" 13 + #define ICINGA_CACHEDIR "${ICINGA2_FULL_CACHEDIR}"
+15
pkgs/servers/monitoring/icinga2/no-systemd-service.patch
··· 1 + diff --git a/etc/initsystem/CMakeLists.txt b/etc/initsystem/CMakeLists.txt 2 + index e702c83..c23cabb 100644 3 + --- a/etc/initsystem/CMakeLists.txt 4 + +++ b/etc/initsystem/CMakeLists.txt 5 + @@ -50,10 +50,5 @@ if(NOT WIN32) 6 + 7 + if (USE_SYSTEMD OR INSTALL_SYSTEMD_SERVICE_AND_INITSCRIPT) 8 + configure_file(icinga2.service.cmake ${CMAKE_CURRENT_BINARY_DIR}/initsystem/icinga2.service @ONLY) 9 + - install( 10 + - FILES ${CMAKE_CURRENT_BINARY_DIR}/initsystem/icinga2.service 11 + - DESTINATION ${DESTDIR}/usr/lib/systemd/system 12 + - PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ 13 + - ) 14 + endif() 15 + endif()
+66
pkgs/servers/monitoring/icinga2/no-var-directories.patch
··· 1 + diff --git a/icinga-app/CMakeLists.txt b/icinga-app/CMakeLists.txt 2 + index 87993df..819c87b 100644 3 + --- a/icinga-app/CMakeLists.txt 4 + +++ b/icinga-app/CMakeLists.txt 5 + @@ -106,7 +106,3 @@ install( 6 + TARGETS icinga-app 7 + RUNTIME DESTINATION ${InstallPath} 8 + ) 9 + - 10 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_LOGDIR}\")") 11 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}\")") 12 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_INITRUNDIR}\")") 13 + diff --git a/lib/base/CMakeLists.txt b/lib/base/CMakeLists.txt 14 + index 5dda179..22cf69f 100644 15 + --- a/lib/base/CMakeLists.txt 16 + +++ b/lib/base/CMakeLists.txt 17 + @@ -125,7 +125,4 @@ set_target_properties ( 18 + FOLDER Lib 19 + ) 20 + 21 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_CACHEDIR}\")") 22 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_LOGDIR}/crash\")") 23 + - 24 + set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}" PARENT_SCOPE) 25 + diff --git a/lib/perfdata/CMakeLists.txt b/lib/perfdata/CMakeLists.txt 26 + index ab963f7..3d9d506 100644 27 + --- a/lib/perfdata/CMakeLists.txt 28 + +++ b/lib/perfdata/CMakeLists.txt 29 + @@ -74,7 +74,4 @@ install_if_not_exists( 30 + ${ICINGA2_CONFIGDIR}/features-available 31 + ) 32 + 33 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_SPOOLDIR}/perfdata\")") 34 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_SPOOLDIR}/tmp\")") 35 + - 36 + set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}" PARENT_SCOPE) 37 + diff --git a/lib/remote/CMakeLists.txt b/lib/remote/CMakeLists.txt 38 + index 65113d2..5e4398f 100644 39 + --- a/lib/remote/CMakeLists.txt 40 + +++ b/lib/remote/CMakeLists.txt 41 + @@ -55,12 +55,3 @@ set_target_properties ( 42 + remote PROPERTIES 43 + FOLDER Lib 44 + ) 45 + - 46 + -#install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}/api\")") 47 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}/api/log\")") 48 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}/api/zones\")") 49 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}/api/zones-stage\")") 50 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}/certs\")") 51 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_DATADIR}/certificate-requests\")") 52 + - 53 + - 54 + diff --git a/lib/compat/CMakeLists.txt b/lib/compat/CMakeLists.txt 55 + index 1438626..d882ae2 100644 56 + --- a/lib/compat/CMakeLists.txt 57 + +++ b/lib/compat/CMakeLists.txt 58 + @@ -55,8 +55,4 @@ install_if_not_exists( 59 + ${ICINGA2_CONFIGDIR}/features-available 60 + ) 61 + 62 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_LOGDIR}/compat/archives\")") 63 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_SPOOLDIR}\")") 64 + -install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${ICINGA2_FULL_INITRUNDIR}/cmd\")") 65 + - 66 + set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}" PARENT_SCOPE)
+10 -1
pkgs/top-level/all-packages.nix
··· 19206 19206 19207 19207 miniflux = callPackage ../servers/miniflux { }; 19208 19208 19209 - nagios = callPackage ../servers/monitoring/nagios { }; 19209 + icinga2 = callPackage ../servers/monitoring/icinga2 { }; 19210 + 19211 + icinga2-agent = callPackage ../servers/monitoring/icinga2 { 19212 + nameSuffix = "-agent"; 19213 + withMysql = false; 19214 + withNotification = false; 19215 + withIcingadb = false; 19216 + }; 19210 19217 19211 19218 munin = callPackage ../servers/monitoring/munin { }; 19219 + 19220 + nagios = callPackage ../servers/monitoring/nagios { }; 19212 19221 19213 19222 monitoring-plugins = callPackage ../servers/monitoring/plugins { }; 19214 19223