From 72082c95387b4d6cc3feaf8d652531e0bde43323 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 27 Sep 2020 16:07:18 +0000
Subject: python: update to 3.8.3

---
 abs/core/python/PKGBUILD                           | 105 +++++++++++++++------
 abs/core/python/dont-make-libpython-readonly.patch |  13 ---
 abs/core/python/genrebuild                         |   7 ++
 3 files changed, 81 insertions(+), 44 deletions(-)
 delete mode 100644 abs/core/python/dont-make-libpython-readonly.patch
 create mode 100755 abs/core/python/genrebuild

diff --git a/abs/core/python/PKGBUILD b/abs/core/python/PKGBUILD
index 5a3a401..ffa1189 100644
--- a/abs/core/python/PKGBUILD
+++ b/abs/core/python/PKGBUILD
@@ -1,48 +1,43 @@
-# $Id$
 # Maintainer: Angel Velasquez <angvp@archlinux.org>
 # Maintainer: Felix Yan <felixonmars@archlinux.org>
 # Contributor: Stéphane Gaudreault <stephane@archlinux.org>
 # Contributor: Allan McRae <allan@archlinux.org>
 # Contributor: Jason Chu <jason@archlinux.org>
 
-pkgname=python
-pkgver=3.6.8
+shopt -s extglob
+
+pkgbase=python
+pkgname=(python python-tests)
+pkgver=3.8.3
 pkgrel=1
-_pybasever=3.6
+_pybasever=${pkgver%.*}
 pkgdesc="Next generation of the python high-level scripting language"
 arch=('x86_64')
 license=('custom')
-url="http://www.python.org/"
-depends=('expat' 'bzip2' 'gdbm' 'openssl' 'libffi' 'zlib')
+url="https://www.python.org/"
+depends=('expat' 'bzip2' 'gdbm' 'openssl' 'libffi' 'zlib' 'libnsl')
 makedepends=('tk' 'sqlite' 'valgrind' 'bluez-libs' 'mpdecimal' 'llvm' 'gdb' 'xorg-server-xvfb')
-optdepends=('python-setuptools'
-            'python-pip'
-            'sqlite'
-            'mpdecimal: for decimal'
-            'xz: for lzma'
-            'tk: for tkinter')
-provides=('python3')
-replaces=('python3')
-source=("https://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz"{,.asc}
-        dont-make-libpython-readonly.patch)
-sha512sums=('b17867e451ebe662f50df83ed112d3656c089e7d750651ea640052b01b713b58e66aac9e082f71fd16f5b5510bc9b797f5ccd30f5399581e9aa406197f02938a'
-            'SKIP'
-            '2ef96708d5b13ae2a3d2cc62c87b4780e60ecfce914e190564492def3a11d5e56977659f41c7f9d12266e58050c766bce4e2b5d50b708eb792794fa8357920c4')
-validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D')  # Ned Deily (Python release signing key) <nad@python.org>
+source=("https://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz"{,.asc})
+sha512sums=('3103bd8d944f3905eee3a2b52fd1f5c7dee380f9c5a99ad35a401fcba5a9117c3860ecec5cb47a92712c6549442fd2fa553a15c5657241dd09f5d00b9ed4f0f4'
+            'SKIP')
+validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D'  # Ned Deily (Python release signing key) <nad@python.org>
+              'E3FF2839C048B25C084DEBE9B26995E310250568') # Łukasz Langa (GPG langa.pl) <lukasz@langa.pl>
 
 prepare() {
   cd Python-${pkgver}
 
-  # FS#45809
-  patch -p1 -i ../dont-make-libpython-readonly.patch
+  # https://bugs.python.org/issue34587
+  sed -i -e "s|testCongestion|disabled_&|" Lib/test/test_socket.py
 
   # 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, zlib, libffi, and libmpdec),
+  # 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/zlib
   rm -r Modules/_ctypes/{darwin,libffi}*
   rm -r Modules/_decimal/libmpdec
 }
@@ -50,10 +45,15 @@ prepare() {
 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-threads \
               --with-computed-gotos \
               --enable-optimizations \
               --with-lto \
@@ -69,12 +69,14 @@ build() {
   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 1280x720x24 -ac +extension GLX" -a -n "$servernum" make EXTRA_CFLAGS="$CFLAGS"
+  LC_CTYPE=en_US.UTF-8 xvfb-run -s "-screen 0 1920x1080x16 -ac +extension GLX" -a -n "$servernum" make EXTRA_CFLAGS="$CFLAGS"
 }
 
 check() {
-  # test_gdb is expected to fail with LTO~
-  # test_idle, test_tk, test_ttk_guionly segfaults on 3.6.5
+  # test_gdb is expected to fail with LTO
+  # test_idle, test_tk, test_ttk_guionly segfaults since 3.6.5
+  # test_socket hangs since 3.8.2
+  # test_decimal fails since 3.8.2
 
   cd Python-${pkgver}
 
@@ -83,18 +85,34 @@ check() {
   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 1280x720x24 -ac +extension GLX" -a -n "$servernum" \
-    "${srcdir}/Python-${pkgver}/python" -m test.regrtest -v -uall -x test_gdb -x test_idle -x test_tk -x test_ttk_guionly
+  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_gdb -x test_idle -x test_tk -x test_ttk_guionly \
+                                                                  -x test_socket -x test_decimal
 }
 
-package() {
+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
@@ -110,3 +128,28 @@ package() {
   # 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)
+}
diff --git a/abs/core/python/dont-make-libpython-readonly.patch b/abs/core/python/dont-make-libpython-readonly.patch
deleted file mode 100644
index 92308bf..0000000
--- a/abs/core/python/dont-make-libpython-readonly.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index ce2c0aa..7d6dcf7 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -60,7 +60,7 @@ INSTALL_DATA=	@INSTALL_DATA@
- # Shared libraries must be installed with executable mode on some systems;
- # rather than figuring out exactly which, we always give them executable mode.
- # Also, making them read-only seems to be a good idea...
--INSTALL_SHARED= ${INSTALL} -m 555
-+INSTALL_SHARED= ${INSTALL} -m 755
- 
- MKDIR_P=	@MKDIR_P@
- 
diff --git a/abs/core/python/genrebuild b/abs/core/python/genrebuild
new file mode 100755
index 0000000..5f447b0
--- /dev/null
+++ b/abs/core/python/genrebuild
@@ -0,0 +1,7 @@
+#!/bin/bash
+(
+_pyver=$(expac %v python | grep -oP '^[0-9]+\.[0-9]+')
+pacman -Fq /usr/lib/python${_pyver}/ | grep -v archlinuxcn | cut -d / -f 2
+sogrep all libpython${_pyver}m.so
+printf "%s\n" boost vim
+) | sort -u
-- 
cgit v0.12