From 6f254ff7b6affdbf6c65b341e416498ec41ea21f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 10 Mar 2016 09:51:20 +0100 Subject: [PATCH] makebuildserver: use VB software virt if hardware is not available This checks the local CPU settings to see if it has the right virtualizing CPU instructions, and only uses VirtualBox hardware virtualization on setups where it is available. VMs instances usually do not provide these instructions. Where the CPU features are not available, it will use VB's software virtualization. --- makebuildserver | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/makebuildserver b/makebuildserver index 94d6695f..588c1289 100755 --- a/makebuildserver +++ b/makebuildserver @@ -338,6 +338,20 @@ if type(config['baseboxurl']) in (list, tuple) or config['baseboxurl'][0] in ('( else: baseboxurl = '"{0}"'.format(config['baseboxurl']) +# use VirtualBox software virtualization if hardware is not available, +# like if this is being run in kvm or some other VM platform, like +# http://jenkins.debian.net, the values are 'on' or 'off' +hwvirtex = 'off' +if sys.platform.startswith('darwin'): + # all < 10 year old Macs work, and OSX servers as VM host are very + # rare, but this could also be auto-detected if someone codes it + hwvirtex = 'on' +elif os.path.exists('/proc/cpuinfo'): + with open('/proc/cpuinfo') as f: + contents = f.read() + if 'vmx' in contents or 'svm' in contents: + hwvirtex = 'on' + # Generate an appropriate Vagrantfile for the buildserver, based on our # settings... vagrantfile = """ @@ -356,15 +370,17 @@ Vagrant.configure("2") do |config| config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--memory", "{2}"] v.customize ["modifyvm", :id, "--cpus", "{3}"] + v.customize ["modifyvm", :id, "--hwvirtex", "{4}"] end - config.vm.boot_timeout = {4} + config.vm.boot_timeout = {5} config.vm.provision :shell, :path => "fixpaths.sh" """.format(config['basebox'], baseboxurl, config['memory'], config.get('cpus', 1), + hwvirtex, config['boot_timeout']) if 'aptproxy' in config and config['aptproxy']: vagrantfile += """ -- 2.30.2