From Fedora Project Wiki
Line 47: Line 47:
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
python3-devel currently requires python3-setuptools if rpmbuild is used. This was needed for RPM generators but since it adapted packaging, this is not needed anymore hence we are removing it. We tested this change in the past when we [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/GCPGM34ZGEOVUHSBGZTRYR5XKHTIJ3T7/ asked] other maintainers to explicitly BuildRequire python-3setuptools. Some of them responded, some not. Our analysis was based on greping sources for any mention of setuptools, such as ''import setuptools'' or ''from setuptools import''. Nowadays, the same grep based query showed us roughly the same number (about 335 + 72 that failed to be analysed) of packages relying on python3-setuptools. To see direct impact we removed this Require from python-devel package used in testing [https://copr.fedorainfracloud.org/coprs/g/python/python3.10/packages/ python3.10] COPR. It showed us 140 packages affected by this change. Even though it is fewer than expected 300+ packages, to avoid any breakages we plan to do a mass spec update on all of them to explicitly BuildRequire python3-setuptools. Some of them might build because they fallback to distutils if dependency on python3-setuptools is not satisfied.
python3-devel currently requires python3-setuptools if rpmbuild is used. This was needed for RPM generators but since it adapted packaging, this is not needed anymore hence we are removing it. We tested this change in the past when we [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/GCPGM34ZGEOVUHSBGZTRYR5XKHTIJ3T7/ asked] other maintainers to explicitly BuildRequire python-3setuptools. Some of them responded, some not. Our analysis was based on greping sources for any mention of setuptools, such as ''import setuptools'' or ''from setuptools import''. Nowadays, the same grep based query showed us roughly the same number (about 335 + 72 that failed to be analysed) of packages relying on python3-setuptools. To see direct impact we removed this Require from python-devel package used in testing [https://copr.fedorainfracloud.org/coprs/g/python/python3.10/packages/ python3.10] COPR. It showed us 140 packages affected by this change. Even though it is fewer than expected 300+ packages, to avoid any breakages we plan to do a mass spec update on all of them to explicitly BuildRequire python3-setuptools. Some of them might build because they fallback to distutils if dependency on python3-setuptools is not satisfied.
Below is the list of packages we plan to update with mass spec rebuild. If you wish to opt out of this update, please edit this page and move your package to the list of packages to be ignored.
'''Packages to be updated:'''
GeographicLib        rmattes smani
R2spec              pingou
barman              slaanesh tsao
btrfs-progs          ignatenkobrain josef ngompa sandeen
bumpversion          duriantang jdornak
cranc                lenkaseg
electrum            tredaell
gajim                michich
gns3-gui            kwizart
gns3-net-converter  kwizart
kismon              fab
langtable            mfabian
lecm                spredzy
legofy              lkf williamjmorenor
mapserver            devrim jujens oliver pali smani
mysql-connector-python hhorak hubbitus hvad mschorm
percol              hubbitus
porcupine            kushal
protonvpn-cli        calexandru2018 jflory7
pyhunspell          mfabian
pyjokes              pbrobinson pwhalen
pyscard              orion sjenning
python-Pyped        uggla
python-ROPGadget    mikep
python-acoustid      terjeros
python-aiodns        fantom
python-arviz        sergiopr
python-b2sdk        jonny
python-btchip        jonny xenithorb
python-cerealizer    spot
python-cmigemo      hubbitus
python-construct    moezroy terjeros
python-css-parser    zbyszek
python-debrepo      ktdreyer
python-dialog        mjakubicek noodles raphgro sundaram zbyszek
python-django-contact-form mrunge
python-django-registration orphan
python-django-reversion mrunge
python-django-tagging jdornak mrunge piotrp
python-dtfabric      fab
python-flake8-docstrings cottsay
python-flask-sphinx-themes devrim orphan
python-formats      uggla
python-fypp          rathann
python-google-i18n-address pwouters
python-googletrans  lyessaadi
python-heapdict      qulogic
python-hgdistver    fab
python-html5-parser  kevin
python-humblewx      rickardlindberg
python-i3ipc        msimacek
python-kerberos      rcritten simo
python-lark-parser  totol
python-logfury      jonny
python-mailmerge    bex
python-meld3        kevin stevetraylen tsao
python-mnemonic      jonny
python-nbxmpp        michich
python-oauth2        ignatenkobrain pjp spot sundaram
python-poyo          chedi wakko666
python-precis_i18n  michich
python-proteus      sharkcz
python-publicsuffix2 rathann
python-pulsectl      pfrields
python-pycha        potty sharkcz
python-pylons-sphinx-themes abompard
python-pymc3        sergiopr
python-pyotp        icon
python-pyroute2      jirka pavlix psavelye
python-pytest-astropy-header sergiopr
python-pytest-watch  jujens
python-relatorio    sharkcz
python-rmtest        lberk mgoodwin nathans
python-shamir-mnemonic jonny
python-smbc          twaugh zdohnal
python-spdx          jbertozzi
python-spdx-lookup  jbertozzi
python-tempdir      rathann
python-tortilla      uggla
python-trezor        jonny
python-unidecode    pjp sundaram
python-unidiff      dcallagh
python-upt-cpan      jbertozzi
python-upt-fedora    jbertozzi
python-upt-pypi      jbertozzi
python-upt-rubygems  jbertozzi
python-xlwt          leamas moezroy rathann
qr-code-generator    xvitaly
rpmspectool          nphilipp
sepolicy_analysis    vmojzis
stomppy              stevetraylen
trytond-account      sharkcz
trytond-account-be  sharkcz
trytond-account-de-skr03 sharkcz
trytond-account-invoice sharkcz
trytond-account-invoice-history sharkcz
trytond-account-invoice-line-standalone sharkcz
trytond-account-product sharkcz
trytond-account-statement sharkcz
trytond-account-stock-anglo-saxon sharkcz
trytond-account-stock-continental sharkcz
trytond-analytic-account sharkcz
trytond-analytic-invoice sharkcz
trytond-analytic-purchase sharkcz
trytond-analytic-sale sharkcz
trytond-company      sharkcz
trytond-company-work-time sharkcz
trytond-country      sharkcz
trytond-currency    sharkcz
trytond-dashboard    sharkcz
trytond-google-maps  sharkcz
trytond-ldap-authentication sharkcz
trytond-party        sharkcz
trytond-party-siret  sharkcz
trytond-product      sharkcz
trytond-product-cost-fifo sharkcz
trytond-product-cost-history sharkcz
trytond-product-price-list sharkcz
trytond-project      sharkcz
trytond-project-plan sharkcz
trytond-project-revenue sharkcz
trytond-purchase    sharkcz
trytond-purchase-invoice-line-standalone sharkcz
trytond-sale        sharkcz
trytond-sale-opportunity sharkcz
trytond-sale-price-list sharkcz
trytond-stock        sharkcz
trytond-stock-forecast sharkcz
trytond-stock-inventory-location sharkcz
trytond-stock-location-sequence sharkcz
trytond-stock-product-location sharkcz
trytond-stock-supply sharkcz
trytond-stock-supply-day sharkcz
trytond-timesheet    sharkcz
txt2tags            junghans
ubertooth            avsej
unicorn              fab mikep
upt                  jbertozzi
winpdb              spot
yawn                jsafrane miminar vcrhonek
'''Packages to be ignored:'''
fontforge - false positive
xrootd - false positive
'''Packages that failed to be analysed:'''
0ad                  ignatenkobrain pcpa pwalter
GConf2              alexl buc caillon caolanm mbarnes rhughes ssp walters
TeXmacs              jnovy orion
anaconda            anaconda-maint jkonecny m4rtink rvykydal sbueno vpodzime vponcova
astrometry          lupinix
bamf                jspaleta salimma
boost                denisarnaud jwakely trodgers
colobot              suve
cozy                suve
cppcheck            c72578 jussilehtola sgrubb
criu                adrian avagin
cxxtest              mgieseki
dnf                  dmach jmracek jrohel mblaha pkratoch
eclipse-pydev        jjohnstn orphan
edk2                bonzini crobinso kraxel
etcd                cypret eparis gscrivano jchaloup lsm5 strigazi walters
fonts-tweak-tool    jamesni tagoh
gdl                  orion
gimp-resynthesizer  luya
global              cheeselee landgraf
google-noto-emoji-fonts mfabian pwu
gst-devtools        limb
guitarix            bsjones tartina verdurin
hfg-gmuend-openmoji-fonts mavit
kernel              acaringi airlied ajax bskeggs eparis glisse jcline jforbes jwboyer jwilson jwrdegoede kernel-maint lgoncalv linville myoung nhorman patrickt quintela sandeen steved
kernel-tools        acaringi jcline jforbes jwboyer lgoncalv patrickt pbrobinson
kicad                avigne coremodule lkundrak stevenfalco tnorth
lammps              ellio167 junghans
libabigail          dodji sinnykumari
libguestfs          mdbooth rjones
libiptcdata          dcm hobbes1069 jchaloup
libkkc              ueno
libproxy            amigadave cicku danw npmccallum
libreoffice          caolanm dtardon erack sbergmann
libsvm              besser82 jjames
link-grammar        devos fabiand limb
nest                ankursinha
nispor              cathay4t ffmancera
opal-prd            hegdevasant
openbabel            alexpl jussilehtola rathann
openexr              hobbes1069
proxyfuzz            psklenar
python-OBD          rathann
python-caja          monnerat raveit65
python-flask-rstpages rmarko
python-graph-tool    ankursinha
python-matrix-nio    ankursinha
python-pivy          hobbes1069 zultron
python-pycha        potty sharkcz
python-pyqtgraph    swt2c
python-pytest-spec  fab
python-requests-cache codeblock hobbes1069
python-uranium-lulzbot orphan
python-webpy        mrunge
python-wsaccel      jujens
qemu                berrange bonzini crobinso dwmw2 ehabkost jforbes lkundrak quintela rjones
root                ellert
rust-pyo3            decathorpe
rust-python3-sys    decathorpe
seqan2              sagitter
sugar-browse        aperezbios callkalpa chimosky manuq pbrobinson
sugar-calculator    callkalpa chimosky pbrobinson tuxbrewr
suricata            jtaylor sgrubb
texlive              jnovy spot than
tiled                ablu suve
tsung                cicku tartare
unity-gtk-module    besser82
vdrift              limb rmattes
voikko-fi            vpv
weechat              asrob gchamoul hguemar niveusluna salimma stingray
xemacs-packages-extra jjames stevetraylen
zinnia              liangsuilong pwu


== Feedback ==
== Feedback ==

Revision as of 07:29, 15 March 2021


python3-devel won't pull in setuptools by default in rpmbuild

Summary

python3-devel currently requires python-setuptools if rpmbuild is used. Due to a change in RPM generators, this is not needed anymore hence we are removing it.

Owner

Current status

  • Targeted release: Fedora Linux 35
  • Last updated: 2021-03-15
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

python3-devel currently requires python3-setuptools if rpmbuild is used. This was needed for RPM generators but since it adapted packaging, this is not needed anymore hence we are removing it. We tested this change in the past when we asked other maintainers to explicitly BuildRequire python-3setuptools. Some of them responded, some not. Our analysis was based on greping sources for any mention of setuptools, such as import setuptools or from setuptools import. Nowadays, the same grep based query showed us roughly the same number (about 335 + 72 that failed to be analysed) of packages relying on python3-setuptools. To see direct impact we removed this Require from python-devel package used in testing python3.10 COPR. It showed us 140 packages affected by this change. Even though it is fewer than expected 300+ packages, to avoid any breakages we plan to do a mass spec update on all of them to explicitly BuildRequire python3-setuptools. Some of them might build because they fallback to distutils if dependency on python3-setuptools is not satisfied.

Below is the list of packages we plan to update with mass spec rebuild. If you wish to opt out of this update, please edit this page and move your package to the list of packages to be ignored.

Packages to be updated: GeographicLib rmattes smani R2spec pingou barman slaanesh tsao btrfs-progs ignatenkobrain josef ngompa sandeen bumpversion duriantang jdornak cranc lenkaseg electrum tredaell gajim michich gns3-gui kwizart gns3-net-converter kwizart kismon fab langtable mfabian lecm spredzy legofy lkf williamjmorenor mapserver devrim jujens oliver pali smani mysql-connector-python hhorak hubbitus hvad mschorm percol hubbitus porcupine kushal protonvpn-cli calexandru2018 jflory7 pyhunspell mfabian pyjokes pbrobinson pwhalen pyscard orion sjenning python-Pyped uggla python-ROPGadget mikep python-acoustid terjeros python-aiodns fantom python-arviz sergiopr python-b2sdk jonny python-btchip jonny xenithorb python-cerealizer spot python-cmigemo hubbitus python-construct moezroy terjeros python-css-parser zbyszek python-debrepo ktdreyer python-dialog mjakubicek noodles raphgro sundaram zbyszek python-django-contact-form mrunge python-django-registration orphan python-django-reversion mrunge python-django-tagging jdornak mrunge piotrp python-dtfabric fab python-flake8-docstrings cottsay python-flask-sphinx-themes devrim orphan python-formats uggla python-fypp rathann python-google-i18n-address pwouters python-googletrans lyessaadi python-heapdict qulogic python-hgdistver fab python-html5-parser kevin python-humblewx rickardlindberg python-i3ipc msimacek python-kerberos rcritten simo python-lark-parser totol python-logfury jonny python-mailmerge bex python-meld3 kevin stevetraylen tsao python-mnemonic jonny python-nbxmpp michich python-oauth2 ignatenkobrain pjp spot sundaram python-poyo chedi wakko666 python-precis_i18n michich python-proteus sharkcz python-publicsuffix2 rathann python-pulsectl pfrields python-pycha potty sharkcz python-pylons-sphinx-themes abompard python-pymc3 sergiopr python-pyotp icon python-pyroute2 jirka pavlix psavelye python-pytest-astropy-header sergiopr python-pytest-watch jujens python-relatorio sharkcz python-rmtest lberk mgoodwin nathans python-shamir-mnemonic jonny python-smbc twaugh zdohnal python-spdx jbertozzi python-spdx-lookup jbertozzi python-tempdir rathann python-tortilla uggla python-trezor jonny python-unidecode pjp sundaram python-unidiff dcallagh python-upt-cpan jbertozzi python-upt-fedora jbertozzi python-upt-pypi jbertozzi python-upt-rubygems jbertozzi python-xlwt leamas moezroy rathann qr-code-generator xvitaly rpmspectool nphilipp sepolicy_analysis vmojzis stomppy stevetraylen trytond-account sharkcz trytond-account-be sharkcz trytond-account-de-skr03 sharkcz trytond-account-invoice sharkcz trytond-account-invoice-history sharkcz trytond-account-invoice-line-standalone sharkcz trytond-account-product sharkcz trytond-account-statement sharkcz trytond-account-stock-anglo-saxon sharkcz trytond-account-stock-continental sharkcz trytond-analytic-account sharkcz trytond-analytic-invoice sharkcz trytond-analytic-purchase sharkcz trytond-analytic-sale sharkcz trytond-company sharkcz trytond-company-work-time sharkcz trytond-country sharkcz trytond-currency sharkcz trytond-dashboard sharkcz trytond-google-maps sharkcz trytond-ldap-authentication sharkcz trytond-party sharkcz trytond-party-siret sharkcz trytond-product sharkcz trytond-product-cost-fifo sharkcz trytond-product-cost-history sharkcz trytond-product-price-list sharkcz trytond-project sharkcz trytond-project-plan sharkcz trytond-project-revenue sharkcz trytond-purchase sharkcz trytond-purchase-invoice-line-standalone sharkcz trytond-sale sharkcz trytond-sale-opportunity sharkcz trytond-sale-price-list sharkcz trytond-stock sharkcz trytond-stock-forecast sharkcz trytond-stock-inventory-location sharkcz trytond-stock-location-sequence sharkcz trytond-stock-product-location sharkcz trytond-stock-supply sharkcz trytond-stock-supply-day sharkcz trytond-timesheet sharkcz txt2tags junghans ubertooth avsej unicorn fab mikep upt jbertozzi winpdb spot yawn jsafrane miminar vcrhonek

Packages to be ignored: fontforge - false positive xrootd - false positive

Packages that failed to be analysed: 0ad ignatenkobrain pcpa pwalter GConf2 alexl buc caillon caolanm mbarnes rhughes ssp walters TeXmacs jnovy orion anaconda anaconda-maint jkonecny m4rtink rvykydal sbueno vpodzime vponcova astrometry lupinix bamf jspaleta salimma boost denisarnaud jwakely trodgers colobot suve cozy suve cppcheck c72578 jussilehtola sgrubb criu adrian avagin cxxtest mgieseki dnf dmach jmracek jrohel mblaha pkratoch eclipse-pydev jjohnstn orphan edk2 bonzini crobinso kraxel etcd cypret eparis gscrivano jchaloup lsm5 strigazi walters fonts-tweak-tool jamesni tagoh gdl orion gimp-resynthesizer luya global cheeselee landgraf google-noto-emoji-fonts mfabian pwu gst-devtools limb guitarix bsjones tartina verdurin hfg-gmuend-openmoji-fonts mavit kernel acaringi airlied ajax bskeggs eparis glisse jcline jforbes jwboyer jwilson jwrdegoede kernel-maint lgoncalv linville myoung nhorman patrickt quintela sandeen steved kernel-tools acaringi jcline jforbes jwboyer lgoncalv patrickt pbrobinson kicad avigne coremodule lkundrak stevenfalco tnorth lammps ellio167 junghans libabigail dodji sinnykumari libguestfs mdbooth rjones libiptcdata dcm hobbes1069 jchaloup libkkc ueno libproxy amigadave cicku danw npmccallum libreoffice caolanm dtardon erack sbergmann libsvm besser82 jjames link-grammar devos fabiand limb nest ankursinha nispor cathay4t ffmancera opal-prd hegdevasant openbabel alexpl jussilehtola rathann openexr hobbes1069 proxyfuzz psklenar python-OBD rathann python-caja monnerat raveit65 python-flask-rstpages rmarko python-graph-tool ankursinha python-matrix-nio ankursinha python-pivy hobbes1069 zultron python-pycha potty sharkcz python-pyqtgraph swt2c python-pytest-spec fab python-requests-cache codeblock hobbes1069 python-uranium-lulzbot orphan python-webpy mrunge python-wsaccel jujens qemu berrange bonzini crobinso dwmw2 ehabkost jforbes lkundrak quintela rjones root ellert rust-pyo3 decathorpe rust-python3-sys decathorpe seqan2 sagitter sugar-browse aperezbios callkalpa chimosky manuq pbrobinson sugar-calculator callkalpa chimosky pbrobinson tuxbrewr suricata jtaylor sgrubb texlive jnovy spot than tiled ablu suve tsung cicku tartare unity-gtk-module besser82 vdrift limb rmattes voikko-fi vpv weechat asrob gchamoul hguemar niveusluna salimma stingray xemacs-packages-extra jjames stevetraylen zinnia liangsuilong pwu

Feedback

Benefit to Fedora

From Fedora Packaging Guidelines: It is important that your package list all necessary build dependencies using the BuildRequires: tag. As our testing showed, this is not true for many packages. Some of them can successfully build either with or without setuptools (they use try-except import and fallback to distutils from the standard library). Such packages are especially dangerous when not BuildRequiring setuptools -- they can produce different results depending on the presence of setuptools: either an .egg-info metadata directory (w/setuptools) or .egg-info text file (w/distutils). RPM has troubles when upgrading directories to files.

Scope

We will coordinate the work in a side tag and merge when ready.

  • Proposal owners:
    1. Test affected packages in Copr.
    2. Do the mass spec update to introduce missing BuildRequire to them.
  • Other developers: There should be no additional work for other developers. BuildRequiring setuptools might not be enough for all packages, but we will take care of them manually if it happens.
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives: N/A

Upgrade/compatibility impact

All affected packages needs rebuild after the mass spec update.

How To Test

Interested testers can push explicit BuildRequire on setuptools to the distgit and see in our Python 3.10 COPR whether the package starts to build again. Webhook should trigger rebuild automatically on new commit in rawhide branch.

User Experience

Regular distro users shouldn't notice any change in system behaviour.

Dependencies

140 packages will need to BuildRequire setuptools explicitly. This will be done by the mass spec update.

Contingency Plan

  • Contingency mechanism: Commit removing Requires on python-setuptools will be reverted.
  • Contingency deadline: mass rebuild
  • Blocks release? No

Documentation

This page is a documentation, this is not a user facing change.

Release Notes