Over a million developers have joined DZone.

How to Compile Storm 0.8.2 on Mac OS X

DZone 's Guide to

How to Compile Storm 0.8.2 on Mac OS X

· DevOps Zone ·
Free Resource

Here is a set of instructions to build and package from source either storm-0.8.2.jar or the complete storm-0.8.2.zip (with all dependencies). I assume packaging later versions will be similar, just be careful about dependencies in different versions.

First off, let’s clarify that this is not required if your goal is just to install a Storm cluster or to develop topologies, for that it’s easier to download a package from the Storm download page and follow the Storm installation instructions.

I am executing this on Mac OS X 10.7.5 with Java 1.7.0.

First, install some building tools:

brew install automake
brew install libtool
brew install pkg-config

We also need Leiningen 1.x, a Clojure build and packaging tool (Storm compilation process currently fails with Leiningen 2.x):

cd /usr/local/
brew versions leiningen
git checkout a9b361d /usr/local/Library/Formula/leiningen.rb
brew install leiningen

Surprisingly, compiling the Storm code also requires to have a Zero MQ server installed (ahem …), so, well, let’s install that. Storm documentation specifically mentions Zero MQ 2.1.7:

cd /usr/local/
brew versions zmq
git checkout ed41f79 Library/Formula/zeromq.rb
brew install zmq 

We also need jzmq. Storm 0.8.2 comes with jzmq-2.1.0.jar, so let’s install that version:

cd wherever/makes/sense
git clone https://github.com/zeromq/jzmq.git
cd jzmq/
git checkout v2.1.0
sudo make install

We’re finally ready to get our hands on Storm itself:

cd wherever/makes/sense
git clone https://github.com/nathanmarz/storm.git
git checkout 0.8.2

If you just need to build the jar, run this:

lein jar

You can also create the full release package like this:

chmod 744 bin/build_release.sh

Et voilà. Happy hacking :-)


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}