The failure in pipx is because argparse-manpage[1], which is not in this list, requires distutils at runtime.

+ /usr/bin/python3 scripts/generate_man.py
Traceback (most recent call last):
  File "/builddir/build/BUILD/pipx-1.1.0/scripts/generate_man.py", line 7, in <module>
    from build_manpages.manpage import Manpage  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/build_manpages/__init__.py", line 7, in <module>
    from .build_manpages import build_manpages, get_build_py_cmd, get_install_cmd
  File "/usr/lib/python3.11/site-packages/build_manpages/build_manpages.py", line 10, in <module>
    from distutils.core import Command
ModuleNotFoundError: No module named 'distutils'

I filed an issue[2] advising argparse-manpage upstream of the situation.

[1] https://src.fedoraproject.org/rpms/argparse-manpage

[2] https://github.com/praiskup/argparse-manpage/issues/63

On 10/18/22 05:27, Miro Hrončok wrote:
Hey Pythonistas.

The Python standard library distutils module will be removed from Python 3.12+

https://peps.python.org/pep-0632/

As preparatory work, we build all python packages in a Copr repository with Python 3.11 sans distutils:

https://copr.fedorainfracloud.org/coprs/g/python/python-without-distutils/

I've rebuilt all the failed builds again and also in a control-group copr:

https://copr.fedorainfracloud.org/coprs/g/python/python-with-distutils/

250 packages that failed to build without distuils but succeeded with distutils need to be examined and categorized into various different groups:

 - package uses distutils only if sys.version_info < (3, 12)
     -- this is OK but still fails here
 - package uses distutils unconditionally and the package needs to be fixed
 - package uses another package that uses distutils unconditionally
      and the dependency needs to be fixed

I suspect most of the packages will fail to build with Python 3.12 (planned for Fedora 39, change proposal TBD). The python3-setutpools package provides a distutils module [^1], so sometimes "simply" adding BuildRequires: python3-setuptools might workaround the problem.

However, upstream involvement is recommended.

A few bugzillas were opened wrt this and I plan to open more:

https://bugzilla.redhat.com/showdependencytree.cgi?id=PYTHON3.12&hide_resolved=0

I've also oepned some upstream Pull Requests:
    https://github.com/pypa/pip/pull/11522
    https://github.com/pypa/setuptools/pull/3636
    https://pagure.io/fedora-gather-easyfix/pull-request/10
    https://github.com/filbranden/dnf-plugins-perfmetrics/pull/1
    https://github.com/rpm-software-management/deltarpm/pull/17

Could you please help me by looking at your failed packages and talking to your upstreams? Feel free to reply with links, questions, bugzillas...

To test this locally, you can do something like:

1. fedpkg clone $PKG && cd $PKG
2. mock -r fedora-rawhide-x86_64 init
3. mock -r fedora-rawhide-x86_64 install python3-devel
4. sudo rm -rf /var/lib/mock/fedora-rawhide-x86_64/root/usr/lib64/python3.11/distutils/
4. fedpkg mockbuild -N


Thanks!

------------------------

[^1]: Unfortunately,  is not 100 % compatible with the removed standard library one distutils: https://github.com/pypa/setuptools/issues/3532

------------------------

