From patchwork Wed Jul 22 20:08:27 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Ripple X-Patchwork-Id: 93273 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 45475C44536 for ; Wed, 22 Jul 2026 20:08:53 +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.9027.1784750925340255008 for ; Wed, 22 Jul 2026 13:08:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@keysight.com header.s=ppfeb2020 header.b=cSUgW02y; dkim=pass header.i=@keysight.com header.s=selector1 header.b=owdMEXn9; 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 (m0187213.ppops.net [127.0.0.1]) by mx0b-003cac01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MIwB1h148581 for ; Wed, 22 Jul 2026 13:08:45 -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=cSUgW02yXIYXaxKI KSI7LlpxvKjSakUZA7WV3L8TKRQIg66bzgJlgkEwgS8YID+8wksqVhQQqoioxko+ QjvOMnA0E6SNNebOVsi3RJHG0XIiaCPLXKHZmtbpihMD6X3ZZz4Io4Iz6ZPZgHPz U7CHuosox6+bHC0SM+aDauQUwWOiGfgjzsDm8yYlRkL6ROjTRClvbELAJv4Re95W yhz4lxj74wV6JalUSK/sFwl7i7IsmV185mW2aoGK78aqw36uGD1Uucw0xjXby9vO c471+5K4TEihJgDMiD/CrLqBaeNmKWfELXC51CcT8yHrJGG8CFanlnuCJkfrSoAV NOqHbw== Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011053.outbound.protection.outlook.com [52.101.57.53]) by mx0b-003cac01.pphosted.com (PPS) with ESMTPS id 4fjme53bm8-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 22 Jul 2026 13:08:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rKHZJFkYyFoBvYpxH8PYcbksqDQomHZjgaYowfJIJ85u7He2LiLIZmOnanT9GGgKZxPzzet+a1lsUCqozj8zWOqRSEhL/2PHY3Zpvz7633KA8nyJSUfmk19nNPperpKn7L8AB7ondiKJCXjShy5r93uvNcA6pRUe1AkeoGd8rtufcn22080KOf6N+nz++BBLALjCr6IDnU0wCBwMr0qvq/DI2OcoHBZxn1zdXGFNVCtS9rOHx2rElhI5GDe0t8QTo2UXXmADkmOdH1gpMKGuKgBRcXEkZjnTShZreVXs+dOqAGWoY19gleqs3Kjm8DygBEG+eWWTfqHrG5+PqLXTeg== 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=d1ZOl2cgTivTruabVP6O9vhPd3bjGVnqItSLzl7xtk7xbt9QXk1H03HnbYeAFywJNaazdr3khfVJm+BVF1y2tISerq81LSGl+B6YanI3Ig2cZRfrmQIsM/9Levs+C7G/IzZjiFKrK6Ux5UhNp0qYlY0Tg708Z0K+E60PkfzgqN5VsAi3FsxqihVeA3zJobjzUOTuBHzeYRbhJugFYXs6uq7iwWgjcIUjZRbVs9g/Y25sC88QZRooaoiChhAj8VzYJCOYnhk033nZ2V+YUMk9/MMPxH8lGxFteit5c9UPo6XsVSm51rBcsAtgT6kTscw0LKj3bmohO1T+mzb9EoUyFw== 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=owdMEXn9y7YTd6bm8Coy7spZzVE98/3x6k/rHz69fyDDsbtpj0ZgVTQSAB+kS5OObIg3uLVyDLikRVMOhnM1R3yjqFH/Xv2mA0USJXjrI+BqdUg4oOGN1/ZQgDb79m8hrIUOBw6lxPD30qwJVv0e+mq//p6vrsBPgrDiKuwQqqA= Received: from PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) by DS0PR17MB6981.namprd17.prod.outlook.com (2603:10b6:8:162::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Wed, 22 Jul 2026 20:08:39 +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.0245.009; Wed, 22 Jul 2026 20:08:39 +0000 From: John Ripple To: openembedded-core@lists.openembedded.org Cc: John Ripple Subject: [meta][PATCH v4 1/3] go-vendor.bbclass: Fix test file exclusion and license propagation Date: Wed, 22 Jul 2026 14:08:27 -0600 Message-ID: <20260722200830.2917254-2-john.ripple@keysight.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260722200830.2917254-1-john.ripple@keysight.com> References: <20260722200830.2917254-1-john.ripple@keysight.com> X-ClientProxiedBy: CY5PR15CA0224.namprd15.prod.outlook.com (2603:10b6:930:88::19) To PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR17MB6130:EE_|DS0PR17MB6981:EE_ X-MS-Office365-Filtering-Correlation-Id: 961b90cf-0d6c-4502-d5a1-08dee82d0522 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|22082099003|18002099003|55112099003|10067099003|11063799006|56012099006|6133799003; X-Microsoft-Antispam-Message-Info: mOFCMOn2Lx4gv8Qhkuhm8AN1/tqAuoRDuClWZdnbch7+rTwM/4Fao8IaclIFVTfedfGhiTAkhgTloQLF+6eDAsIlSMh9Sfko9mVK/etWa6TUUJFzgKeeQ5rn6Dsne/R+kDXqlrlAoVbNyy0HBcvhGLyjij6xtaEpkqXgQZi/6eOwdM/aAPY6Y4mX0eTz776Rcw6gPuuNRw0n4cj2kUKPVcLEX6Cy1RI9Eme3j8vh2qF9ubFruN74fCtcy30DQ/h8j8lQibaIWgJYl7g0lmyH90HNDvhjI9ZgLvQLX+McCXD+hWvJ4iehVkvNMUsLRqpjEMR7r54V65f+7JF+0PPTCapeNB1FmYqsIrLg7hQmiPtJZG/mTMTjzad1tfZ0x3rquAmyrABTlhcM08A7R+xJUDrr6Dzl0skMmaymFTSBwrymTO6k78ulGqJZBrm3w0MoA9i5I/3GDtafYg9ZJCerEFPUmoqTXkDQmyys6z4L32MdbzKX0HlK+mgPQtnCQnY5Z3RFP7dBxCnSrqT8RhImo2csUj3hfPponly9o4CCnQy7gTdQSjnikM8SmgLv5U6/gpBXhPHm3vDdkXtBJ0rBKZskS00bAw9CPhw2Xld9a3QJo3Y2jrhGSfInNvJ0CJ+o 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)(1800799024)(366016)(376014)(23010399003)(22082099003)(18002099003)(55112099003)(10067099003)(11063799006)(56012099006)(6133799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zqSkHLNEsNtWwF/yzGBMDijoBGNUNsvleoKTwCyAT45EUprylmYTihgWyJ8thV66vrKgcM8eeR+eO07gSOI4k+DZtFXeXTak7xHDrzRJbWk4eOe81xIkXcXif/mNQqEGvAf/o6e1/MjEQzWSAaSKsgQoqKQzmKVVLJB2h/dkTgCiRCjGgNoQbH+ARqWbMz567+FeTqnhEmFlIM0SYAQmPxx2/8AV7+1LZvm+Oz15PS+oLL9EgJlKpJ8FTJqiTeQrIJxbSTZOmySX1XW3FJvZd5bzzi1+5N98kTYHdPrid4Zbckp+CnjDH4Doyt+u/ULly5qSYSdxHRcKMOm3+AdbTbUbqd8Rjq4zORScrJztNjDt0Hy+IkVQyIGQL0pS7dg5ZhI7mnlTal5iSYUhOy7fJWx3V3rrq3FRBu20hrBlND1kf15z5lb+7z3JAY94tCyWDnFW/zaiCi2WjGM2v1sCV9xeGw0VGZIflsRgyUJnoi1/IJBB/UNLIW0IZOyM4CozRUnF8VrGcIkFO/zSjb35GpGClUy2LGemESNfi0ybmUpbd1K4Dfkc7cPUP9TypJsd2ezXWlKyvXlalR/wJQf7QmXucoXAkqQXkxOzXO6bczl7X8Ndw0odkzAPsP0uBDodnAcXsW05dgEORi8ilRrs5LdAzy12xdGlyCcj9Yf6kZaB5yWO9UbdlsOhLrIWCIX/vSJSzIP3xDTzputos2rzJ1CKgsUrQwlnQzjqy/ndamviUzN6GbBrgoHjHIjrQyFwA76ZNJnozNFNZsIScJDwb7fLZxm6BhQ2BiKC5aziPjIeT4XhDXohyEvybkRPXoEIR1egdzQU6u071qqj2QCNp/fu0O0UF/p3ixT6Vid0wvcLzJWobtnDAj56ZecCVLLFb6mY/HUmYyP5aBQ7GzY734vdF4M4JL9AGnEt9Hub5QYSNRy+0LvIypR0YyOyPL/r9VkrbPesxFJzJrNn1QVJYCuxFDC5swYtYTi5mPTXTuG+9ffXPTPk0bvjRwzB36Mv7bE9bKxchw2mEuwbHmbP5eZ7dI90KFSyZAtOtpulNVlsrAPRsxG8ymJWQPphANG74fca978hP+/PYemISOpb+QotYYWzAl1hmadDXe+Fse6j0rmwAA3d0EPkA9fRU59qosn3ATUVNBT4LRuxLKL4VOzomHIqBfEHn6L2smk/6sW6KnE2+DO9Q6Zz4XjMyS/oniLry1h/Ak/feST9Blr75z9If01OEK3PjeITat7BYTveKz1USj/mkP+hozMof42AZw1nSflhSNU0Fe5vR3d74OCGVGsB9TxDDUQVaByxSoL62DFBU64qUsb1pAXszVqt7zheB1ZQnBAGOit9/5uWJ/Flt5DHNYeoD4yCqomFA00FAbSD3xwNJfH2B3J5JT23A6cIdMdzTecw3kY49sbclm+8p3dH54RCiBWx04LDVUGSV9KC6+UtK7WkSU6EwS4e98tVyXOcXvUfCoiVwC8alyyTk6vbXzd/SFPdq41altk70CQZDq6lhp9mt5PyE4WjyRZEw51pYhRUrMwL8EXqSFr7c+viRfNOiBMsLx45zR4+cxCrZ4r6c0WWSV6tBG7nfzm0LbCltWkdSKH2NUE60YIUv/z6CZ3sHWcbg+w2PWtEaie5n/TeaOZZ0oJStMx5vyowtoF9wsMO8wR4aNBH5oDc7gfUQdhSOONxhaRFa6sv9XIDfJDVMNShCvebQtuKmqdQbq6UGyKAnpgdZWdeyw== X-Exchange-RoutingPolicyChecked: NYcqcGbV1PdvleQaiMvsI3dyA5iRw6uvEpGWTFPc1BcDnPL6WhYBnBtVCYNjxA/ZxgyCbkR/LIEyis2R0Rh4I9umCizVvOQntWZotABztj4mJQhuoy1r465RGK9tXWI9FceT7nH2Bwglq+LzmpuMELICDLfey982hvhX6Y8V4w9MySXTP9iWZKCvvrhFAdjp83kck6XQk9bfhCJbGoqnlgKRPf3KA7A1c6yEABtN6y4Zi5x1P9C8R8D1d4ZCSCZW0mHYL6FDxH7vh9yiU5Z8VjveTIpR2K8cTIVLQbsLTbdOhLn0XgDrlsG8c80HD25CRVfhok1E2mWM1nroTMSYrw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: M/sJtvN7eGVSXBMFYNDKj6RhsiyPmQpN+0RXr/ocmDBTSRJzwi9Kd8fK6iWt5iq1Px7Ij20CUH0UmgTtvH8OghjsokQImFkjcaf8gj0mLaQKDwJFfvhMwTi+j3JbBobvTPHIuONrhN90Oql71mRkDY2aDdhWRR0mBwThsLlXBlnhVQvzuDIyPdvcvEphBx9pPKdqLTNSyhtsUq1P6QxfZFm4dPpSDYZXw+HBNfIKgKFYGXYVxlR8F7TJtnaARVZero4XXmalGxY7rioCFbza8X5ltpoRl3PyePC2jFCtPJKqs4pvWBB3JOEkLyLzidUgE1IJEYn22aUK72vUgak6Zicf4z+0hxls6/5vWt0kQPAabDP5AFul1HEDT6Y0R+y2D+sOv+gJiOzs3wpMerAHEcWPFVDx/YyKvDDOHzOsJTTabKl9dQG9n36apYdTxXoLZ4DNYXZv9Kk8hzEO4VgQxmaxNyCtKKrswSn+Km3yAZE394ywuRbNnKtAuPZEYvT/5Qf8SHe+hU/sFRA2f3czpE1coN3sIQwv+HX6jUK8NlwNGWUESrjQsA1tNgntaNN6QP4scZx8/DnZp33BJGiZrlsquIKf/bHZZ5nAxOakVpQk3n+l2FsUM5p/GeefjVaU X-OriginatorOrg: keysight.com X-MS-Exchange-CrossTenant-Network-Message-Id: 961b90cf-0d6c-4502-d5a1-08dee82d0522 X-MS-Exchange-CrossTenant-AuthSource: PH7PR17MB6130.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2026 20:08:39.2256 (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: k/xe/dmOi8AgmOYJjtnzmQx2mehwRIuUndH5w0abPv6CeWkIhmcJnaw1qtBBmqIQc12rD5yEiGZxSmip9yd+B6vTA7n0cDWlzTAcOjkfpqE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR17MB6981 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDE5OCBTYWx0ZWRfXwz6x1VS6JdTD s5WhvKrYxlqruMpHXzkqQsTEhKYyApytVxd4TzTzhhEiOCaJzIgY0EYo1FpuRX1lIlGQse6vICi L0xtml9zPDKvCtrBvwWBJyvNsLdn9MW0Ah6v5PAleLUFdlnVTaKv X-Proofpoint-GUID: 3QE7fAhLoAGkYAbmio2XWQhXUcHhM6PT X-Authority-Analysis: v=2.4 cv=PdPPQChd c=1 sm=1 tr=0 ts=6a61234c cx=c_pps a=7AIX19wKKSH4vG2a64CeWA==: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=BswK4llZXKt4Tvt69P-b:22 a=plf8rDjJAAAA:8 a=F6MVbVVLAAAA:8 a=CKkP6PFZCmJgk5SHP5AA:9 a=JWTSs7K9Rhv-lrTctFka:22 a=6mxfPxaA-CAxv1z-Kq-J:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDE5OCBTYWx0ZWRfXwoWNqU/FoC1y g1CBZhmq6MsrgMbZjsqpknR91EYheKffPTKw6j6CsKr+xvtFUOL0945ObWCM3h3gfPf9riyR/5l DJSnkN6PnXDnntayn9B7Rp6G/0w4w39oXxzlOKP97Uc65ZINykRa8vngzYhnGFjJ+OCQEhu0TvH r4WMzHziQ3jt+xAR0VNtxEjBmj3azhieSUj4NefP3PD9tCXg/H0Zk5sQ8s5uSzvlu6pDfCO0Mxj P+nsjvL3VXv29CMuPcw5/vPssTvRQPRDJWI3eLQ0IzZkLBSN4GJR3QhmWAxtp45Vtonlx83rJpQ O5zY9HuboPy+k3Whje9aeSml9Hr9n3K+HRRl91vVKdgYllQo7m6CcNlaM9vzs2u3jeM9Ze3TQzF KvJ3I9ZDvOZGzls4rt882wB7haQ0GXdXdzdzdg1WCn8oN1pdYQ5YGKyqcGuSYGEtTmaQQvztDnu bubyNnl8dBtOhCeqyzA== X-Proofpoint-ORIG-GUID: 3QE7fAhLoAGkYAbmio2XWQhXUcHhM6PT X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11854 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 spamscore=0 malwarescore=0 bulkscore=0 adultscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220198 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 ; Wed, 22 Jul 2026 20:08:53 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/241742 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 Wed Jul 22 20:08:28 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: John Ripple X-Patchwork-Id: 93274 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 46DB1C4453A for ; Wed, 22 Jul 2026 20:08:53 +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.9028.1784750926088834542 for ; Wed, 22 Jul 2026 13:08:46 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@keysight.com header.s=ppfeb2020 header.b=nRRhOA7+; dkim=fail reason="dkim: body hash did not verify" header.i=@keysight.com header.s=selector1 header.b=NkZBVenN; 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 (m0187213.ppops.net [127.0.0.1]) by mx0b-003cac01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MIwB1j148581 for ; Wed, 22 Jul 2026 13:08:45 -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= 5fZBbFO+J+lFgfPhIIwo8YgL+7f3WlxCYDS6oKCksMM=; b=nRRhOA7+RnD2jgBr xxfc0NbzdlNgg0OpvnOlo3TvndrkJqMOKF2J/ADpldM/CzigxaBFG1i3eeefHQvy m7DF9yq3GsktAkbsU+G8Ov/kXtErR78JKy07rqMgajpzRetFyBHVc9GlMDsVYneY 7nawGru7Km9who2TRxee6GkCT6ids8WGEhjV6hms21fVNdQNeCFTu77pkbebacx0 9YeoeT4M7DPVenTwxh3dEiZzS/Ca4L6VdSz8BkYzN3iYqvTkQcMzTtSD6qA9T1+0 L4mNwoPysVAQiC43OMddzq7gcqNzOPTUoHlPgawYU3tfueEqbTFmaEXJxX2Ok/rQ TGD3zQ== Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011053.outbound.protection.outlook.com [52.101.57.53]) by mx0b-003cac01.pphosted.com (PPS) with ESMTPS id 4fjme53bm8-2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 22 Jul 2026 13:08:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gtq4bhm+8jfoUUZNPuUvEeSLm14mBadIm722msDi1PZiqkVEjyFZVnswBQ9QvRfsK7A2ZwucHm+U1S0QFWFo/rZiCc7sfTpCzWf8reA1GaMVPdHxeBFsEqTOtf+Zjb14TGuI8esQYcJB8rkgGdX4vS9Cf4makeHNcrlRe1Ss4PUP9QUkmHOg/YzgeQCggZ7MT+0juxY8iO0LwZtLpBoF6T+LXMWBWjMO14bGWCC/gtsmIlvzXavB9qxbLVQRsKYGNhuaMx3NO3rQJ/yPeqtr2RtZ1Mqc31rYDLUtNl2zP+pRGym96xa/qQoiQS3MB0FTCnmaJVhMN8Lk/shntH8gfw== 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=5fZBbFO+J+lFgfPhIIwo8YgL+7f3WlxCYDS6oKCksMM=; b=BwcgwzHNvQICL6SFHNxj5KsVYl7/fRmG9gQRj/xoji9fjfNYYT5UW1rGkmdNTjBUOdg9UCeQEdlIqlmkDYMvn4SNB5LdyEej0hzTpo/K15MmCvCF5uXs3uD3S3uK8OBr8+g2AgCQ8znMaL80Hs9NhMA0tcFmFL50vSi1OG90VyFxbPCnddy++/C3t9D36ToNS7FODutFWainbkd0gqa6nr8jhaYF25e8b8T2sW7GabrjxOmYu6QRNlwtUck+8LPRjoHj8oXYiLIArLB5SvI46pLagtLS//2xQjGnq10fywOn1N8opCeTb/7uodiYa6iT/YVMrL7CAOkNhltJ7tGLlg== 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=5fZBbFO+J+lFgfPhIIwo8YgL+7f3WlxCYDS6oKCksMM=; b=NkZBVenNSeEOpS29hh7tuNdNwBlWYz4SVkiCdgs7iEVif0V/iL6YRNH9sJz3B9+WpRQuWRNeMrsH8Su9oDvgLySP6bNGeZP0V2IM6ojNK6AGLcc2Rz3i+lhdeC+mTzyWY9ZLkzZWsav2zp/hBSt5xCDSx+PIGp18WLkv07PIFTA= Received: from PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) by DS0PR17MB6981.namprd17.prod.outlook.com (2603:10b6:8:162::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Wed, 22 Jul 2026 20:08:41 +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.0245.009; Wed, 22 Jul 2026 20:08:41 +0000 From: John Ripple To: openembedded-core@lists.openembedded.org Cc: John Ripple Subject: [meta][PATCH v4 2/3] oeqa/selftest: Add go-vendor.bbclass selftest suite Date: Wed, 22 Jul 2026 14:08:28 -0600 Message-ID: <20260722200830.2917254-3-john.ripple@keysight.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260722200830.2917254-1-john.ripple@keysight.com> References: <20260722200830.2917254-1-john.ripple@keysight.com> X-ClientProxiedBy: CY5PR15CA0224.namprd15.prod.outlook.com (2603:10b6:930:88::19) To PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR17MB6130:EE_|DS0PR17MB6981:EE_ X-MS-Office365-Filtering-Correlation-Id: 300d0d66-238e-4990-99ee-08dee82d0598 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|23010399003|22082099003|18002099003|55112099003|3023799007|13003099007|10067099003|11063799006|56012099006; X-Microsoft-Antispam-Message-Info: HsJeS5+k0xeMLYpnUFMaoaEmHFtE/B7D55+wBYuWSBomOu/1uwyyXJ76c/+m/xBsSiCuQMQIZ2cN2oqChn8vzr24gY1YiBWXx2i7Z1OczgGSdSWWZAyH2Sf7dEECCwLnhgs4qOwJGq2eZdpXo3Vw+TeIuzto7hT2KtfaBCaEBRMXLRCEW+QSR8CTR+vA5kGa9iM5bmzCs7Ht19BDRZGgkq60fQx3f3jaYjExb8ACKkz3GUveqaX6povFAnfmMP/EeulJ0SClbPbgo0Q6le1ZbJm6/Tp2LYjhem87/R8XT8fvv8rM6FW+DWi1kcQbBFDknSZd4ZAqvlEb/n5pkN3ZlaJRCRtlGMuYVQHebBoKblT2PVM+fYh/w/Zss635DFWW2+V8EmR4gYyfRwQeFUa4d0kDzq6FHO+icTuiuFnN3QM5biOTtuyzac/RT0TVmS/UfkbLsQyGO5xHGaMeHJ30O2WSYC1M/Nonthitwv7dghkrEoeNFuo0hzt0K1Y+e06Yu0glGg2nmpkDHWFNcTezYx9EROBZMCETcTSFQVWSUKtVnphsK3RswDqihGgmPSOlw6pK8PLEjpZyemG9i6ecC/W++TSjXdb5/bczbWRIJDA= 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)(1800799024)(366016)(376014)(23010399003)(22082099003)(18002099003)(55112099003)(3023799007)(13003099007)(10067099003)(11063799006)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?bMjM2tNU4bg/f+3RYw1Mt7nE0pCs?= =?utf-8?q?DXlBqm19N6EodTAiWpPdNZlJ2e/9jTehxQcSU957iP4X6bMuzxKmNqLwkWLSBQK0O?= =?utf-8?q?STRQ3W+UtaLbubNchjTd59h0KIIvQITyHIQQpuSpUc8JE0zoNU5NsxPxg2QF4c6zg?= =?utf-8?q?m2/x8Oh88p4hn6r7TQGFRxd5eJGZsSe8IPm1yVlH6PPNlVc2aWWiKeUxMoS+vBX3G?= =?utf-8?q?5foGeOXcfeQLDxzifthCsrXxaio1HOlOZiLM1/Lnhu37Rn/BlQx7l/7LDh2x5Is5n?= =?utf-8?q?qLg40SJibsLPdERk74Lqilt1f3xdTauEIfZOHeJNL7DR8Y4HMtbZCDnacp3/m+yJG?= =?utf-8?q?5+tOHZkeSiSA4PuUf6lm59sNPMZBAxiEXmft4AJBci3s5RBsvZnNe1vdNyXjJUe77?= =?utf-8?q?vA7xf1p8v6cgLj0Oyp4U1dymFoihk/+eaJHdWR6SuUJJALIBx2PRdDW3J0sF79ekj?= =?utf-8?q?wiqbE0qP7JQU3dF5g21LRGIOMkR7kp5uHXbrdfniZ9rijt4DIT9ErQhmtZMNl9+OA?= =?utf-8?q?zJEoG/Lb3J9qiagByEu9UPSxjRPtXmAmTiWwev4qLPC28an9iQBXyiUvAPKHcG1AM?= =?utf-8?q?D69CFymyCfu1ON+48Z8TKC22noR2gfl76ixwsxADsxaZSB1Fk969Avl68AAMDTOGS?= =?utf-8?q?QtlJ68Q3clv/y9TJDY46WFExs70I4kYwJhiJQvwYS+Epek/9p3KvZEuR+TuKAPSR1?= =?utf-8?q?Qi+h7pOGMudzidenmFb3vPCK+2U9s1Lr2d4idho394Ek7Pw93MUEouyWXyqze30Ua?= =?utf-8?q?NARxijLWoQO272WoXJfrV2b6bLj+i5P1k47s45jTnUw08JX4ebdbzVu06kyT14LGk?= =?utf-8?q?Dm9Fnn+FL89EGcbAG7ErHLasze9QDQhMGv+W7U3XdJOHwyCLcQSFcWf4JW9JBPZbj?= =?utf-8?q?4P+azTO+bzaUYSNIFgo9Gv8QX91vfvgVF3iw+THojBMrYZAk9dqf4yg0NUmZHoiYZ?= =?utf-8?q?HbgDm8u+bkEAQXVRHQ780VGkRhEGV0iGi92i5uCpukGE3jH0YhMsgzJ9Azjgw1UDE?= =?utf-8?q?jq5UcMxcCDlpLY9EwQHWuLyNjT9Tf2/6g4c+IXMcDYyRcP550io0HJOi97K32XNYn?= =?utf-8?q?shAVTuZwTaUy5pMTBMZsjIVfRbDyOpWP0/9g0y+/jeSo1s2oLVb1RhIRnVYs3o6Be?= =?utf-8?q?3TFRN0xCeOY83tyKoYzyO9jxWES87v6v3BdsH9bY3nAfDuedhxE9HBu4khqNiBgzv?= =?utf-8?q?9a2E0tPi7GkzC+HUVNE/RgLtYspakz6PItWSHm/T2zteI1n07lw9aLh1SqQF91KFP?= =?utf-8?q?UuhIYlGWBtZchRU/e18vFnbgl68Yhno9YFDOK57G1xlIVYrtQQrQpUlHEklkfTL7i?= =?utf-8?q?s/8PREfltbM66q8/Iq5XA+deHNNkcrWfoTlizBAu+G6rrxtqQFekCK3xhKWkxkEYl?= =?utf-8?q?4I/BErmiZ11FtC06wBmkuRfGMeUEmKtiyFJVRoXR2Orr6A+zBF7HDPNbYpt1FAEIw?= =?utf-8?q?8gGQn70XfykfkE35dgMxymQRWter7BdP8phf+nzVXA+HdtXNUyqTYv0wF+WJSvu+U?= =?utf-8?q?0qvnlkJR/aTtTgHw9VHCl0mIEyHGpWfyylKG90w5dbUfR3/J8Ik4mhErVOQjMZ1+6?= =?utf-8?q?nVIpX0JxC76rz/UKx6QO6ldxBe6RfCkj+YfKwduMOwP4DaTFXkuewSZGag/2zVPgF?= =?utf-8?q?RlUNMsKAG4tg3CYAYl0geH2/0berUkiw=3D=3D?= X-Exchange-RoutingPolicyChecked: kslj+IAHZyUz5AsOp6v/puTKMBy8Chi3+rljOHf4LSFcLybXm1p60tC7xEEJkWZ3HKZVIF9L25bZXG32lZehH5yf0rJxkX7lHR0zBEqaTh3snGUErVNxrlYN2IYa6jRdcU+jhC0F0rbs8qN1rY/gSvT8nRIg9wbJhUbC9cgdfvLLlPqYdYbOMqmdrtcdoJFIRihD5/IWP44XgJmZ1rt6b/h8Ca4Z4oC/ehDNHpXJPw5Uj8TonTyLxcrFkV3Ji6Bgs5psgogBxFr6B1Ac6zZUiHlv3ruhO+CK8NfTfDg1xogCO7fsRV3Ze9JFFwTClTORzP2CX7NH6vPGUfsIPWnSgA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ybSgAlnyexwMujPZcY41sdPCrdzd+ttLiqLaM6WhT38U/Nr4v+EQuNpcyJuuU4wrUFMZcrkvZMeex0HRECbLUwat1pLPVp4yx0tAP7Av1zNXxSUBpvd+IosAfMrUUw0eoUoC1a6h5Xzh+9/gZ+DiSbIL7MKn+lvpAHwS8PP+mEJ+odY0wRDs0gz/l7WaZLGdJTjiCquX2XsGKF1+edMewI4dIwl/FzhCakooGS7sFjpPydJU9wI/b+dI65Z8vE6KRgWjhuSDprdBtjQuD3m20Sz2f7cjQriPfKo+Kcipnx9/qYPzYm4i4WRwYmPIjV/AFtsAIWfPS2DJy/3sFaoQOocQjfY5QVBdpIgTjqvJbcl0Bh6oLeNAgOTeh3/XMsVgLkMHG3Z0//PRSGhOx+PJwGkztumCY8vO+XrNGFl5kMXevaOxR4l0p4rbpofgl4pPG0EoURT6l5N2EQLkn7e8RqiMDXO/q6HXn3/AImWv1SXGKjvhri6m1DwSe0SL1ajXce+ojvWwCCIW6nSeVt4/hqcqGn7KLahwD7nxDgS4FkYq7ETbZYtgulpBzm5lg9yER1YeS0rfVqNE172tYKyxzVuF+tR5BBJadBc28L4PXs5YOXiGra+FE9U0CF77q1jt X-OriginatorOrg: keysight.com X-MS-Exchange-CrossTenant-Network-Message-Id: 300d0d66-238e-4990-99ee-08dee82d0598 X-MS-Exchange-CrossTenant-AuthSource: PH7PR17MB6130.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2026 20:08:40.0184 (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: LADnPo7eiKSM4Co2BU3RvqMrsmHJrIU7f4fHDd15u/mVnQzBV5ewJ2R+gPNfNXaFQG9f1EHjkzyEY+ieES0aW5N7fRrg7UG5iDtBbtzOirU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR17MB6981 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDE5OCBTYWx0ZWRfX75TyX0KWHvd5 3GGTsQC+GXgZEmSE6brxYx5dfkjnOSYXTADaci4+8jORE8ZVynM/prxi6gvhVhku2xkte2SEPyp hJkW7YtT0DG1jVIf3Nch6rl/s+10CsY3X6Em7BfMbU3U17GmhJk5 X-Proofpoint-GUID: mWMMZEfLg0auIFmluzpVuHshLtxVb2As X-Authority-Analysis: v=2.4 cv=PdPPQChd c=1 sm=1 tr=0 ts=6a61234d cx=c_pps a=7AIX19wKKSH4vG2a64CeWA==: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=BswK4llZXKt4Tvt69P-b: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-Spam-Details-Enc: AW1haW4tMjYwNzIyMDE5OCBTYWx0ZWRfX/mVt5BnbYciH rrdWIbtZ4KCag9fbnfUx0tpweX+YF/wXB18LuMmy+2LGzXgzt2nmv2TfcpthNpTGr1E6JdL8IVo xt2U4pUwUsOX6v8uo3e7iXiDrEmLh9h6EpH++8FQ+v/uBVHBlgXOGxSqzRbpN5qWZHZZjRv7fRE FpzqSpSzeLopT/qtyr9mlZNoX6L20mIpUpS01Qi9asOzUkSUS4KBfihg18hpvatiKx2gQiwNByo gzVB+UxdNqvLOzEFuSkB8gfxPB30bqPLXCs2WjmHp6dvCI9eGhGXROSRQb/Z2U+01/cYLvqqM4k fUexmkVt4kb6Xz96UAme4w1mOdisQuvFdlrwSA1UAeHmV4W3NQ9RpvjipC/m27+o3Uh8jFRU1ij MhtHxCtq4JzMgx83pDQU5oLPSptjSH/7UBUsw4UpYRm0anXjX+javn8cvfNYxuQ5LbZBfMNN3yY +q8mHSZnuVfDV4tOeyA== X-Proofpoint-ORIG-GUID: mWMMZEfLg0auIFmluzpVuHshLtxVb2As X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11854 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 spamscore=0 malwarescore=0 bulkscore=0 adultscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220198 X-MIME-Autoconverted: from 8bit to quoted-printable by mx0b-003cac01.pphosted.com id 66MIwB1j148581 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 ; Wed, 22 Jul 2026 20:08:53 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/241743 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 | 18 ++ .../govendor/govendor-real-test_1.0.bb | 29 +++ meta/lib/oeqa/selftest/cases/govendor.py | 179 ++++++++++++++++++ 4 files changed, 233 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..6f0364b7da --- /dev/null +++ b/meta-selftest/recipes-test/govendor/go-vendor-src-uri_1.0.bb @@ -0,0 +1,18 @@ +SUMMARY = "Selftest fixture: go_src_uri parameter variants" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +# 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 Wed Jul 22 20:08:29 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Ripple X-Patchwork-Id: 93275 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 611C4C4453C for ; Wed, 22 Jul 2026 20:08:53 +0000 (UTC) Received: from mx0b-003cac01.pphosted.com (mx0b-003cac01.pphosted.com [205.220.173.93]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.9029.1784750926692846572 for ; Wed, 22 Jul 2026 13:08:46 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@keysight.com header.s=ppfeb2020 header.b=Dy5ZLHfq; dkim=pass header.i=@keysight.com header.s=selector1 header.b=V+7oYN6p; 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.173.93, mailfrom: john.ripple@keysight.com) Received: from pps.filterd (m0187216.ppops.net [127.0.0.1]) by mx0b-003cac01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66MK2es0351555 for ; Wed, 22 Jul 2026 13:08:45 -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=Dy5ZLHfqfkNFWy8R hrBaMcetrzntmO9qfUTP7rojidicmtV8mIThi4CLImi/8O07zjuvGIS80PwHBQVJ yItrNUFXUgepgqFX+2QQySygxoUsSEdZ7Yysm1ijLZpdJ/vC/EfiXqA8bruAAb7R +HpMWOaA/ZmMluXeWa96Mpgqx+LWl/x6+fDCb6R5BxygcDIlEhkcBXwOBVIj5U1F EbimviA+8k12vjT7S2NE/X2wsMU/kKXOz7/YTI1CeAKYJRJyBWuktSiXXcODWJ12 kbc32UmcWg6UEzeZIf6pxA2/wjP2p9aPgxP4FBxQqdTyRB32HRHJ5rUFasZKwq7R 0zmplg== Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010044.outbound.protection.outlook.com [52.101.193.44]) by mx0b-003cac01.pphosted.com (PPS) with ESMTPS id 4fk4j2g0s1-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Wed, 22 Jul 2026 13:08:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gPLmmWQQvSh0OStLdBcG58mJq53M5uGOwUQlK6u0kbk62GoLjw0tqVbac2x8Iz8wVyljd+GgNeX+38Hpzkmmsg6EjDNCYfmYYQXdE4vqJLKKVhgt/J7TeCeXLHvgAo788aRf+0YpKrtG5GvRq14wVa8JWSs51DSVlXonJp34AO9o3whU4CrKjdwHWeqQp17z9M6sVwJlbrTz1TT1ZKBFbMBatPz8XkYa+zpewqxEVITANQlBidFMwXupSybuvrIi0zEaeffnh0nOzjueFWRgZwA+9WSrbbeaPuOC9GfgrRMG7ACaJzJotxGgAV9zFUMHYmoPCwq37SUXr4waJSY56Q== 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=qCX3IGzMt9czddwOPY0vJ9nhiuE72lwRjMSgJwF1viTJu//ayPJacVsQw98JL6x9LLpMgHHQ3ljurjjyK3/jGEDz6dqXx+VzoAK6kC58vx/9MJjfhhxcOkUXT92o2WHy6RLIk9Ak0S0Dd7fVc6jXwzsQnKXL9f3+TtO3T+v7whkWIcMz72zI0/9+gqdp8zkBiY6ULoSIn23BGYveUDViNPwFJZvo61AI69OrBfnm4zjjcmpZ1ybRkoaNkTod1dV6GC4MzgL5+wY4JjdJVTnmoGW7GJOPwsqYohBgJENz+dfhKzuRTiWyqEUGyavmmrNQAOdgx29Xew5KgCV2gncspA== 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=V+7oYN6psyNWntBceb4evIbXlFFgxcDuVSrJ+Q2zTlG3nIpcCO4LYEMLGf1wbQ0jD4rzs9OiNeOnexkjSfP8bigj6gTM8K+L9xDqZF3LLxZMXDbp/4Ji5unMWU8YESXqQnLTVYPsIvGminJpLzq3x0U39KvxlMuWeXueAq6/b0Q= Received: from PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) by MN2PR17MB4094.namprd17.prod.outlook.com (2603:10b6:208:200::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Wed, 22 Jul 2026 20:08:41 +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.0245.009; Wed, 22 Jul 2026 20:08:41 +0000 From: John Ripple To: openembedded-core@lists.openembedded.org Cc: John Ripple Subject: [meta][PATCH v4 3/3] go-vendor.bbclass: Run vendor_unlink task under fakeroot Date: Wed, 22 Jul 2026 14:08:29 -0600 Message-ID: <20260722200830.2917254-4-john.ripple@keysight.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260722200830.2917254-1-john.ripple@keysight.com> References: <20260722200830.2917254-1-john.ripple@keysight.com> X-ClientProxiedBy: CY5PR15CA0224.namprd15.prod.outlook.com (2603:10b6:930:88::19) To PH7PR17MB6130.namprd17.prod.outlook.com (2603:10b6:510:1f5::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR17MB6130:EE_|MN2PR17MB4094:EE_ X-MS-Office365-Filtering-Correlation-Id: 55fd8e54-780a-40b2-60e8-08dee82d0603 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|376014|366016|1800799024|11063799006|10067099003|56012099006|55112099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: d2Vh2Xc88FVLeOwEDI8aV9+67EMEUXjCW3oltlZdNrKVtnoQgpU9xLJGj9mrTmAfSf1OtVNgyGU7X1ZCfMBfmIL6MaTmlt/+7Z+Ht7uX7MuBO4hyQL/3w1tZDATjqkwyOF8W3XDk9QA5AnY1lWvv2Xj3GgeKkLL3lJOvphNlvL7UqGlKBr7ahPdHKXHjl4XBfhv2BvWpHuhRsrvdvivooiBb8/xkXbLbBltZnqe1/2Ahx3va/3i3ppRdOOjsi3bDxUWA7LBxKnjl8hsmDsRKG+N8Diyzk5rXO20zcxP1/ygDFvG1epMFpAPxhQ6kuUjFlg0U47Wdl3RqabacFc957n2wtfA/0L+OFmsj0U+6wrDgewHXT4FbnpiLWH7lGSl1nEtqSFZ/jiRNLM+celsGCg3W4WJWmtQKIxoz1OVJYJBmbZV0QeuOXstv49HM9YbvLtPCdBlVDom2eFRtFOWyBarvIcH8HiF27xq6Nfmgmbz6HLWyFcPgPRAi0+R/pZLDGC5zjj/6JAhjkGhl50fKwnX+GacQ6kRrPivwbDJDuDCqDtSTZIITFxxD/8Kh8E0d2w4ke+rrFvuWeeJy5DwKHFqsQKCD0VZXW3TKMHYTQz0/td3tENYWKk+CBoShwfoSiUzfZF3DjuFkLAqp7diqII3jOkYahFhExZq0Yu6LUG0= 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)(23010399003)(376014)(366016)(1800799024)(11063799006)(10067099003)(56012099006)(55112099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MNiJqdct6O7peeFnqVYmOCRQftbpYQIE0PPZ8qAhLwySmB/UIcZkvP32hiGT/8I3jmJJST9aCAUoFIFHrWVu/xQBAjujCJbbq9E9B6FNcJ6cMPQlqDvLntxvHUzSh/pFXpcbDo0vpglh46/NhEC7PS4w3EQMRjCdqqd7SbERoVhoGBq5wWN38JjfUHeSAiPZU8adpA0rAZ5B+9uzGw1Fwu0kAmalwNWoynlrih6kdXheKymy36HkDvR46ZDyW3BAAKOt0XecgFifOEb4WRwYL3Yeb/nfbI8BDrSo3L5RhypA64XPneMlROzNAnICmBA9vT1oxpxtJPaBa8uWRBWPoVbsZzC5QRBBy9Ye5/WGLTZjoz3tGhju5fQK7/Cga8ycksnAlZE76wHBE1wYhxMSTG9v9oMk0iiOokDApi/2Ugrry84J3rgCZbLfUeUVjdb69OfP4zGI6SdegNL6npoFQ+5eWG8XK4uvVTTqxJaWZwVzPkvRrTP5hEaRMY2S4Iqji6OXxMZyZnUsviSpA8r5F8HngA3ofcegTl80wAz46MEx/Gn+4UQO8rW5jj14lsfKdHtYYj/0+BXGoNNZu8hU6iRC0jhVBtQbfNCOylYNFXQAmg924R/acKcohvfYarZV0Fu2z9XmJjUXrYWAHTkkMIt9G2BlD22Mt/J0X+VD9ui39CYUkb1xxWqlJWBCSlhf7POzzkjnoRSrxYEwUFIHvM84V2W7sGzc/FvYYoAdTkl7tmNNZJFLbKR7jSvrqCHiuQ9YnLaIy0QDwSuA+phljzRPhYH/sN1Tq/NdIVBcmb0bLHM3rNjdWzMjlzyzRwlx2fKZBVYjL+RYMBDHzMVNawX3nU3NM+GpI+S9t8uXprYPAezLZpobWifr7odXe3JokUa2xLNN+QOWaka8KjFVDhpfCf/BcoYSlNtCUcpNFRcJnELy1VE4PLQ8TgAj0YKnTyZXYVVf2XNro6uUZ919/92QDVsCAENH1v3QKpEDh18nGSpyE2Iz974otx8nKKG6WpKSH8V/kJyHz9ONVDlPFv2tsPoApK/ZjHVZ+sPWoGNThq4wDNTgRJWhtJ+tgKdH/9PLenrdSFDsm+p/YB2YO/Qyo8uIK6rWFXRTTLg6DTQhD0yC10yX/7PyrZVuZc8adW7O5WaWS0DUaPRoqEulIUFJPlTFuMH0+mBFPBq19zF0NqcVe2RY5RnkIMv1AKZyKp5xkZ7SZxiO+cbfHCXhkZfsfhsB8O8wM50ZmPgel7Ipb/zIYcakQC6z5sE4a0SJ+RCi//Qz5cx/f2ZbPVmMYuSP3vADV9t94m8vGy5NbLspWHAxHo1ii4uRgLmtInsfRPFxOT/J/NtuaaoTucWqRyOdSDvkH0OYUUS/L1inumbz0Ce/IVNeZcqnVHKaF+D5oXD43L6PLxqgsQnXzh6M0ZwrQVnfAKx7kqnjNxf4KAPXqqHSKn1oUGKCato93GmmTKrpIyYa/idfc1pQxWMP74HfYgbPz15rMn/diqjJMFpRrvd1yx4Umh1Vzhna1MXspnf9gqnNhOX/WkASpVrFT8exmj3WEspIjb35f2l3rzq+9lWJJ1Qo7D3lpgZRicuNHpyQLAgbozpn4UxFrwv+nEta8N86oZHsuv8by9EqK4xYB5opkWBYWPhfc2YWD5wFpzIGXH0aYY6aBZAwf4nLP5CPHVAfqeP8IvvjTIl+PgHlh7Rk8WVM1ZOPPuL5iN4Deflnm7fWN1M7+KiXa+1tjg== X-Exchange-RoutingPolicyChecked: aahZM//izZe4jjuifE312M/rHQ9I/OZ+ZHTuNP/qKaf4h7hBDfMVZ+DrPPOr5c28x9o4V24BR4A5i6amTDCm9OWYcrWw/o2bbeRpLm4Buuy3pW7VQEHfsSxbTx2V+XrsiLwmLmmhSFiziAJKSTM8iKHVjBK5qe56vT784wFt8hX0gN8Z3prjZ/ZLHjviws9Vg+E03qx4oYk6Ol4SuKSWQu5hczI7u38s8xrMtjGKzfurh5BpyyI3y8n5hELbhmBq5/+6NdcmUvhwuNTb9ol+Xt7QBaQNwnNqbAy998E/ikJ1raF5w9/GeV+S1vO3IWnri5i1i+dqDuuYcF6eh/wnqQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: UARfFXgj3Y+x6zzmMHz6bOsJ4Sum6o3RGyE1fHsbTFdM6qhsbcFW0I92/xwEK4PXV6jEAXSNJxPV5jkxalNtCLOkkgBlQfUzXW4WqfZWq4H1wlmr/hb4YmbW0dXf0Ow9YFbB4Mm/lPx142tkxAcivmQQ2rm7Vr2x5NjIyXeM8LwvpaMC49JOMYBSvz6jcUQT/uob/cV5V1phwqMXbG/FPVT5SyeSXE/X8pGg/1034XkRHItSPOdMMipKMYy6B//hSaa41JC16s4YWXZmU2c0qk7CBophMFz9G3auXQGarNfXCWWsSCXJ+f0rmg0mOuwlPToPTgev/EBoQflWh5wP46UXypQwQ892ufjp5gX8q08QPSNb3LohN/XD07O4miByg5BiBSYPHEYxZyh54QavmXc4QYcJ74GEWLyT3JS4HNxL5nl2FBr4+XxwUAZnvJ9sRdPjqnZN4CoWw3EGHEFhVH/9W/z/r8iQtGB2QQIkQvzbTwl1d+X6FDsOPZJKa1ZXzh82vKtGSrQvM8qxy1VWi/2DMLmOxylS82MJfyNrbMlIn0oV3+39SFZqgtusFEHcxHRQSL0MaohD9VG2m627riqX6aQdbORJitXx3RYz4p4DN8oqYpgGLINb8CY1IG3L X-OriginatorOrg: keysight.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55fd8e54-780a-40b2-60e8-08dee82d0603 X-MS-Exchange-CrossTenant-AuthSource: PH7PR17MB6130.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2026 20:08:40.7412 (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: 4Z5tp3IqszwKfMuNqY/DZTQklBrcExsXkCHnMlR1TgB6zmGBG0MauSELFdL4EqMZaG4tyavUAyHUzUhfAAcUM8f+UgCk48jQTHZNHWcdS4M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR17MB4094 X-Proofpoint-GUID: IJ3n9rwhnopAoEnJFk74JTH-jJX2dDQI X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDE5OCBTYWx0ZWRfX3QwwvRwIJtfT AQliXSugJecxY7zEXGUUei4RVEOQdGk9qeIvEuHmyrF0YOl9fjE7sWWTHkAunZKF6WpkuTN7mPC V0//9SCSJHNxHj50jItH3f18++SDi6qWRlHMwbfXVARqhujjiMqn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDE5OCBTYWx0ZWRfX/RAeQOfEW0sp 2/lL/8KGSCH3bbi/XHe9hfCDp42v9H/UO5BYhVRLH+RLKpR9o0Y4jac95Ud9qpMNpPxz/FnWX09 kp0ct0skQa5PTlje4O+NDhdMnqf1yHUs6xXQaJb1TYsQHn7/PsXnPP0Q06DwRjAYYBeznqPyqoQ QISuf3OWD90nMxnNqmgjUudfkfVri2FIGAEosF5H6NC1eaXjcF3NTJ99uXOjJ0+eeFV6j69wsPm 5Tk50L44yMfr/keQ4mgozioHJB0haSyXWfWFqhYxwaxwOHlm6+CbOQkPwdHLx6h2s5GNxxhJDVO s26JY1cNYmKGMwza36Eeifazg5mWDvMrzy4BqJvOprc1qFelNa5EDWr839zCLrBpAokTUI3m7z9 L5nbt/jV1jOSTy5P3Y31e2V6mpBP3VG0E8x8/TJOUEtbX5wvuYlnzgrnsWBjvoXuzM8Fgj91P1H P5TxJrh2FgU6Hx1jBmQ== X-Proofpoint-ORIG-GUID: IJ3n9rwhnopAoEnJFk74JTH-jJX2dDQI X-Authority-Analysis: v=2.4 cv=PrCjqQM3 c=1 sm=1 tr=0 ts=6a61234d cx=c_pps a=8M1/PN84ODQM9BgHet7h7w==: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=ylRlBDd5bHdllK8znExr:22 a=F6MVbVVLAAAA:8 a=Yyp9YMqRlRMKTZWmAgcA:9 a=6mxfPxaA-CAxv1z-Kq-J:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11854 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 bulkscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220198 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 ; Wed, 22 Jul 2026 20:08:53 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/241744 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() {