From patchwork Fri Jul 17 21:32:49 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Ripple X-Patchwork-Id: 92758 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 07AF0C4451B for ; Fri, 17 Jul 2026 21:33:11 +0000 (UTC) Received: from mx0a-003cac01.pphosted.com (mx0a-003cac01.pphosted.com [205.220.161.93]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.105.1784323987219243191 for ; Fri, 17 Jul 2026 14:33:07 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@keysight.com header.s=ppfeb2020 header.b=oAJFjISj; dkim=pass header.i=@keysight.com header.s=selector1 header.b=NAfknCmu; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: keysight.com, ip: 205.220.161.93, mailfrom: john.ripple@keysight.com) Received: from pps.filterd (m0187212.ppops.net [127.0.0.1]) by mx0b-003cac01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HLWl1N2855073 for ; Fri, 17 Jul 2026 14:33:07 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=keysight.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=ppfeb2020; bh= X8WnHZ2THrBU1OUp64yid8GTRqDyzwEJufA4gW9kyJ4=; b=oAJFjISjx6d1Wo+k SBUDZ3TTR2A2hPxutI9ydoeR8HJZzN2WsZTsMuJiMmCSP9yDPuD71Su3bfGbfa6f kOF+AlRcc7r3/sa/PveB/IHSpWWN3OnhctICMpuOhcmJ5s6vb/+IhlBNLiLy6mO/ ntNdgcd4gEHM0j9ppuxLyFW4PYwkK6uSpkoBSPfJtN1r7Uh7gg9CwTaL92tIsdLD /z5NAXxMowi9yi85Gj7qxyQYBjoKl6n8bXP2OPt6cTszBHCqZoTQg55Q2fYuXaOh ifYydv8+qVbRhAbmYqhx6EhM2qkuOOXvi16ZjPoB0jvdLfixRRiXlyO3Zw98RqUh i99aqQ== Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010008.outbound.protection.outlook.com [52.101.46.8]) by mx0b-003cac01.pphosted.com (PPS) with ESMTPS id 4ffgmwac26-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Fri, 17 Jul 2026 14:33:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dVYQHdSIFQe0mAzC7DiT9xWlFCE10QTEho9hmb6NexS/tqjfntSIOUnImBmwL5jbC5BTbOxLxZxQVCJYPYMnZMthOkbzv5x6M3gju2obn4RvzwAYCqqoCB33/wjQzQS5WijGmN9LU8SeYNZ+3/twwSJDfqju0MLC4PLKKVDxGEjfe18UJ/rh+XQDVPQo2hiajlcLqQOqgQPhRxxqaXwY2FJVs0DqLTdSR/NN9Vw6kd+psLz5W3catn0gzIt7LahR7H143yifOccKXLrnN72Ry7vKO7EA0tnqZhsE9Pjtx5QzAXmYFSqNJGucBYlmlrLWn6f1OfDM86FRHxlUY50Upg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X8WnHZ2THrBU1OUp64yid8GTRqDyzwEJufA4gW9kyJ4=; b=Ag+04r9XYBwFdG2titSkEkGCTe/vnA4O++IhySQY6R8fGRBIt/825Lb6BW318LGRCV7QlN/HUMvIwnk1EGgv61RkBeQXJuv/G1Nrl+vnunZynCtuZ7u7/qORPci/37k5e6AnlEmuQ1Ols53y5kRb7mjwUUC2Z/y6s9f6aeXqwq6h6k6q5UK+LyHKZ4dXX1b8O8esMZfTzNxS8leayqBKxnzkK+OlF7qLW+DLvB8bnGrtdQ6lRTSm19OVK69kv+ZfZ6N6IhLGpnZAFJKNzKTkl4ucf3Mjbsl+lKDQzggsM9vTjLN8kn10H0O9JjjIQx8z9WiosAlnrQzzMcgX56AJaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=keysight.com; dmarc=pass action=none header.from=keysight.com; dkim=pass header.d=keysight.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=keysight.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X8WnHZ2THrBU1OUp64yid8GTRqDyzwEJufA4gW9kyJ4=; b=NAfknCmupRwz5ejU2KJB/vAXKGPlaoqX6zxUn7jHmibWASslxVVrlquFwskfps1ioKUwosNTDtaQqiD2A+8JUjSZG/2LQq6eD+2/7tIVaZqXUICjCvonbUWVfaTYxFcl532waHInbRAIvIUJgA+4og7SIr0ySltA3NIRGLq3xnY= Received: from PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) by PH7PR17MB6034.namprd17.prod.outlook.com (2603:10b6:510:1fe::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.13; Fri, 17 Jul 2026 21:33:02 +0000 Received: from PH7PR17MB6130.namprd17.prod.outlook.com ([fe80::7052:ef05:ccc9:d9c2]) by PH7PR17MB6130.namprd17.prod.outlook.com ([fe80::7052:ef05:ccc9:d9c2%3]) with mapi id 15.21.0223.012; Fri, 17 Jul 2026 21:33:02 +0000 From: John Ripple To: openembedded-core@lists.openembedded.org Cc: John Ripple Subject: [meta][PATCH v3 1/3] go-vendor.bbclass: Fix test file exclusion and license propagation Date: Fri, 17 Jul 2026 15:32:49 -0600 Message-ID: <20260717213253.3454786-2-john.ripple@keysight.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260717213253.3454786-1-john.ripple@keysight.com> References: <20260717213253.3454786-1-john.ripple@keysight.com> X-ClientProxiedBy: CY3P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:930:fb::15) To PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR17MB6130:EE_|PH7PR17MB6034:EE_ X-MS-Office365-Filtering-Correlation-Id: 5489aec9-7b2b-4f5e-dd79-08dee44afb27 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|6133799003|11063799006|56012099006|10067099003|18002099003|55112099003|22082099003; X-Microsoft-Antispam-Message-Info: 21y426HrVIzDiHX0KHC+bJ9Z8miXcrpfDFSoa10mk4O4v5lKwoX8nQNTZzOyz7PcfLA0lgdMRL1uwQRHCWtZnHr7lEamI5ihbAMsO02W9VGQ/iWNrpJYW3cZbAOlZY2LCtAtUsYmq4vsPDwFIRM5KNK8K6prqYbGhrqGGiTF8JoyjwWqFxJ/E49xVK0ip4MeW7ZCR/njR8vVPMpd0OZmYQU4SjckNlYf3EpZAqzN4Wp0HQ5kk6YRhf0uHjvk9/0DllUfpEBd8qB7JrzxjHiBsbonFMHz0wLvfMgs7c7x/V/l3Mv47Y40P0zM2CPyqcOf/AEEwPxSH7gmHOaPhORBMQOh8wkmQboL6pi5r+fjU+ic8Yj/wlzmWFq5Kyr3CrI1WcER8l2tnDk12wNqjYKDIcBnmJyc2g2y+qbOLEb6N6QEhZiCrCt76Gwx8KfiSXK53+32h0YLpddz3yMzc0PWHv/WWBpJkqWsrSo813BuADdcKo3grtBgnNiV5mbUCRBnklr+Mlu/PZAdRWtpkimH4pdgOoOYLy5XjYIqdm+9IAQdRKYPRMU3gVwg7ayFXrgQkz4/2DH3wqEY0Pr6ORcBuMVN/PKncIRwrZN2HJZsbiUGxvJ0xFBuHwAjlBAtWZl4 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR17MB6130.namprd17.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(6133799003)(11063799006)(56012099006)(10067099003)(18002099003)(55112099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pxPO5SGenD5/QkpIJ8stKZMnvWe6A8JMXbhJnnEOQAGERsRBgMmc0JNWMPtQ06nEE9iZI3KN48REExeIa49dIOnCLhFDmMkeIhcE3+drsEcrjs106JyKdclTbjQlRoNAjdCLjMZmpZpGi1DpBfNPEBTwO0EjImFuTFR9qsFr3kyMhm0cWLGhqTqdCB7cocZ5ccoHBR6wKvPWsHdalI1u24cVDZGiXI/4KpK/oDLwW7uvtuzVF4CcJ8n8AVAGVi2MDg2xm8LLyPrjYRIxY0VMf9pIQZ5rgPQuLVn3dSN6e4OCHBjjCYh2PrgCkMmzJLMhDHhEdYLrbD1nnsYgfYegH6iawxJnz6AbIK5g4uURZtOLyPFzGzo0GaiBBgjUNDfrtc0N1Q06lFx5AEdE+M7pJ0zQUtmmgBdCvJOty6gtVwfj4ggmDIBEZpZGps8TApj3973OQuHbcfJJ8LAsxjz2P7NHP9AmaNefBT1MhfJJq8UE90Q7t5xqPNm1JeLdjC2D+RHTHCCSFI72FgWKYrDcCnRh0MIu/+txhUrvp0atnI32d/FmqPmjrvwPIdG/jJ/3JRznRTaeD4g3s/2xfDr96AVYBrMmO1+1jtmUqc52aIedLukqflr1C66D0SN5vb5yAGWXkjDjQhPptfYACBijYs3w9tp4lN94QnfodVHl/QhPOVhuo72Px+kbJOK10jmgJ2AL5vOERlgTlrb2dvWm+NWsYe7DEUhQdsUAI8CZRPMXXnwzTX3KoOQl8sOXfek/urT/yoBVl5D5CFViqj5OGBU0KickMgym0Qe6w9Ie6Sp9AtQcdAlwisbyohPyjl+CcgpwdkqKPznL91KN/iTyutNEiWl7n02sht5V6nnxPto6DjTIskO5tFO3+WPDjbeDrZk76T64Uzw+Jd+ftGUpgdwH2SAMGmFH1U/SgjPsrc5X7WC7U7jy7C6wULO6P1IKtLvmbOm8hIlqPVQTpoR1gLxFfy+A43nYgwIyQW96OTX5w68BmbdWzUfUAFSxjkbTM8vn6tH8Oxijz13E5utN28iItZcnwJoPsQXxJR+g9gBbiwBCe8X5psTvRnf4+D33+84/IlGBVa7ytjErfLlJ2jMyHPS8IUgfkK2gTXE/uQRxEVDaYmoeBqIHEmKtC4Pu86XxdjkKJOu3pYnnDDBXBkJrmMbslwBkgvqW4kJxEKASpFTunlqmhhHEHwXBtNjdqKXpj4QT9tLtM+fzVPKinm4SQpzivktH42uTIsy+udhkL7jeC8SL2IkYytZcRqTxahGSTyN2lMXnaGSkhhiHr4S5H6nP6mH3tkMTRYQrpnhoekk0uEVAb2i1PpJy9Sw+lIUbLRspQ5mC1G+8IcgjUj8pLPwlXfIgfdxF407T70AN6lmWioGSXcAZckvYIYg0QBzXpAQaSpwhQabYK+iO4QJaglaPdUJCZOfU3fORkOdhtWEEBD7L7eJEUXBgAEyjTdrf9bRjEyeMfbWOP+dLNb1j0oxh5WL/Ykw6jSLuY/hdo86Ro5is2CgUyXZNxZ2tjSI4TqpAiS1FVy9PCzwzvzhaKFNgRD5MFDv+iDzWJqf5H+Tm01RFvODQ2T/bamYhraUw+hmfr3HQfic3YY79zGLOewC/kjFd/KZPopqxmAhKBdZ1lxfDvKa+QmNVdLfOJ4FsOUnXEHKLvJ1N1IPTheOXDdjgBdGzsR7ScyW6nbShAX8jICfsLfpLGa0QpYCNWplEl7Fbc/i58v8+MP/o8g== X-Exchange-RoutingPolicyChecked: CvsjORu3frkTjY2NUgc92bbjHgqRHkbb8eOTRi/8b9dcudKenAflRSnHgeMmVh/Bct6eiyTNw4Rz60WxgCLqI/lmlXnFr/mGrPIfnYMu5aovHFOjPmTpP+7/I3SedG+T088+E6tJ2T3TcH1iN1gPeSwdyipGEVu7C8SndsMKk1+ZyQV9y8nrL88PQDBGY1HGRFCOSnBVdT5uXhz+PaqQvLZ4ZwUbcWJ7OjtG1kC/Qj5LjhTn0dKqRgjwowvMC/19BKK7/wa5KCzXWpXPkYs7cpVPe3OaJoxBghiu7y8PjfF+mf0HZU2O+5dsui5KAg3WnFyV+d45R3z13T0GdotSUw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Vixqr2g/53C1tTiSQ1Ps1vI2lwYlFTPTM/9u0c7MuoH1ASUhEGQL+5F7AA3k3zIX18MSAgCsWDZXWtfzD8k8ZjvZ1mvz4g8GARMT4dnIboSWF//pew/2Pb+jrfQRkXkkNBd3mW5yFPpTgKviCH0QWjgMZFW1HLwYvEeh3ivTRLwUFtgOK6q8rrVMX7hXGIz2+CDMLkD85yQvwRFHcGf+3FusYjNtkNVGWtDfVDuyUPxQTlL5FzPzsclx9kRCRjQCcmniarxLetxuw6Ta8ZFmbBNfXb908wAoUDKkXXuMqz420cnPZ8OdZYMuwBNCrPtGgCL1s/+iK+A8ib9X3hH3xwxEPxqO7BdpIt01kC8CLODSGb826RYTjH/PP/AgUHP1/4Lpej3P+uY8Lnlr3xQX/BvsUkNjxmaRwxS+zaCZ1CPiUKEGSDgei+GhFOHf5ZKbBlQxilMRD1vKaDTgfH9ePtOECmqjcSbRcXLtNaL1nPj2HD9ghAx9YQuqhft0UfrdbkMcrOGiwzi5i5AnzYwaB3araxOL95u5bzsy60u2HU1Cz6oi2Tol9BsgUjQyVcTJdL0kDhlJvzRAssEtLSzBC1I+T1Eeb+nrrKY65/RjBU15yj3Y3x7URfRuSwG7eSWE X-OriginatorOrg: keysight.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5489aec9-7b2b-4f5e-dd79-08dee44afb27 X-MS-Exchange-CrossTenant-AuthSource: PH7PR17MB6130.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 21:33:02.6731 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 63545f27-3232-4d74-a44d-cdd457063402 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IR2izEflhSo+/9TGsAhG2l1jIgW6ToX44yMdTPgS7sA7Y64OZ37SkD2pKFaHkZkmtFE441LwlvvWhzZHkDyr+xkZZnH+cJOwW45zAR3pqvw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR17MB6034 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDIyMiBTYWx0ZWRfX5+GbcWwTut4o Ko1T5n3vkUg+t9h8BchPMwbT7CP4oHTyhG9kaFp5wu3lon9C1b6Nz5aqowM6+l3qRisIAtJZzrV zqg1AWyyvQnZPkqF1Kkrn30+9Wi2Yz1aqgmd+r99EkzebmsZ3AIrDlBVodjTkuJNr/YpqejF4H1 Kgsnhe2JV861hSLMbQBb7wp9yq3Xy7XoJLrRGWdkStB9fwcMByaESyT8YnEvPhDVSzTDYNWg0zR M/VcqfSgIvN51kzESDUYdS3JErISO4J4vj13IOKtQhKhR/rIZgDxcFYrvylQWdm+kwUI9+4J0EI sSmWyLHedN/hwa6+crHA3MygAuU4r7RbB1vr071SccSlq2nWQYKLQEEOW8wRiqTTY51Cdu2P5xI IN2iyLu5YBf3uxrKx9ppsACjHpFMj05JCtAK0dLTjj896aCj+UGAzN8eCAZjgGYUzeYSaiPAzaz hEW2bKIAUUh02Mu3NFw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDIyMiBTYWx0ZWRfX44ATiIZzOO/Z W7AcMpvAlsEk5Fq3r2iu7LuD1T2YDop2k4F+O5+W8zA+OWnQ1a1oJwkJC99fpSRPm8KBhJx3/NH ZnbRwUdKcllKYpwkFobVzDFGeC5fJq3kX5+WEB5Oh+OYc2s86H+G X-Proofpoint-ORIG-GUID: UODcOrz_HLnXj2sYFn7ebmk2ec2gxYnr X-Proofpoint-GUID: UODcOrz_HLnXj2sYFn7ebmk2ec2gxYnr X-Authority-Analysis: v=2.4 cv=JeiMa0KV c=1 sm=1 tr=0 ts=6a5a9f92 cx=c_pps a=BRu7lVsKyHj15bVqb/Fc8Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=RAioF0-LDSMA:10 a=vu2TTH8h0NUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=FLoIbiw2ZNY34kqd41oa:22 a=at2XMroQgvxonBsO-bql:22 a=plf8rDjJAAAA:8 a=F6MVbVVLAAAA:8 a=CKkP6PFZCmJgk5SHP5AA:9 a=JWTSs7K9Rhv-lrTctFka:22 a=6mxfPxaA-CAxv1z-Kq-J:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11849 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 bulkscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170222 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 ; Fri, 17 Jul 2026 21:33:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/241223 Two bugs in do_go_vendor: 1. The shutil.ignore_patterns glob was "*._test.go" (with an extra dot), which never matches standard Go test files (*_test.go). Remove the extra dot. 2. The license-propagation block used os.path.join(src, "LICENSE") as the copy destination, writing into the already-processed vendor.fetch source tree rather than into the vendor destination directory. Switch to os.path.join(dst, "LICENSE") so the LICENSE lands in vendor/ where go tools and licence scanners expect it. Also fix the guard condition from not os.path.exists(subdir) (checking an unrelated relative name) to not os.path.exists(subdirLicense) (checking the actual target). Signed-off-by: John Ripple --- meta/classes/go-vendor.bbclass | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meta/classes/go-vendor.bbclass b/meta/classes/go-vendor.bbclass index e879d629a8..85a3c1b586 100644 --- a/meta/classes/go-vendor.bbclass +++ b/meta/classes/go-vendor.bbclass @@ -141,7 +141,7 @@ python do_go_vendor() { shutil.copytree(src, dst, symlinks=True, dirs_exist_ok=True, \ ignore=shutil.ignore_patterns(".git", \ "vendor", \ - "*._test.go")) + "*_test.go")) # If the root directory has a LICENSE file but not the subdir # we copy the root license to the sub module since the license @@ -149,9 +149,9 @@ python do_go_vendor() { # see https://go.dev/ref/mod#vcs-license if subdir: rootdirLicese = os.path.join(rootdir, "LICENSE") - subdirLicense = os.path.join(src, "LICENSE") + subdirLicense = os.path.join(dst, "LICENSE") - if not os.path.exists(subdir) and \ + if not os.path.exists(subdirLicense) and \ os.path.exists(rootdirLicese): shutil.copy2(rootdirLicese, subdirLicense) From patchwork Fri Jul 17 21:32:50 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: John Ripple X-Patchwork-Id: 92759 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 1839CC44515 for ; Fri, 17 Jul 2026 21:33:11 +0000 (UTC) Received: from mx0a-003cac01.pphosted.com (mx0a-003cac01.pphosted.com [205.220.161.93]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.106.1784323987830227813 for ; Fri, 17 Jul 2026 14:33:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@keysight.com header.s=ppfeb2020 header.b=syrUpSDC; dkim=fail reason="dkim: body hash did not verify" header.i=@keysight.com header.s=selector1 header.b=Bbx1I3Go; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: keysight.com, ip: 205.220.161.93, mailfrom: john.ripple@keysight.com) Received: from pps.filterd (m0187212.ppops.net [127.0.0.1]) by mx0b-003cac01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HLWl1O2855073 for ; Fri, 17 Jul 2026 14:33:07 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=keysight.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=ppfeb2020; bh= 2Og1TEDjR4VHJ471/N5JKmR6ov7fRAt/v7p7t5EqyIE=; b=syrUpSDC/PBSsLDs JCJEs/fqjBTGhvJubwsMEX+1lxT9E7txa4TP8MD12vhFvUCvAAZFXPjhGr3OTsN3 NUBAmocmpvn6ch872ozDWbWgZG2yMpeZp5jFgKL7T4nzRXtH569YdF3l10s1zjHG UNCvkI7ho6/NnWDnILWmvJjY+vJzmBZJFK+NaZJcuLFNi3+KuxdoRMw3+B87aStr NbKM5sYkv+FTmHwpKB4IMYWeiahlQivcWfzb/iIpUldBzyjdKt82Ki6U7U+A4NXF yyajIQwmpt9nGzWbrDoOzafc+niNcPmPOTlABjcXqSjl0YXchUfgRJWQ3t1N490i Sxt31g== Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010008.outbound.protection.outlook.com [52.101.46.8]) by mx0b-003cac01.pphosted.com (PPS) with ESMTPS id 4ffgmwac26-3 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Fri, 17 Jul 2026 14:33:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XK2BtPUBbu+v1vdgbjrAhFsCX9+YpFOjtUXhZ2Zr0wv04UCq9Giioihw+rx+kpsDiMu9J7zFUBFzRsP6ypAQ/BRTre1HKkcXQfMG3QBafot4h5ig4NP/Lyvph9A5D6k4j5bAox/v920H3FnIlBTbmS/qg8CJMUPJ+0+/gc0raU7Ymc8HvGHOcglvULjHiAN9lJxiWHnA+qefOORilcTNvAZ28XAvOWTkkZX1yUulu3CmX/qmEvGlybwp3sCZj7cGig7oTfBi0dnJSCv9qJ6F+DMxIb/Bk3qxtN8nonwqLQfoflJg/RQEQrUDzRFdo4nYeWWecPs3lvbNltZYWyYgRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2Og1TEDjR4VHJ471/N5JKmR6ov7fRAt/v7p7t5EqyIE=; b=Yyjyd+S7lxKuKuZd5GQ4RIOFPp1c+jvLM1wkQSmAsgNEVZ9Wg4GDGpZRkDpMY5ai3Cy5AeTJZCdBm4rtpfd4UJKifDGHg9szO4xFKYFqONEcdNO+1ZpT/PtzOVc4CDOV59Nvi93mZnCU/WXFQhBWun+Nnx7o78evnJNvWaMVugRtVUuXYsqte60ekUTljrrVtgKaqOrbXcgYAyEtabJEn9BZKhE34k5yKgfr//Rud0oqGtMBblB7IOgaZHi118Pk7okw4hLlFrrZhewaXOX3gN+KE/2b0nPDz2W5P6w4i7MJ0A7fiArL4Dbp+u2WfyaZkDButpxEwv8RMFlc3DbxAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=keysight.com; dmarc=pass action=none header.from=keysight.com; dkim=pass header.d=keysight.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=keysight.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2Og1TEDjR4VHJ471/N5JKmR6ov7fRAt/v7p7t5EqyIE=; b=Bbx1I3GoHbIYT/N2d9cy1p0GTsgIOA9czFzJkYjqhrb0kMs2866h11Q+2myWRJpLwsD292Kf+5WgW0fdkhPlmg9wzgNEzxCUP1uihtu5Zg3bem/emoP8/KPBcdrLJE3layTuBsjTPXuOaDjHk0LRUfhzcZq0iVHJANCMZG6KWh8= Received: from PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) by PH7PR17MB6034.namprd17.prod.outlook.com (2603:10b6:510:1fe::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.13; Fri, 17 Jul 2026 21:33:03 +0000 Received: from PH7PR17MB6130.namprd17.prod.outlook.com ([fe80::7052:ef05:ccc9:d9c2]) by PH7PR17MB6130.namprd17.prod.outlook.com ([fe80::7052:ef05:ccc9:d9c2%3]) with mapi id 15.21.0223.012; Fri, 17 Jul 2026 21:33:03 +0000 From: John Ripple To: openembedded-core@lists.openembedded.org Cc: John Ripple Subject: [meta][PATCH v3 2/3] oeqa/selftest: Add go-vendor.bbclass selftest suite Date: Fri, 17 Jul 2026 15:32:50 -0600 Message-ID: <20260717213253.3454786-3-john.ripple@keysight.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260717213253.3454786-1-john.ripple@keysight.com> References: <20260717213253.3454786-1-john.ripple@keysight.com> X-ClientProxiedBy: CY3P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:930:fb::15) To PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR17MB6130:EE_|PH7PR17MB6034:EE_ X-MS-Office365-Filtering-Correlation-Id: bf99fa6a-4a31-49cb-4ff5-08dee44afb6a X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|13003099007|11063799006|56012099006|10067099003|18002099003|55112099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: OLB1/ejlAnKOrEMBeiqy0oG53Wig/CewkPRClXBvmdONohyKWWQqVNpB9cxxQaLCgV8gG5kXj7R63jGRk9f65kF+HKc6Isxcw4h3dHbmr87ltHel/EcPbx5DYXJk5OPkMN9dnxecuihWl7zdTp70H7EFk4wYP1Xbxh1rN0P9QbHoFL3/W9osatoPqJcCl8q2CxNnFa5TRV6YosnbH6kUh1mFyRZmW5hT1fzmoi5cxmfgTeVvYU6bRUAKoreQNFVowxRjPK38HkCXtE4qiLfhACSxKIOIaG+ijxhRprszcqkhJPyt4O5QwXtCo/VROh1k/bXJLj96DmBh2VC0Eg41xuCigSCDEDJR/EgV3C1m6Ld88cf8j26UqOH43K5VLDyrvOpMUcqCzjLaQbi8ePJha9pTIJbtf1nKJjJKldtiUYfGahReEfOw8py8O0rxRP2BTTITjf2rihGCsVoDewbDi8KuznFIPTdPFZhxD3Z0LObKfuH5m/i+Y/4Rp1na3nNkVpFqrbLMCm/yG0szK/yk4xRlmR78bgxpR6s6PwXq/RxY1jBZ9Zd2Fem+TlpICBkF7lJwTKn5kNn0ZcqbOT2OMemUAibByV8FrjC3SxIOgwM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR17MB6130.namprd17.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(13003099007)(11063799006)(56012099006)(10067099003)(18002099003)(55112099003)(22082099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?jP7HuJBInj85e5jpTaCWw5AcLr2f?= =?utf-8?q?1HyE9M3b0F9+kEH2RevCWw/iom1EdpqvCX5C6eOUWzIQi7Ep22kw0vR1ZptFByxtn?= =?utf-8?q?Z+XdHKDjl5W5jEZ50nd9non9BoIrGxPZG8sdiuEGDB55ta4/4LHgibqb6qlK2kT+t?= =?utf-8?q?Pq/Al1KsnufVs31M79RoJGYx/66YH7oAouGBEVRr0XKhOb9uy3sWM0CzhfPuTS/g+?= =?utf-8?q?fLvdy/gMZIgu5VZ4eMv97M8j/1dQTj/2KeGFkWgDqeDjQUljM5JRGk3+wsirZhzb7?= =?utf-8?q?lCPA6iFkuo4brwBR/uKJTtXqnIJ9lVPlc8HbYiiBCJqeOzAiho6kXKDPw2J+3iqUr?= =?utf-8?q?8/HNLUfPZS+LFvEmEb54ofRlrLqwqwEKGpAZFGODFdPQqqhkvFOMIJ4DsMfPu1ry2?= =?utf-8?q?Sju66q8UTiZXePgQP140GStk/+H1YK52lFqdxuzXF42XQdgaZXy91atdpl00ftkuk?= =?utf-8?q?aBoDG9sD6jHfmH0U4ajZrnutMWls9sTstRg4AnszZOKccdFvTjtDECJbCsoxG75N2?= =?utf-8?q?TjsXtysBqym8e7UlE8JaLbcbweKmWcRO4mCwHT+D4UaSgdeeNtV3CCo/A4S9Oxaay?= =?utf-8?q?JBUD3L6OXYB97co6Te10yn4AmnKPSImfaJ6pUvAHpefZibi7oDF1ddUGAU46R5Jz7?= =?utf-8?q?08CC/lR/kPflbOB/NPnjRvzuYQAjRxqvA+u1EgmyZtGxl12FS915T/vQ5ySA+Yu7X?= =?utf-8?q?5Nrz18y3BhGx/P4a8vyfAtHALkjx/OaoD0meaintz2uZUcpSaoE2f1ryKsdcUseRO?= =?utf-8?q?OY2Z2Tw2lMGvw6dIHbTVzSR5UsM5D0f/yO+z4U5VLc8xCeunTagJRTdfyDambENLo?= =?utf-8?q?6KtB/xVWIzFlLRu6d9nG4wTd3wn41r0uH3ddtxKBW/OCVvME7I5YQq7FxNQpUe4PM?= =?utf-8?q?BKkbiu9snfudw3s4k5jmFku1gypFqL1URJklEG6r9M8T0EMSfZ7FuHtqWgL7d9CVL?= =?utf-8?q?Nai8pln9ylZ/FtcuWdbUBnbUOM2oggqWoPN57//uNYreV4aIwnXp3g4inr/eiqYBp?= =?utf-8?q?HQMR4sW9nmP1nyjjq93M1UMlXCnYni6dVvirb7PWu7XIGHpQ4w7TClC6mtqhObXw+?= =?utf-8?q?ZNNJv7dg8aojVGaii8kEAUGV89Gpv7Tlw74y258Yov2m/YOp2tLR3kGp9NELil5oR?= =?utf-8?q?Xy6srRxMX6b2FNhbsaKgCRv0XmZda0gXNGYW0KoM0z5wPGHdeuKDlKTesAPBff723?= =?utf-8?q?xegf2D+ws8FRPpY9lXlB7ZpTMhvgwRj/gA90fQXvebd6+fhxaWQBHdI9QXRR56FuY?= =?utf-8?q?o3eDt3B6rgPWM3xG3A+kM8IEJQ4hJpaaLqvYISSwD7tv6Gj9tm2OSDFiGKqOUEyky?= =?utf-8?q?u8HrAa1yG2u7dLgNQWJeKSOxsbHU0yx71ijohR4+FV3E7wstgrw2a4w5x7iKleF+u?= =?utf-8?q?a/TdyCEa4NowAKQ7DUoVRg4lIoco3TxFHAEOw+IpZi86QFBfZc+nmGPnPm97R6n5P?= =?utf-8?q?ZMjaEXbo1prEuYvUICFZfFYU/yJd1PvmzvRqVdRjaKy+MRcQBuF/m2SvHk/t/SAjF?= =?utf-8?q?r77nUMBoeye8M/mW2U6qUADmS1HlwNfb67qh1lKt68FCHNg/pTKXB6au2J3ihY0px?= =?utf-8?q?JFxalInFfDYB3hr+4WU+l2FfZ3x2dZeHv9Afyfuc9w9bdwvPjhTPT/y4m3Oqqu4fx?= =?utf-8?q?rbp4fENXM5cwbHudoL5lwlwB46A7dg9w=3D=3D?= X-Exchange-RoutingPolicyChecked: noCK83bYeeRQ+s2Ypon0tvKjESv9KSybbo+1yniWzOEMZIq4RQFFX/31PuUPGxLyxzkdkvplzRXU/zgDpaaESATTm12r0z3zY7KCGlrVDow3DKSMY7fW70aS0pM3RrQ6Syz8mm3AyCmz6fhfUDAeJnXhGVGDWNlPQ/WkbpIeG90vP+SphIDfoYuUa7OBWaWNOmZRPc0pO3HtmSXVe9g2A7Q789sMMVqf0bWWfFfZb9tZUKlNBDzdwjcd9TJskOZIHydilxge6cD2SOsBME21BWuplKj2iLOuGpr1b7kV43zdKV01uWIjF9Y4P0AtgHRPq46pI1V2YJcr7URYC668Yg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: G/9hn9I5lzjNYxeqeFramHRLf9yd5MinXyzxVgQfb5sA9xdE7FoG2DGn5qJPVGPy81OE1v7J6cNYi4lC4/KT8JKdEd/5KU36FfyhJE1CNTea3yZDu/e24eC63XaAwRJxKNDqdjioQ5w6pG0L4VjkrPbm0O1IkcRWLS0wM9xBGUYCWG51vlBpmX1uTuqney406p5ix7r207DrUvhhevZaGaU3EA53SutN7tv+Gqr0HmToC/H8rU1wUcn+pBWSW80Ifzm3zfenfq4X97WEK6+BJbbww2g0PUclTLsl6DRi3m7nkp7Ajk9Sxi5IggVC8L02ZTIini1gtLZmTM946g21VRApVaEZrXSSL8ty6GZyIiZl2gyZxpyGiUnZiuKp1LJBvbNnWlAgSXOsxIHmgaSkJazwa92MmVBnEVSye8Ncus95Kq5EPCLdjeUOCZ8R1LvyawwytRi89dEoU/4bf4D3tuE11nWZOlWSanzniVDqbFBJ8u5udgIFSNW82Ha3LNqSN+jPciULkpxfNoCRfhK8+TSqC/9bf07psg/Ez12N69PMR9KY+Rf8zySbKZE7juGHxq7thNQEN/it4PxpcDCn1aBxnDbBarN6m/bxkn1BgZTuepF9ZIhVp7VjjPwcuU4X X-OriginatorOrg: keysight.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf99fa6a-4a31-49cb-4ff5-08dee44afb6a X-MS-Exchange-CrossTenant-AuthSource: PH7PR17MB6130.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 21:33:03.1407 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 63545f27-3232-4d74-a44d-cdd457063402 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /C77WuRy05PynyHlsBm9pOpNSYVZdIBXKVBO0E/KQ3o8xplkq/uFg/iwkPQP8nwppBSsnRe5v3BjHcHTwszlBfEiflOKn7egTRkWy/3/YJc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR17MB6034 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDIyMiBTYWx0ZWRfX9p2rTJSx8yev 6IMZwfcsUkA31F6wmCuuHHAITC2SSu8+X+9+fBlmn7DFVUgBBRXd5iMFBGpf20fpzvGv+qm3jjN +xHNP2EwDONXy64K5YENJrxVJtVT2TrLcc1by+vvd6VEUD6GqRYOUrDU0t55LYc1Z1uDFcezukz qg1G4A4UFZuj3/L9JTvdDOq3elrEN2GrJcba+kmO/7iD41/0CIh1B9dSYM/uXygnkdbd33kBs/u tUcF4libgvds7AMLxnAvMbC78HoGwznfjY9H2LXlrgViyLycSKn3KlUH7oxSMv8IoNHD0ylILuE 5GRbyxm35BSZ+I47Q4q96UDmWfnIcHiFN9rYqPGhg62f9UXc2ZVh6fJBvSfu6qh/PNg8PZ0JEc7 VPbgOJnlHC0UhjBfgsar1+Bj1dsowJegGhBcmD6uAHSx2TLOSD4VhPWJ2ZLKQli0hiDzm/qaw6O 1f0KjEAYzP3zRESvElQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDIyMiBTYWx0ZWRfX53Pa/faRCmfd 6GPuRLPvhx9HFE3hD0GsI4o2mHQbEPA1miyHJLeEFcKl7zytDGaFpknKXwI5il4lsd3aqtApyLw NksectE92H51a8hF6zduhAZkXzulA6Ap48Wq5RScTKDsDJtr+okR X-Proofpoint-ORIG-GUID: QgUD8PWXuLq0Gacb8aEzi0fzpBT27lwQ X-Proofpoint-GUID: QgUD8PWXuLq0Gacb8aEzi0fzpBT27lwQ X-Authority-Analysis: v=2.4 cv=JeiMa0KV c=1 sm=1 tr=0 ts=6a5a9f93 cx=c_pps a=BRu7lVsKyHj15bVqb/Fc8Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=vu2TTH8h0NUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=FLoIbiw2ZNY34kqd41oa:22 a=at2XMroQgvxonBsO-bql:22 a=F6MVbVVLAAAA:8 a=NEAV23lmAAAA:8 a=A1X0JdhQAAAA:8 a=iGHA9ds3AAAA:8 a=5cgIs88SztoUVwLlgL4A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=6mxfPxaA-CAxv1z-Kq-J:22 a=nM-MV4yxpKKO9kiQg6Ot:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11849 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 bulkscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170222 X-MIME-Autoconverted: from 8bit to quoted-printable by mx0b-003cac01.pphosted.com id 66HLWl1O2855073 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 ; Fri, 17 Jul 2026 21:33:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/241224 Add govendor.py with two test classes that cover the behaviors fixed and defined in go-vendor.bbclass: GoVendorSrcUriTests (offline, ~10 s): unit tests for go_src_uri() parsed via bb.tinfoil; verifies the basic URI shape, path/pathmajor/subdir/replaces encoding, and that non-git VCS omits the git-specific nobranch/protocol flags. GoVendorTaskTests: runs do_go_vendor once against the real recipetool-go-test project and checks that external deps land in vendor/, *_test.go files are excluded, pathmajor=/v5 falls back to the repo root when no v5/ subdir exists, modules.txt is reproduced in vendor/, a local replacement (./is) appears as a symlink, and the S/src/GO_IMPORT/vendor -> S/src/import/vendor symlink is created. Exclude the govendor test recipes from world builds since they are only meant to be built directly by the govendor test suite. Signed-off-by: John Ripple --- .../recipes-test/govendor/files/modules.txt | 7 + .../govendor/go-vendor-src-uri_1.0.bb | 17 ++ .../govendor/govendor-real-test_1.0.bb | 29 +++ meta/lib/oeqa/selftest/cases/govendor.py | 179 ++++++++++++++++++ 4 files changed, 232 insertions(+) create mode 100644 meta-selftest/recipes-test/govendor/files/modules.txt create mode 100644 meta-selftest/recipes-test/govendor/go-vendor-src-uri_1.0.bb create mode 100644 meta-selftest/recipes-test/govendor/govendor-real-test_1.0.bb create mode 100644 meta/lib/oeqa/selftest/cases/govendor.py diff --git a/meta-selftest/recipes-test/govendor/files/modules.txt b/meta-selftest/recipes-test/govendor/files/modules.txt new file mode 100644 index 0000000000..f64f5245b5 --- /dev/null +++ b/meta-selftest/recipes-test/govendor/files/modules.txt @@ -0,0 +1,7 @@ +# github.com/godbus/dbus/v5 v5.1.0 +## explicit; go 1.12 +github.com/godbus/dbus/v5 +# github.com/matryer/is v1.4.1 => ./is +## explicit; go 1.14 +github.com/matryer/is +# github.com/matryer/is => ./is \ No newline at end of file diff --git a/meta-selftest/recipes-test/govendor/go-vendor-src-uri_1.0.bb b/meta-selftest/recipes-test/govendor/go-vendor-src-uri_1.0.bb new file mode 100644 index 0000000000..b24b992bb1 --- /dev/null +++ b/meta-selftest/recipes-test/govendor/go-vendor-src-uri_1.0.bb @@ -0,0 +1,17 @@ +SUMMARY = "Selftest fixture: go_src_uri parameter variants" +LICENSE = "CLOSED" + +# Parsed via tinfoil for its GO_SRC_URI_* variables only; never actually built +# (it has no real SRC_URI, so do_go_vendor would fail). +EXCLUDE_FROM_WORLD = "1" + +inherit go-vendor + +GO_IMPORT = "example.com/testpkg" + +GO_SRC_URI_BASIC = "${@go_src_uri('github.com/foo/bar', 'v1.0.0')}" +GO_SRC_URI_PATH = "${@go_src_uri('github.com/foo/bar', 'v2.1.0', path='github.com/foo/bar/v2')}" +GO_SRC_URI_PATHMAJOR = "${@go_src_uri('github.com/foo/bar', 'v2.0.0', pathmajor='/v2')}" +GO_SRC_URI_SUBDIR = "${@go_src_uri('github.com/foo/bar', 'v1.0.0', subdir='sub/pkg')}" +GO_SRC_URI_REPLACES = "${@go_src_uri('github.com/baz/qux', 'v1.0.0', replaces='../local/baz')}" +GO_SRC_URI_SVN = "${@go_src_uri('example.com/svnmod', 'r42', vcs='svn')}" diff --git a/meta-selftest/recipes-test/govendor/govendor-real-test_1.0.bb b/meta-selftest/recipes-test/govendor/govendor-real-test_1.0.bb new file mode 100644 index 0000000000..8086922e10 --- /dev/null +++ b/meta-selftest/recipes-test/govendor/govendor-real-test_1.0.bb @@ -0,0 +1,29 @@ +SUMMARY = "go-vendor integration test: recipetool-go-test" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=4e3933dd47afbf115e484d11385fb3bd" + +# Only meant to be built directly by GoVendorTaskTests (bitbake('%s -c go_vendor')), +# not as part of a general world build. +EXCLUDE_FROM_WORLD = "1" + +# Native variant lets GoVendorTaskTests.test_do_compile_succeeds exercise the +# real go toolchain without requiring a full target Go cross-toolchain. +BBCLASSEXTEND = "native" + +inherit go-vendor + +GO_IMPORT = "git.yoctoproject.org/recipetool-go-test" + +# modules.txt for recipetool-go-test at SRCREV: +# - github.com/godbus/dbus/v5 v5.1.0 (external, fetched via go_src_uri) +# - github.com/matryer/is v1.4.1 (local replacement => ./is) +# Use go mod vendor to generate the modules.txt +SRC_URI = "\ + git://${GO_IMPORT};name=recipetool-go-test;branch=main;protocol=https;nobranch=1;destsuffix=${GO_SRCURI_DESTSUFFIX} \ + ${@go_src_uri('github.com/godbus/dbus', 'v5.1.0', path='github.com/godbus/dbus/v5', pathmajor='/v5')} \ + file://modules.txt \ + " +SRCREV_FORMAT = "recipetool-go-test" +# git.yoctoproject.org/recipetool-go-test main branch HEAD +SRCREV_recipetool-go-test = "c3e213c01b6c1406b430df03ef0d1ae77de5d2f7" +SRCREV_github.com.godbus.dbus.v5 = "e523abc905595cf17fb0001a7d77eaaddfaa216d" diff --git a/meta/lib/oeqa/selftest/cases/govendor.py b/meta/lib/oeqa/selftest/cases/govendor.py new file mode 100644 index 0000000000..8be2712060 --- /dev/null +++ b/meta/lib/oeqa/selftest/cases/govendor.py @@ -0,0 +1,179 @@ +# +# Copyright OpenEmbedded Contributors +# +# SPDX-License-Identifier: MIT +# +# Comprehensive tests for go-vendor.bbclass: +# GoVendorSrcUriTests -- unit tests for the go_src_uri() helper (offline, ~10 s) +# GoVendorTaskTests -- integration tests using the real recipetool-go-test project +# (network fetch of git.yoctoproject.org + github.com/godbus/dbus) + +import os + +from oeqa.selftest.case import OESelftestTestCase +from oeqa.utils.commands import bitbake, get_bb_var + +# --------------------------------------------------------------------------- +# Class 1: go_src_uri() helper function +# --------------------------------------------------------------------------- + +class GoVendorSrcUriTests(OESelftestTestCase): + """Tests for the go_src_uri() Python helper in go-vendor.bbclass. + + Parses the go-vendor-src-uri fixture recipe (meta-selftest/recipes-test/ + govendor/go-vendor-src-uri_1.0.bb) via bb.tinfoil (config_only=True) once + per class so the function runs inside the real BitBake class-loading + machinery. All tests are offline and complete in ~10 s total. + """ + + @classmethod + def setUpClass(cls): + import bb.tinfoil + super().setUpClass() + + recipe_path = os.path.join(cls.testlayer_path, 'recipes-test', + 'govendor', 'go-vendor-src-uri_1.0.bb') + + with bb.tinfoil.Tinfoil() as tinfoil: + tinfoil.prepare(config_only=True, quiet=2) + rd = tinfoil.parse_recipe_file(recipe_path) + cls.bp = rd.getVar('BP') + cls.uris = {k: rd.getVar('GO_SRC_URI_' + k) + for k in ('BASIC', 'PATH', 'PATHMAJOR', 'SUBDIR', + 'REPLACES', 'SVN')} + + # --- individual test methods ------------------------------------------- + + def test_basic(self): + """destsuffix uses expanded BP""" + uri = self.uris['BASIC'] + expected_ds = 'destsuffix=%s/src/import/vendor.fetch/github.com/foo/bar@v1.0.0' % self.bp + self.assertIn(expected_ds, uri) + self.assertIn('go_module_path=github.com/foo/bar', uri) + self.assertIn('nobranch=1', uri) + self.assertIn('protocol=https', uri) + self.assertIn('is_go_dependency=1', uri) + + def test_path_override(self): + """Explicit path= sets go_module_path independently of the repo URL.""" + uri = self.uris['PATH'] + self.assertIn('go_module_path=github.com/foo/bar/v2', uri) + expected_ds = 'destsuffix=%s/src/import/vendor.fetch/github.com/foo/bar@v2.1.0' % self.bp + self.assertIn(expected_ds, uri) + + def test_pathmajor(self): + """pathmajor is encoded as go_pathmajor in the URI.""" + self.assertIn('go_pathmajor=/v2', self.uris['PATHMAJOR']) + + def test_subdir(self): + """subdir is encoded as go_subdir in the URI.""" + self.assertIn('go_subdir=sub/pkg', self.uris['SUBDIR']) + + def test_replaces(self): + """replaces is encoded as go_module_replacement in the URI.""" + self.assertIn('go_module_replacement=../local/baz', self.uris['REPLACES']) + + def test_non_git_vcs(self): + """Non-git VCS omits the git-specific nobranch and protocol=https flags.""" + uri = self.uris['SVN'] + self.assertIn('svn://example.com/svnmod', uri) + self.assertNotIn('nobranch', uri) + self.assertNotIn('protocol=https', uri) + self.assertIn('is_go_dependency=1', uri) + + +# --------------------------------------------------------------------------- +# Class 2: do_go_vendor task integration — real project +# --------------------------------------------------------------------------- + +class GoVendorTaskTests(OESelftestTestCase): + """Integration tests for do_go_vendor using the real recipetool-go-test project. + + The govendor-real-test recipe (meta-selftest/recipes-test/govendor/ + govendor-real-test_1.0.bb) fetches git.yoctoproject.org/recipetool-go-test + (commit c3e213c) as its main source and github.com/godbus/dbus/v5 v5.1.0 + as an external vendor dependency. The project also has a local module + replacement (github.com/matryer/is => ./is) that lives inside the main + source tree. + + do_go_vendor runs ONCE in setUpClass; individual test methods inspect the + resulting vendor directory without re-running bitbake. + + Verified behaviors: + - External dependency files are copied to vendor/ + - *_test.go files are excluded from the vendor copy + - pathmajor fallback: when the /v5 subdir is absent, repo root is used + - modules.txt is reproduced inside vendor/ + - Local module replacement creates a relative symlink in vendor/ + - S/src/GO_IMPORT/vendor symlink is created pointing at S/src/import/vendor + """ + + GO_IMPORT = 'git.yoctoproject.org/recipetool-go-test' + RECIPE_NAME = 'govendor-real-test' + + @classmethod + def setUpClass(cls): + super().setUpClass() + + bitbake('%s -c go_vendor' % cls.RECIPE_NAME) + cls.s_dir = get_bb_var('S', cls.RECIPE_NAME) + cls.vendor_dir = os.path.join(cls.s_dir, 'src', 'import', 'vendor') + + # --- test methods (all inspect cls.vendor_dir, no bitbake) --------------- + + def test_external_dep_copied_to_vendor(self): + """godbus/dbus/v5 source files are copied into vendor/.""" + dbus_dir = os.path.join(self.vendor_dir, 'github.com', 'godbus', 'dbus', 'v5') + self.assertTrue(os.path.isdir(dbus_dir), + 'vendor/github.com/godbus/dbus/v5/ not created') + self.assertTrue(os.path.isfile(os.path.join(dbus_dir, 'conn.go')), + 'conn.go not found in vendor/github.com/godbus/dbus/v5/') + + def test_test_files_excluded_from_vendor(self): + """*_test.go files from godbus/dbus are not copied into vendor/.""" + dbus_dir = os.path.join(self.vendor_dir, 'github.com', 'godbus', 'dbus', 'v5') + self.assertFalse( + os.path.isfile(os.path.join(dbus_dir, 'conn_test.go')), + 'conn_test.go should have been excluded from vendor by *_test.go pattern') + + def test_pathmajor_falls_back_to_root(self): + """godbus/dbus v5.1.0 has no v5/ subdir; pathmajor=/v5 falls back to root.""" + dbus_dir = os.path.join(self.vendor_dir, 'github.com', 'godbus', 'dbus', 'v5') + # auth.go is at the repo root of godbus/dbus, not inside a v5/ subdir. + self.assertTrue(os.path.isfile(os.path.join(dbus_dir, 'auth.go')), + 'auth.go not found; pathmajor=/v5 fallback to repo root did not work') + + def test_modules_txt_in_vendor(self): + """modules.txt is reproduced inside vendor/ and lists the external dep.""" + modules_txt = os.path.join(self.vendor_dir, 'modules.txt') + self.assertTrue(os.path.isfile(modules_txt)) + with open(modules_txt) as fh: + content = fh.read() + self.assertIn('github.com/godbus/dbus/v5 v5.1.0', content) + + def test_local_replacement_symlink(self): + """go.mod local replacement (./is) creates a symlink in vendor/ to S/src/GO_IMPORT/is.""" + symlink = os.path.join(self.vendor_dir, 'github.com', 'matryer', 'is') + self.assertTrue(os.path.islink(symlink), + 'vendor/github.com/matryer/is should be a symlink for the ./is local replacement') + expected_target = os.path.join(self.s_dir, 'src', self.GO_IMPORT, 'is') + self.assertEqual(os.path.realpath(symlink), os.path.realpath(expected_target), + 'Local replacement symlink does not point to S/src/GO_IMPORT/is') + + def test_go_import_vendor_symlink(self): + """do_go_vendor creates S/src/GO_IMPORT/vendor -> S/src/import/vendor.""" + link = os.path.join(self.s_dir, 'src', self.GO_IMPORT, 'vendor') + self.assertTrue(os.path.islink(link), + 'S/src/GO_IMPORT/vendor symlink not created') + self.assertEqual(os.path.realpath(link), os.path.realpath(self.vendor_dir), + 'S/src/GO_IMPORT/vendor does not point to S/src/import/vendor') + + def test_do_compile_succeeds(self): + """The vendored tree is valid Go: the toolchain can actually build it. + + Runs against the -native variant so this only depends on go-native, + not a full target Go cross-toolchain. The SRC_URI fetch is already + cached in DL_DIR from setUpClass, so this mainly re-runs + unpack/go_vendor/compile for the native variant. + """ + bitbake('%s-native -c compile' % self.RECIPE_NAME) From patchwork Fri Jul 17 21:32:51 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Ripple X-Patchwork-Id: 92760 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 3485FC44523 for ; Fri, 17 Jul 2026 21:33:11 +0000 (UTC) Received: from mx0a-003cac01.pphosted.com (mx0a-003cac01.pphosted.com [205.220.161.93]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.96.1784323988398931305 for ; Fri, 17 Jul 2026 14:33:08 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@keysight.com header.s=ppfeb2020 header.b=iOYp757U; dkim=pass header.i=@keysight.com header.s=selector1 header.b=SXmfDm8c; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: keysight.com, ip: 205.220.161.93, mailfrom: john.ripple@keysight.com) Received: from pps.filterd (m0187212.ppops.net [127.0.0.1]) by mx0b-003cac01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66HLWl1P2855073 for ; Fri, 17 Jul 2026 14:33:08 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=keysight.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=ppfeb2020; bh= BWWsER/kwfPrEcsGmnNyqFw6OymwiyPT60cmW0uoOMc=; b=iOYp757UGXJZV5M6 PDd6NGk8V26ybJ9rIle+o6QWnEZo0JAkqU/P+jKyqtHs7HXhm5ytxJ1twEA+emTC d16FFQXFOlvJudBTmMY29WE2yIyNdzh6wbIizLNBbM1hdKN0iszpWQ5BMHMd0bRu 5fcXwK644xahGpVpIDez8OLCBiI+PQ+JhUHCTaL/tz9c5gKzjN0VaHgcvPzCoMi8 jK1KeHvks5E4ynYWcKWRed0XpvPT+vYTuXiHmMTGUeQm87xcj6rlT9qhkwtobyy0 2PR2BNzgREE9E9+qXhqzfQo2yUz2Mcd4sclRkph3SnMWJcOPoo1jGI859yc2ByD0 18Sd0g== Received: from co1pr03cu002.outbound.protection.outlook.com (mail-westus2azon11010008.outbound.protection.outlook.com [52.101.46.8]) by mx0b-003cac01.pphosted.com (PPS) with ESMTPS id 4ffgmwac26-4 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Fri, 17 Jul 2026 14:33:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L6HFJDWtzj/3IPiuDz+d7XDPbSuUQhAdFcZp/THM+4IVsuVuEVkG1s0YnPdn7dv0yyWgJeMPBeTW0jQ8ELbw8GPUz1Qb9IiYK47osLzR92y708rFhg7XhKv2/dq5ekAHebaYiYU+zpPqyXvpja4FN0MBIVcdQ1cprqMkzrHgz+yNNAo2PH4u2DmBxTNh3Q8SfxZZ8jsm8IHNfh6Ejg8SpZnF0Y1XD/7n9XTnPgtogSK1YKpJj6TXyRUj1PGd+0uW0ArLfy123Ts6Hn7Rm9x23FJ7woeGJypHG+OiY9nKsqiGAWNbH76Dzk8suVXqGVF+8MTbOKeXHTll2fIHMrHJzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BWWsER/kwfPrEcsGmnNyqFw6OymwiyPT60cmW0uoOMc=; b=juB1WZkHnuP57Wf/pEJySjLIoSO58rEGOuObGoulW8aXC0L9LE9e3vki7xZWiTzgSjpeJTqi2lSRJlj8YX54+/69ir4UdTFaVFdzPLJPZiupUkLsde1WORam+LVFwsCJfhLRx+EAwmMz5XmzHOGc6s9P8py2BRB7xxRPbzOu/WEQAMBktAEzX7uPBzfQtnlTRDXZ2JEZ2l2VShU3qwns45k856T1jmegQ/v1ymCRjxWvt96FME8ffuQaV4vQJJ8A6ZL3FB0k4hLfQKoIsRde3halxRZzWCN1ZmwJGSU5E030MrTGd2V4eEvpWVzcJHFk8is3ttydpZcwUsnkHF7kOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=keysight.com; dmarc=pass action=none header.from=keysight.com; dkim=pass header.d=keysight.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=keysight.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BWWsER/kwfPrEcsGmnNyqFw6OymwiyPT60cmW0uoOMc=; b=SXmfDm8c+YMlUE4rD1RYKxkgDnWccDLoprzAgn9l+Cd3OqsYMR9az5XRr+uH6rP37+kgZdClkfhUFRHg6tLSxCPmekvvy3FW2Wzjnofg7s8KoXj18Qhtk3jSMA+z5mgQXhjvurNIxpPErAz/0QZeJ4KokoJYWGXtBTeW6QSzPE4= Received: from PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) by PH7PR17MB6034.namprd17.prod.outlook.com (2603:10b6:510:1fe::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.13; Fri, 17 Jul 2026 21:33:03 +0000 Received: from PH7PR17MB6130.namprd17.prod.outlook.com ([fe80::7052:ef05:ccc9:d9c2]) by PH7PR17MB6130.namprd17.prod.outlook.com ([fe80::7052:ef05:ccc9:d9c2%3]) with mapi id 15.21.0223.012; Fri, 17 Jul 2026 21:33:03 +0000 From: John Ripple To: openembedded-core@lists.openembedded.org Cc: John Ripple Subject: [meta][PATCH v3 3/3] go-vendor.bbclass: Run vendor_unlink task under fakeroot Date: Fri, 17 Jul 2026 15:32:51 -0600 Message-ID: <20260717213253.3454786-4-john.ripple@keysight.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260717213253.3454786-1-john.ripple@keysight.com> References: <20260717213253.3454786-1-john.ripple@keysight.com> X-ClientProxiedBy: CY3P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:930:fb::15) To PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR17MB6130:EE_|PH7PR17MB6034:EE_ X-MS-Office365-Filtering-Correlation-Id: 3144e48a-ac75-4324-8890-08dee44afbb2 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|376014|1800799024|11063799006|56012099006|10067099003|18002099003|55112099003|22082099003; X-Microsoft-Antispam-Message-Info: b8Nqpn139jiz4DUwhQo6HtaZLfS00Hq7NbbEa/Yb/w1jTZ17K+ukevMwwsdHBTzwLDha4tQ3zUXE12NhoFvtuS59xTEsLpzgaD4OpyZ+h3vNqW+kL6rc+pEi7qvFg9Ppy0y6s2jgDaRiAOuiWz0GtyL/4i3POObTbFh45ANZ/v0K5uWQpeoWuCkUqaeeZqrrKXkF4Cuh8mAtuu2DFsAvVdCf5OayZLRVlrAqaHXwfjPer7TSsz/al4yXUXnzz3xGgmvrseEcPW9MQw5aCP8PL+sDisMJEHJlh8Q9O2olZBkEmrflQpe5y22eBvUjctGZUT3AsU70tmOE8JlyMvJePM+dPXLFai06VCOdAnO2GG8eHLPDAbYYFdaBFbdYb2zabaCMWDoMKVteHTIHYurOL1uzCwffC2PXDSlYdpwrM8R6IKHb4N1TPEAmIY6u6eDUDTmrNnz/iXN92Zgcpj3d7+E+Mpiv3Gp4VwMhX994wybh2TPtB438TLu27s9ueNRPJRcDec3rapPsg/WFNXG0m45IfXdbT0gRmG1Ezq4U9gUzhRLzOL3Ob7y2H7BZ/TmwS4vx+c3cRBIw1Ulbh5XE9KOaVjmhxX0DA6ciWUHOZzCWewJigCdkHbrDQo4kkD/RzwbtaqSiCDUaj3E8kOq+HXmCDbSQhTFHQBrdlmhRQpk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR17MB6130.namprd17.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(1800799024)(11063799006)(56012099006)(10067099003)(18002099003)(55112099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pTQEgkjy2dBXWxy2U+TYanWXWeARkTNXz2dlCU5+Tr2efC/42gGK0uUdaR9NCH4imcyjsPBtCHjBMrAbswNT2fz1DbnwsB5eeUQIy9zo9gJXYZJyGzAjXgEgOsbD31coz3bOQ9TGh0e3hKm4IWmV/kd153V72oswNjg3nUQnP9SENkBge4YrC7IZ7xGuewtdFSDuzCTwC+qCi94X0eDOqOllO8KgAHjN57ZINIWUv4eb9KE6zczLjMA3LNHniAek/0OW2FRi4lABVhaI/KwvGNkGSPlZflGo5PCqGoXmL2WXQwLMwRyQ9Bg/vC9cNqdZZMyuv12IwuDfK74h+OW+LSWrUmTG16AS+ItQAP3dCJqOxqCOh4iTXRrVPsdEl+SrGp8TWFQhVTZOci8T/ZsFemwozcZLGWyCpkbmGFcii3IAKSdcVCMrgLRgsVRPltvsy7tC3ym0W8ShsUeiTumzCp4RhBj+34p4TjM9d62SodLNYHALuvfClYJCNJc0qiC8YTu28Jca8KzT7cfNteKTGp3lnLtbTLjApYLE0ClUa/OzOWH76dOdpB0Q70FmHy0WMU+5GYM2KRtX/g3KUMTdp9CqnP7yQmIXlMHZr9mELyPWXGfHR4EEyzs3u0OKGdrSVL/EK3G5I6Yj/9qLbapKZhbS4/lVYalt12mebQx3d8XFWDtlm3XASHDa42oZHmn78Mn/sxIr/sIgLra1pms4nW2WfIYFm20HG7bRMJObCFFa4d6S4hr2pkN1AmqEM71IidnrdCeF28RjLKOuu0SiUE9tN4ker6S3Z1mdTg42Vh4t/jQR+qPi2rHFo67AsH5q8PaAOrIijcUg5UzuhFqqQyii5RNWy5VJGNH4RmblFknoj6ievFOc1l107081zd2UaKQhz8jxUH++nNR6lYaXeh8pw5GP7exk50kn71VxwWKoot4DRjExqRxPU7TtJ+rOIFugZyKcNUcgNrWUiealDRrJpba7zld6Vle8YnU64ta4HfTaruNtrKkP/lWqflQBgfBTiONrWEiw2O9OPAAmoVdouwU30wotTeGk4y0ZtZCnMwyrtcvp+9NKIkAsmNIfyJmgEpNBWXxYjJCuIxjvAVIbXG4IK7FNcYYm39NnzY+hKkNWCr2hdyWUPYpUroakBH6Aeew4lnIxwJA7eT7jJy4d67dYVRbU7RAs263cZSrcptWICGYqpQcTJ7yVC3zD2OogqT3hu9ug0T1hwDWLTQMsANdowJJLCguJukqr2fnczU3gXVjJabCyMsyVUGQ1N2RA0oG7oi8QHXwK69lecARsdnJ62YdKJ9gxm/3z3EWRjpGy3sQYUUUW8TBokKApSob0io3prAifZeTMOorAUUKnynWNAofbBfopgpYNgcOwMs1SfNbDYdyC4c2PktgZtdbtlkz1vnfhPJojBaDDuAegFRjW+cWY/Rfxmfvmaskb8eFl41g9sq3XvigBzK0ZJTKUNxVtWNuzJSEv4vzwARI9RBBYL7+wK203A0t4G3HX3cj1zGHjX393ulm3mrqbxvyvJdtJ4GASepnKkxQ/KBXyv81oG+0ppOmqqwI4RvlT03rx00LICSh+EYtMnpCFybV/yCWwrh5Vz7QCuWE/8pkIYiENujHyxrtDHiA0KQYBkIDhrrv0ugMGTI4rus94GtFF7i4cWxH8GuGhCwl8pLgsANQpIBi/JZPXGB0cNR6NNp160TzczQmEEYnjJS3WPQyGLZTDSFI3nR/NkQ/Vpg== X-Exchange-RoutingPolicyChecked: Dd3jmj7kUrshgzngAcjseqgISv11kEVPL1ilq/YPVFN9yZCN/q27xjgcT2iNjzV/VSU8yOdbHsVpb3FkSgD8HjbWbfpnZ8sozUbUcSl5MrBBRXugAX4njYJvkRyiBS/tYHDeIZ045NHaiGDunqWHG9rH6Yt2v/ghcUjiAPKhiO5pg7JER4tzndCB+/9pUHBZz82KLwnytsa5B/Ot4oFO/k6tCwJsp0TRiyFkD6yXf8HIqut7vbTy+cD/GC8bU8HKOCFq7tkfsA21MO77Ft6V+8EScDKooSNN4EK+xYJCXZ+gQX+ChJbOhGMiMPxnQv9ZJRr2QIf6k4OhLWF0wY6Lfw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ynshR3ukL3JKZplW3Nn2p71TOjmUA6yalYzqNkqPF0teX3/86qqcmDLL1OqZC7df6BVrNjqS268jG8BnQMcQqVOMCCL6rMpC/4OVH5Z87hZSepH7nUKNTp72tMhkkedKj/kuBtTu6Ca8vY7/p8YAe8SfTTKDlMAShms5a7ycX7aL/DRxed69du4PC7KFbNP5QnWUCsD/laDIq/0tngXFTEWnp/ybHHuaE5G4mg+22uhvOCUbNdV5hSWL3zh5427kP0UgnVRuQdVodo3+P6YyoqPO2nsXvm4r1CDJ4jS2+DYHtHzayIAgxi5PEFN3JZpDOnJzh1wrT3eKVztzybH3rqKzWaXCQAUOwIB4io74ygrDtW/3yDFWY3hUHCp5LPDRjvOUqF2hud8bIvtp2bMth7iIqUSSOZ/WnSBlan33moR73aINEwrxLNPl6eqFWq84PRDKBg5Nuf7UIB+lFo9i3uGPM6oUmhbg2wMQiAOSCfdUNrvlhjzeOYabDGJGe1TAB0ojB2z5EiBsX4JuFNsT3+Y1iaevHxMwuSjj5dGA6JxRY13JUdPc5ZB3/eQMiHQDlaxbMKsYGQUPCc0Iz2nlliDpFDQXns9XsUkuF5jIQlRx4KbhP25MGFHNmY041Yx2 X-OriginatorOrg: keysight.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3144e48a-ac75-4324-8890-08dee44afbb2 X-MS-Exchange-CrossTenant-AuthSource: PH7PR17MB6130.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jul 2026 21:33:03.5805 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 63545f27-3232-4d74-a44d-cdd457063402 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RRaIO05b1nhbMLJQJw+q6XugyZxOqmWRXzQYNCsm0OVA+2iAWIPLbTg146qROdWOlFTEbbGHyLb8YN4ObCQ0bnPtOPpkT+ZipOxJlicSdic= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR17MB6034 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDIyMiBTYWx0ZWRfX7xgMyxRrgbXL YMvXswpaExPAA9DXg2dg0Lqx9CAsCoOINbGwQk51VnuLF5kgR2RRYp/1jPWJavMbDeOjRMSrj+Z OnOG3aVt9hRHzixFrCDjHANfRmXam0LcrkgWeWYDr3w4nF3+QzcAWF9fAJM5Fpk0dxqMGahuZIM 6QOrBF4NcZqzsc+gmt8Y/VfRjTvX3CSjA7rXzfCxyKNwwyTfXNQJ5VqxxNpICB3gWo48RUkzX4a XuSG/EqxOg5O4JH97cKSKr0lh4y7YqgIH115rP/ormE5yEsXnRV84/SICgBSz/PvmKEYv6Hyilh oFdPd0qTDnoHr3KdM96ayL6kO8pivASYxnELq37BogmpoJ/ymXaroNiEzlLF9hN/RbSX6eodLn+ peZvXBsOsbeg+LYEbw8kAPxLWreidx32KT/LSi7AvKxeGcQBG8kt+uiwudFfV40iLdsLSBaedcu TaxG8E3GLRjaiyLJbKw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDIyMiBTYWx0ZWRfXzqpcuC1O/H1f d7p6vHn4yWHAAhPxxkPS5ppH8CH0z1dYrmbVavueQasxx9HhshcDPhriIcXC3YF2s4kliaAlFuR DxA/x1XJWXDxb4fLeH1lAvsy/hzgp4/2YsFtuEntW9fMX6u2jT35 X-Proofpoint-ORIG-GUID: BCfA0rjwKiWO-RZpMXf0T-HX4adZtK_i X-Proofpoint-GUID: BCfA0rjwKiWO-RZpMXf0T-HX4adZtK_i X-Authority-Analysis: v=2.4 cv=JeiMa0KV c=1 sm=1 tr=0 ts=6a5a9f93 cx=c_pps a=BRu7lVsKyHj15bVqb/Fc8Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=RAioF0-LDSMA:10 a=vu2TTH8h0NUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=FLoIbiw2ZNY34kqd41oa:22 a=at2XMroQgvxonBsO-bql:22 a=F6MVbVVLAAAA:8 a=Yyp9YMqRlRMKTZWmAgcA:9 a=6mxfPxaA-CAxv1z-Kq-J:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11849 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 bulkscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170222 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 ; Fri, 17 Jul 2026 21:33:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/241225 do_install and do_package both run under fakeroot (pseudo), which keeps pseudo's ownership/inode database in sync with what is actually on disk under D. do_vendor_unlink runs between them but was never marked fakeroot, so its os.unlink() of the vendor symlink happened outside of pseudo's view: the file disappeared from disk but pseudo's database still held a stale record for that path/inode. The next fakeroot task to touch that path (do_package) then finds the on-disk state and pseudo's database disagreeing, and pseudo aborts with "path mismatch" / "inode mismatch" errors, failing do_package. Mark do_vendor_unlink fakeroot, matching do_install and do_package, so its filesystem operations are tracked by pseudo consistently. Signed-off-by: John Ripple --- meta/classes/go-vendor.bbclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meta/classes/go-vendor.bbclass b/meta/classes/go-vendor.bbclass index 85a3c1b586..5bb4e8e876 100644 --- a/meta/classes/go-vendor.bbclass +++ b/meta/classes/go-vendor.bbclass @@ -40,13 +40,14 @@ def go_src_uri(repo, version, path=None, subdir=None, \ return src_uri -python do_vendor_unlink() { +fakeroot python do_vendor_unlink() { go_import = d.getVar('GO_IMPORT') linkname = os.path.join(d.getVar('D') + d.getVar('libdir'), 'go', 'src', go_import, 'vendor') if os.path.islink(linkname): os.unlink(linkname) } +do_vendor_unlink[depends] += "virtual/fakeroot-native:do_populate_sysroot" addtask vendor_unlink before do_package after do_install python do_go_vendor() {