From 0f69787599ad3fd30073aad31d52b67929c1489a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20=C5=98=C3=ADdk=C3=BD?= Date: Tue, 15 Aug 2023 09:43:05 +0200 Subject: [PATCH] Fix SQLight RPM transition warning and split perl package --- net-snmp-5.9-rpmdb.patch | 65 ++++++++++++++++++++++++++++++++++++++++ net-snmp.spec | 50 +++++++++++++++++++++++-------- 2 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 net-snmp-5.9-rpmdb.patch diff --git a/net-snmp-5.9-rpmdb.patch b/net-snmp-5.9-rpmdb.patch new file mode 100644 index 0000000..d20d728 --- /dev/null +++ b/net-snmp-5.9-rpmdb.patch @@ -0,0 +1,65 @@ +From ed4ee14af5b83fa4a86dfaa783f841d3e8545ce4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Josef=20=C5=98=C3=ADdk=C3=BD?= +Date: Wed, 9 Aug 2023 16:51:28 +0200 +Subject: [PATCH] Add support for RPM SQLite DB background. + +From RPM 4.16 the SQLite support is available for RPM DB. +After https://fedoraproject.org/wiki/Changes/Sqlite_Rpmdb, rpm changed +it's background DB from Berkeley to SQLite in Fedora. +Net-SNMP is using hard coded paths to determine where RPM DB files are. + +This update is adding check for rpmdb.sqlite file in order to be able +invalidate internal cache after system package change. + +Closes #596 +--- + agent/mibgroup/host/data_access/swinst_rpm.c | 18 +++++++++++++----- + agent/mibgroup/host/hr_swinst.c | 3 +++ + 2 files changed, 16 insertions(+), 5 deletions(-) + +diff --git a/agent/mibgroup/host/data_access/swinst_rpm.c b/agent/mibgroup/host/data_access/swinst_rpm.c +index 050edff307..7ad91a3194 100644 +--- a/agent/mibgroup/host/data_access/swinst_rpm.c ++++ b/agent/mibgroup/host/data_access/swinst_rpm.c +@@ -73,15 +73,23 @@ netsnmp_swinst_arch_init(void) + #endif + + snprintf( pkg_directory, SNMP_MAXPATH, "%s/Packages", dbpath ); ++ ++ if (-1 == stat( pkg_directory, &stat_buf )) { ++ ++ /* check for SQLite DB backend */ ++ snprintf( pkg_directory, SNMP_MAXPATH, "%s/rpmdb.sqlite", dbpath ); ++ ++ if (-1 == stat( pkg_directory, &stat_buf )) { ++ snmp_log(LOG_ERR, "Can't find directory of RPM packages\n"); ++ pkg_directory[0] = '\0'; ++ } ++ } ++ + SNMP_FREE(rpmdbpath); + dbpath = NULL; + #ifdef HAVE_RPMGETPATH + rpmFreeRpmrc(); +-#endif +- if (-1 == stat( pkg_directory, &stat_buf )) { +- snmp_log(LOG_ERR, "Can't find directory of RPM packages\n"); +- pkg_directory[0] = '\0'; +- } ++#endif + } + + void +diff -urNp a/agent/mibgroup/host/hr_swinst.c b/agent/mibgroup/host/hr_swinst.c +--- a/agent/mibgroup/host/hr_swinst.c 2023-07-31 11:37:44.855071535 +0200 ++++ b/agent/mibgroup/host/hr_swinst.c 2023-08-14 12:45:14.846357019 +0200 +@@ -229,6 +229,9 @@ init_hr_swinst(void) + snprintf(path, sizeof(path), "%s/Packages", swi->swi_dbpath); + if (stat(path, &stat_buf) == -1) + snprintf(path, sizeof(path), "%s/packages.rpm", swi->swi_dbpath); ++ /* check for SQLite DB backend */ ++ if (stat(path, &stat_buf) == -1) ++ snprintf(path, sizeof(path), "%s/rpmdb.sqlite", swi->swi_dbpath); + path[ sizeof(path)-1 ] = 0; + swi->swi_directory = strdup(path); + #ifdef HAVE_RPMGETPATH diff --git a/net-snmp.spec b/net-snmp.spec index da99d50..7dcaa55 100644 --- a/net-snmp.spec +++ b/net-snmp.spec @@ -10,7 +10,7 @@ Summary: A collection of SNMP protocol tools and libraries Name: net-snmp Version: 5.9.3 -Release: 7%{?dist} +Release: 8%{?dist} Epoch: 1 License: Net-SNMP and OpenSSL @@ -52,6 +52,7 @@ Patch22: net-snmp-libs-misunderstanding.patch Patch23: net-snmp-5.9-CVE-2022-44792-44793.patch Patch24: net-snmp-5.9-ipv6-disable-leak.patch Patch25: net-snmp-5.9-sendmsg-error-code.patch +Patch26: net-snmp-5.9-rpmdb.patch # Modern RPM API means at least EL6 Patch101: net-snmp-5.8-modern-rpm-api.patch @@ -139,8 +140,21 @@ applications for use with the NET-SNMP project's network management tools. You'll also need to have the net-snmp and net-snmp-utils packages installed. +%package perl-module +Summary: The perl NET-SNMP module +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}, perl-interpreter +BuildRequires: perl-interpreter +BuildRequires: perl-generators + +%description perl-module +The net-snmp-perl package contains the perl files to use SNMP from within +Perl. + +Install the net-snmp-perl package, if you want to use SNMP with perl. + + %package perl -Summary: The perl NET-SNMP module and the mib2c tool +Summary: The perl-based utilities and the mib2c tool Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}, perl-interpreter Requires: %{name}-agent-libs%{?_isa} = %{epoch}:%{version}-%{release} Requires: %{name}-devel%{?_isa} = %{epoch}:%{version}-%{release} @@ -148,15 +162,17 @@ BuildRequires: perl-interpreter BuildRequires: perl-generators %description perl -The net-snmp-perl package contains the perl files to use SNMP from within -Perl. +The net-snmp-perl package contains the utilities written in perl. -Install the net-snmp-perl package, if you want to use mib2c or SNMP -with perl. +Install the net-snmp-perl package, if you want to use mib2c or other +perl utilities. Use the net-snmp-perl-module package instead to get the +SNMP perl module. %package gui Summary: An interactive graphical MIB browser for SNMP -Requires: perl-Tk, net-snmp-perl%{?_isa} = %{epoch}:%{version}-%{release} +Requires: perl-Tk, %{name}-perl-module%{?_isa} = %{epoch}:%{version}-%{release} +BuildRequires: perl-interpreter +BuildRequires: perl-generators %description gui The net-snmp-gui package contains tkmib utility, which is a graphical user @@ -228,6 +244,7 @@ cp %{SOURCE10} . %patch 23 -p1 %patch 24 -p1 -b .ipv6-disable-leak %patch 25 -p1 -b .sendmsg-error-code +%patch 26 -p1 -b .rpmdbpatch %patch 101 -p1 -b .modern-rpm-api %patch 102 -p1 @@ -342,6 +359,7 @@ rm -f %{buildroot}/%{_mandir}/man1/fixproc* rm -f %{buildroot}/%{_bindir}/ipf-mod.pl rm -f %{buildroot}/%{_libdir}/*.la rm -f %{buildroot}/%{_libdir}/libsnmp* +rm -f %{buildroot}/%{_libdir}/perl5/vendor_perl/Bundle/MakefileSubs.pm # remove special perl files find %{buildroot} -name perllocal.pod \ @@ -451,6 +469,12 @@ LD_LIBRARY_PATH=%{buildroot}/%{_libdir} make test %attr(0755,root,root) %{_bindir}/net-snmp-config* %attr(0644,root,root) %{_mandir}/man1/net-snmp-config*.1.* +%files perl-module +%attr(0644,root,root) %{_mandir}/man3/*.3pm.* +%{perl_vendorarch}/*SNMP* +%{perl_vendorarch}/auto/*SNMP* +%{perl_vendorarch}/auto/Bundle/*SNMP* + %files perl %{_bindir}/mib2c-update %{_bindir}/mib2c @@ -462,13 +486,8 @@ LD_LIBRARY_PATH=%{buildroot}/%{_libdir} make test %{_datadir}/snmp/*.pl %{_bindir}/traptoemail %attr(0644,root,root) %{_mandir}/man[15]/mib2c* -%attr(0644,root,root) %{_mandir}/man3/*.3pm.* %attr(0644,root,root) %{_mandir}/man1/traptoemail*.1* %attr(0644,root,root) %{_mandir}/man1/snmp-bridge-mib.1* -%{perl_vendorarch}/*SNMP* -%{perl_vendorarch}/auto/*SNMP* -%{perl_vendorarch}/auto/Bundle/*SNMP* -%{perl_vendorarch}/Bundle/MakefileSubs.pm %files -n python3-net-snmp %doc README @@ -496,6 +515,13 @@ LD_LIBRARY_PATH=%{buildroot}/%{_libdir} make test %{_libdir}/libnetsnmptrapd*.so.%{soname}* %changelog +* Mon Aug 14 2023 Josef Ridky - 1:5.9.3-8 +- Fix warning for RPM DB +- split perl module into separate package that doesn't pull in gcc and + other build dependencies (thanks Chris Adams) +- don't install MakefileSubs.pm - it's just needed at module build time + (thanks Chris Adams) + * Tue Aug 01 2023 Josef Ridky - 1:5.9.3-7 - Sync fixes with RHEL - Fix sendmesg error code change for new kernel