Skip to content

Latest commit

 

History

History
107 lines (66 loc) · 3.44 KB

README.md

File metadata and controls

107 lines (66 loc) · 3.44 KB

Create C++ / Java dev environment on CentOS using VirtualBox and Vagrant

Prerequisites

Create dev environment

1. Change working directory to <vespa-source>/vagrant

cd <vespa-source>/vagrant

2. Choose dev environment

a. For a dev environment with plain centos/7 and no GUI:
export VESPA_VAGRANT_VM_BOX=centos/7
export VESPA_VAGRANT_DISABLE_GUI=true
b. For a dev environment with GUI and CLion:

Create centos7-desktop box:

  • Install packer by following guide at packer.io

  • Clone boxcutter centos repo and build the box:

git clone https://github.com/boxcutter/centos.git
./bin/box build centos7-desktop.json virtualbox

Example exports:

export VESPA_VAGRANT_VM_BOX="centos7-desktop"
export VESPA_VAGRANT_VM_BOX_URL="$HOME/git/boxcutter/centos/box/virtualbox/centos7-desktop-xx.yyyy.z.box"

3. Install Vagrant VirtualBox Guest Additions plugin

This is required for mounting shared folders and get mouse pointer integration and seamless windows in the virtual CentOS desktop.

vagrant plugin install vagrant-vbguest

4. Start and provision the environment

vagrant up

5. Connect to machine via SSH

SSH agent forwarding is enabled to ensure easy interaction with GitHub inside the machine.

vagrant ssh

6. Checkout vespa source inside virtual machine

This is needed in order to compile and run tests fast on the local file system inside the virtual machine.

git clone [email protected]:vespa-engine/vespa.git

Build Java modules

Please follow the build instructions described here.

Build C++ modules

Please follow the build instructions described here. Skip these steps if doing development with CLion.

Build and Develop using CLion

CLion is installed as part of the environment and is recommended for C++ development.

1. Bootstrap C++ building

cd to the vespa/ directory created by git clone and execute:

./bootstrap.sh java
./bootstrap-cpp.sh . .

2. Start CLion

Open a terminal inside the virtual CentOS desktop (password is "vagrant") and run:

clion

When prompted, configure toolchains as follows:

CMake: /usr/bin/cmake3
Make: /usr/bin/make
C Compiler: /opt/rh/devtoolset-8/root/usr/bin/cc
C++ Compiler: /opt/rh/devtoolset-8/root/usr/bin/c++

3. Open the Vespa Project

Go to File -> Open and choose <vespa-source>>/CMakeLists.txt.

4. Set compiler threads

Go to File -> Settings -> Build, Execution, Deployment -> CMake. Under Build Options specify "-j 4" and click Apply.

5. Run bootstrap again

./bootstrap-cpp.sh . .

(Some of the changes made by it are undone by clion on the first startup.)

6. Build all modules

Choose target all_modules from the set of build targets at the top right and click build.

Starting and stopping the Vagrant machine

Use vagrant suspend to suspend the machine and then vagrant resume to resume it later on. Alternatively use vagrant halt + vagrant up to shutdown and reboot. Latter approach is slower but requires less disk space since RAM content is not persisted to host.