From patchwork Wed Nov 16 18:58:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antero Mejr X-Patchwork-Id: 44550 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 78ADC27BBED; Wed, 16 Nov 2022 19:00:25 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 86DDA27BBE9 for ; Wed, 16 Nov 2022 19:00:23 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ovNdm-0005Db-07; Wed, 16 Nov 2022 14:00:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ovNdj-0005Cd-15 for guix-patches@gnu.org; Wed, 16 Nov 2022 14:00:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ovNdi-0003Nl-N7 for guix-patches@gnu.org; Wed, 16 Nov 2022 14:00:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ovNdi-0004uu-7o for guix-patches@gnu.org; Wed, 16 Nov 2022 14:00:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#59318] [PATCH] etc: committer: Add --package-directory flag. Resent-From: Antero Mejr Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 16 Nov 2022 19:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 59318 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 59318@debbugs.gnu.org Cc: Antero Mejr X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.166862515518814 (code B ref -1); Wed, 16 Nov 2022 19:00:02 +0000 Received: (at submit) by debbugs.gnu.org; 16 Nov 2022 18:59:15 +0000 Received: from localhost ([127.0.0.1]:58136 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ovNcx-0004tN-3u for submit@debbugs.gnu.org; Wed, 16 Nov 2022 13:59:15 -0500 Received: from lists.gnu.org ([209.51.188.17]:56092) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ovNct-0004tD-Up for submit@debbugs.gnu.org; Wed, 16 Nov 2022 13:59:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ovNct-000572-PO for guix-patches@gnu.org; Wed, 16 Nov 2022 13:59:11 -0500 Received: from mout-p-202.mailbox.org ([80.241.56.172]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1ovNcr-0003G5-AD for guix-patches@gnu.org; Wed, 16 Nov 2022 13:59:11 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4NCC552Gktz9ssc for ; Wed, 16 Nov 2022 19:59:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1668625145; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=DA5sL3o0TOZB3Uc8deMH+PPd7V8+OrVNYJyaRUddelo=; b=IlnC1Bu7MNvB7AcN0lFQpbaMkZ1zx0MAomiP6O3YzoYL+04gEjr9EradC7ViRfd94wLqnz 0yJ7SKXesLbWY6mN6h12UV+iBIy4hBXcRNzuVe3Td7wLaM6sGh5/mGZzObT2xAJFD6CtvU DSYrxnJ9NVclF4SUIpcC361pvztChsSMd5BuDczwdaJuE2G/wNHN3sjUl1pxMjfxjeE4di jib2Vux2+Pk2L7y7pvoqAFphAqSQmWeC79IAlFb/ZdT89VqrMqzMrayMpDeJwpgf5Hnt79 9bK6eBh946gsYSu1d/mN2Irykh9WeThUgitG4qq7RtC2fm6HjzdZCNTHYWeQfQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1668625143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=DA5sL3o0TOZB3Uc8deMH+PPd7V8+OrVNYJyaRUddelo=; b=r6DzgnbojGSARElJZF1Y3qi6j0lmTPTywBT0Rxm9ZLXO8TAayGkebsa+Ug+fxLNtwu5ngK mSHlFwNyP0EXRqvppOkpZyquEwAaoWiWu2YGbToIEFTfsxqNkefCaExF8HUIQW2kdJVj9K Ahccnykw2EicTfp9n0cJbUyFJyIRySSqVcHf1GWbXK2+BjSQMaCh+nTPEpX7EnHvFtjUwV 5WyZeJ3dmlIYjtVKfbLpvlmXvkswIrrMqvi6rhRrSIuRNrxuGqnR2CJez6dvdBcHlarqcq zOlOhYpGdhTZ4vZyAwf973BHjA3UOR7ICix21dMt3OC+f9vWiytAwbWw0MCSXg== Date: Wed, 16 Nov 2022 18:58:53 +0000 Message-Id: <20221116185853.13957-1-antero@mailbox.org> MIME-Version: 1.0 X-MBO-RS-META: wwuqkb14gjz4d94nqq17irw1gfw41m6n X-MBO-RS-ID: b03df971bd49a09dc18 X-Rspamd-Queue-Id: 4NCC552Gktz9ssc Received-SPF: pass client-ip=80.241.56.172; envelope-from=antero@mailbox.org; helo=mout-p-202.mailbox.org X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Antero Mejr X-ACL-Warn: , Antero Mejr via Guix-patches X-Patchwork-Original-From: Antero Mejr via Guix-patches via From: Antero Mejr Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * etc/committer.scm.in (main)[pkg-dir]: New variable. (main): Use it. (diff-info)[package-dir]: New argument. (change-commit-message)[package-dir]: New argument. (add-commit-message)[package-dir]: New argument. (remove-commit-message)[package-dir]: New argument. (custom-commit-message)[package-dir]: New argument. --- Make the hard-coded "gnu" part of the package directory path into a flag. This allows committer.scm to be used for channels where the package directory is not "gnu". etc/committer.scm.in | 46 +++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/etc/committer.scm.in b/etc/committer.scm.in index e7f1ca8c45..13021891aa 100755 --- a/etc/committer.scm.in +++ b/etc/committer.scm.in @@ -129,7 +129,7 @@ (define* (hunk->patch hunk #:optional (port (current-output-port))) file-name file-name file-name file-name (string-join (hunk-diff-lines hunk) "")))) -(define (diff-info) +(define (diff-info package-dir) "Read the diff and return a list of values." (let ((port (open-pipe* OPEN_READ "git" "diff-files" @@ -138,7 +138,7 @@ (define (diff-info) ;; new definitions with changes to existing ;; definitions. "--unified=1" - "--" "gnu"))) + "--" package-dir))) (define (extract-line-number line-tag) (abs (string->number (car (string-split line-tag #\,))))) @@ -221,7 +221,8 @@ (define (new-sexp hunk) (+ (lines-to-first-change hunk) (hunk-new-line-number hunk)))))) -(define* (change-commit-message file-name old new #:optional (port (current-output-port))) +(define* (change-commit-message file-name old new package-dir + #:optional (port (current-output-port))) "Print ChangeLog commit message for changes between OLD and NEW." (define (get-values expr field) (match ((xpath:sxpath `(// ,field quasiquote *)) expr) @@ -247,8 +248,8 @@ (define version (and=> ((xpath:sxpath '(// version *any*)) new) first)) (format port - "gnu: ~a: Update to ~a.~%~%* ~a (~a): Update to ~a.~%" - variable-name version file-name variable-name version) + "~a: ~a: Update to ~a.~%~%* ~a (~a): Update to ~a.~%" + package-dir variable-name version file-name variable-name version) (for-each (lambda (field) (let ((old-values (get-values old field)) (new-values (get-values new field))) @@ -272,21 +273,22 @@ (define version (listify added)))))))))) '(inputs propagated-inputs native-inputs))) -(define* (add-commit-message file-name variable-name +(define* (add-commit-message file-name variable-name package-dir #:optional (port (current-output-port))) "Print ChangeLog commit message for a change to FILE-NAME adding a definition." - (format port "gnu: Add ~a.~%~%* ~a (~a): New variable.~%" - variable-name file-name variable-name)) + (format port "~a: Add ~a.~%~%* ~a (~a): New variable.~%" + package-dir variable-name file-name variable-name)) -(define* (remove-commit-message file-name variable-name +(define* (remove-commit-message file-name variable-name package-dir #:optional (port (current-output-port))) "Print ChangeLog commit message for a change to FILE-NAME removing a definition." - (format port "gnu: Remove ~a.~%~%* ~a (~a): Delete variable.~%" - variable-name file-name variable-name)) + (format port "~a: Remove ~a.~%~%* ~a (~a): Delete variable.~%" + package-dir variable-name file-name variable-name)) (define* (custom-commit-message file-name variable-name message changelog + package-dir #:optional (port (current-output-port))) "Print custom commit message for a change to VARIABLE-NAME in FILE-NAME, using MESSAGE as the commit message and CHANGELOG as the body of the ChangeLog @@ -301,7 +303,7 @@ (define (changelog-has-location? changelog) (let* ((message (trim message)) (changelog (if changelog (trim changelog) message)) - (message/f (format #f "gnu: ~a: ~a." variable-name message)) + (message/f (format #f "~a: ~a: ~a." package-dir variable-name message)) (changelog/f (if (changelog-has-location? changelog) (format #f "* ~a (~a)~a." file-name variable-name changelog) @@ -349,16 +351,23 @@ (define (new+old+hunks hunks) (define %delay 1000) (define (main . args) + (define pkg-dir + (match args + (("--package-directory" pkg-dir ...) + (begin (set! args (cddr args)) + (car pkg-dir))) + (_ "gnu"))) + (define* (change-commit-message* file-name old new #:rest rest) (let ((changelog #f)) (match args ((or (message changelog) (message)) (apply custom-commit-message - file-name (second old) message changelog rest)) + file-name (second old) message changelog pkg-dir rest)) (_ - (apply change-commit-message file-name old new rest))))) + (apply change-commit-message file-name old new pkg-dir rest))))) - (match (diff-info) + (match (diff-info pkg-dir) (() (display "Nothing to be done.\n" (current-error-port))) (hunks @@ -373,7 +382,7 @@ (define* (change-commit-message* file-name old new #:rest rest) (commit-message-proc (match (hunk-type hunk) ('addition add-commit-message) ('removal remove-commit-message)))) - (commit-message-proc (hunk-file-name hunk) variable-name) + (commit-message-proc (hunk-file-name hunk) variable-name pkg-dir) (let ((port (open-pipe* OPEN_WRITE "git" "apply" "--cached" @@ -383,7 +392,8 @@ (define* (change-commit-message* file-name old new #:rest rest) (error "Cannot apply"))) (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-"))) - (commit-message-proc (hunk-file-name hunk) variable-name port) + (commit-message-proc (hunk-file-name hunk) variable-name pkg-dir + port) (usleep %delay) (unless (eqv? 0 (status:exit-val (close-pipe port))) (error "Cannot commit")))) @@ -423,6 +433,6 @@ (define copyright-line (error "Cannot commit"))))))) ;; XXX: we recompute the hunks here because previous ;; insertions lead to offsets. - (new+old+hunks (diff-info)))))) + (new+old+hunks (diff-info pkg-dir)))))) (apply main (cdr (command-line)))