summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2020-04-17 15:21:54 +0200
committerGeir Storli <geirst@verizonmedia.com>2020-04-17 15:21:54 +0200
commit3e2b8ed1fcfb480760e4bfecf98dbc59439d3088 (patch)
tree76b494a5a543e806fe8c5743f139d4c98d2a6b18
parent2fcc4aa1c97b4f9cb9c9acaf34b2966b4bd718ea (diff)
Link to development guide for CentOS 7 using Docker and remove obsolete Vagrant guide.
-rw-r--r--README.md29
-rw-r--r--vagrant/.gitignore2
-rw-r--r--vagrant/README.md107
-rw-r--r--vagrant/Vagrantfile93
4 files changed, 9 insertions, 222 deletions
diff --git a/README.md b/README.md
index 09a3f9a7124..194d24885f1 100644
--- a/README.md
+++ b/README.md
@@ -63,17 +63,13 @@ You do not need to build Vespa to use it, but if you want to contribute you need
This section explains how to build and test Vespa. To understand where to make changes, see [Code-map.md](Code-map.md).
Some suggested improvements with pointers to code are in [TODO.md](TODO.md).
-### Set up the build environment
+### Development environment
-C++ and Java building is supported on CentOS 7. The Java source can also be built on any platform having Java 11 and Maven installed.
-We recommend using the following environment: [Create C++ / Java dev environment on CentOS using VirtualBox and Vagrant](vagrant/README.md).
-You can also setup CentOS 7 natively and install the following build dependencies:
-
- sudo yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/vespa/vespa/repo/epel-7/group_vespa-vespa-epel-7.repo
- sudo yum -y install epel-release centos-release-scl yum-utils
- sudo yum -y install ccache \
- rpm-build
- yum-builddep -y <vespa-source>/dist/vespa.spec
+C++ and Java building is supported on CentOS 7.
+The Java source can also be built on any platform having Java 11 and Maven installed.
+Use the following guide to setup a complete development environment using Docker
+for building Vespa, running unit tests and running system tests:
+[Vespa development on CentOS 7](https://github.com/vespa-engine/docker-image-dev#vespa-development-on-centos-7).
### Build Java modules
@@ -82,20 +78,13 @@ You can also setup CentOS 7 natively and install the following build dependencie
bash bootstrap.sh java
mvn -T <num-threads> install
-### Build C++ modules
+Use this if you only need to build the Java modules, otherwise follow the complete development guide above.
-Replace `<build-dir>` with the name of the directory in which you'd like to build Vespa.
-Replace `<source-dir>` with the directory in which you've cloned/unpacked the source tree.
+### Build RPM packages
- bash bootstrap-cpp.sh <source-dir> <build-dir>
- cd <build-dir>
- make -j <num-threads>
- ctest3 -j <num-threads>
+See [Building Vespa RPM](docker/README.md#building-vespa-rpm) for details.
-### Create RPM packages
- sh dist.sh VERSION && rpmbuild -ba ~/rpmbuild/SPECS/vespa-VERSION.spec
-
## License
Code licensed under the Apache 2.0 license. See [LICENSE](LICENSE) for terms.
diff --git a/vagrant/.gitignore b/vagrant/.gitignore
deleted file mode 100644
index d16c9dbeeb5..00000000000
--- a/vagrant/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.vagrant/
-*.box \ No newline at end of file
diff --git a/vagrant/README.md b/vagrant/README.md
deleted file mode 100644
index 71fa071cb46..00000000000
--- a/vagrant/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
-
-# Create C++ / Java dev environment on CentOS using VirtualBox and Vagrant
-
-## Prerequisites
-* [Install VirtualBox](https://www.virtualbox.org/wiki/Downloads)
-* [Install Vagrant](https://www.vagrantup.com/downloads.html)
-
-## Create dev environment
-
-#### 1. Change working directory to &lt;vespa-source&gt;/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](https://www.packer.io/intro/getting-started/install.html)
-
-* 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 git@github.com:vespa-engine/vespa.git
-
-## Build Java modules
-Please follow the build instructions described [here](../README.md#build-java-modules).
-
-
-## Build C++ modules
-Please follow the build instructions described [here](../README.md#build-c-modules).
-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 &lt;vespa-source>&gt;/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.
diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile
deleted file mode 100644
index be0824dbd55..00000000000
--- a/vagrant/Vagrantfile
+++ /dev/null
@@ -1,93 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-disable_gui = ENV['VESPA_VAGRANT_DISABLE_GUI']
-
-def get_mandatory_env_value(name)
- opt = ENV[name]
- if opt.nil? or opt.empty?
- raise Vagrant::Errors::VagrantError.new, "Environment variable #{name} must be set to a valid value before running vagrant"
- end
- return opt
-end
-
-def get_env_value(name, fallback)
- opt = ENV[name]
- if opt.nil? or opt.empty?
- return fallback
- end
- return opt
-end
-
-vm_box = get_mandatory_env_value('VESPA_VAGRANT_VM_BOX')
-vm_memory = get_env_value('VESPA_VAGRANT_VM_MEMORY', "8192")
-vm_cpus = get_env_value('VESPA_VAGRANT_VM_CPUS', 4)
-
-unless disable_gui
- vm_box_url = get_mandatory_env_value('VESPA_VAGRANT_VM_BOX_URL')
-end
-
-# For a complete reference, please see the online documentation at https://docs.vagrantup.com.
-Vagrant.configure("2") do |config|
-
- config.vm.box = vm_box
- config.vm.box_url = vm_box_url unless disable_gui
-
- config.ssh.forward_agent = true
-
- config.vm.synced_folder "../dist", "/vagrant/dist"
-
- config.vm.provider "virtualbox" do |vb|
- # Display the VirtualBox GUI when booting the machine
- vb.gui = true unless disable_gui
- vb.name = "vespa-dev"
-
- vb.memory = vm_memory
- vb.cpus = vm_cpus
- end
-
- # Install required and nice-to-have packages
- config.vm.provision "shell", inline: <<-SHELL
- yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/vespa/vespa/repo/epel-7/group_vespa-vespa-epel-7.repo
- yum -y install epel-release
- yum -y install centos-release-scl
- yum -y install yum-utils
- yum -y install git \
- ccache \
- maven \
- rpm-build \
- valgrind \
- sudo \
- firefox \
- vim \
- emacs
- sed -e '/^BuildRequires:/d' -e 's/^Requires:/BuildRequires:/' /vagrant/dist/vespa.spec > /tmp/vesparun.spec
- yum-builddep -y /vagrant/dist/vespa.spec /tmp/vesparun.spec
- rm /tmp/vesparun.spec
- echo -e "* soft nproc 409600\n* hard nproc 409600" > /etc/security/limits.d/99-nproc.conf
- echo -e "* soft nofile 262144\n* hard nofile 262144" > /etc/security/limits.d/99-nofile.conf
-
- unless disable_gui
- echo -e "fs.inotify.max_user_watches = 524288" > /etc/sysctl.d/clion.conf
- wget -q -O - https://download.jetbrains.com/cpp/CLion-2018.1.6.tar.gz | tar -C /opt -zx
- ln -sf /opt/clion-2018.1.6/bin/clion.sh /usr/bin/clion
- end
-
- yum update -y
- hostname localhost
- SHELL
-
- # Add settings for Vespa and dev tools as the default user, usually 'vagrant' (privileged: false)
- # NOTE: adding these settings to .bashrc would break vagrant suspend/resume/provision
- # due to env vars modified by /opt/rh/devtoolset-8/enable.
- config.vm.provision "shell", privileged: false, inline: <<-SCRIPT
- grep -l VESPA_HOME ~/.bash_profile >/dev/null || (\
- printf "%s\n" \
- 'export VESPA_HOME=$HOME/vespa' \
- 'export PATH=$PATH:$VESPA_HOME/bin' \
- 'source /opt/rh/rh-maven35/enable' \
- 'source /opt/rh/devtoolset-8/enable' \
- >> ~/.bash_profile )
- SCRIPT
-
-end