blob: 76cfe4d90024e37e8b939efcdf05441e05888a6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
require 'formula'
class SixtyFourBitRequired < Requirement
def satisfied?
MacOS.prefer_64_bit?
end
def fatal?; true end
def message; <<-EOS.undent
32-bit MongoDB binaries are no longer available.
If you need to run a 32-bit version of MongoDB, you can
compile the server from source:
http://www.mongodb.org/display/DOCS/Building+for+OS+X
EOS
end
end
class Mongodb < Formula
homepage 'http://www.mongodb.org/'
url 'http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.2.1.tgz'
sha1 '6fc3054cdc7f7e64b12742f7e8f9df256a3253d9'
version '2.2.1-x86_64'
devel do
url 'http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.3.0.tgz'
sha1 '816ca175bd31e2ec1eb8b61793b1d1e4a247a5da'
version '2.3.0-x86_64'
end
depends_on SixtyFourBitRequired.new
def install
# Copy the prebuilt binaries to prefix
prefix.install Dir['*']
# Create the data and log directories under /var
(var+'mongodb').mkpath
(var+'log/mongodb').mkpath
# Write the configuration files
(prefix+'mongod.conf').write mongodb_conf
# Homebrew: it just works.
# NOTE plist updated to use prefix/mongodb!
mv bin/'mongod', prefix
(bin/'mongod').write <<-EOS.undent
#!/usr/bin/env ruby
ARGV << '--config' << '#{etc}/mongod.conf' unless ARGV.find { |arg| arg =~ /\-\-config/ }
exec "#{prefix}/mongod", *ARGV
EOS
# copy the config file to etc if this is the first install.
etc.install prefix+'mongod.conf' unless File.exists? etc+"mongod.conf"
end
def caveats
bn = plist_path.basename
la = Pathname.new("#{ENV['HOME']}/Library/LaunchAgents")
prettypath = "~/Library/LaunchAgents/#{bn}"
domain = plist_path.basename('.plist')
load = "launchctl load -w #{prettypath}"
s = []
# we readlink because this path probably doesn't exist since caveats
# occurs before the link step of installation
if not (la/bn).file?
s << "To have launchd start #{name} at login:"
s << " mkdir -p ~/Library/LaunchAgents" unless la.directory?
s << " ln -s #{HOMEBREW_PREFIX}/opt/#{name}/*.plist ~/Library/LaunchAgents/"
s << "Then to load #{name} now:"
s << " #{load}"
s << "Or, if you don't want/need launchctl, you can just run:"
s << " mongod"
elsif Kernel.system "/bin/launchctl list #{domain} &>/dev/null"
s << "You should reload #{name}:"
s << " launchctl unload -w #{prettypath}"
s << " #{load}"
else
s << "To load #{name}:"
s << " #{load}"
end
end
def mongodb_conf; <<-EOS.undent
# Store data in #{var}/mongodb instead of the default /data/db
dbpath = #{var}/mongodb
# Append logs to #{var}/log/mongodb/mongo.log
logpath = #{var}/log/mongodb/mongo.log
logappend = true
# Only accept local connections
bind_ip = 127.0.0.1
EOS
end
def startup_plist
return <<-EOS
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//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>#{opt_prefix}/mongod</string>
<string>run</string>
<string>--config</string>
<string>#{etc}/mongod.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>UserName</key>
<string>#{`whoami`.chomp}</string>
<key>WorkingDirectory</key>
<string>#{HOMEBREW_PREFIX}</string>
<key>StandardErrorPath</key>
<string>#{var}/log/mongodb/output.log</string>
<key>StandardOutPath</key>
<string>#{var}/log/mongodb/output.log</string>
</dict>
</plist>
EOS
end
end
|