4 # Testing an ArduPilot VM:
5 # rm -rf /vagrant/build
6 # dpkg -l | grep modemmanager
7 # sim_vehicle.py --map --console # in the starting directory should start a Copter simulation
8 # sim_vehicle.py --debug --gdb
9 # sim_vehicle.py --debug --valgrind
10 # time (cd /vagrant && ./waf configure --board=fmuv2 && ./waf build --target=bin/ardusub) # ~9 minutes
11 # time (cd /vagrant && ./waf configure --board=fmuv3 && ./waf build --target=bin/ardusub) # ~ minutes (after building fmuv2)
12 # time (cd /vagrant && ./waf configure --board=navio2 && ./waf build --target=bin/arduplane)
13 # time (cd /vagrant && ./Tools/autotest/sim_vehicle.py --map --console -v ArduPlane -f jsbsim) # should test JSBSim
14 # time (cd /vagrant && ./Tools/autotest/autotest.py build.Rover test.Rover)
16 # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
17 VAGRANTFILE_API_VERSION = "2"
19 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
20 config.ssh.forward_x11 = true
22 # Provider-specific configuration so you can fine-tune various
23 # backing providers for Vagrant. These expose provider-specific options.
24 # Example for VirtualBox:
26 config.vm.provider "virtualbox" do |vb|
27 # Don't boot with headless mode
30 # # Use VBoxManage to customize the VM. For example to change memory:
31 vb.customize ["modifyvm", :id, "--memory", "3192"]
32 vb.customize ["modifyvm", :id, "--ioapic", "on"]
33 vb.customize ["modifyvm", :id, "--cpus", "2"]
34 # Make some effort to avoid clock skew
35 vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", "5000"]
36 vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-start"]
37 vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore", "1"]
40 # If you are on windows then you must use a version of git >= 1.8.x
41 # to update the submodules in order to build. Older versions of git
42 # use absolute paths for submodules which confuses things.
44 # removing this line causes "A box must be specified." error
45 # and this is the default box that will be booted if no name is specified
46 config.vm.box = "ubuntu/bionic64"
47 config.vm.boot_timeout = 1500
49 # LTS, EOL April, 2019:
50 config.vm.define "trusty32", autostart: false do |trusty32|
51 trusty32.vm.box = "ubuntu/trusty32"
52 trusty32.vm.provision "trusty32", type: "shell", path: "Tools/vagrant/initvagrant.sh"
53 trusty32.vm.provider "virtualbox" do |vb|
54 vb.name = "ArduPilot (trusty32)"
58 # 14.04.5 LTS, EOL April, 2019:
59 config.vm.define "trusty64", autostart: false do |trusty64|
60 trusty64.vm.box = "ubuntu/trusty64"
61 trusty64.vm.provision "trusty64", type: "shell", path: "Tools/vagrant/initvagrant.sh"
62 trusty64.vm.provider "virtualbox" do |vb|
63 vb.name = "ArduPilot (trusty64)"
68 # this VM is useful for running valgrind on!
69 config.vm.define "xenial32", autostart: false do |xenial32|
70 xenial32.vm.box = "ubuntu/xenial32"
71 xenial32.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
72 xenial32.vm.provider "virtualbox" do |vb|
73 vb.name = "ArduPilot (xenial32)"
77 config.vm.define "xenial64", autostart: false do |xenial64|
78 xenial64.vm.box = "ubuntu/xenial64"
79 xenial64.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
80 xenial64.vm.provider "virtualbox" do |vb|
81 vb.name = "ArduPilot (xenial64)"
85 # NO LONGER AVAILABLE FOR DOWNLOAD, EOL January 2018
87 # Only kept around for those few dev's who have already got this image and continue to use it.
88 config.vm.define "zesty32", autostart: false do |zesty32|
89 zesty32.vm.box = "ubuntu/zesty32"
90 zesty32.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
91 zesty32.vm.provider "virtualbox" do |vb|
92 vb.name = "ArduPilot (zesty32)"
96 # 17.10, EOL July 2018
97 # Only kept around for those few dev's who have already got this image and continue to use it; not available for download
98 config.vm.define "artful32", autostart: false do |artful32|
99 artful32.vm.box = "ubuntu/artful32"
100 artful32.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
101 artful32.vm.provider "virtualbox" do |vb|
102 vb.name = "ArduPilot (artful32)"
106 # 18.04 LTS EOL April 2023
107 # Only kept around for those few dev's who have already got this image and continue to use it; not available for download
108 config.vm.define "bionic32", autostart: false do |bionic32|
109 bionic32.vm.box = "ubuntu/bionic32"
110 bionic32.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
111 bionic32.vm.provider "virtualbox" do |vb|
112 vb.name = "ArduPilot (bionic32)"
116 # 18.04 LTS EOL April 2023
117 config.vm.define "bionic64", primary: true do |bionic64|
118 bionic64.vm.box = "ubuntu/bionic64"
119 bionic64.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
120 bionic64.vm.provider "virtualbox" do |vb|
121 vb.name = "ArduPilot (bionic64)"
125 # 18.04 LTS EOL April 2023
126 config.vm.define "bionic64-desktop", autostart: false do |bionic64|
127 bionic64.vm.box = "ubuntu/bionic64"
128 bionic64.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
129 bionic64.vm.provider "virtualbox" do |vb|
130 vb.name = "ArduPilot (bionic64-desktop)"
136 config.vm.define "cosmic32", autostart: false do |cosmic32|
137 cosmic32.vm.box = "ubuntu/cosmic32"
138 cosmic32.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
139 cosmic32.vm.provider "virtualbox" do |vb|
140 vb.name = "ArduPilot (cosmic32)"
145 config.vm.define "cosmic64", autostart: false do |cosmic64|
146 cosmic64.vm.box = "ubuntu/cosmic64"
147 cosmic64.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
148 cosmic64.vm.provider "virtualbox" do |vb|
149 vb.name = "ArduPilot (cosmic64)"
154 config.vm.define "disco64", autostart: false do |disco64|
155 disco64.vm.box = "ubuntu/disco64"
156 disco64.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
157 disco64.vm.provider "virtualbox" do |vb|
158 vb.name = "ArduPilot (disco64)"
162 # 19.10 - broken; fails to use NamedTemporaryFile to create file for gdb
163 # config.vm.define "eoan", autostart: false do |eoan|
164 # eoan.vm.box = "ubuntu/eoan64"
165 # eoan.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
166 # eoan.vm.provider "virtualbox" do |vb|
167 # vb.name = "ArduPilot (eoan)"
169 # eoan.vm.boot_timeout = 1200
172 # 20.04 LTS EOL April 2025
173 config.vm.define "focal", autostart: false do |focal|
174 focal.vm.box = "ubuntu/focal64"
175 focal.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
176 focal.vm.provider "virtualbox" do |vb|
177 vb.name = "ArduPilot (focal)"
179 focal.vm.boot_timeout = 1200
181 config.vm.define "focal-desktop", autostart: false do |focal|
182 focal.vm.box = "ubuntu/focal64"
183 focal.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
184 focal.vm.provider "virtualbox" do |vb|
185 vb.name = "ArduPilot (focal-desktop)"
188 focal.vm.boot_timeout = 1500
191 # 20.10 EOL July 2021
192 # config.vm.define "groovy", autostart: false do |groovy|
193 # groovy.vm.box = "ubuntu/groovy64"
194 # groovy.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
195 # groovy.vm.provider "virtualbox" do |vb|
196 # vb.name = "ArduPilot (groovy)"
198 # groovy.vm.boot_timeout = 1200
201 # 21.04 EOL January 2022 apt repo down
202 # config.vm.define "hirsute", autostart: false do |hirsute|
203 # hirsute.vm.box = "ubuntu/hirsute64"
204 # hirsute.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
205 # hirsute.vm.provider "virtualbox" do |vb|
206 # vb.name = "ArduPilot (hirsute)"
208 # hirsute.vm.boot_timeout = 1200
210 # config.vm.define "hirsute-desktop", autostart: false do |hirsute|
211 # hirsute.vm.box = "ubuntu/hirsute64"
212 # hirsute.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
213 # hirsute.vm.provider "virtualbox" do |vb|
214 # vb.name = "ArduPilot (hirsute-desktop)"
217 # hirsute.vm.boot_timeout = 1200
220 # 21.10 EOL July 2022
221 # config.vm.define "impish", autostart: false do |impish|
222 # impish.vm.box = "ubuntu/impish64"
223 # impish.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
224 # impish.vm.provider "virtualbox" do |vb|
225 # vb.name = "ArduPilot (impish)"
227 # impish.vm.boot_timeout = 1200
230 # 22.04 LTS EOL Apr 2032
231 config.vm.define "jammy", autostart: false do |jammy|
232 jammy.vm.box = "ubuntu/jammy64"
233 jammy.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
234 jammy.vm.provider "virtualbox" do |vb|
235 vb.name = "ArduPilot (jammy)"
237 jammy.vm.boot_timeout = 1200
239 config.vm.define "jammy-desktop", autostart: false do |jammy|
240 jammy.vm.box = "ubuntu/jammy64"
241 jammy.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
242 jammy.vm.provider "virtualbox" do |vb|
243 vb.name = "ArduPilot (jammy-desktop)"
246 jammy.vm.boot_timeout = 1200