From patchwork Tue Jan 20 19:47:20 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ungerer X-Patchwork-Id: 79267 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 5D551D2629B for ; Tue, 20 Jan 2026 19:47:39 +0000 (UTC) Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.15236.1768938455108816665 for ; Tue, 20 Jan 2026 11:47:35 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20230601 header.b=bTp1UjDl; spf=pass (domain: gmail.com, ip: 209.85.208.195, mailfrom: ungerer.ricardo@gmail.com) Received: by mail-lj1-f195.google.com with SMTP id 38308e7fff4ca-382fe06a9c4so43291151fa.2 for ; Tue, 20 Jan 2026 11:47:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768938453; x=1769543253; darn=lists.openembedded.org; 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=dyl+veSfTu9TaNN2ceFFTUMZJYSaf7zWSsKBnlA/+6g=; b=bTp1UjDleSWHIHoion+1lTFz7J6M+eUf5g75IFKXdOg188zEAu9YUYqNj+x1l5Buxa d59Fo0I40d8+OH2J+3BU4cqTqHyxYB0JJZJSNOx1dy0jFOV8cfi2R5LPPyes650KtRsJ KPFypkAkEHy3duLVxybZH/RIKZDRry4L7ZY/faIqc3n9bRs9dK3c/tDY5B3os5BUJ7NH oTBJkLOoDsGf1mEPErgDLCS3F9s6Dcuw/PFEMu8JxedfnPurRTTO4jrKdVqsANT6/ja3 ifb1Hu7pGY7uxIpDoT5lHbT2EX4iIUEq1DbouTsjtnlNn3ICIHnGRp4rYV65uOUUEmfB /k9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768938453; x=1769543253; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dyl+veSfTu9TaNN2ceFFTUMZJYSaf7zWSsKBnlA/+6g=; b=weUMC4m7w0Oi6u+ev2GkTYeQO+ysIRwdHMwNqy6A0DNykbnSIFbVFmmovU1xFKWTdn mRnNxY0PKyseE0C2jzNd9k33RPk6mF61xXQaewxD8h/cGw2zn/HBIr+EcbFTsNMy73I/ /yBTHyNo9BecGaxv/8y3fmyuFXPDifXICFN0GpVXBGKu+UqwVsSmc4XlIQJUyaI3mCvU N0tIhJCkf4yrNmZ4Keb5x9jfcqriOnimqZ6FaqGn2I80zI0OMCxjSHZruLCQv/4QMybe Ww/5/+k/KBcbEVhYLlxlJjONbTapUifdu7gWRLzxNtq3A3s+tB/gwxeOeV360X9Mmxx2 /Pnw== X-Gm-Message-State: AOJu0Yy8yRlH9/+w040bHvpXBE4MuNFi8Z4Iq6AC/wKuuWlkM4oEqp1B 0pnaM5IU9WppcyrNVFw2At87PMjnCtgg2hIjg8FrG8vuBxS9YMsz98Zc3kjLjjLV X-Gm-Gg: AZuq6aL7ODUi4gmQMlmbek/n94uQjDAVMpqFsD4/Gj95gACCnqRI2LUVKxsrFytxD3N TrxTt/oYXDTDWzMAwRHOtH8t6GqJJUfawXehlMEoooNaL6z8y5UB6JbWwcSmSCsojva48uEUdno mQ7aK+oPNyv4WaHlduniQdzqGLbwHF1UZ4w0qybAi4ten0ZLamJib0aPtp00lQlsWxH4nRIE6/F wzJGyIRcqIo88HLy6dgh28YGGYEjq9MVIbB9663rBJBeyi3A08WU/LbWXMEpmExRg++/t5oMCIe KBNR2NFY3JQYMx+SqzPXe5DrgFxfh6lxR9CKc1ahlrLMyNiV1+Cb1s97H8x5UDITPnOqoW7eqc2 7gpB73UJnBN2uU/4UrN9ZAa/jENE62L4rYOuAqezYd4FLPB7C1l8vP1bI7I6oWY1BDSDgHRYGSC ED2/8q5D3XN6aRpr4K X-Received: by 2002:a05:6512:3b89:b0:598:faf1:3c95 with SMTP id 2adb3069b0e04-59baffd3394mr4948142e87.36.1768938452362; Tue, 20 Jan 2026 11:47:32 -0800 (PST) Received: from bolonheso.. ([45.94.208.114]) by smtp.googlemail.com with ESMTPSA id 2adb3069b0e04-59baf9d442dsm4395035e87.94.2026.01.20.11.47.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 11:47:31 -0800 (PST) From: Ricardo Ungerer To: openembedded-core@lists.openembedded.org Cc: Ricardo Ungerer Subject: [PATCH 1/3] yocto-check-layer: Add messages in test_readme assertions Date: Tue, 20 Jan 2026 19:47:20 +0000 Message-ID: <20260120194722.142355-2-ungerer.ricardo@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120194722.142355-1-ungerer.ricardo@gmail.com> References: <20260120194722.142355-1-ungerer.ricardo@gmail.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 20 Jan 2026 19:47:39 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/229789 Assertions in test_readme does not provide context message when they fail. Which leads to errors like: File "/media/workspace/yocto_master/openembedded-core/scripts/lib/checklayer/cases/common.py", line 41, in test_readme self.assertTrue(email_regex.match(data)) AssertionError: None is not true This patch adds context messages to the assertions to help identify the issue when they fail. Signed-off-by: Ricardo Ungerer --- scripts/lib/checklayer/cases/common.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/lib/checklayer/cases/common.py b/scripts/lib/checklayer/cases/common.py index ddead69a7b..0114481434 100644 --- a/scripts/lib/checklayer/cases/common.py +++ b/scripts/lib/checklayer/cases/common.py @@ -32,13 +32,14 @@ class CommonCheckLayer(OECheckLayerTestCase): # If a layer's README references another README, then the checks below are not valid if re.search('README', data, re.IGNORECASE): + print("Layer README references another README; skipping further README checks.") return - self.assertIn('maintainer', data.lower()) - self.assertIn('patch', data.lower()) + self.assertIn('maintainer', data.lower(), msg="No maintainer info found in README.") + self.assertIn('patch', data.lower(), msg="No patching information found in README.") # Check that there is an email address in the README email_regex = re.compile(r"[^@]+@[^@]+") - self.assertTrue(email_regex.match(data)) + self.assertTrue(email_regex.match(data), msg="No email address found in README.") def find_file_by_name(self, globs): """ From patchwork Tue Jan 20 19:47:21 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ungerer X-Patchwork-Id: 79269 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 342E2D2629C for ; Tue, 20 Jan 2026 19:47:49 +0000 (UTC) Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.15237.1768938459712384975 for ; Tue, 20 Jan 2026 11:47:40 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20230601 header.b=XxE4kLEg; spf=pass (domain: gmail.com, ip: 209.85.167.52, mailfrom: ungerer.ricardo@gmail.com) Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-59b72a1e2f0so6718040e87.0 for ; Tue, 20 Jan 2026 11:47:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768938457; x=1769543257; darn=lists.openembedded.org; 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=V4Xiv8RLKVQDpes8AJ6Xt7Td0iiUU0khCfUbFMstCaA=; b=XxE4kLEggutTmTsCW6xFP07lGWUtJjEBqKdhIBEZ6uc/L3Czd1hCKLkNxBRbU//+zU Zo/wHAfFMaXDCkFBEh1l9ZW4MmrPudmN8DUI8CgLR7cUK1OojGlJQvYRt97+NJV8s38a Afl3uFXCKkQeEronFTEe4dCXGPNry0atMy/qqKaANKhmMwoWx35bKQVG9GH3MfBsutVu pZsCLH/NUl52e4eYr+S+pMjje3XKlI/6FwRncFD0NeNd/JGRvOLEBVE5zmSIcTnP9nvM dnuarp3HcLM3N5hW9+RZOXHIpoVbQfg7Py1T1CGWNr3yKYawiTOaMMPfmOZ01vkQQhs3 0zzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768938457; x=1769543257; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=V4Xiv8RLKVQDpes8AJ6Xt7Td0iiUU0khCfUbFMstCaA=; b=VpkO0fVvkTg/oDT2lPHkecCzfR+N3CYCwDpDNUmUiHc4/qBZq8YJlVYGAJVl7mV084 2PqZ1TLZLkIIEWodBB+g+uu1rcSzmteQetdul5OsnpbaAWZvqm5je0C3Qj+PFxjtPG2N BqdEw7p7q8MskE7NMsiBME44MHnGj29FJ1VEqtf6pIMSTk9BF+hOh19yanj7+xRNyUH+ 0lY0CtEGcSa8MQrkQexHf+oY5ZGuQRnJw391+ZNnzDLUUdTXbv/Agy4vRm804tqV3+WZ YfJ8xzzQP4KoErbQ50bN3VdAk59epqzi9cPdP1o5RvE33y7Tmrmonhod6Tm6XofcNHia fPXQ== X-Gm-Message-State: AOJu0YyZDEcnHmtNhMhGHCSX2X7BVw98bhlncHcUxEDLaslXUrNBlAgq oQzpzkzAfCEkSPR+l6816ewv5yPaVftpa71oUpOOOr3w9Z6eBkYYPXuOyplIuA== X-Gm-Gg: AZuq6aKj/obTW4R/tolDS3nUvLLLh3EiOfOjcHtkrh2lqncl8r4ex96VWni3T/ByTEj A6vHlsZb1gB95mUJDkmsZFbcW040sFQTpfw+JlesKCpAJrwNY1wF8D0R7k2q6DzceX77ddlP7QE 9iuhMY7KncZFWlPoQdWu3sIu3CXxHPKbbG+WLjQiaUDCbGqx8zfdjZJJqDAEF7y8PVRPpON7R8K hWml5SNWSuK8kJvCuC8ucKRqxyx5y6Ya3kD7MedyXtyXHcsMda/SPJ+8JJMWln1g++HwwcrzGuH 2rJS/BlFMyStMBNTpY9oHDp1fwBbk1bEBu75dmRs6syardpICqVLZh9tHeW8iw6iawbfkmhs0ir e/Mo6SXSNYhR/3nMZxOg1xsGXWTObhynASc9e4QHpiWIAyjoHSKuXPJ52f+CwszGuQeaPBJ9HXF c9EzNG5y8nsj8X7ThU X-Received: by 2002:a05:6512:3c8a:b0:59a:103d:2918 with SMTP id 2adb3069b0e04-59dc93565d1mr919200e87.37.1768938457196; Tue, 20 Jan 2026 11:47:37 -0800 (PST) Received: from bolonheso.. ([45.94.208.114]) by smtp.googlemail.com with ESMTPSA id 2adb3069b0e04-59baf9d442dsm4395035e87.94.2026.01.20.11.47.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 11:47:35 -0800 (PST) From: Ricardo Ungerer To: openembedded-core@lists.openembedded.org Cc: Ricardo Ungerer Subject: [PATCH 2/3] yocto-check-layer: Fix README email check Date: Tue, 20 Jan 2026 19:47:21 +0000 Message-ID: <20260120194722.142355-3-ungerer.ricardo@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120194722.142355-1-ungerer.ricardo@gmail.com> References: <20260120194722.142355-1-ungerer.ricardo@gmail.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 20 Jan 2026 19:47:49 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/229790 So far the test_readme have been use of re.match to find an email address in the README file. This only matches if the email address is at the start of the file. This commit changes this to re.search to find email addresses anywhere in the README file. Signed-off-by: Ricardo Ungerer --- scripts/lib/checklayer/cases/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lib/checklayer/cases/common.py b/scripts/lib/checklayer/cases/common.py index 0114481434..9ea7592ba6 100644 --- a/scripts/lib/checklayer/cases/common.py +++ b/scripts/lib/checklayer/cases/common.py @@ -39,7 +39,7 @@ class CommonCheckLayer(OECheckLayerTestCase): self.assertIn('patch', data.lower(), msg="No patching information found in README.") # Check that there is an email address in the README email_regex = re.compile(r"[^@]+@[^@]+") - self.assertTrue(email_regex.match(data), msg="No email address found in README.") + self.assertTrue(email_regex.search(data), msg="No email address found in README.") def find_file_by_name(self, globs): """ From patchwork Tue Jan 20 19:47:22 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ungerer X-Patchwork-Id: 79268 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 35CFBD2629A for ; Tue, 20 Jan 2026 19:47:49 +0000 (UTC) Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.15080.1768938463345248668 for ; Tue, 20 Jan 2026 11:47:43 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Oh3jOmWO; spf=pass (domain: gmail.com, ip: 209.85.167.42, mailfrom: ungerer.ricardo@gmail.com) Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-59b685d2b79so5760728e87.3 for ; Tue, 20 Jan 2026 11:47:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768938461; x=1769543261; darn=lists.openembedded.org; 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=yvbtazrSmmBTfhLiBCH2JL2jkbxn9kQ8Sm8e9do1RnE=; b=Oh3jOmWOdTLgnQ3tzKXYU8hsHGAlOLoi3X0I//Mg6SKcCvlVuP5O+elawwlzwecUUM LQkHPhPvUxa2kCVl1Auq33Wq3/B54/293xAN2pn0GNvinMzhv3BOMgdQYbDbN+Q4fauX 48bbixhvJ2vw69Cj2h3nJ77qqXAr+TYl7xvNSZg2YOMAt9u/fmgm1HvFm+5VJmMabrZO R8w8PVmvReenckj3YWrWmAj2kuA1Lz1kRaAco/zFzLQz2QFGtJjC7YXHZygVs81knQkG rFfBvdt+ErODQIghzFr9CurWyHO1hZO5tXWcRsjuzMjP/RNzxEQxHUq2SU2L3/2VBP9Q wgaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768938461; x=1769543261; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yvbtazrSmmBTfhLiBCH2JL2jkbxn9kQ8Sm8e9do1RnE=; b=SyRyvf93w/wpTU9xrDMP1SXot2/8tITGFCXg0hpu7BO9J3i89qn9nffFyavlTv7go3 Fn/90HYERH2HK5PQe1lQ8LOwUXwVqo6GEvRPR8JnSTxv/F7m3UYuXyz5s8CsTMXbmivV ejhcuz+CJxxWgEu+/7QtCdjHl1uRTu0Yy2Q4d0zVeVuEzurqBpvf3WIF55Bye11efpbv H7NQqrK7i0pZd6VaVEP60jBrnpSd7Sku1BgRPUKStZdzgRKumTogbWDjzSnI/POwUaQn hl57AEiJGv38SxmeK+JBhgDfmesAIl89M4FLuHI2EfEfz7LWtBJVBa7hbWK6Ukcth5yU sZ2g== X-Gm-Message-State: AOJu0YwoV9DwlCnZ5JmYKCUtxa/8iDAEi/bBik6vcHQHQfpNjC5uTTVP nVwd4aikG8ATdybbltQ4BYFnM9vnstNL89zFEbasUwFnkH0CPn5I4L1PVCZCpA== X-Gm-Gg: AZuq6aJ5mdHwtAOun1YKAduGOVxjyc6FA41TTKRGCqyzZll40hpJqoJcUke59hQLqke YhsfmwekcUla7KajpN1GJL9uk2ElHbVR0Mt5bWxnzou9MMj6sjwdPOUv+I9erUqIcKHsAlBmXFM SXHbhtGebnixR60eg29/ClCygQYRLaqLomHH0knPs1kl5ZHPwfUmmB+1m8u/VPGruDihUysmFQR llDdGWI0v0oTdYB9WE1O4Gk22s3I1yyjjl2sr7c65mpZeOoDsefNR8c4EP+kRrt0ViS5iDQgs9w aIrYk90VOw9NKC1VchaO71Bzd5gZbzak4cecNcObavslHFhjygKn/9H7tyvMPfMHd8jOaPnuSdy dUET7hYJLXCL7o5XkeyVft4ZWdYSWcPB6SgDq8xDaGI6n/ChPMEkHBamoE1dP+vB005uN5DlKKW hO+yPvl0Tilg+G87E6 X-Received: by 2002:a05:6512:4025:b0:594:2c64:54c9 with SMTP id 2adb3069b0e04-59baeee3979mr4748836e87.37.1768938460743; Tue, 20 Jan 2026 11:47:40 -0800 (PST) Received: from bolonheso.. ([45.94.208.114]) by smtp.googlemail.com with ESMTPSA id 2adb3069b0e04-59baf9d442dsm4395035e87.94.2026.01.20.11.47.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 11:47:40 -0800 (PST) From: Ricardo Ungerer To: openembedded-core@lists.openembedded.org Cc: Ricardo Ungerer Subject: [PATCH 3/3] yocto-check-layer: Add docstring to test_readme method Date: Tue, 20 Jan 2026 19:47:22 +0000 Message-ID: <20260120194722.142355-4-ungerer.ricardo@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260120194722.142355-1-ungerer.ricardo@gmail.com> References: <20260120194722.142355-1-ungerer.ricardo@gmail.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 20 Jan 2026 19:47:49 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/229791 Signed-off-by: Ricardo Ungerer --- scripts/lib/checklayer/cases/common.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/lib/checklayer/cases/common.py b/scripts/lib/checklayer/cases/common.py index 9ea7592ba6..d20559e163 100644 --- a/scripts/lib/checklayer/cases/common.py +++ b/scripts/lib/checklayer/cases/common.py @@ -12,6 +12,16 @@ from checklayer.case import OECheckLayerTestCase class CommonCheckLayer(OECheckLayerTestCase): def test_readme(self): + """ + Test that the layer contains a valid README file and that is meets + the following criteria: + 1. A README file exists in the layer's root directory (case-insensitive) + 2. The README file is not empty + 3. The README contains maintainer information (checks for the word "maintainer") + 4. The README contains patching instructions (checks for the word "patch") + 5. The README contains at least one email address + If the README references another README file, steps 3, 4, and 5 are skipped. + """ if self.tc.layer['type'] == LayerType.CORE: raise unittest.SkipTest("Core layer's README is top level")