diff options
author | Martin Väth <martin@mvath.de> | 2017-07-18 05:43:39 +0200 |
---|---|---|
committer | Martin Väth <martin@mvath.de> | 2017-07-18 05:47:49 +0200 |
commit | c5a828b67f6a49e3ba3e1e5079e524828c2d5d13 (patch) | |
tree | 7640cdb9ec1d0d6d6db3751c9c81413b7d14def8 /sys-power | |
parent | sys-process/systemd-cron: Version bump. Fix libpath for split /usr (diff) | |
download | mv-c5a828b67f6a49e3ba3e1e5079e524828c2d5d13.tar.gz mv-c5a828b67f6a49e3ba3e1e5079e524828c2d5d13.tar.bz2 mv-c5a828b67f6a49e3ba3e1e5079e524828c2d5d13.zip |
sys-power/nut: Add to fix system-shutdown path
Diffstat (limited to 'sys-power')
-rw-r--r-- | sys-power/nut/Manifest | 1 | ||||
-rw-r--r-- | sys-power/nut/files/lighttpd_nut.conf-2.2.0 | 22 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.2.2-init.d-upsdrv | 43 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch | 16 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.6.5-init.d-upsd | 37 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.6.5-init.d-upslog | 30 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.6.5-init.d-upsmon | 29 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.7.1-snmpusb-order.patch | 37 | ||||
-rw-r--r-- | sys-power/nut/files/nut-2.7.2/nut-2.7.2-no-libdummy.patch | 13 | ||||
-rw-r--r-- | sys-power/nut/files/nut.powerfail.initd | 48 | ||||
-rw-r--r-- | sys-power/nut/metadata.xml | 65 | ||||
-rw-r--r-- | sys-power/nut/nut-2.7.4.ebuild | 269 |
12 files changed, 610 insertions, 0 deletions
diff --git a/sys-power/nut/Manifest b/sys-power/nut/Manifest new file mode 100644 index 00000000..62b1ea03 --- /dev/null +++ b/sys-power/nut/Manifest @@ -0,0 +1 @@ +DIST nut-2.7.4.tar.gz 2509831 SHA256 980e82918c52d364605c0703a5dcf01f74ad2ef06e3d365949e43b7d406d25a7 diff --git a/sys-power/nut/files/lighttpd_nut.conf-2.2.0 b/sys-power/nut/files/lighttpd_nut.conf-2.2.0 new file mode 100644 index 00000000..434be8c8 --- /dev/null +++ b/sys-power/nut/files/lighttpd_nut.conf-2.2.0 @@ -0,0 +1,22 @@ +############################################################################### +# Lighttpd configuration for using NUT under Gentoo Linux. +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +############################################################################### + +# Simple copy this to /etc/lighttpd/ and include it in your lighttpd.conf. +# It will make NUT available at http://$HOST/nut/ + +server.modules += ("mod_cgi") + +# If you want to limit it to some host, uncomment the host check and modify it to your needs. +# $HTTP["host"] == "www2.example.org" { +alias.url += ( "/nut/" => "/usr/share/nut/cgi/" ) +$HTTP["url"] =~ "^/nut/" { + dir-listing.activate = "disable" + cgi.assign = ( ".cgi" => "" ) + index-file.names = ( "upsstats.cgi" ) +} +# } + +# vim: set ft=conf foldmethod=marker et : diff --git a/sys-power/nut/files/nut-2.2.2-init.d-upsdrv b/sys-power/nut/files/nut-2.2.2-init.d-upsdrv new file mode 100644 index 00000000..9b49ee39 --- /dev/null +++ b/sys-power/nut/files/nut-2.2.2-init.d-upsdrv @@ -0,0 +1,43 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_commands="stopall startall" + +UPSNAME=${SVCNAME#*.} +msgtext="drivers" +[ "${UPSNAME}" = "${SVCNAME}" ] && UPSNAME='' +[ -n "$UPSNAME" ] && msgtext="driver for $UPSNAME" + +depend() { + before upsd + [ "${UPSNAME}" != '' ] && provide upsdrv +} + +start() { + _dostart "$UPSNAME" "$msgtext" +} +stop() { + _dostop "$UPSNAME" "$msgtext" +} + +startall() { + _dostart "" "$msgtext" +} +stopall() { + _dostop "" "$msgtext" +} + +_dostart() { + ebegin "Starting UPS $msgtext" + /usr/sbin/upsdrvctl start $UPSNAME + eend $? "Failed to start UPS $msgtext!" +} + +_dostop() { + # The pidfile names depend on the actual UPS name + # Not in our control at all + ebegin "Stopping UPS $msgtext" + /usr/sbin/upsdrvctl stop $UPSNAME + eend $? "Failed to stop UPS $msgtext!" +} diff --git a/sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch b/sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch new file mode 100644 index 00000000..9806d07e --- /dev/null +++ b/sys-power/nut/files/nut-2.6.2-lowspeed-buffer-size.patch @@ -0,0 +1,16 @@ +http://bugs.gentoo.org/show_bug.cgi?id=318937 +http://boxster.ghz.cc/projects/nut/changeset/2407 + +Respun from nut-2.4.3-lowspeed-buffer-size.patch + +Index: /trunk/drivers/libhid.c +=================================================================== +--- /trunk/drivers/libhid.c (revision 2336) ++++ /trunk/drivers/libhid.c (revision 2407) +@@ -142,5 +142,5 @@ + int id = pData->ReportID; + int r; +- unsigned char buf[SMALLBUF]; ++ unsigned char buf[8]; /* Maximum size for low-speed USB devices */ + + if (rbuf->ts[id] + age > time(NULL)) { diff --git a/sys-power/nut/files/nut-2.6.5-init.d-upsd b/sys-power/nut/files/nut-2.6.5-init.d-upsd new file mode 100644 index 00000000..c4debd30 --- /dev/null +++ b/sys-power/nut/files/nut-2.6.5-init.d-upsd @@ -0,0 +1,37 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload" + +pidfile=/var/lib/nut/upsd.pid +bin=/usr/sbin/upsd + +depend() { + use net + before upsmon + after upsdrv +} + +start() { + ebegin "Starting upsd" + # clean up first + pkill -u root,nut -x ${bin} + sleep 1 + rm -f ${pidfile} + # now start up + start-stop-daemon --start --quiet --exec ${bin} + eend $? +} + +stop() { + ebegin "Stopping upsd" + start-stop-daemon --stop --quiet --pidfile ${pidfile} + eend $? +} + +reload() { + ebegin "Reloading upsd" + start-stop-daemon --stop --signal HUP --oknodo --quiet --pidfile ${pidfile} + eend $? +} diff --git a/sys-power/nut/files/nut-2.6.5-init.d-upslog b/sys-power/nut/files/nut-2.6.5-init.d-upslog new file mode 100644 index 00000000..01a9d470 --- /dev/null +++ b/sys-power/nut/files/nut-2.6.5-init.d-upslog @@ -0,0 +1,30 @@ +#!/sbin/openrc-run +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload" + +pidfile=/var/run/upslog.pid +bin=/usr/bin/upslog + +depend() { + use upsdrv + after upsdrv +} + +start() { + ebegin "Starting upslog" + start-stop-daemon --start --quiet --exec ${bin} + eend $? +} + +stop() { + ebegin "Stopping upslog" + start-stop-daemon --stop --quiet --pidfile ${pidfile} + eend $? +} +reload() { + ebegin "Reloading upslog" + start-stop-daemon --stop --signal HUP --oknodo --quiet --pidfile ${pidfile} + eend $? +} diff --git a/sys-power/nut/files/nut-2.6.5-init.d-upsmon b/sys-power/nut/files/nut-2.6.5-init.d-upsmon new file mode 100644 index 00000000..3aafe167 --- /dev/null +++ b/sys-power/nut/files/nut-2.6.5-init.d-upsmon @@ -0,0 +1,29 @@ +#!/sbin/openrc-run +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="reload" + +pidfile=/var/run/upsmon.pid +bin=/usr/sbin/upsmon + +depend() { + use net +} + +start() { + ebegin "Starting upsmon" + start-stop-daemon --start --quiet --exec ${bin} + eend $? +} + +stop() { + ebegin "Stopping upsmon" + start-stop-daemon --stop --quiet --pidfile ${pidfile} + eend $? +} +reload() { + ebegin "Reloading upsmon" + start-stop-daemon --stop --signal HUP --oknodo --quiet --pidfile ${pidfile} + eend $? +} diff --git a/sys-power/nut/files/nut-2.7.1-snmpusb-order.patch b/sys-power/nut/files/nut-2.7.1-snmpusb-order.patch new file mode 100644 index 00000000..e62b6571 --- /dev/null +++ b/sys-power/nut/files/nut-2.7.1-snmpusb-order.patch @@ -0,0 +1,37 @@ +The code that generates the SNMP and USB headers to compile against does not +have a deterministic order, leading to different results at times. + +Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> + +diff -Nuar --exclude .libs --exclude '*.o' --exclude core nut-2.7.1.orig/tools/nut-snmpinfo.py nut-2.7.1/tools/nut-snmpinfo.py +--- nut-2.7.1.orig/tools/nut-snmpinfo.py 2014-01-04 19:08:19.117150636 -0800 ++++ nut-2.7.1/tools/nut-snmpinfo.py 2013-07-26 12:41:11.000000000 -0700 +@@ -78,7 +78,9 @@ + output_file.write( "/* SNMP IDs device table */\n" ) + output_file.write( "static snmp_device_id_t snmp_device_table[] = {\n" ) + +-for filename in glob.glob('../drivers/*-mib.c'): ++mibs = glob.glob('../drivers/*-mib.c') ++mibs.sort() ++for filename in mibs: + list_of_line = open(filename,'r').read().split(';') + for line in list_of_line: + if "mib2nut_info_t" in line: +diff -Nuar --exclude .libs --exclude '*.o' --exclude core nut-2.7.1.orig/tools/nut-usbinfo.pl nut-2.7.1/tools/nut-usbinfo.pl +--- nut-2.7.1.orig/tools/nut-usbinfo.pl 2014-01-04 19:12:45.595949760 -0800 ++++ nut-2.7.1/tools/nut-usbinfo.pl 2013-11-17 11:27:38.000000000 -0800 +@@ -75,7 +75,12 @@ + + ################# MAIN ################# + +-find(\&find_usbdevs,$scanPath); ++find({ ++ wanted => \&find_usbdevs, ++ follow => 1, ++ preprocess => sub { return sort @_ }, ++ }, ++ $scanPath); + &gen_usb_files; + + ################# SUB METHOD ################# + diff --git a/sys-power/nut/files/nut-2.7.2/nut-2.7.2-no-libdummy.patch b/sys-power/nut/files/nut-2.7.2/nut-2.7.2-no-libdummy.patch new file mode 100644 index 00000000..ca0d8be0 --- /dev/null +++ b/sys-power/nut/files/nut-2.7.2/nut-2.7.2-no-libdummy.patch @@ -0,0 +1,13 @@ +diff --git a/drivers/Makefile.am b/drivers/Makefile.am +index 99614ca..42b3611 100644 +--- a/drivers/Makefile.am ++++ b/drivers/Makefile.am +@@ -267,5 +267,6 @@ dist_noinst_HEADERS = apc-mib.h apc-hid.h baytech-mib.h bcmxcp.h \ + + # Define a dummy library so that Automake builds rules for the + # corresponding object files. This library is not actually built, +-EXTRA_LIBRARIES = libdummy.a +-libdummy_a_SOURCES = main.c dstate.c serial.c ++EXTRA_LIBRARIES = ++#EXTRA_LIBRARIES = libdummy.a ++#libdummy_a_SOURCES = main.c dstate.c serial.c diff --git a/sys-power/nut/files/nut.powerfail.initd b/sys-power/nut/files/nut.powerfail.initd new file mode 100644 index 00000000..fd26b4f7 --- /dev/null +++ b/sys-power/nut/files/nut.powerfail.initd @@ -0,0 +1,48 @@ +#!/sbin/openrc-run +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +description='Signal the UPS to kill power in a power failure condition' + +depend() { + # This is only for baselayout2 + if [ -f /etc/init.d/sysfs ]; then + keyword -jail -lxc -openvz -prefix -uml -vserver -xenu -timeout + need mount-ro + fi +} + +start() { + if [ ! -f /etc/init.d/sysfs ]; then + eerror "The $SVCNAME init-script is written for baselayout-2!" + eerror "Please do not use it with baselayout-1!". + return 1 + fi + local UPS_CTL UPS_POWERDOWN + + if [ -f /etc/killpower -o -f /etc/nut/killpower ]; then + UPS_CTL=/sbin/upsdrvctl + UPS_POWERDOWN="${UPS_CTL} shutdown" + elif [ -f /etc/apcupsd/powerfail ]; then + UPS_CTL=/sbin/apcupsd + UPS_POWERDOWN="${UPS_CTL} --killpower" + else + ewarn "UPS powerfail script scheduled, but no poweroff commands found." + return 0 + fi + + if [ -f "${UPS_CTL}" -a -x "${UPS_CTL}" ]; then + ebegin 'Signaling UPS to kill power' + ${UPS_POWERDOWN} + eend $? + + ebegin 'Halt system and wait for the UPS to kill our power' + /sbin/halt -id + # If the sleep gets hit, something is wrong... + # do NOT restart the system. + while [ 1 ]; do sleep 60; done + else + ewarn "UPS powerfail script scheduled, and flags found, but ${UPS_CTL} missing." + fi +} + diff --git a/sys-power/nut/metadata.xml b/sys-power/nut/metadata.xml new file mode 100644 index 00000000..bfe6c746 --- /dev/null +++ b/sys-power/nut/metadata.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>robbat2@gentoo.org</email> + <name>Robin H. Johnson</name> + </maintainer> + <maintainer type="person"> + <email>prometheanfire@gentoo.org</email> + </maintainer> + <use> + <flag name="ipmi">Support IPMI-based UPSes.</flag> + <flag name="ups_drivers_al175">Driver for Eltek UPS models with AL175 alarm module</flag> + <flag name="ups_drivers_bcmxcp">Driver for UPSes supporting the serial BCM/XCP protocol</flag> + <flag name="ups_drivers_belkin">Driver for Belkin serial UPS equipment</flag> + <flag name="ups_drivers_belkinunv">Driver for Belkin "Universal UPS" and compatible</flag> + <flag name="ups_drivers_bestfcom">Driver for Best Power Fortress/Ferrups</flag> + <flag name="ups_drivers_bestfortress">Driver for old Best Fortress UPS equipment</flag> + <flag name="ups_drivers_bestuferrups">Driver for Best Power Micro-Ferrups</flag> + <flag name="ups_drivers_bestups">Driver for Best Power / SOLA (Phoenixtec protocol) UPS equipment</flag> + <flag name="ups_drivers_dummy-ups">Driver for multi-purpose UPS emulation</flag> + <flag name="ups_drivers_etapro">Driver for ETA UPS equipment</flag> + <flag name="ups_drivers_everups">Driver for Ever UPS models</flag> + <flag name="ups_drivers_gamatronic">Driver for Gamatronic UPS equipment</flag> + <flag name="ups_drivers_genericups">Driver for contact-closure UPS equipment</flag> + <flag name="ups_drivers_isbmex">Driver for ISBMEX UPS equipment</flag> + <flag name="ups_drivers_liebert">Driver for Liebert contact-closure UPS equipment</flag> + <flag name="ups_drivers_liebert-esp2">Driver for Liebert UPS, using the ESP-II serial protocol</flag> + <flag name="ups_drivers_masterguard">Driver for Masterguard UPS equipment</flag> + <flag name="ups_drivers_metasys">Driver for Meta System UPS equipment</flag> + <flag name="ups_drivers_mge-utalk">Driver for MGE UPS SYSTEMS UTalk protocol equipment</flag> + <flag name="ups_drivers_microdowell">Driver for Microdowell Enterprise UPS series</flag> + <flag name="ups_drivers_mge-shut">Driver for SHUT Protocol UPS equipment</flag> + <flag name="ups_drivers_oldmge-shut">Driver for SHUT Protocol UPS equipment (older implementation)</flag> + <flag name="ups_drivers_oneac">Driver for Oneac UPS equipment</flag> + <flag name="ups_drivers_optiups">Driver for Opti-UPS (Viewsonic) UPS and Zinto D (ONLINE-USV) equipment</flag> + <flag name="ups_drivers_powercom">UPS driver for serial Powercom/Trust/Advice UPS equipment</flag> + <flag name="ups_drivers_rhino">Driver for Brazilian Microsol RHINO UPS equipment</flag> + <flag name="ups_drivers_safenet">Driver for SafeNet compatible UPS equipment</flag> + <flag name="ups_drivers_solis">Driver for Brazilian Microsol SOLIS UPS equipment</flag> + <flag name="ups_drivers_tripplite">Driver for Tripp-Lite SmartPro UPS equipment</flag> + <flag name="ups_drivers_tripplitesu">Driver for Tripp-Lite SmartOnline (SU) UPS equipment</flag> + <flag name="ups_drivers_upscode2">Driver for UPScode II compatible UPS equipment</flag> + <flag name="ups_drivers_victronups">Driver for IMV/Victron UPS unit Match, Match Lite, NetUps</flag> + <flag name="ups_drivers_powerpanel">Driver for PowerPanel Plus compatible UPS equipment</flag> + <flag name="ups_drivers_blazer_ser">Driver for Megatec/Q1 protocol serial based UPS equipment</flag> + <flag name="ups_drivers_clone">Fake driver to clone outlets for device grouping</flag> + <flag name="ups_drivers_clone-outlet">Fake driver to clone outlets for device grouping</flag> + <flag name="ups_drivers_ivtscd">driver for the IVT Solar Controller Device</flag> + <flag name="ups_drivers_apcsmart">Driver for American Power Conversion Smart Protocol UPS equipment</flag> + <flag name="ups_drivers_apcsmart-old">Driver for American Power Conversion Smart Protocol UPS equipment</flag> + <flag name="ups_drivers_apcupsd-ups">Driver for apcupsd client access</flag> + <flag name="ups_drivers_riello_ser">Driver for Riello UPS Protocol UPS equipment</flag> + <flag name="ups_drivers_nutdrv_qx">Driver for Q* protocol serial and USB based UPS equipment</flag> + <flag name="ups_drivers_usbhid-ups">Driver for USB/HID UPS equipment</flag> + <flag name="ups_drivers_bcmxcp_usb">Experimental driver for UPSes supporting the BCM/XCP protocol over USB</flag> + <flag name="ups_drivers_tripplite_usb">Driver for older Tripp Lite USB UPSes (not PDC HID)</flag> + <flag name="ups_drivers_blazer_usb">Driver for Megatec/Q1 protocol USB based UPS equipment</flag> + <flag name="ups_drivers_richcomm_usb">Driver UPS equipment using Richcomm dry-contact to USB solution</flag> + <flag name="ups_drivers_riello_usb">Driver for Riello UPS Protocol UPS equipment via USB</flag> + <flag name="ups_drivers_netxml-ups">Driver for Eaton / MGE Network Management Card / Proxy (XML/HTTP Protocol) equipment</flag> + <flag name="ups_drivers_snmp-ups">Multi-MIB Driver for SNMP UPS equipment</flag> + <flag name="ups_drivers_nut-ipmipsu">Driver for IPMI Power Supply Units (PSU)</flag> + </use> +</pkgmetadata> diff --git a/sys-power/nut/nut-2.7.4.ebuild b/sys-power/nut/nut-2.7.4.ebuild new file mode 100644 index 00000000..acf8a9b5 --- /dev/null +++ b/sys-power/nut/nut-2.7.4.ebuild @@ -0,0 +1,269 @@ +# Copyright 2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit autotools bash-completion-r1 fixheadtails multilib user systemd flag-o-matic toolchain-funcs + +MY_P=${P/_/-} + +DESCRIPTION="Network-UPS Tools" +HOMEPAGE="http://www.networkupstools.org/" +# Nut mirrors are presently broken +SRC_URI="http://random.networkupstools.org/source/${PV%.*}/${MY_P}.tar.gz + http://www.networkupstools.org/source/${PV%.*}/${MY_P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd" + +IUSE="cgi ipmi snmp +usb selinux ssl tcpd xml zeroconf" +CDEPEND=" + cgi? ( >=media-libs/gd-2[png] ) + snmp? ( net-analyzer/net-snmp ) + usb? ( virtual/libusb:0 ) + ssl? ( >=dev-libs/openssl-1 ) + tcpd? ( sys-apps/tcp-wrappers ) + xml? ( >=net-libs/neon-0.25.0 ) + ipmi? ( sys-libs/freeipmi ) + zeroconf? ( net-dns/avahi ) + virtual/udev" +DEPEND="$CDEPEND + >=sys-apps/sed-4 + virtual/pkgconfig" +RDEPEND="${CDEPEND} + !<sys-apps/systemd-234 + selinux? ( sec-policy/selinux-nut ) +" + +S=${WORKDIR}/${MY_P} + +# Bug #480664 requested UPS_DRIVERS_IUSE for more flexibility in building this package +SERIAL_DRIVERLIST="al175 bcmxcp belkin belkinunv bestfcom bestfortress bestuferrups bestups dummy-ups etapro everups gamatronic genericups isbmex liebert liebert-esp2 masterguard metasys oldmge-shut mge-utalk microdowell mge-shut oneac optiups powercom rhino safenet solis tripplite tripplitesu upscode2 victronups powerpanel blazer_ser clone clone-outlet ivtscd apcsmart apcsmart-old apcupsd-ups riello_ser nutdrv_qx" +SNMP_DRIVERLIST="snmp-ups" +USB_LIBUSB_DRIVERLIST="usbhid-ups bcmxcp_usb tripplite_usb blazer_usb richcomm_usb riello_usb nutdrv_qx" +USB_DRIVERLIST=${USB_LIBUSB_DRIVERLIST} +#HAL_DRIVERLIST="usbhid-ups bcmxcp_usb tripplite_usb blazer_usb riello_usb nutdrv_qx" +NEONXML_DRIVERLIST="netxml-ups" +IPMI_DRIVERLIST="nut-ipmipsu" +# Now we build from it: +for name in ${SERIAL_DRIVERLIST} ; do + IUSE_UPS_DRIVERS="${IUSE_UPS_DRIVERS} +ups_drivers_${name}" +done +for name in ${USB_DRIVERLIST} ; do + IUSE_UPS_DRIVERS="${IUSE_UPS_DRIVERS} +ups_drivers_${name}" + REQUIRED_USE="${REQUIRED_USE} ups_drivers_${name}? ( usb )" +done +for name in ${NEONXML_DRIVERLIST}; do + IUSE_UPS_DRIVERS="${IUSE_UPS_DRIVERS} ups_drivers_${name}" + REQUIRED_USE="${REQUIRED_USE} ups_drivers_${name}? ( xml )" +done +for name in ${SNMP_DRIVERLIST} ; do + IUSE_UPS_DRIVERS="${IUSE_UPS_DRIVERS} ups_drivers_${name}" + REQUIRED_USE="${REQUIRED_USE} ups_drivers_${name}? ( snmp )" +done +for name in ${IPMI_DRIVERLIST} ; do + IUSE_UPS_DRIVERS="${IUSE_UPS_DRIVERS} ups_drivers_${name}" + REQUIRED_USE="${REQUIRED_USE} ups_drivers_${name}? ( ipmi )" +done +IUSE="${IUSE} ${IUSE_UPS_DRIVERS}" + +# public files should be 644 root:root +NUT_PUBLIC_FILES="/etc/nut/{ups,upssched}.conf" +# private files should be 640 root:nut - readable by nut, writeable by root, +NUT_PRIVATE_FILES="/etc/nut/{upsd.conf,upsd.users,upsmon.conf}" +# public files should be 644 root:root, only installed if USE=cgi +NUT_CGI_FILES="/etc/nut/{{hosts,upsset}.conf,upsstats{,-single}.html}" + +pkg_setup() { + enewgroup nut 84 + enewuser nut 84 -1 /var/lib/nut nut,uucp + # As of udev-104, NUT must be in uucp and NOT in tty. + gpasswd -d nut tty 2>/dev/null + gpasswd -a nut uucp 2>/dev/null + # in some cases on old systems it wasn't in the nut group either! + gpasswd -a nut nut 2>/dev/null + warningmsg ewarn +} + +src_prepare() { + #ht_fix_file configure.in + + eapply "${FILESDIR}/nut-2.7.2/nut-2.7.2-no-libdummy.patch" + eapply -p2 "${FILESDIR}"/${PN}-2.6.2-lowspeed-buffer-size.patch + eapply "${FILESDIR}"/${PN}-2.7.1-snmpusb-order.patch + + sed -e "s:GD_LIBS.*=.*-L/usr/X11R6/lib \(.*\) -lXpm -lX11:GD_LIBS=\"\1:" \ + -e '/systemdsystemunitdir=.*echo.*sed.*libdir/s,^,#,g' \ + -e 's'\''\(systemdsystemshutdowndir="\)${libdir}'\''\1'"${EPREFIX}/lib'" \ + -i configure.ac || die + + sed -e "s:52.nut-usbups.rules:70-nut-usbups.rules:" \ + -i scripts/udev/Makefile.am || die + + rm -f ltmain.sh m4/lt* m4/libtool.m4 + + sed -i \ + -e 's:@LIBSSL_LDFLAGS@:@LIBSSL_LIBS@:' \ + lib/libupsclient{.pc,-config}.in || die #361685 + + eapply_user + eautoreconf +} + +src_configure() { + local myconf + append-flags -fno-lto + tc-export CC + tc-export CXX + tc-export AR + + local UPS_DRIVERS="" + for u in $USE ; do + u2=${u#ups_drivers_} + [[ "${u}" != "${u2}" ]] && UPS_DRIVERS="${UPS_DRIVERS} ${u2}" + done + UPS_DRIVERS="${UPS_DRIVERS# }" UPS_DRIVERS="${UPS_DRIVERS% }" + myconf="${myconf} --with-drivers=${UPS_DRIVERS// /,}" + + use cgi && myconf="${myconf} --with-cgipath=/usr/share/nut/cgi" + + # TODO: USE flag for sys-power/powerman + econf \ + --sysconfdir=/etc/nut \ + --datarootdir=/usr/share/nut \ + --datadir=/usr/share/nut \ + --disable-static \ + --with-statepath=/var/lib/nut \ + --with-drvpath=/$(get_libdir)/nut \ + --with-htmlpath=/usr/share/nut/html \ + --with-user=nut \ + --with-group=nut \ + --with-logfacility=LOG_DAEMON \ + --with-dev \ + --with-serial \ + --without-powerman \ + $(use_with cgi) \ + $(use_with ipmi) \ + $(use_with ipmi freeipmi) \ + $(use_with snmp) \ + $(use_with ssl) \ + $(use_with tcpd wrap) \ + $(use_with usb) \ + $(use_with xml neon) \ + $(use_with zeroconf avahi) \ + --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" \ + ${myconf} +} + +src_install() { + emake DESTDIR="${D}" install || die + + find "${D}" -name '*.la' -exec rm -f {} + + + dodir /sbin + dosym /usr/sbin/upsdrvctl /sbin/upsdrvctl + + if use cgi; then + elog "CGI monitoring scripts are installed in /usr/share/nut/cgi." + elog "copy them to your web server's ScriptPath to activate (this is a" + elog "change from the old location)." + elog "If you use lighttpd, see lighttpd_nut.conf in the documentation." + fi + + # this must be done after all of the install phases + for i in "${D}"/etc/nut/*.sample ; do + mv "${i}" "${i/.sample/}" + done + + dodoc AUTHORS ChangeLog docs/*.txt MAINTAINERS NEWS README TODO UPGRADING || die + + newdoc lib/README README.lib || die + newdoc "${FILESDIR}"/lighttpd_nut.conf-2.2.0 lighttpd_nut.conf || die + + docinto cables + dodoc docs/cables/* || die + + newinitd "${FILESDIR}"/nut-2.6.5-init.d-upsd upsd || die + newinitd "${FILESDIR}"/nut-2.2.2-init.d-upsdrv upsdrv || die + newinitd "${FILESDIR}"/nut-2.6.5-init.d-upsmon upsmon || die + newinitd "${FILESDIR}"/nut-2.6.5-init.d-upslog upslog || die + newinitd "${FILESDIR}"/nut.powerfail.initd nut.powerfail || die + + keepdir /var/lib/nut + + einfo "Setting up permissions on files and directories" + fperms 0700 /var/lib/nut + fowners nut:nut /var/lib/nut + + # Do not remove eval here, because the variables contain shell expansions. + eval fperms 0640 ${NUT_PRIVATE_FILES} + eval fowners root:nut ${NUT_PRIVATE_FILES} + + # Do not remove eval here, because the variables contain shell expansions. + eval fperms 0644 ${NUT_PUBLIC_FILES} + eval fowners root:root ${NUT_PUBLIC_FILES} + + # Do not remove eval here, because the variables contain shell expansions. + if use cgi; then + eval fperms 0644 ${NUT_CGI_FILES} + eval fowners root:root ${NUT_CGI_FILES} + fi + + # this is installed for 2.4 and fbsd guys + if ! has_version virtual/udev; then + einfo "Installing non-udev hotplug support" + insinto /etc/hotplug/usb + insopts -m 755 + doins scripts/hotplug/nut-usbups.hotplug + fi + + dobashcomp "${S}"/scripts/misc/nut.bash_completion +} + +pkg_postinst() { + # this is to ensure that everybody that installed old versions still has + # correct permissions + + chown nut:nut "${ROOT}"/var/lib/nut 2>/dev/null + chmod 0700 "${ROOT}"/var/lib/nut 2>/dev/null + + # Do not remove eval here, because the variables contain shell expansions. + eval chown root:nut "${ROOT}"${NUT_PRIVATE_FILES} 2>/dev/null + eval chmod 0640 "${ROOT}"${NUT_PRIVATE_FILES} 2>/dev/null + + # Do not remove eval here, because the variables contain shell expansions. + eval chown root:root "${ROOT}"${NUT_PUBLIC_FILES} 2>/dev/null + eval chmod 0644 "${ROOT}"${NUT_PUBLIC_FILES} 2>/dev/null + + # Do not remove eval here, because the variables contain shell expansions. + if use cgi; then + eval chown root:root "${ROOT}"${NUT_CGI_FILES} 2>/dev/null + eval chmod 0644 "${ROOT}"${NUT_CGI_FILES} 2>/dev/null + fi + + warningmsg elog +} + +warningmsg() { + msgfunc="$1" + [ -z "$msgfunc" ] && die "msgfunc not specified in call to warningmsg!" + ${msgfunc} "Please note that NUT now runs under the 'nut' user." + ${msgfunc} "NUT is in the uucp group for access to RS-232 UPS." + ${msgfunc} "However if you use a USB UPS you may need to look at the udev or" + ${msgfunc} "hotplug rules that are installed, and alter them suitably." + ${msgfunc} '' + ${msgfunc} "You are strongly advised to read the UPGRADING file provided by upstream." + ${msgfunc} '' + ${msgfunc} "Please note that upsdrv is NOT automatically started by upsd anymore." + ${msgfunc} "If you have multiple UPS units, you can use their NUT names to" + ${msgfunc} "have a service per UPS:" + ${msgfunc} "ln -s /etc/init.d/upsdrv /etc/init.d/upsdrv.\$UPSNAME" + ${msgfunc} '' + ${msgfunc} 'If you want apcupsd to power off your UPS when it' + ${msgfunc} 'shuts down your system in a power failure, you must' + ${msgfunc} 'add nut.powerfail to your shutdown runlevel:' + ${msgfunc} '' + ${msgfunc} 'rc-update add nut.powerfail shutdown' + ${msgfunc} '' + +} |