[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-browser-bundle/master] Gitian builds in VirtualBox with Vagrant
commit 88f6c9e6d6530690de52ffb4186b8531a04e39bd
Author: Arlo Breault <arlolra@xxxxxxxxx>
Date: Sat Jun 22 17:06:07 2013 -0700
Gitian builds in VirtualBox with Vagrant
---
.gitignore | 1 +
gitian/README.build | 2 +-
gitian/gpg/openssl.gpg | 94 -----------------------------------------
vagrant/Makefile | 50 ++++++++++++++++++++++
vagrant/README.md | 12 ++++++
vagrant/Vagrantfile | 108 ++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 172 insertions(+), 95 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..54e0741
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+vagrant/.vagrant
diff --git a/gitian/README.build b/gitian/README.build
index 41d0494..2cfd53f 100644
--- a/gitian/README.build
+++ b/gitian/README.build
@@ -90,7 +90,7 @@ Partial Rebuilds:
the bundles using the addons and localization packs.
The Tor and Firefox stages end up as a *gbuilt*.zip files in
- ../gitian-builder/inputs/, and those zip files are used as inputs into
+ ../../gitian-builder/inputs/, and those zip files are used as inputs into
the final bundling and localization stage. If those files exist in that
directory, the corresponding bundle will *not* be built.
diff --git a/gitian/gpg/openssl.gpg b/gitian/gpg/openssl.gpg
deleted file mode 100644
index 6c9aeb8..0000000
--- a/gitian/gpg/openssl.gpg
+++ /dev/null
@@ -1,94 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.11 (GNU/Linux)
-
-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
-/rWmQcrFK8Q7YRLSjSmTQqWeeNRCBb8x
-=AtEC
------END PGP PUBLIC KEY BLOCK-----
diff --git a/vagrant/Makefile b/vagrant/Makefile
new file mode 100644
index 0000000..d4cfc38
--- /dev/null
+++ b/vagrant/Makefile
@@ -0,0 +1,50 @@
+REQS = git apache2 python-vm-builder ruby debootstrap lxc apt-cacher-ng \
+ virt-what lxctl fakeroot faketime zip unzip subversion bridge-utils
+
+# remove torsocks to speed up testing
+TORSOCKS = torsocks
+
+.PHONY: hostvm
+hostvm:
+ vagrant destroy --force
+ vagrant up
+ vagrant ssh --command "sudo apt-get install -y tor torsocks"
+ vagrant ssh --command "sudo $(TORSOCKS) apt-get update"
+
+ # https://github.com/mitchellh/vagrant/issues/289
+ vagrant ssh --command "sudo DEBIAN_FRONTEND=noninteractive $(TORSOCKS) \
+ apt-get upgrade -y"
+
+ vagrant reload
+ vagrant ssh --command "sudo $(TORSOCKS) apt-get install -y $(REQS)"
+ vagrant halt
+
+.PHONY: tbb
+tbb:
+ vagrant up
+ vagrant ssh --command "\
+ if [ -d ~/gitian-builder ]; then \
+ rm -rf ~/gitian-builder; \
+ fi"
+
+ vagrant ssh --command "$(TORSOCKS) \
+ git clone -b tor-browser-builder-2 \
+ 'https://git.torproject.org/builders/gitian-builder.git' ~/gitian-builder"
+
+ vagrant ssh --command "\
+ if [ -d ~/tor-browser-bundle ]; then \
+ rm -rf ~/tor-browser-bundle; \
+ fi"
+
+ vagrant ssh --command "\
+ rsync -r --exclude=.git --exclude=.vagrant \
+ /tor-browser-bundle/ ~/tor-browser-bundle"
+
+ vagrant ssh --command "cd ~/tor-browser-bundle/gitian && USE_LXC=1 make"
+
+ vagrant ssh --command "cd ~/tor-browser-bundle/gitian && \
+ cp -R 3.* /vagrant/"
+
+ vagrant halt
+
+all: hostvm tbb
\ No newline at end of file
diff --git a/vagrant/README.md b/vagrant/README.md
new file mode 100644
index 0000000..6873a42
--- /dev/null
+++ b/vagrant/README.md
@@ -0,0 +1,12 @@
+Automated Gitian builds with Vagrant
+====================================
+
+Install VirtualBox and Vagrant,
+
+ https://www.virtualbox.org/wiki/Downloads
+ http://vagrantup.com/
+
+Then,
+
+ cd vagrant/
+ make
\ No newline at end of file
diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile
new file mode 100644
index 0000000..af16469
--- /dev/null
+++ b/vagrant/Vagrantfile
@@ -0,0 +1,108 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+Vagrant.configure("2") do |config|
+ # All Vagrant configuration is done here. The most common configuration
+ # options are documented and commented below. For a complete reference,
+ # please see the online documentation at vagrantup.com.
+
+ # Every Vagrant virtual environment requires a box to build off of.
+ config.vm.box = "Ubuntu 12.04 (x86_64)"
+
+ # The url from where the 'config.vm.box' box will be fetched if it
+ # doesn't already exist on the user's system.
+ config.vm.box_url = "http://files.vagrantup.com/precise64.box"
+
+ # Create a forwarded port mapping which allows access to a specific port
+ # within the machine from a port on the host machine. In the example below,
+ # accessing "localhost:8080" will access port 80 on the guest machine.
+ # config.vm.network :forwarded_port, guest: 80, host: 8080
+
+ # Create a private network, which allows host-only access to the machine
+ # using a specific IP.
+ # config.vm.network :private_network, ip: "192.168.33.10"
+
+ # Create a public network, which generally matched to bridged network.
+ # Bridged networks make the machine appear as another physical device on
+ # your network.
+ # config.vm.network :public_network
+
+ # Share an additional folder to the guest VM. The first argument is
+ # the path on the host to the actual folder. The second argument is
+ # the path on the guest to mount the folder. And the optional third
+ # argument is a set of non-required options.
+ config.vm.synced_folder "../.", "/tor-browser-bundle"
+
+ # Provider-specific configuration so you can fine-tune various
+ # backing providers for Vagrant. These expose provider-specific options.
+ # Example for VirtualBox:
+
+ config.vm.provider :virtualbox do |vb|
+ # Use VBoxManage to customize the VM. For example to change memory:
+ vb.customize ["modifyvm", :id, "--memory", "1280"]
+ end
+
+ # View the documentation for the provider you're using for more
+ # information on available options.
+
+ # Enable provisioning with Puppet stand alone. Puppet manifests
+ # are contained in a directory path relative to this Vagrantfile.
+ # You will need to create the manifests directory and a manifest in
+ # the file Ubuntu 12.04 (x86_64).pp in the manifests_path directory.
+ #
+ # An example Puppet manifest to provision the message of the day:
+ #
+ # # group { "puppet":
+ # # ensure => "present",
+ # # }
+ # #
+ # # File { owner => 0, group => 0, mode => 0644 }
+ # #
+ # # file { '/etc/motd':
+ # # content => "Welcome to your Vagrant-built virtual machine!
+ # # Managed by Puppet.\n"
+ # # }
+ #
+ # config.vm.provision :puppet do |puppet|
+ # puppet.manifests_path = "manifests"
+ # puppet.manifest_file = "init.pp"
+ # end
+
+ # Enable provisioning with chef solo, specifying a cookbooks path, roles
+ # path, and data_bags path (all relative to this Vagrantfile), and adding
+ # some recipes and/or roles.
+ #
+ # config.vm.provision :chef_solo do |chef|
+ # chef.cookbooks_path = "../my-recipes/cookbooks"
+ # chef.roles_path = "../my-recipes/roles"
+ # chef.data_bags_path = "../my-recipes/data_bags"
+ # chef.add_recipe "mysql"
+ # chef.add_role "web"
+ #
+ # # You may also specify custom JSON attributes:
+ # chef.json = { :mysql_password => "foo" }
+ # end
+
+ # Enable provisioning with chef server, specifying the chef server URL,
+ # and the path to the validation key (relative to this Vagrantfile).
+ #
+ # The Opscode Platform uses HTTPS. Substitute your organization for
+ # ORGNAME in the URL and validation key.
+ #
+ # If you have your own Chef Server, use the appropriate URL, which may be
+ # HTTP instead of HTTPS depending on your configuration. Also change the
+ # validation key to validation.pem.
+ #
+ # config.vm.provision :chef_client do |chef|
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+ # chef.validation_key_path = "ORGNAME-validator.pem"
+ # end
+ #
+ # If you're using the Opscode platform, your validator client is
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
+ #
+ # If you have your own Chef Server, the default validation client name is
+ # chef-validator, unless you changed the configuration.
+ #
+ # chef.validation_client_name = "ORGNAME-validator"
+end
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits