nut: Update to version 2.8.0

Message ID 20220505163953.2381526-1-adolf.belka@ipfire.org
State Accepted
Commit b2f707cb025bccf4417b0848e1140fc610e76fd6
Headers
Series nut: Update to version 2.8.0 |

Commit Message

Adolf Belka May 5, 2022, 4:39 p.m. UTC
  - Update from version 2.7.4 to 2.8.0
- 2.7.4 was released in 2016 and since then not a lot of progress was made with it but
   since the start of 2022 new work on nut has ocurred culminating in this release
- Update of rootfile
- Ran find-dependencies on the old libraries due to the sobump to confirm that nothing
   else than nut used them, which was the case.
- Changelog
	After a long and windy trip since the last official release v2.7.4 half a dozen
         years ago, we the community, contributors and maintainers are proud to announce
         at last the general availability of NUT v2.8.0!
	As always, the new release includes numerous new drivers, sub-drivers, protocols
         and bug-fixes, with many companies and individuals chipping in with contributions
         of code.Thanks to everyone involved in making this happen, inspiring the changes,
         and providing the open-source friendly infrastructure.
	This release also culminates a significant effort in improvements of NUT QA and
         CI, and as a result -- in codebase quality and portability across a decade or
         two of recent platforms, third-party tools and other dependencies. As a side
         effect, public API (in headers and libraries) has changed a bit, hence a new
         semantic "minor" number is claimed for this major body of work.
	During this time, the https://networkupstools.org/ web site has changed to a
         rolling-release model to serve current information to match the evolving
         codebase. There are now special Sub-sites for historic releases to keep
         documentation snapshots relevant for users of packages which are typically based
         on official NUT releases.
	We recognize that NUT is an important piece of infrastructure which gets built
         into all sorts of devices, projects and operating systems -- some of which the
         team never heard of until they pop up in a question, and others we haven't heard
         of for years -- so we take a seriously omnivorous stance towards covering many
         versions and implementations of compiler suites, C/C++ revisions, make programs,
         shell and other scripted language interpreters, OSes and CPUs, and other similar
         variables tamed with our new NUT CI farm test matrix dynamically driven by
         currently registered build agents and their declared capabilities.
	Sections in the NEWS and UPGRADING files about changes since last release are
         several pages long, so would not all be repeated here. A few important
         highlights for distribution packagers and custom builders follow, however:
	    NUT now supports more i2c and modbus devices, as well as libusb-1.0 support
             as an alternative to earlier libusb-0.1 (so new dependency-based categories
             of packages for drivers may be due);
	    NUT Python modules and scripts (e.g. NUT-Monitor variants) should work with
             python-2.7 and with python-3.x, so covering historic distro releases as
             well as new ones (and so your distro can deliver one or both, probably in
             several packages with different dependencies in the latter case);
	    NUT provides revised reference systemd and SMF service unit definitions,
             including support of drivers wrapped into individual service instances with
             varying dependencies based on different media required (networked stack, USB
             stack, etc.), and many daemons include -F option for running "in foreground"
             to avoid extra forking after one already done by a service framework - you
             may want to use those in your packaged deliverables;
	    NUT newly provides the "nut-driver-enumerator" script and service, which
             allows it to follow edition of ups.conf and dynamically define+(re)start and
             stop+undefine service instances for drivers - there are several ways it can
             be integrated for different use-cases;
	    There are several new configuration keywords and CLI options - so while new
             NUT builds should work with old configs and scripts, the opposite is not
             necessarily true (old binaries may reject configurations taking advantage
             of new features);
	    There are several new protocol keywords - but old and new NUT daemons (data
             server and clients) should be able to communicate both ways;
	    It is assumed that API/ABI changes may require third-party NUT clients
             (library consumers of libnutclient, libupsclient, libnutscan... -- their
             version info was bumped accordingly) to get rebuilt, in order to work with
             the new NUT release in a stable fashion;
	    The dummy-ups driver used in automated testing now processes *.dev filename
             patterns once and does not loop, like it still does for *.seq and other
             files (by default);
	    USB code is now more strict about logical minimum/maximum ranges for data
             reported from devices, and some devices were already found to make mistakes
             - so there is also a mechanism for turning a blind eye to known issues and
             fix-up such report descriptors to produce intended sane values;
	    New documentation page docs/config-prereqs.txt highlights packaged
             dependencies installable on a large range of platforms to build as much of
             NUT as possible (incidentally, ones NUT CI farm uses to test every iteration);
	    Finally, we hope that NUT codebase might be able to cater for everyone "out
             of the box" (it also simplifies local builds from GitHub sources on any
             systems, for troubleshooting and checking pre-release enhancements): if you
             as a packager have to apply patches for your distribution, give it a thought
             -- whether they address a common issue best solved upstream once and behave
             similarly for everyone (and conversely, if your platform can do with
             existing solutions already tracked in the NUT version du-jour). PRs welcome!
             Or at least Wiki entries to list all the distro efforts for cross-pollination

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
---
 config/rootfiles/packages/nut | 36 +++++++++++++++++++++--------------
 lfs/nut                       | 18 ++++++++++++------
 2 files changed, 34 insertions(+), 20 deletions(-)
  

