PKGBUILDs/core/python
2024-12-22 18:09:35 +00:00
..
keys/pgp core/python to 3.12.3-1 2024-04-27 15:55:46 +00:00
.nvchecker.toml core/python to 3.12.5-1 2024-08-24 10:32:15 +00:00
.SRCINFO core/python to 3.13.1-1 2024-12-22 18:09:35 +00:00
canrebuild core/python to 3.12.3-1 2024-04-27 15:55:46 +00:00
EXTERNALLY-MANAGED core/python to 3.11.3-2 2023-06-12 13:59:50 +00:00
genrebuild core/python to 3.13.1-1 2024-12-22 18:09:35 +00:00
PKGBUILD core/python to 3.13.1-1 2024-12-22 18:09:35 +00:00
README.md core/python to 3.13.1-1 2024-12-22 18:09:35 +00:00

python

Benchmarking

The Python interperter can be benchmarked using the python-pyperformance package. Note that this tool creates virtualenv's to run the benchmarks in so all packages have to be available for the Python version under test on PyPi. To run these benchmarks:

pyperformance run -o baseline.json
pyperformance run -o new.json
pyperformance compare -O table baseline.json new.json

Bootstrapping new Python interpreter version

When a new Python interpreter version (e.g. a minor version update) is released, all dependent packages must be rebuild against it.

To make this possible, an initial set of packages (required for a PEP 517 based package build workflow), must be bootstrapped, as they depend on each other during build time. For bootstrapping we rely on the python-bootstrap project, which offers a custom integration for building the minimum required set of packages for initial bootstrap. With it, packages are installed including all dependencies vendored by upstream.

The following packages are currently part of the initial bootstrap set:

Prepare python-bootstrap

To be able to bootstrap the exact versions of the packages in the initial bootstrap set, the git submodules of the python-bootstrap project need to be updated to the respective versions.

Afterwards, a [relase for python-bootstrap] is created, so that the specific version can be relied upon when bootstrapping the packages of the initial bootstrap set.

Prepare ticket for devendoring of initial bootstrap set

To allow the devendoring of the initial bootstrap set, a ticket should be created for the python package, to track the required steps for devendoring the initial bootstrap set (e.g. similar to how it is done in python-bootstrap#2).

Update Python package

Once the python-bootstrap prerequisites are met, the python package is updated in the staging environment:

pkgctl version upgrade
pkgctl build --updpkgsums --staging
pkgctl release --db-update --staging

Bootstrap initial set of packages

Afterwards, the packages in the initial bootstrap set are bootstrapped against the updated Python interpreter in the staging environmet, by following the instructions in the respective README of each of those packages.

Devendor initial bootstrap set

Once all packages in the initial bootstrap set are in the staging environment, they are devendored by again following the instructions in the respective README of each of those packages.

Rebuild all packages without tests

Once the packages in the initial bootstrap set are devendored, all packages requiring python are rebuilt without tests (i.e. pkgctl build --nocheck --rebuild --staging).

In this first pass it may already be possible for some packages to be rebuilt with tests enabled (i.e. pkgctl build --rebuild --staging).

Rebuild packages with tests

All packages, that have been rebuilt against the new interpreter version without tests, must be rebuilt with tests in a second pass.

Running the no_check_pkgs.sh script against all package files in the staging environment of a local mirror may be used to detect those packages not yet built with tests enabled (note, that the script may output false-positives!).

Move to testing

Once all dependent packages have been rebuilt with tests enabled, all packages are moved from the staging to the testing environment.