From patchwork Fri Jun 7 18:53:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 166191 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp1085145ili; Fri, 7 Jun 2019 13:16:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqyrY6zkZm1XKvA1gG9G5Mzas5WZrtrLpuNi223qscOHQdWV/+QxCgATLAckU5WzkKcXaZXN X-Received: by 2002:a37:6512:: with SMTP id z18mr46420506qkb.158.1559938615050; Fri, 07 Jun 2019 13:16:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559938615; cv=none; d=google.com; s=arc-20160816; b=UKaVA0jxtJnbusACK+enyKj1KtekNVkZPvGcqcLaT87O+E7ESk+/q5TJoo97NfjHbE T3vZ0cX2tio1fnKUcmX2SJfkap9Wbcb84RZt6YmcYLn4IIZJaqdOdtXBOwajWg7YMpPG OcSKuR05jdgwJM0cFe2mRvQklj2OWrdkEs1v6Y6fSWehmzLgGZnAobD/EiWQU2jxWHz8 5ZNB9qfy0S2m10gPmS1DZwCtvPyn+DKtRex8u2sMG/hp0Xl0Xa/dXMHogzildhI/gryW M8KhgOjylSNiXS2HrP0DieqNJgqaWBMIy1geZo+5i12rsH1pc/+kTcgXzbahcRypFp8L YF7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:message-id:date:to:from :dkim-signature; bh=FAAPWl2/V0iy+paRMznAnMUNuGKtzl/qFFkGtAWRKLM=; b=uxZAdRaGd0fLHqJFzEPA68x/EwYkVTliweeqm7V2eb+6s3AIWvA3iB4hjJR4IeaeRZ oJ3RDs4rIzmKX00YUQxXnyRVJz2UCxmPKkXu4xBp/rE8YUp+CLXWSHvP4Ok+R1z4lWar GE7cWJHCnQezUCIF7AQBFBWizTmDzhouCDMuJjnrcwlWZ9Z2pjHJ+n8M94TtHpjByY3P vWFNPLSyJLOuXmMZqCL/0o4UxneYyvce9kMk3oWLKXdW1bQLer6ji6rjVAvSFGN5npMb OrENL2MgAK1xBvRmEPxQ3AYNU5ZHcPtJw51UcPVP/xv3rG/VbTLi8CZfd+McWgvZRJDy ueAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ffR7fiMe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a55si1981806qtk.80.2019.06.07.13.16.54 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 07 Jun 2019 13:16:55 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ffR7fiMe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:52774 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZLIE-0006I0-NE for patch@linaro.org; Fri, 07 Jun 2019 16:16:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57311) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZJzo-0006fZ-Q9 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 14:53:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hZJzm-0002NW-P9 for qemu-devel@nongnu.org; Fri, 07 Jun 2019 14:53:48 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:41709) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hZJzl-00029u-0I for qemu-devel@nongnu.org; Fri, 07 Jun 2019 14:53:46 -0400 Received: by mail-wr1-x442.google.com with SMTP id c2so3129946wrm.8 for ; Fri, 07 Jun 2019 11:53:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=FAAPWl2/V0iy+paRMznAnMUNuGKtzl/qFFkGtAWRKLM=; b=ffR7fiMemag5d+7B4EkzCu+hbr53ZIZhRI/GHNLlyL4o9A7V0WeK6O5E6dlVO4Lcxh PyVxvj+pXhBQ8xR2PJdoh+lANRN23iZKujSVdpVLjOtpcy236R4+kF4wXyBRoBdrJ8fJ 6FC0MNBlARaPgYduVuxCLTcogNo82CVmM0Rn/R1cWMbhi/8ARZAkTAWyJyRdDwUotl6j Yl5UDRYbeO3oD3nc5SsIuYS3UUKCRPSdIUnbfVPpONvadI/KWV8Jxn8numZrgiebMZED TRdYTmJgtbColgNgOp+GZeB2yBo6QnwkCnIs4uMa/oY17S+ijw6mbi7mZ1bzu4RrsUKc lRCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=FAAPWl2/V0iy+paRMznAnMUNuGKtzl/qFFkGtAWRKLM=; b=HNF+NR5noxyhe8kjzAkO4wJezb+W3sOzu5bwhGMMhJYV8Q16MgHPoCSBpUd0c6v8EA 6e9VYSqr61NMlERyQRafQzI7TBabtS1y3xmZYbP9U3j8d5M4MSsE5ufuhK23uGa7CkY6 FvsyWMMiA/d/hnL5u95nYBFp70XLUPlWRexksqyEQpNK2unQJHGNU9mQW9p0tQsHT0UJ TLuzC5oz1lGXOu5YwD0STrujzL8vJ9djXfPLp3V2OgSD0LAksFfsyYJT1OahT5uVpvJq Abe8RagGzwp7s0aOHNrBOkILGW0Rr2b/bK5G/TvAt2KMAXmwjHpbKx5JDkobIVoI32g/ EzyA== X-Gm-Message-State: APjAAAXgan7IYro3gjd9LATpTj6GdQjMIAwSGGMx7dP4WKux2VaHADwZ iiVBujZfHuBMdQEvkyh2xzR38Q== X-Received: by 2002:adf:f246:: with SMTP id b6mr10411033wrp.92.1559933620253; Fri, 07 Jun 2019 11:53:40 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id o15sm3451464wrw.42.2019.06.07.11.53.39 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 07 Jun 2019 11:53:39 -0700 (PDT) Received: from zen.linaroharston. (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 4713B1FF87; Fri, 7 Jun 2019 19:53:39 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Fri, 7 Jun 2019 19:53:37 +0100 Message-Id: <20190607185337.14524-1-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH] tests/vm: favour the locally built QEMU for bootstrapping X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" It turns out that relying on the system installed QEMU can result in problems especially if it has been patched. Seeing as this is a developer tool and we should be dogfooding we favour the locally built binary if it exists. The developer always has the option of overriding their locally broken build with the QEMU environment variable. Signed-off-by: Alex Bennée --- This applies on top of my PR and will get rolled into v2 if people are happy with it. --- tests/vm/Makefile.include | 1 + tests/vm/basevm.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) -- 2.20.1 diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include index 5e37063d32..b49e5e2f2c 100644 --- a/tests/vm/Makefile.include +++ b/tests/vm/Makefile.include @@ -48,6 +48,7 @@ $(IMAGES_DIR)/%.img: $(SRC_PATH)/tests/vm/% \ $(call quiet-command, \ $(PYTHON) $< \ $(if $(V)$(DEBUG), --debug) \ + --build-dir $(BUILD_DIR) \ --image "$@" \ --force \ --build-image $@, \ diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index d4b816be14..1a8850ba98 100755 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -48,6 +48,9 @@ class BaseVM(object): "no_proxy", ] + # path for seaching for qemu + qemu_build_dir = None + # The script to run in the guest that builds QEMU BUILD_SCRIPT = "" # The guest name, to be overridden by subclasses @@ -155,6 +158,19 @@ class BaseVM(object): "-device", "virtio-blk,drive=%s,serial=%s,bootindex=1" % (name, name)] + def set_qemu_build_dir(self, build_dir): + self.qemu_build_dir = build_dir + + def _find_best_qemu(self): + "Return a QEMU we should use. Use the locally built one if we can." + bin_name = "qemu-system-" + self.arch + if self.qemu_build_dir: + bin_path = "%s/%s-softmmu/%s" % (self.qemu_build_dir, + self.arch, bin_name) + if os.path.exists(bin_path): + return bin_path + return bin_name + def boot(self, img, extra_args=[]): args = self._args + [ "-device", "VGA", @@ -162,7 +178,7 @@ class BaseVM(object): "-device", "virtio-blk,drive=drive0,bootindex=0"] args += self._data_args + extra_args logging.debug("QEMU args: %s", " ".join(args)) - qemu_bin = os.environ.get("QEMU", "qemu-system-" + self.arch) + qemu_bin = os.environ.get("QEMU", self._find_best_qemu()) guest = QEMUMachine(binary=qemu_bin, args=args) guest.set_machine('pc') guest.set_console() @@ -327,6 +343,8 @@ def parse_args(vmcls): help="build QEMU from source in guest") parser.add_option("--build-target", help="QEMU build target", default="check") + parser.add_option("--build-dir", default="flibble", + help="QEMU build directory", action="store") parser.add_option("--interactive", "-I", action="store_true", help="Interactively run command") parser.add_option("--snapshot", "-s", action="store_true", @@ -348,6 +366,7 @@ def main(vmcls): sys.stderr.writelines(["Image file exists: %s\n" % args.image, "Use --force option to overwrite\n"]) return 1 + vm.set_qemu_build_dir(args.build_dir) return vm.build_image(args.image) if args.build_qemu: vm.add_source_dir(args.build_qemu)