Maintainers by package:
0ad                  bruno kalev pcpa pwalter
GConf2               alexl buc caillon caolanm mbarnes rhughes ssp walters
MUSIC                ankursinha
PyQt4                sagitter than
SoapySDR             hobbes1069 mdomsch
Zim                  cheeselee ohaessler
anaconda             anaconda-maint jkonecny m4rtink rvykydal sbueno vpodzime vponcova
anjuta               kalev limb moezroy rakesh
appliance-tools      ngompa
astrometry           lupinix
audit                sgrubb
awake                fab
b43-tools            pwalter
babeltrace           blarsen greenscientist keiths ktdreyer mjeanson suchakra
babeltrace2          mjeanson
bamf                 jspaleta salimma
baresip              robert
brd                  jsbackus
brial                pcpa
btest                fab
cairo-dock-plug-ins  mtasaka
ccsm                 jskarvad
cdist                fnux
clingo               thofmann
cryptlib             senderek
cryptominisat        jjames
csmock               kdudka svashisht
csound               ndim
cvc4                 brouhaha jjames
dee                  jspaleta spot
deltarpm             defolos
distcc               grover limb
dmlite               adev andreamanzi gbitzes okeeble rocha vokac
dnf-plugin-perfmetrics dcavalca
dnsviz               jonathanspw pemensik
eric                 rdieter
etckeeper            thm
fedora-gather-easyfix pingou
flann                rmattes
fonts-tweak-tool     jamesni tagoh
fusion-icon          jskarvad
gdb                  ahajkova blarsen jankratochvil keiths kevinb sergiodj
gfal2-python         adev andreamanzi mipatras simonm
gjots2               wef
glusterfs            kkeithle
gnome-activity-journal crvi
gnome-doc-utils      alexl caillon caolanm limb rhughes rstrode ssp
gnucash              limb notting
gnumeric             aarem belegdol huzaifas
gpgme                fkluknav isimluk jkucera mrc0mmand rdieter
gphotoframe          mtasaka
gpodder              jspaleta limb vpv
graphviz             alexlan jskarvad
grass                daveisfera devrim jonathanspw neteler oliver volter
gtk2                 alexl caillon caolanm mbarnes mclasen mkasik rhughes rstrode ssp
hivex                mdbooth rjones
hplip                jridky tkorbar twaugh zdohnal
hugin                bpostle cicku denisarnaud
i2c-tools            aegorenk ajax jcapik jorton jzerdik miminar olysonek
ibus                 fujiwara phuang
ibus-anthy           fujiwara phuang
insight              lkundrak monnerat
iotop                drago01 mhlavink
keycloak-httpd-client-install jhrozek thalman
kicad                avigne lkundrak stevenfalco tnorth
kig                  jreznik kkofler rdieter
kobo                 dmach rohanpm
lasso                jhrozek rcritten simo
ldns                 pemensik pwouters rlescak thozza
lensfun              germano grahamwhiteuk nphilipp ohaessler rdieter trix
lhapdf               ellert
libarcus             churchyard gferon
libblockdev          sbueno tbzatek vpodzime vtrefny
libcap-ng            sgrubb
libcint              jussilehtola
libdnet              rjones robert
libfreenect          jkastner kathenas kwizart rmattes
libftdi              hobbes1069 robert sharkcz
libkdumpfile         dcavalca salimma
libkkc               petersen
libldb               abbra asn gd iboukris jhrozek lslebodn pfilipen sgallagh simo
libnbd               rjones
libneurosim          ankursinha
libnl3               dcbw jirka tgraf thaller
libprelude           fab limb totol
libpreludedb         totol
libproxy             amigadave cicku danw npmccallum
libpst               mcrha
libpwquality         pwouters tmraz
libreswan            pwouters saprasad
libsavitar           churchyard gferon
libselinux           dwalsh pcmoore plautrba vmojzis
libsemanage          dwalsh mgrepl pcmoore plautrba vmojzis
libsolv              dmach ignatenkobrain jmracek jrohel ngompa pkratoch
libssh2-python       clalance
libtalloc            abbra asn gd iboukris jhrozek lslebodn pfilipen sgallagh simo
libtdb               abbra asn gd iboukris jhrozek lslebodn pfilipen sgallagh simo
libtevent            abbra asn gd iboukris jhrozek lslebodn pfilipen sgallagh simo
libxml2              amigadave veillard
link-grammar         devos limb
livecd-tools         astokes bcl bruno huff katzj ngompa
lnst                 jtluka olichtne rpazdera
lttng-ust            dmarlin greenscientist ktdreyer mjeanson suchakra
maildirproc          cwickert
mailnag              thl
manafirewall         ngompa thunderbirdtr
marisa               ueno
mathgl               deji krege mycae
mirage               mtasaka
mozjs102             frantisekz
mozjs78              frantisekz kalev
mozjs91              frantisekz
mpv                  carlwgeorge ngompa xvitaly
netgen-mesher        hobbes1069 smani
nfs-ganesha          kkeithle
nftables             kevin psutter
nispor               cathay4t ffmancera
nmstate              cathay4t ffmancera liangwen12year till
ntpsec               ignatenkobrain mlichvar
numpy                cstratak jspaleta limb orion rdieter tomspur ttomecek
ocaml-pyml           jjames
oct2spec             orion
omniORB              hguemar smani
omniORBpy            smani
onboard              yanqiyu
openscap             evgenyz isimluk jcerny matyc mmarhefk pvrabec vpolasek wsato
openscap-daemon      isimluk jcerny matyc wsato
pam_wrapper          asn jhrozek
photocollage         adrienverge
pipenv               churchyard ksurma torsava
pipx                 music
pluma                raveit65 robert
policycoreutils      dwalsh lvrabec mgrepl pcmoore plautrba vmojzis
pyflowtools          stingray
pyke                 spot
pylint               bcl limb lupinix mrunge orion
pyppd                twaugh
pystatgrab           fab heliocastro potty slankes ttorling
pysvn                barryascott ravenoak sgallagh
python-IPy           kevin
python-PyPDF2        aarem
python-aiozeroconf   fab
python-ansi          sdyroff
python-auth-credential lcons
python-bintrees      rkuska
python-cmdln         averi
python-cpio          jamatos kevin mbacovsk
python-cram          ktdreyer
python-cups          twaugh zdohnal
python-cypy          ankursinha
python-dbf           jujens
python-dirq          lcons
python-dmidecode     dsommers sagitter
python-empy          filiperosset
python-firehose      athoscr dmalcolm
python-fontconfig    melmorabity
python-gccinvocation dmalcolm
python-gzipstream    msuchy
python-iowait        aekoroglu
python-ipgetter      fab
python-junitxml      limb
python-jupyter-polymake jjames
python-kmod          grover mlombard
python-logging-tree  fab ralph
python-logutils      jcaratzas kevin ralph
python-m2r           nforro
python-messaging     lcons
python-mne           ankursinha ignatenkobrain
python-modestmaps    cottsay
python-mplcursors    qulogic
python-multi_key_dict cottsay
python-nibabel       ankursinha ignatenkobrain
python-nmap          fab
python-optcomplete   chedi
python-pendulum      fab
python-pikepdf       qulogic zdohnal
python-py9p          psavelye
python-pyaes         peter
python-pycxx         barryascott hobbes1069 mrunge zultron
python-pyfim         ankursinha
python-pylibravatar  kevin ralph
python-pynest2d      churchyard
python-pyoptical     ankursinha ignatenkobrain
python-pyzolib       cottsay
python-rpdb          bowlofeggs jcline
python-rpmfluff      dshea ignatenkobrain jhutar jlaska
python-schedutils    jkastner
python-simplevisor   lcons
python-slip          nphilipp
python-smbpasswd     rebus s4504kr
python-sphinxcontrib-openapi fbo zuul
python-sysv_ipc      amoralej
python-termcolor     mikelo2 mrunge
python-uinput        bytehackr
python-usort         dcavalca
python-visionegg-quest ankursinha ignatenkobrain
python-whois         suve
python-yamlordereddictloader greghellings
python3-cangjie      bochecha
python3-script       jorti
python3-simpletal    thm
pythran              churchyard
qpid-dispatch        irina kpvdr mcressman tross
quodlibet            hannes
rabbitvcs            cicku limb nushio pwalter
realtime-tests       jkacur
rebase-helper        nforro phracek
recode               opohorel orion ppisar
rednotebook          fab kathenas mikedep333
rpm                  ffesti ignatenkobrain mdomonko mjw packaging-team pmatilai pmoravco vmukhame
rteval               jkacur
rubber               sergiopr
sanlock              cfeist fsimonce nsoffer teigland
setroubleshoot       dwalsh mgrepl pcmoore plautrba vmojzis
simple-ccsm          jskarvad
sip                  rdieter than
sos                  bmr sbonazzo
soundconverter       hobbes1069 pranvk
sssd                 abbra asn atikhonov jhrozek mzidek pbrezina sbose simo
stp                  amdunn jjames
strongswan           dcavalca mzabaluev pavlix pemensik pwouters salimma
subversion           jorton rlescak
suricata             jtaylor sgrubb
sword                cicku deji greghellings jkastner
syslog-ng            czanik jpo mrunge
system-config-printer jpopelka twaugh zdohnal
systemd-coredump-python stevetraylen zbyszek
targetd              grover tasleson
tbb                  jjames jkastner jwakely trodgers
tcl-snack            spot
telepathy-logger     rdieter rishi
tlsh                 zbyszek
torbrowser-launcher  limb pjp
trace-cmd            ersin jmarchan jstanley zsun
tuna                 jkacur jkastner
tuned                jskarvad jzerdik olysonek pknirsch
ufw                  kkofler robert
urjtag               jkastner scottt
uwsgi                ertzing
vips                 agoode
volume_key           huzaifas jkucera mitr
wiki2beamer          sdyroff
wordxtr              pnemade
workrave             nonamedotc yselkowitz
xen                  jforbes myoung
xpra                 jgu sagitter sergiomb
ydiff                netvor
yokadi               fab
zbar                 firemanxbr limb mchehab slaanesh
zinnia               liangsuilong pwu

