Contact Us!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
Ardupilot

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Vagrantfile
Views: 2672
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Testing an ArduPilot VM:
# rm -rf /vagrant/build
# dpkg -l | grep modemmanager
# sim_vehicle.py --map --console # in the starting directory should start a Copter simulation
# sim_vehicle.py --debug --gdb
# sim_vehicle.py --debug --valgrind
#
# Make testing rather faster:
# time rsync -aPH /vagrant/ $HOME/ardupilot  # real	8m13.712s
# time (cd $HOME/ardupilot && ./waf configure --board=fmuv2 && ./waf build --target=bin/ardusub) # ~9 minutes
# time (cd $HOME/ardupilot && ./waf configure --board=fmuv3 && ./waf build --target=bin/ardusub) # ~ minutes (after building fmuv2)
# time (cd $HOME/ardupilot && ./waf configure --board=navio2 && ./waf build --target=bin/arduplane)
# time (cd $HOME/ardupilot && ./Tools/autotest/sim_vehicle.py --map --console -v ArduPlane -f jsbsim) # should test JSBSim
# time (cd $HOME/ardupilot && ./Tools/autotest/autotest.py build.Rover test.Rover)

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.ssh.forward_x11 = true

  # 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|
      # Don't boot with headless mode
      #   vb.gui = true
      #
      #   # Use VBoxManage to customize the VM. For example to change memory:
      vb.customize ["modifyvm", :id, "--memory", "3192"]
      vb.customize ["modifyvm", :id, "--ioapic", "on"]
      vb.customize ["modifyvm", :id, "--cpus", "2"]
      # Make some effort to avoid clock skew
      vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", "5000"]
      vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-start"]
      vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore", "1"]
  end

  # If you are on windows then you must use a version of git >= 1.8.x
  # to update the submodules in order to build. Older versions of git
  # use absolute paths for submodules which confuses things.

  # removing this line causes "A box must be specified." error
  # and this is the default box that will be booted if no name is specified
  config.vm.boot_timeout = 1500

  config.vm.define "autotest-server", primary: true do |autotest|
    autotest.vm.box = "ubuntu/jammy64"
    autotest.vm.provision :shell, path: "Tools/vagrant/initvagrant-autotest-server.sh"
    autotest.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (autotest-server)"
    end
    autotest.vm.boot_timeout = 1200
  end

  # 20.04 LTS  EOL April 2025
  config.vm.define "focal", autostart: false do |focal|
    focal.vm.box = "ubuntu/focal64"
    focal.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
    focal.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (focal)"
    end
    focal.vm.boot_timeout = 1200
  end
  config.vm.define "focal-desktop", autostart: false do |focal|
    focal.vm.box = "ubuntu/focal64"
    focal.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
    focal.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (focal-desktop)"
      vb.gui = true
    end
    focal.vm.boot_timeout = 1500
  end

  # 22.04 LTS EOL Apr 2032
  config.vm.define "jammy", primary: true do |jammy|
    jammy.vm.box = "ubuntu/jammy64"
    jammy.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
    jammy.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (jammy)"
    end
    jammy.vm.boot_timeout = 1200
  end
  config.vm.define "jammy-desktop", autostart: false do |jammy|
    jammy.vm.box = "ubuntu/jammy64"
    jammy.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
    jammy.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (jammy-desktop)"
      vb.gui = true
    end
    jammy.vm.boot_timeout = 1200
  end

  # 23.04 EOL Jan 2024
  config.vm.define "lunar", autostart: false do |lunar|
    lunar.vm.box = "ubuntu/lunar64"
    lunar.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
    lunar.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (lunar)"
    end
    lunar.vm.boot_timeout = 1200
  end
  config.vm.define "lunar-desktop", autostart: false do |lunar|
    lunar.vm.box = "ubuntu/lunar64"
    lunar.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
    lunar.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (lunar-desktop)"
      vb.gui = true
    end
    lunar.vm.boot_timeout = 1200
  end

  # 23.10 EOL Jul 2024
  config.vm.define "mantic", autostart: false do |mantic|
    mantic.vm.box = "ubuntu/mantic64"
    mantic.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
    mantic.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (mantic)"
    end
    mantic.vm.boot_timeout = 1200
  end
  config.vm.define "mantic-desktop", autostart: false do |mantic|
    mantic.vm.box = "ubuntu/mantic64"
    mantic.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
    mantic.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (mantic-desktop)"
      vb.gui = true
    end
    mantic.vm.boot_timeout = 1200
  end

  # 24.04 end of standard support Jun 2029
  # note the use of "bento" here; Ubuntu stopped providing Vagrant
  # images due to Hashicorp adopting the "Business Source License".
  config.vm.define "noble", autostart: false do |noble|
    noble.vm.box = "bento/ubuntu-24.04"
    noble.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
    noble.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (noble)"
    end
    noble.vm.boot_timeout = 1200
  end
  config.vm.define "noble-desktop", autostart: false do |noble|
    noble.vm.box = "bento/ubuntu-24.04"
    noble.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
    noble.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (noble-desktop)"
      vb.gui = true
    end
    noble.vm.boot_timeout = 1200
  end

  # 24.10 end of standard support ??
  # note the use of "bento" here; Ubuntu stopped providing Vagrant
  # images due to Hashicorp adopting the "Business Source License".
  config.vm.define "oracular", autostart: false do |oracular|
    oracular.vm.box = "alvistack/ubuntu-24.10"
    oracular.vm.provision :shell, path: "Tools/vagrant/initvagrant.sh"
    oracular.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (oracular)"
    end
    oracular.vm.boot_timeout = 1200
  end
  config.vm.define "oracular-desktop", autostart: false do |oracular|
    oracular.vm.box = "alvistack/ubuntu-24.10"
    oracular.vm.provision :shell, path: "Tools/vagrant/initvagrant-desktop.sh"
    oracular.vm.provider "virtualbox" do |vb|
      vb.name = "ArduPilot (oracular-desktop)"
      vb.gui = true
    end
    oracular.vm.boot_timeout = 1200
  end
end