unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#44258] Add Network UPS Tools
@ 2020-10-27 16:12 Nicolò Balzarotti
  2020-11-10 19:55 ` Marius Bakke
  0 siblings, 1 reply; 3+ messages in thread
From: Nicolò Balzarotti @ 2020-10-27 16:12 UTC (permalink / raw)
  To: 44258

[-- Attachment #1: Type: text/plain, Size: 241 bytes --]


Hi guix!
This patch adds Network UPS Tools (nut).

I could test that binaries run, but could not connect to a real UPS (I
need to replace my UPSs as they are currently dead).

Let me know if any of you can try!

Thanks, Nicolò


[-- Attachment #2: 0001-gnu-Add-nut.patch --]
[-- Type: text/x-patch, Size: 4364 bytes --]

From 0e3a16eb19bc481d38edbe36c241ec4631cbdd33 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Tue, 27 Oct 2020 10:56:35 +0100
Subject: [PATCH] gnu: Add nut.

* gnu/packages/admin.scm (nut): New variable.
---
 gnu/packages/admin.scm | 64 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 8dcf8afd84..02dccd8021 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -35,6 +35,7 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -70,6 +71,7 @@
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autogen)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
@@ -85,6 +87,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freeipmi)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
@@ -110,6 +113,7 @@
   #:use-module (gnu packages mcrypt)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages patchutils)
   #:use-module (gnu packages pciutils)
@@ -880,6 +884,66 @@ IPv6, proxies, and Unix sockets.")
     (license (list license:bsd-3
                    license:bsd-2))))  ; atomicio.*, socks.c
 
+(define-public nut
+  (package
+    (name "nut")
+    (version "2.7.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri "https://networkupstools.org/source/2.7/nut-2.7.4.tar.gz")
+       (sha256
+        (base32
+         "19r5dm07sfz495ckcgbfy0pasx0zy3faa0q7bih69lsjij8q43lq"))
+       (patches
+        (list
+         ;; OpenSSL 1.1 support
+         (origin
+           (method url-fetch)
+           (uri (string-append "https://patch-diff.githubusercontent.com/raw/"
+                               "networkupstools/nut/pull/504.patch"))
+           (sha256
+            (base32 "1dabbzlmb886qy39xjx6nxlfrzfkm99n48la1ip32zm3baal6qph"))
+           (file-name (string-append name "-openssl1.1")))))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--with-all"
+                           "--with-openssl"
+                           ;; powerman is required (where is it hosted?)
+                           "--without-powerman"
+                           ;; cgi requires libgd
+                           "--without-cgi")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'update-configure
+           ;; required to apply the patch to the ./configure script
+           (lambda _
+             (invoke "autoconf"))))))
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("cppunit" ,cppunit)
+                     ("pkg-config" ,pkg-config)))
+    (inputs `(("avahi" ,avahi)
+              ("libusb" ,libusb-compat)
+              ("libltdl" ,libltdl)
+              ("freeipmi" ,freeipmi)
+              ("neon" ,neon)
+              ("openssl" ,openssl)
+              ("net-snmp" ,net-snmp)))
+    (home-page "https://networkupstools.org")
+    (license
+     (list
+      ;; - most files under gpl2+
+      license:gpl2+
+      ;; - scripts/python/ under gpl3+
+      license:gpl3+
+      ;; - scripts/perl/Nut.pm same as perl (either gpl1+ or artistic)
+      license:gpl1+ license:artistic2.0))
+    (synopsis "Collection of programs for monitoring and administering UPS")
+    (description "Network UPS Tools is a collection of programs which provide
+a common interface for monitoring and administering UPS, PDU and SCD hardware.
+It uses a layered approach to connect all of the parts.  Drivers are provided
+for a wide assortment of equipment.")))
+
 (define-public sipcalc
   (package
     (name "sipcalc")
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#44258] Add Network UPS Tools
  2020-10-27 16:12 [bug#44258] Add Network UPS Tools Nicolò Balzarotti
@ 2020-11-10 19:55 ` Marius Bakke
  2020-11-14 16:45   ` Nicolò Balzarotti
  0 siblings, 1 reply; 3+ messages in thread
From: Marius Bakke @ 2020-11-10 19:55 UTC (permalink / raw)
  To: Nicolò Balzarotti, 44258

[-- Attachment #1: Type: text/plain, Size: 3878 bytes --]

Nicolò Balzarotti <anothersms@gmail.com> writes:

> Hi guix!
> This patch adds Network UPS Tools (nut).

Cool!

[...]

>>From 0e3a16eb19bc481d38edbe36c241ec4631cbdd33 Mon Sep 17 00:00:00 2001
> From: nixo <nicolo@nixo.xyz>
> Date: Tue, 27 Oct 2020 10:56:35 +0100
> Subject: [PATCH] gnu: Add nut.
>
> * gnu/packages/admin.scm (nut): New variable.

[...]
  
> +(define-public nut
> +  (package
> +    (name "nut")
> +    (version "2.7.4")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri "https://networkupstools.org/source/2.7/nut-2.7.4.tar.gz")

Avoid hard-coding versions in URLs.  You can use the version-major+minor
procedure to create that "2.7" URL component.

> +       (patches
> +        (list
> +         ;; OpenSSL 1.1 support
> +         (origin
> +           (method url-fetch)
> +           (uri (string-append "https://patch-diff.githubusercontent.com/raw/"
> +                               "networkupstools/nut/pull/504.patch"))
> +           (sha256
> +            (base32 "1dabbzlmb886qy39xjx6nxlfrzfkm99n48la1ip32zm3baal6qph"))
> +           (file-name (string-append name "-openssl1.1")))))))

This got merged in 2017, and still not released!

Looking at the pull request[0], this URL is a squashed version of 7
commits.  While convenient, this trick has failed before due to subtle
changes in GitHub machinery, eventually leading to a hash mismatch[1].

Taking 7 patches directly is no fun either, so I wonder if we can just
stick with OpenSSL 1.0 for now?

[0] https://github.com/networkupstools/nut/pull/504
[1] commit 7670efefe4fb4aca12cb19ea5d89ff37c48e3ea6

> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:configure-flags '("--with-all"
> +                           "--with-openssl"
> +                           ;; powerman is required (where is it hosted?)
> +                           "--without-powerman"

Can you elaborate on powerman being required?  Is the package not usable
without it?

> +                           ;; cgi requires libgd
> +                           "--without-cgi")

We do have libgd (in the 'gd' package).

> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-before 'configure 'update-configure
> +           ;; required to apply the patch to the ./configure script
> +           (lambda _
> +             (invoke "autoconf"))))))