Comments

Peter Müller May 5, 2022, 4:43 p.m. UTC | #1
Excellent - this means we can finally get rid of libusb-compat. Yay. :-)

Reviewed-by: Peter Müller <peter.mueller@ipfire.org>

> - Update from version 2.7.4 to 2.8.0
> - 2.7.4 was released in 2016 and since then not a lot of progress was made with it but
>    since the start of 2022 new work on nut has ocurred culminating in this release
> - Update of rootfile
> - Ran find-dependencies on the old libraries due to the sobump to confirm that nothing
>    else than nut used them, which was the case.
> - Changelog
> 	After a long and windy trip since the last official release v2.7.4 half a dozen
>          years ago, we the community, contributors and maintainers are proud to announce
>          at last the general availability of NUT v2.8.0!
> 	As always, the new release includes numerous new drivers, sub-drivers, protocols
>          and bug-fixes, with many companies and individuals chipping in with contributions
>          of code.Thanks to everyone involved in making this happen, inspiring the changes,
>          and providing the open-source friendly infrastructure.
> 	This release also culminates a significant effort in improvements of NUT QA and
>          CI, and as a result -- in codebase quality and portability across a decade or
>          two of recent platforms, third-party tools and other dependencies. As a side
>          effect, public API (in headers and libraries) has changed a bit, hence a new
>          semantic "minor" number is claimed for this major body of work.
> 	During this time, the https://networkupstools.org/ web site has changed to a
>          rolling-release model to serve current information to match the evolving
>          codebase. There are now special Sub-sites for historic releases to keep
>          documentation snapshots relevant for users of packages which are typically based
>          on official NUT releases.
> 	We recognize that NUT is an important piece of infrastructure which gets built
>          into all sorts of devices, projects and operating systems -- some of which the
>          team never heard of until they pop up in a question, and others we haven't heard
>          of for years -- so we take a seriously omnivorous stance towards covering many
>          versions and implementations of compiler suites, C/C++ revisions, make programs,
>          shell and other scripted language interpreters, OSes and CPUs, and other similar
>          variables tamed with our new NUT CI farm test matrix dynamically driven by
>          currently registered build agents and their declared capabilities.
> 	Sections in the NEWS and UPGRADING files about changes since last release are
>          several pages long, so would not all be repeated here. A few important
>          highlights for distribution packagers and custom builders follow, however:
> 	    NUT now supports more i2c and modbus devices, as well as libusb-1.0 support
>              as an alternative to earlier libusb-0.1 (so new dependency-based categories
>              of packages for drivers may be due);
> 	    NUT Python modules and scripts (e.g. NUT-Monitor variants) should work with
>              python-2.7 and with python-3.x, so covering historic distro releases as
>              well as new ones (and so your distro can deliver one or both, probably in
>              several packages with different dependencies in the latter case);
> 	    NUT provides revised reference systemd and SMF service unit definitions,
>              including support of drivers wrapped into individual service instances with
>              varying dependencies based on different media required (networked stack, USB
>              stack, etc.), and many daemons include -F option for running "in foreground"
>              to avoid extra forking after one already done by a service framework - you
>              may want to use those in your packaged deliverables;
> 	    NUT newly provides the "nut-driver-enumerator" script and service, which
>              allows it to follow edition of ups.conf and dynamically define+(re)start and
>              stop+undefine service instances for drivers - there are several ways it can
>              be integrated for different use-cases;
> 	    There are several new configuration keywords and CLI options - so while new
>              NUT builds should work with old configs and scripts, the opposite is not
>              necessarily true (old binaries may reject configurations taking advantage
>              of new features);
> 	    There are several new protocol keywords - but old and new NUT daemons (data
>              server and clients) should be able to communicate both ways;
> 	    It is assumed that API/ABI changes may require third-party NUT clients
>              (library consumers of libnutclient, libupsclient, libnutscan... -- their
>              version info was bumped accordingly) to get rebuilt, in order to work with
>              the new NUT release in a stable fashion;
> 	    The dummy-ups driver used in automated testing now processes *.dev filename
>              patterns once and does not loop, like it still does for *.seq and other
>              files (by default);
> 	    USB code is now more strict about logical minimum/maximum ranges for data
>              reported from devices, and some devices were already found to make mistakes
>              - so there is also a mechanism for turning a blind eye to known issues and
>              fix-up such report descriptors to produce intended sane values;
> 	    New documentation page docs/config-prereqs.txt highlights packaged
>              dependencies installable on a large range of platforms to build as much of
>              NUT as possible (incidentally, ones NUT CI farm uses to test every iteration);
> 	    Finally, we hope that NUT codebase might be able to cater for everyone "out
>              of the box" (it also simplifies local builds from GitHub sources on any
>              systems, for troubleshooting and checking pre-release enhancements): if you
>              as a packager have to apply patches for your distribution, give it a thought
>              -- whether they address a common issue best solved upstream once and behave
>              similarly for everyone (and conversely, if your platform can do with
>              existing solutions already tracked in the NUT version du-jour). PRs welcome!
>              Or at least Wiki entries to list all the distro efforts for cross-pollination
> 
> Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
> ---
>  config/rootfiles/packages/nut | 36 +++++++++++++++++++++--------------
>  lfs/nut                       | 18 ++++++++++++------
>  2 files changed, 34 insertions(+), 20 deletions(-)
> 
> diff --git a/config/rootfiles/packages/nut b/config/rootfiles/packages/nut
> index b01381d74..3bf9d03a9 100644
> --- a/config/rootfiles/packages/nut
> +++ b/config/rootfiles/packages/nut
> @@ -5,6 +5,7 @@ etc/nut/upsd.conf.sample
>  etc/nut/upsd.users.sample
>  etc/nut/upsmon.conf.sample
>  etc/nut/upssched.conf.sample
> +etc/rc.d/init.d/nut
>  etc/udev/rules.d/62-nut-usbups.rules
>  usr/bin/al175
>  usr/bin/apcsmart
> @@ -36,10 +37,11 @@ usr/bin/metasys
>  usr/bin/mge-shut
>  usr/bin/mge-utalk
>  usr/bin/microdowell
> +usr/bin/microsol-apc
>  usr/bin/nut-scanner
>  usr/bin/nutdrv_atcl_usb
>  usr/bin/nutdrv_qx
> -usr/bin/oldmge-shut
> +usr/bin/nutdrv_siemens-sitop
>  usr/bin/oneac
>  usr/bin/optiups
>  usr/bin/powercom
> @@ -63,21 +65,22 @@ usr/bin/upsrw
>  usr/bin/upssched-cmd
>  usr/bin/usbhid-ups
>  usr/bin/victronups
> -#usr/lib/libnutclient.a
>  #usr/lib/libnutclient.la
> -usr/lib/libnutclient.so
> -usr/lib/libnutclient.so.0
> -usr/lib/libnutclient.so.0.0.0
> -#usr/lib/libnutscan.a
> +#usr/lib/libnutclient.so
> +usr/lib/libnutclient.so.2
> +usr/lib/libnutclient.so.2.0.0
> +#usr/lib/libnutclientstub.la
> +#usr/lib/libnutclientstub.so
> +usr/lib/libnutclientstub.so.1
> +usr/lib/libnutclientstub.so.1.0.0
>  #usr/lib/libnutscan.la
> -usr/lib/libnutscan.so
> -usr/lib/libnutscan.so.1
> -usr/lib/libnutscan.so.1.0.0
> -#usr/lib/libupsclient.a
> +#usr/lib/libnutscan.so
> +usr/lib/libnutscan.so.2
> +usr/lib/libnutscan.so.2.0.0
>  #usr/lib/libupsclient.la
> -usr/lib/libupsclient.so
> -usr/lib/libupsclient.so.4
> -usr/lib/libupsclient.so.4.0.0
> +#usr/lib/libupsclient.so
> +usr/lib/libupsclient.so.6
> +usr/lib/libupsclient.so.6.0.0
>  usr/sbin/upsd
>  usr/sbin/upsdrvctl
>  usr/sbin/upsmon
> @@ -119,10 +122,13 @@ usr/share/driver.list
>  #usr/share/man/man8/mge-shut.8
>  #usr/share/man/man8/mge-utalk.8
>  #usr/share/man/man8/microdowell.8
> +#usr/share/man/man8/microsol-apc.8
> +#usr/share/man/man8/nut-driver-enumerator.8
>  #usr/share/man/man8/nut-recorder.8
>  #usr/share/man/man8/nut-scanner.8
>  #usr/share/man/man8/nutdrv_atcl_usb.8
>  #usr/share/man/man8/nutdrv_qx.8
> +#usr/share/man/man8/nutdrv_siemens_sitop.8
>  #usr/share/man/man8/nutupsdrv.8
>  #usr/share/man/man8/oneac.8
>  #usr/share/man/man8/optiups.8
> @@ -143,12 +149,14 @@ usr/share/driver.list
>  #usr/share/man/man8/upscode2.8
>  #usr/share/man/man8/upsd.8
>  #usr/share/man/man8/upsdrvctl.8
> +#usr/share/man/man8/upsdrvsvcctl.8
>  #usr/share/man/man8/upslog.8
>  #usr/share/man/man8/upsmon.8
>  #usr/share/man/man8/upsrw.8
>  #usr/share/man/man8/upssched.8
>  #usr/share/man/man8/usbhid-ups.8
>  #usr/share/man/man8/victronups.8
> +#usr/share/solaris-init
> +#usr/share/solaris-init/nut
>  var/ipfire/backup/addons/includes/nut
>  var/state/ups
> -etc/rc.d/init.d/nut
> diff --git a/lfs/nut b/lfs/nut
> index cd0af7ec5..619918b5b 100644
> --- a/lfs/nut
> +++ b/lfs/nut
> @@ -26,7 +26,7 @@ include Config
>  
>  SUMMARY    = Network UPS Tools Core (Uninterruptible Power Supply Monitoring)
>  
> -VER        = 2.7.4
> +VER        = 2.8.0
>  
>  THISAPP    = nut-$(VER)
>  DL_FILE    = $(THISAPP).tar.gz
> @@ -34,7 +34,7 @@ DL_FROM    = $(URL_IPFIRE)
>  DIR_APP    = $(DIR_SRC)/$(THISAPP)
>  TARGET     = $(DIR_INFO)/$(THISAPP)
>  PROG       = nut
> -PAK_VER    = 7
> +PAK_VER    = 8
>  
>  DEPS       =
>  
> @@ -50,7 +50,7 @@ objects = $(DL_FILE)
>  
>  $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>  
> -$(DL_FILE)_BLAKE2 = 367c687efd739150898a14c700d5fddbe22bf926522923e1842011ec49b67d6638620500c4eda50291feb474cc6eef39fff63764cb3e0fad5898abee981f8308
> +$(DL_FILE)_BLAKE2 = 6ad87e9c90920d45846d9c1311e8feeb3c36bfa506d62d938940c00d2fc7f7b30632d079a8ee969db624824ae4fd3e14e41e8acd1eda296e26a3aa340f186b94
>  
>  install : $(TARGET)
>  
> @@ -84,9 +84,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
>  	@$(PREBUILD)
>  	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
>  	$(UPDATE_AUTOMAKE)
> -	cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc/nut \
> -			--with-usb --with-user=root --with-group=nut \
> -			--with-wrap=no --with-udev-dir=/etc/udev
> +	cd $(DIR_APP) && ./configure \
> +	                    --prefix=/usr \
> +	                    --sysconfdir=/etc/nut \
> +			            --with-usb \
> +			            --with-user=root \
> +			            --with-group=nut \
> +			            --with-wrap=no \
> +			            --with-udev-dir=/etc/udev \
> +			            --disable-static
>  	cd $(DIR_APP) && make #$(MAKETUNING)
>  	cd $(DIR_APP) && make install
>  #	sed -i -e "s|ATTR{|SYSFS{|g" /etc/udev/rules.d/52-nut-usbups.rules
  

