From 0b506befd616219621a968e2a51bab9b254299d8 Mon Sep 17 00:00:00 2001 From: Daniel Narvaez Date: Wed, 28 Nov 2012 02:07:48 +0000 Subject: Don't hardcode xvfb display --- diff --git a/commands/common.py b/commands/common.py index b26e192..118716e 100644 --- a/commands/common.py +++ b/commands/common.py @@ -1,5 +1,6 @@ import os import sys +import subprocess base_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) helpers_dir = os.path.join(base_dir, "commands", "helpers") @@ -9,6 +10,13 @@ sys.path.append(base_dir) from devbot import system from devbot import config from devbot import distro +from devbot import xvfb + +class _DisplayProvider: + def find_free_display(self): + helper_path = os.path.join(config.libexec_dir, + "sugar-runner", "find-free-display") + return subprocess.check_output([helper_path]) def setup(): config.load_plugins() @@ -52,3 +60,5 @@ def setup(): package_files.append("buildslave") config.set_package_files(package_files) + + xvfb.set_display_provider(_DisplayProvider()) diff --git a/devbot/xvfb.py b/devbot/xvfb.py index 6549b9d..b650bf1 100644 --- a/devbot/xvfb.py +++ b/devbot/xvfb.py @@ -3,9 +3,15 @@ import subprocess from devbot import utils -xvfb_display = ":100" +_display_provider = None + +def set_display_provider(provider): + global _display_provider + _display_provider = provider def start(): + xvfb_display = _display_provider.find_free_display() + xvfb_proc = subprocess.Popen(args=["Xvfb", xvfb_display], stdout=utils.devnull, stderr=subprocess.STDOUT) @@ -16,7 +22,7 @@ def start(): def stop(xvfb_proc, orig_display): if orig_display: - os.environ["DISPLAY"] = xvfb_display + os.environ["DISPLAY"] = orig_display else: del os.environ["DISPLAY"] -- cgit v0.9.1