Dependencies¶
To build SlipStream, you need to have a variety of languages, tools, and libraries installed on your system.
The target production platform is CentOS 7. However, the software should build without problems on any Unix-like environment (Linux, FreeBSD, MacOS, etc.). Binary packages will only be built on platforms supporting RPM. The core developers primarily use MacOS.
Note
The SlipStream build is not supported on Windows and will not work.
The following sections describe how to configure your development environment on CentOS 7 and MacOS. If you are using another Unix-like platform, use the CentOS 7 instructions as a guide.
There is also a Docker container that has the entire SlipStream build environment preconfigured. See the Docker Container for Builds section for details.
System Packages¶
CentOS 7¶
CentOS 7 is the target platform for production deployments of SlipStream. Builds on CentOS 7 are the only ones that are officially supported.
These instructions assume that you are building the software on an up-to-date, minimal CentOS 7 system. You should upgrade your system to ensure you have the latest versions of dependencies.
Several of the packages required for the build are not available in the core CentOS 7 distribution. You will need to configure your machine to use the EPEL 7 package repository:
$ yum install -y yum-utils epel-release
$ yum-config-manager --enable epel
If you’re not using a CentOS release, you’ll need to find and install the RPM for EPEL configuration on their website. You can find the URL and package name via the information in the “How can I use these extra packages?” section on the EPEL welcome page.
All of the packaged dependencies can be installed directly with
yum
. The following table lists the RPM packages that must be
installed and describes how those packages are used within the build.
The command:
$ yum install -y \
git \
java-1.8.0-openjdk-devel \
python \
python-devel \
python-pip \
rpm-build \
createrepo \
gcc \
docker \
which
will install all of the listed packages.
Package | Comment |
git | Download sources from GitHub |
java-1.8.0-openjdk-devel | Compile and run the server |
python | Client CLI build and testing |
python-devel | Needed for python module dependencies |
python-pip | Needed for dependencies installation |
rpm-build | Creates binary distribution packages |
createrepo | Create local yum repository |
gcc | Needed for building python dependencies |
docker | Needed to build containers |
which | Needed for maven configuration |
MacOS¶
The primary platform used by the SlipStream developers is Mac OS X. Consequently, this is a well-understood and well-supported SlipStream development environment. We’re going to assume you’re running MacOS with Homebrew.
Your default locale settings may conflict with some of the programs we’ll need. If you want to be on the safe side, add these lines to your .bash_profile file:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
Most of the necessary dependencies are already installed by default in recent versions of MacOS.
You must install the Java Development Kit on your system. Download and install the JDK 8 package from Oracle’s Java download page.
You must also install Docker. You can find the DMG package from the Docker website.
Python Dependencies¶
CentOS 7¶
The correct version of Python will have been installed with the system
packages described above. Nonetheless, it is recommended that you
install and use pyenv
:
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
You should also add the following to you bash login script:
export PATH="/username/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
This will configure your Python environment and let you choose between different Python versions. Be sure to change the path to match your username.
You must also install some Python dependencies via pip
. See the
common configuration below.
MacOS¶
It is strongly recommended that you install and use pyenv
. This
provides a more flexible and consistent Python environment on MacOS.
From an account with administrator access, install pyenv
:
$ brew update
$ brew install pyenv
Then from your normal account (if different from the administrator account), adjust your bash login:
export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
This will allow you to change dynamically the version of Python being used. Be sure to change the path to match your username.
If you have errors related to the virtualenv-init
command, then
run the command:
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
which will install the missing plugin.
If Python plugin executables are not visible, then you may also need
to add the path /Users/username/.local/bin
to your PATH variable.
Next install the latest 2.7 release of Python and set this as the default:
$ pyenv install 2.7.13
$ pyenv global 2.7.13
Note the the download, compilation, and installation of Python will take some time.
Verify that you are using the correct version of Python with:
$ pyenv versions
and verify with pip -V
that pip
works and comes from the
Python installation that you just performed.
Proceed with the installation of the Python package dependencies described in the next section.
All Platforms¶
Install the following dependencies that are needed to run the unit tests for the python code:
$ pip install tox
You can verify that tox
is available with which
.
Build Tools¶
Maven¶
The overall SlipStream build is controlled through Maven.
Download and install the latest
Maven release from the Apache Maven
website. You will need to download the Maven
distribution (choose the
most recent binary distribution), unpack the distribution and modify the
environment to make the mvn
command visible.
Warning
The Maven version supplied by most operating systems is too old to work with the SlipStream build. You must have at least version 3.3.
Once you have downloaded and unpacked Maven, you can setup the environment with:
$ export MAVEN_HOME=<installation directory>/apache-maven-3.3.9
$ export PATH=$PATH:$MAVEN_HOME/bin
The mvn
command should now be visible. The software will build with
any maven version later than 3.3.
Leiningen¶
The clojure SlipStream server (ssclj) and its components are built
using Leiningen. Leiningen (lein
) is
triggered via Maven to allow for an integrated build process.
To install lein
, follow its installation instructions. After installation you must make
sure that the lein
command is in your path by executing:
$ lein -v
This will download the most recent version of Leiningen and provide you with the version number. The download will only happen on the first invocation of the command.