This may not be necessary due to the 'bootstrap' phase (but I haven't
verified).

> +    (native-inputs `(("autoconf" ,autoconf)
> +                     ("cppunit" ,cppunit)
> +                     ("pkg-config" ,pkg-config)))
> +    (inputs `(("avahi" ,avahi)
> +              ("libusb" ,libusb-compat)
> +              ("libltdl" ,libltdl)
> +              ("freeipmi" ,freeipmi)
> +              ("neon" ,neon)
> +              ("openssl" ,openssl)
> +              ("net-snmp" ,net-snmp)))

The indentation of these are a bit weird.  :-)

> +    (home-page "https://networkupstools.org")
> +    (license
> +     (list
> +      ;; - most files under gpl2+
> +      license:gpl2+
> +      ;; - scripts/python/ under gpl3+
> +      license:gpl3+
> +      ;; - scripts/perl/Nut.pm same as perl (either gpl1+ or artistic)
> +      license:gpl1+ license:artistic2.0))

Great job at listing licenses!

> +    (synopsis "Collection of programs for monitoring and administering UPS")
> +    (description "Network UPS Tools is a collection of programs which provide
> +a common interface for monitoring and administering UPS, PDU and SCD hardware.
> +It uses a layered approach to connect all of the parts.  Drivers are provided
> +for a wide assortment of equipment.")))

Maybe add @acronym{UPS, Uninterruptible Power Supply},
@acronym{PDU, ...} etc, but no strong opinion.

Can you send an updated patch?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 507 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [bug#44258] Add Network UPS Tools
  2020-11-10 19:55 ` Marius Bakke
@ 2020-11-14 16:45   ` Nicolò Balzarotti
  0 siblings, 0 replies; 3+ messages in thread
From: Nicolò Balzarotti @ 2020-11-14 16:45 UTC (permalink / raw)
  To: Marius Bakke, 44258

[-- Attachment #1: Type: text/plain, Size: 3899 bytes --]

Hi, thanks for the reply.

Marius Bakke <marius@gnu.org> writes:

>
> Avoid hard-coding versions in URLs.  You can use the version-major+minor
> procedure to create that "2.7" URL component.

Done!

> This got merged in 2017, and still not released!
>
> Looking at the pull request[0], this URL is a squashed version of 7
> commits.  While convenient, this trick has failed before due to subtle
> changes in GitHub machinery, eventually leading to a hash mismatch[1].
>
> Taking 7 patches directly is no fun either, so I wonder if we can just
> stick with OpenSSL 1.0 for now?
>
Fine! Using openssl-1.0 now.

>> +                           ;; powerman is required (where is it hosted?)
>> +                           "--without-powerman"
>
> Can you elaborate on powerman being required?  Is the package not usable
> without it?
>
Expanded a bit, following nut readme.

>> +                           ;; cgi requires libgd
>> +                           "--without-cgi")
>
> We do have libgd (in the 'gd' package).
>
Oh, I don't know how I missed it.  Added!  Now cgi is working (output is
in folder /cgi-bin, is this correct for guix?)

Since nut release is really old, it used to use gdlib-config.  It has 
been removed and replaced by pkg-config.  However, the patch [1] does
not apply.  So I had to do the "terrible" fix of calling pkg-config
myself (in the new "fix-ligdb-check" phase).  Terrible because I wanted
to call it in guile and save the output to the file, but the only way I
know of is with popen (and I could not find another package doing this
(while some package like python-libmpsse are just inserting the call
like I did here).

>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (add-before 'configure 'update-configure
>> +           ;; required to apply the patch to the ./configure script
>> +           (lambda _
>> +             (invoke "autoconf"))))))
>
> This may not be necessary due to the 'bootstrap' phase (but I haven't
> verified).
>
Well, now that I switched to openssl-1.0 it sure is not needed anymore.
But previously I remember without the autoreconf call, it was not working.

