We know for sure it builds with 1.3.0 and not 1.0.1. I can't be bothered to check every version inbetween, so let's just say we require 1.3.0. Closes #220.
2.2 KiB
title, layout
| title | layout |
|---|---|
| Building Weave | default |
NB This is only necessary if you want to work on the weave code.
Building directly on Linux
You can work on weave without using a VM if you are running the docker daemon outside a VM. (These instructions have only been tested on Ubuntu.)
To build weave you need libpcap-dev and docker (version 1.3.0 or
later) installed. And go (and git and hg to fetch dependencies).
The package name is github.com/zettio/weave, so assuming $GOPATH
is set:
$ cd $GOPATH
$ WEAVE=github.com/zettio/weave
$ git clone https://$WEAVE src/$WEAVE
$ cd src/$WEAVE
Then simply run
$ make
This will build the weave router, produce a docker image
zettio/weave and export that image to /var/tmp/weave.tar.
Building using Vagrant
If you aren't running Linux, or otherwise don't want to run the docker daemon outside a VM, you can use Vagrant to run a development environment. You'll probably need to install VirtualBox too, for Vagrant to run VMs in.
First, check out the code:
$ git clone https://github.com/zettio/weave
$ cd weave
The Vagrantfile in the top directory constructs a VM that has
- docker installed
- go tools installed
- weave dependencies installed
- $GOPATH set to ~
- the local working directory mapped as a synced folder into the right place in $GOPATH
Once you are in the working directory you can issue
$ vagrant up
and wait for a while (don't worry, the long download and package
installation is done just once). The working directory is sync'ed with
~/src/github.com/zettio/weave on the VM, so you can edit files and
use git and so on in the regular filesystem.
To build and run the code, you need to use the VM. To log in and build the weave image, do
$ vagrant ssh
vm$ cd src/github.com/zettio/weave
vm$ make
The docker daemon is also running in this VM, so you can then do
vm$ sudo ./weave launch
vm$ docker ps
and so on.
You can provide extra Vagrant configuration by putting a file
Vagrant.local in the same place as Vagrantfile; for instance, to
forward additional ports.