PortSystem          1.0
name                djbdns
version             1.05
revision            2
categories          net
license             public-domain
maintainers         nomaintainer
description         D.J. Bernstein's DNS tools
long_description \
   DJBDNS is a collection of Domain Name System tools. It includes several \
   components: \
   - The dnscache program is a local DNS cache. It accepts recursive DNS \
   queries from local clients such as web browsers. It collects responses \
   from remote DNS servers. \
   - The tinydns program is a fast, UDP-only DNS server. It makes local DNS \
   information available to the Internet. \
   - The pickdns program is a load-balancing DNS server. It points clients \
   to a dynamic selection of IP addresses. \
   - The walldns program is a reverse DNS wall. It provides matching reverse \
   and forward records while hiding local host information. \
   - The dns library handles outgoing and incoming DNS packets. It can be \
   used by clients such as web browsers to look up host addresses, host \
   names, MX records, etc. It supports asynchronous resolution. \
   - The dnsfilter program is a parallel IP-address-to-host-name converter. \
   - The dnsip, dnsipq, dnsname, dnstxt, and dnsmx programs are simple \
   command-line interfaces to DNS. \
   - The dnsq and dnstrace programs are DNS debugging tools.

homepage            https://cr.yp.to/djbdns.html
master_sites        ${homepage} \
                    http://smarden.org/pape/djb/manpages/:man
distfiles-append    ${distname}-man-20031023.tar.gz:man
extract.only        ${distname}.tar.gz \
                    ${distname}-man-20031023.tar.gz
checksums           ${distname}${extract.suffix} \
                       md5     3147c5cd56832aa3b41955c7a51cbeb2 \
                       sha1    2efdb3a039d0c548f40936aa9cb30829e0ce8c3d \
                       rmd160  a832cbfd93e4ccec6a565492a4ee0b3c1b4b68ed \
                    ${distname}-man-20031023${extract.suffix} \
                       md5     14d7329cff69f604fac607436eb8485e \
                       sha1    3bac8a34a4bc681b9a0e603a77fa11492619e3ce \
                       rmd160  42a5b3305513851dfe1da46df6f405bc81602fbe
platforms           darwin

universal_variant   no

depends_run         port:daemontools port:ucspi-tcp

patchfiles          patch-Makefile \
                    patch-dnscache-conf.c \
                    patch-hier.c \
                    patch-dnsroots.global.diff \
                    patch-response.c.diff
pre-patch {
   # The build process will create a tinydns executable, so this needs to
   # be renamed on case-insensitive file systems
   move ${worksrcpath}/TINYDNS ${worksrcpath}/TINYDNS.txt
}

configure {
   reinplace "s%/usr/local%${prefix}%" ${worksrcpath}/conf-home
   reinplace "s%__DESTROOT%${destroot}%" ${worksrcpath}/hier.c
   reinplace "s%__PREFIX%${prefix}%" ${worksrcpath}/hier.c
   reinplace "s%/etc/dnsrewrite%${prefix}&%" ${worksrcpath}/dns_rcrw.c
}

build.target        default

