Skip to content
This repository has been archived by the owner on Dec 2, 2020. It is now read-only.

Commit

Permalink
Merge pull request #13 from Ledej/update-elasticsearch
Browse files Browse the repository at this point in the history
Update elasticsearch to 1.1.1
  • Loading branch information
ocxo committed May 13, 2014
2 parents cf1b803 + 60a2007 commit fa2a123
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 19 deletions.
114 changes: 97 additions & 17 deletions files/brews/elasticsearch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,119 @@

class Elasticsearch < Formula
homepage 'http://www.elasticsearch.org'
url 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.tar.gz'
sha1 '8027a4ae1bef6876c7651b1590607c8ff6108820'
version '0.90.5-boxen1'
url 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.tar.gz'
sha1 '8495b928984945728635f805f6e2e7183902a3ea'
version '1.1.1-boxen1'

head do
url 'https://github.com/elasticsearch/elasticsearch.git'
depends_on 'maven'
end

def cluster_name
"elasticsearch_#{ENV['USER']}"
end

def install
if build.head?
# Build the package from source
system "mvn clean package -DskipTests"
# Extract the package to the current directory
system "tar --strip 1 -xzf target/releases/elasticsearch-*.tar.gz"
end

# Remove Windows files
rm_f Dir["bin/*.bat"]
# Move JARs from lib to libexec according to homebrew conventions

# Move libraries to `libexec` directory
libexec.install Dir['lib/*.jar']
(libexec+'sigar').install Dir['lib/sigar/*.jar']
(libexec/'sigar').install Dir['lib/sigar/*.{jar,dylib}']

# Install everything directly into folder
# Install everything else into package directory
prefix.install Dir['*']

inreplace "#{bin}/elasticsearch.in.sh" do |s|
# Replace CLASSPATH paths to use libexec instead of lib
s.gsub! /ES_HOME\/lib\//, "ES_HOME/libexec/"
# Remove unnecessary files
rm_f Dir["#{lib}/sigar/*"]
if build.head?
rm_rf "#{prefix}/pom.xml"
rm_rf "#{prefix}/src/"
rm_rf "#{prefix}/target/"
end

# Set up Elasticsearch for local development:
inreplace "#{prefix}/config/elasticsearch.yml" do |s|
# 1. Give the cluster a unique name
s.gsub! /#\s*cluster\.name\: elasticsearch/, "cluster.name: #{cluster_name}"

# 2. Configure paths
s.sub! "# path.data: /path/to/data", "path.data: #{var}/elasticsearch/"
s.sub! "# path.logs: /path/to/logs", "path.logs: #{var}/log/elasticsearch/"
s.sub! "# path.plugins: /path/to/plugins", "path.plugins: #{var}/lib/elasticsearch/plugins"

# 3. Bind to loopback IP for laptops roaming different networks
s.gsub! /#\s*network\.host\: [^\n]+/, "network.host: 127.0.0.1"
end

inreplace "#{bin}/elasticsearch" do |s|
# Set ES_HOME to prefix value
s.gsub! /^ES_HOME=.*$/, "ES_HOME=#{prefix}"
inreplace "#{bin}/elasticsearch.in.sh" do |s|
# Configure ES_HOME
s.sub! /#\!\/bin\/sh\n/, "#!/bin/sh\n\nES_HOME=#{prefix}"
# Configure ES_CLASSPATH paths to use libexec instead of lib
s.gsub! /ES_HOME\/lib\//, "ES_HOME/libexec/"
end

inreplace "#{bin}/plugin" do |s|
# Set ES_HOME to prefix value
s.gsub! /^ES_HOME=.*$/, "ES_HOME=#{prefix}"
# Replace CLASSPATH paths to use libexec instead of lib
s.gsub! /-cp \".*\"/, '-cp "$ES_HOME/libexec/*"'
# Add the proper ES_CLASSPATH configuration
s.sub! /SCRIPT="\$0"/, %Q|SCRIPT="$0"\nES_CLASSPATH=#{libexec}|
# Replace paths to use libexec instead of lib
s.gsub! /\$ES_HOME\/lib\//, "$ES_CLASSPATH/"
end
end
end

def post_install
# Make sure runtime directories exist
(var/"elasticsearch/#{cluster_name}").mkpath
(var/"log/elasticsearch").mkpath
(var/"lib/elasticsearch/plugins").mkpath
end

def caveats; <<-EOS.undent
Data: #{var}/elasticsearch/#{cluster_name}/
Logs: #{var}/log/elasticsearch/#{cluster_name}.log
Plugins: #{var}/lib/elasticsearch/plugins/
EOS
end

plist_options :manual => "elasticsearch --config=#{HOMEBREW_PREFIX}/opt/elasticsearch/config/elasticsearch.yml"

def plist; <<-EOS.undent
<?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>KeepAlive</key>
<true/>
<key>Label</key>
<string>#{plist_name}</string>
<key>ProgramArguments</key>
<array>
<string>#{HOMEBREW_PREFIX}/bin/elasticsearch</string>
<string>--config=#{prefix}/config/elasticsearch.yml</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>ES_JAVA_OPTS</key>
<string>-Xss200000</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>#{var}</string>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
</dict>
</plist>
EOS
end
end
2 changes: 1 addition & 1 deletion manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

$ensure = 'present'

$version = '0.90.5-boxen1'
$version = '1.1.1-boxen1'
$package = 'boxen/brews/elasticsearch'

$cluster = "elasticsearch_boxen_${::boxen_user}"
Expand Down
2 changes: 1 addition & 1 deletion spec/classes/elasticsearch_package_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
it do
should contain_homebrew__formula("elasticsearch")

should contain_package("boxen/brews/elasticsearch").with_ensure("0.90.5-boxen1")
should contain_package("boxen/brews/elasticsearch").with_ensure("1.1.1-boxen1")
end
end

0 comments on commit fa2a123

Please sign in to comment.