Date: Sunday, October 10, 2021 @ 15:53:59 Author: felixonmars Revision: 425651
archrelease: copy trunk to community-staging-x86_64 Added: python/repos/community-staging-x86_64/ python/repos/community-staging-x86_64/PKGBUILD (from rev 425650, python/trunk/PKGBUILD) python/repos/community-staging-x86_64/genrebuild (from rev 425650, python/trunk/genrebuild) python/repos/community-staging-x86_64/mpdecimal-2.5.1.patch (from rev 425650, python/trunk/mpdecimal-2.5.1.patch) -----------------------+ PKGBUILD | 156 ++++++++++++++++++++++++++++++++++++++++++++++++ genrebuild | 14 ++++ mpdecimal-2.5.1.patch | 45 +++++++++++++ 3 files changed, 215 insertions(+) Copied: python/repos/community-staging-x86_64/PKGBUILD (from rev 425650, python/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2021-10-10 15:53:59 UTC (rev 425651) @@ -0,0 +1,156 @@ +# Maintainer: Angel Velasquez <an...@archlinux.org> +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Stéphane Gaudreault <steph...@archlinux.org> +# Contributor: Allan McRae <al...@archlinux.org> +# Contributor: Jason Chu <ja...@archlinux.org> + +shopt -s extglob + +pkgbase=python +pkgname=(python python-tests) +pkgver=3.9.7 +pkgrel=2 +_pybasever=${pkgver%.*} +pkgdesc="Next generation of the python high-level scripting language" +arch=('x86_64') +license=('custom') +url="https://www.python.org/" +depends=('bzip2' 'expat' 'gdbm' 'libffi' 'libnsl' 'libxcrypt' 'openssl' 'zlib') +makedepends=('tk' 'sqlite' 'bluez-libs' 'mpdecimal' 'llvm' 'gdb' 'xorg-server-xvfb' 'ttf-font') +source=("https://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz"{,.asc} + mpdecimal-2.5.1.patch) +sha512sums=('55139776ab58a40f9e1e70613d7071d559ef9e51e32a77791422aac134322c21a49f0348c42813214b69789c589367eae43e16d4ae838a73daf37617e966b735' + 'SKIP' + '58f683cbfdc6aa84c03d068c1bc2f1d8d2c17ba4f7b632c14ab1d529d8332e767354266c3815e239427497fff1a42ec2a37739ea312d24cb76a69dcf1c98c0ad') +validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D' # Ned Deily (Python release signing key) <n...@python.org> + 'E3FF2839C048B25C084DEBE9B26995E310250568') # Łukasz Langa (GPG langa.pl) <luk...@langa.pl> + +prepare() { + cd Python-${pkgver} + + patch -p1 -i ../mpdecimal-2.5.1.patch + + # https://bugs.python.org/issue41346 + sed -i 's/-j0 //' Makefile.pre.in + + # FS#23997 + sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python|" Lib/cgi.py + + # Speed up LTO + sed -i -e "s|-flto |-flto=4 |g" configure configure.ac + + # 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 + rm -r Modules/_ctypes/{darwin,libffi}* + rm -r Modules/_decimal/libmpdec +} + +build() { + cd Python-${pkgver} + + # PGO should be done with -O3 + # Also included the -fno-semantic-interposition optimization: + # https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup + CFLAGS="${CFLAGS/-O2/-O3} -fno-semantic-interposition" + LDFLAGS="$LDFLAGS -fno-semantic-interposition" + + # Disable bundled pip & setuptools + ./configure --prefix=/usr \ + --enable-shared \ + --with-computed-gotos \ + --enable-optimizations \ + --with-lto \ + --enable-ipv6 \ + --with-system-expat \ + --with-dbmliborder=gdbm:ndbm \ + --with-system-ffi \ + --with-system-libmpdec \ + --enable-loadable-sqlite-extensions \ + --without-ensurepip \ + --with-tzpath=/usr/share/zoneinfo + + # Obtain next free server number for xvfb-run; this even works in a chroot environment. + export servernum=99 + while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done + + LC_CTYPE=en_US.UTF-8 xvfb-run -s "-screen 0 1920x1080x16 -ac +extension GLX" -a -n "$servernum" make EXTRA_CFLAGS="$CFLAGS" +} + +check() { + # test_tk and test_ttk_guionly: https://bugs.python.org/issue43139 + + cd Python-${pkgver} + + # Obtain next free server number for xvfb-run; this even works in a chroot environment. + export servernum=99 + while ! xvfb-run -a -n "$servernum" /bin/true 2>/dev/null; do servernum=$((servernum+1)); done + + 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_guionly +} + +package_python() { + optdepends=('python-setuptools' + 'python-pip' + 'sqlite' + 'mpdecimal: for decimal' + 'xz: for lzma' + 'tk: for tkinter') + provides=('python3') + replaces=('python3') + + cd Python-${pkgver} + + # Hack to avoid building again + sed -i 's/^all:.*$/all: build_all/' Makefile + + # PGO should be done with -O3 + CFLAGS="${CFLAGS/-O2/-O3}" + + make DESTDIR="${pkgdir}" EXTRA_CFLAGS="$CFLAGS" install + + # Split tests + rm -r "$pkgdir"/usr/lib/python*/{test,ctypes/test,distutils/tests,idlelib/idle_test,lib2to3/tests,sqlite3/test,tkinter/test,unittest/test} + + # Why are these not done by default... + ln -s python3 "${pkgdir}"/usr/bin/python + ln -s python3-config "${pkgdir}"/usr/bin/python-config + ln -s idle3 "${pkgdir}"/usr/bin/idle + ln -s pydoc3 "${pkgdir}"/usr/bin/pydoc + ln -s python${_pybasever}.1 "${pkgdir}"/usr/share/man/man1/python.1 + + # some useful "stuff" FS#46146 + install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts} + install -m755 Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}"/usr/lib/python${_pybasever}/Tools/i18n/ + install -m755 Tools/scripts/{README,*py} "${pkgdir}"/usr/lib/python${_pybasever}/Tools/scripts/ + + # License + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} + +package_python-tests() { + pkgdesc="Regression tests packages for Python" + depends=('python') + + cd Python-${pkgver} + + make DESTDIR="${pkgdir}" EXTRA_CFLAGS="$CFLAGS" libinstall + cd "$pkgdir"/usr/lib/python*/ + rm -r !(test|ctypes|distutils|idlelib|lib2to3|sqlite3|tkinter|unittest) + cd "$pkgdir"/usr/lib/python*/ctypes + rm -r !(test) + cd "$pkgdir"/usr/lib/python*/distutils + rm -r !(tests) + cd "$pkgdir"/usr/lib/python*/idlelib + rm -r !(idle_test) + cd "$pkgdir"/usr/lib/python*/lib2to3 + rm -r !(tests) + cd "$pkgdir"/usr/lib/python*/sqlite3 + rm -r !(test) + cd "$pkgdir"/usr/lib/python*/tkinter + rm -r !(test) + cd "$pkgdir"/usr/lib/python*/unittest + rm -r !(test) +} Copied: python/repos/community-staging-x86_64/genrebuild (from rev 425650, python/trunk/genrebuild) =================================================================== --- community-staging-x86_64/genrebuild (rev 0) +++ community-staging-x86_64/genrebuild 2021-10-10 15:53:59 UTC (rev 425651) @@ -0,0 +1,14 @@ +#!/bin/bash + +pyver=$(pacman -S --print-format %v python | grep -oP '^[0-9]+\.[0-9]+') +exclude=('python2' 'python2-.*' 'pypy3\?' 'cython2' 'cuda' 'metasploit' + 'mysql-workbench' 'ntop' 'dia' 'ghidra' 'kross-interpreters' + 'kodi-gbm' 'kodi-wayland' 'kodi-x11') + +{ +pacman -Fq /usr/lib/python${pyver}/ | grep -v archlinuxcn | cut -d / -f 2 +pacman -Fxq "\.cpython-${pyver/.}.pyc$" | grep -v archlinuxcn | cut -d / -f 2 +sogrep all libpython${pyver}.so +ssh dragon.archlinux.org "parallel \"zstdgrep -q 'Py_Initialize\|PyInit_\|PyModule_Create2' {} && pacman -Qpq {}\" ::: /srv/ftp/pool/*/*.zst" +ssh dragon.archlinux.org "parallel \"xzgrep -q 'Py_Initialize\|PyInit_\|PyModule_Create2' {} && pacman -Qpq {}\" ::: /srv/ftp/pool/*/*.xz" +} | grep -xvf <(printf "%s\n" "${exclude[@]}") | sort -u Copied: python/repos/community-staging-x86_64/mpdecimal-2.5.1.patch (from rev 425650, python/trunk/mpdecimal-2.5.1.patch) =================================================================== --- community-staging-x86_64/mpdecimal-2.5.1.patch (rev 0) +++ community-staging-x86_64/mpdecimal-2.5.1.patch 2021-10-10 15:53:59 UTC (rev 425651) @@ -0,0 +1,45 @@ +From dd436be488bdca2123d12d1e148d85cb6f98be5f Mon Sep 17 00:00:00 2001 +From: Stefan Krah <sk...@bytereef.org> +Date: Sun, 10 Jan 2021 16:35:48 +0100 +Subject: [PATCH] Portability fixes. + +--- + Modules/_decimal/_decimal.c | 4 ++-- + setup.py | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c +index 664d45a90481d..bbd540bc376e2 100644 +--- a/Modules/_decimal/_decimal.c ++++ b/Modules/_decimal/_decimal.c +@@ -3295,7 +3295,7 @@ dec_format(PyObject *dec, PyObject *args) + } + else { + size_t n = strlen(spec.dot); +- if (n > 1 || (n == 1 && !isascii((uchar)spec.dot[0]))) { ++ if (n > 1 || (n == 1 && !isascii((unsigned char)spec.dot[0]))) { + /* fix locale dependent non-ascii characters */ + dot = dotsep_as_utf8(spec.dot); + if (dot == NULL) { +@@ -3304,7 +3304,7 @@ dec_format(PyObject *dec, PyObject *args) + spec.dot = PyBytes_AS_STRING(dot); + } + n = strlen(spec.sep); +- if (n > 1 || (n == 1 && !isascii((uchar)spec.sep[0]))) { ++ if (n > 1 || (n == 1 && !isascii((unsigned char)spec.sep[0]))) { + /* fix locale dependent non-ascii characters */ + sep = dotsep_as_utf8(spec.sep); + if (sep == NULL) { +diff --git a/setup.py b/setup.py +index ddc0bd067d4e4..c547a68664e8c 100644 +--- a/setup.py ++++ b/setup.py +@@ -2199,7 +2199,7 @@ def detect_decimal(self): + undef_macros = [] + if '--with-system-libmpdec' in sysconfig.get_config_var("CONFIG_ARGS"): + include_dirs = [] +- libraries = [':libmpdec.so.2'] ++ libraries = ['mpdec'] + sources = ['_decimal/_decimal.c'] + depends = ['_decimal/docstrings.h'] + else: