diff --git a/.gitignore b/.gitignore index 830429c..b8c81a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ -apcupsd-3.14.8.tar.gz -/apcupsd-3.14.9.tar.gz -/apcupsd-3.14.10.tar.gz -/apcupsd-3.14.11.tar.gz -/apcupsd-3.14.12.tar.gz -/apcupsd-3.14.13.tar.gz -/apcupsd-3.14.14.tar.gz +/apcupsd-*.tar.gz +/apcupsd-*.src.rpm +/apcupsd-*/ +/results_*/ diff --git a/99-apcupsd-xfer-glitch.patch b/99-apcupsd-xfer-glitch.patch new file mode 100644 index 0000000..2b2898d --- /dev/null +++ b/99-apcupsd-xfer-glitch.patch @@ -0,0 +1,61 @@ +diff -aruN apcupsd-3.14.14.orig/src/drivers/usb/usb.c apcupsd-3.14.14/src/drivers/usb/usb.c +--- apcupsd-3.14.14.orig/src/drivers/usb/usb.c 2024-02-24 20:22:42.007641242 +0100 ++++ apcupsd-3.14.14/src/drivers/usb/usb.c 2024-02-24 20:23:03.824987965 +0100 +@@ -42,7 +42,9 @@ + UpsDriver(ups), + _quirk_old_backups_pro(false), + _prev_time((struct timeval){0}), +- _bpcnt(0) ++ _bpcnt(0), ++ _bacnt(0), ++ _brcnt(0) + { + } + +@@ -410,8 +412,13 @@ + break; + + case CI_NeedReplacement: +- if (uval->iValue) +- _ups->set_replacebatt(uval->iValue); ++ if (uval->iValue) { ++ if (_brcnt++) { ++ _ups->set_replacebatt(uval->iValue); ++ } ++ } else { ++ _brcnt = 0; ++ } + Dmsg(200, "ReplaceBatt=%d\n", uval->iValue); + break; + +@@ -569,11 +576,15 @@ + * delayed. C'est la vie. + */ + if (uval->iValue) { +- if (_bpcnt++) ++ if (_bpcnt++) { ++ _bacnt = 0; + _ups->set_battpresent(); ++ } + } else { +- _bpcnt = 0; +- _ups->clear_battpresent(); ++ if (_bacnt++) { ++ _bpcnt = 0; ++ _ups->clear_battpresent(); ++ } + } + Dmsg(200, "BatteryPresent=%d\n", uval->iValue); + break; +diff -aruN apcupsd-3.14.14.orig/src/drivers/usb/usb.h apcupsd-3.14.14/src/drivers/usb/usb.h +--- apcupsd-3.14.14.orig/src/drivers/usb/usb.h 2024-02-24 20:22:42.007641242 +0100 ++++ apcupsd-3.14.14/src/drivers/usb/usb.h 2024-02-24 20:23:01.754956355 +0100 +@@ -86,6 +86,8 @@ + bool _quirk_old_backups_pro; + struct timeval _prev_time; + int _bpcnt; ++ int _bacnt; ++ int _brcnt; + }; + + /* Max rate to update volatile data */ diff --git a/apcupsd.service b/apcupsd.service index fb50d9d..2e199ff 100644 --- a/apcupsd.service +++ b/apcupsd.service @@ -5,7 +5,8 @@ After=network-online.target [Service] ExecStartPre=-/bin/rm -f /etc/apcupsd/powerfail -ExecStart=/sbin/apcupsd -b -f /etc/apcupsd/apcupsd.conf +ExecStart=/usr/bin/apcupsd -b -f /etc/apcupsd/apcupsd.conf +KillMode=process [Install] WantedBy=multi-user.target diff --git a/apcupsd.spec b/apcupsd.spec index b7e48d1..dde0ac9 100644 --- a/apcupsd.spec +++ b/apcupsd.spec @@ -1,9 +1,13 @@ +# A change in RPM 4.15 causes the make_build macro to misbuild this package. +# See https://github.com/rpm-software-management/rpm/issues/798 +%global _make_verbose %nil + Name: apcupsd Version: 3.14.14 -Release: 5%{?dist} +Release: 40%{?dist} Summary: APC UPS Power Control Daemon -License: GPLv2 +License: GPL-2.0-only URL: http://www.apcupsd.com Source0: https://downloads.sourceforge.net/apcupsd/apcupsd-%version.tar.gz Source1: apcupsd.service @@ -16,16 +20,33 @@ Source5: apcupsd64x64.png Patch0: apcupsd-3.14.9-fixgui.patch # Halt without powering off, rhbz#1442577 Patch1: apcupsd-3.14.4-shutdown.patch +# Fix format-security error so we can enable the checks +Patch2: patch-format-security +Patch3: disable_nologin.patch +# fixes "increasing NUMXFERS" bug: +# https://sourceforge.net/p/apcupsd/mailman/apcupsd-users/thread/ad9afb27-30f9-443f-a9fb-982c41ad1325%40okazoo.eu/ +# https://www.reddit.com/r/homelab/comments/1c3eo9n/apcupsd_and_proxmox_frequent_battery_disconnected/ +# patch source: https://sourceforge.net/p/apcupsd/mailman/message/58741334/ +Patch4: 99-apcupsd-xfer-glitch.patch +BuildRequires: gcc-c++ BuildRequires: glibc-devel, gd-devel -BuildRequires: net-snmp-devel, tcp_wrappers-devel, libusb-devel -BuildRequires: gtk2-devel, gnome-vfs2-devel, desktop-file-utils +%if %{defined fedora} || (%{defined rhel} && 0%{?rhel} > 9) +BuildRequires: libusb-compat-0.1-devel +%endif +%if (%{defined rhel} && 0%{?rhel} <= 9) +BuildRequires: libusb-devel +%endif +BuildRequires: net-snmp-devel, +BuildRequires: gtk2-devel, GConf2-devel, desktop-file-utils +# /sbin/shutdown is required to be present when building +# Somehow in F36 systemd is installed in mock but not in koji +BuildRequires: systemd # This is part of util-linux in Fedora, but on EL7 it's in sysvinit-tools. BuildRequires: /usr/bin/wall +BuildRequires: make Requires: /bin/mail /usr/bin/wall -Requires(post): systemd-units -Requires(preun): systemd-units -Requires(postun): systemd-units +%{?systemd_requires} %description Apcupsd can be used for controlling most APC UPSes. During a @@ -41,7 +62,6 @@ Some features depend on what UPS model you have (simple or smart). %package cgi Summary: Web interface for apcupsd -Group: Applications/Internet Requires: apcupsd = %version-%release Requires: httpd @@ -51,7 +71,6 @@ A CGI interface to the APC UPS monitoring daemon. %package gui Summary: GUI interface for apcupsd -Group: Applications/System Requires: apcupsd = %version-%release %description gui @@ -65,15 +84,10 @@ A GUI interface to the APC UPS monitoring daemon. printf 'install:\n\techo skipped\n' > platforms/redhat/Makefile %build -%global _hardened_build 1 -cp -p /usr/lib/rpm/config.{guess,sub} autoconf/ -export CPPFLAGS="$RPM_OPT_FLAGS -DNETSNMP_NO_LEGACY_DEFINITIONS -Wno-format-security -Wno-error=format-security" -export CXXFLAGS="$CPPFLAGS" -export CFLAGS="$CPPFLAGS" %configure \ --sysconfdir="/etc/apcupsd" \ --with-cgi-bin="/var/www/apcupsd" \ - --sbindir=/sbin \ + --sbindir=%{_bindir} \ --enable-cgi \ --enable-pthreads \ --enable-net \ @@ -85,7 +99,6 @@ export CFLAGS="$CPPFLAGS" --enable-modbus-usb \ --enable-gapcmon \ --enable-pcnet \ - --with-libwrap=%{_libdir} \ --with-serial-dev= \ --with-upstype=usb \ --with-upscable=usb \ @@ -131,7 +144,11 @@ rm examples/*.in %config(noreplace) /etc/apcupsd/onbattery %config(noreplace) /etc/logrotate.d/apcupsd /usr/share/hal/fdi/policy/20thirdparty/80-apcupsd-ups-policy.fdi -%attr(0755,root,root) /sbin/* +%{_bindir}/apcaccess +%{_bindir}/apctest +%{_bindir}/apcupsd +%exclude %{_bindir}/smtp + %{_mandir}/*/* %files cgi @@ -164,6 +181,117 @@ rm examples/*.in %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 3.14.14-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 3.14.14-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu May 22 2025 Gwyn Ciesla - 3.14.14-38 +- Don't ship /usr/bin/smtp, not used, conflicts with opensmtpd. + +* Fri May 09 2025 Gwyn Ciesla - 3.14.14-37 +- Move binaries from sbin to bin, 2365293. + +* Wed Apr 23 2025 Davide Cavalca - 3.14.14-36 +- Fix libusb conditional to make it build on EPEL 10 + Fixes: RHBZ#2337139 + +* Wed Apr 09 2025 Germano Massullo - 3.14.14-35 +- Adds 99-apcupsd-xfer-glitch.patch + +* Thu Jan 16 2025 Fedora Release Engineering - 3.14.14-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Nov 08 2024 Germano Massullo - 3.14.14-33 +- Adds distinction between Fedora and EL <= 9 for BuildRequires: libusb + +* Fri Nov 08 2024 Germano Massullo - 3.14.14-32 +- release bump + +* Fri Nov 08 2024 Germano Massullo - 3.14.14-31 +- Adds disable_nologin.patch + +* Sun Jan 07 2024 Germano Massullo - 3.14.14-30 +- disables apcupsd-3.14.4-shutdown.patch + +* Wed Jul 19 2023 Fedora Release Engineering - 3.14.14-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 3.14.14-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Aug 02 2022 Jason L Tibbitts III - 3.14.14-27 +- Depend on libusb-compat-0.1-devel to avoid build breakage. + +* Wed Jul 20 2022 Fedora Release Engineering - 3.14.14-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jan 25 2022 Jason L Tibbitts III - 3.14.14-25 +- Explicitly require systemd at build time to ensure that /sbin/shutdown is + present. + +* Wed Jan 19 2022 Fedora Release Engineering - 3.14.14-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 3.14.14-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jan 30 2021 Jason L Tibbitts III - 3.14.14-22 +- Fix build on F33+. +- Allow build with format-security checking enabled. + +* Tue Jan 26 2021 Fedora Release Engineering - 3.14.14-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 3.14.14-20 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 3.14.14-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jun 08 2020 Germano Massullo - 3.14.14-18 +- Replaced BuildRequires: gnome-vfs2 with BuildRequires: GConf2-devel More infos at https://bugzilla.redhat.com/show_bug.cgi?id=1745727#c5 + +* Tue Jan 28 2020 Fedora Release Engineering - 3.14.14-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Jason L Tibbitts III - 3.14.14-16 +- Workaround change in RPM 4.15 which breaks the build. + +* Wed Jul 24 2019 Fedora Release Engineering - 3.14.14-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 3.14.14-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Dec 03 2018 Jason L Tibbitts III - 3.14.14-13 +- Fix broken zero-size icon. + +* Thu Jul 12 2018 Fedora Release Engineering - 3.14.14-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu May 17 2018 Jason L Tibbitts III - 3.14.14-11 +- Add KillMode=process to the systemd unit. + +* Mon Mar 26 2018 Till Maas - 3.14.14-10 +- rebuilt to drop tcp_wrappers dependency + https://bugzilla.redhat.com/show_bug.cgi?id=1518751 +- remove tcp_wrappers support + +* Wed Feb 07 2018 Fedora Release Engineering - 3.14.14-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 25 2018 Jason L Tibbitts III - 3.14.14-8 +- Use proper systemd dependencies. + +* Wed Aug 02 2017 Fedora Release Engineering - 3.14.14-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3.14.14-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Mon Apr 17 2017 Jason L Tibbitts III - 3.14.14-5 - Reinstate patch to call shutdown with -H to halt instead of powering down. diff --git a/apcupsd64x64.png b/apcupsd64x64.png index e69de29..ed65f35 100644 Binary files a/apcupsd64x64.png and b/apcupsd64x64.png differ diff --git a/disable_nologin.patch b/disable_nologin.patch new file mode 100644 index 0000000..81fefc7 --- /dev/null +++ b/disable_nologin.patch @@ -0,0 +1,18 @@ +diff -urNr apcupsd-3.14.14-orig/src/action.c apcupsd-3.14.14/src/action.c +--- apcupsd-3.14.14-orig/src/action.c 2015-03-20 04:59:41.000000000 +0100 ++++ apcupsd-3.14.14/src/action.c 2024-11-08 16:48:46.095910557 +0100 +@@ -189,13 +189,7 @@ + + static void prohibit_logins(UPSINFO *ups) + { +- if (ups->nologin_file) +- return; /* already done */ +- +- logonfail(ups, 0); +- ups->nologin_file = true; +- +- log_event(ups, LOG_ALERT, "User logins prohibited"); ++ return; + } + + static void do_shutdown(UPSINFO *ups, int cmdtype) diff --git a/patch-format-security b/patch-format-security new file mode 100644 index 0000000..d919a3c --- /dev/null +++ b/patch-format-security @@ -0,0 +1,13 @@ +diff --git a/src/gapcmon/gapcmon.c b/src/gapcmon/gapcmon.c +index 40bf29d..111fe1f 100644 +--- a/src/gapcmon/gapcmon.c ++++ b/src/gapcmon/gapcmon.c +@@ -2938,7 +2938,7 @@ static void gapc_util_log_app_msg(gchar * pch_func, gchar * pch_topic, + + pch = g_strdup_printf("%s(%s) emsg=%s", pch_func, pch_topic, pch_emsg); + +- g_message(pch); ++ g_message("%s", pch); + + g_free(pch); +