diff mbox series

[bug#44258] Add Network UPS Tools

Message ID 87lffrmyvp.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
State New
Headers show
Series [bug#44258] Add Network UPS Tools | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job

Commit Message

Nicolò Balzarotti Oct. 27, 2020, 4:12 p.m. UTC
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ò

Comments

Marius Bakke Nov. 10, 2020, 7:55 p.m. UTC | #1
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?
diff mbox series

Patch

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