homebrew-core/Formula/dnsmasq.rb
Jack Nagel 7c648d9732 Shore up a number of shell quoting issues
When interpolating in strings passed to Formula#system, it should be
done in such a way that if any interpolated variables contain spaces,
they are either (a) passed as part of a list or (b) protected by quotes
if they are part of a long string (which is subject to shell expansion).
Otherwise, they will be split on the space when expanded by the shell
and passed as multiple arguments to whatever process is being executed.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-05-15 14:03:11 -05:00

73 lines
2 KiB
Ruby

require 'formula'
class Dnsmasq < Formula
homepage 'http://www.thekelleys.org.uk/dnsmasq/doc.html'
url 'http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.61.tar.gz'
md5 '6ed0a5c2524dfc3a74ef494ee2469f09'
def options
[['--with-idn', "Compile with IDN support"]]
end
depends_on "libidn" if ARGV.include? '--with-idn'
def install
ENV.deparallelize
# Fix etc location
inreplace "src/config.h", "/etc/dnsmasq.conf", "#{etc}/dnsmasq.conf"
# Optional IDN support
if ARGV.include? '--with-idn'
inreplace "src/config.h", "/* #define HAVE_IDN */", "#define HAVE_IDN"
end
# Fix compilation on Lion
ENV.append_to_cflags "-D__APPLE_USE_RFC_3542" if 10.7 <= MACOS_VERSION
inreplace "Makefile" do |s|
s.change_make_var! "CFLAGS", ENV.cflags
end
system "make", "install", "PREFIX=#{prefix}"
prefix.install "dnsmasq.conf.example"
plist_path.write startup_plist
plist_path.chmod 0644
end
def caveats; <<-EOS.undent
To configure dnsmasq, copy the example configuration to #{etc}/dnsmasq.conf
and edit to taste.
cp #{prefix}/dnsmasq.conf.example #{etc}/dnsmasq.conf
To load dnsmasq automatically on startup, install and load the provided launchd
item as follows:
sudo cp #{plist_path} /Library/LaunchDaemons
sudo launchctl load -w /Library/LaunchDaemons/#{plist_path.basename}
EOS
end
def startup_plist; <<-EOS.undent
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>#{plist_name}</string>
<key>ProgramArguments</key>
<array>
<string>#{HOMEBREW_PREFIX}/sbin/dnsmasq</string>
<string>--keep-in-foreground</string>
</array>
<key>KeepAlive</key>
<dict>
<key>NetworkState</key>
<true/>
</dict>
</dict>
</plist>
EOS
end
end