gnu: Add unbound.
* gnu/packages/dns.scm (unbound): New variable. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
e2de6bbdd5
commit
7e61a16c97
|
@ -8,6 +8,7 @@
|
||||||
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
|
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||||
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
|
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
|
||||||
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
|
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
|
||||||
|
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -31,6 +32,7 @@
|
||||||
#:use-module (gnu packages databases)
|
#:use-module (gnu packages databases)
|
||||||
#:use-module (gnu packages crypto)
|
#:use-module (gnu packages crypto)
|
||||||
#:use-module (gnu packages datastructures)
|
#:use-module (gnu packages datastructures)
|
||||||
|
#:use-module (gnu packages flex)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
#:use-module (gnu packages groff)
|
#:use-module (gnu packages groff)
|
||||||
#:use-module (gnu packages groff)
|
#:use-module (gnu packages groff)
|
||||||
|
@ -42,12 +44,16 @@
|
||||||
#:use-module (gnu packages nettle)
|
#:use-module (gnu packages nettle)
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
|
#:use-module (gnu packages protobuf)
|
||||||
|
#:use-module (gnu packages python)
|
||||||
|
#:use-module (gnu packages swig)
|
||||||
#:use-module (gnu packages tls)
|
#:use-module (gnu packages tls)
|
||||||
#:use-module (gnu packages web)
|
#:use-module (gnu packages web)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module ((guix licenses) #:prefix license:)
|
#:use-module ((guix licenses) #:prefix license:)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
|
#:use-module (guix utils)
|
||||||
#:use-module (guix build-system gnu))
|
#:use-module (guix build-system gnu))
|
||||||
|
|
||||||
(define-public dnsmasq
|
(define-public dnsmasq
|
||||||
|
@ -275,6 +281,164 @@ asynchronous fashion.")
|
||||||
(license:non-copyleft "file://LICENSE") ; includes.h
|
(license:non-copyleft "file://LICENSE") ; includes.h
|
||||||
license:openssl))))
|
license:openssl))))
|
||||||
|
|
||||||
|
(define-public unbound
|
||||||
|
(package
|
||||||
|
(name "unbound")
|
||||||
|
(version "1.6.3")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "https://www.unbound.net/downloads/unbound-"
|
||||||
|
version ".tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0pw4m4z5qspsagxzbjb61xq5bhd57amw26xqvqzi6b8d3mf6azjc"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(outputs '("out" "python"))
|
||||||
|
(native-inputs
|
||||||
|
`(("flex" ,flex)
|
||||||
|
("swig" ,swig)))
|
||||||
|
(inputs
|
||||||
|
`(("expat" ,expat)
|
||||||
|
("libevent" ,libevent)
|
||||||
|
("protobuf" ,protobuf)
|
||||||
|
("python" ,python-3)
|
||||||
|
("python-wrapper" ,python-wrapper)
|
||||||
|
("openssl" ,openssl)))
|
||||||
|
(arguments
|
||||||
|
`(#:configure-flags
|
||||||
|
(list (string-append
|
||||||
|
"--with-ssl=" (assoc-ref %build-inputs "openssl"))
|
||||||
|
(string-append
|
||||||
|
"--with-libevent=" (assoc-ref %build-inputs "libevent"))
|
||||||
|
(string-append
|
||||||
|
"--with-libexpat=" (assoc-ref %build-inputs "expat"))
|
||||||
|
"--with-pythonmodule" "--with-pyunbound")
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'configure 'fix-python-site-package-path
|
||||||
|
;; Move python modules into their own output.
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let ((pyout (assoc-ref outputs "python"))
|
||||||
|
(ver ,(version-major+minor (package-version python))))
|
||||||
|
(substitute* "Makefile"
|
||||||
|
(("^PYTHON_SITE_PKG=.*$")
|
||||||
|
(string-append
|
||||||
|
"PYTHON_SITE_PKG="
|
||||||
|
pyout "/lib/python-" ver "/site-packages\n"))))
|
||||||
|
#t))
|
||||||
|
(add-before 'check 'fix-missing-nss-for-tests
|
||||||
|
;; Unfortunately, the package's unittests involve some checks
|
||||||
|
;; looking up protocols and services which are not provided
|
||||||
|
;; by the minimalistic build environment, in particular,
|
||||||
|
;; /etc/protocols and /etc/services are missing.
|
||||||
|
;; Also, after plain substitution of protocol and service names
|
||||||
|
;; in the test data, the tests still fail because the
|
||||||
|
;; corresponding Resource Records have been signed by
|
||||||
|
;; RRSIG records.
|
||||||
|
;; The following LD_PRELOAD library overwrites the glibc
|
||||||
|
;; functions ‘get{proto,serv}byname’, ‘getprotobynumber’ and
|
||||||
|
;; ‘getservbyport’ providing the few records required for the
|
||||||
|
;; unit tests to pass.
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(let* ((source (assoc-ref %build-inputs "source"))
|
||||||
|
(gcc (assoc-ref %build-inputs "gcc")))
|
||||||
|
(call-with-output-file "/tmp/nss_preload.c"
|
||||||
|
(lambda (port)
|
||||||
|
(display "#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <strings.h>
|
||||||
|
|
||||||
|
#include <netdb.h>
|
||||||
|
|
||||||
|
struct protoent *getprotobyname(const char *name) {
|
||||||
|
struct protoent *p = malloc(sizeof(struct protoent));
|
||||||
|
p->p_aliases = malloc(sizeof(char*));
|
||||||
|
if (strcasecmp(name, \"tcp\") == 0) {
|
||||||
|
p->p_name = \"tcp\";
|
||||||
|
p->p_proto = 6;
|
||||||
|
p->p_aliases[0] = \"TCP\";
|
||||||
|
} else if (strcasecmp(name, \"udp\") == 0) {
|
||||||
|
p->p_name = \"udp\";
|
||||||
|
p->p_proto = 17;
|
||||||
|
p->p_aliases[0] = \"UDP\";
|
||||||
|
} else
|
||||||
|
p = NULL;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct protoent *getprotobynumber(int proto) {
|
||||||
|
struct protoent *p = malloc(sizeof(struct protoent));
|
||||||
|
p->p_aliases = malloc(sizeof(char*));
|
||||||
|
switch(proto) {
|
||||||
|
case 6:
|
||||||
|
p->p_name = \"tcp\";
|
||||||
|
p->p_proto = 6;
|
||||||
|
p->p_aliases[0] = \"TCP\";
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
p->p_name = \"udp\";
|
||||||
|
p->p_proto = 17;
|
||||||
|
p->p_aliases[0] = \"UDP\";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
p = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct servent *getservbyname(const char *name, const char *proto) {
|
||||||
|
struct servent *s = malloc(sizeof(struct servent));
|
||||||
|
char* buf = malloc((strlen(proto)+1)*sizeof(char));
|
||||||
|
strcpy(buf, proto);
|
||||||
|
s->s_aliases = malloc(sizeof(char*));
|
||||||
|
s->s_aliases[0] = NULL;
|
||||||
|
if (strcasecmp(name, \"domain\") == 0) {
|
||||||
|
s->s_name = \"domain\";
|
||||||
|
s->s_port = htons(53);
|
||||||
|
s->s_proto = buf;
|
||||||
|
} else
|
||||||
|
s = NULL;
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct servent *getservbyport(int port, const char *proto) {
|
||||||
|
char buf[32];
|
||||||
|
struct servent *s = malloc(sizeof(struct servent));
|
||||||
|
strcpy(buf, proto);
|
||||||
|
s->s_aliases = malloc(sizeof(char*));
|
||||||
|
s->s_aliases[0] = NULL;
|
||||||
|
switch(port) {
|
||||||
|
case 53:
|
||||||
|
s->s_name = \"domain\";
|
||||||
|
s->s_port = 53;
|
||||||
|
s->s_proto = \"udp\";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
s = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}" port)))
|
||||||
|
(system* (string-append gcc "/bin/gcc")
|
||||||
|
"-shared" "-fPIC" "-o" "/tmp/nss_preload.so"
|
||||||
|
"/tmp/nss_preload.c")
|
||||||
|
;; The preload library only affects the unittests.
|
||||||
|
(substitute* "Makefile"
|
||||||
|
(("./unittest")
|
||||||
|
"LD_PRELOAD=/tmp/nss_preload.so ./unittest")))
|
||||||
|
#t)))))
|
||||||
|
(home-page "https://www.unbound.net")
|
||||||
|
(synopsis "Validating, recursive, and caching DNS resolver")
|
||||||
|
(description
|
||||||
|
"Unbound is a recursive-only caching DNS server which can perform DNSSEC
|
||||||
|
validation of results. It implements only a minimal amount of authoritative
|
||||||
|
service to prevent leakage to the root nameservers: forward lookups for
|
||||||
|
localhost, reverse for @code{127.0.0.1} and @code{::1}, and NXDOMAIN for zones
|
||||||
|
served by AS112. Stub and forward zones are supported.")
|
||||||
|
(license license:bsd-4)))
|
||||||
|
|
||||||
(define-public yadifa
|
(define-public yadifa
|
||||||
(package
|
(package
|
||||||
(name "yadifa")
|
(name "yadifa")
|
||||||
|
|
Loading…
Reference in New Issue