From a1141feae8deb8ad37fe67564fc3f0004e6ef4ae Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Fri, 22 Dec 2023 10:50:20 -0500 Subject: zabbix: upgrade to 6.4.10 --- linhes/zabbix/PKGBUILD | 54 +++++-- linhes/zabbix/fix-build-with-libxml2.patch | 230 +++++++++++++++++++++++++++++ linhes/zabbix/zabbix-web-service.service | 11 ++ linhes/zabbix/zabbix-web-service.sysusers | 1 + linhes/zabbix/zabbix-web-service.tmpfiles | 1 + 5 files changed, 287 insertions(+), 10 deletions(-) create mode 100644 linhes/zabbix/fix-build-with-libxml2.patch create mode 100644 linhes/zabbix/zabbix-web-service.service create mode 100644 linhes/zabbix/zabbix-web-service.sysusers create mode 100644 linhes/zabbix/zabbix-web-service.tmpfiles diff --git a/linhes/zabbix/PKGBUILD b/linhes/zabbix/PKGBUILD index b242e5a..ef47499 100644 --- a/linhes/zabbix/PKGBUILD +++ b/linhes/zabbix/PKGBUILD @@ -1,21 +1,24 @@ # Maintainer: Bartłomiej Piotrowski # Maintainer: Florian Pritz +# Maintainer: Robin Candau pkgbase=zabbix -pkgname=(zabbix-server zabbix-agent{,2} zabbix-proxy zabbix-frontend-php) -pkgver=6.4.8 +pkgname=(zabbix-server zabbix-agent{,2} zabbix-proxy zabbix-frontend-php zabbix-web-service) +pkgver=6.4.10 pkgrel=1 arch=(x86_64) url='https://www.zabbix.com/' license=(GPL) -makedepends=(libxml2 unixodbc net-snmp mariadb-libs libldap libevent go pkgconfig pcre2) +makedepends=(libxml2 unixodbc net-snmp mariadb-libs libldap libevent go pkgconfig pcre2 openipmi) source=("https://cdn.zabbix.com/zabbix/sources/stable/${pkgver%.*}/zabbix-${pkgver}.tar.gz" zabbix-agent.{service,sysusers,tmpfiles} zabbix-agent2.service zabbix-server-mysql.service zabbix-server.{sysusers,tmpfiles} - zabbix-proxy-mysql.service zabbix-proxy.{sysusers,tmpfiles}) + zabbix-proxy-mysql.service zabbix-proxy.{sysusers,tmpfiles} + zabbix-web-service.{service,sysusers,tmpfiles} + fix-build-with-libxml2.patch) -sha512sums=('712e9f3fdb772475137c7238e8ca26f510180c147b7aa74b29567033f62d4beb00275b96aaf05c978fec341b08c82102ecf1976a5e8af257e848ae3974a6fec9' +sha512sums=('bd8460da2cca3b8a0b4e0adbf5a7a30e74c30667bd95f161ca6159798f788748f5de6a512a3b36f2b47d695daf3e810abcf68b3016af6fd06602075a76cb4ef6' '8c1fa2676bc0ef91bc39ec5f97b4d3ba5c365d063420455a3785121a54e120bc5afeacde42a48f4509c115f940dcc3b6c2f43044a7fbfb421182fc93b22a2444' '3ab3ac1acc7e35c8896157aef601ebc30815237ac5252cbd0c1ecb26eeaf9eccf5c49938ae8c85bb79a6f95f607f082f6b80ed660829599ec03aa626cca6d3dc' 'ca6b4779de23829dfdd80ee21e924fbe4e2754f4e693bed4b1a2aa846cd87d150e399b1169d7fe58d30c50ed837c1b8254e580de420267d0a1834d6dc409c43d' @@ -25,16 +28,24 @@ sha512sums=('712e9f3fdb772475137c7238e8ca26f510180c147b7aa74b29567033f62d4beb002 'b6d548a26f845ef1a39724e3273aa521715272e20a0038144f86d377a26dfec6e3e129404cfda77632cad2f5cd6bab4a33f70a26c8c67b0d0b2abb3678ad2d83' '94701f34fe5df4859c6a4d0459c16062374e8f89f4f51c414e71c9c2db14f61e087721e68dddb3e8d88bf1c097477c1a21e27ba4705fd07d88c60adb41acc1be' '7c1072a8cd5837095f857b50124cb45d1bdbddbce108f6f067a35c3c9ebb1ad0502ef617dfa10f9c843631220177a6286a97b1c2a46539200be72fa83cb23b99' - '64042ddf511b56b2a5a311e34643f4e049c09d909ea65b7343a8a9637f33dc59f2b1342201290ca0774cbcbf616096b3696982047fb622b7d51afb5eceb298dd') + '64042ddf511b56b2a5a311e34643f4e049c09d909ea65b7343a8a9637f33dc59f2b1342201290ca0774cbcbf616096b3696982047fb622b7d51afb5eceb298dd' + '545bb284ac28386f8b9f33f0c5066bb73b3634fab8760861bc172fe83897f22e54ecaf186970f0ef178256c9ff152a3e806636145a77af78964f7af0fdcec1a1' + '2766787aaeef2f48909c52deb411b47971931a972282f701c401f8315264c8817fc1f9f49a2672152c78a0ebba7d72329c18b441e134c5ec3db5f12681b6e590' + '309f55c8c381364eca6d31c4709a0ebb7e04cefad9e51f44173d839a58e7f8e95e3c678922f9e1fe42cff90dba5144cc7ee3a6e1c236b079b501c0e08ad2152d' + '1e29dd44ac8b51b768352bdfbb4176f2ea82fa2a0887fd59ab2f114874745833a013874896850fce515e25ae56f39d16192b27f3044319725e8f77c6f64c00e5') prepare() { cd $pkgbase-$pkgver sed -i \ -e '/^LogFile=.*/d' \ -e 's/# LogType=file/LogType=system/' \ - conf/zabbix_{agentd,proxy,server}.conf + conf/zabbix_{agentd,proxy,server}.conf src/go/conf/zabbix_web_service.conf autoreconf -fi + + # Temporary patch to fix build against libxml2 + # See https://support.zabbix.com/browse/ZBX-23738 + patch -Np1 <${srcdir}/fix-build-with-libxml2.patch } build() { @@ -58,6 +69,8 @@ build() { --with-libpcre2 --with-ssh2 --with-unixodbc + --with-openipmi + --enable-webservice ) cd $pkgbase-$pkgver @@ -86,7 +99,9 @@ build() { package_zabbix-server() { pkgdesc='Monitoring software for networks and applications' depends=(net-snmp curl libxml2 unixodbc libldap libevent pcre2) - optdepends=('mariadb-libs: for MariaDB support') + optdepends=('mariadb-libs: for MariaDB support' + 'openipmi: for IPMI support' + 'zabbix-web-service: for scheduled PDF report generation') backup=(etc/zabbix/zabbix_server.conf) cd $pkgbase-$pkgver @@ -172,8 +187,9 @@ package_zabbix-agent2() { package_zabbix-proxy() { pkgdesc='Data collecting proxy for Zabbix' - depends=(net-snmp curl libxml2 sqlite unixodbc libldap pcre2 libevent) - optdepends=('mariadb-libs: for MariaDB support') + depends=(net-snmp curl libxml2 unixodbc libldap pcre2 libevent) + optdepends=('mariadb-libs: for MariaDB support' + 'openipmi: for IPMI support') backup=(etc/zabbix/zabbix_proxy.conf) cd $pkgbase-$pkgver @@ -211,3 +227,21 @@ package_zabbix-frontend-php() { cp -a ui/* "$pkgdir/usr/share/webapps/zabbix" chown 33:33 ${pkgdir}/usr/share/webapps/zabbix/conf/ # write access for http user } + +package_zabbix-web-service() { + pkgdesc='Zabbix web service used to generate and send scheduled reports' + depends=(chromium) + backup=(etc/zabbix/zabbix_web_service.conf) + + cd $pkgbase-$pkgver + install -Dm755 src/go/bin/zabbix_web_service "$pkgdir/usr/bin/zabbix_web_service" + install -Dm644 src/go/conf/zabbix_web_service.conf "$pkgdir/etc/zabbix/zabbix_web_service.conf" + chown 173:173 "$pkgdir/etc/zabbix/zabbix_web_service.conf" + + install -Dm644 "$srcdir/zabbix-web-service.service" \ + "$pkgdir/usr/lib/systemd/system/zabbix-web-service.service" + install -Dm644 "$srcdir/zabbix-web-service.sysusers" \ + "$pkgdir/usr/lib/sysusers.d/zabbix-web-service.conf" + install -Dm644 "$srcdir/zabbix-web-service.tmpfiles" \ + "$pkgdir/usr/lib/tmpfiles.d/zabbix-web-service.conf" +} diff --git a/linhes/zabbix/fix-build-with-libxml2.patch b/linhes/zabbix/fix-build-with-libxml2.patch new file mode 100644 index 0000000..c4716f0 --- /dev/null +++ b/linhes/zabbix/fix-build-with-libxml2.patch @@ -0,0 +1,230 @@ +diff --git a/ChangeLog.d/bugfix/ZBX-23738 b/ChangeLog.d/bugfix/ZBX-23738 +new file mode 100644 +index 0000000..f7c7dd5 +--- /dev/null ++++ b/ChangeLog.d/bugfix/ZBX-23738 +@@ -0,0 +1 @@ ++.......PS. [ZBX-23738] fixed Zabbix backend sources for libxml2 2.12.0 version changes (akozlovs) +diff --git a/m4/libxml2.m4 b/m4/libxml2.m4 +index b0a3c77..282d3b6 100644 +--- a/m4/libxml2.m4 ++++ b/m4/libxml2.m4 +@@ -30,10 +30,13 @@ AS_HELP_STRING([--with-libxml2@<:@=ARG@:>@], + [ + if test "$withval" = "no"; then + want_libxml2="no" ++ _libxml2_with="no" + elif test "$withval" = "yes"; then + want_libxml2="yes" ++ _libxml2_with="yes" + else + want_libxml2="yes" ++ _libxml2_with=$withval + fi + ], + [want_libxml2="no"] +@@ -49,27 +52,43 @@ AS_HELP_STRING([--with-libxml2@<:@=ARG@:>@], + dnl + + if test "$want_libxml2" = "yes"; then +- AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +- m4_ifdef([PKG_PROG_PKG_CONFIG], [PKG_PROG_PKG_CONFIG()], [:]) ++ if test "$_libxml2_with" != "yes"; then ++ XML2_INCDIR=$_libxml2_with/include ++ XML2_LIBDIR=$_libxml2_with/lib ++ LIBXML2_CFLAGS="-I$XML2_INCDIR" ++ LIBXML2_LDFLAGS="-L$XML2_LIBDIR" ++ _full_libxml2_libs=$LIBXML2_LDFLAGS ++ configured_libxml2="yes" ++ else ++ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++ m4_ifdef([PKG_PROG_PKG_CONFIG], [PKG_PROG_PKG_CONFIG()], [:]) ++ ++ if test -x "$PKG_CONFIG"; then + +- if test -x "$PKG_CONFIG"; then ++ LIBXML2_CFLAGS="`$PKG_CONFIG --cflags libxml-2.0`" + +- LIBXML2_CFLAGS="`$PKG_CONFIG --cflags libxml-2.0`" ++ _full_libxml2_libs="`$PKG_CONFIG --libs libxml-2.0`" ++ ++ for i in $_full_libxml2_libs; do ++ case $i in ++ -lxml2) ++ ;; ++ -L*) ++ LIBXML2_LDFLAGS="${LIBXML2_LDFLAGS} $i" ++ ;; ++ -R*) ++ LIBXML2_LDFLAGS="${LIBXML2_LDFLAGS} -Wl,$i" ++ ;; ++ esac ++ done + +- _full_libxml2_libs="`$PKG_CONFIG --libs libxml-2.0`" ++ configured_libxml2="yes" ++ else ++ configured_libxml2="no" ++ fi ++ fi + +- for i in $_full_libxml2_libs; do +- case $i in +- -lxml2) +- ;; +- -L*) +- LIBXML2_LDFLAGS="${LIBXML2_LDFLAGS} $i" +- ;; +- -R*) +- LIBXML2_LDFLAGS="${LIBXML2_LDFLAGS} -Wl,$i" +- ;; +- esac +- done ++ if test "$configured_libxml2" = "yes"; then + + if test "x$enable_static" = "xyes"; then + for i in $_full_libxml2_libs; do +@@ -88,6 +107,20 @@ AS_HELP_STRING([--with-libxml2@<:@=ARG@:>@], + done + fi + ++ if test "$_libxml2_with" != "yes"; then ++ if test -f $_libxml2_with/include/libxml2/libxml/xmlversion.h; then ++ LIBXML2_VERSION=`cat $_libxml2_with/include/libxml2/libxml/xmlversion.h \ ++ | grep '#define.*LIBXML_DOTTED_VERSION.*' \ ++ | sed -e 's/#define LIBXML_DOTTED_VERSION *//' \ ++ | sed -e 's/ *\/\*.*\*\///' \ ++ | sed -e 's/\"//g'` ++ else ++ AC_MSG_ERROR([Not found libxml2 library]) ++ fi ++ else ++ LIBXML2_VERSION=`$PKG_CONFIG --version libxml-2.0` ++ fi ++ + _save_libxml2_libs="${LIBS}" + _save_libxml2_ldflags="${LDFLAGS}" + _save_libxml2_cflags="${CFLAGS}" +@@ -96,7 +129,7 @@ AS_HELP_STRING([--with-libxml2@<:@=ARG@:>@], + CFLAGS="${CFLAGS} ${LIBXML2_CFLAGS}" + + AC_CHECK_LIB(xml2, xmlReadMemory, [ +- LIBXML2_LIBS="-lxml2 ${LIBXML2_LIBS}" ++ LIBXML2_LIBS="${LIBXML2_LIBS} -lxml2" + ],[ + AC_MSG_ERROR([Not found libxml2 library]) + ]) +@@ -108,8 +141,6 @@ AS_HELP_STRING([--with-libxml2@<:@=ARG@:>@], + unset _save_libxml2_ldflags + unset _save_libxml2_cflags + +- LIBXML2_VERSION=`$PKG_CONFIG --version libxml-2.0` +- + AC_DEFINE([HAVE_LIBXML2], [1], [Define to 1 if libxml2 libraries are available]) + + found_libxml2="yes" +diff --git a/src/libs/zbxpreproc/item_preproc.c b/src/libs/zbxpreproc/item_preproc.c +index 88f94c6..8921b2d 100644 +--- a/src/libs/zbxpreproc/item_preproc.c ++++ b/src/libs/zbxpreproc/item_preproc.c +@@ -27,6 +27,7 @@ + #include "zbxxml.h" + #ifdef HAVE_LIBXML2 + # include ++# include + #endif + + #include "zbxnum.h" +@@ -896,7 +897,7 @@ int item_preproc_get_error_from_xml(const zbx_variant_t *value, const char *para + xmlDoc *doc = NULL; + xmlXPathContext *xpathCtx = NULL; + xmlXPathObject *xpathObj = NULL; +- xmlErrorPtr pErr; ++ const xmlError *pErr; + xmlBufferPtr xmlBufferLocal; + + zbx_variant_copy(&value_str, value); +diff --git a/src/libs/zbxpreproc/pp_manager.c b/src/libs/zbxpreproc/pp_manager.c +index 9959a9f..a39f95d 100644 +--- a/src/libs/zbxpreproc/pp_manager.c ++++ b/src/libs/zbxpreproc/pp_manager.c +@@ -34,6 +34,7 @@ + + #ifdef HAVE_LIBXML2 + # include ++# include + #endif + + #define PP_STARTUP_TIMEOUT 10 +diff --git a/src/libs/zbxxml/xml.c b/src/libs/zbxxml/xml.c +index 00eadce..7763be8 100644 +--- a/src/libs/zbxxml/xml.c ++++ b/src/libs/zbxxml/xml.c +@@ -27,6 +27,7 @@ + + #ifdef HAVE_LIBXML2 + # include ++# include + #endif + + typedef struct _zbx_xml_node_t zbx_xml_node_t; +@@ -282,7 +283,7 @@ int zbx_query_xpath(zbx_variant_t *value, const char *params, char **errmsg) + xmlXPathContext *xpathCtx; + xmlXPathObject *xpathObj; + xmlNodeSetPtr nodeset; +- xmlErrorPtr pErr; ++ const xmlError *pErr; + xmlBufferPtr xmlBufferLocal; + + if (NULL == (doc = xmlReadMemory(value->data.str, strlen(value->data.str), "noname.xml", NULL, 0))) +@@ -638,7 +639,7 @@ static void vector_to_json(zbx_vector_xml_node_ptr_t *nodes, struct zbx_json *js + ******************************************************************************/ + int zbx_open_xml(char *data, int options, int maxerrlen, void **xml_doc, void **root_node, char **errmsg) + { +- xmlErrorPtr pErr; ++ const xmlError *pErr; + + if (NULL == (*xml_doc = xmlReadMemory(data, strlen(data), "noname.xml", NULL, options))) + { +@@ -694,7 +695,7 @@ int zbx_open_xml(char *data, int options, int maxerrlen, void **xml_doc, void ** + ******************************************************************************/ + int zbx_check_xml_memory(char *mem, int maxerrlen, char **errmsg) + { +- xmlErrorPtr pErr; ++ const xmlError *pErr; + + if (NULL == mem) + { +@@ -949,7 +950,7 @@ int zbx_json_to_xml(char *json_data, char **xstr, char **errmsg) + int size, ret = FAIL; + struct zbx_json_parse jp; + xmlDoc *doc = NULL; +- xmlErrorPtr pErr; ++ const xmlError *pErr; + xmlChar *xmem; + + if (NULL == (doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION))) +@@ -1005,7 +1006,11 @@ zbx_libxml_error_t; + * err - [IN] the libxml2 error message * + * * + ******************************************************************************/ ++#if 21200 > LIBXML_VERSION /* version 2.12.0 */ + static void libxml_handle_error_xpath_check(void *user_data, xmlErrorPtr err) ++#else ++static void libxml_handle_error_xpath_check(void *user_data, const xmlError *err) ++#endif + { + zbx_libxml_error_t *err_ctx; + +@@ -1155,7 +1160,11 @@ out: + * err - [IN] the libxml2 error message * + * * + ******************************************************************************/ ++#if 21200 > LIBXML_VERSION /* version 2.12.0 */ + static void libxml_handle_error_try_read_value(void *user_data, xmlErrorPtr err) ++#else ++static void libxml_handle_error_try_read_value(void *user_data, const xmlError *err) ++#endif + { + ZBX_UNUSED(user_data); + ZBX_UNUSED(err); diff --git a/linhes/zabbix/zabbix-web-service.service b/linhes/zabbix/zabbix-web-service.service new file mode 100644 index 0000000..fd3c324 --- /dev/null +++ b/linhes/zabbix/zabbix-web-service.service @@ -0,0 +1,11 @@ +[Unit] +Description=Zabbix Web Service +After=network.target + +[Service] +Type=simple +ExecStart=/usr/bin/zabbix_web_service -f +User=zabbix-web-service + +[Install] +WantedBy=multi-user.target diff --git a/linhes/zabbix/zabbix-web-service.sysusers b/linhes/zabbix/zabbix-web-service.sysusers new file mode 100644 index 0000000..5c42710 --- /dev/null +++ b/linhes/zabbix/zabbix-web-service.sysusers @@ -0,0 +1 @@ +u zabbix-web-service 173 - /var/lib/zabbix-web-service diff --git a/linhes/zabbix/zabbix-web-service.tmpfiles b/linhes/zabbix/zabbix-web-service.tmpfiles new file mode 100644 index 0000000..45d6a63 --- /dev/null +++ b/linhes/zabbix/zabbix-web-service.tmpfiles @@ -0,0 +1 @@ +d /var/lib/zabbix-web-service 0750 zabbix-web-service zabbix-web-service - -- cgit v0.12