From 1b95452c142f26731b4e73a892d5041260b4fd1c Mon Sep 17 00:00:00 2001 From: Marcus Hoffmann Date: Wed, 12 Sep 2018 14:04:09 +0200 Subject: [PATCH] vmtools: use whatever buildserver box is available When we don't have an already working builder/.vagrant directory look for available buildserver vagrant boxes because we'll need to import one. Abort if there's no buildserver box. Fixes: #497 --- fdroidserver/vmtools.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/fdroidserver/vmtools.py b/fdroidserver/vmtools.py index f085afaf..b1c77d53 100644 --- a/fdroidserver/vmtools.py +++ b/fdroidserver/vmtools.py @@ -149,8 +149,25 @@ def get_build_vm(srvdir, provider=None): logging.debug('build vm provider lookup found \'virtualbox\'') return VirtualboxBuildVm(abssrvdir) - logging.info('build vm provider lookup could not determine provider, defaulting to \'virtualbox\'') - return VirtualboxBuildVm(abssrvdir) + # try guessing provider from available buildserver boxes + available_boxes = [] + import vagrant + boxes = vagrant.Vagrant().box_list() + for box in boxes: + if box.name == "buildserver": + available_boxes.append(box.provider) + if "libvirt" in available_boxes and "virtualbox" in available_boxes: + logging.info('basebox lookup found virtualbox and libvirt boxes, defaulting to \'virtualbox\'') + return VirtualboxBuildVm(abssrvdir) + elif "libvirt" in available_boxes: + logging.info('\'libvirt\' buildserver box available, using that') + return LibvirtBuildVm(abssrvdir) + elif "virtualbox" in available_boxes: + logging.info('\'virtualbox\' buildserver box available, using that') + return VirtualboxBuildVm(abssrvdir) + else: + logging.error('No available \'buildserver\' box. Cannot proceed') + os._exit(1) class FDroidBuildVmException(FDroidException):