Created
January 6, 2022 22:42
-
-
Save fuchsmich/1ccf4773243cf8a4774ab483505dc99f to your computer and use it in GitHub Desktop.
python PKGBUILD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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> | |
shopt -s extglob | |
pkgbase=python | |
pkgname=(python python-tests) | |
pkgver=3.10.1 | |
pkgrel=3 | |
_pybasever=${pkgver%.*} | |
pkgdesc="Next generation of the python high-level scripting language" | |
arch=('x86_64' 'armv7h') | |
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} | |
https://bugs.python.org/file50485/cmp_interned_strings.patch | |
https://github.com/python/cpython/commit/934a24c641da5bc4bdb724e901adc20f9a5dff40.patch | |
0001-Revert-bpo-44050-Extension-modules-can-share-state-w.patch) | |
sha512sums=('1c559e33f1252e51bafb941c380de16f142c0735858363c84cb8dbed6767843de3af126889c2826ffb94bd4777d7cdfc31040301c8c74de56af52b80b1aa9e76' | |
'SKIP' | |
'd97fe57566169bfc06713d4aa420e1c85c0b9c1d0f96d61cdd3a4a86b2340753a80c56e0d48c16b513e3f639cee83b7fbbc0c21045d2f37bf37543048f914557' | |
'4257fabc494135313ad1df2e1b3e3ae1109b049a08b4968be6e54788327aefa81e3374e96b5dfedfc1488ec22a481c95900e250a9e3c917f7632f58030329ada' | |
'7d7c4ab8639a1d678005c3666668bf55c33644799356c8604c12f7c7c087b136b0295ebb1670ecd5ac40e43a8cfe07c15c04b76a6f2fa202129ac47be8f26b4f') | |
validpgpkeys=('0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D' # Ned Deily (Python release signing key) <nad@python.org> | |
'E3FF2839C048B25C084DEBE9B26995E310250568' # Łukasz Langa (GPG langa.pl) <lukasz@langa.pl> | |
'A035C8C19219BA821ECEA86B64E628F8D684696D') # Pablo Galindo Salgado <pablogsal@gmail.com> | |
prepare() { | |
cd Python-${pkgver} | |
# fixes crashes in sagemath - by arojas | |
patch -Np1 -i ../934a24c641da5bc4bdb724e901adc20f9a5dff40.patch | |
# FS#72979 | |
patch -Np1 -i ../cmp_interned_strings.patch | |
# https://bugs.archlinux.org/task/73002 | |
patch -Np1 -i ../0001-Revert-bpo-44050-Extension-modules-can-share-state-w.patch | |
# 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 | |
CFLAGS="${CFLAGS/-O2/-O3}" | |
# 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_socket: test.test_socket.RDSTest.testPeek hangs https://bugs.python.org/issue35247 | |
# # test_tk: tkinter.test.test_tkinter.test_colorchooser.DefaultRootTest hangs | |
# # test_ttk_guionly: test failures about "AssertionError: TclError not raised" | |
# | |
# 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_socket -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) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment