core/python to 3.13.1-1

This commit is contained in:
Kevin Mihelich 2024-12-22 18:09:35 +00:00
parent daabf0eb9d
commit 8f1dcb8abd
4 changed files with 98 additions and 12 deletions

View file

@ -1,6 +1,6 @@
pkgbase = python
pkgdesc = The Python programming language
pkgver = 3.12.7
pkgver = 3.13.1
pkgrel = 1
url = https://www.python.org/
arch = x86_64
@ -22,14 +22,14 @@ pkgbase = python
depends = zlib
depends = tzdata
depends = mpdecimal
source = https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz
source = https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz.asc
source = https://www.python.org/ftp/python/3.13.1/Python-3.13.1.tar.xz
source = https://www.python.org/ftp/python/3.13.1/Python-3.13.1.tar.xz.asc
source = EXTERNALLY-MANAGED
validpgpkeys = 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
validpgpkeys = E3FF2839C048B25C084DEBE9B26995E310250568
validpgpkeys = A035C8C19219BA821ECEA86B64E628F8D684696D
validpgpkeys = 7169605F62C751356D054A26A821E680E5FA6305
sha512sums = 4a363d3f852ad8f4fd1484aa4cec35494a3811be48ef67fadb2bdf2e2489ed07dc78fad6ab475257db503ddd64d39f9800f23a1c94b6bbd15b7f632cff0c90ae
sha512sums = 056c9b5fc0a6b540f41513d045f43c1ed463d15e0f345cecec703ec9c2335e53b4beb19de9c74ab2b236b023f934d5fd9ae7727a808634eaa01cfe66018a9a35
sha512sums = SKIP
sha512sums = 62a6fbfbaeaa3ba7c54e109d9c3b7f67e73bb21986da4c1fcc5d28cca83d71e0fcae28e1fc70ee8ddce7dea8cd0b64e18d1031dae3a2eae5eaa379c53efd53a0

View file

@ -13,7 +13,7 @@ shopt -s extglob
pkgbase=python
pkgname=(python python-tests)
pkgver=3.12.7
pkgver=3.13.1
pkgrel=1
_pybasever=${pkgver%.*}
pkgdesc="The Python programming language"
@ -24,7 +24,7 @@ depends=('bzip2' 'expat' 'gdbm' 'libffi' 'libnsl' 'libxcrypt' 'openssl' 'zlib' '
makedepends=('tk' 'sqlite' 'bluez-libs' 'llvm' 'gdb' 'xorg-server-xvfb' 'ttf-font')
source=("https://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz"{,.asc}
EXTERNALLY-MANAGED)
sha512sums=('4a363d3f852ad8f4fd1484aa4cec35494a3811be48ef67fadb2bdf2e2489ed07dc78fad6ab475257db503ddd64d39f9800f23a1c94b6bbd15b7f632cff0c90ae'
sha512sums=('056c9b5fc0a6b540f41513d045f43c1ed463d15e0f345cecec703ec9c2335e53b4beb19de9c74ab2b236b023f934d5fd9ae7727a808634eaa01cfe66018a9a35'
'SKIP'
'62a6fbfbaeaa3ba7c54e109d9c3b7f67e73bb21986da4c1fcc5d28cca83d71e0fcae28e1fc70ee8ddce7dea8cd0b64e18d1031dae3a2eae5eaa379c53efd53a0')
validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D' # Ned Deily (Python release signing key) <nad@python.org>
@ -35,9 +35,6 @@ validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D' # Ned Deily (Python re
prepare() {
cd Python-${pkgver}
# FS#23997
sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python|" Lib/cgi.py
# Ensure that we are using the system copy of various libraries (expat, libffi, and libmpdec),
# rather than copies shipped in the tarball
rm -r Modules/expat
@ -78,6 +75,7 @@ check() {
# test_socket: https://github.com/python/cpython/issues/79428
# test_unittest: https://github.com/python/cpython/issues/108927
# test_tkk: AssertionError: Tuples differ: (0,) != ('0',)
# test_ssl: flaky tests issues
cd Python-${pkgver}
@ -88,7 +86,7 @@ check() {
LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \
LC_CTYPE=en_US.UTF-8 xvfb-run -s "-screen 0 1920x1080x16 -ac +extension GLX" -a -n "$servernum" \
"${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_tk -x test_ttk -x test_ttk.test_widgets \
-x test_tkinter -x test_pyexpat -x test_socket -x test_unittest
-x test_tkinter -x test_pyexpat -x test_socket -x test_unittest -x test_ssl
}
package_python() {

89
core/python/README.md Normal file
View file

@ -0,0 +1,89 @@
# 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:
```bash
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:
- [python-build]
- [python-flit-core]
- [python-installer]
- [python-packaging]
- [python-pyproject-hooks]
- [python-setuptools]
- [python-wheel]
### 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:
```bash
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.
[PEP 517]: https://peps.python.org/pep-0517/
[python-bootstrap]: https://gitlab.archlinux.org/archlinux/python-bootstrap/
[release for python-bootstrap]: https://gitlab.archlinux.org/archlinux/python-bootstrap/#releases
[python-build]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-build/
[python-flit-core]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-flit-core/
[python-installer]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-installer/
[python-packaging]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-packaging/
[python-pyperformance]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-pyperformance/
[python-pyproject-hooks]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-pyproject-hooks/
[python-setuptools]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-setuptools/
[python-wheel]: https://gitlab.archlinux.org/archlinux/packaging/packages/python-wheel/
[python]: https://gitlab.archlinux.org/archlinux/packaging/packages/python/
[python-bootstrap#2]: https://gitlab.archlinux.org/archlinux/python-bootstrap/-/issues/2
[no_check_pkgs.sh]: https://gitlab.archlinux.org/archlinux/python-bootstrap/-/blob/b45ea748b507323500f8fda5a7eb0d40a53c46a1/scripts/no_check_pkgs.sh

View file

@ -1,8 +1,7 @@
#!/bin/bash
pyver=$(pacman -S --print-format %v python | grep -oP '^[0-9]+\.[0-9]+')
exclude=('python2' 'python2-.*' 'pypy3\?' 'cython2' 'cuda' 'cuda-tools'
'metasploit' 'dia' 'ghidra' 'kross-interpreters')
exclude=('pypy3\?' 'cuda' 'cuda-tools' 'metasploit' 'ghidra' 'polymake')
{
pacman -Fq /usr/lib/python${pyver}/ | grep -v archlinuxcn | cut -d / -f 2