Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 802210 - sys-apps/portage: builds dev-libs/libxml2 before sys-libs/libxcrypt during migration (error: crypt.h: No such file or directory)
Summary: sys-apps/portage: builds dev-libs/libxml2 before sys-libs/libxcrypt during mi...
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Dependencies (show other bugs)
Hardware: All Linux
: High major with 1 vote (vote)
Assignee: Portage team
URL:
Whiteboard: Needs Python headers (and is in {R,}D...
Keywords:
: 802282 804142 (view as bug list)
Depends on:
Blocks: libxcrypt-migration
  Show dependency tree
 
Reported: 2021-07-15 01:06 UTC by Sam James
Modified: 2021-10-14 04:38 UTC (History)
14 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (file_802210.txt,94.46 KB, text/plain)
2021-07-15 01:06 UTC, Sam James
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sam James archtester gentoo-dev Security 2021-07-15 01:06:01 UTC
Created attachment 723928 [details]
build.log

Reported by kurly.

----
libtool: compile:  x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I/var/tmp/portage/dev-libs/libxml2-2.9.12-r4/work/libxml2-2.9.12/python -I/var/tmp/portage/dev-libs/libxml2-2.9.12-r4/work/libxml2-2.9.12-abi_x86_64.amd64 -I/var/tmp/portage/dev-libs/libxml2-2.9.12-r4/work/libxml2-2.9.12-abi_x86_64.amd64/include -I/var/tmp/portage/dev-libs/libxml2-2.9.12-r4/work/libxml2-2.9.12/include -I/usr/include/python3.9 -O2 -pipe -march=native -c /var/tmp/portage/dev-libs/libxml2-2.9.12-r4/work/libxml2-2.9.12/python/libxml.c  -fPIC -DPIC -o .libs/libxml.o
In file included from /var/tmp/portage/dev-libs/libxml2-2.9.12-r4/work/libxml2-2.9.12/python/libxml2-py.c:4:
/usr/include/python3.9/Python.h:44:10: fatal error: crypt.h: No such file or directory
   44 | #include <crypt.h>
      |          ^~~~~~~~~
compilation terminated.
Comment 1 Sam James archtester gentoo-dev Security 2021-07-15 01:06:41 UTC
$ sudo mergeworld -j

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U  ] sys-libs/glibc-2.33-r2:2.2::gentoo [2.33-r1:2.2::gentoo] USE="multiarch (multilib) ssp (static-libs) -audit -caps (-cet) -compile-locales (-crypt*) -custom-cflags -doc -gd -headers-only -multilib-bootstrap -nscd -profile (-selinux) -static-pie -suid -systemtap -test (-vanilla)" 0 KiB
[ebuild     U  ] dev-libs/libxml2-2.9.12-r4:2::gentoo [2.9.12-r3:2::gentoo] USE="icu ipv6 python readline -debug -examples -lzma -static-libs -test -verify-sig" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python3_9 -python3_8" 7 KiB
[ebuild  N     ] sys-libs/libxcrypt-4.4.23-r1:0/1::gentoo  USE="(compat) (split-usr) static-libs (system) -test" ABI_X86="(64) -32 (-x32)" 616 KiB
[ebuild  r  U  ] virtual/libcrypt-2:0/2::gentoo [1-r1:0/1::gentoo] USE="static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild  rR    ] dev-lang/perl-5.34.0:0/5.34::gentoo  USE="gdbm -berkdb -debug -doc -ithreads -minimal" 0 KiB
[ebuild  rR    ] sys-libs/pam-1.5.1::gentoo  USE="filecaps (split-usr) -audit -berkdb -debug -nis (-selinux)" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild  rR    ] sys-apps/busybox-1.33.1::gentoo  USE="ipv6 static -debug -livecd -make-symlinks -math -mdev -pam -savedconfig (-selinux) -sep-usr -syslog -systemd" 0 KiB
[ebuild  rR    ] dev-lang/ruby-2.6.8:2.6::gentoo  USE="gdbm ipv6 rdoc ssl -berkdb -debug -doc -examples -jemalloc -jit -rubytests -socks5 -static-libs -systemtap -tk -xemacs" 0 KiB
[ebuild  rR    ] sys-apps/util-linux-2.37::gentoo  USE="cramfs logger ncurses nls pam readline (split-usr) suid udev (unicode) -audit -build -caps -cryptsetup -fdformat -hardlink -kill -magic -python (-selinux) -slang -static-libs -su -systemd -test -tty-helpers" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python3_9 -python3_8" 0 KiB
[ebuild  rR    ] sys-apps/shadow-4.8.1-r3::gentoo  USE="acl nls pam (split-usr) su xattr -audit -bcrypt -cracklib (-selinux) -skey" 1,574 KiB
[ebuild  rR    ] sys-auth/passwdqc-2.0.2-r1::gentoo  0 KiB
[ebuild  rR    ] app-admin/sudo-1.9.7_p1-r1::gentoo  USE="nls offensive pam secure-path sendmail ssl -gcrypt -ldap -sasl (-selinux) -skey -sssd" 0 KiB
[ebuild  rR    ] app-misc/screen-4.8.0-r3::gentoo  USE="pam -debug -multiuser -nethack (-selinux)" 0 KiB
[ebuild  rR    ] net-misc/whois-5.5.10-r1::gentoo  USE="iconv nls -idn -xcrypt" 0 KiB
[ebuild  rR    ] sys-process/fcron-3.2.1-r5::gentoo  USE="mta pam readline system-crontab -audit -debug (-selinux)" L10N="-fr" 0 KiB
[ebuild  rR    ] x11-misc/xscreensaver-6.01-r1::gentoo  USE="X elogind gdk-pixbuf gtk jpeg locking offensive opengl pam perl -fonts -gdm -new-login (-selinux) -suid -systemd -xinerama" 0 KiB
[ebuild  rR    ] dev-lang/python-3.9.6:3.9::gentoo  USE="bluetooth gdbm ipv6 ncurses readline sqlite ssl xml -build -examples -hardened -test -tk -verify-sig -wininst" 0 KiB
[ebuild  rR    ] dev-lang/python-3.10.0_beta4:3.10::gentoo  USE="bluetooth gdbm ipv6 ncurses readline sqlite ssl xml -build -examples -hardened -test -tk -verify-sig -wininst" 0 KiB
[ebuild  rR    ] net-misc/openssh-8.6_p1-r2::gentoo  USE="X pam pie scp ssl -X509 -audit -bindist (-debug) -hpn -kerberos -ldns -libedit -livecd -sctp -security-key (-selinux) -static -test -xmss" 0 KiB

Total: 19 packages (3 upgrades, 1 new, 15 reinstalls), Size of downloads: 2,196 KiB

----
(command is equivalent to emerge -avuDU --verbose-slot-rebuilds=n)
Comment 2 Joonas Niilola gentoo-dev 2021-07-15 04:34:39 UTC
Hit this as well,

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U  ] sys-libs/glibc-2.33-r2:2.2::gentoo [2.33-r1:2.2::gentoo] USE="multiarch (multilib) ssp (static-libs) -audit -caps (-cet) -compile-locales (-crypt*) -custom-cflags -doc -gd -headers-only -multilib-bootstrap -nscd -profile (-selinux) -static-pie -suid -systemtap -test (-vanilla)" 0 KiB
[ebuild     U  ] dev-libs/libxml2-2.9.12-r4:2::gentoo [2.9.12-r3:2::gentoo] USE="icu ipv6 python readline -debug -examples -lzma -static-libs -test -verify-sig" ABI_X86="32 (64) (-x32)" PYTHON_TARGETS="python3_8 python3_9" 7 KiB
[ebuild  N     ] sys-libs/libxcrypt-4.4.23-r1:0/1::gentoo  USE="(compat) (split-usr) static-libs (system) -test" ABI_X86="32 (64) (-x32)" 616 KiB
[ebuild  r  U  ] virtual/libcrypt-2:0/2::gentoo [1-r1:0/1::gentoo] USE="static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  rR    ] sys-libs/pam-1.5.1::gentoo  USE="(split-usr) -audit -berkdb -debug -filecaps -nis (-selinux)" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  rR    ] sys-apps/busybox-1.33.1::gentoo  USE="ipv6 static -debug -livecd -make-symlinks -math -mdev -pam -savedconfig (-selinux) -sep-usr -syslog -systemd" 0 KiB
[ebuild  rR    ] dev-lang/perl-5.34.0:0/5.34::gentoo  USE="gdbm ithreads -berkdb -debug -doc -minimal" 0 KiB
[ebuild  rR    ] dev-lang/python-2.7.18_p11:2.7::gentoo  USE="gdbm ipv6 ncurses readline sqlite ssl (threads) (wide-unicode) xml (-berkdb) -bluetooth -build -examples -hardened -tk -verify-sig -wininst" 0 KiB
[ebuild  rR    ] sys-apps/util-linux-2.37::gentoo  USE="cramfs logger ncurses pam readline (split-usr) suid (unicode) -audit -build -caps -cryptsetup -fdformat -hardlink -kill -magic -nls -python (-selinux) -slang -static-libs -su -systemd -test -tty-helpers -udev" ABI_X86="32 (64) (-x32)" PYTHON_TARGETS="python3_8 python3_9" 0 KiB
[ebuild  rR    ] sys-apps/shadow-4.8.1-r3::gentoo  USE="acl pam (split-usr) su xattr -audit -bcrypt -cracklib -nls (-selinux) -skey" 0 KiB
[ebuild  rR    ] sys-auth/passwdqc-2.0.2-r1::gentoo  0 KiB
[ebuild  rR    ] dev-lang/python-3.9.6:3.9::gentoo  USE="gdbm ipv6 ncurses readline sqlite ssl xml -bluetooth -build -examples -hardened -test -tk -verify-sig -wininst" 0 KiB
[ebuild  rR    ] dev-lang/python-3.8.11:3.8::gentoo  USE="gdbm ipv6 ncurses readline sqlite ssl xml -bluetooth -build -examples -hardened -test -tk -verify-sig -wininst" 0 KiB
[ebuild  rR    ] dev-lang/python-3.10.0_beta4:3.10::gentoo  USE="gdbm ipv6 ncurses readline sqlite ssl xml -bluetooth -build -examples -hardened -test -tk -verify-sig -wininst" 0 KiB
[ebuild  rR    ] net-misc/openssh-8.6_p1-r2::gentoo  USE="pam pie scp ssl -X -X509 -audit -bindist (-debug) -hpn -kerberos -ldns -libedit -livecd -sctp -security-key (-selinux) -static -test -xmss" 0 KiB

