# -*- 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
# $Id: Portfile 68539 2010-06-05 19:31:43Z snc@macports.org $

PortSystem          1.0

name                dnsmasq
version             2.53
categories          net
license             GPL
maintainers         snc 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.
homepage            http://www.thekelleys.org.uk/dnsmasq/doc.html

platforms           darwin
depends_build       port:nawk

notes               "A startup item has been generated that will aid in 
starting ${name} with launchd. It is disabled 
by default. Execute the following command to start it, 
and to cause it to launch at startup: 
\n\nsudo port load ${name}"

master_sites        http://www.thekelleys.org.uk/dnsmasq/

checksums           md5     e11cd4c6bba9590563018da2e0d8c323 \
                    sha1    d84193bda8d28210aebe1c9c7218491483358bb4 \
                    rmd160  beda1aa3b093880dba251436db0eef69213b8ac6

patchfiles          patch-src-config.h.diff \
                    patch-Makefile.diff
post-patch {
    reinplace "s|@PREFIX@|${prefix}|g" ${worksrcpath}/src/config.h
}

use_configure       no

destroot.args       PREFIX=${prefix}

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

set COPTS ""
variant no_dhcp description { Disable built in DHCP server } {
    set COPTS "${COPTS} -DNO_DHCP"
    build.args COPTS="${COPTS}"
}

variant no_tftp description { Disable built in TFTP server } {
    set COPTS "${COPTS} -DNO_TFTP"
    build.args COPTS="${COPTS}"
}

variant no_ipv6 description { Disable IPV6 support } {
    set COPTS "${COPTS} -DNO_IPV6"
    build.args COPTS="${COPTS}"
}

post-destroot {
    # Create the directory that dnsmasq likes to store its pid in.
    file mkdir ${prefix}/var/run

    #
    # 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>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} "      <string>-r</string>"
    puts ${plist} "      <string>/etc/resolv.conf</string>"
    puts ${plist} "    </array>"
    puts ${plist} "    <key>KeepAlive</key>"
    puts ${plist} "    <dict>"
    puts ${plist} "      <key>NetworkState</key>"
    puts ${plist} "      <true/>"
    puts ${plist} "    </dict>"
    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}"
}
