Subject: bug#32114: closed (Re: [bug#32114] [PATCH] gnu: Add ddclient.)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 13 Jul 2018 15:02:03 +0000

Your bug report

#32114: [PATCH] gnu: Add ddclient.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
32114: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32114
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#32114] [PATCH] gnu: Add ddclient.
From: Oleg Pykhalov <[email-masked]>
To: Nils Gillmann <[email-masked]>, Leo Famulari <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Fri, 13 Jul 2018 18:01:16 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Nils, Leo, all.

Nils Gillmann <[email-masked]> writes:

> Leo Famulari transcribed 1.3K bytes:
>> On Tue, Jul 10, 2018 at 07:29:55PM +0300, Oleg Pykhalov wrote:
>> > * gnu/packages/dns.scm (ddclient): New variable.
>> 
>> Thanks! Overall it seems fine, but can you add a short code comment
>> about why it uses the trival-build-system instead of perl-build-system?
>
> I think I tried to work on this a while back. It simply has no Makefile
> for any build system.

I applied all your suggestions, thank you.

Also, while I wrote ddclient service [1] I did some improvements to
ddclient package.  Pushed as 0bc2d3e42b8800e875f24973f999739297f1f502
with following changes:
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index b17016909..ffa442f4d 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -592,7 +591,7 @@ synthesis, and on-the-fly re-configuration.")
               (sha256
                (base32
                 "1j8zdn7fy7i0bjk3jf0hxnbnshc2yf054vxq64imxdpfd7n5zgfy"))))
-    (build-system trivial-build-system)
+    (build-system trivial-build-system) ; no Makefile.PL
     (native-inputs
      `(("bash" ,bash)
        ("gzip" ,gzip)
@@ -600,6 +599,7 @@ synthesis, and on-the-fly re-configuration.")
        ("tar" ,tar)))
     (inputs
      `(("net-tools" ,net-tools)
+       ("inetutils" ,inetutils) ;logger
        ("perl-io-socket-ssl" ,perl-io-socket-ssl)
        ("perl-digest-sha1" ,perl-digest-sha1)))
     (arguments
@@ -625,7 +625,13 @@ synthesis, and on-the-fly re-configuration.")
                   (bin (string-append out "/bin")))
              (let ((file "ddclient"))
                (substitute* file
-                 (("/usr/bin/perl") (which "perl")))
+                 (("/usr/bin/perl") (which "perl"))
+                 ;; Strictly use ‘/etc/ddclient/ddclient.conf’.
+                 (("\\$\\{program\\}\\.conf") "/etc/ddclient/ddclient.conf")
+                 (("\\$etc\\$program.conf") "/etc/ddclient/ddclient.conf")
+                 ;; Strictly use ‘/var/cache/ddclient/ddclient.cache’
+                 (("\\$cachedir\\$program\\.cache")
+                  "/var/cache/ddclient/ddclient.cache"))
                (install-file file bin)
                (wrap-program (string-append bin "/" file)
                  `("PATH" ":" =
@@ -655,7 +661,7 @@ addresses with several dynamic DNS service providers, such as
 This makes it possible to use a fixed hostname (such as myhost.dyndns.org) to
 access a machine with a dynamic IP address.
 
-This client supports both dynamic and (near) static services, as well as MX
+The client supports both dynamic and (near) static services, as well as MX
 record and alternative name management.  It caches the address, and only
 attempts the update when it has changed.")
     (license license:gpl2+)))

[1]  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32141

Oleg.

Subject: [PATCH] gnu: Add ddclient.
From: Oleg Pykhalov <[email-masked]>
To: [email-masked]
Cc: Oleg Pykhalov <[email-masked]>
Date: Tue, 10 Jul 2018 19:29:55 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/dns.scm (ddclient): New variable.
---
 gnu/packages/dns.scm | 85 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 84 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 78479b2d3..b17016909 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2016 Marius Bakke <[email-masked]>
 ;;; Copyright © 2017 Vasile Dumitrascu <[email-masked]>
 ;;; Copyright © 2017 Gregor Giesen <[email-masked]>
+;;; Copyright © 2018 Oleg Pykhalov <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +30,9 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages flex)
@@ -55,7 +58,8 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial))
 
 (define-public dnsmasq
   (package
@@ -576,3 +580,82 @@ synthesis, and on-the-fly re-configuration.")
       license:lgpl2.0+              ; parts of scr/contrib/ucw
       license:public-domain         ; src/contrib/fnv and possibly murmurhash3
       license:gpl3+))))             ; everything else
+
+(define-public ddclient
+  (package
+    (name "ddclient")
+    (version "3.8.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/ddclient/ddclient/ddclient-"
+                                  version "/ddclient-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1j8zdn7fy7i0bjk3jf0hxnbnshc2yf054vxq64imxdpfd7n5zgfy"))))
+    (build-system trivial-build-system)
+    (native-inputs
+     `(("bash" ,bash)
+       ("gzip" ,gzip)
+       ("perl" ,perl)
+       ("tar" ,tar)))
+    (inputs
+     `(("net-tools" ,net-tools)
+       ("perl-io-socket-ssl" ,perl-io-socket-ssl)
+       ("perl-digest-sha1" ,perl-digest-sha1)))
+    (arguments
+     `(#:modules ((guix build utils)
+                  (ice-9 match)
+                  (srfi srfi-26))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 match)
+                      (srfi srfi-26))
+         ;; bootstrap
+         (setenv "PATH" (string-append
+                         (assoc-ref %build-inputs "bash") "/bin" ":"
+                         (assoc-ref %build-inputs "tar") "/bin" ":"
+                         (assoc-ref %build-inputs "gzip") "/bin" ":"
+                         (assoc-ref %build-inputs "perl") "/bin"))
+         ;; extract source
+         (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
+         ;; package
+         (with-directory-excursion (string-append ,name "-" ,version)
+           (let* ((out (assoc-ref %outputs "out"))
+                  (bin (string-append out "/bin")))
+             (let ((file "ddclient"))
+               (substitute* file
+                 (("/usr/bin/perl") (which "perl")))
+               (install-file file bin)
+               (wrap-program (string-append bin "/" file)
+                 `("PATH" ":" =
+                   ("$PATH"
+                    ,@(map (lambda (input)
+                             (match input
+                               ((name . store)
+                                (string-append store "/bin"))))
+                           %build-inputs)))
+                 `("PERL5LIB" ":" =
+                   ,(delete
+                     ""
+                     (map (match-lambda
+                            (((? (cut string-prefix? "perl-" <>) name) . dir)
+                             (string-append dir "/lib/perl5/site_perl"))
+                            (_ ""))
+                          %build-inputs)))))
+             (for-each (cut install-file <> (string-append out
+                                                           "/share/ddclient"))
+                       (find-files "." "sample.*$")))))))
+    (home-page "https://sourceforge.net/projects/ddclient/")
+    (synopsis "Address updating utility for dynamic DNS services")
+    (description "This package provides a client to update dynamic IP
+addresses with several dynamic DNS service providers, such as
+@uref{https://www.dyndns.com/account/login.html,DynDNS.com}.
+
+This makes it possible to use a fixed hostname (such as myhost.dyndns.org) to
+access a machine with a dynamic IP address.
+
+This client supports both dynamic and (near) static services, as well as MX
+record and alternative name management.  It caches the address, and only
+attempts the update when it has changed.")
+    (license license:gpl2+)))
-- 
2.18.0