From unknown Sat Aug 16 15:53:17 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#76112 <76112@debbugs.gnu.org> To: bug#76112 <76112@debbugs.gnu.org> Subject: Status: gnupg-verify* crashes when stdin is not /dev/tty Reply-To: bug#76112 <76112@debbugs.gnu.org> Date: Sat, 16 Aug 2025 22:53:17 +0000 retitle 76112 gnupg-verify* crashes when stdin is not /dev/tty reassign 76112 guix submitter 76112 Maxim Cournoyer severity 76112 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 06 20:56:11 2025 Received: (at submit) by debbugs.gnu.org; 7 Feb 2025 01:56:12 +0000 Received: from localhost ([127.0.0.1]:60045 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tgDbH-0003Fz-BV for submit@debbugs.gnu.org; Thu, 06 Feb 2025 20:56:11 -0500 Received: from lists.gnu.org ([2001:470:142::17]:34916) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tgDbF-0003Fg-7V for submit@debbugs.gnu.org; Thu, 06 Feb 2025 20:56:10 -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 1tgDb7-0005qF-E2 for bug-guix@gnu.org; Thu, 06 Feb 2025 20:56:01 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tgDb5-0000ya-8f for bug-guix@gnu.org; Thu, 06 Feb 2025 20:56:01 -0500 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-21f2f09865bso29047425ad.0 for ; Thu, 06 Feb 2025 17:55:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738893355; x=1739498155; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=VEMs7cp28N/GGnnHdhtUvDJhQd9BCwnpDbaEzEo2uu8=; b=gOzrlMEcnS0DACrzGRjr/QPv+SiLhVNYdUK84YB+0+tzb8+856TDsy/7DnOdctXCmx 9jke4rW50FosKodnotx6v3AisS/oQkH7Fi1C6tkP3QWZ9N6AKpQ0ya+mj4sM7SjbBYDX eI+HDMikOV3tmQS/Ii7W/UFL369KUzJZgjXposp1+yiFg0+c29gwqw+R6FNUjwpdBR4o Cj1CXkwd+TA5j4cXAFHJ9hMRDAhp4ZgOKNLOlls6tDiMBkGBU4zQ9XOZP1/hT53PY469 OD8VtZ+nUIVEPbnVY64p4X3gMK7jcIPbJ0hmAbMRyiprHndY79fcrbEv6JDWmxchW4Zz U5LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738893355; x=1739498155; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VEMs7cp28N/GGnnHdhtUvDJhQd9BCwnpDbaEzEo2uu8=; b=mJmjN9itij4N3MB7sZSMRHiILSWz/v705G/B5KgfrD7P8LECW9jG3/kuOIDYWQ60fW lBETzrjw1ALVcvRT2oqbC2luXH1ny/jtdG/hP1lyMpzqQHEiNKomWaKKR4CUUPpjXPbV G2ooEDxkV8j0wS0c51mYHiPdmHtJs5OnY1feYrKCFZYiuPkK2dsZcb5lrQZ5OTmO4m/d sUGbn/r/09qp5lqXEzjqNFTyuXA+GkMIwEJqMO2SUj5UA5mh75Pu6XhJwz38wwIDFDb4 KMAD+On1igPrpiFPueLHQYomtUtNUQaq2EyvCXjAOsxLsV1exucLmR9j53C/DUISEexo AY8A== X-Gm-Message-State: AOJu0YwxXCslBhXktjbFjJ/7mvNf7vrQvQ/ywLCcqCcfWhMe88JT+OGy w8IerYuI+LJluQB7F4YXpzbdh3tx/SqnyHvt/cFgIDoabrb/0SXDo6UX5GYB X-Gm-Gg: ASbGncuQhi4uqRYZmOl5UrUPKJkVmEHwxqEb/VausTo+nOCyHkVLqwsw3e6Vb+ntW1W WU1LTFe/k//Cq8GUTwNmiO0z4uicwtgKsG0Z/itCsmAgZ59DXxN7G/1pwtnfRtHkGrM3GHdVg14 RXqJZEUYKgFzQ6gtAQy0Mk+RQ0B9q1iP1AEWaRakOMM+Kw3SrWiqWO1jtdSU9d5zfJd/lbWBPRD mSrZGWRgIpUiQbMIPngC7itk+2YZizMNCklGfW/jgza+7YFMTOBoToXG4ceZYBdFQSFn4tJgXkO 0A+hz55kszAr X-Google-Smtp-Source: AGHT+IGFl2Bw3j+7ToaSV1foJxtPtkg9svnIYdgkoHyrAl4wDUsP+RbL/47rGk9yVq04GEokSI/o4A== X-Received: by 2002:a05:6a00:8b01:b0:730:5e8d:3ed with SMTP id d2e1a72fcca58-7305e8d04a6mr1659324b3a.12.1738893355163; Thu, 06 Feb 2025 17:55:55 -0800 (PST) Received: from terra ([2405:6586:be0:0:c8ff:1707:9b9:af89]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73048bf1504sm2017201b3a.108.2025.02.06.17.55.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 17:55:54 -0800 (PST) From: Maxim Cournoyer To: bug-guix Subject: gnupg-verify* crashes when stdin is not /dev/tty Date: Fri, 07 Feb 2025 10:55:42 +0900 Message-ID: <87bjve7c2p.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=maxim.cournoyer@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Hello, I've discovered this problem using './pre-inst-env guix refresh -u' and xargs, which by default doesn't connect stdin to /dev/tty (non-interactive): --8<---------------cut here---------------start------------->8--- $ echo alsa-utils | xargs ./pre-inst-env guix refresh -u Starting download of /tmp/guix-file.nWaumi >From https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.13.tar.bz2= ... =E2=80=A6.2.13.tar.bz2 1.6MiB 1.1MiB/s 00:01 =E2=96=95=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=8F 100.0% Starting download of /tmp/guix-file.Y9WAfh >From https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.13.tar.bz2= .sig... =E2=80=A6.13.tar.bz2.sig 833B 4.2MiB/s 00:00 =E2=96=95=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=8F 100.0% gpgv: Signature faite le mar. 12 nov. 2024 18:50:14 JST gpgv: avec la clef RSA F04DF50737AC1A884C4B3D718380596DA6E59= C91 gpgv: Impossible de v=C3=A9rifier la signature=C2=A0: Pas de clef publique Would you like to add this key to keyring '/home/maxim/.config/guix/upstrea= m/trustedkeys.kbx'? Backtrace: In ice-9/boot-9.scm: 1752:10 18 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) In unknown file: 17 (apply-smob/0 #) In ice-9/boot-9.scm: 724:2 16 (call-with-prompt _ _ #) In ice-9/eval.scm: 619:8 15 (_ #(#(#))) In guix/ui.scm: 2332:7 14 (run-guix . _) 2295:10 13 (run-guix-command _ . _) In ice-9/boot-9.scm: 1752:10 12 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) 1752:10 11 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) In guix/store.scm: 689:37 10 (thunk) 2210:25 9 (run-with-store # _ #:g= uile-for-build _ #:system _ # _) In guix/scripts/refresh.scm: 635:18 8 (_ _) In srfi/srfi-1.scm: 634:9 7 (for-each # _) In guix/scripts/refresh.scm: 375:22 6 (update-package _ # _ _ # =E2=80=A6) In guix/upstream.scm: 473:22 5 (package-update/url-fetch # # =E2=80=A6) 343:34 4 (download-tarball _ "https://www.alsa-project.org/files/pub/ut= ils/alsa-utils-1.2.13.tar.bz2" # =E2=80=A6) In ice-9/regex.scm: 133:5 3 (gnupg-verify* "/gnu/store/qzqb2phrikb9mnkajxppz9qp9gz1c2bd-al= sa-utils-1.2.13.tar.bz2.sig" "=E2=80=A6" =E2=80=A6) In unknown file: 2 (regexp-exec # # 0 #) In ice-9/boot-9.scm: 1685:16 1 (raise-exception _ #:continuable? _) 1685:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1685:16: In procedure raise-exception: In procedure regexp-exec: Wrong type argument in position 2 (expecting stri= ng): # --8<---------------cut here---------------end--------------->8--- Using the '--open-tty' argument of xargs works around the issue: --8<---------------cut here---------------start------------->8--- $ echo alsa-plugins alsa-utils | xargs -o ./pre-inst-env guix refresh -u gnu/packages/linux.scm:3195:2: warning: no updater for alsa-plugins Starting download of /tmp/guix-file.OIHJYF >From https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.13.tar.bz2= ... =E2=80=A6.2.13.tar.bz2 1.6MiB 1.0MiB/s 00:01 =E2=96=95=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=8F 100.0% Starting download of /tmp/guix-file.cTAkPz >From https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.13.tar.bz2= .sig... =E2=80=A6.13.tar.bz2.sig 833B 4.0MiB/s 00:00 =E2=96=95=E2= =96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=8F 100.0% gpgv: Signature faite le mar. 12 nov. 2024 18:50:14 JST gpgv: avec la clef RSA F04DF50737AC1A884C4B3D718380596DA6E59= C91 gpgv: Impossible de v=C3=A9rifier la signature=C2=A0: Pas de clef publique Would you like to add this key to keyring '/home/maxim/.config/guix/upstrea= m/trustedkeys.kbx'? y gpg: clef 8380596DA6E59C91=C2=A0: clef publique =C2=AB=C2=A0ALSA Release Te= am (Package Signing Key v1) =C2=A0=C2=BB import= =C3=A9e gpg: Quantit=C3=A9 totale trait=C3=A9e=C2=A0: 1 gpg: import=C3=A9es=C2=A0: 1 gpgv: Signature faite le mar. 12 nov. 2024 18:50:14 JST gpgv: avec la clef RSA F04DF50737AC1A884C4B3D718380596DA6E59= C91 gpgv: Bonne signature de =C2=AB=C2=A0ALSA Release Team (Package Signing Key= v1) =C2=A0=C2=BB gnu/packages/linux.scm:3155:13: alsa-utils: updating from version 1.2.11 to= version 1.2.13... --8<---------------cut here---------------end--------------->8--- --=20 Thanks, Maxim From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 07 03:29:49 2025 Received: (at 76112) by debbugs.gnu.org; 7 Feb 2025 08:29:49 +0000 Received: from localhost ([127.0.0.1]:60944 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tgJkC-0005Jf-IP for submit@debbugs.gnu.org; Fri, 07 Feb 2025 03:29:49 -0500 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:60780) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1tgJk9-0005JG-6j for 76112@debbugs.gnu.org; Fri, 07 Feb 2025 03:29:46 -0500 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-2fa1e25e337so1426534a91.1 for <76112@debbugs.gnu.org>; Fri, 07 Feb 2025 00:29:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738916978; x=1739521778; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=jqhqpIFkCXCgTEy4zyRHXhxKVHL66lP9siPv9DDDbzw=; b=ev0Jaybd6h3pakAFwKAfo/lSZj4bXcrz28aB+n2swCU6HyXIYZzizJaS7t5OPhXj5D LHrjTnD54pz+f67BQyevELJgZ09kB/XQQmAtFPiLUG8AAwxGvLt1q5C55tRDIl6h38fx f8IbOKcC1R2B4ztjK5vXvEgIBIeI8zsGyzquHD/Ru7H3xn7NUWMLpKXdPD5pq4c43VnV +Ycq2gSAPqpkLgCeQq4ZFBZU5Jv5GLQgAXCQaFiT+FehGKUbbB42D1adkmWIAzaLTAh+ Bh2yV3+A0WBveUc3LXqtEMkq/GHd333J7dszUdOiS9wYmMLYxWP48SkNjbZmiprrQPMa nM3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738916978; x=1739521778; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=jqhqpIFkCXCgTEy4zyRHXhxKVHL66lP9siPv9DDDbzw=; b=Ei66C7qO+hWEMN0R4lqsfAAFTDCpHH4J5h9771SFLoYMjaWDGVZn2FOfWQX8DXMRkg g/fJhCsa3gu/m3ktD9OrbxWE7VdJiYjnrPHsRD+NMxcTFCirCI/imrDrRjcYI+JetoSV TLVZ6YIt/+4lrIF/2I0inKpbuveBSUsg/XQHPF8AqsuJGqtDFM6ETSzECTRhyubfIeEV 6P/0rFvTWDPzqcDrAIR5pvQGMyMc2YjTHvbN/+qN+sXSnPv034qkrwj04+yRxfmxMs/P Oyb7RKZfu3/GJ+a1ZsISZD4lWEAgsF3rwbw4Gd4sZyoxqer9xlTChRrwoz3RySJ48SZM L25Q== X-Gm-Message-State: AOJu0Yy8JULj64g3hZuA4bTcLP46lUkUFjx/93/HvnwGBRkprkcs51B8 Gblyy1EkiJXSM7C5id0iPnKQgANlXe7ehw8emB4NS02pm2r1aw3R9Rst4A== X-Gm-Gg: ASbGnctZ6SzYrVcNdYccPCYS/hPoxNjzKJZvUpamuDr7eMcZg5qF/lUkZj3Db4HteGi liIwsYNNY4q7Y/1lC3c/IMzSxy7pyZwMDW38szN1C8JDRNsjGaOJqATZ2BzyscAqXkR1Yf1LqQz vVDvcs8RmBcb8j20M/5wd7l++y4Odjk9eAvWsoxK7omfRfNDPGa9OvZhkxwHFaZ+tZzLjn+Y9uA XFl6vG/vyy5rbfSDkKp/6+z8sdbw6gCMojuut7UzTVrsKEJ5u8Z/CDQPGv0uRUfUFUtAdsFC5Lr GVd6wiqZt9+J6gsCwDON0N7GiE7nP2+zfA== X-Google-Smtp-Source: AGHT+IHy35kE4MGyZQwoQAQDbcfvlLkHayq1KdknFhCsJOMoKJ6oCyFPsfqAxN2BVDcOYeGePO8sow== X-Received: by 2002:a17:90b:358e:b0:2ee:e18b:c1fa with SMTP id 98e67ed59e1d1-2fa242e5c8cmr3497305a91.28.1738916978134; Fri, 07 Feb 2025 00:29:38 -0800 (PST) Received: from localhost.localdomain ([2405:6586:be0:0:c8ff:1707:9b9:af89]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fa09b3e8e9sm2728148a91.37.2025.02.07.00.29.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Feb 2025 00:29:37 -0800 (PST) From: Maxim Cournoyer To: 76112@debbugs.gnu.org Subject: [PATCH] gnupg: Automatically fallback to 'always policy when non-interactive. Date: Fri, 7 Feb 2025 17:29:18 +0900 Message-ID: X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 X-Debbugs-Cc: Maxim Cournoyer , Christopher Baines , Josselin Poiret , Ludovic Courtès , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 76112 Cc: Maxim Cournoyer X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Previously to this change, the 'guix refresh' download policy (--key-download)would default to 'interactive', which would throw a backtrace when guix was invoked with its stdin not connected to a peusdo terminal (tty). This change makes the new default value 'auto' use interactive only in an interactive environment, with 'always' used as fallback. * doc/guix.texi (Invoking guix refresh): Adjust doc. * etc/completion/fish/guix.fish: Adjust accordingly. * etc/completion/zsh/_guix (_guix_list_installed_packages): Likewise. * guix/gnupg.scm (gnupg-verify*): Change default #:key-download argument value to 'auto. Update doc. Validate argument. Raise an error in case read-line returns #. * guix/import/gnu.scm (gnu-package->sexp): <#:key-download>: Change default value to 'auto. * guix/import/gnu.scm (gnu->guix-package): <#:key-download>: Likewise. * guix/scripts/import/gnu.scm (%options): Add "auto" to accepted --key-download values. (%default-options): Set default key-download option to the 'auto value. (show-help): Update doc. * guix/scripts/refresh.scm (show-help): Update doc. (update-package) <#:key-download>: Change default value to 'auto. Update doc. * guix/upstream.scm (download-tarball): <#:key-download>: Likewise. (package-update): Likewise. Fixes: https://issues.guix.gnu.org/76112 Change-Id: Id1ca8fd6d453ca4bc5b372534445e3beab9133a8 --- doc/guix.texi | 7 ++++++- etc/completion/fish/guix.fish | 4 ++-- etc/completion/zsh/_guix | 2 +- guix/gnupg.scm | 37 +++++++++++++++++++++++++++++------ guix/import/gnu.scm | 6 +++--- guix/scripts/import/gnu.scm | 8 ++++---- guix/scripts/refresh.scm | 13 ++++++------ guix/upstream.scm | 10 +++++----- 8 files changed, 59 insertions(+), 28 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 9f1e4bf0f0..c2c68d313b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -15321,7 +15321,12 @@ Invoking guix refresh @item interactive When a package signed with an unknown OpenPGP key is encountered, ask -the user whether to download it or not. This is the default behavior. +the user whether to download it or not. + +@item auto +Automatically selects the @code{interactive} policy when the standard +input is connected to a pseudo terminal (TTY), else @code{always}. This +is the default behavior. @end table @item --key-server=@var{host} diff --git a/etc/completion/fish/guix.fish b/etc/completion/fish/guix.fish index e6c290256f..9e3b3211ea 100644 --- a/etc/completion/fish/guix.fish +++ b/etc/completion/fish/guix.fish @@ -284,7 +284,7 @@ complete -f -c guix -n '__fish_guix_using_command refresh' -l list-updaters -d ' complete -f -c guix -n '__fish_guix_using_command refresh' -l list-dependent -d 'list top-level dependent packages that would need to be rebuilt as a result of upgrading PACKAGE' complete -f -c guix -n '__fish_guix_using_command refresh' -a "--key-server=" -d 'use HOST as the OpenPGP key server' complete -f -c guix -n '__fish_guix_using_command refresh' -a "--gpg=" -d 'use COMMAND as the GnuPG 2.x command' -complete -f -c guix -n '__fish_guix_using_command refresh' -a "--key-download=" -d 'handle missing OpenPGP keys according to POLICY.' --exclusive --arguments "always never interactive" +complete -f -c guix -n '__fish_guix_using_command refresh' -a "--key-download=" -d 'handle missing OpenPGP keys according to POLICY.' --exclusive --arguments "always auto never interactive" #### publish set -l remotecommands port= listen= user= compression ttl= repl @@ -321,7 +321,7 @@ set -l remotecommands import gnu nix pypi cpan hackage elpa gem cran crate texli complete -f -c guix -n '__fish_guix_needs_command' -a import -d 'Run IMPORTER with ARGS' ##### import gnu complete -f -c guix -n '__fish_guix_using_command import; and not __fish_seen_subcommand_from $remotecommands' -a gnu -d 'Return a package declaration template for PACKAGE, a GNU package.' -complete -f -c guix -n '__fish_guix_using_command import; and __fish_seen_subcommand_from gnu' -a "--key-download=" -d 'handle missing OpenPGP keys according to POLICY: "always", "never", and "interactive", which is also used when "key-download" is not specified.' +complete -f -c guix -n '__fish_guix_using_command import; and __fish_seen_subcommand_from gnu' -a "--key-download=" -d 'handle missing OpenPGP keys according to POLICY: "always", "auto", "never", and "interactive", which is also used when "key-download" is not specified.' ##### import pypi complete -f -c guix -n '__fish_guix_using_command import; and not __fish_seen_subcommand_from $remotecommands' -a pypi -d 'Import and convert the PyPI package for PACKAGE-NAME.' ##### import cpan diff --git a/etc/completion/zsh/_guix b/etc/completion/zsh/_guix index 9b1f16c664..42b92475a9 100644 --- a/etc/completion/zsh/_guix +++ b/etc/completion/zsh/_guix @@ -507,7 +507,7 @@ _guix_list_installed_packages() '--keyring=[use FILE as the keyring of upstream OpenPGP keys]:FILE:_files' \ '--key-server=[use HOST as the OpenPGP key server]:HOST_hosts' \ '--gpg=[use COMMAND as the GnuPG 2.x command]:COMMAND' \ - '--key-download=[handle missing OpenPGP keys according to POLICY:]:POLICY:(always interactive never)' \ + '--key-download=[handle missing OpenPGP keys according to POLICY:]:POLICY:(always auto interactive never)' \ '--load-path=[prepend DIR to the package module search path]:DIR:_files -/' \ {-V,--version}'[display version information and exit]' \ '*:package:->packages' diff --git a/guix/gnupg.scm b/guix/gnupg.scm index 088bebc0de..ef9b71a2cb 100644 --- a/guix/gnupg.scm +++ b/guix/gnupg.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2010, 2011, 2013, 2014, 2016, 2018, 2019 Ludovic Courtès ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2020 Tobias Geerinckx-Rice -;;; Copyright © 2021 Maxim Cournoyer +;;; Copyright © 2021, 2025 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +26,8 @@ (define-module (guix gnupg) #:use-module (ice-9 rdelim) #:use-module (ice-9 i18n) #:use-module (srfi srfi-1) + #:use-module ((srfi srfi-34) #:select (raise)) + #:use-module (guix diagnostics) #:use-module (guix i18n) #:use-module ((guix utils) #:select (config-directory)) #:use-module ((guix build utils) #:select (mkdir-p)) @@ -201,7 +203,7 @@ (define* (gnupg-receive-keys fingerprint/key-id (define* (gnupg-verify* sig file #:key - (key-download 'interactive) + (key-download 'auto) server (keyring (current-keyring))) "Like `gnupg-verify', but try downloading the public key if it's missing. @@ -210,9 +212,29 @@ (define* (gnupg-verify* sig file 'invalid-signature with a fingerprint if the signature is invalid. KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed -values: 'always', 'never', and 'interactive' (default). Return a +values: 'auto', 'always', 'never', and 'interactive' The default policy is +auto, which automatically selects the interactive policy when a TTY is +connected to the standard input, or the always policy otherwise. Return a fingerprint/user name pair on success and #f otherwise." - (let ((status (gnupg-verify sig file))) + (let* ((interactive? (isatty? (current-input-port))) + ;; Validate or compute (in the case of 'auto) the KEY-DOWNLOAD + ;; argument. + (key-download (match key-download + ('auto (if interactive? + 'interactive + 'always)) + ('interactive + (unless interactive? + (raise (formatted-message + (G_ "cannot use interactive policy\ + without TTY input"))))) + ((or 'always 'never) + key-download) + (_ + (raise (formatted-message + (G_ "invalid key-download policy: ~a") + key-download))))) + (status (gnupg-verify sig file))) (match (gnupg-status-good-signature? status) ((fingerprint . user) (values 'valid-signature (cons fingerprint user))) @@ -236,7 +258,10 @@ (define* (gnupg-verify* sig file (format #t (G_ "Would you like to add this key \ to keyring '~a'?~%") keyring) - (read-line)))) + (match (read-line) + ((? eof-object?) + (error "read-line unexpectedly returned #")) + (other other))))) (string-match (locale-yes-regexp) answer))) (case key-download @@ -244,7 +269,7 @@ (define* (gnupg-verify* sig file (values 'missing-key missing)) ((always) (download-and-try-again)) - (else + (else ;interactive (if (receive?) (download-and-try-again) (values 'missing-key missing))))))))) diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm index fb61332fb8..e68dc06824 100644 --- a/guix/import/gnu.scm +++ b/guix/import/gnu.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès ;;; Copyright © 2021 Simon Tournier -;;; Copyright © 2021 Maxim Cournoyer +;;; Copyright © 2021, 2025 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,7 +54,7 @@ (define (preferred-archive-type release) '("xz" "lz" "bz2" "tbz2" "gz" "tgz" "Z"))) (define* (gnu-package->sexp package release - #:key (key-download 'interactive)) + #:key (key-download 'auto)) "Return the 'package' sexp for the RELEASE (a ) of PACKAGE (a ), or #f upon failure. Use KEY-DOWNLOAD as the OpenPGP key download policy (see 'download-tarball' for details.)" @@ -106,7 +106,7 @@ (define* (gnu-package->sexp package release #f)))) (define* (gnu->guix-package name - #:key (key-download 'interactive) + #:key (key-download 'auto) #:allow-other-keys) "Return the package declaration for NAME as an s-expression. Use KEY-DOWNLOAD as the OpenPGP key download policy (see 'download-tarball' for diff --git a/guix/scripts/import/gnu.scm b/guix/scripts/import/gnu.scm index 344e363abe..93ab6043c7 100644 --- a/guix/scripts/import/gnu.scm +++ b/guix/scripts/import/gnu.scm @@ -35,7 +35,7 @@ (define-module (guix scripts import gnu) ;;; (define %default-options - '((key-download . interactive))) + '((key-download . auto))) (define (show-help) (display (G_ "Usage: guix import gnu [OPTION...] PACKAGE @@ -44,8 +44,8 @@ (define (show-help) (display (G_ " --key-download=POLICY handle missing OpenPGP keys according to POLICY: - 'always', 'never', and 'interactive', which is also - used when 'key-download' is not specified")) + 'auto' (default), 'always', 'never', and + 'interactive'")) (newline) (display (G_ " -h, --help display this help and exit")) @@ -66,7 +66,7 @@ (define %options (option '("key-download") #t #f ;from (guix scripts refresh) (lambda (opt name arg result) (match arg - ((or "interactive" "always" "never") + ((or "auto" "interactive" "always" "never") (alist-cons 'key-download (string->symbol arg) result)) (x diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 8c72d0c545..6532feef25 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2020 Simon Tournier ;;; Copyright © 2021 Sarah Morgensen ;;; Copyright © 2022 Hartmut Goebel -;;; Copyright © 2023 Maxim Cournoyer maxim.cournoyer@gmail.com> +;;; Copyright © 2023, 2025 Maxim Cournoyer maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -193,8 +193,9 @@ (define (show-help) (display (G_ " --key-download=POLICY handle missing OpenPGP keys according to POLICY: - 'always', 'never', and 'interactive', which is also - used when 'key-download' is not specified")) + 'auto', 'always', 'never', and 'interactive'. + When left unspecified, the default policy is 'auto', + which automatically selects interactive or always.")) (newline) (display (G_ " -L, --load-path=DIR prepend DIR to the package module search path")) @@ -364,12 +365,12 @@ (define (warn-no-updater package) (package-name package))) (define* (update-package store package version updaters - #:key (key-download 'interactive) key-server + #:key (key-download 'auto) key-server warn?) "Update the source file that defines PACKAGE with the new version. KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed -values: 'interactive' (default), 'always', and 'never'. When WARN? is true, -warn about packages that have no matching updater." +values: 'auto' (default), interactive', 'always', and 'never'. When WARN? is +true, warn about packages that have no matching updater." (if (lookup-updater package updaters) (let ((version output source (package-update store package updaters diff --git a/guix/upstream.scm b/guix/upstream.scm index 62ba6c9d39..169d260c2d 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -314,14 +314,14 @@ (define (uncompressed-tarball name tarball) #$output))))) (define* (download-tarball store url signature-url - #:key (key-download 'interactive) key-server) + #:key (key-download 'auto) key-server) "Download the tarball at URL to the store; check its OpenPGP signature at SIGNATURE-URL, unless SIGNATURE-URL is false. On success, return the tarball file name; return #f on failure (network failure or authentication failure). KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed -values: 'interactive' (default), 'always', and 'never'; KEY-SERVER specifies -the OpenPGP key server where the key should be looked up." +values: 'auto' (default), 'always', 'interactive' and 'never'; KEY-SERVER +specifies the OpenPGP key server where the key should be looked up." (let ((tarball (download-to-store store url))) (if (not signature-url) tarball @@ -512,12 +512,12 @@ (define %method-updates (define* (package-update store package #:optional (updaters (force %updaters)) #:key (version #f) - (key-download 'interactive) key-server) + (key-download 'auto) key-server) "Return the new version, the file name of the new version tarball, and input changes for PACKAGE; return #f (three values) when PACKAGE is up-to-date; raise an error when the updater could not determine available releases. KEY-DOWNLOAD specifies a download policy for missing OpenPGP keys; allowed -values: 'always', 'never', and 'interactive' (default). +values: 'always', 'auto' (default), 'never', and 'interactive'. When VERSION is specified, update PACKAGE to that version, even if that is a downgrade." base-commit: 220ef58440668c39ddf7c6434c0fbfc82d3dd507 -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 27 09:19:14 2025 Received: (at 76112) by debbugs.gnu.org; 27 Feb 2025 14:19:14 +0000 Received: from localhost ([127.0.0.1]:60652 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tnejJ-0007YH-UZ for submit@debbugs.gnu.org; Thu, 27 Feb 2025 09:19:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58348) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tnejG-0007XN-NZ for 76112@debbugs.gnu.org; Thu, 27 Feb 2025 09:19:11 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tnejA-0003KF-Iu; Thu, 27 Feb 2025 09:19:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=1g50oLrZ4BZQunzc9YfX+xEW8eh/c7SfyUDtOqQMf38=; b=MaCn/oB7rElshHhG5/4Z 3yWDoJ4jY90P1/26XD9NrtAPd00jmGG31NvXdDFmxr5eRrzMCQGUH/7kKOj4zbfqmU5WwYHrsv6lI /YrjILsXH5uMYFGzVs+L/TOSXe8IWj9vxxxSw+OpzlEi4E1U9zKNSgb4iTBmguwCo10eSKV4sh1Kn h3K/U9yDTVX7dwFgHCz3BMhUdLeh8fH12d5SZZZ3c01MU4NV02ut4+4nsjKzMzseZpzp0dAAXE2FQ 8VZy0Bx+WZMXRo2Kk9WguEMd0nNkX5xJVGyqrk3pXAwJbJWPq+2+H4thz/8dYEupBbysAncUjNy1b zoTRsCqLQczQOw==; From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Maxim Cournoyer Subject: Re: bug#76112: [PATCH] gnupg: Automatically fallback to 'always policy when non-interactive. In-Reply-To: (Maxim Cournoyer's message of "Fri, 7 Feb 2025 17:29:18 +0900") References: <87bjve7c2p.fsf@gmail.com> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: Nonidi 9 =?utf-8?Q?Vent=C3=B4se?= an 233 de la =?utf-8?Q?R=C3=A9volution=2C?= jour du Marsault X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Thu, 27 Feb 2025 15:18:18 +0100 Message-ID: <877c5bxyhh.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 76112 Cc: Josselin Poiret , Simon Tournier , Mathieu Othacehe , Tobias Geerinckx-Rice , 76112@debbugs.gnu.org, Christopher Baines X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Maxim Cournoyer skribis: > Previously to this change, the 'guix refresh' download > policy (--key-download)would default to 'interactive', which would throw a > backtrace when guix was invoked with its stdin not connected to a peusdo > terminal (tty). This change makes the new default value 'auto' use > interactive only in an interactive environment, with 'always' used as > fallback. > > * doc/guix.texi (Invoking guix refresh): Adjust doc. > * etc/completion/fish/guix.fish: Adjust accordingly. > * etc/completion/zsh/_guix (_guix_list_installed_packages): Likewise. > * guix/gnupg.scm (gnupg-verify*): Change default #:key-download argument value > to 'auto. Update doc. Validate argument. Raise an error in case read-line > returns #. > * guix/import/gnu.scm (gnu-package->sexp): <#:key-download>: Change default > value to 'auto. > * guix/import/gnu.scm (gnu->guix-package): <#:key-download>: Likewise. > * guix/scripts/import/gnu.scm (%options): Add "auto" to accepted > --key-download values. > (%default-options): Set default key-download option to the 'auto value. > (show-help): Update doc. > * guix/scripts/refresh.scm (show-help): Update doc. > (update-package) <#:key-download>: Change default value to 'auto. Update doc. > * guix/upstream.scm (download-tarball): <#:key-download>: Likewise. > (package-update): Likewise. > > Fixes: https://issues.guix.gnu.org/76112 > Change-Id: Id1ca8fd6d453ca4bc5b372534445e3beab9133a8 LGTM, thanks! From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 28 08:24:33 2025 Received: (at 76112-done) by debbugs.gnu.org; 28 Feb 2025 13:24:33 +0000 Received: from localhost ([127.0.0.1]:47095 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1to0Lx-0003mZ-1L for submit@debbugs.gnu.org; Fri, 28 Feb 2025 08:24:33 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]:51675) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1to0Lu-0003lj-2x for 76112-done@debbugs.gnu.org; Fri, 28 Feb 2025 08:24:31 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-220f4dd756eso45765465ad.3 for <76112-done@debbugs.gnu.org>; Fri, 28 Feb 2025 05:24:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740749064; x=1741353864; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4rO6Em3mc4NzpL38OtmLK1HBaWunxZpMG+AKugaALyg=; b=glCHjWDVDUJowbL/WmTFwBM87XpnZiEqX1rHd34w0UhezFgGlDHH3kCzp7XJYpsqIn aLPrbWX+o3x0eSzcSN1vcmtK6c/Ye8fcMVgxCj741g6zYxbvpDKPqMuyk8f1QrUMiFQf l0ea0qyBpF0ZdhAZX7A6OIGC7okQ6dV0NszQNVdo66oydLokrXwa19TkMB95Plfu1RAC J6wnBhjrag6KdMFhZz+Ek9K7sXpRDwhyKjnPhpSGP2xvEJ2Ip/cmSS97Dspi1e3sgvVU ppWn/KkACGoXLJfsXfwVl1jQXYwyp7RPRXuvmYDdEsHEGDygK/JH0YeAQvHu5B9dHWf6 K9SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740749064; x=1741353864; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=4rO6Em3mc4NzpL38OtmLK1HBaWunxZpMG+AKugaALyg=; b=eLZMCRq5/iweSY1h5gUuD09FAHbiy2/y81rm76YxGJMPgH8ElS452wwWPo2wZ35LRI +7MIYW414DGGzgtuN5z/luXWptZxtIPnJjDbbJ8zBmmS1AWplBKUBYA0HHMpgpreTiNT FPxB7mp66uOTxeJRYkIiYHEo/Dotwb8Q41PRN/LqrlQmel8vf57Q8hEFtHM61G1cLHA9 g67xxh98cBDTeeDuxMsvDHrXQt0E8DR02LDj9Fm1Zdq86MuwjpclnboWOYcHNp6lM8CO /vDYQkey8GuMSTsb3oOmRP9/LutuREbo2BJLp8dk4vvf5mP3kXLBPlZQhxW0UzVC0fY8 bgdA== X-Forwarded-Encrypted: i=1; AJvYcCWItSUfrOvd2ee8VZ103ApaAyc7xeKTLYQ7D8hkLiVByj61u53TcMbflEu9RtTHH/RJRw29SyPXvN/u@debbugs.gnu.org X-Gm-Message-State: AOJu0YynDw3oBKmKfwKqyDMZ1EqDSK77so/UJzv2rOZoO2zAE2OiTBGy sRs+eV3l1MpL5B/NYOjTEt1qUCjv7MpstWU0HZgGMJoOAZh7t3vG X-Gm-Gg: ASbGncuT+cqTomHu/MeDSf3viIiMcLtPAP7V9/u1ThELEeMrU89t5rQgwYYticJ5esy x969p0WjgA+Q9mXZ4f/QGFuaxXKDcw6w48dPW9ipcGsl8+Q5y8Fgu/0FawsGnyYC4dN3GXOo0Iz HS+a4k3mbJfZgUFLIHX8NGtQnu9FjeyNb2nXhE1oAyIK1J12DASzFkCn5pSqZb7rasjhSru5CxX mMU7kCCRfiZzthLSbt0z//VKIQklwy8WUnejGi9Qqa8+NuPJCwFCUko7Lpgn0iicBeCkO43jgqy fenaqwkIAZmSGhKUwKXSr9A/ X-Google-Smtp-Source: AGHT+IE+JqyA9ddV9eKfH2IMaWMP2A+Dlbx3hChMKChN/vb/mz0TPaTqoyCNWOO3BtQ1fF0U5p95Ew== X-Received: by 2002:a17:902:e54a:b0:21f:2ded:76ea with SMTP id d9443c01a7336-2236920bad9mr48631265ad.36.1740749063960; Fri, 28 Feb 2025 05:24:23 -0800 (PST) Received: from terra ([2405:6586:be0:0:83c8:d31d:2cec:f542]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-223504dc28esm32441915ad.166.2025.02.28.05.24.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 05:24:23 -0800 (PST) From: Maxim Cournoyer To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: bug#76112: gnupg-verify* crashes when stdin is not /dev/tty In-Reply-To: <877c5bxyhh.fsf@gnu.org> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Thu, 27 Feb 2025 15:18:18 +0100") References: <87bjve7c2p.fsf@gmail.com> <877c5bxyhh.fsf@gnu.org> Date: Fri, 28 Feb 2025 22:24:09 +0900 Message-ID: <87wmdagq2u.fsf_-_@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 76112-done Cc: Josselin Poiret , Simon Tournier , Mathieu Othacehe , Tobias Geerinckx-Rice , Christopher Baines , 76112-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi! Ludovic Court=C3=A8s writes: [...] >> Fixes: https://issues.guix.gnu.org/76112 >> Change-Id: Id1ca8fd6d453ca4bc5b372534445e3beab9133a8 > > LGTM, thanks! Great, pushed, thanks for the review! --=20 Thanks, Maxim From unknown Sat Aug 16 15:53:17 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 29 Mar 2025 11:24:15 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator