# [WIP] Celeborn Cpp Support

## Environment Setup
We provide several methods to setup dev environment for CelebornCpp.
Note that currently the scripts only take care of the cpp-related dependencies, 
and java dependencies are not included.

### Clone the project
We should clone the project as:
```
# the option `--config core.symlinks=true` is to make sure that the softlink works
git clone git@github.com:apache/celeborn.git --config core.symlinks=true
```

### Use container with prebuilt image
We provide a pre-built image ready to be pulled and used so you could launch a container directly:
```
export PROJECT_DIR=/your/path/to/celeborn/dir
docker run \
    -v ${PROJECT_DIR}:/celeborn \
    -w /celeborn \
    -it --rm \
    --name celeborn-cpp-dev-container \
    jraaaay/celeborn-cpp-dev:0.4 \
    /bin/bash
```

### Build image and use container
We provide the dev image building scripts so you could build the image and launch a container as follows:
```
cd scripts

# build image
bash ./build-docker-image.sh

# launch container with image above
bash ./launch-docker-container.sh
```

### Build on local machine (Ubuntu-Only)
Currently, we only provide the dev-environment setup script for Ubuntu:
```
cd scripts
bash setup-ubuntu.sh
```
Other platforms are not supported yet, and you could use the container above as your dev environment.

## Compile and test
Currently, the modules are under development. 
You could compile the code and run the tests within the dev container by
```
cd celeborn/cpp
mkdir -p build && cd build
cmake ..
make
ctest
```

