From patchwork Sun Jan 4 20:08:39 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1269 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=1767557382; bh=0u8Bx3d2J8baQjZ2ydiRXeOfDXAvYYsltzCAY3uCQOs=; 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=B7us5ubZ9O57s+Wq6pCmQZSBuuWxnwOA7re0V/Aso46MGhNSRFmCBuyvNYePnK0NK k4gQHNeNtrLPJGbkk3lYFw0B2Fp9zlhKg1Q5SEwwX5dY2v/xYqKtgR0XXN0R36oM3F HZKqnMzA1MwMg/JALEuHL/ue+O1FOPJnj9GGt9f76nhr0NPlisDFSGAGHasC/TyFwo 6+68QGIIeBfELlruJqOcgPRXkyA5uCfM3oMVdBHxoc81Ak1aPnkqD1c3+iuxeNUoGl VZXl9OVZ+20DMQSugZYamhnAzMV6tZGGwmyl7kGDNLP+dIAw0iKxTKYzx0zkwftvl0 AtorUOOvZThwA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 07C1E690EB for ; Sun, 4 Jan 2026 13:09:42 -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 POET3dqazzUa for ; Sun, 4 Jan 2026 13:09:41 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767557381; bh=0u8Bx3d2J8baQjZ2ydiRXeOfDXAvYYsltzCAY3uCQOs=; 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=sS5xgNPeILWl/rnlA6LLlqThv4eo0myzdy+4eIApxiSL8lS+T7YVwetS7pAgE9XLM 8pP9c5Gu75rgHbNd6w24Z0lW9Srdhr9YJAoJkBRGYGXm5+Nm3i/Fw8hymNBWqhaLT3 2HRymaK3JMd1TSFmijeiqvBsVLVKDQbH8Npxh1ZoPyszwXvyIxgS+vFqXnp47VsD6m fbJR1uDL8r2g2gY7wDV9wzxHlIkJiNCt1MftY6U/qzreO1u91fpXIVEfSWIewwcVDI feAOGOO8GY+4lu2kk0rADFobQ7c/KGosBKfVPz1Y/EsZS3cMVIKmjBF5hQEvjyn6h7 zQtKODeZCbadQ== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E8307690D9 for ; Sun, 4 Jan 2026 13:09:41 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767557381; bh=I1rMGkJiM77kYnFrXV1oKDBdSwlQqK9z/qxEuwFGQr4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fSNpIHJwntwcUXFzixoHV2ZpxIIxRpWWJ6Ypnd+LuVIiJUWswfwxAUL0v2EPLH8OO kDeN0zTy/tXccsJGtNiw2QuhrqCfukZ97d6IHv4npjDwxUhjHDI9gQ8u6937SMvXdv 9f9BY8BnLLwORQhOlCw+nJfkCXkI0QAjz18KezMW8dc7rjj0FTiA59vg7xl5NAS+JN gFhhGUZ7GlU2PrVXJ3aaxORlzeEv9CsP7nXHDiJj+fuS6R5BjHfugW2dTpLjXvzaJG dq8hUoKc9cFN1kd0TlD8s1OsLk/85j5PV/VNKS6oxOcnwPr+rliqiMC7FGsSZO/Wvf sLO0FIEqqzTKg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 1797C69003; Sun, 4 Jan 2026 13:09:41 -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 gHiZW6uhBUja; Sun, 4 Jan 2026 13:09:41 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767557376; bh=w8PVODVGzPIpxGatpx98igNESRP0f9VB+LNXGXYFH4M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oZcuI2KhkCMx0wplWujtuLT35gYikWgzD+d2Mbyk6xbgqWUjEwPeJYtZxV0wywUgU bEAFstbvKvNRxbFPxkFyIaKDM3pGwDqmGNWKK0vf+/oWm0vPGHCli/bgHTXdDQBpzG FzeyOPrntgX8IMFcGdXtHjhkROabDudTtpdfzTcth0llIYzx8vD+jDyqD6JGmQ50O9 YIlW/dPymw/wiuGNospW/I0TZAVSdKrgSsjLvlg1SQbV5XmjNanksHOG0/Zjfr2dq1 PxNEwc6OgqI3sIUBJZgOsTmn1yWhSTg9yBcQeBq5MSUmyzPM8LsCiAmu/rIOfl2Vyu tiD5y0OwEXk3Q== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 85FD268FD8; Sun, 4 Jan 2026 13:09:36 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Sun, 4 Jan 2026 13:08:39 -0700 Message-ID: <20260104200844.481633-11-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260104200844.481633-1-sjg@u-boot.org> References: <20260104200844.481633-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: VUBXEYKRR6VHJCBKH5U7SRALNWL2TZ4S X-Message-ID-Hash: VUBXEYKRR6VHJCBKH5U7SRALNWL2TZ4S 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: Heinrich Schuchardt , Simon Glass , "Claude Opus 4 . 5" X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 10/11] buildman: Fix remaining pylint warnings in toolchain.py 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 Fix various pylint warnings: - Remove unused import tempfile - Split urllib imports onto separate lines - Rename loop variable 'tag' to 'attr' to avoid redefining argument - Use enumerate instead of range(len()) - Remove unused show_warning parameter from get_wrapper() - Prefix unused loop variables with underscore - Remove unnecessary elif/else after return/raise statements - Split multiple statements on single lines - Use 'with' for urllib.request.urlopen resource management - Add pylint disable comments for functions with many arguments This brings toolchain.py to pylint 10.00/10. Co-developed-by: Claude Opus 4.5 Signed-off-by: Simon Glass --- tools/buildman/toolchain.py | 64 ++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py index 90f56813300..8ec1dbdebba 100644 --- a/tools/buildman/toolchain.py +++ b/tools/buildman/toolchain.py @@ -8,8 +8,9 @@ import glob from html.parser import HTMLParser import os import sys -import tempfile -import urllib.request, urllib.error, urllib.parse +import urllib.error +import urllib.parse +import urllib.request from buildman import bsettings from u_boot_pylib import command @@ -48,8 +49,8 @@ class MyHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs): """Handle a start tag in the HTML being parsed""" if tag == 'a': - for tag, value in attrs: - if tag == 'href': + for attr, value in attrs: + if attr == 'href': if value and value.endswith('.xz'): self.links.append(value) if self._re_arch.search(value): @@ -70,6 +71,7 @@ class Toolchain: normal one ok (bool): True if the toolchain works, False otherwise """ + # pylint: disable=too-many-arguments,too-many-positional-arguments def __init__(self, fname, test, verbose=False, priority=PRIORITY_CALC, arch=None, override_toolchain=None): """Create a new toolchain object. @@ -145,16 +147,16 @@ class Toolchain: '-none-linux-gnueabi', '-none-linux-gnueabihf', '-uclinux', '-none-eabi', '-gentoo-linux-gnu', '-linux-gnueabi', '-linux-gnueabihf', '-le-linux', '-uclinux'] - for prio in range(len(priority_list)): - if priority_list[prio] in fname: + for prio, item in enumerate(priority_list): + if item in fname: return PRIORITY_CALC + prio return PRIORITY_CALC + prio - def get_wrapper(self, show_warning=True): + def get_wrapper(self): """Get toolchain wrapper from the setting file. """ value = '' - for name, value in bsettings.get_items('toolchain-wrapper'): + for _, value in bsettings.get_items('toolchain-wrapper'): if not value: print("Warning: Wrapper not found") if value: @@ -177,17 +179,16 @@ class Toolchain: if (base == '' and self.cross == ''): return '' return wrapper + os.path.join(base, self.cross) - elif which == VAR_PATH: + if which == VAR_PATH: return self.path - elif which == VAR_ARCH: + if which == VAR_ARCH: return self.arch - elif which == VAR_MAKE_ARGS: + if which == VAR_MAKE_ARGS: args = self.make_args() if args: return ' '.join(args) return '' - else: - raise ValueError(f'Unknown arg to GetEnvArgs ({which})') + raise ValueError(f'Unknown arg to GetEnvArgs ({which})') def make_environment(self, full_path, env=None): """Returns an environment for using the toolchain. @@ -311,7 +312,7 @@ class Toolchains: f"{bsettings.config_fname}. See buildman.rst for details") paths = [] - for name, value in toolchains: + for _, value in toolchains: fname = os.path.expanduser(value) if '*' in value: paths += glob.glob(fname) @@ -329,6 +330,7 @@ class Toolchains: self.prefixes = bsettings.get_items('toolchain-prefix') self.paths += self.get_path_list(show_warning) + # pylint: disable=too-many-arguments,too-many-positional-arguments def add(self, fname, test=True, verbose=False, priority=PRIORITY_CALC, arch=None): """Add a toolchain to our list @@ -371,9 +373,11 @@ class Toolchains: fnames = [] for subdir in ['.', 'bin', 'usr/bin']: dirname = os.path.join(path, subdir) - if verbose: print(f" - looking in '{dirname}'") + if verbose: + print(f" - looking in '{dirname}'") for fname in glob.glob(dirname + '/*gcc'): - if verbose: print(f" - found '{fname}'") + if verbose: + print(f" - found '{fname}'") fnames.append(fname) return fnames @@ -406,7 +410,8 @@ class Toolchains: raise_on_error (bool): True to raise an error if a toolchain is not found """ - if verbose: print('Scanning for tool chains') + if verbose: + print('Scanning for tool chains') for name, value in self.prefixes: fname = os.path.expanduser(value) if verbose: @@ -425,10 +430,10 @@ class Toolchains: msg = f"No tool chain found for prefix '{fname}'" if raise_on_error: raise ValueError(msg) - else: - print(f'Error: {msg}') + print(f'Error: {msg}') for path in self.paths: - if verbose: print(f" - scanning path '{path}'") + if verbose: + print(f" - scanning path '{path}'") fnames = self.scan_path(path, verbose) for fname in fnames: self.add(fname, True, verbose) @@ -560,14 +565,14 @@ class Toolchains: for version in versions: url = f'{base}/{arch}/{version}/' print(f'Checking: {url}') - response = urllib.request.urlopen(url) - html = tools.to_string(response.read()) - parser = MyHTMLParser(fetch_arch) - parser.feed(html) - if fetch_arch == 'list': - links += parser.links - elif parser.arch_link: - return url + parser.arch_link + with urllib.request.urlopen(url) as response: + html = tools.to_string(response.read()) + parser = MyHTMLParser(fetch_arch) + parser.feed(html) + if fetch_arch == 'list': + links += parser.links + elif parser.arch_link: + return url + parser.arch_link if fetch_arch == 'list': return arch, links return None @@ -650,7 +655,8 @@ class Toolchains: print(col.build(col.RED, f"Warning, ambiguous toolchains: " f"{', '.join(compiler_fname_list)}")) - toolchain = Toolchain(compiler_fname_list[0], True, True) + # Instantiate to verify the toolchain works + Toolchain(compiler_fname_list[0], True, True) # Make sure that it will be found by buildman if not self.test_settings_has_path(dirpath):