Please remove this {{Draft}}template, when you're sure the page is complete and correct.
|
Introduction
When a new major python version is packaged, all binary python modules and all packages linked with libpython.so must be rebuilt.
However there's a trick for rebuilding the first packages in order to bootstrap the new python, because of dependency cycles.
The initial ordering is listed at top of python.spec.
In order to minimize cauldron disrupting, we'll usually rebuild the packages into core/updates_testing. Once we've enough rebuild pkgs, they'll be moved into core/release and then any remaining pkg will be fixed.
Pass 0: bootstrapping
Remember : follow (and update if needed) the initial ordering at top of python.spec.
Preparation : disable python support in some core pkgs
First the following packages needs to be build with bootstrap mode ("%bcond_with bootstrap" => "%bcond_without bootstrap"), which will temporary disable python support:
(they will need to be rebuild in non boostrap mode later of course)
Updating python
Then we can update python3 per se.
It might be needed to update python-macros and python-rpm-generators at this stage (usually by syncing with Fedora)
Rebuild a cople important python pkgs against new python in bootstrap mode
We then need to rebuild the following pkgs for new python in non bootstrap mode:
- python-setuptools (%bcond_without bootstrap)
- python-flit-core (%bcond_without bootstrap)
- python-packaging (%bcond_without bootstrap)
- python-pip (%bcond_with doc)
- python-wheel (%bcond_without bootstrap)
Rebuild a cople important python pkgs against new python in non bootstrap mode
We then need to rebuild the following pkgs for new python in non bootstrap mode (or just for new python):
- python-rpm-generators (%bcond_with bootstrap)
- python-setuptools (%bcond_with bootstrap)
- python-wheel (%bcond_with bootstrap)
- rpm
- python-packaging (%bcond_with bootstrap)
- pyproject-rpm-macros (%bcond_with bootstrap)
- python-cython
- python-numpy
- boost
- meson
- ninja
- x11-proto-devel
- gdb (%bcond_without python)
- python-coverage
- python-nose
- python-yaml
- python-markdown
- python-markupsafe
- python-beaker
- python-typing-extensions
- python-setuptools-scm
- python-tomli
- python-six
- python-dateutil
- python-pbr
- python-linecache2
- python-funcsigs
- python-mock
- python-mako
- python-pygments
- python-charset-normalizer (%bcond_with test)
- python-idna
- python-urllib3 (%bcond_with check)
- python-requests
- python-chardet
- python-docutils
- gobject-introspection
- python-enchant
- file
- rpmlint
- rpm-mageia-setup
- gobject-introspection (again with rpm-mageia-setup)
- bm
- python-httplib2
- python-pyparsing
- mgarepo
First batch of important packages
Then the most important packages have to be built, starting from their various leaf dependencies recursively. After these have been built, a targeted rebuild should be requested for the rest.
Currently these packages are recommended to have been built before a targeted rebuild after a python ABI change:
- python-pluggy
- python-editables
- python-pathspec
- python-calver
- python-trove-classifiers
- python-hatchling
- python-hatch-vcs
- python-hatch-fancy-pypi-readme
- python-attrs
- python-py
- python-iniconfig
- python-pytest
- python-sphinx-rtd-theme
- python-sphinx-theme-alabaster
- python-pytz
- python-babel
- python-imagesize
- python-jinja2
- python-snowballstemmer
- python-sphinxcontrib-applehelp
- python-sphinxcontrib-devhelp
- python-sphinxcontrib-htmlhelp
- python-sphinxcontrib-jsmath
- python-sphinxcontrib-qthelp
- python-sphinxcontrib-serializinghtml
- python-sphinxcontrib-websupport
- python-sphinx
Next batch
(…)