chiark / gitweb /
Merge branch 'master' into 'master'
authorDaniel Martí <mvdan@mvdan.cc>
Fri, 11 Mar 2016 23:53:25 +0000 (23:53 +0000)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 11 Mar 2016 23:53:25 +0000 (23:53 +0000)
makebuildserver: support running VirtualBox in a VM

For debian.jenkins.net, our test environment is a kvm instance that does not expose the hardware virtualization instructions.  So this auto-detects whether the current machine, virtual or not, supports the hardware virtualization.  If not, it uses VirtualBox's software emulator, which should run everywhere, even in a kvm instance.

See merge request !108

makebuildserver
setup.cfg

index 75e3650b7da1651f2171cdcb8f0c174b000ad61c..6570e6796482b64c87550e66bbe1f289f1700df0 100755 (executable)
@@ -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 += """
index bbd3a2abec669c49ce66de5f5cfd27f13e006459..069fb320b93ca3b70ca67e5b47c56101207904b9 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -2,5 +2,5 @@
 description-file = README.md
 
 [aliases]
-release = register sdist --sign upload
+release = register sdist upload --sign