From nobody Mon May 20 18:31:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1559938610; cv=none; d=zoho.com; s=zohoarc; b=RRHceotvWAWzMYEauzzD9cwqTzsJAtXZsutUNRoA+kqIjnyU9YPcxkHKWAAOGKdNgduduXv8ziziHuWFFwxh84pIAcbLC2bnqasfMKp4WM8RajnHQO9ICz56uwMZyAQLp3oSOHLRRLOb6XZmoYfhRCmvlpTFGI2duTx2ujqQ3QE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1559938610; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To:ARC-Authentication-Results; bh=FAAPWl2/V0iy+paRMznAnMUNuGKtzl/qFFkGtAWRKLM=; b=DyL6EkEhoVz9IWJwtaoeRIsZZafWxSTFMymtDZygP8/X0yUWNQPEX+d6HGWUKBjI5+AHFVifN8COjh6NMg2CRuewd6NLxFrFtBGJBU5uM0ecmXmLJilji4hxavreERYuXaradSAH2d8u7D3OurmuvWg54aopr0eCFzb9LV+QpmM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1559938609900989.2484283103486; Fri, 7 Jun 2019 13:16:49 -0700 (PDT) Received: from localhost ([::1]:52772 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hZLI0-0005r8-GA for importer@patchew.org; Fri, 07 Jun 2019 16:16:40 -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) 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) 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-Google-Smtp-Source: APXvYqyS9jkHHyM1w2/YLw6ZMMSpmMKX+EXQG295F2FCRcsHJlWgdutyYmD/aWKvM9D6Scv6XyWsUA== X-Received: by 2002:adf:f246:: with SMTP id b6mr10411033wrp.92.1559933620253; Fri, 07 Jun 2019 11:53:40 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Alex=20Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) 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=C3=A9e --- 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(-) 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", ] =20 + # path for seaching for qemu + qemu_build_dir =3D None + # The script to run in the guest that builds QEMU BUILD_SCRIPT =3D "" # The guest name, to be overridden by subclasses @@ -155,6 +158,19 @@ class BaseVM(object): "-device", "virtio-blk,drive=3D%s,serial=3D%s,bootindex= =3D1" % (name, name)] =20 + def set_qemu_build_dir(self, build_dir): + self.qemu_build_dir =3D build_dir + + def _find_best_qemu(self): + "Return a QEMU we should use. Use the locally built one if we can." + bin_name =3D "qemu-system-" + self.arch + if self.qemu_build_dir: + bin_path =3D "%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=3D[]): args =3D self._args + [ "-device", "VGA", @@ -162,7 +178,7 @@ class BaseVM(object): "-device", "virtio-blk,drive=3Ddrive0,bootindex=3D0"] args +=3D self._data_args + extra_args logging.debug("QEMU args: %s", " ".join(args)) - qemu_bin =3D os.environ.get("QEMU", "qemu-system-" + self.arch) + qemu_bin =3D os.environ.get("QEMU", self._find_best_qemu()) guest =3D QEMUMachine(binary=3Dqemu_bin, args=3Dargs) guest.set_machine('pc') guest.set_console() @@ -327,6 +343,8 @@ def parse_args(vmcls): help=3D"build QEMU from source in guest") parser.add_option("--build-target", help=3D"QEMU build target", default=3D"check") + parser.add_option("--build-dir", default=3D"flibble", + help=3D"QEMU build directory", action=3D"store") parser.add_option("--interactive", "-I", action=3D"store_true", help=3D"Interactively run command") parser.add_option("--snapshot", "-s", action=3D"store_true", @@ -348,6 +366,7 @@ def main(vmcls): sys.stderr.writelines(["Image file exists: %s\n" % args.im= age, "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) --=20 2.20.1