You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
5.6 KiB
221 lines
5.6 KiB
# Copyright 1999-2024 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit bash-completion-r1 flag-o-matic linux-info optfeature systemd
|
|
inherit tmpfiles toolchain-funcs udev
|
|
|
|
MY_P=${P/_/-}
|
|
|
|
DESCRIPTION="Network-UPS Tools"
|
|
HOMEPAGE="https://networkupstools.org/"
|
|
|
|
if [[ ${PV} == *9999 ]] ; then
|
|
EGIT_REPO_URI="https://github.com/networkupstools/${PN}.git"
|
|
inherit git-r3
|
|
else
|
|
SRC_URI="https://networkupstools.org/source/${PV%.*}/${MY_P}.tar.gz"
|
|
KEYWORDS="amd64 arm ~arm64 ~ppc ppc64 ~riscv x86"
|
|
fi
|
|
|
|
S="${WORKDIR}/${MY_P}"
|
|
|
|
LICENSE="GPL-2"
|
|
SLOT="0"
|
|
IUSE="cgi doc ipmi serial i2c +man snmp +usb modbus selinux ssl tcpd test xml zeroconf"
|
|
RESTRICT="!test? ( test )"
|
|
|
|
DEPEND="
|
|
acct-group/nut
|
|
acct-user/nut
|
|
dev-libs/libltdl
|
|
virtual/udev
|
|
cgi? ( >=media-libs/gd-2[png] )
|
|
i2c? ( sys-apps/i2c-tools )
|
|
ipmi? ( sys-libs/freeipmi )
|
|
modbus? ( dev-libs/libmodbus )
|
|
snmp? ( net-analyzer/net-snmp:= )
|
|
ssl? ( >=dev-libs/openssl-1:= )
|
|
tcpd? ( sys-apps/tcp-wrappers )
|
|
usb? ( virtual/libusb:1 )
|
|
xml? ( >=net-libs/neon-0.25.0:= )
|
|
zeroconf? ( net-dns/avahi )
|
|
"
|
|
BDEPEND="
|
|
virtual/pkgconfig
|
|
man? ( app-text/asciidoc )
|
|
test? ( dev-util/cppunit )
|
|
"
|
|
RDEPEND="
|
|
${DEPEND}
|
|
selinux? ( sec-policy/selinux-nut )
|
|
"
|
|
|
|
PATCHES=(
|
|
"${FILESDIR}/${PN}-2.6.2-lowspeed-buffer-size.patch"
|
|
)
|
|
|
|
pkg_pretend() {
|
|
if use i2c; then
|
|
CONFIG_CHECK="~I2C_CHARDEV"
|
|
ERROR_I2C_CHARDEV="You must enable I2C_CHARDEV in your kernel to continue"
|
|
fi
|
|
if use usb; then
|
|
CONFIG_CHECK+=" ~HIDRAW ~USB_HIDDEV"
|
|
ERROR_HIDRAW="HIDRAW is needed to support USB UPSes"
|
|
ERROR_I2C_CHARDEV="USB_HIDDEV is needed to support USB UPSes"
|
|
fi
|
|
if use serial; then
|
|
CONFIG_CHECK="~SERIAL_8250"
|
|
ERROR_SERIAL_8250="SERIAL_8250 is needed to support Serial UPSes"
|
|
fi
|
|
|
|
# Now do the actual checks setup above
|
|
check_extra_config
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
if [[ ${PV} == *9999 ]] ; then
|
|
./autogen.sh || die
|
|
fi
|
|
}
|
|
|
|
src_configure() {
|
|
local myeconfargs=(
|
|
--datadir=/usr/share/nut
|
|
--datarootdir=/usr/share/nut
|
|
--disable-static
|
|
--disable-strip
|
|
--disable-Werror
|
|
--sysconfdir=/etc/nut
|
|
--with-dev
|
|
--with-drvpath="/$(get_libdir)/nut"
|
|
--with-group=nut
|
|
--with-htmlpath=/usr/share/nut/html
|
|
--with-logfacility=LOG_DAEMON
|
|
--with-statepath=/var/lib/nut
|
|
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
|
|
--with-systemdtmpfilesdir="/usr/lib/tmpfiles.d"
|
|
--with-udev-dir="$(get_udevdir)"
|
|
--with-user=nut
|
|
--without-powerman
|
|
--without-python
|
|
--without-python2
|
|
--without-python3
|
|
--with-altpidpath=/run/nut
|
|
--with-pidpath=/run/nut
|
|
$(use_enable test cppunit)
|
|
$(use_with cgi)
|
|
$(use_with i2c linux_i2c)
|
|
$(use_with ipmi freeipmi)
|
|
$(use_with ipmi)
|
|
$(use_with serial)
|
|
$(use_with snmp)
|
|
$(use_with ssl)
|
|
$(use_with tcpd wrap)
|
|
$(use_with usb)
|
|
$(use_with xml neon)
|
|
$(use_with zeroconf avahi)
|
|
)
|
|
|
|
filter-lto
|
|
append-flags -fno-lto
|
|
tc-export CC CXX AR
|
|
|
|
use cgi && myeconfargs+=( --with-cgipath=/usr/share/nut/cgi )
|
|
use man && myeconfargs+=( --with-doc=man )
|
|
|
|
export bashcompdir="$(get_bashcompdir)"
|
|
|
|
econf "${myeconfargs[@]}"
|
|
}
|
|
|
|
src_install() {
|
|
default
|
|
|
|
rm -rf "${ED}/etc/hotplug" || die
|
|
|
|
find "${ED}" -name '*.la' -delete || die
|
|
|
|
dodir /sbin
|
|
|
|
if use cgi; then
|
|
elog "CGI monitoring scripts are installed in ${EPREFIX}/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."
|
|
elog
|
|
elog "Use script aliases according to the web server you use (apache, nginx, lighttpd, etc...)"
|
|
fi
|
|
|
|
# This must be done after all of the install phases
|
|
local i
|
|
for i in "${ED}"/etc/nut/*.sample ; do
|
|
mv "${i}" "${i/.sample/}" || die
|
|
done
|
|
|
|
local DOCS=( AUTHORS MAINTAINERS NEWS README TODO UPGRADING )
|
|
einstalldocs
|
|
|
|
if use doc; then
|
|
newdoc lib/README README.lib
|
|
dodoc docs/*.txt
|
|
docinto cables
|
|
dodoc docs/cables/*
|
|
fi
|
|
|
|
newinitd "${FILESDIR}"/nut-2.8.0-init.d-upsd upsd
|
|
newinitd "${FILESDIR}"/nut-2.2.2-init.d-upsdrv upsdrv
|
|
newinitd "${FILESDIR}"/nut-2.6.5-init.d-upsmon upsmon
|
|
newinitd "${FILESDIR}"/nut-2.6.5-init.d-upslog upslog
|
|
newinitd "${FILESDIR}"/nut.powerfail.initd nut.powerfail
|
|
|
|
newbashcomp "${S}"/scripts/misc/nut.bash_completion upsc
|
|
bashcomp_alias upsc upscmd upsd upsdrvctl upsmon upsrw
|
|
|
|
if use zeroconf; then
|
|
insinto /etc/avahi/services
|
|
doins scripts/avahi/nut.service
|
|
fi
|
|
|
|
mv "${ED}"/usr/lib/tmpfiles.d/nut-common.tmpfiles "${ED}"/usr/lib/tmpfiles.d/nut-common-tmpfiles.conf || die
|
|
|
|
# Fix double directory
|
|
sed -i -e 's:/nut/nut:/nut:g' "${ED}"/usr/lib/tmpfiles.d/nut-common-tmpfiles.conf || die
|
|
}
|
|
|
|
pkg_postinst() {
|
|
elog "Please note that NUT now runs under the 'nut' user."
|
|
elog "NUT is in the uucp group for access to RS-232 UPS."
|
|
elog "However if you use a USB UPS you may need to look at the udev or"
|
|
elog "hotplug rules that are installed, and alter them suitably."
|
|
elog
|
|
elog "You are strongly advised to read the UPGRADING file provided by upstream."
|
|
elog
|
|
elog "Please note that upsdrv is NOT automatically started by upsd anymore."
|
|
elog "If you have multiple UPS units, you can use their NUT names to"
|
|
elog "have a service per UPS:"
|
|
elog "ln -s /etc/init.d/upsdrv /etc/init.d/upsdrv.\$UPSNAME"
|
|
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 nut.powerfail to your shutdown runlevel:'
|
|
elog
|
|
elog 'rc-update add nut.powerfail shutdown'
|
|
elog
|
|
|
|
optfeature "all notify events generate a global message (wall) to all users, plus they are logged via the syslog" \
|
|
sys-apps/util-linux[logger,tty-helpers]
|
|
|
|
udev_reload
|
|
|
|
tmpfiles_process nut-common-tmpfiles.conf
|
|
}
|
|
|
|
pkg_postrm() {
|
|
udev_reload
|
|
}
|