unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#32114] [PATCH] gnu: Add ddclient.
@ 2018-07-10 16:29 Oleg Pykhalov
  2018-07-11  6:27 ` Nils Gillmann
  2018-07-11 19:09 ` Leo Famulari
  0 siblings, 2 replies; 5+ messages in thread
From: Oleg Pykhalov @ 2018-07-10 16:29 UTC (permalink / raw)
  To: 32114

* 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 <mbakke@fastmail.com>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
+;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; 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

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

* [bug#32114] [PATCH] gnu: Add ddclient.
  2018-07-10 16:29 [bug#32114] [PATCH] gnu: Add ddclient Oleg Pykhalov
@ 2018-07-11  6:27 ` Nils Gillmann
  2018-07-11 19:09 ` Leo Famulari
  1 sibling, 0 replies; 5+ messages in thread
From: Nils Gillmann @ 2018-07-11  6:27 UTC (permalink / raw)
  To: Oleg Pykhalov; +Cc: 32114

Oleg Pykhalov transcribed 4.8K bytes:
> * 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 <mbakke@fastmail.com>
>  ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
>  ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
>  ;;;
>  ;;; 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

Looks good to me. maybe replace the "This" repetition in the description?

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

* [bug#32114] [PATCH] gnu: Add ddclient.
  2018-07-10 16:29 [bug#32114] [PATCH] gnu: Add ddclient Oleg Pykhalov
  2018-07-11  6:27 ` Nils Gillmann
@ 2018-07-11 19:09 ` Leo Famulari
  2018-07-12  5:13   ` Nils Gillmann
  1 sibling, 1 reply; 5+ messages in thread
From: Leo Famulari @ 2018-07-11 19:09 UTC (permalink / raw)
  To: Oleg Pykhalov; +Cc: 32114

[-- Attachment #1: Type: text/plain, Size: 255 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?

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

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

* [bug#32114] [PATCH] gnu: Add ddclient.
  2018-07-11 19:09 ` Leo Famulari
@ 2018-07-12  5:13   ` Nils Gillmann
  2018-07-13 15:01     ` bug#32114: " Oleg Pykhalov
  0 siblings, 1 reply; 5+ messages in thread
From: Nils Gillmann @ 2018-07-12  5:13 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 32114

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.

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

* bug#32114: [PATCH] gnu: Add ddclient.
  2018-07-12  5:13   ` Nils Gillmann
@ 2018-07-13 15:01     ` Oleg Pykhalov
  0 siblings, 0 replies; 5+ messages in thread
From: Oleg Pykhalov @ 2018-07-13 15:01 UTC (permalink / raw)
  To: Nils Gillmann, Leo Famulari; +Cc: 32114, 32114-done


[-- Attachment #1.1: Type: text/plain, Size: 693 bytes --]

Hello Nils, Leo, all.

Nils Gillmann <ng0@n0.is> 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:

[-- Attachment #1.2: Applied suggestions to ddclient. --]
[-- Type: text/x-patch, Size: 2187 bytes --]

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+)))

[-- Attachment #1.3: Type: text/plain, Size: 65 bytes --]


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

Oleg.

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

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

end of thread, other threads:[~2018-07-13 15:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-10 16:29 [bug#32114] [PATCH] gnu: Add ddclient Oleg Pykhalov
2018-07-11  6:27 ` Nils Gillmann
2018-07-11 19:09 ` Leo Famulari
2018-07-12  5:13   ` Nils Gillmann
2018-07-13 15:01     ` bug#32114: " Oleg Pykhalov

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).