Total: 15 packages (3 upgrades, 1 new, 11 reinstalls), Size of downloads: 623 KiB

The following packages are causing rebuilds:

  (virtual/libcrypt-2:0/2::gentoo, ebuild scheduled for merge) causes rebuilds for:
    (sys-auth/passwdqc-2.0.2-r1:0/0::gentoo, ebuild scheduled for merge)
    (dev-lang/python-3.8.11:3.8/3.8::gentoo, ebuild scheduled for merge)
    (dev-lang/python-2.7.18_p11:2.7/2.7::gentoo, ebuild scheduled for merge)
    (sys-apps/util-linux-2.37:0/0::gentoo, ebuild scheduled for merge)
    (dev-lang/perl-5.34.0:0/5.34::gentoo, ebuild scheduled for merge)
    (dev-lang/python-3.9.6:3.9/3.9::gentoo, ebuild scheduled for merge)
    (sys-apps/busybox-1.33.1:0/0::gentoo, ebuild scheduled for merge)
    (sys-apps/shadow-4.8.1-r3:0/0::gentoo, ebuild scheduled for merge)
    (sys-libs/pam-1.5.1:0/0::gentoo, ebuild scheduled for merge)
    (dev-lang/python-3.10.0_beta4:3.10/3.10::gentoo, ebuild scheduled for merge)
    (net-misc/openssh-8.6_p1-r2:0/0::gentoo, ebuild scheduled for merge)

!!! The following binary packages have been ignored due to non matching USE:

    =sys-devel/gcc-config-2.4 -native-symlinks
    =sys-devel/binutils-config-5.4 -native-symlinks

NOTE: The --binpkg-respect-use=n option will prevent emerge
      from ignoring these binary packages if possible.
      Using --binpkg-respect-use=y will silence this warning.

>>> Verifying ebuild manifests
>>> Running pre-merge checks for sys-libs/glibc-2.33-r2
 * Checking general environment sanity.
make -j16 -l10 glibc-test CC=x86_64-pc-linux-gnu-gcc 
x86_64-pc-linux-gnu-gcc -march=native -O2 -pipe   -Wl,-O1 -Wl,--as-needed  glibc-test.c   -o glibc-test
 * Checking that IA32 emulation is enabled in the running kernel ...                         [ ok ]
 * Checking gcc for __thread support ...                                                     [ ok ]
 * Checking running kernel version (5.12.0-pf6 >= 3.2.0) ...                                 [ ok ]
 * Checking linux-headers version (5.13.0 >= 3.2.0) ...                                      [ ok ]
