1# -*- mode: ruby -*- 2# vi: set ft=ruby : 3 4# All Vagrant configuration is done below. The "2" in Vagrant.configure 5# configures the configuration version (we support older styles for 6# backwards compatibility). Please don't change it unless you know what 7# you're doing. 8Vagrant.configure("2") do |config| 9 # The most common configuration options are documented and commented below. 10 # For a complete reference, please see the online documentation at 11 # https://docs.vagrantup.com. 12 13 # Every Vagrant development environment requires a box. You can search for 14 # boxes at https://vagrantcloud.com/search. 15 config.vm.guest = :freebsd 16 config.vm.box = "generic/freebsd12" 17 18 config.ssh.shell = "sh" 19 20 # Disable automatic box update checking. If you disable this, then 21 # boxes will only be checked for updates when the user runs 22 # `vagrant box outdated`. This is not recommended. 23 # config.vm.box_check_update = false 24 25 # Create a forwarded port mapping which allows access to a specific port 26 # within the machine from a port on the host machine. In the example below, 27 # accessing "localhost:8080" will access port 80 on the guest machine. 28 # NOTE: This will enable public access to the opened port 29 # config.vm.network "forwarded_port", guest: 80, host: 8080 30 31 # Create a forwarded port mapping which allows access to a specific port 32 # within the machine from a port on the host machine and only allow access 33 # via 127.0.0.1 to disable public access 34 # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 35 36 # Create a private network, which allows host-only access to the machine 37 # using a specific IP. 38 # config.vm.network "private_network", ip: "192.168.33.10" 39 40 # Create a public network, which generally matched to bridged network. 41 # Bridged networks make the machine appear as another physical device on 42 # your network. 43 # config.vm.network "public_network" 44 45 # Share an additional folder to the guest VM. The first argument is 46 # the path on the host to the actual folder. The second argument is 47 # the path on the guest to mount the folder. And the optional third 48 # argument is a set of non-required options. 49 #config.vm.synced_folder "../../..", "/home/vagrant/project" 50 config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true 51 52 config.vm.provision "file", source: "../../../../CMakeLists.txt", destination: "$HOME/project/" 53 config.vm.provision "file", source: "../../../../cmake", destination: "$HOME/project/" 54 config.vm.provision "file", source: "../../../../include", destination: "$HOME/project/" 55 config.vm.provision "file", source: "../../../../src", destination: "$HOME/project/" 56 config.vm.provision "file", source: "../../../../test", destination: "$HOME/project/" 57 58 # Provider-specific configuration so you can fine-tune various 59 # backing providers for Vagrant. These expose provider-specific options. 60 # Example for VirtualBox: 61 # 62 # config.vm.provider "virtualbox" do |vb| 63 # # Display the VirtualBox GUI when booting the machine 64 # vb.gui = true 65 # 66 # # Customize the amount of memory on the VM: 67 # vb.memory = "1024" 68 # end 69 # 70 # View the documentation for the provider you are using for more 71 # information on available options. 72 73 # Enable provisioning with a shell script. Additional provisioners such as 74 # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the 75 # documentation for more information about their specific syntax and use. 76 # note: clang installed by default 77 config.vm.provision "env", type: "shell", inline:<<-SHELL 78 set -x 79 pkg update -f 80 pkg install -y git cmake 81 SHELL 82 config.vm.provision "devel", type: "shell", inline:<<-SHELL 83 set -x 84 cd project 85 ls 86 SHELL 87 config.vm.provision "configure", type: "shell", inline:<<-SHELL 88 set -x 89 cd project 90 cmake -S. -Bbuild -DBUILD_TESTING=ON 91 SHELL 92 config.vm.provision "build", type: "shell", inline:<<-SHELL 93 set -x 94 cd project 95 cmake --build build -v 96 SHELL 97 config.vm.provision "test", type: "shell", inline:<<-SHELL 98 set -x 99 cd project 100 cmake --build build --target test -v 101 SHELL 102 config.vm.provision "test", type: "shell", inline:<<-SHELL 103 set -x 104 cd project 105 cmake --build build --target install -v 106 SHELL 107end 108