From patchwork Sat Apr 4 21:28:45 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 2124 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=1775338282; bh=86zhGhKdigLQKp+HUNpFQ646TluiP2eMcIe7VerXFmM=; 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=Tikj3aEiUdHqKCwbLaVmEVb/Y1fZ05WbPPvi22hDiSUaT4zGMXmPoqVJK8GLu3XIy UKoe5XVCb8BrmBJD2NICQVuifekwpCCNUyhSMO64zPx+r1eZAF3HEJqsKMCg08GZ4c IqnAcW7b65r02qpkSYTSAEMVDSl6IcwL9P2DCFLHQh2cHSYcUaI3vFeFJvQHBab7yL IUPNwskZneLWUhASi6ZHTYOLwy2hWiEU7E/MgbHw7f6e+MoX3tnm2m5ZtAu6otz3EN WTKcFVQAVM+KcMfiCnKGj7/HQn76v/FPdB2vSkRftwWN649KvFvUgWzs8Izv1s7vvF z9k9YM2lIVTiA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 756226A37F for ; Sat, 4 Apr 2026 15:31:22 -0600 (MDT) 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 eM27vwor_H5p for ; Sat, 4 Apr 2026 15:31:22 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1775338282; bh=86zhGhKdigLQKp+HUNpFQ646TluiP2eMcIe7VerXFmM=; 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=Tikj3aEiUdHqKCwbLaVmEVb/Y1fZ05WbPPvi22hDiSUaT4zGMXmPoqVJK8GLu3XIy UKoe5XVCb8BrmBJD2NICQVuifekwpCCNUyhSMO64zPx+r1eZAF3HEJqsKMCg08GZ4c IqnAcW7b65r02qpkSYTSAEMVDSl6IcwL9P2DCFLHQh2cHSYcUaI3vFeFJvQHBab7yL IUPNwskZneLWUhASi6ZHTYOLwy2hWiEU7E/MgbHw7f6e+MoX3tnm2m5ZtAu6otz3EN WTKcFVQAVM+KcMfiCnKGj7/HQn76v/FPdB2vSkRftwWN649KvFvUgWzs8Izv1s7vvF z9k9YM2lIVTiA== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 6507A6A375 for ; Sat, 4 Apr 2026 15:31:22 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1775338280; bh=trVncWXPRLPuZdVaUcDUjjegqD3hpyUMlP1Bt81faIY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AFQMHVzLkmx/AWtkjN0/AAZeBNbaIz4MW91NpSNNO55RVU4aBIaLC6z3FEeC6LPA9 IktIkgMiFu9n+leLMLNFmcrWVVC0ghP/AKJ0QVAsCjjrKKAeNP3aZH6Sve6wRRgOnP vYOvP2fM2nIDgHWlQ/7j/Mbwz2gLbOwGiAeqQ5buW5jccf5o9PRW0i65rGFMMSEX9E w4NtpOjz6Eap2Kz0Uy3pfAxfi74CIl/fZjFjF/mbGZgHNdQIoMAknIkZ83V66suJsJ of7vu/isHUxpfZvuJCM7s7R7bki+E59eP1QGjPgPVYgsIY41CVrZxHQGfpjcojArSE vFI23qNOevlcw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E06F96A369; Sat, 4 Apr 2026 15:31:20 -0600 (MDT) 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 mnfRYM9joqlO; Sat, 4 Apr 2026 15:31:20 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1775338276; bh=DPNoh9Dr6TIyvxg6MF2OVyXbPkYg1XlmOHAktcmXF9c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hkT09jQ7qA74plqrrcYmLfAFRXMwArQZYW80COLdPFRCYvjHLd5ZV0L4ycQGrkdC6 1wccVtjVhAkZODBXgCTvYnizaST7RLKUNaS0K8mzzKhspfjSKao8ZPCfwqXd34LPxj Q8hTYv9hHs0T/pQIETbET3P2iBOdTiH/tgTOxZa0Fol6mVw1b5U7uNj51o0ezQAKr4 quekMe7PPuiD7IfKbrEmy/ytVHeuGHpyHP5850I5+39kW+jSM6PSmYxck0mVgIpaD/ QEby3U2A1PKEHM0/ejUqpEgCAh1kmCMXPfCHaMAXBvJitGVO4zbatByKvZ/u+gmUPJ CfSHBKPjM939A== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 831846869D; Sat, 4 Apr 2026 15:31:16 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Sat, 4 Apr 2026 15:28:45 -0600 Message-ID: <20260404213020.372253-10-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260404213020.372253-1-sjg@u-boot.org> References: <20260404213020.372253-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: 4YWGWXRUU2U6IVAYH3ZG27RN6ETNUBAP X-Message-ID-Hash: 4YWGWXRUU2U6IVAYH3ZG27RN6ETNUBAP 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 X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 09/37] patman: Extract _setup_patchwork() helper from do_series() 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 Factor out the patchwork URL resolution and project lookup into a shared helper function. This reduces duplication and makes the logic available to other commands such as the upcoming review command. Signed-off-by: Simon Glass --- tools/patman/control.py | 61 ++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/tools/patman/control.py b/tools/patman/control.py index 0c3a3097967..53963713a8b 100644 --- a/tools/patman/control.py +++ b/tools/patman/control.py @@ -111,6 +111,42 @@ def patchwork_status(branch, count, start, end, dest_branch, force, show_comments, False, pwork) +def _setup_patchwork(cser, pwork, ups, pw_url): + """Set up a Patchwork instance from upstream and project settings + + Args: + cser (Cseries): Open cseries instance + pwork (Patchwork or None): Existing instance, or None to create + ups (str or None): Upstream name + pw_url (str or None): Patchwork URL override + + Returns: + Patchwork: Configured instance + + Raises: + ValueError: if the URL or project cannot be resolved + """ + if pwork: + return pwork + if not pw_url and ups: + pw_url = cser.db.upstream_get_patchwork_url(ups) + if not pw_url: + raise ValueError( + 'No patchwork URL found; use -U/--upstream or ' + "configure with 'patman upstream add'") + pwork = Patchwork(pw_url) + proj = cser.project_get(ups) + if not proj: + proj = cser.project_get() + if not proj: + raise ValueError( + "Patchwork project not configured; use " + "'patman patchwork set-project'") + _, proj_id, link_name = proj + pwork.project_set(proj_id, link_name) + return pwork + + def do_series(args, test_db=None, pwork=None, cser=None): """Process a series subcommand @@ -133,28 +169,9 @@ def do_series(args, test_db=None, pwork=None, cser=None): try: cser.open_database() if args.subcmd in needs_patchwork: - if not pwork: - ups = cser.get_series_upstream(args.series) - pw_url = None - if ups: - pw_url = cser.db.upstream_get_patchwork_url(ups) - if not pw_url: - pw_url = args.patchwork_url - if not pw_url: - raise ValueError( - 'No patchwork URL found for upstream ' - f"'{ups}'; use 'patman upstream add' with " - '-p or pass --patchwork-url') - pwork = Patchwork(pw_url) - proj = cser.project_get(ups) - if not proj: - proj = cser.project_get() - if not proj: - raise ValueError( - "Please set project ID with " - "'patman patchwork set-project'") - _, proj_id, link_name = proj - pwork.project_set(proj_id, link_name) + ups = cser.get_series_upstream(args.series) + pwork = _setup_patchwork( + cser, pwork, ups, args.patchwork_url) elif pwork and pwork is not True: raise ValueError( f"Internal error: command '{args.subcmd}' should not have patchwork")