>> +    (native-inputs `(("autoconf" ,autoconf)n
>> +                     ("cppunit" ,cppunit)
>> +                     ("pkg-config" ,pkg-config)))
>> +    (inputs `(("avahi" ,avahi)
>> +              ("libusb" ,libusb-compat)
>> +              ("libltdl" ,libltdl)
>> +              ("freeipmi" ,freeipmi)
>> +              ("neon" ,neon)
>> +              ("openssl" ,openssl)
>> +              ("net-snmp" ,net-snmp)))
>
> The indentation of these are a bit weird.  :-)
>
ops :)

>> +    (home-page "https://networkupstools.org")
>> +    (license
>> +     (list
>> +      ;; - most files under gpl2+
>> +      license:gpl2+
>> +      ;; - scripts/python/ under gpl3+
>> +      license:gpl3+
>> +      ;; - scripts/perl/Nut.pm same as perl (either gpl1+ or artistic)
>> +      license:gpl1+ license:artistic2.0))
>
> Great job at listing licenses!
>
>> +    (synopsis "Collection of programs for monitoring and administering UPS")
>> +    (description "Network UPS Tools is a collection of programs which provide
>> +a common interface for monitoring and administering UPS, PDU and SCD hardware.
>> +It uses a layered approach to connect all of the parts.  Drivers are provided
>> +for a wide assortment of equipment.")))
>
> Maybe add @acronym{UPS, Uninterruptible Power Supply},
> @acronym{PDU, ...} etc, but no strong opinion.
>
Sure!

> Can you send an updated patch?

I also added the phase "fix-search-paths" which fixes nut-scanner.
nut scanner now finds my ups device (but I still could not get it to
work, not sure if the problem is in my config or in this package.  I'd
wait to merge this until someone can try.

Thanks again,
Nicolò


[-- Attachment #2: v2-0001-gnu-Add-nut.patch --]
[-- Type: text/x-patch, Size: 5331 bytes --]

From baf9ef419fb36a2198597894c72b23d8553b012a Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Tue, 27 Oct 2020 10:56:35 +0100
Subject: [PATCH v2] gnu: Add nut.

* gnu/packages/admin.scm (nut): New variable.
---
 gnu/packages/admin.scm | 87 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 8dcf8afd84..5f14c4b68a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -35,6 +35,7 @@
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -70,6 +71,7 @@
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autogen)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
@@ -85,8 +87,10 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freeipmi)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gd)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -110,6 +114,7 @@
   #:use-module (gnu packages mcrypt)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages patchutils)
   #:use-module (gnu packages pciutils)
