This is a guide to building Kazoo from source on a Debian 8 (Jessie) base installation. Other GNU/Linux distros should work similarly, though the dependencies may differ a bit. If you want to just install and use Kazoo (and not build it) try using the installation instructions. The rest of this guide assumes you want to run a development environment for Kazoo.
sudo apt-get install build-essential libxslt-dev \
zip unzip expat zlib1g-dev libssl-dev curl \
libncurses5-dev git-core libexpat1-dev \
htmldoc
Note: htmldoc
is required only if you want to be able to download PDFs.
When running make docs
, some Python libraries are useful:
sudo apt-get install python2.7 python-yaml
sudo pip install mkdocs mkdocs-bootstrap mkdocs-bootswatch pymdown-extensions
You can also run a local version of the docs with make docs-serve
which will start a local server so you can view how the docs are rendered.
If you have a custom theme, you can copy it to doc/mkdocs/theme
and build the docs again. When you serve the docs the theme should have been applied to the site.
Kazoo 4 targets Erlang 18+. There are a couple ways to install Erlang:
I prefer to use a tool like kerl to manage my installations. If you want to play around with multiple versions of Erlang while hacking on Kazoo, this is probably the best way.
curl -O https://raw.githubusercontent.com/yrashk/kerl/master/kerl
chmod a+x kerl
mv kerl /usr/bin
kerl list releases
kerl build 18.2 r18.2 # this takes a while
kerl install r18.2 /usr/local/erlang
. /usr/local/erlang/activate
Install from the Erlang Solutions packages. These tend to be kept up-to-date better than the default distro’s packages.
cd /opt
git clone https://github.com/2600Hz/kazoo.git
cd kazoo
make
git clone https://github.com/2600Hz/kazoo.git
cd kazoo
make
When developing, one can cd
into any app directory (within applications/
or core/
) and run:
make
(make all
ormake clean
)make xref
to look for calls to undefined functions (uses Xref)make dialyze
to statically type-check the app (uses Dialyzer)make test
runs the app / sub-apps test suite, if any.- Note: make sure to
make clean all
after running your tests, as test BEAMs are generated inebin/
!
- Note: make sure to
To run the full test suite it is advised to:
cd
into the root of the projectmake compile-test
to compile every app with theTEST
macro defined- This way apps can call code from other apps in a kind of =TEST= mode
make eunit
(instead ofmake test
) to run the test suite without recompiling each appmake proper
to run the test suite, including property-based tests (uses PropEr)
make build-release
will generate a deployable release
The SUP command (sup
) is found under core/sup/priv/sup
and should be copied or symlinked to /usr/bin/sup
(or somewhere in your $PATH
). It is a shell file that calls sup.escript
.
sudo ln -s core/sup/priv/sup /usr/bin/sup
Make sure that the path to Kazoo’s intallation directory is right (in /usr/bin/sup
). Otherwise you can change it by setting the KAZOO_ROOT
environment variable (not set by default). If one needs KAZOO_ROOT
, an alias should be created:
alias sup='KAZOO_ROOT=/opt/kazoo sup'
make sup_completion
creates sup.bash
: a Bash completion file for the SUP command
- Copy or symlink this file to
/etc/bash_completion.d/sup.bash