From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 984781581F0 for ; Thu, 23 Jan 2025 23:52:15 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id 7C8693434DD for ; Thu, 23 Jan 2025 23:52:15 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id 6E1DF11042D; Thu, 23 Jan 2025 23:52:14 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 5F12211042D for ; Thu, 23 Jan 2025 23:52:14 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id F30B8343468 for ; Thu, 23 Jan 2025 23:52:13 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 5E5C1E65 for ; Thu, 23 Jan 2025 23:52:12 +0000 (UTC) From: "Conrad Kostecki" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Conrad Kostecki" Message-ID: <1737676272.85f08b2beefc799a843a3c84f309cf44a3316a93.conikost@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: sys-power/apcupsd/, sys-power/apcupsd/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch sys-power/apcupsd/files/apcupsd.powerfail.init-r1 X-VCS-Directories: sys-power/apcupsd/ sys-power/apcupsd/files/ X-VCS-Committer: conikost X-VCS-Committer-Name: Conrad Kostecki X-VCS-Revision: 85f08b2beefc799a843a3c84f309cf44a3316a93 X-VCS-Branch: master Date: Thu, 23 Jan 2025 23:52:12 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: ce650ebd-d12e-4339-9126-fa0d1d5b726d X-Archives-Hash: 30447ec68f265c86f741dd22b93cf97d commit: 85f08b2beefc799a843a3c84f309cf44a3316a93 Author: Conrad Kostecki gentoo org> AuthorDate: Thu Jan 23 23:49:58 2025 +0000 Commit: Conrad Kostecki gentoo org> CommitDate: Thu Jan 23 23:51:12 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=85f08b2b sys-power/apcupsd: update EAPI 7 -> 8 Also changed: * Sorted use flags * Use generated apcupsd.conf * Set NISIP via configure * Remove runlevel check from apcupsd.powerfail * Patch for LTO * Dropped PAGER workaround Closes: https://bugs.gentoo.org/418177 Closes: https://bugs.gentoo.org/832350 Closes: https://bugs.gentoo.org/941584 Closes: https://github.com/gentoo/gentoo/pull/40199 Signed-off-by: Conrad Kostecki gentoo.org> sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild | 160 ++++++++++++++++++++++ sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch | 29 ++++ sys-power/apcupsd/files/apcupsd.powerfail.init-r1 | 17 +++ 3 files changed, 206 insertions(+) diff --git a/sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild b/sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild new file mode 100644 index 000000000000..c3bc2dbb2a36 --- /dev/null +++ b/sys-power/apcupsd/apcupsd-3.14.14-r4.ebuild @@ -0,0 +1,160 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit linux-info systemd udev tmpfiles + +DESCRIPTION="APC UPS daemon with integrated tcp/ip remote shutdown" +HOMEPAGE="http://www.apcupsd.org/" +SRC_URI="https://downloads.sourceforge.net/apcupsd/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~riscv ~x86" +IUSE="cgi +modbus selinux snmp +usb" + +DEPEND=" + sys-apps/util-linux[tty-helpers] + cgi? ( media-libs/gd:2= ) + modbus? ( + usb? ( virtual/libusb:0= ) + ) + snmp? ( net-analyzer/net-snmp ) +" + +RDEPEND=" + virtual/mailx + selinux? ( sec-policy/selinux-apcupsd ) + ${DEPEND} +" + +CONFIG_CHECK="~USB_HIDDEV ~HIDRAW" +ERROR_USB_HIDDEV="CONFIG_USB_HIDDEV: needed to access USB-attached UPSes" +ERROR_HIDRAW="CONFIG_HIDRAW: needed to access USB-attached UPSes" + +PATCHES=( + "${FILESDIR}"/${PN}-3.14.9-aliasing.patch + "${FILESDIR}"/${PN}-3.14.9-close-on-exec.patch + "${FILESDIR}"/${PN}-3.14.9-commfailure.patch + "${FILESDIR}"/${PN}-3.14.9-fix-nologin.patch + "${FILESDIR}"/${PN}-3.14.9-gapcmon.patch + "${FILESDIR}"/${PN}-3.14.9-wall-on-mounted-usr.patch + "${FILESDIR}"/${PN}-3.14.14-lto.patch +) + +pkg_setup() { + if use kernel_linux && use usb && linux_config_exists ; then + check_extra_config + fi +} + +src_prepare() { + default + # skip this specific doc step as produced files never installed + # this avoids calling the col command not available on musl based system. + sed -i "/^SUBDIRS/ s/doc//g" Makefile || die +} + +src_configure() { + # We force the DISTNAME to gentoo so it will use gentoo's layout also + # when installed on non-linux systems. + local myeconfargs + myeconfargs=( + APCUPSD_MAIL="$(type -p mail)" + --disable-gapcmon + --enable-net + --enable-pcnet + --sbindir="/sbin" + --sysconfdir="${EPREFIX}/etc/apcupsd" + --with-distname="gentoo" + --with-pwrfail-dir="${EPREFIX}/etc/apcupsd" + --with-lock-dir="${EPREFIX}/run/apcupsd" + --with-log-dir="${EPREFIX}/var/log" + --with-nisip="127.0.0.1" + --with-nis-port="3551" + --with-pid-dir="${EPREFIX}/run/apcupsd" + --with-upscable="$(usex usb usb smart)" + --with-upstype="$(usex usb usb apcsmart)" + $(use_enable cgi) + $(use_enable modbus) + $(use_enable snmp) + $(use_enable usb) + $(use_with cgi cgi-bin "${EPREFIX}/usr/libexec/${PN}/cgi-bin") + $(usex modbus $(use_enable usb modbus-usb) "--disable-modbus-usb") + $(usex usb "--without-serial-dev" "--with-serial-dev=/dev/ttyS0") + $(usex usb "--with-dev=" "--with-dev=/dev/ttyS0") + ) + + econf "${myeconfargs[@]}" +} + +src_compile() { + emake VERBOSE="2" +} + +src_install() { + emake DESTDIR="${D}" VERBOSE="2" install + + rm "${ED}"/etc/init.d/apcupsd || die + rm "${ED}"/etc/init.d/halt || die + rm -r "${ED}"/usr/share/hal || die + + insinto /etc/apcupsd + newins examples/safe.apccontrol safe.apccontrol + + doman doc/*.8 doc/*.5 + + docinto html + dodoc -r doc/manual/. + einstalldocs + + newinitd "${FILESDIR}"/apcupsd.init apcupsd + newinitd "${FILESDIR}"/apcupsd.powerfail.init-r1 apcupsd.powerfail + + systemd_dounit "${FILESDIR}"/apcupsd.service + dotmpfiles "${FILESDIR}"/apcupsd-tmpfiles.conf + + # replace it with our udev rules if we're in Linux + if use kernel_linux ; then + udev_newrules "${FILESDIR}"/apcupsd-udev.rules 60-${PN}.rules + fi + +} + +pkg_postinst() { + use kernel_linux && udev_reload + + tmpfiles_process ${PN}-tmpfiles.conf + + if use cgi ; then + elog "The cgi-bin directory for ${PN} is /usr/libexec/${PN}/cgi-bin." + elog "Set up your ScriptAlias or symbolic links accordingly." + fi + + elog "" + elog "Since version 3.14.0 you can use multiple apcupsd instances to" + elog "control more than one UPS in a single box with openRC." + elog "To do this, create a link between /etc/init.d/apcupsd to a new" + elog "/etc/init.d/apcupsd.something, and it will then load the" + elog "configuration file at /etc/apcupsd/something.conf." + elog "" + + elog 'If you want apcupsd to power off your UPS when it' + elog 'shuts down your system in a power failure, you must' + elog 'add apcupsd.powerfail to your shutdown runlevel:' + elog '' + elog ' \e[01m rc-update add apcupsd.powerfail shutdown \e[0m' + elog '' + + if use kernel_linux; then + elog "Starting from version 3.14.9-r1, ${PN} installs udev rules" + elog "for persistent device naming. If you have multiple UPS" + elog "connected to the machine, you can point them to the devices" + elog "in /dev/apcups/by-id directory." + fi +} + +pkg_postrm() { + use kernel_linux && udev_reload +} diff --git a/sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch b/sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch new file mode 100644 index 000000000000..54ad76b61a35 --- /dev/null +++ b/sys-power/apcupsd/files/apcupsd-3.14.14-lto.patch @@ -0,0 +1,29 @@ +Fix extern symbol declarations to be consistent with the definition. + +Bug: https://bugs.gentoo.org/941584 +Signed-off-by: Holger Hoffstätte + +diff -rup a/src/apcupsd.c a/src/apcupsd.c +--- a/src/apcupsd.c ++++ b/src/apcupsd.c +@@ -31,7 +31,7 @@ static void daemon_start(void); + int pidcreated = 0; + extern int kill_on_powerfail; + extern FILE *trace_fd; +-extern char *pidfile; ++extern const char *pidfile; + + /* + * The terminate function and trapping signals allows apcupsd +diff -rup a/src/options.c b/src/options.c +--- a/src/options.c ++++ b/src/options.c +@@ -62,7 +62,7 @@ int terminate_on_powerfail = FALSE; + int kill_on_powerfail = FALSE; + int dumb_mode_test = FALSE; /* for testing dumb mode */ + int go_background = TRUE; +-extern char *pidfile; ++extern const char *pidfile; + extern bool trace; + + static void print_usage(char *argv[]) diff --git a/sys-power/apcupsd/files/apcupsd.powerfail.init-r1 b/sys-power/apcupsd/files/apcupsd.powerfail.init-r1 new file mode 100644 index 000000000000..d582d9eb5b3a --- /dev/null +++ b/sys-power/apcupsd/files/apcupsd.powerfail.init-r1 @@ -0,0 +1,17 @@ +#!/sbin/openrc-run +# Copyright 2009-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +description='Signal the UPS to kill power in a power failure condition' + +depend() { + need mount-ro +} + +start() { + if [ -f /etc/apcupsd/powerfail ] ; then + ebegin 'Signaling UPS to kill power' + /sbin/apcupsd --killpower + eend $? + fi +}