destroot.target     setup check
post-destroot {
   xinstall -d -m 0755 ${destroot}${prefix}/share/man/man1
   xinstall -m 0644 {*}[glob ${workpath}/${name}-man/*.1] \
      ${destroot}${prefix}/share/man/man1
   xinstall -d -m 0755 ${destroot}${prefix}/share/man/man8
   xinstall -m 0644 {*}[glob ${workpath}/${name}-man/*.8] \
      ${destroot}${prefix}/share/man/man8
   xinstall -m 0755 -d ${destroot}${prefix}/share/doc/${name}
   xinstall -m 0644 -W ${worksrcpath} CHANGES README TINYDNS.txt TODO \
      ${destroot}${prefix}/share/doc/${name}
   xinstall -m 0644 -W ${workpath}/${name}-man README \
      ${destroot}${prefix}/share/doc/${name}/README_MAN
}

set ipv6_diff       ${distname}-test23.diff
variant ipv6 conflicts dumpcache description {Patch in support for IPv6} {
   master_sites-append   https://www.fefe.de/dns/:ipv6
   distfiles-append      ${ipv6_diff}.bz2:ipv6
   checksums-append      ${ipv6_diff}.bz2 \
                            md5     dc35e88e20ffe2670cef5bb4d8a2c183 \
                            sha1    34251597d211ff00791cb6546e8ef60d75ce5477 \
                            rmd160  33037f2a41abb49c305f3efec4402c6965c8b8b8
   post-patch {
      ui_info "$UI_PREFIX Applying ${ipv6_diff}"
      system "cd ${worksrcpath} && (bunzip2 -c ${distpath}/${ipv6_diff}.bz2 | patch -p1)"
   }
}

set dumpcache_diff  patch-dnscache-dumpcache-v4.txt
variant dumpcache conflicts ipv6 description {Enable cache dumping of running dnscache} {
   master_sites-append   http://efge.free.fr/djbdns/:dumpcache
   distfiles-append      ${dumpcache_diff}:dumpcache \
                         prettycache.pl:dumpcache
   checksums-append      ${dumpcache_diff} \
                            md5     61441dec12dd627a7fea7c3059cc2542 \
                            sha1    0bf1bf159336944468c49bf47687b8fdcbd35393 \
                            rmd160  323ba626b3885b722c09ad6e3f6792053cc8ae11 \
                         prettycache.pl \
                            md5     6318e8e866c78adf9b411b58f5088fc2 \
                            sha1    ea5790ed4678be89e0e82e9c59788f9f4db40dff \
                            rmd160  2abc43a6a824e2d10919b6200048326b584e0d6b
   post-patch {
      ui_info "$UI_PREFIX Applying ${dumpcache_diff}"
      system "cd ${worksrcpath} && patch -p1 < ${distpath}/${dumpcache_diff}"
   }
   post-destroot {
      xinstall -m 0755 ${distpath}/prettycache.pl ${destroot}${prefix}/bin
      reinplace "s%^#!.*/perl%#![binaryInPath perl]%" \
         ${destroot}${prefix}/bin/prettycache.pl
   }
}

set ignoreip_diff   ${distname}-ignoreip2.patch
variant ignoreip description {Patch to allow ignoring a list of IP addresses} {
   master_sites-append   https://tinydns.org/:ignoreip
   distfiles-append      ${ignoreip_diff}:ignoreip
   checksums-append      ${ignoreip_diff} \
                            md5     c032250b209d055847a763c8d9c7e865 \
                            sha1    ec4281a6864bd044a84fbfcaaf42baa6b003976d \
                            rmd160  bf8a0d38ae7bfb09a8ab2a04600680613db10aaa
   post-patch {
      ui_info "$UI_PREFIX Applying ${ignoreip_diff}"
      system "cd ${worksrcpath} && patch -p1 < ${distpath}/${ignoreip_diff}"
   }
}

set persistmmap_diff tinydns-persistmmap-20040418.patch
variant persistmmap description {Add persistmmap to improve some lookup tasks} {
   master_sites-append   https://people.FreeBSD.org/~roam/ports/patches/dns/:persistmmap
   distfiles-append      ${persistmmap_diff}:persistmmap
   checksums-append      ${persistmmap_diff} \
                            md5     c721977364502180f9563b85cecf133b \
                            sha1    013690c863c4dbe60d6da4d5470d53afd0b1af11 \
                            rmd160  4a5747033fea7b1a304b30e42c90c68a5c70bdcc
   post-patch {
      ui_info "$UI_PREFIX Applying ${persistmmap_diff}"
      system "cd ${worksrcpath} && patch -p1 < ${distpath}/${persistmmap_diff}"
   }
}

livecheck.type      regex
livecheck.url       https://cr.yp.to/djbdns/install.html
livecheck.regex     ${name}-(\[\\d.\]+)${extract.suffix}