diff options
author | Matthew Marlowe <mattm@gentoo.org> | 2013-10-21 22:01:49 +0000 |
---|---|---|
committer | Matthew Marlowe <mattm@gentoo.org> | 2013-10-21 22:01:49 +0000 |
commit | 4e88ef857ac80362c93612113ecd35a91148da46 (patch) | |
tree | a5862bc50e969cd01386b7ebb170976d23037496 /sys-power | |
parent | Version bump. (diff) | |
download | gentoo-2-4e88ef857ac80362c93612113ecd35a91148da46.tar.gz gentoo-2-4e88ef857ac80362c93612113ecd35a91148da46.tar.bz2 gentoo-2-4e88ef857ac80362c93612113ecd35a91148da46.zip |
Tentative fix for Bug 430894, net-snmp compatibility with apcupsd.
(Portage version: 2.1.12.2/cvs/Linux x86_64, signed Manifest commit with key 786037A7)
Diffstat (limited to 'sys-power')
-rw-r--r-- | sys-power/apcupsd/ChangeLog | 8 | ||||
-rw-r--r-- | sys-power/apcupsd/apcupsd-3.14.10-r5.ebuild | 143 | ||||
-rw-r--r-- | sys-power/apcupsd/files/apcupsd-snmp-5.7.2.patch | 104 |
3 files changed, 254 insertions, 1 deletions
diff --git a/sys-power/apcupsd/ChangeLog b/sys-power/apcupsd/ChangeLog index e9c7472e9fff..a77a4a915a43 100644 --- a/sys-power/apcupsd/ChangeLog +++ b/sys-power/apcupsd/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for sys-power/apcupsd # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-power/apcupsd/ChangeLog,v 1.88 2013/10/21 21:12:15 floppym Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-power/apcupsd/ChangeLog,v 1.89 2013/10/21 22:01:49 mattm Exp $ + +*apcupsd-3.14.10-r5 (21 Oct 2013) + + 21 Oct 2013; Matthew Marlowe <mattm@gentoo.org> +apcupsd-3.14.10-r5.ebuild, + +files/apcupsd-snmp-5.7.2.patch: + Tentative fix for Bug 430894, net-snmp compatibility with apcupsd. 21 Oct 2013; Mike Gilbert <floppym@gentoo.org> apcupsd-3.14.10-r4.ebuild: Fix util-linux dep. diff --git a/sys-power/apcupsd/apcupsd-3.14.10-r5.ebuild b/sys-power/apcupsd/apcupsd-3.14.10-r5.ebuild new file mode 100644 index 000000000000..de81cb59e94f --- /dev/null +++ b/sys-power/apcupsd/apcupsd-3.14.10-r5.ebuild @@ -0,0 +1,143 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-power/apcupsd/apcupsd-3.14.10-r5.ebuild,v 1.1 2013/10/21 22:01:49 mattm Exp $ + +EAPI=4 + +inherit eutils linux-info flag-o-matic systemd udev + +DESCRIPTION="APC UPS daemon with integrated tcp/ip remote shutdown" +HOMEPAGE="http://www.apcupsd.org/" +SRC_URI="mirror://sourceforge/apcupsd/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="" +IUSE="snmp +usb cgi nls gnome kernel_linux systemd" + +DEPEND=" + || ( >=sys-apps/util-linux-2.23[tty-helpers(-)] + <=sys-apps/sysvinit-2.88-r4 + ) + cgi? ( >=media-libs/gd-1.8.4 ) + nls? ( sys-devel/gettext ) + snmp? ( >=net-analyzer/net-snmp-5.7.2 ) + gnome? ( >=x11-libs/gtk+-2.4.0:2 + dev-libs/glib:2 + >=gnome-base/gconf-2.0 )" +RDEPEND="${DEPEND} + sys-apps/openrc + virtual/mailx" + +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" + +pkg_setup() { + if use kernel_linux && use usb && linux_config_exists; then + check_extra_config + fi +} + +src_prepare() { + epatch "${FILESDIR}/${PN}-3.14.9-aliasing.patch" + if use snmp; then + epatch "${FILESDIR}/${PN}-snmp-5.7.2.patch" + fi +} + +src_configure() { + local myconf + use cgi && myconf="${myconf} --enable-cgi --with-cgi-bin=/usr/libexec/${PN}/cgi-bin" + if use usb; then + myconf="${myconf} --with-upstype=usb --with-upscable=usb --enable-usb --with-dev= " + else + myconf="${myconf} --with-upstype=apcsmart --with-upscable=smart --disable-usb" + fi + + # We force the DISTNAME to gentoo so it will use gentoo's layout also + # when installed on non-linux systems. + econf \ + --sbindir=/sbin \ + --sysconfdir=/etc/apcupsd \ + --with-pwrfail-dir=/etc/apcupsd \ + --with-lock-dir=/var/run/apcupsd \ + --with-pid-dir=/var/run/apcupsd \ + --with-log-dir=/var/log \ + --with-nis-port=3551 \ + --enable-net --enable-pcnet \ + --with-distname=gentoo \ + $(use_enable snmp net-snmp) \ + $(use_enable gnome gapcmon) \ + ${myconf} \ + APCUPSD_MAIL=/bin/mail +} + +src_compile() { + # Workaround for bug #280674; upstream should really just provide + # the text files in the distribution, but I wouldn't count on them + # doing that anytime soon. + MANPAGER=$(type -p cat) \ + emake || die "emake failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "installed failed" + rm -f "${D}"/etc/init.d/halt + + insinto /etc/apcupsd + newins examples/safe.apccontrol safe.apccontrol + doins "${FILESDIR}"/apcupsd.conf + + dodoc ChangeLog* ReleaseNotes + doman doc/*.8 doc/*.5 + + dohtml -r doc/manual/* + + rm "${D}"/etc/init.d/apcupsd + newinitd "${FILESDIR}/${PN}.init.4" "${PN}" + newinitd "${FILESDIR}/${PN}.powerfail.init" "${PN}".powerfail + + if use systemd; then + systemd_dounit "${FILESDIR}"/${PN}.service + systemd_dotmpfilesd "${FILESDIR}"/${PN}-tmpfiles.conf + fi + + # remove hal settings, we don't really want to have it around still. + rm -r "${D}"/usr/share/hal + + # 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() { + 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 +} diff --git a/sys-power/apcupsd/files/apcupsd-snmp-5.7.2.patch b/sys-power/apcupsd/files/apcupsd-snmp-5.7.2.patch new file mode 100644 index 000000000000..aaa618bbab90 --- /dev/null +++ b/sys-power/apcupsd/files/apcupsd-snmp-5.7.2.patch @@ -0,0 +1,104 @@ +--- src/drivers/snmp/snmp.c~ 2007-10-06 15:52:52.000000000 +0100 ++++ src/drivers/snmp/snmp.c 2012-08-09 11:22:30.100725543 +0100 +@@ -140,26 +140,26 @@ + + if (!strcmp(Sid->DeviceVendor, "APC") || + !strcmp(Sid->DeviceVendor, "APC_NOTRAP")) { +- Sid->MIB = malloc(sizeof(powernet_mib_t)); +- if (Sid->MIB == NULL) { ++ Sid->mib = malloc(sizeof(powernet_mib_t)); ++ if (Sid->mib == NULL) { + log_event(ups, LOG_ERR, "Out of memory."); + exit(1); + } + +- memset(Sid->MIB, 0, sizeof(powernet_mib_t)); ++ memset(Sid->mib, 0, sizeof(powernet_mib_t)); + + /* Run powernet specific init */ + return powernet_snmp_ups_open(ups); + } + + if (!strcmp(Sid->DeviceVendor, "RFC")) { +- Sid->MIB = malloc(sizeof(ups_mib_t)); +- if (Sid->MIB == NULL) { ++ Sid->mib = malloc(sizeof(ups_mib_t)); ++ if (Sid->mib == NULL) { + log_event(ups, LOG_ERR, "Out of memory."); + exit(1); + } + +- memset(Sid->MIB, 0, sizeof(ups_mib_t)); ++ memset(Sid->mib, 0, sizeof(ups_mib_t)); + return 1; + } + +--- src/drivers/snmp/drv_rfc1628.c~ 2012-08-09 11:18:56.001810234 +0100 ++++ src/drivers/snmp/drv_rfc1628.c 2012-08-09 11:19:08.845988048 +0100 +@@ -32,7 +32,7 @@ + struct snmp_ups_internal_data *Sid = + (struct snmp_ups_internal_data *)ups->driver_internal_data; + struct snmp_session *s = &Sid->session; +- ups_mib_t *data = (ups_mib_t *)Sid->MIB; ++ ups_mib_t *data = (ups_mib_t *)Sid->mib; + + /* + * Check the Ethernet COMMLOST first, then check the +@@ -76,7 +76,7 @@ + struct snmp_ups_internal_data *Sid = + (struct snmp_ups_internal_data *)ups->driver_internal_data; + struct snmp_session *s = &Sid->session; +- ups_mib_t *data = (ups_mib_t *)Sid->MIB; ++ ups_mib_t *data = (ups_mib_t *)Sid->mib; + + if (rfc_1628_check_alarms(ups) == 0) { + return 0; +@@ -98,7 +98,7 @@ + struct snmp_ups_internal_data *Sid = + (struct snmp_ups_internal_data *)ups->driver_internal_data; + struct snmp_session *s = &Sid->session; +- ups_mib_t *data = (ups_mib_t *)Sid->MIB; ++ ups_mib_t *data = (ups_mib_t *)Sid->mib; + + if (rfc_1628_check_alarms(ups) == 0) { + return 0; +--- src/drivers/snmp/snmp.h~ 2007-10-06 15:52:52.000000000 +0100 ++++ src/drivers/snmp/snmp.h 2012-08-09 11:17:43.988802514 +0100 +@@ -79,7 +79,7 @@ + unsigned short remote_port; /* Remote socket, usually 161 */ + char *DeviceVendor; /* Vendor (ex. APC|RFC) */ + char *community; /* Community name */ +- void *MIB; /* Pointer to MIB data */ ++ void *mib; /* Pointer to MIB data */ + struct snmp_session *trap_session; /* snmp session for traps */ + bool trap_received; /* Have we seen a trap? */ + }; +--- src/drivers/snmp/drv_powernet.c~ 2010-01-02 21:28:28.000000000 +0000 ++++ src/drivers/snmp/drv_powernet.c 2012-08-09 11:20:04.970761477 +0100 +@@ -34,7 +34,7 @@ + struct snmp_ups_internal_data *Sid = + (struct snmp_ups_internal_data *)ups->driver_internal_data; + struct snmp_session *s = &Sid->session; +- powernet_mib_t *data = (powernet_mib_t *)Sid->MIB; ++ powernet_mib_t *data = (powernet_mib_t *)Sid->mib; + int ret = 1; + + /* +@@ -161,7 +161,7 @@ + struct snmp_ups_internal_data *Sid = + (struct snmp_ups_internal_data *)ups->driver_internal_data; + struct snmp_session *s = &Sid->session; +- powernet_mib_t *data = (powernet_mib_t *)Sid->MIB; ++ powernet_mib_t *data = (powernet_mib_t *)Sid->mib; + + if (powernet_check_comm_lost(ups) == 0) + return 0; +@@ -300,7 +300,7 @@ + struct snmp_ups_internal_data *Sid = + (struct snmp_ups_internal_data *)ups->driver_internal_data; + struct snmp_session *s = &Sid->session; +- powernet_mib_t *data = (powernet_mib_t *)Sid->MIB; ++ powernet_mib_t *data = (powernet_mib_t *)Sid->mib; + + if (powernet_check_comm_lost(ups) == 0) + return 0; |