From patchwork Sat Feb 14 03:26:24 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1878 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1771039628; bh=/BcU8HkD1XS7tfnuRDqOnmhoPqqlCvmGBj4YVAwOqhI=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=iO1c8Higp8TdI9NqgczsA71mtXcRpOT5c9j1dsmMud/0Lp9hWqXBSbtPjEjqsjwUY hGSQsWpvANqhi4mIRpp6IIqDP2ro7KDyCn4x5gKMlgwIqc329F36moCxhynBs8cCvu 41ZF7tl6mLloCz1tcjGd2iep4VWC87ISD6gTzJW8pccAnOJ420SppGNCIZSrBOAw5L SztrFTmjDF6WjLfJd5NCw7I25CE9jsXHbqTuqETMwS9/oeE7kGxVGE+i+yhtO3NWzj AbUr8hGv83EbqZm5wT8+CoNArPeqyVyWo1FDUiK+9vh/AT8immcJGOjQHoLDubzixF 41BBJnH2ws43g== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 881B669B71 for ; Fri, 13 Feb 2026 20:27:08 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id Jy7LMAxtQOG7 for ; Fri, 13 Feb 2026 20:27:08 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1771039628; bh=/BcU8HkD1XS7tfnuRDqOnmhoPqqlCvmGBj4YVAwOqhI=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=iO1c8Higp8TdI9NqgczsA71mtXcRpOT5c9j1dsmMud/0Lp9hWqXBSbtPjEjqsjwUY hGSQsWpvANqhi4mIRpp6IIqDP2ro7KDyCn4x5gKMlgwIqc329F36moCxhynBs8cCvu 41ZF7tl6mLloCz1tcjGd2iep4VWC87ISD6gTzJW8pccAnOJ420SppGNCIZSrBOAw5L SztrFTmjDF6WjLfJd5NCw7I25CE9jsXHbqTuqETMwS9/oeE7kGxVGE+i+yhtO3NWzj AbUr8hGv83EbqZm5wT8+CoNArPeqyVyWo1FDUiK+9vh/AT8immcJGOjQHoLDubzixF 41BBJnH2ws43g== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 75B0569B5C for ; Fri, 13 Feb 2026 20:27:08 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1771039626; bh=UDpn8CKvQ9HtGUxqpV61BLkanIOgLIg19mauwcsNDCo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XqhbPtzNl241aNjBzhXINBWzfFhHOm5VQ8Rv+Ib08BKn3Say1h8PX91ZaEJsdRGfM 6l9s4uhCSN7g4as5oFJK+/SmK97qc0FezD7BeJESOy45MSegr5eSArwl3d1bgKx/TC QFrlqwPEZr5jN/DAcR8WnacQRKrYkH8By2sxw5ljuhqSCIi5fn4oGTS3MWhLFQJ9WG XP8eT1vqHXKWYIQOdwGexmXwxCGsDoxCPuKSgYO1akEYQhxWniKlHikIxE+IWA3+d8 0kgvfvrpOIVDncbQWUJ0e46bdhXWxn4rxrzqcmTO3kNdGYX6c2w4AsaKdp9wiI5z6X /W94a4s0lldXg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 72CE269B5C; Fri, 13 Feb 2026 20:27:06 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id tJYhuYIKHjR2; Fri, 13 Feb 2026 20:27:06 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1771039622; bh=s3hxhjW3Z2GXUBPNb4o34LX9TPq6znDzsKLcCpGrPaA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=peW2kArWFhNhHEcMa4IL41QhW0GDfeHnKtQNoCVFySsg3mixCbZ2M7jx11GQeSoe8 LsaB0E4Oo4DAbN7R+K/MYeq9xMHbcKF9b+ot+JJD1QnuVwQ+MF0o88QNNSzYQWN1HZ cL7vkLNXdDMuNaq2CkFWFEwbLHQ4DrS/LyxwmKu8XmE12X/W7+g7EpCdRYnfpX/Ysq F5cveYs/u71w9cwwTKn3K4FWMS5IPeKtuT6mL1htPkf3dJ8UPCTfeotAvTppEPFLA2 eGMEfrInBAUU6cXEdyB8NylwQDGDotKEZFzY/asZO79JCWI6FfwtsErLEgytt3gZKs J+1WvUPbBfQ0g== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id ABAD469B31; Fri, 13 Feb 2026 20:27:01 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Fri, 13 Feb 2026 20:26:24 -0700 Message-ID: <20260214032632.3957279-6-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260214032632.3957279-1-sjg@u-boot.org> References: <20260214032632.3957279-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: V6SV3A3HIGABFO4PBC7JDF6WS7Y4N4PC X-Message-ID-Hash: V6SV3A3HIGABFO4PBC7JDF6WS7Y4N4PC X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass , "Claude Opus 4 . 6" X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 5/7] patman: Improve patchwork project-finding List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Some patchwork instances return project names with trailing whitespace, which causes the exact string match to fail. Strip whitespace before comparing. Also add debug logging to show the projects being checked and which one matches, to help diagnose future issues. Co-developed-by: Claude Opus 4.6 Signed-off-by: Simon Glass --- tools/patman/control.py | 2 +- tools/patman/cseries.py | 13 +++++++++---- tools/patman/test_cseries.py | 8 ++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/tools/patman/control.py b/tools/patman/control.py index 338a58f4d75..c6fede4305b 100644 --- a/tools/patman/control.py +++ b/tools/patman/control.py @@ -273,7 +273,7 @@ def patchwork(args, test_db=None, pwork=None): if not info: raise ValueError("Project has not been set; use 'patman patchwork set-project'") name, pwid, link_name = info - print(f"Project '{name}' patchwork-ID {pwid} link-name {link_name}") + print(f"Project '{name}' patchwork-ID {pwid} link-name '{link_name}'") else: raise ValueError(f"Unknown patchwork subcommand '{args.subcmd}'") finally: diff --git a/tools/patman/cseries.py b/tools/patman/cseries.py index c5620985a09..e8d40394608 100644 --- a/tools/patman/cseries.py +++ b/tools/patman/cseries.py @@ -634,20 +634,25 @@ class Cseries(cser_helper.CseriesHelper): name (str): Name of the project to use in patchwork quiet (bool): True to skip writing the message """ + tout.detail(f"Patchwork URL '{pwork.url}': finding name '{name}'") res = self.loop.run_until_complete(pwork.get_projects()) proj_id = None link_name = None for proj in res: - if proj['name'] == name: - proj_id = proj['id'] + pid, pname = proj['id'], proj['name'] + ok = pname.strip() == name + tout.detail(f"{pid:3} '{pname}'") + if ok: + proj_id = pid link_name = proj['link_name'] + tout.detail(f'Name match: ID {proj_id}') if not proj_id: raise ValueError(f"Unknown project name '{name}'") self.db.settings_update(name, proj_id, link_name) self.commit() if not quiet: - tout.info(f"Project '{name}' patchwork-ID {proj_id} " - f'link-name {link_name}') + tout.notice(f"Project '{name}' patchwork-ID {proj_id} " + f"link-name '{link_name}'") def project_get(self): """Get the details of the project diff --git a/tools/patman/test_cseries.py b/tools/patman/test_cseries.py index a7750525ea6..3aa8e0e739e 100644 --- a/tools/patman/test_cseries.py +++ b/tools/patman/test_cseries.py @@ -2389,7 +2389,7 @@ Tested-by: Mary Smith # yak with terminal.capture() as (out, _): cser.project_set(pwork, 'U-Boot') self.assertEqual( - f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name uboot", + f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name 'uboot'", out.getvalue().strip()) def test_patchwork_project_get(self): @@ -2400,7 +2400,7 @@ Tested-by: Mary Smith # yak with terminal.capture() as (out, _): cser.project_set(pwork, 'U-Boot') self.assertEqual( - f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name uboot", + f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name 'uboot'", out.getvalue().strip()) name, pwid, link_name = cser.project_get() @@ -2419,7 +2419,7 @@ Tested-by: Mary Smith # yak self.run_args('-P', 'https://url', 'patchwork', 'set-project', 'U-Boot', pwork=pwork) self.assertEqual( - f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name uboot", + f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name 'uboot'", out.getvalue().strip()) name, pwid, link_name = cser.project_get() @@ -2430,7 +2430,7 @@ Tested-by: Mary Smith # yak with terminal.capture() as (out, _): self.run_args('-P', 'https://url', 'patchwork', 'get-project') self.assertEqual( - f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name uboot", + f"Project 'U-Boot' patchwork-ID {self.PROJ_ID} link-name 'uboot'", out.getvalue().strip()) def check_series_list_patches(self):