Packages by maintainer:
aarem      gnumeric python-PyPDF2
abbra      libldb libtalloc libtdb libtevent sssd
adev       dmlite gfal2-python
adrienverge photocollage
aegorenk   i2c-tools
aekoroglu  python-iowait
agoode     vips
ahajkova   gdb
ajax       i2c-tools
alexl      GConf2 gnome-doc-utils gtk2
alexlan    graphviz
amdunn     stp
amigadave  libproxy libxml2
amoralej   python-sysv_ipc
anaconda-maint anaconda
andreamanzi dmlite gfal2-python
ankursinha MUSIC libneurosim python-cypy python-mne python-nibabel python-pyfim python-pyoptical python-visionegg-quest
asn        libldb libtalloc libtdb libtevent pam_wrapper sssd
astokes    livecd-tools
athoscr    python-firehose
atikhonov  sssd
averi      python-cmdln
avigne     kicad
barryascott pysvn python-pycxx
bcl        livecd-tools pylint
belegdol   gnumeric
blarsen    babeltrace gdb
bmr        sos
bochecha   python3-cangjie
bowlofeggs python-rpdb
bpostle    hugin
brouhaha   cvc4
bruno      0ad livecd-tools
buc        GConf2
bytehackr  python-uinput
caillon    GConf2 gnome-doc-utils gtk2
caolanm    GConf2 gnome-doc-utils gtk2
carlwgeorge mpv
cathay4t   nispor nmstate
cfeist     sanlock
chedi      python-optcomplete
cheeselee  Zim
churchyard libarcus libsavitar pipenv python-pynest2d pythran
cicku      hugin libproxy rabbitvcs sword
clalance   libssh2-python
cottsay    python-modestmaps python-multi_key_dict python-pyzolib
crvi       gnome-activity-journal
cstratak   numpy
cwickert   maildirproc
czanik     syslog-ng
danw       libproxy
daveisfera grass
dcavalca   dnf-plugin-perfmetrics libkdumpfile python-usort strongswan
dcbw       libnl3
defolos    deltarpm
deji       mathgl sword
denisarnaud hugin
devos      link-grammar
devrim     grass
dmach      kobo libsolv
dmalcolm   python-firehose python-gccinvocation
dmarlin    lttng-ust
drago01    iotop
dshea      python-rpmfluff
dsommers   python-dmidecode
dwalsh     libselinux libsemanage policycoreutils setroubleshoot
ellert     lhapdf
ersin      trace-cmd
ertzing    uwsgi
evgenyz    openscap
fab        awake btest libprelude pystatgrab python-aiozeroconf python-ipgetter python-logging-tree python-nmap python-pendulum rednotebook yokadi
fbo        python-sphinxcontrib-openapi
ffesti     rpm
ffmancera  nispor nmstate
filiperosset python-empy
firemanxbr zbar
fkluknav   gpgme
fnux       cdist
frantisekz mozjs102 mozjs78 mozjs91
fsimonce   sanlock
fujiwara   ibus ibus-anthy
gbitzes    dmlite
gd         libldb libtalloc libtdb libtevent
germano    lensfun
gferon     libarcus libsavitar
grahamwhiteuk lensfun
greenscientist babeltrace lttng-ust
greghellings python-yamlordereddictloader sword
grover     distcc python-kmod targetd
hannes     quodlibet
heliocastro pystatgrab
hguemar    omniORB
hobbes1069 SoapySDR libftdi netgen-mesher python-pycxx soundconverter
huff       livecd-tools
huzaifas   gnumeric volume_key
iboukris   libldb libtalloc libtdb libtevent
ignatenkobrain libsolv ntpsec python-mne python-nibabel python-pyoptical python-rpmfluff python-visionegg-quest rpm
irina      qpid-dispatch
isimluk    gpgme openscap openscap-daemon
jamatos    python-cpio
jamesni    fonts-tweak-tool
jankratochvil gdb
jcapik     i2c-tools
jcaratzas  python-logutils
jcerny     openscap openscap-daemon
jcline     python-rpdb
jforbes    xen
jgu        xpra
jhrozek    keycloak-httpd-client-install lasso libldb libtalloc libtdb libtevent pam_wrapper sssd
jhutar     python-rpmfluff
jirka      libnl3
jjames     cryptominisat cvc4 ocaml-pyml python-jupyter-polymake stp tbb
jkacur     realtime-tests rteval tuna
jkastner   libfreenect python-schedutils sword tbb tuna urjtag
jkonecny   anaconda
jkucera    gpgme volume_key
jlaska     python-rpmfluff
jmarchan   trace-cmd
jmracek    libsolv
jonathanspw dnsviz grass
jorti      python3-script
jorton     i2c-tools subversion
jpo        syslog-ng
jpopelka   system-config-printer
jreznik    kig
jridky     hplip
jrohel     libsolv
jsbackus   brd
jskarvad   ccsm fusion-icon graphviz simple-ccsm tuned
jspaleta   bamf dee gpodder numpy
jstanley   trace-cmd
jtaylor    suricata
jtluka     lnst
jujens     python-dbf
jussilehtola libcint
jwakely    tbb
jzerdik    i2c-tools tuned
kalev      0ad anjuta mozjs78
kathenas   libfreenect rednotebook
katzj      livecd-tools
kdudka     csmock
keiths     babeltrace gdb
kevin      nftables python-IPy python-cpio python-logutils python-pylibravatar
kevinb     gdb
kkeithle   glusterfs nfs-ganesha
kkofler    kig ufw
kpvdr      qpid-dispatch
krege      mathgl
ksurma     pipenv
ktdreyer   babeltrace lttng-ust python-cram
kwizart    libfreenect
lcons      python-auth-credential python-dirq python-messaging python-simplevisor
liangsuilong zinnia
liangwen12year nmstate
limb       anjuta distcc gnome-doc-utils gnucash gpodder libprelude link-grammar numpy pylint python-junitxml rabbitvcs torbrowser-launcher zbar
lkundrak   insight kicad
lslebodn   libldb libtalloc libtdb libtevent
lupinix    astrometry pylint
lvrabec    policycoreutils
m4rtink    anaconda
matyc      openscap openscap-daemon
mbacovsk   python-cpio
mbarnes    GConf2 gtk2
mchehab    zbar
mclasen    gtk2
mcressman  qpid-dispatch
mcrha      libpst
mdbooth    hivex
mdomonko   rpm
mdomsch    SoapySDR
melmorabity python-fontconfig
mgrepl     libsemanage policycoreutils setroubleshoot
mhlavink   iotop
mikedep333 rednotebook
mikelo2    python-termcolor
miminar    i2c-tools
mipatras   gfal2-python
mitr       volume_key
mjeanson   babeltrace babeltrace2 lttng-ust
mjw        rpm
mkasik     gtk2
mlichvar   ntpsec
mlombard   python-kmod
mmarhefk   openscap
moezroy    anjuta
monnerat   insight
mrc0mmand  gpgme
mrunge     pylint python-pycxx python-termcolor syslog-ng
msuchy     python-gzipstream
mtasaka    cairo-dock-plug-ins gphotoframe mirage
music      pipx
mycae      mathgl
myoung     xen
mzabaluev  strongswan
mzidek     sssd
ndim       csound
neteler    grass
netvor     ydiff
nforro     python-m2r rebase-helper
ngompa     appliance-tools libsolv livecd-tools manafirewall mpv
nonamedotc workrave
notting    gnucash
nphilipp   lensfun python-slip
npmccallum libproxy
nsoffer    sanlock
nushio     rabbitvcs
ohaessler  Zim lensfun
okeeble    dmlite
olichtne   lnst
oliver     grass
olysonek   i2c-tools tuned
opohorel   recode
orion      numpy oct2spec pylint recode
packaging-team rpm
pavlix     strongswan
pbrezina   sssd
pcmoore    libselinux libsemanage policycoreutils setroubleshoot
pcpa       0ad brial
pemensik   dnsviz ldns strongswan
peter      python-pyaes
petersen   libkkc
pfilipen   libldb libtalloc libtdb libtevent
phracek    rebase-helper
phuang     ibus ibus-anthy
pingou     fedora-gather-easyfix
pjp        torbrowser-launcher
pknirsch   tuned
pkratoch   libsolv
plautrba   libselinux libsemanage policycoreutils setroubleshoot
pmatilai   rpm
pmoravco   rpm
pnemade    wordxtr
potty      pystatgrab
ppisar     recode
pranvk     soundconverter
psavelye   python-py9p
psutter    nftables
pvrabec    openscap
pwalter    0ad b43-tools rabbitvcs
pwouters   ldns libpwquality libreswan strongswan
pwu        zinnia
qulogic    python-mplcursors python-pikepdf
rakesh     anjuta
ralph      python-logging-tree python-logutils python-pylibravatar
raveit65   pluma
ravenoak   pysvn
rcritten   lasso
rdieter    eric gpgme kig lensfun numpy sip telepathy-logger
rebus      python-smbpasswd
rhughes    GConf2 gnome-doc-utils gtk2
rishi      telepathy-logger
rjones     hivex libdnet libnbd
rkuska     python-bintrees
rlescak    ldns subversion
rmattes    flann libfreenect
robert     baresip libdnet libftdi pluma ufw
rocha      dmlite
rohanpm    kobo
rpazdera   lnst
rstrode    gnome-doc-utils gtk2
rvykydal   anaconda
s4504kr    python-smbpasswd
sagitter   PyQt4 python-dmidecode xpra
salimma    bamf libkdumpfile strongswan
saprasad   libreswan
sbonazzo   sos
sbose      sssd
sbueno     anaconda libblockdev
scottt     urjtag
sdyroff    python-ansi wiki2beamer
senderek   cryptlib
sergiodj   gdb
sergiomb   xpra
sergiopr   rubber
sgallagh   libldb libtalloc libtdb libtevent pysvn
sgrubb     audit libcap-ng suricata
sharkcz    libftdi
simo       lasso libldb libtalloc libtdb libtevent sssd
simonm     gfal2-python
slaanesh   zbar
slankes    pystatgrab
smani      netgen-mesher omniORB omniORBpy
spot       dee pyke tcl-snack
ssp        GConf2 gnome-doc-utils gtk2
stevenfalco kicad
stevetraylen systemd-coredump-python
stingray   pyflowtools
suchakra   babeltrace lttng-ust
suve       python-whois
svashisht  csmock
tagoh      fonts-tweak-tool
tasleson   targetd
tbzatek    libblockdev
teigland   sanlock
tgraf      libnl3
thaller    libnl3
thalman    keycloak-httpd-client-install
than       PyQt4 sip
thl        mailnag
thm        etckeeper python3-simpletal
thofmann   clingo
thozza     ldns
thunderbirdtr manafirewall
till       nmstate
tkorbar    hplip
tmraz      libpwquality
tnorth     kicad
tomspur    numpy
torsava    pipenv
totol      libprelude libpreludedb
trix       lensfun
trodgers   tbb
tross      qpid-dispatch
ttomecek   numpy
ttorling   pystatgrab
twaugh     hplip pyppd python-cups system-config-printer
ueno       marisa
veillard   libxml2
vmojzis    libselinux libsemanage policycoreutils setroubleshoot
vmukhame   rpm
vokac      dmlite
volter     grass
vpodzime   anaconda libblockdev
vpolasek   openscap
vponcova   anaconda
vpv        gpodder
vtrefny    libblockdev
walters    GConf2
wef        gjots2
wsato      openscap openscap-daemon
xvitaly    mpv
yanqiyu    onboard
yselkowitz workrave
zbyszek    systemd-coredump-python tlsh
zdohnal    hplip python-cups python-pikepdf system-config-printer
zsun       trace-cmd
zultron    python-pycxx
zuul       python-sphinxcontrib-openapi