***************
Building Bigtop
***************

Build Requirements:
===================

* A stock image of a Linux Distribution, supported are
  - Debian 8
  - Centos 6,7
  - Ubuntu 14.04 LTS
  - SLES 11 SP3
  - Fedora 20
  - openSuSE 13.1

* A fast Internet Connection, since compile process will download a lot

* Recommended is to install dependencies via puppet.
  Either
  - Read bigtop_toolchain/README.md
  or
  - install puppet and run
    puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::installer"

Building
========

For Debian, Ubuntu Bigtop supports the deb packaging format and apt repositories

For Centos, Fedora Bigtop supports rpm packaging and yum repositories

For openSuSE, SLES Bigtop supports rpm packaging but zypper seems not supported.

Bigtop consists of many packages which should be compiled in order:
See bigtop.mk for the list of packages and names.

For doing a full recompile do a
  gradle deb
or
  gradle rpm
depending on Linux distribution.

If you want to create a repository
  gradle apt
or
  gradle yum

Build results are in
  output/<names>

The $(HOME)/.m2 will contain several GB of downloads afterwards as collateral damage.

Each package will have a "-1" release part by default.

Create updated Packages
=======================

In order to create releases where one can update machines (for
instance in production) it is advisable to increase the release part for every rebuild.

This can be done by using the BIGTOP_BUILD_STAMP to set the release part of the version of every package.

For instance by default a package hadoop-2.4.1-1.deb will be created. If you need to fix this package and recompile it run:

BIGTOP_BUILD_STAMP="2" gradle hadoop-apt

This updates the package to hadoop-2.4.1-2.deb in repository, removing the old one.

Please do not use a hyphen "-" in the BIGTOP_BUILD_STAMP breaking the
algorithms apt and yum are using for calculating dependencies.

Integration into a CI system: jenkins
=====================================


A nightly build job can be created with

  gradle clean
  BIGTOP_BUILD_STAMP="nightly-${BUILD_NUMBER}" gradle apt|yum

For more background information on BIGTOP_BUILD_STAMP see ticket BIGTOP-1580.


Using a different JVM
=====================

By default, bigtop is compiled with a JDK version 8. If you want to change it,
for example to use JDK version 7, you just have to define the variable
BIGTOP_JDK:

BIGTOP_JDK=7; export BIGTOP_JDK
./gradlew deb


Note on LC_ALL/LANG
===================

Compilation may fail if your locale is not in english. You might for example
see some strange errors with dpkg-buildpackage. In that case, you should reset
the language variables before compiling:

LC_ALL=C; export LC_ALL
LANG=C; export LANG
./gradlew deb
