From patchwork Tue Aug 25 10:44:03 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?S0FaVVlPU0hJIEFLSVlBTUEgKOeni+WxsSDlkozmhbYp?= X-Patchwork-Id: 96271 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 40CA3C61DB6 for ; Tue, 25 Aug 2026 10:44:14 +0000 (UTC) Received: from mx0b-006e0602.pphosted.com (mx0b-006e0602.pphosted.com [148.163.140.78]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.19032.1787654647493841068 for ; Tue, 25 Aug 2026 03:44:07 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@jp.honda header.s=PoD-DKIM-Selector header.b=O5tsWNaN; dkim=pass header.i=@jp.honda header.s=selector1 header.b=CIPcPOmd; spf=pass (domain: jp.honda, ip: 148.163.140.78, mailfrom: kazuyoshi_akiyama@jp.honda) Received: from pps.filterd (m0469178.ppops.net [127.0.0.1]) by mx0b-006e0602.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67PAi5nC892169; Tue, 25 Aug 2026 10:44:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jp.honda; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=PoD-DKIM-Selector; bh=+ir/yEq1xwSKUx zMaVCuM4n+3MonaZCvRowvCEivrlQ=; b=O5tsWNaNtFle/+wtAeOihoJ+BRgA70 K/iEZL8Xd+OeEOOp/XchtALsPyiw1mOPJL+qxmPp40gl/GvEctZ8/vAZGlY5060x AoELwjSlLh2QVQLqYLXmpt1GmvmWvFN3esMb/4VvAU7uANh5lI0k3iSYC3MNpq/J bp5RzvlC1I5DbDYjh3kzX1eSo5gHFkDFMDtYpdyVdkrVrkhL+MJbseFo5zjT9yZs S6dpd7xUdMwMzuaG1zbRXSbsPbO6qwiV5tu7BsTrcJh9QSxat6enSQzVU3VP/ahg PlAorlWa7JLAVOS7IdhjZQAV0zYzeAu8KwJ8+Tj51O+qJmPM39K3rwmA== Received: from tyvp286cu001.outbound.protection.outlook.com (mail-japaneastazon11011056.outbound.protection.outlook.com [52.101.125.56]) by mx0b-006e0602.pphosted.com (PPS) with ESMTPS id 4g939pryx4-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 25 Aug 2026 10:44:05 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=flV+rpd+VlbIvVCqPV/+w3mDMYGuZZgFbFlQv/HPHfj34B8rZzO9Vp6ORukSxCZTLtM25fnVKtXytBnMjK06hmkz8K8MkYmKFL0WAfm8fCDvdYSko7C6xQNjLLnyk9t6vRxb+rOCXCVn9qXHUx7ERQWkNNAowYsRS4TqwNntVNBOYchyEUSsnlwZtVe6P1UunZfTzYEFIt0skqw0R3CnoHseB2WwCpAP+rjjOrbT6cqQzGwzPase+9KY8RHeu0zIMEK10BKpLB/i84f1zBBXKzNn7LWAc2f33+VqfeAkvg5NpeJ+SLe64KnDkCeyd5x1/r8hsmhzgkwfwxWKUC/hBQ== 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=+ir/yEq1xwSKUxzMaVCuM4n+3MonaZCvRowvCEivrlQ=; b=eGFNIlmjACWGlgAghTc6lXfZapTiCdZRR6zzkisyf/EnoYEIGEs5FaNVBJ5XtXbDZezBpicdQtmNZ85ty7ZfwnjGMh1ZkLafkI/GhO2v/nFnqKf7ttq5SJH7i6TQ9AKkjXJPhesh/jFGIs3nqRn8rZLMWo3nQrdWYyKxCE+C8zGriHe1IC3dUbh9Ca8fFD8sfijyVI6zNyR+TluXQmvpcJ42XXs8E/aL5XSVfRDs0a+xLlXVi+CtS7cN/whxHrfGnsRF8FcVEIEUH08dAoo7gz/fzvU1cClejNy5lGwrU8i8j1kkswdFoCuNDjYrxDUwNKM3shGazqQBJ+945d3yQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=jp.honda; dmarc=pass action=none header.from=jp.honda; dkim=pass header.d=jp.honda; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jp.honda; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+ir/yEq1xwSKUxzMaVCuM4n+3MonaZCvRowvCEivrlQ=; b=CIPcPOmdp1QyW48JNQuLygnRBGW3SR14neJ1yLeyMvXZd9ziT7EdmVUT+bzYDjty1m7pSs+rUjrc1PrwdDxW9LTvG90N415OAUWiqHPIKheYGRnvJ+Mgc08XePaHZO8VxJTeg5qpOxeM4AN1VLxXct9QAx0j5QVHTIXHnsF+la4oY24+wy9+y/D391fjhSVQFe1thzbymKncHm6ZmFPys7Tgf3873oyzROcAnFZ/u4CXFtApzI3PbU251/+i5eYeSrOK4icQnRnZmugd6buGQBM6Or0nxb/sfCjZQFaoEJPpUOjvncgLmy1i2CeDGF5ISJoc+rsCqey1Z5f2UU0rWA== Received: from TYYP301MB1158.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:108::13) by OS7P301MB1895.JPNP301.PROD.OUTLOOK.COM (2603:1096:604:462::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.6; Tue, 25 Aug 2026 10:44:03 +0000 Received: from TYYP301MB1158.JPNP301.PROD.OUTLOOK.COM ([fe80::c99f:2932:2161:d608]) by TYYP301MB1158.JPNP301.PROD.OUTLOOK.COM ([fe80::c99f:2932:2161:d608%4]) with mapi id 15.21.0339.012; Tue, 25 Aug 2026 10:44:03 +0000 From: =?iso-2022-jp?b?S0FaVVlPU0hJIEFLSVlBTUEgKBskQj0pOzMbKEIgGyRCT0IbKEI=?= =?iso-2022-jp?b?GyRCN0QbKEIp?= To: "openembedded-core@lists.openembedded.org" CC: "JPEWhacker@gmail.com" , "stondo@gmail.com" Subject: [PATCH] spdx30_tasks: Fix duplicated revision in Git PURLs Thread-Topic: [PATCH] spdx30_tasks: Fix duplicated revision in Git PURLs Thread-Index: Ad00fbBy+DxqmyIcR1yoAPM9Ap/mEw== Date: Tue, 25 Aug 2026 10:44:03 +0000 Message-ID: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYYP301MB1158:EE_|OS7P301MB1895:EE_ x-ms-office365-filtering-correlation-id: 528366a8-d5f9-4a59-e103-08df0295c7c2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|23010399003|38070700021|10067099003|56012099006|11063799006|18002099003; x-microsoft-antispam-message-info: pvkS7WZRPRtgNrBQOx57UX7r9AuKvKjYA3OzE/T8v4Ig8JkN13rO+bRBxbTVBjhhVSiR2VGoUNFQJEKJ7xvElLwiNjDTDdnZQsiq0HDzVEv1M0Pl+u2go+6x5Vcz7RZGipzeGUmIa6ORiCVxD7MSS6ZtmxoWLfKvL+AdazfCgGrplr/JXzevlJu4+ILploNFx4DrsGQpb96wDykzLgbr3iqU/dHLeiySPYZF2dRfXySoaxLy3vJYsOyI9CXCWtKMyIB1u7h9khLBPbqT6khUfYkOpO478urbPzBlC7YXJv1pzEVvkWCHfJkiJUTZoPP0pQhQgXxxmeYT1jT1TOoU3H8e26z8z3+Ve10tIxCOTKhh6jSse8mUZF+99PAmSbR6SjjKS8bxNqiq4+B6uJ8rxoPHXdxR5TZc5h9ZHcHsbKH+J8fm1r9JU0YM/koxnrcUZF7tBHBAk6Uy1JUUH2FNTMthHp0w5H0SxPMIYveygwTtdOCoTi+x28WsQe/h7fkd7Pz2CxggFbxJt1vn5/iNibkHm1v6Il4RLqR5aVrbQKKsdtCGSpBtg43IC1lXAwrDUWRGCP0/W6lYg7cam3er13/+TaiDWtQ/uFUSfmwVi4rGUKaYoPyF279lLTeLkVvZflAA9WqX7qhBlrHITP953ubrBrd/Isfbe3ALZZFafQdJeXE0KS5scCsvxhjktiz38tHlNtZfsGqf4pi+4gfIPOkMH2x8qKahdC6ypp/UZGU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYYP301MB1158.JPNP301.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(23010399003)(38070700021)(10067099003)(56012099006)(11063799006)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?b?aFZRNjlHcDUvQ01DQ2h4?= =?iso-2022-jp?b?VmIvdXN2azJxaDhESWgrekEzZGpmT1M5Um1YakRFeFhvb3FnTUxUQmUw?= =?iso-2022-jp?b?aTRrT2tXTGhDb1htZ2h2d2Y2QmZVUExIM25MUXNVcWxZQ2ZuTVZNcE5W?= =?iso-2022-jp?b?dTBvWk9paWlhZlAwQ2o3bkQydGFlSm1pVmNOa0x0N24xU1BUTFhUWmhl?= =?iso-2022-jp?b?SVdIK0dhVXBDM2ZuVExIWVF5Z2pzM2ZoSXdSSEYvNDRLSCtvRFEzTnFB?= =?iso-2022-jp?b?UnlrZ0E0aS9Wd1JOUW5QdERjRHVLcTNKOXUybHJOR2ovWmkrTlUxZStV?= =?iso-2022-jp?b?WFBXa2lFVkJiNXRWRHdoUGI2SVgvWkxXamFpOW5PTlVLcGFMcFZsemhk?= =?iso-2022-jp?b?elhjbEJ2RHpraDNGcHpNNDBxWkFtYUZ6V0NRdWZySG5mZDBQYmo2Ylc5?= =?iso-2022-jp?b?aVpIbzIyaDBrUDV3RkY1Nk9ucmdEbW5TN0crNlovYzVJSGdDTWh0a3o2?= =?iso-2022-jp?b?cW5hRkxXUWRieU5mN2RCMGgrZzE0eFEvb2o1elhxckdJOExERnhNUndK?= =?iso-2022-jp?b?K3VqbnNpZWNwWTh1dVRGSDRPVThDbTRCaGdTR1VIMTdhZ0V0cWxXSG94?= =?iso-2022-jp?b?eHhxWDkxK3RuZWcxbmxwcUJKbmNqYVQ5RnFsR2NyajcydEZWZTc2U3Jr?= =?iso-2022-jp?b?ZDB6cEx5ZG5uN2czT2JGRG80eDJJT0RwMnNkaUhVdXI5dlcwMWtGZC9E?= =?iso-2022-jp?b?UTBjaXBZK3pHc0xacUEzUnJWRUJQNkNreVc5VGRKdk0xL0RSUGFESVFy?= =?iso-2022-jp?b?WjNqcUxFQnc3R0VZeUZ4LzVpN2VTK2puWGhaaEhOMUxWb0tmM1V2anVT?= =?iso-2022-jp?b?ZlVkcGdPRkJpSmg4YkpVZHlZZmpNR1hxSXEzUlBTSXptUnlhTG1oN1gv?= =?iso-2022-jp?b?QnByTnlLaDdxaXFoemloRjJ3Q2dpTG5hUCs5d1ZWL3FsR0czRnB6TUUy?= =?iso-2022-jp?b?UjRjQXl2ME84QUVlUEJ2YWt6Yk5waUlpZTdWcFBNaEExZDRqTDdKRytP?= =?iso-2022-jp?b?T3RGWk5lUm00WmlBNyt5eERKMy83VzhNTTMrcFV6M2pDZDVCbnJRNm51?= =?iso-2022-jp?b?YWFlYnJxNzAySTRKU3pvT2ZYYm1heEFaU09sSXFodnduNGh3a1lqdFVv?= =?iso-2022-jp?b?VGw4T1hlZ0pRdlRydnVWWUZKM0lxdzVCM0RyUkNHRjBGVjJSRXQ4bG5x?= =?iso-2022-jp?b?aWVHSlNYT0liQVlXaENNQkFzK1d3TDRNYlpzeDFjcGJiazFxMmFyMnQ3?= =?iso-2022-jp?b?ZE5pQlJxT3p4Q2xnUDJ5bU1Qc0Z4MnovSnhqK2dQdkltRG5HYlJzT1Ez?= =?iso-2022-jp?b?eW1GYkNFQ2tKd1Y4eEE4eVl5Y05kR2psaVlzYkQycHNwOExvRVhzdWZS?= =?iso-2022-jp?b?LzhqRzZSeFY5M0tmOHBreXM0bmhiUlQ5THl4VjZYb0g0cEloMnN0dGIv?= =?iso-2022-jp?b?N3kzY1F1TVptUEdyWmlNV3M4NEsyNmxwaTJ5a1M5WGVKRjNsYWpnVUxM?= =?iso-2022-jp?b?Q2tDalEwL1RUWlVSRVdFK1ZFTU5iSWdQZk85VWhGN2VrYUlaNithSXhv?= =?iso-2022-jp?b?MlZtWERuS2I4Snk5NDZNLzJwSXdvNnV2UjZONDFFMmNiSmxDTk5Hczgx?= =?iso-2022-jp?b?L0t1T0cwVG1kS0kvQ2pPOFRlYTRJNS9rSWZLL0JVUnpZWDhscnVURHk3?= =?iso-2022-jp?b?dWl3eFYwS0F0YkRKZXFvZkZ2VkJETTJCTUk0YStaNHhjWWlmaW1Jdnlu?= =?iso-2022-jp?b?Q1B5MlNiWmROS2tpWHhUYUhIcm9RTG9kQVRKL1cwN3pTSEhMNXNkMmxw?= =?iso-2022-jp?b?Tmx3TzZib3dTUHhHY250OWtzL3VDWGliT0dWYUFrL2ZVdmtpQjRZSGFB?= =?iso-2022-jp?b?N25lRVNVZTF3bDhLT2JnSitrbVZIQkNJZHVGTXU3S2ZaOWdJYTVjQlJG?= =?iso-2022-jp?b?VTdLTFpkK0lYdzFPTDdmMno1cUllZ2FLRlQ4N0piREd1dkI1ZXJXSmhT?= =?iso-2022-jp?b?ZU1odVZLL0RsSFRSeWdRTnVraVEvWHZKTG5GNUdKV0c5bUtKVTJUdGpB?= =?iso-2022-jp?b?MWNkOENPOG03OXYvWFprT0I1MlZFczZKRFAvOURDQlZwWWM4dFJxWm50?= =?iso-2022-jp?b?MmhLODd4TWdpb0M0V1lCWDZvQTV0UWt1amt3TERwK3F1aFBXTTh3RXo0?= =?iso-2022-jp?b?bDRpUFA5Y1lLTTRUVVpFZ2dTa2ZKZ0tMNERJQktHazc0a3dnZi9GNFZr?= =?iso-2022-jp?b?WEF4ZllRRXFCTmdUSXI3VE5Kd1R6UGo4c3BUNzZuVmJRVnBHZ0krb3lZ?= =?iso-2022-jp?b?OXpoME5UUEdlNnFyQVg2aVF1eGVzQnljdzdvSVlrQWxPV2YybitHUGRW?= =?iso-2022-jp?b?TTI2cW8ySGRyemVuSkVMVUx5azVGZVJ0SUFNczlqQ21wTUxHTXc5Mi9u?= =?iso-2022-jp?b?RUJlNnhERkRqMTYvVXMrdHlONDF3VENjU0Nyb1ZEMHVLZElkdjR0S2JV?= =?iso-2022-jp?b?UzExcFRFVzZ5UFlTUT09?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: Go66vEJS/cuxmT5Rm0dmvrjMrJz8Vxi9X4RuqFqWSJE62oVYpX3M+AxWhBbIUuN/VKldSRP2hMWBuQ9UjkzswesQy8jUiu55f/xQ7fUWuCxF81pKcAyRfQLUD2dq12MDOc7EQinB8T/DHy3/KHIRD2BvFfjNSpPRI/7gGVvQxk4AbEcmYKjrYUsfvYnqvnx7hJDrlozZbNrYRNmLQfj82TuSOra8SGze/SQ2zL7/aClGHIVV4H7Pi2294PsDfem+yGqKZ+ThpVpk4ohRNev10oRDUIK/8KvJFS2O6fJemmQ8b2KRgHDjHctag363ySMHCDt14w2jT8uv5cqTIixg6A== X-OriginatorOrg: jp.honda X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYYP301MB1158.JPNP301.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 528366a8-d5f9-4a59-e103-08df0295c7c2 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2026 10:44:03.4696 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: cc138ffb-9c4d-433b-b211-d4549ae62e8b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l2KBMG/Hr3ywrYi0LtmDr5qoevbS5mqc2jicUSli9YDXB41WLQxH0Uv+CWbdsWC7Ppd4qZlUMxJvvnZuGhuMwhbNjGcTFuD7BK3tNmi8OKM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P301MB1895 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-25_02,2026-08-24_01,2025-10-01_01 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 25 Aug 2026 10:44:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/244226 _generate_git_purl() generates invalid PURLs of the form `pkg:github//@@`. purl-spec only allows a single `@`. oe.spdx_common.fetch_data_to_uri() already appends "@" to the download location, and urlparse() leaves that suffix in parsed.path. Therefore, the parsed repository name(`{repo}`) includes `@`. So, need to strip the revision suffix before splitting out the owner(`{owner}`) and the repository name(`{repo}`). While here, replace str.replace(".git", "") with str.removesuffix() so repository names that contain ".git" elsewhere are preserved. Signed-off-by: Kazuyoshi Akiyama --- meta/lib/oe/spdx30_tasks.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/meta/lib/oe/spdx30_tasks.py b/meta/lib/oe/spdx30_tasks.py index dac02e3784..b2f208e1f6 100644 --- a/meta/lib/oe/spdx30_tasks.py +++ b/meta/lib/oe/spdx30_tasks.py @@ -379,11 +379,14 @@ def _generate_git_purl(d, download_location, srcrev): for domain, purl_type in git_purl_handlers.items(): if hostname == domain: - path = parsed.path.strip("/") + # oe.spdx_common.fetch_data_to_uri() appends "@" to the + # download location, which must not become part of the + # repository name + path = parsed.path.strip("/").partition("@")[0] path_parts = path.split("/") if len(path_parts) >= 2: owner = path_parts[0] - repo = path_parts[1].replace(".git", "") + repo = path_parts[1].removesuffix(".git") return f"{purl_type}/{owner}/{repo}@{srcrev}" break