From patchwork Thu Mar 30 23:27:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Jansa X-Patchwork-Id: 21980 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72AFDC6FD1D for ; Thu, 30 Mar 2023 23:27:44 +0000 (UTC) Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by mx.groups.io with SMTP id smtpd.web11.42224.1680218854556300898 for ; Thu, 30 Mar 2023 16:27:34 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="signature has expired" header.i=@gmail.com header.s=20210112 header.b=e+aGKCGF; spf=pass (domain: gmail.com, ip: 209.85.208.49, mailfrom: martin.jansa@gmail.com) Received: by mail-ed1-f49.google.com with SMTP id eh3so82910139edb.11 for ; Thu, 30 Mar 2023 16:27:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680218853; x=1682810853; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=P8U1qWkGz2arjMJi1RWjgHZ1C+AKtlRlHsZIFGcihek=; b=e+aGKCGFjHIutUUVSNbskUCZR3yVO38La1+dH+grkEQJ4esB49zjDUpRVFKO8V925R JPTVy8J5PEOaoPVOs3DOdjstv1BHAVejKcvKLojnjU8zAK6KDqZYfeuyPXgbOtlw8Yrm bpVQhSar3mIIPS7gxbfS8eWrsV9bdxZ+KZhK+RGCtZbkSLSqPPro52QnXTwmS7gCPyul jJkpaNdGxHxYDMKv7vZJ44mWOy9A81MrpvijLwvnVhm96mSb+CHxQDEEvzWLjjbEOlAQ fJdZDOTWsX8yOHAidLXx1BcUpOl0rKzjZfKJXAo8mJ5KoJS47tyC19rDVPkFLLzQQVTE w9hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680218853; x=1682810853; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=P8U1qWkGz2arjMJi1RWjgHZ1C+AKtlRlHsZIFGcihek=; b=XjwCrYF4yRkPLDBnibRv+nFCcv5JLOYvOouKXwOJxhOMVqDelaFJt/ZNVMkVmWs6C1 +cyz3VvDxKQGO1pHXXSl+7SYrQqQntGH937VJpTI3n7EaAfltrdO2XrNxQTh4tg6cX1b k6QvQeo7pmkc/INUnZDd98YvSnNon4UjIKMXmziO4HTOf62zKe/NV8AVa6wt0WMZFhFj tH70BlFMcoMlEacP67qKEFKYC7BI2y1rohMYsEfi+MBHncc4tA1mxFpPA9Da0dfTwFAx gFTZa21E9KyzBw2QGZwf3fDOihq3s8AYn0cNFtFxcPl1fTnwYdBwiCcF1wiOjOml/oTj 3NIA== X-Gm-Message-State: AAQBX9deTCigeppWJ4mlqW+iH+LSgQpDwpjxJJD4xuCB/oiTUGtxLC4l VGF6jcGWUK8U1wAVHeVhptJ3ZPrwrWw= X-Google-Smtp-Source: AKy350byj3pUtN5p2KVljKcq/+TcVDSPrduHiYnPxc3jperF+k/jPavrlOVY6lTVDsa2zPwkjwCWOQ== X-Received: by 2002:a17:907:1c2a:b0:886:7e24:82eb with SMTP id nc42-20020a1709071c2a00b008867e2482ebmr27564694ejc.21.1680218852723; Thu, 30 Mar 2023 16:27:32 -0700 (PDT) Received: from localhost (ip-109-238-218-228.aim-net.cz. [109.238.218.228]) by smtp.gmail.com with ESMTPSA id a23-20020a170906369700b0092a59ee224csm309222ejc.185.2023.03.30.16.27.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 16:27:32 -0700 (PDT) From: Martin Jansa X-Google-Original-From: Martin Jansa To: openembedded-core@lists.openembedded.org Cc: Martin Jansa Subject: [PATCH 1/3] selftest: runqemu: better check for ROOTFS: in the log Date: Fri, 31 Mar 2023 01:27:22 +0200 Message-Id: <20230330232724.2868639-1-Martin.Jansa@gmail.com> X-Mailer: git-send-email 2.40.0 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 30 Mar 2023 23:27:44 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179378 * it was searching for line like this: ROOTFS: [/OE/build/poky/build/build-st-2023-03-20-esdk-runqemu-patch1/runqemu.RunqemuTests.test_boot_machine_ext4/build-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64-20230320081121.rootfs.ext4] but with IMAGE_NAME_SUFFIX changed to something else than default ".rootfs" or with my pending changes the line looks like this: ROOTFS: [/OE/build/poky/build/build-st-2023-03-20-esdk-runqemu-patch2/runqemu.RunqemuTests.test_boot_machine_ext4/build-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs-20230320085744.ext4] and test was failing. * Check for whole line starting with ROOTFS: and ending just with .ext4 [YOCTO #12937] Signed-off-by: Martin Jansa --- meta/lib/oeqa/selftest/cases/runqemu.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meta/lib/oeqa/selftest/cases/runqemu.py b/meta/lib/oeqa/selftest/cases/runqemu.py index e72ff529c4..4c6eca5970 100644 --- a/meta/lib/oeqa/selftest/cases/runqemu.py +++ b/meta/lib/oeqa/selftest/cases/runqemu.py @@ -61,7 +61,8 @@ SYSLINUX_TIMEOUT = "10" cmd = "%s %s ext4" % (self.cmd_common, self.machine) with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: with open(qemu.qemurunnerlog) as f: - self.assertIn('rootfs.ext4', f.read(), "Failed: %s" % cmd) + regexp = r'\nROOTFS: .*\.ext4]\n' + self.assertRegex(f.read(), regexp, "Failed to find '%s' in '%s' after running '%s'" % (regexp, qemu.qemurunnerlog, cmd)) @skipIfNotArch(['i586', 'i686', 'x86_64']) def test_boot_machine_iso(self): From patchwork Thu Mar 30 23:27:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Jansa X-Patchwork-Id: 21979 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72B46C761AF for ; Thu, 30 Mar 2023 23:27:44 +0000 (UTC) Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by mx.groups.io with SMTP id smtpd.web11.42225.1680218855276671192 for ; Thu, 30 Mar 2023 16:27:35 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="signature has expired" header.i=@gmail.com header.s=20210112 header.b=j0b7UY27; spf=pass (domain: gmail.com, ip: 209.85.208.50, mailfrom: martin.jansa@gmail.com) Received: by mail-ed1-f50.google.com with SMTP id eh3so82910295edb.11 for ; Thu, 30 Mar 2023 16:27:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680218854; x=1682810854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2ZtOUbsp0oj9e0spNoak4rTegFzhbdMynV9r/hT8q/0=; b=j0b7UY27PhhgO4d5TuU2rNCTx9vKqfaSKwDia6AckeLDeUlZjvt8LmBTKHSnP8jBaq fP/wyKURqBKK2BLZdM6Vfr6pQl4g1rJL0Qrt/WiLTztmeY3R0evligAY+QntZvb1VNmb jVYbcMWLMTTLpVE5d5lyM3di05erq7kynt8RD3AygDStM0Jh9uE//l9NGz8XRgtEAHq/ Adh3eeBLbgkdxa+hqg28Ir0Kj97Rw3eqRFXKki28q2sA5iI7aLjDinDwIx0PJ6pvJHvl mDp1GLR2wpCX+nebUe0YcsX90YFhAEswxRUOOcYUxeRYatsVHB0CI5W8XnF6kseMM62K WXpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680218854; x=1682810854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2ZtOUbsp0oj9e0spNoak4rTegFzhbdMynV9r/hT8q/0=; b=ratU4P2amQdDJ4A8z2N9cGB/qIIXc0fmbV7hFY1p9LgIpipXWydxRtuUElIzij/8QQ eLGvZtFsolKP5FHjA53mm2lgc1cGEmDAQoNHxRFMMee6ggMzYFELnvU8xnWiDcrBa1/O Ibqx58YufzIygF+iuw9jCgjRgFXNXGHcyjNrJK2GnT5CTZfpJjDBYEZh2qMgDY8kQbpY 9YxJCuYH4O91T6wmydnXFF41tgz52KSLy68/jiboNuN/H7DhoGrMA6qIyUER/amMQuyh hVJ+SW6UptpF96Ml0GAjRHLecFf7i28Wp4QfIvrBMGsQbpZHLWlpv6aOEhXR1YIYaf90 N+zA== X-Gm-Message-State: AAQBX9e7TzTVOp1CT+zu5k/uF2UTuedy/cW990lBRV44m1aNhRMq4FZM br5WckupUZEgRsLExGwFwx/7Qw5e9mU= X-Google-Smtp-Source: AKy350a5ljVYsytiVdCO+n8TedwE5bTnSh37lrsjQr9sKGTII3paUOitdkt0EGe+AOUwzF4gbg8Fzg== X-Received: by 2002:a17:906:94cd:b0:931:f9f8:bf9e with SMTP id d13-20020a17090694cd00b00931f9f8bf9emr24044148ejy.74.1680218853601; Thu, 30 Mar 2023 16:27:33 -0700 (PDT) Received: from localhost (ip-109-238-218-228.aim-net.cz. [109.238.218.228]) by smtp.gmail.com with ESMTPSA id w14-20020a170906384e00b00932fa67b48fsm309765ejc.183.2023.03.30.16.27.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 16:27:33 -0700 (PDT) From: Martin Jansa X-Google-Original-From: Martin Jansa To: openembedded-core@lists.openembedded.org Cc: Martin Jansa Subject: [PATCH 2/3] selftest: runqemu: use better error message when asserts fail Date: Fri, 31 Mar 2023 01:27:23 +0200 Message-Id: <20230330232724.2868639-2-Martin.Jansa@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230330232724.2868639-1-Martin.Jansa@gmail.com> References: <20230330232724.2868639-1-Martin.Jansa@gmail.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 30 Mar 2023 23:27:44 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179379 * It was showing whole log and that the runqemu command failed, but not where the log file is, nor why it thinks the runqemu failed [YOCTO #12937] Signed-off-by: Martin Jansa --- meta/lib/oeqa/selftest/cases/runqemu.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/runqemu.py b/meta/lib/oeqa/selftest/cases/runqemu.py index 4c6eca5970..e6efd752ef 100644 --- a/meta/lib/oeqa/selftest/cases/runqemu.py +++ b/meta/lib/oeqa/selftest/cases/runqemu.py @@ -70,7 +70,8 @@ SYSLINUX_TIMEOUT = "10" cmd = "%s %s iso" % (self.cmd_common, self.machine) with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: with open(qemu.qemurunnerlog) as f: - self.assertIn('media=cdrom', f.read(), "Failed: %s" % cmd) + text_in = 'media=cdrom' + self.assertIn(text_in, f.read(), "Failed to find '%s' in '%s' after running '%s'" % (text_in, qemu.qemurunnerlog, cmd)) def test_boot_recipe_image(self): """Test runqemu recipe-image""" @@ -86,7 +87,8 @@ SYSLINUX_TIMEOUT = "10" cmd = "%s %s wic.vmdk" % (self.cmd_common, self.recipe) with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: with open(qemu.qemurunnerlog) as f: - self.assertIn('format=vmdk', f.read(), "Failed: %s" % cmd) + text_in = 'format=vmdk' + self.assertIn(text_in, f.read(), "Failed to find '%s' in '%s' after running '%s'" % (text_in, qemu.qemurunnerlog, cmd)) @skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently") def test_boot_recipe_image_vdi(self): @@ -94,7 +96,8 @@ SYSLINUX_TIMEOUT = "10" cmd = "%s %s wic.vdi" % (self.cmd_common, self.recipe) with runqemu(self.recipe, ssh=False, launch_cmd=cmd) as qemu: with open(qemu.qemurunnerlog) as f: - self.assertIn('format=vdi', f.read(), "Failed: %s" % cmd) + text_in = 'format=vdi' + self.assertIn(text_in, f.read(), "Failed to find '%s' in '%s' after running '%s'" % (text_in, qemu.qemurunnerlog, cmd)) def test_boot_deploy(self): """Test runqemu deploy_dir_image""" From patchwork Thu Mar 30 23:27:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Jansa X-Patchwork-Id: 21981 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8BA18C77B6C for ; Thu, 30 Mar 2023 23:27:44 +0000 (UTC) Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by mx.groups.io with SMTP id smtpd.web10.42107.1680218856188240092 for ; Thu, 30 Mar 2023 16:27:36 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="signature has expired" header.i=@gmail.com header.s=20210112 header.b=Xlk0aJUw; spf=pass (domain: gmail.com, ip: 209.85.208.50, mailfrom: martin.jansa@gmail.com) Received: by mail-ed1-f50.google.com with SMTP id w9so83019760edc.3 for ; Thu, 30 Mar 2023 16:27:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680218854; x=1682810854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J0Z9NrTN4FqCfnSMsEJngZkpEdpDN7/sJQsgX4wb9qo=; b=Xlk0aJUwSHGmtX6Sx10ynWy2ajJMf0sarCGcWcjkj15FwfyU9BY50CwfyZJRg0qBcP 8j3BxemHOdk0F5y3xWb9kCnmHjNAYnhi0T6ZlBa80oJNhvU74WlopVuXO3Ka1D/MJucb BUqLmotMjuUXaJ0RuP/Wtdcnfs6Xyem3ow1mu47T+SCkneIthZi8NfqZO98COjGtQqVy BnlqgTmGsPljNJtp5AQ2sUAUYtSQRy+XztOfi5gTVpNArLEXupw4dmM8I2Jn1xvGZILa b+9tnvgORCLWN0eUTFRTCfgNFyNeUoI5wyscRwuoP2pi6rp0zW8OzLu+g8WySrJm59hK hq4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680218854; x=1682810854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J0Z9NrTN4FqCfnSMsEJngZkpEdpDN7/sJQsgX4wb9qo=; b=1TGCu/xBnaA1cZCjO/U0VTJi2u2TiaLWBeaePJ0YHuj3J4jJn8WL77UEx5qHt/I3NI ueb5TuHE6MJH2YI84Bj/squxx2QehOWL0F1A1NQWsFKQSwjR4B2GAk/cJFRsjCMunt8Q Esdr7xXpJMOp2Eq0FD9AmaXm9J0/I1aHa9bbij+U5p3m64LyNPo3XpsC5A4/0BCjEBfu iX0XkagldiZKWb6XEuX1Xhf7ZmaO3epI1sPjccDXgrnA/Tbc0yfBrdbY1Kfq+fy7o7G7 EUDnWvHjzN3TBLxlbLHavxE8nyKY100gXQFByIf/CsaxJCX1F7x4VAPCXD6fBA45To23 +2Bw== X-Gm-Message-State: AAQBX9fLwJ01jKFC6qlnpPIFqSsAR50slMSj2aF0kZ1lwQYmXu6Rl86f vd/DJ4g7eTAzYnEaI0ZjTFVV5o+eqAo= X-Google-Smtp-Source: AKy350ZVkkvddCvmvtrNuIT1SMtKCrEqvU+AqHHL19y85TD/mtVZmWF6bi4/kH6tRnbinZGx7Ad5Pw== X-Received: by 2002:a17:906:31cb:b0:92c:a80e:225f with SMTP id f11-20020a17090631cb00b0092ca80e225fmr28419689ejf.52.1680218854366; Thu, 30 Mar 2023 16:27:34 -0700 (PDT) Received: from localhost (ip-109-238-218-228.aim-net.cz. [109.238.218.228]) by smtp.gmail.com with ESMTPSA id c10-20020a170906d18a00b00923f05b2931sm315705ejz.118.2023.03.30.16.27.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Mar 2023 16:27:34 -0700 (PDT) From: Martin Jansa X-Google-Original-From: Martin Jansa To: openembedded-core@lists.openembedded.org Cc: Martin Jansa Subject: [PATCH 3/3] runqemu: respect IMAGE_LINK_NAME Date: Fri, 31 Mar 2023 01:27:24 +0200 Message-Id: <20230330232724.2868639-3-Martin.Jansa@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230330232724.2868639-1-Martin.Jansa@gmail.com> References: <20230330232724.2868639-1-Martin.Jansa@gmail.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 30 Mar 2023 23:27:44 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/179380 * when searching for qemuboot.conf * don't assume that IMAGE_LINK_NAME is always - (with -.qemuboot.conf) * runqemu: use IMAGE_LINK_NAME set by testimage.bbclass or query with bitbake -e * testimage.bbclass was setting DEPLOY_DIR which I don't see used anywhere else, so I assume it was supposed to be DEPLOY_DIR_IMAGE as mentioned in corresponding runqemu code, do the same with IMAGE_LINK_NAME variable * add virtual/kernel as bitbake -e target in run_bitbake_env to make sure IMAGE_LINK_NAME is defined (kernel-artifact-names.bbclass inherits image-artifact-names.bbclass as well) * improve .qemuboot.conf search 1st search for file matching the rootfs and only when not found try again with .rootfs suffix removed [YOCTO #12937] Signed-off-by: Martin Jansa --- meta/classes-recipe/testimage.bbclass | 2 +- scripts/runqemu | 69 ++++++++++++++++++++------- 2 files changed, 52 insertions(+), 19 deletions(-) diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass index df22bb2344..b48cd96575 100644 --- a/meta/classes-recipe/testimage.bbclass +++ b/meta/classes-recipe/testimage.bbclass @@ -98,7 +98,7 @@ TESTIMAGELOCK:qemuall = "" TESTIMAGE_DUMP_DIR ?= "${LOG_DIR}/runtime-hostdump/" -TESTIMAGE_UPDATE_VARS ?= "DL_DIR WORKDIR DEPLOY_DIR" +TESTIMAGE_UPDATE_VARS ?= "DL_DIR WORKDIR DEPLOY_DIR_IMAGE IMAGE_LINK_NAME" testimage_dump_target () { top -bn1 diff --git a/scripts/runqemu b/scripts/runqemu index 09b0ad5ed5..4c06cefbff 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -384,13 +384,19 @@ class BaseConfig(object): fst = m.group(1) if fst: self.check_arg_fstype(fst) - qb = re.sub('\.' + fst + "$", '', self.rootfs) - qb = '%s%s' % (re.sub('\.rootfs$', '', qb), '.qemuboot.conf') + qb = re.sub('\.' + fst + "$", '.qemuboot.conf', self.rootfs) if os.path.exists(qb): self.qemuboot = qb self.qbconfload = True else: - logger.warning("%s doesn't exist" % qb) + logger.warning("%s doesn't exist, will try to remove '.rootfs' from filename" % qb) + # They to remove .rootfs (IMAGE_NAME_SUFFIX) as well + qb = re.sub('\.rootfs.qemuboot.conf$', '.qemuboot.conf', qb) + if os.path.exists(qb): + self.qemuboot = qb + self.qbconfload = True + else: + logger.warning("%s doesn't exist" % qb) else: raise RunQemuError("Can't find FSTYPE from: %s" % p) @@ -424,6 +430,7 @@ class BaseConfig(object): # are there other scenarios in which we need to support being # invoked by bitbake? deploy = self.get('DEPLOY_DIR_IMAGE') + image_link_name = self.get('IMAGE_LINK_NAME') bbchild = deploy and self.get('OE_TMPDIR') if bbchild: self.set_machine_deploy_dir(arg, deploy) @@ -448,6 +455,12 @@ class BaseConfig(object): else: logger.error("%s not a directory valid DEPLOY_DIR_IMAGE" % deploy_dir_image) self.set("MACHINE", arg) + if not image_link_name: + s = re.search('^IMAGE_LINK_NAME="(.*)"', self.bitbake_e, re.M) + if s: + image_link_name = s.group(1) + self.set("IMAGE_LINK_NAME", image_link_name) + logger.debug('Using IMAGE_LINK_NAME = "%s"' % image_link_name) def set_dri_path(self): drivers_path = os.path.join(self.bindir_native, '../lib/dri') @@ -550,11 +563,18 @@ to your build configuration. self.check_arg_machine(unknown_arg) if not (self.get('DEPLOY_DIR_IMAGE') or self.qbconfload): - self.load_bitbake_env() + self.load_bitbake_env(target=self.rootfs) s = re.search('^DEPLOY_DIR_IMAGE="(.*)"', self.bitbake_e, re.M) if s: self.set("DEPLOY_DIR_IMAGE", s.group(1)) + if not self.get('IMAGE_LINK_NAME') and self.rootfs: + s = re.search('^IMAGE_LINK_NAME="(.*)"', self.bitbake_e, re.M) + if s: + image_link_name = s.group(1) + self.set("IMAGE_LINK_NAME", image_link_name) + logger.debug('Using IMAGE_LINK_NAME = "%s"' % image_link_name) + def check_kvm(self): """Check kvm and kvm-host""" if not (self.kvm_enabled or self.vhost_enabled): @@ -660,8 +680,8 @@ to your build configuration. if self.rootfs and not os.path.exists(self.rootfs): # Lazy rootfs - self.rootfs = "%s/%s-%s.%s" % (self.get('DEPLOY_DIR_IMAGE'), - self.rootfs, self.get('MACHINE'), + self.rootfs = "%s/%s.%s" % (self.get('DEPLOY_DIR_IMAGE'), + self.get('IMAGE_LINK_NAME'), self.fstype) elif not self.rootfs: glob_name = '%s/%s*.%s' % (self.get('DEPLOY_DIR_IMAGE'), self.get('IMAGE_NAME'), self.fstype) @@ -865,8 +885,10 @@ to your build configuration. machine = self.get('MACHINE') if not machine: machine = os.path.basename(deploy_dir_image) - self.qemuboot = "%s/%s-%s.qemuboot.conf" % (deploy_dir_image, - self.rootfs, machine) + if not self.get('IMAGE_LINK_NAME'): + raise RunQemuError("IMAGE_LINK_NAME wasn't set to find corresponding .qemuboot.conf file") + self.qemuboot = "%s/%s.qemuboot.conf" % (deploy_dir_image, + self.get('IMAGE_LINK_NAME')) else: cmd = 'ls -t %s/*.qemuboot.conf' % deploy_dir_image logger.debug('Running %s...' % cmd) @@ -1600,7 +1622,7 @@ to your build configuration. self.cleaned = True - def run_bitbake_env(self, mach=None): + def run_bitbake_env(self, mach=None, target=''): bitbake = shutil.which('bitbake') if not bitbake: return @@ -1613,22 +1635,33 @@ to your build configuration. multiconfig = "mc:%s" % multiconfig if mach: - cmd = 'MACHINE=%s bitbake -e %s' % (mach, multiconfig) + cmd = 'MACHINE=%s bitbake -e %s %s' % (mach, multiconfig, target) else: - cmd = 'bitbake -e %s' % multiconfig + cmd = 'bitbake -e %s %s' % (multiconfig, target) logger.info('Running %s...' % cmd) - return subprocess.check_output(cmd, shell=True).decode('utf-8') + try: + return subprocess.check_output(cmd, shell=True).decode('utf-8') + except subprocess.CalledProcessError as err: + logger.warning("Couldn't run '%s' to gather environment information, maybe the target wasn't an image name, will retry with virtual/kernel as a target:\n%s" % (cmd, err.output.decode('utf-8'))) + # need something with IMAGE_NAME_SUFFIX/IMAGE_LINK_NAME defined (kernel also inherits image-artifact-names.bbclass) + target = 'virtual/kernel' + if mach: + cmd = 'MACHINE=%s bitbake -e %s %s' % (mach, multiconfig, target) + else: + cmd = 'bitbake -e %s %s' % (multiconfig, target) + try: + return subprocess.check_output(cmd, shell=True).decode('utf-8') + except subprocess.CalledProcessError as err: + logger.warning("Couldn't run '%s' to gather environment information, giving up with 'bitbake -e':\n%s" % (cmd, err.output.decode('utf-8'))) + return '' - def load_bitbake_env(self, mach=None): + + def load_bitbake_env(self, mach=None, target=None): if self.bitbake_e: return - try: - self.bitbake_e = self.run_bitbake_env(mach=mach) - except subprocess.CalledProcessError as err: - self.bitbake_e = '' - logger.warning("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8')) + self.bitbake_e = self.run_bitbake_env(mach=mach, target=target) def validate_combos(self): if (self.fstype in self.vmtypes) and self.kernel: