GNU bug report logs - #60240
[PATCH] [WIP] gnu: Add python-3.11.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Tanguy Le Carrour <tanguy@HIDDEN>; Keywords: patch; dated Wed, 21 Dec 2022 15:34:01 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 2 Mar 2024 10:00:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 02 05:00:38 2024
Received: from localhost ([127.0.0.1]:38065 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rgMAX-0005gq-OD
	for submit <at> debbugs.gnu.org; Sat, 02 Mar 2024 05:00:38 -0500
Received: from mout-p-202.mailbox.org ([80.241.56.172]:60718)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <lars@HIDDEN>) id 1rgMAU-0005gT-H0
 for 60240 <at> debbugs.gnu.org; Sat, 02 Mar 2024 05:00:35 -0500
Received: from smtp102.mailbox.org (smtp102.mailbox.org
 [IPv6:2001:67c:2050:b231:465::102])
 (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 mout-p-202.mailbox.org (Postfix) with ESMTPS id 4Tn0mc1KfSz9t9n;
 Sat,  2 Mar 2024 10:59:28 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6xq.net; s=MBO0001;
 t=1709373568;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=xqw65LwZ7Kwzc2G2rPsKhSyj4jgwZhwOUeLOEP+k8zI=;
 b=lnMa3/YUKxMiShJiiKxVmV77cDFctzs3TC8oVbm/BDxL5xbpbK6n9uX7fxeJThtaV4xTSm
 NtpjvBUPvAIJ1u3uX2YJWr5BVWlEFO86v4csR7uo+enBhdIr7yPFMmEtTa2Wwz2UWpOj7i
 g56JeSQmznaeIoApJSP9gWiTHh9HMKt1BXGXdRwRpBi2sCUlyMySEAUb4oTmF1Iwwq9V2s
 mNKcLrRb8zJWobryMcjh/G3ExbOrKQKdSZL1L9ihwil5sIoDx9FWuZ7gIaznQ36zkny8gD
 TVemHkdUBagftmgpmMOHLrzPU8LOxOUJ3Gtwd1l1ZyDY5+yb1nxIMRUkYPfWww==
Date: Sat, 2 Mar 2024 10:59:23 +0100
From: Lars-Dominik Braun <lars@HIDDEN>
To: Tanguy LE CARROUR <tanguy@HIDDEN>
Subject: Re: [bug#60240] [PATCH v2] gnu: Add python-3.12 and python-next.
Message-ID: <ZeL4e8_uI24-2OGc@HIDDEN>
References: <20221221153230.27764-1-tanguy@HIDDEN>
 <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
 <ZdtJ1AU7ru7Vr2TU@HIDDEN>
 <170893592338.2024.18126018474930945065@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="aLKUxhnrunFV3YGR"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <170893592338.2024.18126018474930945065@HIDDEN>
X-Rspamd-Queue-Id: 4Tn0mc1KfSz9t9n
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 60240
Cc: 60240 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)


--aLKUxhnrunFV3YGR
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Hey,

> Sorry, but I’m not sure to see what you mean!?
> Outputs are defined for `out`, `tk` and `idle`. And I see phases to move
> files to the outputs: `move-tk-inter` and `move-idle`.
> 
> What do you mean by `referenced from out`? And how would you remove such
> a reference!

so, if you look at `guix size python@HIDDEN`, you can see
it lists tk and tcl. And then a `grep -Ri /gnu/store/path/to/tcl
/gnu/store/path/to/python` reveals it’s being referenced by
lib/python3.12/_sysconfigdata__linux_x86_64-linux-gnu.py and
lib/python3.12/config-3.12-x86_64-linux-gnu/Makefile, which are both
part of the default “out” output. That means TCL and TK are both
part of the closure of the python@HIDDEN package, i.e. they are downloaded
whenever you install it, making the package “bigger” in size (234.5
MiB in total to be precise). I believe we wanted to avoid that by moving
some parts of Python into the separate “tk” output. But apparently
that does not work (any more).

The attached patch (on top of yours) removes these references and shrinks
the closure of python@HIDDEN to 180.6 MiB. But I don’t know whether it
has any negative side-effects (i.e. packages not building any more),
because I can’t build libxslt with Python 3.12 due to the module
“imp” having been removed in Python 3.12.

> I searched in the issue list on GH, but couldn’t find anything relevant.
> But there are quite a lot of issues there.
> Do we have to fix this before we merge it?

No, we’d have to dig deeper into which particular test causes this
behavior.

And actually one more nitpick: The name of the package should be
“python-next” not “python”, otherwise `guix install python`
will pick Python 3.12 (it’s based on the name property, not the
variable name).

Cheers,
Lars


--aLKUxhnrunFV3YGR
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
	filename="python-3.12-remove-tk-tcl-refs.patch"

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 471cf190fb..0b887a2cdb 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -836,7 +836,7 @@ (define-public python-3.12
                                          "json/tests"
                                          "distutils/tests"))))))))
                   (add-after 'remove-tests 'move-tk-inter
-                    (lambda* (#:key outputs #:allow-other-keys)
+                    (lambda* (#:key outputs inputs #:allow-other-keys)
                       ;; When Tkinter support is built move it to a separate output so
                       ;; that the main output doesn't contain a reference to Tcl/Tk.
                       (let ((out (assoc-ref outputs "out"))
@@ -854,7 +854,14 @@ (define-public python-3.12
                                                                         len)
                                                            "/site-packages")))
                                (install-file tkinter.so target)
-                               (delete-file tkinter.so))))))))
+                               (delete-file tkinter.so))))
+                          ;; Remove explicit store path references.
+                          (let ((tcl (assoc-ref inputs "tcl"))
+                                (tk (assoc-ref inputs "tk")))
+                            (substitute* (find-files (string-append out "/lib")
+                                                     "^(_sysconfigdata_.*\\.py|Makefile)$")
+                                         (((string-append "-L" tk "/lib")) "")
+                                         (((string-append "-L" tcl "/lib")) "")))))))
                   (add-after 'move-tk-inter 'move-idle
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; when idle is built, move it to a separate output to save some

--aLKUxhnrunFV3YGR--




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 26 Feb 2024 08:26:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 26 03:26:00 2024
Received: from localhost ([127.0.0.1]:44220 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1reWJE-0003wR-80
	for submit <at> debbugs.gnu.org; Mon, 26 Feb 2024 03:26:00 -0500
Received: from smtp-bc0d.mail.infomaniak.ch ([45.157.188.13]:49353)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1reWJA-0003vy-4V
 for 60240 <at> debbugs.gnu.org; Mon, 26 Feb 2024 03:25:58 -0500
Received: from smtp-4-0001.mail.infomaniak.ch (smtp-4-0001.mail.infomaniak.ch
 [10.7.10.108])
 by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4TjtwN2xfqzWrC;
 Mon, 26 Feb 2024 09:25:24 +0100 (CET)
Received: from unknown by smtp-4-0001.mail.infomaniak.ch (Postfix) with ESMTPA
 id 4TjtwM67xXzTFC; Mon, 26 Feb 2024 09:25:23 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bioneland.org;
 s=20230804; t=1708935924;
 bh=GvJJRBksnUf27QFgHNtWNopSHOjMoSbLqDDCFaC/pjI=;
 h=References:Subject:From:To:In-Reply-To:Cc:Date:From;
 b=FBv5PwD5J6ly+hMaElhHzf1NON+V5sCwPOchoVh5klIqCCkjK+AUQrndJ6BY7xs6s
 rHckkLBQ0I2jk82qD1+OPApjEnP5j5b35BehptAMyAHUqZYfXNA7vlZUm43Lsy8QKA
 Ae1X9VZcCth7f8o/KQMsp/cyXR8A9oCvqzgkgM5Gog/1ReqRm+Ujynz53AWygwtwZ1
 rblrd4YtGD4jhcLsaQ11mm/ghmyPzPGgvBx26Tiy1GGa6yleAxCQlRR6dGoHMcBI3A
 IHgUw7JvrwZpgsRZxn1HMpWdMnJqvMdpTv+/CWxvL6i87AiyIQElpD5unw/oWv7RuB
 0n04dm3xKpRcw==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
References: <20221221153230.27764-1-tanguy@HIDDEN>
 <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
 <ZdtJ1AU7ru7Vr2TU@HIDDEN>
Subject: Re: [bug#60240] [PATCH v2] gnu: Add python-3.12 and python-next.
From: Tanguy LE CARROUR <tanguy@HIDDEN>
To: Lars-Dominik Braun <lars@HIDDEN>
In-Reply-To: <ZdtJ1AU7ru7Vr2TU@HIDDEN>
Date: Mon, 26 Feb 2024 09:25:23 +0100
Message-ID: <170893592338.2024.18126018474930945065@HIDDEN>
User-Agent: alot/0.10
X-Infomaniak-Routing: alpha
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 60240
Cc: 60240 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Lars,

Thanks for reviewing!


Quoting Lars-Dominik Braun (2024-02-25 15:08:20)
> > I created a brand new package definition for it, not inheriting from
> > `python-2`. I actually copied/pasted the `python-2` package definition,
> > removed what was specific to Python 2 and then copied over the things
> > specific to Python 3 from the `python-3.10` package definition.
>=20
> LGTM.
>=20
> I believe the separate tk output does not give us any benefits regarding
> closure size (any more?), because tcl and tk are both referenced from
> `out`. Can we remove those references to reduce closure size again?

Sorry, but I=E2=80=99m not sure to see what you mean!?
Outputs are defined for `out`, `tk` and `idle`. And I see phases to move
files to the outputs: `move-tk-inter` and `move-idle`.

What do you mean by `referenced from out`? And how would you remove such
a reference!

Sorry, I=E2=80=99m still new to this! =F0=9F=98=85


> And I can also confirm test_asyncio runs out of memory on my machine
> and test_threading never finishes. We should probably investigate both,
> because they should not.

I searched in the issue list on GH, but couldn=E2=80=99t find anything rele=
vant.
But there are quite a lot of issues there.
Do we have to fix this before we merge it?


> > - When I apply the patch I get whitespace errors, but I don=E2=80=99t k=
now how
> >   those whitespace were introduced and how to get rid of them.
>=20
> Line 641, as highlighted by `git show`.

Mmm=E2=80=A6 when I apply it using b4, it doesn=E2=80=99t complain any more=
?! =F0=9F=A4=94

```console
$ b4 shazam 20221221153230.27764-1-tanguy@HIDDEN
Looking up https://yhetil.org/guix/20221221153230.27764-1-tanguy@bioneland.=
org
Grabbing thread from yhetil.org/guix/20221221153230.27764-1-tanguy@bionelan=
d.org/t.mbox.gz
Checking for newer revisions
Grabbing search results from lore.kernel.org
Nothing matching that query.
Analyzing 10 messages in the thread
Will use the latest revision: v2
You can pick other revisions using the -vN flag
---
  [PATCH v2] gnu: Add python-3.12 and python-next.
---
Total patches: 1
---
 Base: using specified base-commit 6831dfc58bf14341176f7358941ed685f34fb4c3
Applying: gnu: Add python-3.12 and python-next.
```


> > Btw, the patch targets the branch `python-team`.
>=20
> I believe this change could target master, since it only adds python-3.12,
> but does not cause any rebuilds using it.

Oh=E2=80=A6 correct! =F0=9F=98=85

Regards,

--=20
Tanguy




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 25 Feb 2024 14:16:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 25 09:16:39 2024
Received: from localhost ([127.0.0.1]:47805 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1reFJ0-0002Il-Rt
	for submit <at> debbugs.gnu.org; Sun, 25 Feb 2024 09:16:39 -0500
Received: from mout-p-202.mailbox.org ([80.241.56.172]:43380)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <lars@HIDDEN>) id 1reFIx-0002IC-H8
 for 60240 <at> debbugs.gnu.org; Sun, 25 Feb 2024 09:16:37 -0500
Received: from smtp2.mailbox.org (smtp2.mailbox.org [10.196.197.2])
 (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 mout-p-202.mailbox.org (Postfix) with ESMTPS id 4TjQZb1KPkz9slj;
 Sun, 25 Feb 2024 15:08:23 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6xq.net; s=MBO0001;
 t=1708870103;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=WSw9WOddyA07LsiNUUoYODyG8nk+3hkVJqRZuAZqIis=;
 b=JGkfB0YqQYLh5epszIqLQSQ0n1ehVa2jjSQWJlTsDL0aiA5b8pz/RAZKK8Mqgnbjz0/Fjz
 Y7HIycut+9LyQZY/qDenKNmjUdUQ9WohdBnUxLMaMnHC5JDGPvd9QyPtTr/DLxWH+1XAlE
 Lh3v+ze9qB8l1+w2vN/5AyHzwkia6ENCD79BN5USxCC89C2WCh7+D44E1Qmt9XEVXG3IrU
 Ci78h0WCPDvXP0jcUFeWySGoTdV8giW5RX2R0DmF+3zXGPI+w+o8zHVh9yiaMQuXVNpEtF
 CQsYr5GUON9CkNrNXV4u4pUtRTWX0wQ1uuKnKu7TSEdQ7ebxXaxJtP18KpstmQ==
Date: Sun, 25 Feb 2024 15:08:20 +0100
From: Lars-Dominik Braun <lars@HIDDEN>
To: Tanguy Le Carrour <tanguy@HIDDEN>
Subject: Re: [bug#60240] [PATCH v2] gnu: Add python-3.12 and python-next.
Message-ID: <ZdtJ1AU7ru7Vr2TU@HIDDEN>
References: <20221221153230.27764-1-tanguy@HIDDEN>
 <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 60240
Cc: Sharlatan Hellseher <sharlatanus@HIDDEN>, zimon.toutoune@HIDDEN,
 Munyoki Kilyungi <me@HIDDEN>, 60240 <at> debbugs.gnu.org,
 andreas@HIDDEN, jgart <jgart@HIDDEN>, Marius Bakke <marius@HIDDEN>,
 john.kehayias@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi,

> I created a brand new package definition for it, not inheriting from
> `python-2`. I actually copied/pasted the `python-2` package definition,
> removed what was specific to Python 2 and then copied over the things
> specific to Python 3 from the `python-3.10` package definition.

LGTM.

I believe the separate tk output does not give us any benefits regarding
closure size (any more?), because tcl and tk are both referenced from
`out`. Can we remove those references to reduce closure size again?

And I can also confirm test_asyncio runs out of memory on my machine
and test_threading never finishes. We should probably investigate both,
because they should not.

> - When I apply the patch I get whitespace errors, but I don’t know how
>   those whitespace were introduced and how to get rid of them.

Line 641, as highlighted by `git show`.

> Btw, the patch targets the branch `python-team`.

I believe this change could target master, since it only adds python-3.12,
but does not cause any rebuilds using it.

Cheers,
Lars





Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 22 Feb 2024 09:08:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 22 04:08:28 2024
Received: from localhost ([127.0.0.1]:37949 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rd545-0008Kg-VW
	for submit <at> debbugs.gnu.org; Thu, 22 Feb 2024 04:08:28 -0500
Received: from smtp-bc08.mail.infomaniak.ch ([45.157.188.8]:57079)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1rd540-0008KB-C8
 for 60240 <at> debbugs.gnu.org; Thu, 22 Feb 2024 04:08:25 -0500
Received: from smtp-4-0000.mail.infomaniak.ch (unknown [10.7.10.107])
 by smtp-3-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4TgS2d2WrMzMpvPk;
 Thu, 22 Feb 2024 10:07:21 +0100 (CET)
Received: from unknown by smtp-4-0000.mail.infomaniak.ch (Postfix) with ESMTPA
 id 4TgS2c5fMGz9jw; Thu, 22 Feb 2024 10:07:20 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bioneland.org;
 s=20230804; t=1708592841;
 bh=JucrmuIgLmtWmKu5Xn5r47dbCt0lB3DH9rqL3HWzDuU=;
 h=References:Subject:From:Cc:To:In-Reply-To:Date:From;
 b=GvRwnL3BWGZMdAFJw5+lSC39YFbbR1VgEfjOQqRp7Cw9VlLydrJt6hjbd3fHLsB8V
 69e1eNTgk1BmamZiLLVuYttPkukhKlP54Yzx2YIFCrrfFtOKUVQ2M4c7uIXKorTCFg
 bHtLlxqPxV5PK/R/c36IaitokoolDsbXzLKmNugf/pzIcRmsoooyEQVsRLvBCVVQrU
 yWgd45oUOSae1K0EUgjEfuWUNz9juvUs6v8ajxNavz9BIe6/wwDZO1bLFECIzx3Kj5
 I6V9WQdQ0CAgMu6V1P7Bw1p5U5c/Gm4WcMonFrUv/QgV5HQC2aECd6X0KssbttMYvI
 RjS77wtiqodfA==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
References: <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
 <710517CB-0F53-4A5A-ADDA-78F9AA1285D7@HIDDEN>
Subject: Re: [PATCH v2] gnu: Add python-3.12 and python-next.
From: Tanguy LE CARROUR <tanguy@HIDDEN>
To: 60240 <at> debbugs.gnu.org
In-Reply-To: <710517CB-0F53-4A5A-ADDA-78F9AA1285D7@HIDDEN>
Date: Thu, 22 Feb 2024 10:07:20 +0100
Message-ID: <170859284041.29391.324420994855433124@HIDDEN>
User-Agent: alot/0.10
X-Infomaniak-Routing: alpha
X-Spam-Score: -1.9 (-)
X-Debbugs-Envelope-To: 60240
Cc: john.kehayias@HIDDEN, andreas@HIDDEN, zimon.toutoune@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.9 (--)

Quoting Tanguy Le Carrour (2024-02-21 19:36:35)
> Le 21 f=C3=A9vrier 2024 13:13:42 GMT+01:00, Tanguy Le Carrour <tanguy@bio=
neland.org> a =C3=A9crit=C2=A0:
>  >+       ;; With no -j argument tests use all available cpus, so provide=
 one.
> >+       #:make-flags (list (string-append (format #f "TESTOPTS=3D-j~d"
> >+                                                 (parallel-job-count))
> >+                           ;; those tests fail on low-memory systems
> >+                           " --exclude test_mmap test_socket test_threa=
ding test_asyncio"
> >+                           ,@(if (system-hurd?)
> >+                                 '(" test_posix" ;multiple errors
> >+                                   ;;...
> >+                                   " test_sqlite")
> >+                                 '())))
>=20
> Here, I had to exlude 'test_socket' and 'test_threading' for, after 20min=
, there were making my computer crash! =F0=9F=98=B1
> They were in the "if hurd" block, so I removed them from there.
>=20
> I'll try to un-exclude them and see if it works on my bigger computer at =
work.

And=E2=80=A6 it almost killed my computer=E2=80=A6 again! =F0=9F=98=B1
So, I won=E2=80=99t "un-exclude" them, and I=E2=80=99ll leave the patch as =
it is.

--=20
Tanguy




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 21 Feb 2024 18:44:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 21 13:44:46 2024
Received: from localhost ([127.0.0.1]:32819 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rcraI-0003rE-6o
	for submit <at> debbugs.gnu.org; Wed, 21 Feb 2024 13:44:46 -0500
Received: from smtp-bc0f.mail.infomaniak.ch ([45.157.188.15]:40817)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1rcraE-0003qn-K2
 for 60240 <at> debbugs.gnu.org; Wed, 21 Feb 2024 13:44:44 -0500
Received: from smtp-3-0000.mail.infomaniak.ch (smtp-3-0000.mail.infomaniak.ch
 [10.4.36.107])
 by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4Tg4l45rn8zk5J;
 Wed, 21 Feb 2024 19:37:36 +0100 (CET)
Received: from unknown by smtp-3-0000.mail.infomaniak.ch (Postfix) with ESMTPA
 id 4Tg4l42t7Lz3W; Wed, 21 Feb 2024 19:37:36 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bioneland.org;
 s=20230804; t=1708540656;
 bh=lZpGU6UX1yeIZvEeLIvo6agr/WSY2VHO1HJWhXwUoiw=;
 h=Date:From:To:CC:Subject:In-Reply-To:References:From;
 b=XvTzpbr/nMCpLJyckTIQLODe2Ds+iUg1IOC0GRU1jhBbvFfxTKdF8yiLZX0yftmH2
 2EOINKT5HelduNOuxR5V/PExKLg4xPKxWDQBQHmk3t8qZUYJU+otM/tUHLskgWRFzf
 fryXgtQfn2BRulGeiUvjUcc1uAYh9k2SqmNvJixNOVBx7UKD1W8VjZ6F/6gwoBIBMV
 br8bxZudkWV/9rvqChm0SpEBRAKaeGdPkOt/VEbCEhchbyZXRK4truiOifWE/bp3of
 Ub77brQOl9VXgddfe27/Qu1rhassP7EZNAX+CVWdzZEyflzDoWCaKEM7l6dpyMT8qz
 3E1bk31+fK04g==
Date: Wed, 21 Feb 2024 19:36:35 +0100
From: Tanguy Le Carrour <tanguy@HIDDEN>
To: 60240 <at> debbugs.gnu.org
Subject: Re: [PATCH v2] gnu: Add python-3.12 and python-next.
User-Agent: K-9 Mail for Android
In-Reply-To: <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
References: <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
Message-ID: <710517CB-0F53-4A5A-ADDA-78F9AA1285D7@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Infomaniak-Routing: alpha
X-Spam-Score: -1.9 (-)
X-Debbugs-Envelope-To: 60240
Cc: john.kehayias@HIDDEN, andreas@HIDDEN, zimon.toutoune@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.9 (--)

Oups! I've just figured out that I forgot to mention something=E2=80=A6

Le 21 f=C3=A9vrier 2024 13:13:42 GMT+01:00, Tanguy Le Carrour <tanguy@bion=
eland=2Eorg> a =C3=A9crit=C2=A0:
 >+       ;; With no -j argument tests use all available cpus, so provide =
one=2E
>+       #:make-flags (list (string-append (format #f "TESTOPTS=3D-j~d"
>+                                                 (parallel-job-count))
>+                           ;; those tests fail on low-memory systems
>+                           " --exclude test_mmap test_socket test_thread=
ing test_asyncio"
>+                           ,@(if (system-hurd?)
>+                                 '(" test_posix" ;multiple errors
>+                                   ;;=2E=2E=2E
>+                                   " test_sqlite")
>+                                 '())))

Here, I had to exlude 'test_socket' and 'test_threading' for, after 20min,=
 there were making my computer crash! =F0=9F=98=B1
They were in the "if hurd" block, so I removed them from there=2E

I'll try to un-exclude them and see if it works on my bigger computer at w=
ork=2E

--=20
Tanguy




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 21 Feb 2024 12:15:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 21 07:15:15 2024
Received: from localhost ([127.0.0.1]:47977 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rclVJ-0003dP-11
	for submit <at> debbugs.gnu.org; Wed, 21 Feb 2024 07:15:15 -0500
Received: from smtp-8fad.mail.infomaniak.ch ([83.166.143.173]:43279)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1rclVB-0003cX-72
 for 60240 <at> debbugs.gnu.org; Wed, 21 Feb 2024 07:15:11 -0500
Received: from smtp-3-0001.mail.infomaniak.ch (smtp-3-0001.mail.infomaniak.ch
 [10.4.36.108])
 by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4TfwDZ1gm6z2j9;
 Wed, 21 Feb 2024 13:14:06 +0100 (CET)
Received: from unknown by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA
 id 4TfwDY3zjczMpnPq; Wed, 21 Feb 2024 13:14:05 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bioneland.org;
 s=20230804; t=1708517646;
 bh=Y4FMP78QEaoKFz2qw9Se/wgKVex+o6qT3+y4CnwkbgQ=;
 h=From:To:Cc:Subject:Date:From;
 b=dw+2o8EV/6VKNmLOWhdYz3YT8sLstLNTXfTzlUV5Y5G65IUX1qh9tLYSxYgOHGhap
 MgpMx6JJOIWVHTA3E6ItXs3xnnWGB9NHmRggIOer+NZyc9UEF+pRc0MrIh0qx92f4W
 10cdgg/8gp9F/PxWs/BI2u7slvomNbxoWHwqVWuQAPZ+/ISRgQLR+gR88sBHrcv+w3
 5+1CdJvMFNg8C11KP8vTZEfOq3K628GPb1VxErHrmNSm0fYiU3NRgwYLgo7pV/qZQ7
 GAaAjsHgLqLzXz8Pg5TdZoqMhdWOWykZ1mw2GtLpYt5ZkjonrQ4bpY9Znq6NJYm9P6
 vlh1V95N/p0Pg==
From: Tanguy Le Carrour <tanguy@HIDDEN>
To: 60240 <at> debbugs.gnu.org
Subject: [PATCH v2] gnu: Add python-3.12 and python-next.
Date: Wed, 21 Feb 2024 13:13:42 +0100
Message-ID: <4832d706e706ced5aa8a52f1b63b1e676ea5fd3d.1708516654.git.tanguy@HIDDEN>
X-Mailer: git-send-email 2.41.0
MIME-Version: 1.0
X-Debbugs-Cc: Lars-Dominik Braun <lars@HIDDEN>, Marius Bakke <marius@HIDDEN>,
 Munyoki Kilyungi <me@HIDDEN>,
 Sharlatan Hellseher <sharlatanus@HIDDEN>, jgart <jgart@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Infomaniak-Routing: alpha
X-Spam-Score: -1.9 (-)
X-Debbugs-Envelope-To: 60240
Cc: john.kehayias@HIDDEN, andreas@HIDDEN,
 Tanguy Le Carrour <tanguy@HIDDEN>, zimon.toutoune@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.6 (---)

Hi Guix,

Sorry it took me so long —thanks again John for the reminder!—, but I
eventually made it! I have a Python 3.12.2 running on my computer.

I created a brand new package definition for it, not inheriting from
`python-2`. I actually copied/pasted the `python-2` package definition,
removed what was specific to Python 2 and then copied over the things
specific to Python 3 from the `python-3.10` package definition.

There are still things here and there that I’m not happy with, though:
- skipping `test_pdb_issue_20766` doesn’t seem to work, so I modified
  the expected output;
- I use the old style for `native-inputs`, for I was not sure how to
  make the new style work with a `local-file`;
- I left the `(@ (gnu packages compression) zip)`, even though I’m not
  sur why it’s better than "just" `zip`;
- When I apply the patch I get whitespace errors, but I don’t know how
  those whitespace were introduced and how to get rid of them.

Btw, the patch targets the branch `python-team`.

Looking forwards to your comments!


* gnu/packages/python.scm (python-3.12, python-next): New variables.
* gnu/packages/patches/python-3.12-fix-tests.patch: New file.

Change-Id: Ie393b732a8863569578e72e62603b75a1655a34e
---
 .../patches/python-3.12-fix-tests.patch       | 334 ++++++++++++++++
 gnu/packages/python.scm                       | 378 +++++++++++++++++-
 2 files changed, 711 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/python-3.12-fix-tests.patch

diff --git a/gnu/packages/patches/python-3.12-fix-tests.patch b/gnu/packages/patches/python-3.12-fix-tests.patch
new file mode 100644
index 0000000000..206a7223f5
--- /dev/null
+++ b/gnu/packages/patches/python-3.12-fix-tests.patch
@@ -0,0 +1,334 @@
+From f0698133e7d6c353a3e6ae0fc62e57ba558a9bc0 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@HIDDEN>
+Date: Wed, 28 Oct 2020 22:55:05 -0400
+Subject: [PATCH] Skip problematic Python 3 tests in Guix.
+
+A subset of the hunks in this patch is tracked upstream at
+https://bugs.python.org/issue38845, which was contributed by Tanguy Le
+Carrour <tanguy@HIDDEN>.
+
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+index e42c7ab4bd..8087c84dab 100644
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -1695,6 +1695,7 @@ def _test_wait_result(cls, c, pid):
+         if pid is not None:
+             os.kill(pid, signal.SIGINT)
+ 
++    @unittest.skipIf(True, "This fails for unknown reasons on Guix")
+     def test_wait_result(self):
+         if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
+             pid = os.getpid()
+@@ -4150,6 +4151,7 @@ def test_shared_memory_across_processes(self):
+         sms.close()
+ 
+     @unittest.skipIf(os.name != "posix", "not feasible in non-posix platforms")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_shared_memory_SharedMemoryServer_ignores_sigint(self):
+         # bpo-36368: protect SharedMemoryManager server process from
+         # KeyboardInterrupt signals.
+diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
+index 85c8152d49..e35cfffe84 100644
+--- a/Lib/test/test_asyncio/test_base_events.py
++++ b/Lib/test/test_asyncio/test_base_events.py
+@@ -1377,6 +1377,8 @@ def test_create_connection_no_inet_pton(self, m_socket):
+         self._test_create_connection_ip_addr(m_socket, False)
+ 
+     @patch_socket
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_create_connection_service_name(self, m_socket):
+         m_socket.getaddrinfo = socket.getaddrinfo
+         sock = m_socket.socket.return_value
+diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py
+index a41e94971d..1291af3057 100644
+--- a/Lib/test/test_ctypes/test_find.py
++++ b/Lib/test/test_ctypes/test_find.py
+@@ -117,6 +117,7 @@ def test_find_library_with_gcc(self):
+         with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
+             self.assertNotEqual(find_library('c'), None)
+ 
++    @unittest.skipIf(True, 'Fails on Guix.')
+     def test_find_library_with_ld(self):
+         with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
+              unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
+diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
+index 1ee9958445..ab6b41befe 100644
+--- a/Lib/test/test_generators.py
++++ b/Lib/test/test_generators.py
+@@ -34,6 +34,7 @@ def generator2(self):
+         else:
+             return "FAILED"
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
+     def test_raise_and_yield_from(self):
+         gen = self.generator1()
+         gen.send(None)
+diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
+index ec105ae1a0..ae4c5b672e 100644
+--- a/Lib/test/test_pathlib.py
++++ b/Lib/test/test_pathlib.py
+@@ -3069,6 +3069,7 @@ def test_rglob(self):
+                          'pwd module does not expose getpwall()')
+     @unittest.skipIf(sys.platform == "vxworks",
+                      "no home directory on VxWorks")
++    @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
+     def test_expanduser(self):
+         P = self.cls
+         import_helper.import_module('pwd')
+diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
+index 51b844262e..004d3133cf 100644
+--- a/Lib/test/test_pdb.py
++++ b/Lib/test/test_pdb.py
+@@ -1580,6 +1580,7 @@ def test_pdb_next_command_subiterator():
+     (Pdb) continue
+     """
+ 
++@unittest.skipIf(True, 'Fails on Guix… but skipIf not taken into account?!')
+ def test_pdb_issue_20766():
+     """Test for reference leaks when the SIGINT handler is set.
+ 
+@@ -1598,11 +1599,11 @@ def test_pdb_issue_20766():
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
+     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+     (Pdb) continue
+-    pdb 1: <built-in function default_int_handler>
++    pdb 1: 1
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
+     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+     (Pdb) continue
+-    pdb 2: <built-in function default_int_handler>
++    pdb 2: 1
+     """
+ 
+ def test_pdb_issue_43318():
+diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py
+index 2ab6f6a986..8cf6b4d1c8 100644
+--- a/Lib/test/test_regrtest.py
++++ b/Lib/test/test_regrtest.py
+@@ -1049,6 +1049,7 @@ def test_fromfile(self):
+         output = self.run_tests('--fromfile', filename)
+         self.check_executed_tests(output, tests, stats=stats)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_interrupted(self):
+         code = TEST_INTERRUPTED
+         test = self.create_test('sigint', code=code)
+@@ -1066,6 +1067,7 @@ def test_slowest(self):
+                  % (self.TESTNAME_REGEX, len(tests)))
+         self.check_line(output, regex)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_slowest_interrupted(self):
+         # Issue #25373: test --slowest with an interrupted test
+         code = TEST_INTERRUPTED
+diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
+index 317e7ca8f8..7f272daf24 100644
+--- a/Lib/test/test_resource.py
++++ b/Lib/test/test_resource.py
+@@ -151,6 +151,7 @@ def test_freebsd_contants(self):
+ 
+     @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
+     @support.requires_linux_version(2, 6, 36)
++    @unittest.skipIf(True, "Bug: the PermissionError is not raised")
+     def test_prlimit(self):
+         self.assertRaises(TypeError, resource.prlimit)
+         self.assertRaises(ProcessLookupError, resource.prlimit,
+diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
+index bf60f37934..5e3a96380a 100644
+--- a/Lib/test/test_shutil.py
++++ b/Lib/test/test_shutil.py
+@@ -1743,6 +1743,7 @@ def test_make_archive(self):
+         base_name = os.path.join(tmpdir, 'archive')
+         self.assertRaises(ValueError, make_archive, base_name, 'xxx')
+ 
++    @unittest.skipIf(True, "The Guix build container has no root user")
+     @support.requires_zlib()
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+@@ -1771,6 +1772,7 @@ def test_make_archive_owner_group(self):
+         self.assertTrue(os.path.isfile(res))
+ 
+ 
++    @unittest.skipIf(True, "The Guix build container has no root user")
+     @support.requires_zlib()
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
+     def test_tarfile_root_owner(self):
+diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
+index 637a0ca3b3..2fb804e340 100644
+--- a/Lib/test/test_signal.py
++++ b/Lib/test/test_signal.py
+@@ -160,6 +160,7 @@ def test_valid_signals(self):
+                 self.assertLess(signum, signal.NSIG)
+ 
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     @support.requires_subprocess()
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers exit via SIGINT."""
+@@ -211,6 +212,7 @@ def test_issue9324(self):
+             signal.signal(7, handler)
+ 
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     @support.requires_subprocess()
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers an exit using STATUS_CONTROL_C_EXIT."""
+@@ -1407,6 +1409,7 @@ def cycle_handlers():
+ 
+ class RaiseSignalTest(unittest.TestCase):
+ 
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_sigint(self):
+         with self.assertRaises(KeyboardInterrupt):
+             signal.raise_signal(signal.SIGINT)
+@@ -1452,6 +1455,7 @@ def __del__(self):
+ 
+ class PidfdSignalTest(unittest.TestCase):
+ 
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     @unittest.skipUnless(
+         hasattr(signal, "pidfd_send_signal"),
+         "pidfd support not built in",
+diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
+index 4eb5af99d6..9c7b8f6dbc 100644
+--- a/Lib/test/test_socket.py
++++ b/Lib/test/test_socket.py
+@@ -1016,6 +1016,8 @@ def testHostnameRes(self):
+         if not fqhn in all_host_names:
+             self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
+ 
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_host_resolution(self):
+         for addr in [socket_helper.HOSTv4, '10.0.0.1', '255.255.255.255']:
+             self.assertEqual(socket.gethostbyname(addr), addr)
+@@ -1161,6 +1163,8 @@ def testNtoHErrors(self):
+             self.assertRaises(OverflowError, socket.ntohl, k)
+             self.assertRaises(OverflowError, socket.htonl, k)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/services"),
++                         "getservbyname uses /etc/services, which is not in the chroot")
+     def testGetServBy(self):
+         eq = self.assertEqual
+         # Find one service that exists, then check all the related interfaces.
+@@ -1521,6 +1525,8 @@ def test_sio_loopback_fast_path(self):
+             raise
+         self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     def testGetaddrinfo(self):
+         try:
+             socket.getaddrinfo('localhost', 80)
+@@ -1653,6 +1659,8 @@ def test_getnameinfo(self):
+         # only IP addresses are allowed
+         self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     @unittest.skipUnless(support.is_resource_enabled('network'),
+                          'network is not enabled')
+     def test_idna(self):
+diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py
+index 50766c2548..0c7eb7a83a 100644
+--- a/Lib/test/test_spwd.py
++++ b/Lib/test/test_spwd.py
+@@ -9,8 +9,7 @@
+     spwd = import_helper.import_module('spwd')
+ 
+ 
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0,
+-                     'root privileges required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdRoot(unittest.TestCase):
+ 
+     def test_getspall(self):
+@@ -60,8 +59,7 @@ def test_getspnam(self):
+             self.assertRaises(TypeError, spwd.getspnam, bytes_name)
+ 
+ 
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() != 0,
+-                     'non-root user required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdNonRoot(unittest.TestCase):
+ 
+     def test_getspnam_exception(self):
+diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
+index 71489ea493..33351919fe 100644
+--- a/Lib/test/test_tarfile.py
++++ b/Lib/test/test_tarfile.py
+@@ -2911,9 +2911,12 @@ def root_is_uid_gid_0():
+         import pwd, grp
+     except ImportError:
+         return False
+-    if pwd.getpwuid(0)[0] != 'root':
+-        return False
+-    if grp.getgrgid(0)[0] != 'root':
++    try:
++        if pwd.getpwuid(0)[0] != 'root':
++            return False
++        if grp.getgrgid(0)[0] != 'root':
++            return False
++    except KeyError:
+         return False
+     return True
+ 
+diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
+index 00d9e591c7..2515603715 100644
+--- a/Lib/test/test_threading.py
++++ b/Lib/test/test_threading.py
+@@ -1962,6 +1962,7 @@ def check_interrupt_main_noerror(self, signum):
+             # Restore original handler
+             signal.signal(signum, handler)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_subthread(self):
+         # Calling start_new_thread with a function that executes interrupt_main
+         # should raise KeyboardInterrupt upon completion.
+@@ -1973,6 +1974,8 @@ def call_interrupt():
+             t.join()
+         t.join()
+ 
++
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_mainthread(self):
+         # Make sure that if interrupt_main is called in main thread that
+         # KeyboardInterrupt is raised instantly.
+diff --git a/Lib/test/test_tools/test_freeze.py b/Lib/test/test_tools/test_freeze.py
+index 0e7ed67de7..6539a2983b 100644
+--- a/Lib/test/test_tools/test_freeze.py
++++ b/Lib/test/test_tools/test_freeze.py
+@@ -23,6 +23,7 @@
+                  'test is too slow with PGO')
+ class TestFreeze(unittest.TestCase):
+ 
++    @unittest.skipIf(True, 'Fails on Guix.')
+     @support.requires_resource('cpu') # Building Python is slow
+     def test_freeze_simple_script(self):
+         script = textwrap.dedent("""
+diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py
+index 515c3840cb..a96dfad0fe 100644
+--- a/Lib/test/test_unicodedata.py
++++ b/Lib/test/test_unicodedata.py
+@@ -342,6 +342,7 @@ def test_linebreak_7643(self):
+                 self.assertEqual(len(lines), 1,
+                                  r"\u%.4x should not be a linebreak" % i)
+ 
++@requires_resource('network')
+ class NormalizationTest(unittest.TestCase):
+     @staticmethod
+     def check_version(testfile):
+diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py
+index 445a34ae3e..8f750537c3 100644
+--- a/Tools/scripts/run_tests.py
++++ b/Tools/scripts/run_tests.py
+@@ -69,7 +69,7 @@ def main(regrtest_args):
+         else:
+             args.extend(['-j', '0'])  # Use all CPU cores
+     if not any(is_resource_use_flag(arg) for arg in regrtest_args):
+-        args.extend(['-u', 'all,-largefile,-audio,-gui'])
++        args.extend(['-u', 'all,-largefile,-audio,-gui,-network'])
+ 
+     if cross_compile and hostrunner:
+         # If HOSTRUNNER is set and -p/--python option is not given, then
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 51d5f598d7..471cf190fb 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -55,7 +55,7 @@
 ;;; Copyright © 2018, 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@HIDDEN>
 ;;; Copyright © 2018 Luther Thompson <lutheroto@HIDDEN>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@HIDDEN>
-;;; Copyright © 2019 Tanguy Le Carrour <tanguy@HIDDEN>
+;;; Copyright © 2019, 2024 Tanguy Le Carrour <tanguy@HIDDEN>
 ;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@HIDDEN>
 ;;; Copyright © 2020, 2021 Greg Hogan <code@HIDDEN>
 ;;; Copyright © 2022 Philip McGrath <philip@HIDDEN>
@@ -596,6 +596,382 @@ (define-public python-3.10
             (variable "PYTHONTZPATH")
             (files (list "share/zoneinfo")))))))
 
+(define-public python-3.12
+  (package
+    (name "python")
+    (version "3.12.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.python.org/ftp/python/" version
+                           "/Python-" version ".tar.xz"))
+       (sha256
+        (base32 "0w6qyfhc912xxav9x9pifwca40b4l49vy52wai9j0gc1mhni2a5y"))
+       (patches (search-patches "python-3-deterministic-build-info.patch"
+                                "python-3.12-fix-tests.patch"
+                                "python-3-hurd-configure.patch"))
+       (modules '((guix build utils)))
+       (snippet '(begin
+                   ;; Delete the bundled copy of libexpat.
+                   (delete-file-recursively "Modules/expat")
+                   (substitute* "Modules/Setup"
+                     ;; Link Expat instead of embedding the bundled one.
+                     (("^#pyexpat.*")
+                      "pyexpat pyexpat.c -lexpat\n"))
+                   ;; Delete windows binaries
+                   (for-each delete-file
+                             (find-files "Lib/distutils/command" "\\.exe$"))))))
+    (outputs '("out" "tk" ;tkinter; adds 50 MiB to the closure
+               "idle")) ;programming environment; weighs 5MB
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:configure-flags (list "--enable-shared" ;allow embedding
+                               "--with-system-expat" ;for XML support
+                               "--with-system-ffi" ;build ctypes
+                               "--with-ensurepip=install" ;install pip and setuptools
+                               "--with-computed-gotos" ;main interpreter loop optimization
+                               "--enable-unicode=ucs4"
+                               "--without-static-libpython"
+
+                               ;; FIXME: These flags makes Python significantly faster, but
+                               ;; leads to non-reproducible binaries.
+                               ;; "--with-lto"               ;increase size by 20MB, but 15% speedup
+                               ;; "--enable-optimizations"
+                               
+                               ;; Prevent the installed _sysconfigdata.py from retaining a reference
+                               ;; to coreutils.
+                               "INSTALL=install -c"
+                               "MKDIR_P=mkdir -p"
+
+                               ;; Disable runtime check failing if cross-compiling, see:
+                               ;; https://lists.yoctoproject.org/pipermail/poky/2013-June/008997.html
+                               ,@(if (%current-target-system)
+                                     '("ac_cv_buggy_getaddrinfo=no"
+                                       "ac_cv_file__dev_ptmx=no"
+                                       "ac_cv_file__dev_ptc=no")
+                                     '())
+                               ;; -fno-semantic-interposition reinstates some optimizations by gcc
+                               ;; leading to around 15% speedup. This is the default starting from
+                               ;; python 3.10.
+                               "CFLAGS=-fno-semantic-interposition"
+                               (string-append "LDFLAGS=-Wl,-rpath="
+                                              (assoc-ref %outputs "out")
+                                              "/lib"
+                                              " -fno-semantic-interposition"))
+       ;; With no -j argument tests use all available cpus, so provide one.
+       #:make-flags (list (string-append (format #f "TESTOPTS=-j~d"
+                                                 (parallel-job-count))
+                           ;; those tests fail on low-memory systems
+                           " --exclude test_mmap test_socket test_threading test_asyncio"
+                           ,@(if (system-hurd?)
+                                 '(" test_posix" ;multiple errors
+                                   " test_time"
+                                   " test_pty"
+                                   " test_shutil"
+                                   " test_tempfile" ;chflags: invalid argument:
+                                   ;; tbv14c9t/dir0/dir0/dir0/test0.txt
+                                   " test_os" ;stty: 'standard input':
+                                   ;; Inappropriate ioctl for device
+                                   " test_openpty" ;No such file or directory
+                                   " test_selectors" ;assertEqual(NUM_FDS // 2, len(fds))
+                                   ;; 32752 != 4
+                                   " test_compileall" ;multiple errors
+                                   " test_poll" ;list index out of range
+                                   " test_subprocess" ;runs over 10min
+                                   " test_asyncore" ;multiple errors
+                                   " test_threadsignals"
+                                   " test_eintr" ;Process return code is -14
+                                   " test_io" ;multiple errors
+                                   " test_logging"
+                                   " test_signal"
+                                   " test_flags" ;ERROR
+                                   " test_bidirectional_pty"
+                                   " test_create_unix_connection"
+                                   " test_unix_sock_client_ops"
+                                   " test_open_unix_connection"
+                                   " test_open_unix_connection_error"
+                                   " test_read_pty_output"
+                                   " test_write_pty"
+                                   " test_concurrent_futures" ;freeze
+                                   " test_venv" ;freeze
+                                   " test_multiprocessing_forkserver" ;runs over 10min
+                                   " test_multiprocessing_spawn" ;runs over 10min
+                                   " test_builtin"
+                                   " test_capi"
+                                   " test_dbm_ndbm"
+                                   " test_exceptions"
+                                   " test_faulthandler"
+                                   " test_getopt"
+                                   " test_importlib"
+                                   " test_json"
+                                   " test_multiprocessing_fork"
+                                   " test_multiprocessing_main_handling"
+                                   " test_pdb "
+                                   " test_regrtest"
+                                   " test_sqlite")
+                                 '())))
+
+       #:modules ((ice-9 ftw)
+                  (ice-9 match)
+                  (guix build utils)
+                  (guix build gnu-build-system))
+
+       #:phases (modify-phases %standard-phases
+                  ,@(if (system-hurd?)
+                        `((add-after 'unpack
+                                     'disable-multi-processing
+                                     (lambda _
+                                       (substitute* "Makefile.pre.in"
+                                         (("-j0")
+                                          "-j1")))))
+                        '())
+                  (add-before 'configure 'patch-lib-shells
+                    (lambda _
+                      ;; This variable is used in setup.py to enable cross compilation
+                      ;; specific switches. As it is not set properly by configure
+                      ;; script, set it manually.
+                      ,@(if (%current-target-system)
+                            '((setenv "_PYTHON_HOST_PLATFORM" ""))
+                            '())
+                      ;; Filter for existing files, since some may not exist in all
+                      ;; versions of python that are built with this recipe.
+                      (substitute* (filter file-exists?
+                                           '("Lib/subprocess.py"
+                                             "Lib/popen2.py"
+                                             "Lib/distutils/tests/test_spawn.py"
+                                             "Lib/test/support/__init__.py"
+                                             "Lib/test/test_subprocess.py"))
+                        (("/bin/sh")
+                         (which "sh")))))
+                  (add-before 'configure 'do-not-record-configure-flags
+                    (lambda* (#:key configure-flags #:allow-other-keys)
+                      ;; Remove configure flags from the installed '_sysconfigdata.py'
+                      ;; and 'Makefile' so we don't end up keeping references to the
+                      ;; build tools.
+                      ;;
+                      ;; Preserve at least '--with-system-ffi' since otherwise the
+                      ;; thing tries to build libffi, fails, and we end up with a
+                      ;; Python that lacks ctypes.
+                      (substitute* "configure"
+                        (("^CONFIG_ARGS=.*$")
+                         (format #f "CONFIG_ARGS='~a'\n"
+                                 (if (member "--with-system-ffi"
+                                             configure-flags)
+                                     "--with-system-ffi" ""))))))
+                  (add-before 'check 'pre-check
+                    (lambda _
+                      ;; 'Lib/test/test_site.py' needs a valid $HOME
+                      (setenv "HOME"
+                              (getcwd))))
+                  (add-after 'unpack 'set-source-file-times-to-1980
+                    ;; XXX One of the tests uses a ZIP library to pack up some of the
+                    ;; source tree, and fails with "ZIP does not support timestamps
+                    ;; before 1980".  Work around this by setting the file times in the
+                    ;; source tree to sometime in early 1980.
+                    (lambda _
+                      (let ((circa-1980 (* 10 366 24 60 60)))
+                        (ftw "."
+                             (lambda (file stat flag)
+                               (utime file circa-1980 circa-1980) #t)))))
+                  (add-after 'unpack 'remove-windows-binaries
+                    (lambda _
+                      ;; Delete .exe from embedded .whl (zip) files
+                      (for-each (lambda (whl)
+                                  (let ((dir "whl-content")
+                                        (circa-1980 (* 10 366 24 60 60)))
+                                    (mkdir-p dir)
+                                    (with-directory-excursion dir
+                                      (let ((whl (string-append "../" whl)))
+                                        (invoke "unzip" whl)
+                                        (for-each delete-file
+                                                  (find-files "." "\\.exe$"))
+                                        (delete-file whl)
+                                        ;; Reset timestamps to prevent them from ending
+                                        ;; up in the Zip archive.
+                                        (ftw "."
+                                             (lambda (file stat flag)
+                                               (utime file circa-1980
+                                                      circa-1980) #t))
+                                        (apply invoke "zip" "-X" whl
+                                               (find-files "."
+                                                           #:directories? #t))))
+                                    (delete-file-recursively dir)))
+                                (find-files "Lib/ensurepip" "\\.whl$"))))
+                  (add-after 'install 'remove-tests
+                    ;; Remove 25 MiB of unneeded unit tests.  Keep test_support.*
+                    ;; because these files are used by some libraries out there.
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (match (scandir (string-append out "/lib")
+                                        (lambda (name)
+                                          (string-prefix? "python" name)))
+                          ((pythonX.Y)
+                           (let ((testdir (string-append out "/lib/" pythonX.Y
+                                                         "/test")))
+                             (with-directory-excursion testdir
+                               (for-each delete-file-recursively
+                                         (scandir testdir
+                                                  (match-lambda
+                                                    ((or "." "..")
+                                                     #f)
+                                                    ("support" #f)
+                                                    (file (not (string-prefix?
+                                                                "test_support."
+                                                                file))))))
+                               (call-with-output-file "__init__.py"
+                                 (const #t))))
+                           (let ((libdir (string-append out "/lib/" pythonX.Y)))
+                             (for-each (lambda (directory)
+                                         (let ((dir (string-append libdir "/"
+                                                                   directory)))
+                                           (when (file-exists? dir)
+                                             (delete-file-recursively dir))))
+                                       '("email/test" "ctypes/test"
+                                         "unittest/test"
+                                         "tkinter/test"
+                                         "sqlite3/test"
+                                         "bsddb/test"
+                                         "lib-tk/test"
+                                         "json/tests"
+                                         "distutils/tests"))))))))
+                  (add-after 'remove-tests 'move-tk-inter
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; When Tkinter support is built move it to a separate output so
+                      ;; that the main output doesn't contain a reference to Tcl/Tk.
+                      (let ((out (assoc-ref outputs "out"))
+                            (tk (assoc-ref outputs "tk")))
+                        (when tk
+                          (match (find-files out "tkinter.*\\.so")
+                            ((tkinter.so)
+                             ;; The .so is in OUT/lib/pythonX.Y/lib-dynload, but we
+                             ;; want it under TK/lib/pythonX.Y/site-packages.
+                             (let* ((len (string-length out))
+                                    (target (string-append tk "/"
+                                                           (string-drop (dirname
+                                                                         (dirname
+                                                                          tkinter.so))
+                                                                        len)
+                                                           "/site-packages")))
+                               (install-file tkinter.so target)
+                               (delete-file tkinter.so))))))))
+                  (add-after 'move-tk-inter 'move-idle
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; when idle is built, move it to a separate output to save some
+                      ;; space (5MB)
+                      (let ((out (assoc-ref outputs "out"))
+                            (idle (assoc-ref outputs "idle")))
+                        (when idle
+                          (for-each (lambda (file)
+                                      (let ((target (string-append idle
+                                                                   "/bin/"
+                                                                   (basename
+                                                                    file))))
+                                        (install-file file
+                                                      (dirname target))
+                                        (delete-file file)))
+                                    (find-files (string-append out "/bin")
+                                                "^idle"))
+                          (match (find-files out "^idlelib$"
+                                             #:directories? #t)
+                            ((idlelib)
+                             (let* ((len (string-length out))
+                                    (target (string-append idle "/"
+                                                           (string-drop
+                                                            idlelib len)
+                                                           "/site-packages")))
+                               (mkdir-p (dirname target))
+                               (rename-file idlelib target))))))))
+                  (add-after 'move-idle 'rebuild-bytecode
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        ;; Disable hash randomization to ensure the generated .pycs
+                        ;; are reproducible.
+                        (setenv "PYTHONHASHSEED" "0")
+
+                        (for-each (lambda (output)
+                                    ;; XXX: Delete existing pycs generated by the build
+                                    ;; system beforehand because the -f argument does
+                                    ;; not necessarily overwrite all files, leading to
+                                    ;; indeterministic results.
+                                    (for-each (lambda (pyc)
+                                                (delete-file pyc))
+                                              (find-files output "\\.pyc$"))
+
+                                    (apply invoke
+                                           `(,,(if (%current-target-system)
+                                                   "python3"
+                                                   '(string-append out
+                                                     "/bin/python3")) "-m"
+                                             "compileall"
+                                             "-o"
+                                             "0"
+                                             "-o"
+                                             "1"
+                                             "-o"
+                                             "2"
+                                             "-f" ;force rebuild
+                                             "--invalidation-mode=unchecked-hash"
+                                             ;; Don't build lib2to3, because it's
+                                             ;; Python 2 code.
+                                             "-x"
+                                             "lib2to3/.*"
+                                             ,output)))
+                                  (map cdr outputs)))))
+                  (add-before 'check 'set-TZDIR
+                    (lambda* (#:key inputs native-inputs #:allow-other-keys)
+                      ;; test_email requires the Olson time zone database.
+                      (setenv "TZDIR"
+                              (string-append (assoc-ref (or native-inputs
+                                                            inputs) "tzdata")
+                                             "/share/zoneinfo"))))
+                  (add-after 'install 'install-sitecustomize.py
+                    ,(customize-site version)))))
+    (inputs (list bzip2
+                  expat
+                  gdbm
+                  libffi ;for ctypes
+                  sqlite ;for sqlite extension
+                  openssl
+                  readline
+                  zlib
+                  tcl
+                  tk)) ;for tkinter
+    (native-inputs `(("tzdata" ,tzdata-for-tests)
+                     ("unzip" ,unzip)
+                     ("zip" ,(@ (gnu packages compression) zip))
+                     ("pkg-config" ,pkg-config)
+                     ("sitecustomize.py" ,(local-file (search-auxiliary-file
+                                                       "python/sitecustomize.py")))
+                     ;; When cross-compiling, a native version of Python itself is needed.
+                     ,@(if (%current-target-system)
+                           `(("python" ,this-package)
+                             ("which" ,which))
+                           '())))
+    (native-search-paths
+     (list (guix-pythonpath-search-path version)
+           ;; Used to locate tzdata by the zoneinfo module introduced in
+           ;; Python 3.9.
+           (search-path-specification
+            (variable "PYTHONTZPATH")
+            (files (list "share/zoneinfo")))))
+    (home-page "https://www.python.org")
+    (synopsis "High-level, dynamically-typed programming language")
+    (description
+     "Python is a remarkably powerful dynamic programming language that
+is used in a wide variety of application domains.  Some of its key
+distinguishing features include: clear, readable syntax; strong
+introspection capabilities; intuitive object orientation; natural
+expression of procedural code; full modularity, supporting hierarchical
+packages; exception-based error handling; and very high level dynamic
+data types.")
+    (properties '((cpe-name . "python")))
+    (license license:psfl)))
+
+
+;; Next 3.x version.
+(define-public python-next python-3.12)
+
 ;; Current 3.x version.
 (define-public python-3 python-3.10)
 

base-commit: 6831dfc58bf14341176f7358941ed685f34fb4c3
-- 
2.41.0





Information forwarded to lars@HIDDEN, marius@HIDDEN, me@HIDDEN, sharlatanus@HIDDEN, jgart@HIDDEN, guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 20 Feb 2024 14:19:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 20 09:19:28 2024
Received: from localhost ([127.0.0.1]:44653 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rcQy0-0002BL-24
	for submit <at> debbugs.gnu.org; Tue, 20 Feb 2024 09:19:28 -0500
Received: from smtp-8fad.mail.infomaniak.ch ([83.166.143.173]:32869)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1rcQxy-0002B6-5m
 for 60240 <at> debbugs.gnu.org; Tue, 20 Feb 2024 09:19:27 -0500
Received: from smtp-4-0000.mail.infomaniak.ch (smtp-4-0000.mail.infomaniak.ch
 [10.7.10.107])
 by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4TfM2X0Wv0zSTl;
 Tue, 20 Feb 2024 15:18:28 +0100 (CET)
Received: from unknown by smtp-4-0000.mail.infomaniak.ch (Postfix) with ESMTPA
 id 4TfM2W1K2HzHV5; Tue, 20 Feb 2024 15:18:27 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bioneland.org;
 s=20230804; t=1708438707;
 bh=oCZckuNS4N3mniSi4oms2a9RnyngQaJevKrc6UJGXXM=;
 h=References:Subject:From:Cc:To:In-Reply-To:Date:From;
 b=OucksZPQKj7FHp/3Wa4bcQaYbXC3BAEfThC0q9BE2r37RR98hURQWXqkArYc1fca1
 Ke5v34HRVwxHEHjxAvVNbr5/oB7tBE3AeaJnj7if1zSYTUvLmaNaP+YNZneZA5P3mI
 FLtesUPwIW6X6b3mpG+yX21Vd0rKEKCdsjETfY8uWCCNy1ilhI7dCxzorsPDjMdP2d
 Scw7UI3DwDw54m8nMdSP3CbIG1c5819y4m6mO1cA2ZOyORGNdD2edehWuGOvHJFEfh
 RjxNW1bamkDYeGxY5dDmOX+DnfIKLBVhi7Gkniara2ody9bDGiwfIzL1DcwnT7OEMk
 vUsyRjmRT5U+Q==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
References: <875xyk9mbc.fsf@HIDDEN>
Subject: Re: [bug#60240] Python 3.10 in core-updates
From: Tanguy LE CARROUR <tanguy@HIDDEN>
To: John Kehayias <john.kehayias@HIDDEN>
In-Reply-To: <875xyk9mbc.fsf@HIDDEN>
Date: Tue, 20 Feb 2024 15:18:26 +0100
Message-ID: <170843870653.26771.12370877944061551668@HIDDEN>
User-Agent: alot/0.10
X-Infomaniak-Routing: alpha
X-Spam-Score: -2.6 (--)
X-Debbugs-Envelope-To: 60240
Cc: Sharlatan Hellseher <sharlatanus@HIDDEN>,
 Simon Tournier <zimon.toutoune@HIDDEN>,
 Munyoki Kilyungi <me@HIDDEN>, Lars-Dominik Braun <lars@HIDDEN>,
 60240 <at> debbugs.gnu.org, Andreas Enge <andreas@HIDDEN>,
 jgart <jgart@HIDDEN>, Marius Bakke <marius@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.6 (---)

Hi John,

Sorry for taking so long to reply, but... I was hiding under my desk...
ashamed to have forgotten this ticket! =F0=9F=98=B1

Thanks for the reminder!


Quoting John Kehayias (2024-02-19 22:27:48)
> A link for a refresher: <https://issues.guix.gnu.org/60240>
> On Mon, Mar 13, 2023 at 12:35 AM, Andreas Enge wrote:
> > core-updates has Python 3.10.7, so you may wish to base your work on th=
is
> > branch and submit it once the branch has been merged.

I totally missed/forgot-to-answer-to Andreas=E2=80=99 message! **Rude!** =
=F0=9F=98=B5
Sooo-sooorry!


> Yes, we have and default to python-3.10 in master but it would be great
> to have python-3.11. We could add this as "python-next" and start seeing
> what packages can build with 3.11 before deciding if/when to switch
> over.

Actually, a year or so after, it would be great to have python-3.12! =F0=9F=
=98=85


> Tanguy: have you tried your patch recently at all? Can we base it off of
> 3.10 and have a working 3.11 from what you started?

=E2=80=A6 at all! =F0=9F=98=85
I=E2=80=99ll try to work on that tomorrow!

--=20
Tanguy




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 19 Feb 2024 21:28:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 19 16:28:26 2024
Received: from localhost ([127.0.0.1]:43656 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1rcBBa-0002ae-7E
	for submit <at> debbugs.gnu.org; Mon, 19 Feb 2024 16:28:26 -0500
Received: from mail-40133.protonmail.ch ([185.70.40.133]:11519)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <john.kehayias@HIDDEN>) id 1rcBBW-0002aP-P1
 for 60240 <at> debbugs.gnu.org; Mon, 19 Feb 2024 16:28:24 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail3; t=1708378075; x=1708637275;
 bh=JSRlcyw7svpKM1w1sYx/4kzZGL0D8eOKdXNHfPkdLhI=;
 h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date:
 Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector;
 b=YF+hIy8NYGiCyZWLZzuWpaREc/30rRMGxB7ayKn2UVkrYqK0jlUAJT57AGal7BgTa
 t4F5w33uAJO7wkdRUyQD43qhiZZtr1pHrfMZ/TWMzWhZPxQ8H10+wq6siy6w09QnFn
 lQX7lsJECsSgqMbYlmMPo3qQUnQcqhmIpPJ149UWRynIrHXX4S8MyUKbLmFtitQ3wv
 sXXLjWkmWKUNNZu6v6q6zNHsnnQGGoG4IM+gbgiP8fbbkXVhAKT51AJK9r9ysIsZv6
 VG+nGF3pLx/Kgd+xSCkHUuImJumQNIw4Ztptw65Zp1JwlI01yxx4mfxrGi0fItFRfV
 w9ZnQF/xm611Q==
Date: Mon, 19 Feb 2024 21:27:48 +0000
To: Tanguy LE CARROUR <tanguy@HIDDEN>
From: John Kehayias <john.kehayias@HIDDEN>
Subject: Re: [bug#60240] Python 3.10 in core-updates
Message-ID: <875xyk9mbc.fsf@HIDDEN>
Feedback-ID: 7805494:user:proton
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -1.9 (-)
X-Debbugs-Envelope-To: 60240
Cc: Sharlatan Hellseher <sharlatanus@HIDDEN>,
 Simon Tournier <zimon.toutoune@HIDDEN>,
 Munyoki Kilyungi <me@HIDDEN>, Lars-Dominik Braun <lars@HIDDEN>,
 60240 <at> debbugs.gnu.org, Andreas Enge <andreas@HIDDEN>,
 jgart <jgart@HIDDEN>, Marius Bakke <marius@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.9 (--)

Hello,

I was curious about python 3.11 and dug up this issue so I thought I
would check in (CC'ing python-team and original people on the thread).

A link for a refresher: <https://issues.guix.gnu.org/60240>

On Mon, Mar 13, 2023 at 12:35 AM, Andreas Enge wrote:

> Hello Tanguy,
>
> core-updates has Python 3.10.7, so you may wish to base your work on this
> branch and submit it once the branch has been merged.
>

Yes, we have and default to python-3.10 in master but it would be great
to have python-3.11. We could add this as "python-next" and start seeing
what packages can build with 3.11 before deciding if/when to switch
over.

Tanguy: have you tried your patch recently at all? Can we base it off of
3.10 and have a working 3.11 from what you started?

Thanks!
John

> There python@3 still inherits from python2@2. But since it overwrites all
> interesting fields, I think it would make sense to write a package defini=
tion
> "from scratch" by copying fields such as home-page etc.
>
> Good luck with packaging!
>
> Andreas





Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 12 Mar 2023 23:35:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 12 19:35:34 2023
Received: from localhost ([127.0.0.1]:33199 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pbVDy-0005nJ-3W
	for submit <at> debbugs.gnu.org; Sun, 12 Mar 2023 19:35:34 -0400
Received: from hera.aquilenet.fr ([185.233.100.1]:55722)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <andreas@HIDDEN>) id 1pbVDw-0005mw-55
 for 60240 <at> debbugs.gnu.org; Sun, 12 Mar 2023 19:35:32 -0400
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 6A5A814A4;
 Mon, 13 Mar 2023 00:35:25 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at hera.aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id KBXPyC5Y7M7z; Mon, 13 Mar 2023 00:35:25 +0100 (CET)
Received: from jurong (unknown [IPv6:2001:861:c4:f2f0::c64])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id CFDDD18B;
 Mon, 13 Mar 2023 00:35:24 +0100 (CET)
Date: Mon, 13 Mar 2023 00:35:23 +0100
From: Andreas Enge <andreas@HIDDEN>
To: 60240 <at> debbugs.gnu.org
Subject: Python 3.10 in core-updates
Message-ID: <ZA5hu77ADv4KJIw6@jurong>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 60240
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hello Tanguy,

core-updates has Python 3.10.7, so you may wish to base your work on this
branch and submit it once the branch has been merged.

There python@3 still inherits from python2@2. But since it overwrites all
interesting fields, I think it would make sense to write a package definition
"from scratch" by copying fields such as home-page etc.

Good luck with packaging!

Andreas





Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 9 Jan 2023 16:00:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 09 11:00:08 2023
Received: from localhost ([127.0.0.1]:37989 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pEuZE-0001pT-LL
	for submit <at> debbugs.gnu.org; Mon, 09 Jan 2023 11:00:08 -0500
Received: from relay9-d.mail.gandi.net ([217.70.183.199]:48911)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1pEuZB-0001nK-V8
 for 60240 <at> debbugs.gnu.org; Mon, 09 Jan 2023 11:00:07 -0500
Received: (Authenticated sender: tanguy@HIDDEN)
 by mail.gandi.net (Postfix) with ESMTPSA id 121A2FF812;
 Mon,  9 Jan 2023 15:59:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bioneland.org;
 s=gm1; t=1673279999;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=fw+MdwqBcdCfA3Z/0DBsAtCTX5DMvGiphBlKnj8CU3w=;
 b=pfT0nyMZ4BCfI88wftIPCRdlGh8ozxYVidGpaU787mFZm7nKMZaXDK0JpHmnDzgzid1cam
 YspyhR8RfHYlZymriSY/VSgODiw6wJS/ivQcWd9xsZc6mALxqkZS2NQzzl64yK5HzrK88D
 MgFbohtLGN3KJISRaQ8T/2tV8SOloPwcB+S6LRlj1+Y/WwJn6R54qnUvDjXgjgpgTc2KfV
 0bFqdRLvdY1uktjLtH7PDU9d6n9ri6W/U0Ln4nzZ71l6uNYr8z3vtyD8EcPsrNFytqBQib
 11Nk7NIMFu+e8GPMeazars/ixmMFagFXp0XB0eByrNUnyq1YN2Ytf740E6QdiQ==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
References: <20221221153230.27764-1-tanguy@HIDDEN>
 <877cxzh8ez.fsf@HIDDEN>
Subject: Re: [bug#60240] [PATCH] [WIP] gnu: Add python-3.11.
From: Tanguy LE CARROUR <tanguy@HIDDEN>
To: 60240 <at> debbugs.gnu.org, Simon Tournier <zimon.toutoune@HIDDEN>
In-Reply-To: <877cxzh8ez.fsf@HIDDEN>
Date: Mon, 09 Jan 2023 16:59:55 +0100
Message-ID: <167327999599.20007.5827702388142340079@localhost>
User-Agent: alot/0.10
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 60240
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Simon,

Believe it or not, I sent the patch before I went on vacation and=E2=80=A6 =
I kind
of forgot about it! =F0=9F=98=85


Quoting Simon Tournier (2023-01-06 18:36:36)
> On Wed, 21 Dec 2022 at 16:32, Tanguy Le Carrour <tanguy@HIDDEN> wr=
ote:
>=20
> > This leads me to my first question: wouldn't it be better to write a "f=
resh"
> > package definition not inheriting from `python-2` (deprecated since 202=
0) and
> > `python-3.9` (soon to be replaced)?
>=20
> Yes, it would be nice to have Python 3 as the package definition.  And
> maybe Python 2 as inheriting from Python 3. :-)

I'm not saying that we should do the same but=E2=80=A6 Debian is dropping
support for Python 2 in the next release [1].

[1]: https://wiki.debian.org/Python/FAQ#Python_2_support


> > Another question would be: should I first write a package definition
> > for `python-3.10` so we have it in the history and one could use the
> > time machine to install it?
>=20
> Well, it appears to me fine to jump from 3.9 to 3.11 dropping 3.10.

You know what they say, who can do more can do less! =F0=9F=98=81

Regards,

--=20
Tanguy




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at 60240 <at> debbugs.gnu.org:


Received: (at 60240) by debbugs.gnu.org; 6 Jan 2023 18:01:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 06 13:01:33 2023
Received: from localhost ([127.0.0.1]:55793 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pDr25-0006lw-Bi
	for submit <at> debbugs.gnu.org; Fri, 06 Jan 2023 13:01:33 -0500
Received: from mail-wm1-f48.google.com ([209.85.128.48]:39868)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <zimon.toutoune@HIDDEN>) id 1pDr21-0006l6-RO
 for 60240 <at> debbugs.gnu.org; Fri, 06 Jan 2023 13:01:30 -0500
Received: by mail-wm1-f48.google.com with SMTP id
 g25-20020a7bc4d9000000b003d97c8d4941so4093390wmk.4
 for <60240 <at> debbugs.gnu.org>; Fri, 06 Jan 2023 10:01:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:message-id:date:references:in-reply-to:subject:cc:to
 :from:from:to:cc:subject:date:message-id:reply-to;
 bh=rxvq0n7+kp5HGkvfkjtDR5aSU4d1Tjyp/GmyUeskEzU=;
 b=YcQFTllm/qoY3ijj45VVVDYRGUGuVq3w7MEc0vFX97/t12A7LjPwlr/kg1neuc9uDQ
 wt/n2zzllCsLmuYAM6N/Y+S3D8NvweeUmAYPTYySobkhD5yrlZB3D7fxQfb7uNZHRg/1
 xjk3/QeJchrOnErI8snQhbonBW4Wde4hefaw+hvhQGtl/ipLjOOEH3AkbbJNUf6ECnKk
 UhB4E1ahEa7hieJjEpvHk4f5ZfYRJ/Pzo1LnwErk+vMuCn1uwjAICdBionQrr5F3GBf8
 F4mw4943hu/aABUIoSBvJF+fXehmnxtknpuvGuNe50CNlTHjHNGUF1eArXCyqKR/hAbm
 QKzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=mime-version: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=rxvq0n7+kp5HGkvfkjtDR5aSU4d1Tjyp/GmyUeskEzU=;
 b=4IOc181Rjo8ZR1huJA7oLkVFeM789E0jbyVaRzj/TQFBumO/dP9Eeuj4OL0xqC5tS9
 q8A1GC83RkwAMlAwGEjAp8cSsflEdrM+oSs71CJMPTjnoet+0oNQyI4pfiCtTBl2/XkN
 lJevhZ6q+ktzLr2Pv5NrNQ0rLMGtHqPn5CTN/ITgKU+E0JEe6SgqY4wjj+X6rUcUVUwJ
 gUglDepWVam/ig7wbZ5cfPS2I8e5peaowugq9g1LZrcTxlFTghIxbAPhYlEVXO97rqk7
 LFsOIaIyHyV1Tv2jKxQwK15+7SWVm480HzgK/A4EtN5sYf5sWoh4e+MntychaqPG0WNy
 Tw8A==
X-Gm-Message-State: AFqh2koow30AoszuNCMjJRzsqQqCLZPV/3Ayqm8YV5drW3ZbDxjaiR2k
 Uk+EEGYa9qtUczlmsd7kqYzOi6fGGc8=
X-Google-Smtp-Source: AMrXdXtZi9RRTvGAsTiCBASW/LpUmHMI97GaflKC9Qpgz26EOfxwwoWfi21DidlLfJ3QrHpdXVZAww==
X-Received: by 2002:a05:600c:1c85:b0:3d3:52c1:ac13 with SMTP id
 k5-20020a05600c1c8500b003d352c1ac13mr10965361wms.4.1673028084092; 
 Fri, 06 Jan 2023 10:01:24 -0800 (PST)
Received: from pfiuh07 ([193.48.40.241]) by smtp.gmail.com with ESMTPSA id
 r7-20020a05600c458700b003c6b7f5567csm14337684wmo.0.2023.01.06.10.01.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 06 Jan 2023 10:01:23 -0800 (PST)
From: Simon Tournier <zimon.toutoune@HIDDEN>
To: Tanguy Le Carrour <tanguy@HIDDEN>, 60240 <at> debbugs.gnu.org
Subject: Re: [bug#60240] [PATCH] [WIP] gnu: Add python-3.11.
In-Reply-To: <20221221153230.27764-1-tanguy@HIDDEN>
References: <20221221153230.27764-1-tanguy@HIDDEN>
Date: Fri, 06 Jan 2023 18:36:36 +0100
Message-ID: <877cxzh8ez.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 60240
Cc: Tanguy Le Carrour <tanguy@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Tanguy,

On Wed, 21 Dec 2022 at 16:32, Tanguy Le Carrour <tanguy@HIDDEN> wrote:

> This leads me to my first question: wouldn't it be better to write a "fresh"
> package definition not inheriting from `python-2` (deprecated since 2020) and
> `python-3.9` (soon to be replaced)?

Yes, it would be nice to have Python 3 as the package definition.  And
maybe Python 2 as inheriting from Python 3. :-)

> Another question would be: should I first write a package definition
> for `python-3.10` so we have it in the history and one could use the
> time machine to install it?

Well, it appears to me fine to jump from 3.9 to 3.11 dropping 3.10.


Cheers,
simon




Information forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 21 Dec 2022 15:33:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 21 10:33:07 2022
Received: from localhost ([127.0.0.1]:52476 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p815d-0007Ne-RQ
	for submit <at> debbugs.gnu.org; Wed, 21 Dec 2022 10:33:07 -0500
Received: from lists.gnu.org ([209.51.188.17]:43956)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tanguy@HIDDEN>) id 1p815b-0007NY-8Z
 for submit <at> debbugs.gnu.org; Wed, 21 Dec 2022 10:33:04 -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 <tanguy@HIDDEN>)
 id 1p815a-0000D0-VC
 for guix-patches@HIDDEN; Wed, 21 Dec 2022 10:33:03 -0500
Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <tanguy@HIDDEN>)
 id 1p815W-00008T-Io
 for guix-patches@HIDDEN; Wed, 21 Dec 2022 10:33:02 -0500
Received: (Authenticated sender: tanguy@HIDDEN)
 by mail.gandi.net (Postfix) with ESMTPSA id BE8ADC0004;
 Wed, 21 Dec 2022 15:32:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bioneland.org;
 s=gm1; t=1671636771;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 content-transfer-encoding:content-transfer-encoding;
 bh=BWTOCCHejMPM7dMcEsvVtaKkdyZ10c1K4hm81HhWId4=;
 b=k3VHl7BNIMFats5yoW7YXFN9tuuy43tXF6P5iDjU82WFLsz8Z7el8N3oLz+nAEe9IlKRiU
 U7AsbTFjnk09OBRsWxYu4MJRUqqcuXRJNU2ZGyK1Uf2GFtuZR2c/6oXuQGLLxgDk6bukNC
 fwWJ9gKC9aoRRTVrue4dDBjN3Cajx3cdBYPUM3WHG7vHeIBDh4++7xYVqzLuT2rZrYE17Q
 fYtP62bNwjrbxJz1SGLH31n3bgclDQF4/+qpb9ZmHk/wZMosZYHjRhhDWOgoUMNM6fV9eO
 FGnahEoy8MdXx4afJACWgxNp1+KGbL0vfgscSJJeIDne9cFY1RNbkUI6ZPPATg==
From: Tanguy Le Carrour <tanguy@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH] [WIP] gnu: Add python-3.11.
Date: Wed, 21 Dec 2022 16:32:30 +0100
Message-Id: <20221221153230.27764-1-tanguy@HIDDEN>
X-Mailer: git-send-email 2.38.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=2001:4b98:dc4:8::226;
 envelope-from=tanguy@HIDDEN; helo=relay6-d.mail.gandi.net
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-Spam-Score: -1.6 (-)
X-Debbugs-Envelope-To: submit
Cc: Tanguy Le Carrour <tanguy@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.6 (--)

Hi Guix!

I'm currently working on packaging Python 3.11. It seems to produce a
working `python3`, but there's still a lot I have to work on!

I had to copy/paste 3 snippets (see `TODO`) just to modify a few lines in them.
The problem might come from the fact that this package definition
inherits from `python-3.9` that itself inherits from `python-2`.
Might also be because I'm still (really) bad at writing scheme/guile code! ^_^'

This leads me to my first question: wouldn't it be better to write a "fresh"
package definition not inheriting from `python-2` (deprecated since 2020) and
`python-3.9` (soon to be replaced)?

Another question would be: should I first write a package definition for
`python-3.10` so we have it in the history and one could use the time
machine to install it?

Any help or advice would be highly appreciated!

Best regards,
Tanguy

* gnu/packages/python.scm (python-3.11): New variable.
---
 .../patches/python-3.11-fix-tests.patch       | 418 ++++++++++++++++++
 gnu/packages/python.scm                       | 118 ++++-
 2 files changed, 535 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/python-3.11-fix-tests.patch

diff --git a/gnu/packages/patches/python-3.11-fix-tests.patch b/gnu/packages/patches/python-3.11-fix-tests.patch
new file mode 100644
index 0000000000..f160968a27
--- /dev/null
+++ b/gnu/packages/patches/python-3.11-fix-tests.patch
@@ -0,0 +1,418 @@
+From f0698133e7d6c353a3e6ae0fc62e57ba558a9bc0 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@HIDDEN>
+Date: Wed, 28 Oct 2020 22:55:05 -0400
+Subject: [PATCH] Skip problematic Python 3 tests in Guix.
+
+A subset of the hunks in this patch is tracked upstream at
+https://bugs.python.org/issue38845, which was contributed by Tanguy Le
+Carrour <tanguy@HIDDEN>.
+---
+ Lib/ctypes/test/test_callbacks.py         | 3 +++
+ Lib/ctypes/test/test_find.py              | 1 +
+ Lib/ctypes/test/test_libc.py              | 3 +++
+ Lib/distutils/tests/test_archive_util.py  | 2 ++
+ Lib/distutils/tests/test_sdist.py         | 1 +
+ Lib/test/_test_multiprocessing.py         | 2 ++
+ Lib/test/test_asyncio/test_base_events.py | 2 ++
+ Lib/test/test_generators.py               | 1 +
+ Lib/test/test_pathlib.py                  | 3 +--
+ Lib/test/test_pdb.py                      | 4 ++--
+ Lib/test/test_regrtest.py                 | 2 ++
+ Lib/test/test_resource.py                 | 1 +
+ Lib/test/test_shutil.py                   | 2 ++
+ Lib/test/test_signal.py                   | 4 ++++
+ Lib/test/test_socket.py                   | 8 ++++++++
+ Lib/test/test_spwd.py                     | 6 ++----
+ Lib/test/test_tarfile.py                  | 9 ++++++---
+ Lib/test/test_threading.py                | 3 +++
+ Lib/test/test_unicodedata.py              | 1 +
+ Tools/scripts/run_tests.py                | 2 +-
+ 20 files changed, 48 insertions(+), 12 deletions(-)
+
+diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py
+index d8e9c5a760..94fc5929c9 100644
+--- a/Lib/ctypes/test/test_callbacks.py
++++ b/Lib/ctypes/test/test_callbacks.py
+@@ -5,6 +5,7 @@ from test import support
+ from ctypes import *
+ from ctypes.test import need_symbol
+ import _ctypes_test
++import platform
+ 
+ class Callbacks(unittest.TestCase):
+     functype = CFUNCTYPE
+@@ -178,6 +179,8 @@ class SampleCallbacksTestCase(unittest.TestCase):
+ 
+         self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
+ 
++    @unittest.skipIf(platform.machine() in ['mips64'],
++                     "This test fails on this platform")
+     def test_issue_8959_a(self):
+         from ctypes.util import find_library
+         libc_path = find_library("c")
+diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py
+index 92ac1840ad..c8eb75dedd 100644
+--- a/Lib/ctypes/test/test_find.py
++++ b/Lib/ctypes/test/test_find.py
+@@ -116,6 +116,7 @@ class FindLibraryLinux(unittest.TestCase):
+         with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
+             self.assertNotEqual(find_library('c'), None)
+ 
++    @unittest.skipIf(True, "ldconfig is not used on Guix")
+     def test_find_library_with_ld(self):
+         with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
+              unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
+diff --git a/Lib/ctypes/test/test_libc.py b/Lib/ctypes/test/test_libc.py
+index 56285b5ff8..c088ab3db8 100644
+--- a/Lib/ctypes/test/test_libc.py
++++ b/Lib/ctypes/test/test_libc.py
+@@ -2,6 +2,7 @@ import unittest
+ 
+ from ctypes import *
+ import _ctypes_test
++import platform
+ 
+ lib = CDLL(_ctypes_test.__file__)
+ 
+@@ -17,6 +18,8 @@ class LibTest(unittest.TestCase):
+         import math
+         self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0))
+ 
++    @unittest.skipIf(platform.machine() in ['mips64'],
++                     "This test fails on this platform")
+     def test_qsort(self):
+         comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char))
+         lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc
+diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py
+index e9aad0e40f..8bbaa51ee5 100644
+--- a/Lib/distutils/tests/test_archive_util.py
++++ b/Lib/distutils/tests/test_archive_util.py
+@@ -333,6 +333,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
+         self.assertEqual(os.path.basename(res), 'archive.tar.xz')
+         self.assertEqual(self._tarinfo(res), self._created_files)
+ 
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+         # this works even if there's not gid/uid support
+@@ -362,6 +363,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
+ 
+     @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib")
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_tarfile_root_owner(self):
+         tmpdir =  self._create_files()
+         base_name = os.path.join(self.mkdtemp(), 'archive')
+diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
+index 23db126959..6e2329df7d 100644
+--- a/Lib/distutils/tests/test_sdist.py
++++ b/Lib/distutils/tests/test_sdist.py
+@@ -443,6 +443,7 @@ class SDistTestCase(BasePyPIRCCommandTestCase):
+                      "The tar command is not found")
+     @unittest.skipIf(find_executable('gzip') is None,
+                      "The gzip command is not found")
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_distribution_owner_group(self):
+         # now building a sdist
+         dist, cmd = self.get_cmd()
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+index e47905c863..31a5a9c308 100644
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -1577,6 +1577,7 @@ class _TestCondition(BaseTestCase):
+         if pid is not None:
+             os.kill(pid, signal.SIGINT)
+ 
++    @unittest.skipIf(True, "This fails for unknown reasons on Guix")
+     def test_wait_result(self):
+         if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
+             pid = os.getpid()
+@@ -3905,6 +3906,7 @@ class _TestSharedMemory(BaseTestCase):
+         sms.close()
+ 
+     @unittest.skipIf(os.name != "posix", "not feasible in non-posix platforms")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_shared_memory_SharedMemoryServer_ignores_sigint(self):
+         # bpo-36368: protect SharedMemoryManager server process from
+         # KeyboardInterrupt signals.
+diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
+index 533d5cc7f5..c4f860cc3b 100644
+--- a/Lib/test/test_asyncio/test_base_events.py
++++ b/Lib/test/test_asyncio/test_base_events.py
+@@ -1341,6 +1341,8 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
+         self._test_create_connection_ip_addr(m_socket, False)
+ 
+     @patch_socket
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_create_connection_service_name(self, m_socket):
+         m_socket.getaddrinfo = socket.getaddrinfo
+         sock = m_socket.socket.return_value
+diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
+index 3bf1522808..04bac8a7db 100644
+--- a/Lib/test/test_generators.py
++++ b/Lib/test/test_generators.py
+@@ -33,6 +33,7 @@ class SignalAndYieldFromTest(unittest.TestCase):
+         else:
+             return "FAILED"
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
+     def test_raise_and_yield_from(self):
+         gen = self.generator1()
+         gen.send(None)
+diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
+index 3da35710b9..5404f9193d 100644
+--- a/Lib/test/test_pathlib.py
++++ b/Lib/test/test_pathlib.py
+@@ -2408,10 +2408,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
+         self.assertEqual(given, expect)
+         self.assertEqual(set(p.rglob("FILEd*")), set())
+ 
+-    @unittest.skipUnless(hasattr(pwd, 'getpwall'),
+-                         'pwd module does not expose getpwall()')
+-    @unittest.skipIf(sys.platform == "vxworks",
+-                     "no home directory on VxWorks")
++    @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
+     def test_expanduser(self):
+         P = self.cls
+         support.import_module('pwd')
+diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
+index 8016f81e5a..10190486b4 100644
+--- a/Lib/test/test_pdb.py
++++ b/Lib/test/test_pdb.py
+@@ -1219,11 +1219,11 @@ def test_pdb_issue_20766():
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
+     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+     (Pdb) continue
+-    pdb 1: <built-in function default_int_handler>
++    pdb 1: Handlers.SIG_IGN
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
+     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+     (Pdb) continue
+-    pdb 2: <built-in function default_int_handler>
++    pdb 2: Handlers.SIG_IGN
+     """
+ 
+ 
+diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py
+index a77638b10a..2069b349a8 100644
+--- a/Lib/test/test_regrtest.py
++++ b/Lib/test/test_regrtest.py
+@@ -811,6 +811,7 @@ class ArgsTestCase(BaseTestCase):
+         output = self.run_tests('--fromfile', filename)
+         self.check_executed_tests(output, tests)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_interrupted(self):
+         code = TEST_INTERRUPTED
+         test = self.create_test('sigint', code=code)
+@@ -828,6 +829,7 @@ class ArgsTestCase(BaseTestCase):
+                  % (self.TESTNAME_REGEX, len(tests)))
+         self.check_line(output, regex)
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_slowest_interrupted(self):
+         # Issue #25373: test --slowest with an interrupted test
+         code = TEST_INTERRUPTED
+diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
+index e5ece5284c..5299e54507 100644
+--- a/Lib/test/test_resource.py
++++ b/Lib/test/test_resource.py
+@@ -148,6 +148,7 @@ class ResourceTest(unittest.TestCase):
+ 
+     @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
+     @support.requires_linux_version(2, 6, 36)
++    @unittest.skipIf(True, "Bug: the PermissionError is not raised")
+     def test_prlimit(self):
+         self.assertRaises(TypeError, resource.prlimit)
+         self.assertRaises(ProcessLookupError, resource.prlimit,
+diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
+index e19af64be0..1b893df6fa 100644
+--- a/Lib/test/test_shutil.py
++++ b/Lib/test/test_shutil.py
+@@ -1427,6 +1427,7 @@ class TestArchives(BaseTest, unittest.TestCase):
+         base_name = os.path.join(tmpdir, 'archive')
+         self.assertRaises(ValueError, make_archive, base_name, 'xxx')
+ 
++    @unittest.skipIf(True, "The Guix build container has no root user")
+     @support.requires_zlib()
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+@@ -1455,6 +1456,7 @@ class TestArchives(BaseTest, unittest.TestCase):
+         self.assertTrue(os.path.isfile(res))
+ 
+ 
++    @unittest.skipIf(True, "The Guix build container has no root user")
+     @support.requires_zlib()
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
+     def test_tarfile_root_owner(self):
+diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
+index 45553a6a42..55623f01a3 100644
+--- a/Lib/test/test_signal.py
++++ b/Lib/test/test_signal.py
+@@ -78,7 +78,8 @@ class PosixTests(unittest.TestCase):
+         self.assertLess(len(s), signal.NSIG)
+ 
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
+     @support.requires_subprocess()
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers exit via SIGINT."""
+         process = subprocess.run(
+@@ -128,7 +129,8 @@ class WindowsSignalTests(unittest.TestCase):
+             signal.signal(7, handler)
+ 
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
+     @support.requires_subprocess()
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers an exit using STATUS_CONTROL_C_EXIT."""
+         # We don't test via os.kill(os.getpid(), signal.CTRL_C_EVENT) here
+@@ -1245,6 +1247,7 @@ class StressTest(unittest.TestCase):
+ 
+ class RaiseSignalTest(unittest.TestCase):
+ 
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_sigint(self):
+         with self.assertRaises(KeyboardInterrupt):
+             signal.raise_signal(signal.SIGINT)
+@@ -1275,6 +1278,7 @@ class RaiseSignalTest(unittest.TestCase):
+ 
+ class PidfdSignalTest(unittest.TestCase):
+ 
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     @unittest.skipUnless(
+         hasattr(signal, "pidfd_send_signal"),
+         "pidfd support not built in",
+diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
+index aefba4f397..6c89f558d5 100755
+--- a/Lib/test/test_socket.py
++++ b/Lib/test/test_socket.py
+@@ -1009,6 +1009,8 @@ class GeneralModuleTests(unittest.TestCase):
+         if not fqhn in all_host_names:
+             self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
+ 
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_host_resolution(self):
+         for addr in [socket_helper.HOSTv4, '10.0.0.1', '255.255.255.255']:
+             self.assertEqual(socket.gethostbyname(addr), addr)
+@@ -1140,6 +1142,8 @@ class GeneralModuleTests(unittest.TestCase):
+             self.assertWarns(DeprecationWarning, socket.ntohs, k)
+             self.assertWarns(DeprecationWarning, socket.htons, k)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/services"),
++                         "getservbyname uses /etc/services, which is not in the chroot")
+     def testGetServBy(self):
+         eq = self.assertEqual
+         # Find one service that exists, then check all the related interfaces.
+@@ -1489,6 +1493,8 @@ class GeneralModuleTests(unittest.TestCase):
+             raise
+         self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     def testGetaddrinfo(self):
+         try:
+             socket.getaddrinfo('localhost', 80)
+@@ -1571,6 +1577,8 @@ class GeneralModuleTests(unittest.TestCase):
+         # only IP addresses are allowed
+         self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)
+ 
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     @unittest.skipUnless(support.is_resource_enabled('network'),
+                          'network is not enabled')
+     def test_idna(self):
+diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py
+index 07793c84c8..fec672bcbe 100644
+--- a/Lib/test/test_spwd.py
++++ b/Lib/test/test_spwd.py
+@@ -5,8 +5,7 @@ from test import support
+ spwd = support.import_module('spwd')
+ 
+ 
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0,
+-                     'root privileges required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdRoot(unittest.TestCase):
+ 
+     def test_getspall(self):
+@@ -56,8 +55,7 @@ class TestSpwdRoot(unittest.TestCase):
+             self.assertRaises(TypeError, spwd.getspnam, bytes_name)
+ 
+ 
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() != 0,
+-                     'non-root user required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdNonRoot(unittest.TestCase):
+ 
+     def test_getspnam_exception(self):
+diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
+index 29cde91bf7..8d0f20e8bf 100644
+--- a/Lib/test/test_tarfile.py
++++ b/Lib/test/test_tarfile.py
+@@ -2607,9 +2607,12 @@ def root_is_uid_gid_0():
+         import pwd, grp
+     except ImportError:
+         return False
+-    if pwd.getpwuid(0)[0] != 'root':
+-        return False
+-    if grp.getgrgid(0)[0] != 'root':
++    try:
++        if pwd.getpwuid(0)[0] != 'root':
++            return False
++        if grp.getgrgid(0)[0] != 'root':
++            return False
++    except KeyError:
+         return False
+     return True
+ 
+diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
+index c21cdf8eb7..6c9d575032 100644
+--- a/Lib/test/test_threading.py
++++ b/Lib/test/test_threading.py
+@@ -1398,5 +1398,6 @@ class MiscTestCase(unittest.TestCase):
+             signal.signal(signum, handler) 
+ 
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_subthread(self):
+         # Calling start_new_thread with a function that executes interrupt_main
+         # should raise KeyboardInterrupt upon completion.
+@@ -1409,6 +1410,8 @@ class InterruptMainTests(unittest.TestCase):
+             t.join()
+         t.join()
+ 
++
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_mainthread(self):
+         # Make sure that if interrupt_main is called in main thread that
+         # KeyboardInterrupt is raised instantly.
+diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py
+index b552d2bd17..28b1144e15 100644
+--- a/Lib/test/test_unicodedata.py
++++ b/Lib/test/test_unicodedata.py
+@@ -309,6 +309,7 @@ class UnicodeMiscTest(UnicodeDatabaseTest):
+                 self.assertEqual(len(lines), 1,
+                                  r"\u%.4x should not be a linebreak" % i)
+ 
++@requires_resource('network')
+ class NormalizationTest(unittest.TestCase):
+     @staticmethod
+     def check_version(testfile):
+diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py
+index bcfa5e943b..1f2484971b 100644
+--- a/Tools/scripts/run_tests.py
++++ b/Tools/scripts/run_tests.py
+@@ -41,7 +41,7 @@ def main(regrtest_args):
+         else:
+             args.extend(['-j', '0'])  # Use all CPU cores
+     if not any(is_resource_use_flag(arg) for arg in regrtest_args):
+-        args.extend(['-u', 'all,-largefile,-audio,-gui'])
++        args.extend(['-u', 'all,-largefile,-audio,-gui,-network'])
+
+     if cross_compile and hostrunner:
+         # If HOSTRUNNER is set and -p/--python option is not given, then
+-- 
+2.29.2
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0c164d7991..4acdbb9feb 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -55,7 +55,7 @@
 ;;; Copyright © 2018, 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@HIDDEN>
 ;;; Copyright © 2018 Luther Thompson <lutheroto@HIDDEN>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@HIDDEN>
-;;; Copyright © 2019 Tanguy Le Carrour <tanguy@HIDDEN>
+;;; Copyright © 2019, 2022 Tanguy Le Carrour <tanguy@HIDDEN>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@HIDDEN>
 ;;; Copyright © 2020, 2021 Greg Hogan <code@HIDDEN>
 ;;; Copyright © 2022 Philip McGrath <philip@HIDDEN>
@@ -574,6 +574,122 @@ (define-public python-3.9
             (variable "PYTHONTZPATH")
             (files (list "share/zoneinfo")))))))
 
+(define-public python-3.11
+  (package
+    (inherit python-3.9)
+    (name "python")
+    (version "3.11.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.python.org/ftp/python/" version
+                                  "/Python-" version ".tar.xz"))
+              (patches (search-patches
+                        "python-3-deterministic-build-info.patch"
+                        "python-3.11-fix-tests.patch"
+                        "python-3-hurd-configure.patch"
+                        "python-3-search-paths.patch"))
+              (sha256
+               (base32
+                "13xmvw0pjqr96mr69xxpjkiybwzb95cr14n02v5mdzfgya9931w5"))
+              (modules '((guix build utils)))
+              ;; TODO: how to modify only the first `for-each delete-file`?
+              (snippet '(begin
+                          ;; Delete the bundled copy of libexpat.
+                          (delete-file-recursively "Modules/expat")
+                          (substitute* "Modules/Setup"
+                            ;; Link Expat instead of embedding the bundled one.
+                            (("^#pyexpat.*")
+                             "pyexpat pyexpat.c -lexpat\n"))
+                          ;; Suboptimal to delete failing tests here, but if we delete them in
+                          ;; the arguments then we need to make sure to strip out that phase
+                          ;; when it gets inherited by python and python-minimal.
+                          (for-each delete-file
+                                    '("Lib/test/leakers/test_ctypes.py" ;fails on mips64el
+                                      "Lib/test/test_pdb.py"
+                                      "Lib/test/test_shutil.py"
+                                      "Lib/test/test_socket.py"
+                                      "Lib/test/test_subprocess.py"
+                                      "Lib/test/test_tools/test_freeze.py"))
+                          ;; Delete windows binaries
+                          (for-each delete-file
+                                    (find-files "Lib/distutils/command"
+                                                "\\.exe$"))))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-3.9)
+       ;; TODO: how to add `--without-static-libpython` without adding everything else?
+       ((#:configure-flags _)
+        `(list "--enable-shared" ;allow embedding
+               "--with-system-expat" ;for XML support
+               "--with-system-ffi" ;build ctypes
+               "--with-ensurepip=install" ;install pip and setuptools
+               "--with-computed-gotos" ;main interpreter loop optimization
+               "--without-static-libpython"
+               "--enable-unicode=ucs4"
+
+               ;; FIXME: These flags makes Python significantly faster, but
+               ;; leads to non-reproducible binaries.
+               ;; "--with-lto"               ;increase size by 20MB, but 15% speedup
+               ;; "--enable-optimizations"
+               
+               ;; Prevent the installed _sysconfigdata.py from retaining a reference
+               ;; to coreutils.
+               "INSTALL=install -c"
+               "MKDIR_P=mkdir -p"
+
+               ;; Disable runtime check failing if cross-compiling, see:
+               ;; https://lists.yoctoproject.org/pipermail/poky/2013-June/008997.html
+               ,@(if (%current-target-system)
+                     '("ac_cv_buggy_getaddrinfo=no" "ac_cv_file__dev_ptmx=no"
+                       "ac_cv_file__dev_ptc=no")
+                     '())
+               ;; -fno-semantic-interposition reinstates some optimizations by gcc
+               ;; leading to around 15% speedup. This is the default starting from
+               ;; python 3.10.
+               "CFLAGS=-fno-semantic-interposition"
+               (string-append "LDFLAGS=-Wl,-rpath="
+                              (assoc-ref %outputs "out") "/lib"
+                              " -fno-semantic-interposition")))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'check
+             (lambda _
+               (invoke "make" "test")))
+           ;; TODO: fix the original phase instead instead of replacing it.
+           ;; `match-error "match" "no matching pattern" ("python3.11" "python3.9")`
+           (replace 'remove-tests
+             ;; Remove 25 MiB of unneeded unit tests.  Keep test_support.*
+             ;; because these files are used by some libraries out there.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (let ((testdir (string-append out "/lib/python3.11/test")))
+                   (with-directory-excursion testdir
+                     (for-each delete-file-recursively
+                               (scandir testdir
+                                        (match-lambda
+                                          ((or "." "..")
+                                           #f)
+                                          ("support" #f)
+                                          (file (not (string-prefix?
+                                                      "test_support." file))))))
+                     (call-with-output-file "__init__.py"
+                       (const #t))))
+                 (let ((libdir (string-append out "/lib/python3.11")))
+                   (for-each (lambda (directory)
+                               (let ((dir (string-append libdir "/" directory)))
+                                 (when (file-exists? dir)
+                                   (delete-file-recursively dir))))
+                             '("email/test" "ctypes/test"
+                               "unittest/test"
+                               "tkinter/test"
+                               "sqlite3/test"
+                               "bsddb/test"
+                               "lib-tk/test"
+                               "json/tests"
+                               "distutils/tests"))))))))))))
+
+;; Next version.
+(define-public python-next python-3.11)
+
 ;; Current 3.x version.
 (define-public python-3 python-3.9)
 
-- 
2.38.1





Acknowledgement sent to Tanguy Le Carrour <tanguy@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#60240; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 2 Mar 2024 10:15:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.