>>> Running pre-merge checks for dev-lang/python-3.9.6
>>> Running pre-merge checks for dev-lang/python-3.10.0_beta4
>>> Running pre-merge checks for net-misc/openssh-8.6_p1-r2
>>> Emerging (1 of 15) sys-libs/glibc-2.33-r2::gentoo
>>> Installing (1 of 15) sys-libs/glibc-2.33-r2::gentoo
>>> Emerging (2 of 15) dev-libs/libxml2-2.9.12-r4::gentoo
>>> Failed to emerge dev-libs/libxml2-2.9.12-r4, Log file:
>>>  '/var/tmp/portage/dev-libs/libxml2-2.9.12-r4/temp/build.log'
>>> Jobs: 1 of 15 complete, 1 failed                Load avg: 2.93, 2.81, 1.27
Comment 3 Ionen Wolkens gentoo-dev 2021-07-15 13:08:31 UTC
*** Bug 802282 has been marked as a duplicate of this bug. ***
Comment 4 Ionen Wolkens gentoo-dev 2021-07-15 13:24:44 UTC
For anyone running into this, simple workaround is to "--exclude libxml2" and upgrade it only after the @world update was completed.
Comment 5 Larry the Git Cow gentoo-dev 2021-07-15 17:46:01 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=847d67c8c8e02a46862ed802eaec1599134a9cfc

commit 847d67c8c8e02a46862ed802eaec1599134a9cfc
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-07-15 17:43:58 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-07-15 17:45:15 +0000

    dev-libs/libxml2: unkeyword 2.9.12-r4
    
    Ebuild is fine but this will ease upgrades by not
    giving Portage a reason to schedule libxml2 (erroneously)
    before libxcrypt.
    
    Bug: https://bugs.gentoo.org/802210
    Bug: https://bugs.gentoo.org/798942
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-libs/libxml2/libxml2-2.9.12-r4.ebuild | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
Comment 6 Larry the Git Cow gentoo-dev 2021-07-22 23:41:19 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/data/gentoo-news.git/commit/?id=b941f15ae7ad7e46c89e1ac42495e5d95893cc5a

commit b941f15ae7ad7e46c89e1ac42495e5d95893cc5a
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-07-20 17:44:48 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-07-22 23:41:10 +0000

    2021-06-30-libxcrypt-migration: mention possible build order problems
    
    Bug: https://bugs.gentoo.org/802210
    Signed-off-by: Sam James <sam@gentoo.org>

 .../2021-06-30-libxcrypt-migration.en.txt                     | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
Comment 7 Mike Gilbert gentoo-dev 2021-07-26 19:45:05 UTC
*** Bug 804142 has been marked as a duplicate of this bug. ***
Comment 8 Larry the Git Cow gentoo-dev 2021-07-27 20:27:57 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4f9777574be1a56128e802da06df7458165c2f47

commit 4f9777574be1a56128e802da06df7458165c2f47
Author:     Andreas K. Hüttel <dilfridge@gentoo.org>
AuthorDate: 2021-07-27 20:26:23 +0000
Commit:     Andreas K. Hüttel <dilfridge@gentoo.org>
CommitDate: 2021-07-27 20:27:45 +0000

    sys-libs/glibc: Add workaround for the missing crypt.h problem
    
    Bug: https://bugs.gentoo.org/802210
    Package-Manager: Portage-3.0.20, Repoman-3.0.3
    Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>

 sys-libs/glibc/glibc-2.33-r5.ebuild | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
Comment 9 Arfrever Frehtes Taifersar Arahesis 2021-07-28 21:31:21 UTC
In CPython 3.11, Python.h header will no longer include crypt.h header:
https://bugs.python.org/issue44751
https://github.com/python/cpython/pull/27394
https://github.com/python/cpython/commit/196998e220d6ca030e5a1c8ad63fcaed8e049a98
Comment 11 Kobboi 2021-08-02 22:27:22 UTC
Well when upgrading from stable stage3, I am hitting, in libxml2:

/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lcrypt

Is libxml2 missing a dependency on virtual/libcrypt?
Comment 12 Kobboi 2021-08-02 23:14:42 UTC
Reproduction hints:

STAGE_TYPE:=stage3-amd64-systemd
STAGE_DATE:=20210801T170533Z
STAGE_FILE:=$(STAGE_TYPE)-$(STAGE_DATE).tar.xz
STAGE_URL:=https://distfiles.gentoo.org/releases/amd64/autobuilds/$(STAGE_DATE)/$(STAGE_FILE)

xzcat $(STAGE_FILE) --to-stdout | docker import - gentoo-stage:$(STAGE_DATE)

