mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-09 00:40:11 +01:00
28a4f9481a
This makes it so it is easy to reuse this script in other contexts, like in Docker, GitLab CI, etc.
91 lines
3.3 KiB
Ruby
91 lines
3.3 KiB
Ruby
|
|
require 'yaml'
|
|
require 'pathname'
|
|
|
|
srvpath = Pathname.new(File.dirname(__FILE__)).realpath
|
|
configfile = YAML.load_file(File.join(srvpath, "/Vagrantfile.yaml"))
|
|
|
|
Vagrant.configure("2") do |config|
|
|
|
|
# these two caching methods conflict, so only use one at a time
|
|
if Vagrant.has_plugin?("vagrant-cachier") and not configfile.has_key? "aptcachedir"
|
|
config.cache.scope = :box
|
|
config.cache.auto_detect = false
|
|
config.cache.enable :apt
|
|
config.cache.enable :chef
|
|
end
|
|
|
|
config.vm.box = configfile['basebox']
|
|
if configfile.has_key? "basebox_version"
|
|
config.vm.box_version = configfile['basebox_version']
|
|
end
|
|
|
|
if not configfile.has_key? "vm_provider" or configfile["vm_provider"] == "virtualbox"
|
|
# default to VirtualBox if not set
|
|
config.vm.provider "virtualbox" do |v|
|
|
v.customize ["modifyvm", :id, "--memory", configfile['memory']]
|
|
v.customize ["modifyvm", :id, "--cpus", configfile['cpus']]
|
|
v.customize ["modifyvm", :id, "--hwvirtex", configfile['hwvirtex']]
|
|
end
|
|
synced_folder_type = 'virtualbox'
|
|
elsif configfile["vm_provider"] == "libvirt"
|
|
# use KVM/QEMU if this is running in KVM/QEMU
|
|
config.vm.provider :libvirt do |libvirt|
|
|
libvirt.driver = configfile["hwvirtex"] == "on" ? "kvm" : "qemu"
|
|
libvirt.host = "localhost"
|
|
libvirt.uri = "qemu:///system"
|
|
libvirt.cpus = configfile["cpus"]
|
|
libvirt.memory = configfile["memory"]
|
|
if configfile.has_key? "libvirt_disk_bus"
|
|
libvirt.disk_bus = configfile["libvirt_disk_bus"]
|
|
end
|
|
if configfile.has_key? "libvirt_nic_model_type"
|
|
libvirt.nic_model_type = configfile["libvirt_nic_model_type"]
|
|
end
|
|
end
|
|
if configfile.has_key? "synced_folder_type"
|
|
synced_folder_type = configfile["synced_folder_type"]
|
|
else
|
|
synced_folder_type = '9p'
|
|
end
|
|
config.vm.synced_folder './', '/vagrant', type: synced_folder_type,
|
|
SharedFoldersEnableSymlinksCreate: false
|
|
else
|
|
abort("No supported VM Provider found, set vm_provider in Vagrantfile.yaml!")
|
|
end
|
|
|
|
config.vm.boot_timeout = configfile['boot_timeout']
|
|
|
|
if configfile.has_key? "aptproxy"
|
|
config.vm.provision :shell, path: "provision-apt-proxy",
|
|
args: [configfile["aptproxy"]]
|
|
end
|
|
|
|
# buildserver/ is shared to the VM's /vagrant by default so the old
|
|
# default does not need a custom mount
|
|
if configfile["cachedir"] != "buildserver/cache"
|
|
config.vm.synced_folder configfile["cachedir"], '/vagrant/cache',
|
|
create: true, type: synced_folder_type
|
|
end
|
|
# Make sure dir exists to mount to, since buildserver/ is
|
|
# automatically mounted as /vagrant in the guest VM. This is more
|
|
# necessary with 9p synced folders
|
|
Dir.mkdir('cache') unless File.exists?('cache')
|
|
|
|
# cache .deb packages on the host via a mount trick
|
|
if configfile.has_key? "aptcachedir"
|
|
config.vm.synced_folder configfile["aptcachedir"], "/var/cache/apt/archives",
|
|
owner: 'root', group: 'root', create: true
|
|
end
|
|
|
|
config.vm.provision "shell", path: "setup-env-vars",
|
|
args: ["/opt/android-sdk"]
|
|
config.vm.provision "shell", path: "provision-apt-get-install",
|
|
args: [configfile['debian_mirror']]
|
|
config.vm.provision "shell", path: "provision-android-sdk"
|
|
config.vm.provision "shell", path: "provision-android-ndk",
|
|
args: ["/opt/android-sdk/ndk", "r21e", "r22b"]
|
|
config.vm.provision "shell", path: "provision-gradle"
|
|
|
|
end
|