@@ -880,6 +885,88 @@ IPv6, proxies, and Unix sockets.")
     (license (list license:bsd-3
                    license:bsd-2))))  ; atomicio.*, socks.c
 
+(define-public nut
+  (package
+    (name "nut")
+    (version "2.7.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://networkupstools.org/source/" (version-major+minor version)
+             "/nut-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19r5dm07sfz495ckcgbfy0pasx0zy3faa0q7bih69lsjij8q43lq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       `("--with-all"
+         "--with-openssl"
+         ;; nut supports a bridge to the powerman-daemon to handle
+         ;; powerman-supported devices.  For this bridge, powerman is
+         ;; required.
+         "--without-powerman"
+         ,(string-append "--with-udev-dir="
+                         (assoc-ref %outputs "out")
+                         "/lib/udev"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-libgd-check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "configure"
+               (("-L/usr/X11R6/lib")
+                ;; without --static, it won't find zlib and libjpeg
+                "$(pkg-config --static --libs gdlib)"))
+             #t))
+         (add-before 'build 'fix-search-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; nutscan will search libraries only under output/lib, and in
+             ;; some standard path (e.g., /usr/lib).  Add correct paths here
+             (substitute* "tools/nut-scanner/nutscan-init.c"
+               (("LIBDIR,")
+                (string-append
+                 "LIBDIR,\n"
+                 (string-join
+                  (map (lambda (label)
+                         (string-append "\"" (assoc-ref inputs label) "/lib/\""))
+                       '("avahi" "freeipmi" "libusb" "neon" "net-snmp"))
+                  ",\n")
+                 ",\n")))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("cppunit" ,cppunit)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("avahi" ,avahi)
+       ("libusb" ,libusb-compat)
+       ("libltdl" ,libltdl)
+       ;; libxpm and libx11 required when cgi is enabled
+       ("libxpm" ,libxpm)
+       ("libx11" ,libx11)
+       ("freeipmi" ,freeipmi)
+       ("gd" ,gd)
+       ("neon" ,neon)
+       ("openssl" ,openssl-1.0)
+       ("net-snmp" ,net-snmp)))
+    (home-page "https://networkupstools.org")
+    (license
+     (list
+      ;; - most files under gpl2+
+      license:gpl2+
+      ;; - scripts/python/ under gpl3+
+      license:gpl3+
+      ;; - scripts/perl/Nut.pm same as perl (either gpl1+ or artistic)
+      license:gpl1+ license:artistic2.0))
+    (synopsis "Collection of programs for monitoring and administering UPS")
+    (description "Network @acronym{UPS, Uninterruptible Power Supply} Tools is
+a collection of programs which provide a common interface for monitoring and
+administering @acronym{UPS} @acronym{PDU,Power Distribution Unit} and
+@acronym{SCD, Solar Controller Device} hardware.  It uses a layered approach
+to connect all of the parts.  Drivers are provided for a wide assortment of
+equipment.")))
+
 (define-public sipcalc
   (package
     (name "sipcalc")
-- 
2.29.2


[-- Attachment #3: Type: text/plain, Size: 103 bytes --]



[1] https://github.com/networkupstools/nut/pull/809/commits/cb507c44d26d8ae04a0cc3d1c24e79e3bf33ba23

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-14 16:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-27 16:12 [bug#44258] Add Network UPS Tools Nicolò Balzarotti
2020-11-10 19:55 ` Marius Bakke
2020-11-14 16:45   ` Nicolò Balzarotti

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).