# TODO:
# - upsdrvctl (used by ups.init) doesn't recognize status and reload commands
-# - test that hal-stuff
#
# Conditional build:
%bcond_without usb # build without usb drivers
-%bcond_without hal # build without hal support
%bcond_without snmp # build without snmp driver
%bcond_without cgi # build without cgi support
%bcond_without neon # build with neon based XML/HTTP driver
Summary: Network UPS Tools
Summary(pl.UTF-8): Sieciowe narzędzie do UPS-ów
Name: nut
-Version: 2.4.3
-Release: 4
+Version: 2.7.4
+Release: 2
License: GPL
Group: Applications/System
-Source0: http://www.networkupstools.org/source/2.4/%{name}-%{version}.tar.gz
-# Source0-md5: 6f893b61b07915e7a139324fa3f79121
+Source0: http://www.networkupstools.org/source/2.7/%{name}-%{version}.tar.gz
+# Source0-md5: 3ba53656933d7471f95140b32a5b8d5c
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}-upsmon.init
Patch1: %{name}-config.patch
Patch2: %{name}-smartdp-load.patch
Patch3: %{name}-upssched-cmd-sysconf.patch
-Patch4: %{name}-hal-paths.patch
-Patch5: %{name}-matrix.patch
-Patch6: %{name}-blazer-parser.patch
+Patch4: %{name}-matrix.patch
+Patch5: systemd-sysconfig.patch
+Patch6: bcmxcp-off-by-one.patch
+Patch7: %{name}-build.patch
URL: http://www.networkupstools.org/
BuildRequires: autoconf
BuildRequires: automake
-%{?with_hal:BuildRequires: dbus-glib-devel}
+BuildRequires: avahi-devel
+BuildRequires: freeipmi-devel
%{?with_cgi:BuildRequires: gd-devel >= 2.0.15}
-%{?with_hal:BuildRequires: hal-devel >= 0.5.8}
+BuildRequires: libltdl-devel
BuildRequires: libtool
%{?with_usb:BuildRequires: libusb-compat-devel}
BuildRequires: libwrap-devel
%{?with_snmp:BuildRequires: net-snmp-devel}
BuildRequires: openssl-devel >= 0.9.7d
BuildRequires: pkgconfig
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpmbuild(macros) >= 1.647
+Requires: systemd-units >= 38
Requires(post,preun): /sbin/chkconfig
Requires: %{name}-common = %{version}-%{release}
Requires: rc-scripts
+Obsoletes: nut-hal
Obsoletes: smartupstools
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Requires(post,preun): /sbin/chkconfig
Requires: %{name}-common = %{version}-%{release}
Requires: rc-scripts
+Requires: systemd-units >= 38
%description client
This package includes the client utilities that are required to
%description devel -l pl.UTF-8
Plik wynikowy oraz nagłówek służące do tworzenia klientów NUT-a.
-%package hal
-Summary: NUT integration with FreeDesktop HAL
-Summary(pl.UTF-8): Pliki do integracji NUT-a z HAL-em
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-
-%description hal
-NUT integration with FreeDesktop HAL.
-
-%description hal -l pl.UTF-8
-Pliki do integracji NUT-a z HAL-em.
-
%prep
%setup -q
%patch0 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
+%patch7 -p1
%build
cp -f /usr/share/automake/config.sub .
--with-serial \
--with%{!?with_usb:out}-usb \
--with%{!?with_snmp:out}-snmp \
- --with%{!?with_hal:out}-hal \
--with%{!?with_cgi:out}-cgi \
+ --with-avahi \
+ --with-ipmi \
--with-dev \
--with%{!?with_neon:out}-neon \
--with-ssl \
- --with-ipv6 \
+ --with-openssl \
%{?with_usb:--with-udev-dir=/etc/udev} \
- %{?with_hal:--with-hal-callouts-path=%{_libdir}/hal} \
- %{?with_hal:--with-hal-fdi-path=%{_datadir}/hal/fdi/information/20thirdparty} \
--with-statepath=%{_var}/lib/ups \
--with-drvpath=/lib/nut \
--with-cgipath=/home/services/httpd/cgi-bin \
+ --with-systemdsystemunitdir=%{systemdunitdir} \
--with-user=ups \
--with-group=ups
install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/upsmon
install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/upsmon
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/ups.service
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/upsmon.service
+
for i in $RPM_BUILD_ROOT%{_sysconfdir}/*.sample; do
mv -f $i ${i%.sample}
done
-%{!?with_usb:rm -f $RPM_BUILD_ROOT%{_udevrulesdir}/52-nut-usbups.rules}
+%{!?with_usb:rm -f $RPM_BUILD_ROOT%{_udevrulesdir}/62-nut-usbups.rules}
cat > $RPM_BUILD_ROOT/sbin/poweroff-ups << EOF
#!/bin/sh
-/etc/rc.d/init.d/ups powerdown
+echo "Switching the power off"
+/usr/sbin/upsdrvctl shutdown
+sleep 60
EOF
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/*.la
+
%clean
rm -rf $RPM_BUILD_ROOT
%post
+/sbin/ldconfig
/sbin/chkconfig --add ups
%service ups restart "NUT ups daemon"
+%systemd_post nut-driver.service nut-server.service
%preun
if [ "$1" = "0" ]; then
%service ups stop
/sbin/chkconfig --del ups
fi
+%systemd_preun nut-driver.service nut-server.service
+
+%postun
+/sbin/ldconfig
+%systemd_reload
+
+%triggerpostun -- nut < 2.6.4-2
+[ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm
+[ ${RPM_ENABLE_SYSTEMD_SERVICE:-yes} = no ] && exit 0
+[ "$(echo /etc/rc.d/rc[0-6].d/S[0-9][0-9]ups)" != "/etc/rc.d/rc[0-6].d/S[0-9][0-9]ups" ] || exit 0
+%systemd_service_enable nut-driver.service nut-server.service
%pre common
# move to trigger?
%post client
/sbin/chkconfig --add upsmon
%service upsmon restart "NUT upsmon daemon"
+%systemd_post nut-monitor.service
%preun client
if [ "$1" = "0" ]; then
%service upsmon stop
/sbin/chkconfig --del upsmon
fi
+%systemd_preun nut-monitor.service
+
+%postun client
+%systemd_reload
+
+%triggerpostun client -- nut-client < 2.6.4-2
+[ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm
+[ ${RPM_ENABLE_SYSTEMD_SERVICE:-yes} = no ] && exit 0
+/sbin/chkconfig --list upsmon 2>/dev/null | grep -qsv "[0-6]:on" && exit 0
+[ "$(echo /etc/rc.d/rc[0-6].d/S[0-9][0-9]upsmon)" != "/etc/rc.d/rc[0-6].d/S[0-9][0-9]upsmon" ] || exit 0
+%systemd_service_enable nut-monitor.service
%files
%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/nut-scanner
%attr(755,root,root) %{_bindir}/upscmd
%attr(755,root,root) %{_bindir}/upslog
%attr(755,root,root) %{_bindir}/upsrw
%attr(755,root,root) %{_sbindir}/upsd
+%attr(755,root,root) %{_sbindir}/upsdrvctl
%attr(755,root,root) /sbin/poweroff-ups
+%attr(755,root,root) %ghost %{_libdir}/libnutscan.so.1
+%attr(755,root,root) %{_libdir}/libnutscan.so.*.*.*
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/ups
%attr(754,root,root) /etc/rc.d/init.d/ups
%attr(640,root,ups) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/nut.conf
%attr(640,root,ups) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/upsd.conf
%attr(640,root,ups) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/ups.conf
%attr(640,root,ups) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/upsd.users
+%{systemdunitdir}/nut-driver.service
+%{systemdunitdir}/nut-server.service
+%{systemdunitdir}/ups.service
%{_mandir}/man5/ups.conf.5*
%{_mandir}/man5/upsd.conf.5*
%{_mandir}/man5/upsd.users.5*
+%{_mandir}/man8/nut-recorder.8*
+%{_mandir}/man8/nut-scanner.8*
%{_mandir}/man8/upscmd.8*
%{_mandir}/man8/upscode2.8*
%{_mandir}/man8/upsd.8*
%{_mandir}/man8/upsrw.8*
%dir %attr(770,root,ups) /var/lib/ups
%dir /lib/nut
+%attr(755,root,root) /lib/nut/al175
%attr(755,root,root) /lib/nut/apcsmart
+%attr(755,root,root) /lib/nut/apcsmart-old
+%attr(755,root,root) /lib/nut/apcupsd-ups
%attr(755,root,root) /lib/nut/bcmxcp
%{?with_usb:%attr(755,root,root) /lib/nut/bcmxcp_usb}
%attr(755,root,root) /lib/nut/belkin
%attr(755,root,root) /lib/nut/isbmex
%attr(755,root,root) /lib/nut/ivtscd
%attr(755,root,root) /lib/nut/liebert
-%attr(755,root,root) /lib/nut/liebertgxt2
+%attr(755,root,root) /lib/nut/liebert-esp2
%attr(755,root,root) /lib/nut/masterguard
-%attr(755,root,root) /lib/nut/megatec
-%{?with_usb:%attr(755,root,root) /lib/nut/megatec_usb}
%attr(755,root,root) /lib/nut/metasys
%attr(755,root,root) /lib/nut/mge-shut
%attr(755,root,root) /lib/nut/mge-utalk
%attr(755,root,root) /lib/nut/microdowell
%{?with_neon:%attr(755,root,root) /lib/nut/netxml-ups}
-%attr(755,root,root) /lib/nut/newmge-shut
+%{?with_usb:%attr(755,root,root) /lib/nut/nutdrv_atcl_usb}
+%attr(755,root,root) /lib/nut/nutdrv_qx
+%attr(755,root,root) /lib/nut/nut-ipmipsu
+%attr(755,root,root) /lib/nut/oldmge-shut
%attr(755,root,root) /lib/nut/oneac
%attr(755,root,root) /lib/nut/optiups
%attr(755,root,root) /lib/nut/powercom
%attr(755,root,root) /lib/nut/powerpanel
%attr(755,root,root) /lib/nut/rhino
%{?with_usb:%attr(755,root,root) /lib/nut/richcomm_usb}
+%attr(755,root,root) /lib/nut/riello_ser
+%{?with_usb:%attr(755,root,root) /lib/nut/riello_usb}
%attr(755,root,root) /lib/nut/safenet
%attr(755,root,root) /lib/nut/skel
%{?with_snmp:%attr(755,root,root) /lib/nut/snmp-ups}
%attr(755,root,root) /lib/nut/tripplitesu
%{?with_usb:%attr(755,root,root) /lib/nut/tripplite_usb}
%attr(755,root,root) /lib/nut/upscode2
-%attr(755,root,root) /lib/nut/upsdrvctl
%{?with_usb:%attr(755,root,root) /lib/nut/usbhid-ups}
%attr(755,root,root) /lib/nut/victronups
-%{_datadir}/nut
+%dir %{_datadir}/nut
+%{_datadir}/nut/cmdvartab
+%{_datadir}/nut/driver.list
%{_mandir}/man5/nut.conf.5*
+%{_mandir}/man8/al175.8*
%{_mandir}/man8/apcsmart.8*
+%{_mandir}/man8/apcsmart-old.8*
+%{_mandir}/man8/apcupsd-ups.8*
%{_mandir}/man8/bcmxcp.8*
%{?with_usb:%{_mandir}/man8/bcmxcp_usb.8*}
%{_mandir}/man8/belkin.8*
%{_mandir}/man8/bestfortress.8*
%{_mandir}/man8/bestuferrups.8*
%{_mandir}/man8/bestups.8*
-%{_mandir}/man8/blazer.8*
+%{_mandir}/man8/blazer_ser.8*
+%{?with_usb:%{_mandir}/man8/blazer_usb.8*}
%{_mandir}/man8/clone.8*
%{_mandir}/man8/dummy-ups.8*
%{_mandir}/man8/etapro.8*
%{_mandir}/man8/isbmex.8*
%{_mandir}/man8/ivtscd.8*
%{_mandir}/man8/liebert.8*
-%{_mandir}/man8/liebertgxt2.8*
+%{_mandir}/man8/liebert-esp2.8*
%{_mandir}/man8/masterguard.8*
-%{_mandir}/man8/megatec.8*
-%{?with_usb:%{_mandir}/man8/megatec_usb.8*}
%{_mandir}/man8/metasys.8*
%{_mandir}/man8/mge-shut.8*
%{_mandir}/man8/mge-utalk.8*
%{_mandir}/man8/microdowell.8*
%{?with_neon:%{_mandir}/man8/netxml-ups.8*}
+%{?with_usb:%{_mandir}/man8/nutdrv_atcl_usb.8*}
+%{_mandir}/man8/nutdrv_qx.8*
+%{_mandir}/man8/nut-ipmipsu.8*
%{_mandir}/man8/nutupsdrv.8*
%{_mandir}/man8/oneac.8*
%{_mandir}/man8/optiups.8*
%{_mandir}/man8/powerpanel.8*
%{_mandir}/man8/rhino.8*
%{?with_usb:%{_mandir}/man8/richcomm_usb.8*}
+%{_mandir}/man8/riello_ser.8*
+%{?with_usb:%{_mandir}/man8/riello_usb.8*}
%{_mandir}/man8/safenet.8*
%{?with_snmp:%{_mandir}/man8/snmp-ups.8*}
%{_mandir}/man8/solis.8*
%{?with_usb:%{_mandir}/man8/tripplite_usb.8*}
%{?with_usb:%{_mandir}/man8/usbhid-ups.8*}
%{_mandir}/man8/victronups.8*
-%{?with_usb:%config(noreplace) %verify(not md5 mtime size) %{_udevrulesdir}/52-nut-usbups.rules}
+%{?with_usb:%config(noreplace) %verify(not md5 mtime size) %{_udevrulesdir}/62-nut-usbups.rules}
+%config(noreplace) %verify(not md5 mtime size) %{_udevrulesdir}/52-nut-ipmipsu.rules
%files common
%defattr(644,root,root,755)
%doc AUTHORS MAINTAINERS NEWS README UPGRADING ChangeLog docs
%dir %{_sysconfdir}
-%attr(755,root,root) %ghost %{_libdir}/libupsclient.so.1
+%attr(755,root,root) %ghost %{_libdir}/libnutclient.so.0
+%attr(755,root,root) %{_libdir}/libnutclient.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libupsclient.so.4
%attr(755,root,root) %{_libdir}/libupsclient.so.*.*.*
%files client
%attr(640,root,ups) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/upssched.conf
%attr(750,root,ups) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/upssched-cmd
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/upsmon
+/lib/systemd/system-shutdown/nutshutdown
+%{systemdunitdir}/nut-monitor.service
+%{systemdunitdir}/upsmon.service
%{_mandir}/man5/upsmon.conf.5*
%{_mandir}/man5/upssched.conf.5*
%{_mandir}/man8/upsc.8*
%{_mandir}/man8/upsstats.cgi.8*
%endif
-%if %{with hal}
-%files hal
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/hal/hald-addon-bcmxcp_usb
-%attr(755,root,root) %{_libdir}/hal/hald-addon-megatec_usb
-%attr(755,root,root) %{_libdir}/hal/hald-addon-tripplite_usb
-%attr(755,root,root) %{_libdir}/hal/hald-addon-usbhid-ups
-%{_datadir}/hal/fdi/information/20thirdparty/20-ups-nut-device.fdi
-%endif
-
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libupsclient.la
+%attr(755,root,root) %{_libdir}/libnutclient.so
%attr(755,root,root) %{_libdir}/libupsclient.so
-%{_pkgconfigdir}/*
+%attr(755,root,root) %{_libdir}/libnutscan.so
+%{_pkgconfigdir}/libnutclient.pc
+%{_pkgconfigdir}/libnutscan.pc
+%{_pkgconfigdir}/libupsclient.pc
%{_includedir}/*.h
%{_mandir}/man3/*.3*