github.com/jurelou/go-magic@v0.0.0-20230518182705-f2995a311800/Vagrantfile (about) 1 # Provisioning script which installs development dependencies. 2 script = %{ 3 #!/bin/bash 4 5 set -e 6 7 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 8 9 echo 'Starting provisioning ...' 10 11 # Avoid the configuration file questions ... 12 cat <<'EOF' | sudo tee /etc/apt/apt.conf.d/99vagrant &>/dev/null 13 DPkg::options { "--force-confdef"; "--force-confnew"; } 14 EOF 15 16 # Disable need for user interaction ... 17 export DEBIAN_FRONTEND=noninteractive 18 19 # Update package repositories ... 20 sudo apt-get update &> /dev/null 21 22 # Install needed build time dependencies ... 23 sudo apt-get install --force-yes -y \ 24 curl \ 25 git \ 26 mercurial \ 27 make \ 28 patch \ 29 bison \ 30 flex \ 31 build-essential \ 32 autoconf \ 33 automake \ 34 autotools-dev \ 35 libltdl-dev \ 36 libtool \ 37 libtool-doc &> /dev/null 38 39 # Remove existing "libmagic-dev" package. 40 sudo apt-get remove --purge --force-yes -y libmagic-dev &> /dev/null 41 42 # Clean up unneeded packages ... 43 { 44 sudo apt-get autoremove --force-yes -y 45 sudo apt-get autoclean --force-yes -y 46 sudo apt-get clean --force-yes -y 47 } &> /dev/null 48 49 # Select appropriate "godeb" package. 50 # XXX(kwilczynski): Should "gvm" be used instead? 51 case $(uname -m) in 52 i?86) godeb_package="godeb-386.tar.gz" ;; 53 x86_64) godeb_package="godeb-amd64.tar.gz" ;; 54 esac 55 56 # Download and unpack "godeb" package. 57 { 58 curl -s https://godeb.s3.amazonaws.com/${godeb_package} | tar zxvf - -C . 59 } &> /dev/null 60 61 # Run "godeb" and install Go Language interpreter. 62 { 63 sudo ./godeb install 64 } &> /dev/null 65 66 echo 'All done!' 67 } 68 69 # Select appropriate Vagrant box per underlying architecture. 70 box = "precise#{lambda { ['x'].pack('P').size * 8 }.()}" 71 72 # Virtual Machine name et al. 73 name = "go-magic-#{box}" 74 75 Vagrant.configure("2") do |config| 76 config.ssh.forward_agent = true 77 78 if config.vm.respond_to? :box_check_update 79 config.vm.box_check_update = true 80 end 81 82 if config.vm.respond_to? :use_linked_clone 83 config.use_linked_clone = true 84 end 85 86 config.vm.define name.to_sym do |machine| 87 machine.vm.box = "hashicorp/#{box}" 88 machine.vm.hostname = name 89 90 machine.vm.provider :virtualbox do |vb| 91 vb.linked_clone = true if Vagrant::VERSION =~ /^1.8/ 92 vb.name = name 93 vb.gui = false 94 vb.customize ['modifyvm', :id, 95 '--memory', '512', 96 '--cpus', '1', 97 '--rtcuseutc', 'on', 98 '--natdnshostresolver1', 'on', 99 '--natdnsproxy1', 'on', 100 '--nictype1', 'virtio' 101 ] 102 end 103 104 machine.vm.provision :shell, privileged: false, inline: script 105 end 106 end