Patch

diff --git a/config/rootfiles/packages/nut b/config/rootfiles/packages/nut
index b01381d74..3bf9d03a9 100644
--- a/config/rootfiles/packages/nut
+++ b/config/rootfiles/packages/nut
@@ -5,6 +5,7 @@  etc/nut/upsd.conf.sample
 etc/nut/upsd.users.sample
 etc/nut/upsmon.conf.sample
 etc/nut/upssched.conf.sample
+etc/rc.d/init.d/nut
 etc/udev/rules.d/62-nut-usbups.rules
 usr/bin/al175
 usr/bin/apcsmart
@@ -36,10 +37,11 @@  usr/bin/metasys
 usr/bin/mge-shut
 usr/bin/mge-utalk
 usr/bin/microdowell
+usr/bin/microsol-apc
 usr/bin/nut-scanner
 usr/bin/nutdrv_atcl_usb
 usr/bin/nutdrv_qx
-usr/bin/oldmge-shut
+usr/bin/nutdrv_siemens-sitop
 usr/bin/oneac
 usr/bin/optiups
 usr/bin/powercom
@@ -63,21 +65,22 @@  usr/bin/upsrw
 usr/bin/upssched-cmd
 usr/bin/usbhid-ups
 usr/bin/victronups
-#usr/lib/libnutclient.a
 #usr/lib/libnutclient.la
-usr/lib/libnutclient.so
-usr/lib/libnutclient.so.0
-usr/lib/libnutclient.so.0.0.0
-#usr/lib/libnutscan.a
+#usr/lib/libnutclient.so
+usr/lib/libnutclient.so.2
+usr/lib/libnutclient.so.2.0.0
+#usr/lib/libnutclientstub.la
+#usr/lib/libnutclientstub.so
+usr/lib/libnutclientstub.so.1
+usr/lib/libnutclientstub.so.1.0.0
 #usr/lib/libnutscan.la
-usr/lib/libnutscan.so
-usr/lib/libnutscan.so.1
-usr/lib/libnutscan.so.1.0.0
-#usr/lib/libupsclient.a
+#usr/lib/libnutscan.so
+usr/lib/libnutscan.so.2
+usr/lib/libnutscan.so.2.0.0
 #usr/lib/libupsclient.la
-usr/lib/libupsclient.so
-usr/lib/libupsclient.so.4
-usr/lib/libupsclient.so.4.0.0
+#usr/lib/libupsclient.so
+usr/lib/libupsclient.so.6
+usr/lib/libupsclient.so.6.0.0
 usr/sbin/upsd
 usr/sbin/upsdrvctl
 usr/sbin/upsmon
@@ -119,10 +122,13 @@  usr/share/driver.list
 #usr/share/man/man8/mge-shut.8
 #usr/share/man/man8/mge-utalk.8
 #usr/share/man/man8/microdowell.8
