From c4942479309a40c09c4659fa3e26280d3a121058 Mon Sep 17 00:00:00 2001 From: Antonio Ojea Date: Fri, 24 Feb 2017 14:22:28 +0100 Subject: [PATCH] Add Vagrant file for development 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 --- contrib/vagrant/Vagrantfile | 55 +++++++++++++++++++++++++++++ contrib/vagrant/bootstrap.ubuntu.sh | 48 +++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 contrib/vagrant/Vagrantfile create mode 100644 contrib/vagrant/bootstrap.ubuntu.sh diff --git a/contrib/vagrant/Vagrantfile b/contrib/vagrant/Vagrantfile new file mode 100644 index 000000000..d6b671b24 --- /dev/null +++ b/contrib/vagrant/Vagrantfile @@ -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 index 000000000..4bf032e3e --- /dev/null +++ b/contrib/vagrant/bootstrap.ubuntu.sh @@ -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 -- 2.25.1