# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0

name                dnsmasq
version             2.91
categories          net
license             GPL
maintainers         {snc @nerdling} openmaintainer
description         lightweight DNS forwarder and DHCP server
long_description    Dnsmasq is lightweight, easy to configure DNS \
                    forwarder and DHCP server. It is designed to provide \
                    DNS and, optionally, DHCP, to a small network. It can \
                    serve the names of local machines which are not in \
                    the global DNS. The DHCP server integrates with the DNS \
                    server and allows machines with DHCP-allocated \
                    addresses to appear in the DNS with names configured \
                    either in each host or in a central configuration \
                    file. Dnsmasq supports static and dynamic DHCP leases \
                    and BOOTP for network booting of diskless machines.
master_sites        http://www.thekelleys.org.uk/dnsmasq/
homepage            ${master_sites}doc.html
use_xz              yes
checksums           rmd160  1c7d834aebe1e9acae65c8b4d166be05c1cc5741 \
                    sha256  f622682848b33677adb2b6ad08264618a2ae0a01da486a93fd8cd91186b3d153 \
                    size    576820

patchfiles          patch-src-config.h.diff \
                    patch-src-network.c.diff
post-patch {
    reinplace "s|#define SMALLDNAME 50|#define SMALLDNAME 255|g" ${worksrcpath}/src/config.h
    reinplace "s|@PREFIX@|${prefix}|g" ${worksrcpath}/src/config.h
    reinplace s|#resolv-file=|resolv-file=/etc/resolv.conf| \
        ${worksrcpath}/dnsmasq.conf.example
}

use_configure       no

variant universal {}
build.env-append    "CC=${configure.cc} [get_canonical_archflags]"
destroot.env-append    "CC=${configure.cc} [get_canonical_archflags]"

destroot.args       PREFIX=${prefix}
destroot.keepdirs   ${destroot}${prefix}/var/run/${name}

livecheck.type      regex
livecheck.url       ${master_sites}
livecheck.regex     LATEST_IS_(\\d\\.\\d+)

default_variants    +dhcp +tftp +ipv6

variant dhcp description { Provide built-in DHCP server } {}
variant tftp description { Provide built-in TFTP server } {}
variant ipv6 description { Provide IPV6 support } {}

set COPTS {}
if {![variant_isset dhcp]} {
    lappend COPTS -DNO_DHCP
}
if {![variant_isset tftp]} {
    lappend COPTS -DNO_TFTP
}
if {![variant_isset ipv6]} {
    lappend COPTS -DNO_IPV6
}
if {[llength $COPTS] > 0} {
    set mycopts [join $COPTS " "]
    build.args-append COPTS="$mycopts"
}

post-destroot {
    copy ${worksrcpath}/dnsmasq.conf.example ${destroot}${prefix}/etc/dnsmasq.conf.example

    # Create the directory that dnsmasq likes to store its pid in.
    xinstall -d -m 777 ${destroot}${prefix}/var/run/${name}

    #
    # Set up a launchd item.  The daemondo wrapper is not needed.
    #

    # Create the plist file.
    set itemname    ${startupitem.name}
    set uniquename  ${startupitem.uniquename}
    set plistname   ${startupitem.plist}
    set daemondest  ${startupitem.location}
    set itemdir     ${prefix}/etc/${daemondest}/${uniquename}

    file mkdir ${destroot}${itemdir}
    file attributes ${destroot}${itemdir} -owner root -group wheel

    set plist [open "${destroot}${itemdir}/${plistname}" w 0644]
    puts ${plist} "<?xml version='1.0' encoding='UTF-8'?>"
    puts ${plist} "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\""
    puts ${plist} "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"
    puts ${plist} "<plist version='1.0'>"
    puts ${plist} "  <dict>"
    puts ${plist} "    <key>Disabled</key>"
    puts ${plist} "    <true/>"
    puts ${plist} "    <key>Label</key>"
    puts ${plist} "    <string>${uniquename}</string>"
    puts ${plist} "    <key>ProgramArguments</key>"
    puts ${plist} "    <array>"
    puts ${plist} "      <string>${prefix}/sbin/dnsmasq</string>"
    puts ${plist} "      <string>-k</string>"
    puts ${plist} "    </array>"
    puts ${plist} "    <key>RunAtLoad</key>"
    puts ${plist} "    <true/>"
    puts ${plist} "    <key>KeepAlive</key>"
    puts ${plist} "    <true/>"
    puts ${plist} "  </dict>"
    puts ${plist} "</plist>"
    close ${plist}

    # Make a symlink to the plist file.
    file mkdir "${destroot}/Library/${daemondest}"
    ln -sf "${itemdir}/${plistname}" "${destroot}/Library/${daemondest}"
}

post-activate {
    # copy configuration file if not previously created
    if {![file exists ${prefix}/etc/dnsmasq.conf]} {
        copy ${prefix}/etc/dnsmasq.conf.example \
            ${prefix}/etc/dnsmasq.conf
    }
}

notes       "A startup item has been generated that will aid in\
            starting ${name} with launchd. You must specify the\
            path to resolv.conf. For your protection, this script\
            is disabled by default. Execute the following command\
            to start it, and to cause it to launch at startup:\
            \n\nsudo port load ${name}"