+#usr/share/man/man8/microsol-apc.8
+#usr/share/man/man8/nut-driver-enumerator.8
 #usr/share/man/man8/nut-recorder.8
 #usr/share/man/man8/nut-scanner.8
 #usr/share/man/man8/nutdrv_atcl_usb.8
 #usr/share/man/man8/nutdrv_qx.8
+#usr/share/man/man8/nutdrv_siemens_sitop.8
 #usr/share/man/man8/nutupsdrv.8
 #usr/share/man/man8/oneac.8
 #usr/share/man/man8/optiups.8
@@ -143,12 +149,14 @@  usr/share/driver.list
 #usr/share/man/man8/upscode2.8
 #usr/share/man/man8/upsd.8
 #usr/share/man/man8/upsdrvctl.8
+#usr/share/man/man8/upsdrvsvcctl.8
 #usr/share/man/man8/upslog.8
 #usr/share/man/man8/upsmon.8
 #usr/share/man/man8/upsrw.8
 #usr/share/man/man8/upssched.8
 #usr/share/man/man8/usbhid-ups.8
 #usr/share/man/man8/victronups.8
+#usr/share/solaris-init
+#usr/share/solaris-init/nut
 var/ipfire/backup/addons/includes/nut
 var/state/ups
-etc/rc.d/init.d/nut
diff --git a/lfs/nut b/lfs/nut
index cd0af7ec5..619918b5b 100644
--- a/lfs/nut
+++ b/lfs/nut
@@ -26,7 +26,7 @@  include Config
 
 SUMMARY    = Network UPS Tools Core (Uninterruptible Power Supply Monitoring)
 
