summary refs log tree commit diff
path: root/gnu/packages/dns.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-12-03 20:00:00 +0100
committerLudovic Courtès <ludo@gnu.org>2018-12-03 21:57:49 +0100
commit91a4863d9d727754d1743f4c0591c63b950494cf (patch)
treeea6a69baa69cbd0218ee8c974f71cac8a23042ef /gnu/packages/dns.scm
parente08da7e23171a7000ccdc32b42d4dbaf2649f407 (diff)
downloadguix-91a4863d9d727754d1743f4c0591c63b950494cf.tar.gz
gnu: Add hnsd.
Thank you, Handshake!

* gnu/packages/dns.scm (hnsd): New variable.
Diffstat (limited to 'gnu/packages/dns.scm')
-rw-r--r--gnu/packages/dns.scm54
1 files changed, 54 insertions, 0 deletions
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 55147f829e..c7b630364d 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -58,6 +58,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial))
@@ -727,3 +728,56 @@ 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+)))
+
+(define-public hnsd
+  ;; There have been no releases yet, hence this commit.
+  (let ((revision "0")
+        (commit "895d89c25d316d18df9d374fe78aae3902bc89fb"))
+   (package
+     (name "hnsd")
+     (version (git-version "0.0" revision commit))
+     (source (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "https://github.com/handshake-org/hnsd")
+                     (commit commit)))
+               (sha256
+                (base32
+                 "0704y73sddn24jga9csw4gxyfb3pnrfnk0vdcph84n1h38490l16"))
+               (file-name (git-file-name name version))
+               (modules '((guix build utils)))
+               (snippet
+                '(begin
+                   ;; Delete the bundled copy of libuv.
+                   (delete-file-recursively "uv")
+                   (substitute* "configure.ac"
+                     (("AC_CONFIG_SUBDIRS\\(\\[uv\\]\\)") ""))
+                   (substitute* "Makefile.am"
+                     (("SUBDIRS = uv") "\n")
+                     (("\\$\\(top_builddir\\)/uv/libuv.la") "-luv")
+
+                     ;; Make sure the 'hnsd' binary is installed and
+                     ;; dynamically-linked.
+                     (("noinst_PROGRAMS") "bin_PROGRAMS")
+                     (("hnsd_LDFLAGS = -static") ""))
+
+                   ;; This script tries to chdir to "uv" and doesn't do more
+                   ;; than "autoreconf" so remove it.
+                   (delete-file "autogen.sh")
+                   #t))))
+     (build-system gnu-build-system)
+     (arguments
+      '(#:configure-flags '("--disable-static"))) ;no need for libhsk.a
+     (native-inputs
+      `(("autoconf" ,autoconf)
+        ("automake" ,automake)
+        ("libtool" ,libtool)))
+     (inputs
+      `(("unbound" ,unbound)
+        ("libuv" ,libuv)))
+     (home-page "https://www.handshake.org/")
+     (synopsis "Resolver daemon for the Handshake naming protocol")
+     (description
+      "@command{hnsd} is a @dfn{host name resolver} for the Handshake Naming
+System (HNS) peer-to-peer network.")
+     (license license:expat))))