From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ISR2LPe98WlapwIAWB0awg (envelope-from ) for ; Wed, 29 Apr 2026 04:14:47 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=ws9EIPYr; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=1nevsM0s; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=ws9EIPYr; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=1nevsM0s; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id B147B1E0BA; Wed, 29 Apr 2026 04:14:47 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 12BCC1E067 for ; Wed, 29 Apr 2026 04:14:47 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id C156C4BB3B99 for ; Wed, 29 Apr 2026 08:14:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C156C4BB3B99 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=ws9EIPYr; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=1nevsM0s; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=ws9EIPYr; dkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=1nevsM0s Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by sourceware.org (Postfix) with ESMTPS id 642FD4BB24F1 for ; Wed, 29 Apr 2026 08:13:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 642FD4BB24F1 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 642FD4BB24F1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777450426; cv=none; b=hoqextdVeI3/yolxZZSwiWg6AeEl/apmpdAsHzAS1MD9Fv9a3oFBX6J6wMjrL39/UGE2Ddselamo9BvX+HiXB5JUcaKBFgCWIjBj52+T5lREwEnO15I2OLyemI2tLW3UVWveWhpX1p251RUxixaLeEcFzTU3edxh2kRh3w1afXM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777450426; c=relaxed/simple; bh=Fel8v/7vU1Vq+vacT2Od41zItixaAlc507aSLx0oqCA=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-ID:MIME-Version; b=leh/WwuBu2oHNR9seWjnYAzrzDm+A4d/YHPYNsqbx1AN3RZm7Uk7uPHV9RhAFnHf/QyHN0Abw5vNqIk7zmfiq/S+tAkmGbxinMUfgvcZt00U8aQCBJgIQ8Y5Tm7B1XuY7LFd76yjzF1PH1vedTtcqAknzO7j7xQ1bOZFviYJ5X4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 642FD4BB24F1 Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E6C4C6A83A for ; Wed, 29 Apr 2026 08:13:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1777450418; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=potWMNI00MtOb+gvAhKyoW5hpS5HObp/3/mVdY6ZnrM=; b=ws9EIPYrgNB63QhWQYDY7aeh3NANwBpyE/ifp4KWBr884eAjP+C7dK/ziNso+MDMjIWShb Vz+94e3zrxqYjkdVFfBiuMK5Xhh1nCHPjKxPDJk4Cw9BsNnBt0FkTw4UAafxzFe/CAbbL2 S/GlUqTWV8ddXYppcfca3W1CFBzC8gI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1777450418; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=potWMNI00MtOb+gvAhKyoW5hpS5HObp/3/mVdY6ZnrM=; b=1nevsM0sDJAeCrpO61Y2c1WDLdAa+akzXBlZmhqRyDsPSydXEd0UMfSHKmsTFoSdnYiHVr Vk7WNkxMJU1mIRBg== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1777450418; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=potWMNI00MtOb+gvAhKyoW5hpS5HObp/3/mVdY6ZnrM=; b=ws9EIPYrgNB63QhWQYDY7aeh3NANwBpyE/ifp4KWBr884eAjP+C7dK/ziNso+MDMjIWShb Vz+94e3zrxqYjkdVFfBiuMK5Xhh1nCHPjKxPDJk4Cw9BsNnBt0FkTw4UAafxzFe/CAbbL2 S/GlUqTWV8ddXYppcfca3W1CFBzC8gI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1777450418; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=potWMNI00MtOb+gvAhKyoW5hpS5HObp/3/mVdY6ZnrM=; b=1nevsM0sDJAeCrpO61Y2c1WDLdAa+akzXBlZmhqRyDsPSydXEd0UMfSHKmsTFoSdnYiHVr Vk7WNkxMJU1mIRBg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D34DD593B1 for ; Wed, 29 Apr 2026 08:13:38 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id uLdYMrK98WkpUgAAD6G6ig (envelope-from ) for ; Wed, 29 Apr 2026 08:13:38 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH 4/4] [pre-commit] Add copyright-years check Date: Wed, 29 Apr 2026 10:13:37 +0200 Message-ID: <20260429081337.1563201-5-tdevries@suse.de> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260429081337.1563201-1-tdevries@suse.de> References: <20260429081337.1563201-1-tdevries@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spamd-Result: default: False [-2.80 / 50.00]; BAYES_HAM(-3.00)[99.99%]; NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.de:mid]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; RCVD_TLS_ALL(0.00)[] X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Use the gdb/copyright.py script to do a copyright years pre-commit check. This complains for instance when trying to commit a new file with copyright year 2025 in 2026 [1]. The check seems quick enough: ... $ pre-commit run --all-files -v copyright-years copyright-years.........................................................Passed - hook id: copyright-years - duration: 0.84s ... The first time though someone tries to commit something in a new year, this check will generate a massive amount of changes. [ Note that the script still needs running manually, since the pre-commit check uses only part of the script. ] We could fix this by hardcoding the year, and require manual bumping after all the other files are updated, but I left this as is. [1] https://sourceware.org/pipermail/gdb-patches/2026-April/226916.html --- .pre-commit-config.yaml | 7 +++++++ gdb/copyright.py | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5b1af9a1837..a53046c0e90 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -112,6 +112,13 @@ repos: additional_dependencies: ["pyyaml"] always_run: true require_serial: true + - id: copyright-years + name: copyright-years + language: python + entry: gdb/copyright.py + args: [--pre-commit] + files: '^(gdb|gdbsupport|gdbserver)/.*$' + pass_filenames: true - repo: https://github.com/nmoroze/tclint rev: v0.8.0 hooks: diff --git a/gdb/copyright.py b/gdb/copyright.py index 497dd1fa93c..7f5d85a5909 100755 --- a/gdb/copyright.py +++ b/gdb/copyright.py @@ -181,6 +181,7 @@ def get_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter ) + parser.add_argument("--pre-commit", nargs="+") return parser @@ -192,15 +193,23 @@ def main(argv: list[str]) -> int | None: sys.exit("Error: This script requires python >= 3.13.") parser = get_parser() - _ = parser.parse_args(argv) + args = parser.parse_args(argv) if not os.path.isfile("gnulib/import/extra/update-copyright"): sys.exit("Error: This script must be called from the top-level directory.") - update_list = get_update_list() + # Get the update list from pre-commit, or create the list. + update_list = args.pre_commit if args.pre_commit else get_update_list() + update_list = filter_excluded(update_list) update_files(update_list) + if args.pre_commit: + # Running autoreconf requires a specific version, and asking for + # but not checking manual updates doesn't fit well with pre-commit. + # Let's just use the automatic update part. + return + run_autoreconf() # Remind the user that some files need to be updated by HAND... -- 2.51.0