blob: cfc7665771cc4a20fdc0693e89c2376607f89136 [file] [view]
---
id: compiling-linux
title: Compiling on Linux
sidebar_label: Compiling on Linux
---
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
Heron can currently be built on the following Linux platforms:
* [Ubuntu 18.04](#building-on-ubuntu-18.04)
* [CentOS 7](#building-on-centos-7)
## Building on Ubuntu 18.04
To build Heron on a fresh Ubuntu 18.04 installation:
### Step 1 --- Update Ubuntu
```bash
$ sudo apt-get update -y
$ sudo apt-get upgrade -y
```
### Step 2 --- Install required libraries
```bash
$ sudo apt-get install git build-essential automake cmake libtool-bin zip ant \
libunwind-setjmp0-dev zlib1g-dev unzip pkg-config python3-setuptools -y
```
#### Step 3 --- Set the following environment variables
```bash
export CC=/usr/bin/gcc
export CCX=/usr/bin/g++
```
### Step 4 --- Install JDK 11 and set JAVA_HOME
```bash
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update -y
$ sudo apt-get install openjdk-11-jdk-headless -y
$ export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
```
#### Step 5 - Install Bazel {{% bazelVersion %}}
```bash
wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.26.0/bazel-0.26.0-installer-linux-x86_64.sh
chmod +x /tmp/bazel.sh
/tmp/bazel.sh --user
```
Make sure to download the appropriate version of Bazel (currently {{%
bazelVersion %}}).
### Step 6 --- Install python development tools
```bash
$ sudo apt-get install python3-dev python3-pip
```
### Step 7 --- Make sure the Bazel executable is in your `PATH`
```bash
$ export PATH="$PATH:$HOME/bin"
```
### Step 8 --- Fetch the latest version of Heron's source code
```bash
$ git clone https://github.com/apache/incubator-heron.git && cd heron
```
### Step 9 --- Configure Heron for building with Bazel
```bash
$ ./bazel_configure.py
```
### Step 10 --- Build the project
```bash
$ bazel build --config=linux heron/...
```
### Step 11 --- Build the packages
```bash
$ bazel build --config=linux scripts/packages:binpkgs
$ bazel build --config=linux scripts/packages:tarpkgs
```
This will install Heron packages in the `bazel-bin/scripts/packages/` directory.
## Manually Installing Libraries
If you encounter errors with [libunwind](http://www.nongnu.org/libunwind), [libtool](https://www.gnu.org/software/libtool), or
[gperftools](https://github.com/gperftools/gperftools/releases), we recommend
installing them manually.
### Compling and installing libtool
```bash
$ wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz
$ tar -xvf libtool-2.4.6.tar.gz
$ cd libtool-2.4.6
$ ./configure
$ make
$ sudo make install
```
### Compiling and installing libunwind
```bash
$ wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
$ tar -xvf libunwind-1.1.tar.gz
$ cd libunwind-1.1
$ ./configure
$ make
$ sudo make install
```
### Compiling and installing gperftools
```bash
$ wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz
$ tar -xvf gperftools-2.5.tar.gz
$ cd gperftools-2.5
$ ./configure
$ make
$ sudo make install
```
## Building on CentOS 7
To build Heron on a fresh CentOS 7 installation:
### Step 1 --- Install the required dependencies
```bash
$ sudo yum install gcc gcc-c++ kernel-devel wget unzip zlib-devel zip git automake cmake patch libtool ant pkg-config -y
```
### Step 2 --- Install libunwind from source
```bash
$ wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz
$ tar xvf libunwind-1.1.tar.gz
$ cd libunwind-1.1
$ ./configure
$ make
$ sudo make install
```
### Step 3 --- Set the following environment variables
```bash
$ export CC=/usr/bin/gcc
$ export CCX=/usr/bin/g++
```
### Step 4 --- Install JDK 11
```bash
$ sudo yum install java-11-openjdk java-11-openjdk-devel
$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
```
#### Step 5 - Install Bazel {{% bazelVersion %}}
```bash
wget -O /tmp/bazel.sh https://github.com/bazelbuild/bazel/releases/download/0.26.0/bazel-0.26.0-installer-linux-x86_64.sh
chmod +x /tmp/bazel.sh
/tmp/bazel.sh --user
```
Make sure to download the appropriate version of Bazel (currently {{%
bazelVersion %}}).
### Step 6 --- Download Heron and compile it
```bash
$ git clone https://github.com/apache/incubator-heron.git && cd heron
$ ./bazel_configure.py
$ bazel build --config=linux heron/...
```
### Step 7 --- Build the binary packages
```bash
$ bazel build --config=linux scripts/packages:binpkgs
$ bazel build --config=linux scripts/packages:tarpkgs
```
This will install Heron packages in the `bazel-bin/scripts/packages/` directory.