7fc8281baa
This lets RabbitMQ find sysctl. Before this patch, RabbitMQ assumed total system memory was 1024 MB because it couldn't call sysctl to find the correct amount. Original report with more detail in rabbitmq/rabbitmq-server#1375.
98 lines
3.4 KiB
Ruby
98 lines
3.4 KiB
Ruby
class Rabbitmq < Formula
|
|
desc "Messaging broker"
|
|
homepage "https://www.rabbitmq.com"
|
|
url "https://dl.bintray.com/rabbitmq/binaries/rabbitmq-server-generic-unix-3.6.12.tar.xz"
|
|
sha256 "1c20bcfbcea922f1ceb14c95d2ad1211add4e1b03ba8491405640c384ea5a8df"
|
|
|
|
bottle :unneeded
|
|
|
|
depends_on "erlang"
|
|
|
|
def install
|
|
# Install the base files
|
|
prefix.install Dir["*"]
|
|
|
|
# Setup the lib files
|
|
(var/"lib/rabbitmq").mkpath
|
|
(var/"log/rabbitmq").mkpath
|
|
|
|
# Correct SYS_PREFIX for things like rabbitmq-plugins
|
|
erlang = Formula["erlang"]
|
|
inreplace sbin/"rabbitmq-defaults" do |s|
|
|
s.gsub! "SYS_PREFIX=${RABBITMQ_HOME}", "SYS_PREFIX=#{HOMEBREW_PREFIX}"
|
|
s.gsub! /^ERL_DIR=$/, "ERL_DIR=#{erlang.opt_bin}/"
|
|
s.gsub! "CLEAN_BOOT_FILE=start_clean", "CLEAN_BOOT_FILE=#{erlang.opt_lib/"erlang/bin/start_clean"}"
|
|
s.gsub! "SASL_BOOT_FILE=start_sasl", "SASL_BOOT_FILE=#{erlang.opt_lib/"erlang/bin/start_clean"}"
|
|
end
|
|
|
|
# Set RABBITMQ_HOME in rabbitmq-env
|
|
inreplace sbin/"rabbitmq-env",
|
|
'RABBITMQ_HOME="$(rmq_realpath "${RABBITMQ_SCRIPTS_DIR}/..")"',
|
|
"RABBITMQ_HOME=#{prefix}"
|
|
|
|
# Create the rabbitmq-env.conf file
|
|
rabbitmq_env_conf = etc/"rabbitmq/rabbitmq-env.conf"
|
|
rabbitmq_env_conf.write rabbitmq_env unless rabbitmq_env_conf.exist?
|
|
|
|
# Enable plugins - management web UI and visualiser; STOMP, MQTT, AMQP 1.0 protocols
|
|
enabled_plugins_path = etc/"rabbitmq/enabled_plugins"
|
|
enabled_plugins_path.write "[rabbitmq_management,rabbitmq_stomp,rabbitmq_amqp1_0,rabbitmq_mqtt]." unless enabled_plugins_path.exist?
|
|
|
|
# Extract rabbitmqadmin and install to sbin
|
|
# use it to generate, then install the bash completion file
|
|
system "/usr/bin/unzip", "-qq", "-j",
|
|
"#{prefix}/plugins/rabbitmq_management-#{version}.ez",
|
|
"rabbitmq_management-#{version}/priv/www/cli/rabbitmqadmin"
|
|
|
|
sbin.install "rabbitmqadmin"
|
|
(sbin/"rabbitmqadmin").chmod 0755
|
|
(bash_completion/"rabbitmqadmin.bash").write Utils.popen_read("#{sbin}/rabbitmqadmin --bash-completion")
|
|
end
|
|
|
|
def caveats; <<-EOS.undent
|
|
Management Plugin enabled by default at http://localhost:15672
|
|
EOS
|
|
end
|
|
|
|
def rabbitmq_env; <<-EOS.undent
|
|
CONFIG_FILE=#{etc}/rabbitmq/rabbitmq
|
|
NODE_IP_ADDRESS=127.0.0.1
|
|
NODENAME=rabbit@localhost
|
|
EOS
|
|
end
|
|
|
|
plist_options :manual => "rabbitmq-server"
|
|
|
|
def 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>Program</key>
|
|
<string>#{opt_sbin}/rabbitmq-server</string>
|
|
<key>RunAtLoad</key>
|
|
<true/>
|
|
<key>EnvironmentVariables</key>
|
|
<dict>
|
|
<!-- need erl in the path -->
|
|
<key>PATH</key>
|
|
<string>#{HOMEBREW_PREFIX}/sbin:/usr/sbin:/usr/bin:/bin:#{HOMEBREW_PREFIX}/bin</string>
|
|
<!-- specify the path to the rabbitmq-env.conf file -->
|
|
<key>CONF_ENV_FILE</key>
|
|
<string>#{etc}/rabbitmq/rabbitmq-env.conf</string>
|
|
</dict>
|
|
</dict>
|
|
</plist>
|
|
EOS
|
|
end
|
|
|
|
test do
|
|
ENV["RABBITMQ_MNESIA_BASE"] = testpath/"var/lib/rabbitmq/mnesia"
|
|
system sbin/"rabbitmq-server", "-detached"
|
|
system sbin/"rabbitmqctl", "status"
|
|
system sbin/"rabbitmqctl", "stop"
|
|
end
|
|
end
|