Dockerfile:

FROM gentoo-stage:20210801T170533Z
RUN emerge --sync --quiet
RUN eselect news read all
RUN eselect profile set default/linux/amd64/17.1
RUN echo ACCEPT_KEYWORDS="~amd64" >> /etc/portage/make.conf
RUN FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox" MAKEOPTS="-j16" emerge -qe @system
Comment 13 Sam James archtester gentoo-dev Security 2021-08-03 21:31:26 UTC
(In reply to Kobboi from comment #11)
> Well when upgrading from stable stage3, I am hitting, in libxml2:
> 
> /usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/../../../../x86_64-pc-linux-gnu/bin/
> ld: cannot find -lcrypt
> 
> Is libxml2 missing a dependency on virtual/libcrypt?

So, in reality, no, but it's a weird one!

The bug you mention is kind of bug 798942, not this one (which is a Portage bug). We're trying to link against libcrypt even though we don't even use it because of a bug in the libxml2 build system. I _partially_ patched this, but actually, floppym had the right idea in the first place over in that bug I linked.

Let's discuss it further over there if needed but I suspect chucking in his patch will do the job.
Comment 14 Larry the Git Cow gentoo-dev 2021-08-03 21:57:30 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e3a6762072cd55432db25e9dc501caf760c9ed6a

commit e3a6762072cd55432db25e9dc501caf760c9ed6a
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-08-03 21:56:24 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-08-03 21:56:59 +0000

    dev-libs/libxml2: keyword 2.9.12-r5
    
    Bug: https://bugs.gentoo.org/798942
    Bug: https://bugs.gentoo.org/802210
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-libs/libxml2/libxml2-2.9.12-r5.ebuild | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f0e7d23343b672bbfdeb2978e854c0b96b8157d2

commit f0e7d23343b672bbfdeb2978e854c0b96b8157d2
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-08-03 21:48:42 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-08-03 21:56:43 +0000

    dev-libs/libxml2: don't copy Python LDFLAGS
    
    This causes unnecessary linking against e.g. libcrypt which
    we throw away with as-needed anyway.
    
    Bug: https://bugs.gentoo.org/802210
    Closes: https://bugs.gentoo.org/798942
    Thanks-to: Mike Gilbert <floppym@gentoo.org>
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-libs/libxml2/Manifest                                           | 2 +-
 .../libxml2/{libxml2-2.9.12-r4.ebuild => libxml2-2.9.12-r5.ebuild}  | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)
Comment 15 Larry the Git Cow gentoo-dev 2021-10-11 20:32:33 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2b750288f9c701a7141fa2de51dde02892c2cb39

commit 2b750288f9c701a7141fa2de51dde02892c2cb39
Author:     Mike Gilbert <floppym@gentoo.org>
AuthorDate: 2021-10-11 20:29:08 +0000
Commit:     Mike Gilbert <floppym@gentoo.org>
CommitDate: 2021-10-11 20:29:08 +0000

    dev-lang/python: avoid overlinking libcrypt
    
    Also drops crypt.h from Python.h.
    
    Bug: https://bugs.gentoo.org/802210
    Signed-off-by: Mike Gilbert <floppym@gentoo.org>

 dev-lang/python/Manifest                           |   7 +-
 ...ython-3.10.0.ebuild => python-3.10.0_p1.ebuild} |   2 +-
 ...ython-3.7.12.ebuild => python-3.7.12_p1.ebuild} |   2 +-
 dev-lang/python/python-3.8.12_p1.ebuild            | 335 +++++++++++++++++++++
 ...{python-3.9.7.ebuild => python-3.9.7_p1.ebuild} |   2 +-
 5 files changed, 342 insertions(+), 6 deletions(-)
Comment 16 Arfrever Frehtes Taifersar Arahesis 2021-10-12 09:48:06 UTC
> https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2b750288f9c701a7141fa2de51dde02892c2cb39
> 
> commit 2b750288f9c701a7141fa2de51dde02892c2cb39
> Author:     Mike Gilbert <floppym@gentoo.org>
> AuthorDate: 2021-10-11 20:29:08 +0000
> Commit:     Mike Gilbert <floppym@gentoo.org>
> CommitDate: 2021-10-11 20:29:08 +0000
> 
>     dev-lang/python: avoid overlinking libcrypt

https://bugs.python.org/issue45433
https://github.com/python/cpython/pull/28881
https://github.com/python/cpython/commit/be21706f3760bec8bd11f85ce02ed6792b07f51f