Add Vagrant file for development
authorAntonio Ojea <aojea@midokura.com>
Fri, 24 Feb 2017 13:22:28 +0000 (14:22 +0100)
committerChristian Grothoff <christian@grothoff.org>
Sat, 25 Feb 2017 00:53:16 +0000 (01:53 +0100)
This patch adds a vagranfile that installs the required
dependencies to compile gnunet.

To be able to use it you need to cd to the contrib/vagrant
directory, run "vagrant up" and wait until the VM is provisioned.
Once it finish the provisioning you can login in the VM with
 "vagrant ssh"  The VM mounts the source code of gnunet in the
folder /gnunet, thus you can edit your code in the host and
compile it in the VM.

Signed-off-by: Antonio Ojea <aojea@midokura.com>
contrib/vagrant/Vagrantfile [new file with mode: 0644]
contrib/vagrant/bootstrap.ubuntu.sh [new file with mode: 0644]

diff --git a/contrib/vagrant/Vagrantfile b/contrib/vagrant/Vagrantfile
new file mode 100644 (file)
index 0000000..d6b671b
--- /dev/null
@@ -0,0 +1,55 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+# Source https://github.com/alxn/vpp/blob/master/build-root/vagrant/Vagrantfile
+
+Vagrant.configure(2) do |config|
+
+  config.vm.box = "bento/ubuntu-16.04"
+  config.vm.box_version = "2.2.9"
+  config.vm.provision 'shell', path: 'bootstrap.ubuntu.sh'
+
+  # Add .gnupg dir in so folks can sign patches
+  # Note, as gnupg puts socket files in that dir, we have
+  # to be cautious and make sure we are dealing with a plain file
+  homedir = File.expand_path("~/")
+  Dir["#{homedir}/.gnupg/**/*"].each do |fname|
+    if File.file?(fname)
+      destname = fname.sub(Regexp.escape("#{homedir}/"),'')
+      config.vm.provision "file", source: fname, destination: destname
+    end
+  end
+
+  # Copy in the .gitconfig if it exists
+  if File.file?(File.expand_path("~/.gitconfig"))
+    config.vm.provision  "file", source: "~/.gitconfig", destination: ".gitconfig"
+  end
+
+  # vagrant-cachier caches apt/yum etc to speed subsequent
+  # vagrant up
+  # to enable, run
+  # vagrant plugin install vagrant-cachier
+  #
+  if Vagrant.has_plugin?("vagrant-cachier")
+    config.cache.scope = :box
+  end
+
+  # use http proxy if avaiable
+  if ENV['http_proxy'] && Vagrant.has_plugin?("vagrant-proxyconf")
+   config.proxy.http     = "$http_proxy"
+   config.proxy.https    = "$https_proxy"
+   config.proxy.no_proxy = "localhost,127.0.0.1"
+  end
+
+  config.vm.synced_folder "../../", "/gnunet", disabled: false
+  config.vm.provider "virtualbox" do |vb|
+    vb.memory = "4096"
+  end
+  config.vm.provider "vmware_fusion" do |fusion,override|
+    fusion.vmx["memsize"] = "4096"
+  end
+  config.vm.provider "vmware_workstation" do |vws,override|
+    vws.vmx["memsize"] = "4096"
+    vws.vmx["numvcpus"] = "4"
+  end
+end
diff --git a/contrib/vagrant/bootstrap.ubuntu.sh b/contrib/vagrant/bootstrap.ubuntu.sh
new file mode 100644 (file)
index 0000000..4bf032e
--- /dev/null
@@ -0,0 +1,48 @@
+#/bin/bash
+# Source https://gnunet.org/dependencies and README
+
+apt-get update
+
+# Install required tools
+apt-get -y install git build-essential gnupg curl openssl gnutls-bin miniupnpc
+
+# Autotools required for compiling
+apt-get -y install autoconf automake libtool autopoint
+
+# Tools for debugging
+apt-get -y install gdb valgrind
+
+# Direct dependencies obtained from README
+apt-get -y install libmicrohttpd-dev
+apt-get -y install libextractor-dev
+apt-get -y install libunistring-dev
+apt-get -y install libidn11-dev
+apt-get -y install libgcrypt20-dev
+apt-get -y install libgnutls30-dev
+apt-get -y install libltdl-dev
+apt-get -y install libcurl3
+apt-get -y install sqlite3 libsqlite3-dev
+apt-get -y install zlib1g-dev
+# apt-get -y install texlive-full # Skipped > 1GB
+# optional for gnunet-conversation
+# apt-get -y install libpulse-dev libopus-dev libogg-dev gstreamer1.0
+# optional for gnunet-qr
+apt-get -y install python-zbar
+# optional for experimental code
+apt-get -y install libglpk-dev
+#
+apt-get -y install libbluetooth-dev libjansson-dev
+
+# Compilation process
+addgroup gnunetdns
+adduser --system --home "/var/lib/gnunet" --group gnunet --shell /bin/sh
+# cd /gnunet
+# . bootstrap
+# export GNUNET_PREFIX=/usr/local/lib # or other directory of your choice
+# ./configure --prefix=$GNUNET_PREFIX/.. --with-extractor=$LE_PREFIX
+# make
+# make install
+# make check
+# echo "/usr/local/lib/gnunet" > /etc/ld.so.conf.d/libgnunet.conf
+# ldconfig
+# sudo -u gnunet gnunet-arm -s