Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / dns / bind / default.nix
bloba7c3f564af311a1459c51391f3613fe939b045f1
1 { stdenv
2 , lib
3 , fetchurl
4 , darwin
5 , perl
6 , pkg-config
7 , libcap
8 , libidn2
9 , libtool
10 , libxml2
11 , openssl
12 , libuv
13 , nghttp2
14 , jemalloc
15 , enablePython ? false
16 , python3
17 , enableGSSAPI ? true
18 , libkrb5
19 , buildPackages
20 , nixosTests
21 , cmocka
22 , tzdata
23 , gitUpdater
26 stdenv.mkDerivation rec {
27   pname = "bind";
28   version = "9.18.28";
30   src = fetchurl {
31     url = "https://downloads.isc.org/isc/bind9/${version}/${pname}-${version}.tar.xz";
32     hash = "sha256-58zpoWX3thnu/Egy8KjcFrAF0p44kK7WAIxQbqKGpec=";
33   };
35   outputs = [ "out" "lib" "dev" "man" "dnsutils" "host" ];
37   patches = [
38     ./dont-keep-configure-flags.patch
39   ];
41   nativeBuildInputs = [ perl pkg-config ];
42   buildInputs = [ libidn2 libtool libxml2 openssl libuv nghttp2 jemalloc ]
43     ++ lib.optional stdenv.isLinux libcap
44     ++ lib.optional enableGSSAPI libkrb5
45     ++ lib.optional enablePython (python3.withPackages (ps: with ps; [ ply ]))
46     ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.CoreServices ];
48   depsBuildBuild = [ buildPackages.stdenv.cc ];
50   configureFlags = [
51     "--localstatedir=/var"
52     "--without-lmdb"
53     "--with-libidn2"
54   ] ++ lib.optional enableGSSAPI "--with-gssapi=${libkrb5.dev}/bin/krb5-config"
55   ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "BUILD_CC=$(CC_FOR_BUILD)";
57   postInstall = ''
58     moveToOutput bin/bind9-config $dev
60     moveToOutput bin/host $host
62     moveToOutput bin/dig $dnsutils
63     moveToOutput bin/delv $dnsutils
64     moveToOutput bin/nslookup $dnsutils
65     moveToOutput bin/nsupdate $dnsutils
67     for f in "$lib/lib/"*.la "$dev/bin/"bind*-config; do
68       sed -i "$f" -e 's|-L${openssl.dev}|-L${lib.getLib openssl}|g'
69     done
71     cat <<EOF >$out/etc/rndc.conf
72     include "/etc/bind/rndc.key";
73     options {
74         default-key "rndc-key";
75         default-server 127.0.0.1;
76         default-port 953;
77     };
78     EOF
79   '';
81   enableParallelBuilding = true;
83   doCheck = false;
84   # TODO: investigate failures; see this and linked discussions:
85   # https://github.com/NixOS/nixpkgs/pull/192962
86   /*
87   doCheck = with stdenv.hostPlatform; !isStatic && !(isAarch64 && isLinux)
88     # https://gitlab.isc.org/isc-projects/bind9/-/issues/4269
89     && !is32bit;
90   */
91   checkTarget = "unit";
92   checkInputs = [
93     cmocka
94   ] ++ lib.optionals (!stdenv.hostPlatform.isMusl) [
95     tzdata
96   ];
97   preCheck = lib.optionalString stdenv.hostPlatform.isMusl ''
98     # musl doesn't respect TZDIR, skip timezone-related tests
99     sed -i '/^ISC_TEST_ENTRY(isc_time_formatISO8601L/d' tests/isc/time_test.c
100   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
101     # Test timeouts on Darwin
102     sed -i '/^ISC_TEST_ENTRY(tcpdns_recv_one/d' tests/isc/netmgr_test.c
103   '';
105   passthru = {
106     tests = {
107       inherit (nixosTests) bind;
108       prometheus-exporter = nixosTests.prometheus-exporters.bind;
109       kubernetes-dns-single-node = nixosTests.kubernetes.dns-single-node;
110       kubernetes-dns-multi-node = nixosTests.kubernetes.dns-multi-node;
111     };
113     updateScript = gitUpdater {
114       # No nicer place to find latest stable release.
115       url = "https://gitlab.isc.org/isc-projects/bind9.git";
116       rev-prefix = "v";
117       # Avoid unstable 9.19 releases.
118       odd-unstable = true;
119     };
120   };
122   meta = with lib; {
123     homepage = "https://www.isc.org/bind/";
124     description = "Domain name server";
125     license = licenses.mpl20;
126     changelog = "https://downloads.isc.org/isc/bind9/cur/${lib.versions.majorMinor version}/CHANGES";
127     maintainers = with maintainers; [ globin ];
128     platforms = platforms.unix;
130     outputsToInstall = [ "out" "dnsutils" "host" ];
131   };