-VER        = 2.7.4
+VER        = 2.8.0
 
 THISAPP    = nut-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -34,7 +34,7 @@  DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = nut
-PAK_VER    = 7
+PAK_VER    = 8
 
 DEPS       =
 
@@ -50,7 +50,7 @@  objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 367c687efd739150898a14c700d5fddbe22bf926522923e1842011ec49b67d6638620500c4eda50291feb474cc6eef39fff63764cb3e0fad5898abee981f8308
+$(DL_FILE)_BLAKE2 = 6ad87e9c90920d45846d9c1311e8feeb3c36bfa506d62d938940c00d2fc7f7b30632d079a8ee969db624824ae4fd3e14e41e8acd1eda296e26a3aa340f186b94
 
 install : $(TARGET)
 
@@ -84,9 +84,15 @@  $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
 	$(UPDATE_AUTOMAKE)
-	cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc/nut \
-			--with-usb --with-user=root --with-group=nut \
-			--with-wrap=no --with-udev-dir=/etc/udev
+	cd $(DIR_APP) && ./configure \
+	                    --prefix=/usr \
+	                    --sysconfdir=/etc/nut \
+			            --with-usb \
+			            --with-user=root \
+			            --with-group=nut \
+			            --with-wrap=no \
+			            --with-udev-dir=/etc/udev \
+			            --disable-static
 	cd $(DIR_APP) && make #$(MAKETUNING)
 	cd $(DIR_APP) && make install
 #	sed -i -e "s|ATTR{|SYSFS{|g" /etc/udev/rules.d/52-nut-usbups.rules