diff options
Diffstat (limited to 'main/python3/APKBUILD')
-rw-r--r-- | main/python3/APKBUILD | 194 |
1 files changed, 106 insertions, 88 deletions
diff --git a/main/python3/APKBUILD b/main/python3/APKBUILD index 90036aa175a..6d580da114b 100644 --- a/main/python3/APKBUILD +++ b/main/python3/APKBUILD @@ -1,35 +1,38 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> # Contributor: Sheila Aman <sheila@vulpine.house> - pkgname=python3 # the python3-tkinter's pkgver needs to be synchronized with this. -pkgver=3.10.5 -_bluez_ver=5.64 +pkgver=3.12.3 _basever="${pkgver%.*}" -pkgrel=0 -pkgdesc="A high-level scripting language" +pkgrel=1 +pkgdesc="High-level scripting language" url="https://www.python.org/" arch="all" license="PSF-2.0" +# pyc0 comes last because the files are named without a unique substring subpackages=" $pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-tests::noarch - pythonispython3 + $pkgname-pyc:_default_pyc + $pkgname-pycache-pyc2 + $pkgname-pycache-pyc1 + $pkgname-pycache-pyc0 + $pkgname-gdbm + pyc:_pyc_meta:noarch " +depends="libssl3>=3.3.0" makedepends=" !gettext-dev - autoconf - autoconf-archive - automake + bluez-headers bzip2-dev expat-dev - gdbm-dev>=1.18.1-r0 + gdbm-dev libffi-dev - libtool linux-headers mpdecimal-dev + musl-libintl ncurses-dev openssl-dev readline-dev @@ -39,16 +42,19 @@ makedepends=" zlib-dev " source="https://www.python.org/ftp/python/$pkgver/Python-$pkgver.tar.xz - https://www.kernel.org/pub/linux/bluetooth/bluez-$_bluez_ver.tar.xz - fix-xattrs-glibc.patch + externally-managed musl-find_library.patch - custom-bluetooth-h-path.patch - arm-alignment.patch " options="net" # Required for tests builddir="$srcdir/Python-$pkgver" # secfixes: +# 3.11.5-r0: +# - CVE-2023-40217 +# 3.11.1-r0: +# - CVE-2022-45061 +# 3.10.5-r0: +# - CVE-2015-20107 # 3.9.5-r0: # - CVE-2021-29921 # 3.9.4-r0: @@ -70,31 +76,41 @@ builddir="$srcdir/Python-$pkgver" # 3.6.8-r1: # - CVE-2019-5010 +# was briefly present, and is in 3.16 +provides="pythonispython3=$pkgver-r$pkgrel" + prepare() { default_prepare # force system libs - rm -r Modules/expat \ - Modules/_ctypes/darwin* \ - Modules/_ctypes/libffi* - - mv "$srcdir"/bluez-$_bluez_ver/lib "$srcdir"/bluez-$_bluez_ver/bluetooth + rm -r Modules/expat +} - # Speed up LTO - sed -i -e "s|-flto |-flto=4 |g" configure configure.ac +build() { + # set thread stack size to 2MB so we don't segfault before we hit + # sys.getrecursionlimit() + # note: raised from 1 as we ran into some stack limit on x86_64 too + # sometimes, but not recursion + local stacksize=0x200000 - autoreconf -fi + # we want -O2 here for more speed for such a large interpreter. + export CFLAGS_NODIST="$CFLAGS -O2 -DTHREAD_STACK_SIZE=$stacksize" + export CXXFLAGS_NODIST="$CXXFLAGS -O2" + export LDFLAGS_NODIST="$LDFLAGS" - sed "s|@bluetoothdir@|\"$srcdir/bluez-$_bluez_ver\"|g" -i setup.py -} + case "$CARCH" in + ppc64le) + # FIXME: on ppc64le, the stack-clash-protection from gcc seems to segfault + # python.. sometimes. not sure if python or gcc bug (probably former) + # for an easy reproduction, run the testsuite of community/py3-lmdb + export CFLAGS_NODIST="${CFLAGS_NODIST/-fstack-clash-protection}" + export CXXFLAGS_NODIST="${CXXFLAGS_NODIST/-fstack-clash-protection}" + ;; + esac -build() { - # -Os overwrites --enable-optimizations - export CFLAGS="${CFLAGS/-Os/}" + # we set them via NODIST to not propagate them and duplicate them to modules + unset LDFLAGS CFLAGS CXXFLAGS CPPFLAGS - # Include bluez headers. Python only needs bluetooth/bluetoot.h and doesn't - # link against bluez. Depending on bluez-dev introduces a circular dep: - # Python -> bluez -> glib -> meson -> python ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -107,21 +123,10 @@ build() { --with-computed-gotos \ --with-dbmliborder=gdbm:ndbm \ --with-system-expat \ - --with-system-ffi \ --with-system-libmpdec \ - --without-ensurepip \ - --with-bluetoothdir="$srcdir/bluez-$_bluez_ver" + --without-ensurepip - # set thread stack size to 1MB so we don't segfault before we hit - # sys.getrecursionlimit() - # s390x needs more stack space due to its calling convention - # ppc64le reaches recursionlimit before segfault - local stacksize=0x100000 - case "$CARCH" in - s390x) stacksize=0x200000;; - ppc64le) stacksize=0x200000;; - esac - make EXTRA_CFLAGS="$CFLAGS -DTHREAD_STACK_SIZE=$stacksize" + make } check() { @@ -144,37 +149,23 @@ EOF local fail # musl related - fail="test__locale test_locale test_strptime test_re" # various musl locale deficiencies + fail="test__locale" # various musl locale deficiencies + fail="$fail test_locale" + fail="$fail test_re" fail="$fail test_c_locale_coercion" fail="$fail test_datetime" # hangs if 'tzdata' installed fail="$fail test_os" # fpathconf, ttyname errno values - fail="$fail test_posix" # sched_[gs]etscheduler not impl - fail="$fail test_shutil" # lchmod, requires real unzip # FIXME: failures needing investigation - fail="$fail test_faulthandler test_gdb" # hangs(?) - fail="$fail test_tokenize test_tools" # SLOW (~60s) - fail="$fail test_capi" # test.test_capi.EmbeddingTests - fail="$fail test_threadsignals" # test_{,r}lock_acquire_interruption - fail="$fail test_time" # strftime/strptime %Z related - fail="$fail test_cmath test_math" # hang(?) on x86 - fail="$fail test_hash test_plistlib" # fail on armhf fail="$fail test_ctypes" # fail on aarch64 (ctypes.test.test_win32.Structures) - fail="$fail test_cmd_line_script" # fails on x86_64 - fail="$fail test_multiprocessing_main_handling" # fails on x86_64 - fail="$fail test_runpy" # fails on x86_64 - fail="$fail test_threading" # hangs on all arches (except x86_64?) - fail="$fail test_selectors" # AssertionError: 'Python' not found in '' (python3.9) - fail="$fail test_nntplib" - fail="$fail test_asyncio" # hangs; routinely problematic (e.g. bpo-39101, bpo-41891, bpo-42183) # kernel related fail="$fail test_fcntl" # wants DNOTIFY, we don't have it + # test_clock_settime returns Function not implemented instead of the + # expected permission error in docker (CI). Disable for now. case "$CARCH" in - ppc64le) - fail="$fail test_buffer" - ;; + ppc64le) fail="$fail test_time";; esac make quicktest TESTOPTS="-j${JOBS:-$(nproc)} --exclude $fail" @@ -183,16 +174,16 @@ EOF package() { make -j1 DESTDIR="$pkgdir" EXTRA_CFLAGS="$CFLAGS" install maninstall install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE + + install -Dm644 "$srcdir"/externally-managed \ + "$pkgdir"/usr/lib/python$_basever/EXTERNALLY-MANAGED + # those are provided by python3-tkinter rm -r "$pkgdir"/usr/bin/idle* "$pkgdir"/usr/lib/python*/idlelib \ "$pkgdir"/usr/lib/python*/tkinter - # TODO(Leo): some stuff still wants /usr/bin/python to be python2 - # which is a bummer because they are holding back progress but they - # are important enough that we need to do it - # - # Python3 is the canonical python for the moment - # ln -s /usr/bin/python3 "$pkgdir"/usr/bin/python + ln -s python3 "$pkgdir"/usr/bin/python + ln -s python3-config "$pkgdir"/usr/bin/python-config } dev() { @@ -207,29 +198,56 @@ dev() { tests() { pkgdesc="The test modules from the main python package" - cd "$pkgdir"/usr/lib/python$_basever - local i; for i in */test */tests; do - mkdir -p "$subpkgdir"/usr/lib/python$_basever/"$i" - mv "$i"/* "$subpkgdir"/usr/lib/python$_basever/"$i" - rm -rf "$i" - done - mv "$pkgdir"/usr/lib/python$_basever/test \ - "$subpkgdir"/usr/lib/python$_basever/ + amove usr/lib/python$_basever/test +} + +gdbm() { + pkgdesc="Python backend for GNU gdbm" + + amove usr/lib/python3*/lib-dynload/_gdbm.cpython* +} + +_pyc_meta() { + pkgdesc="Meta package for pulling in all -pyc packages" + depends="" + mkdir -p "$subpkgdir" +} + +# python3-pyc, to install pyc by default +_default_pyc() { + pkgdesc="$pkgdesc (install .pyc cache files)" + install_if="$pkgname=$pkgver-r$pkgrel" + depends=" + $pkgname-pycache-pyc0=$pkgver-r$pkgrel + pyc + " + + mkdir -p "$subpkgdir" +} + +pyc0() { + pkgdesc="$pkgdesc (.pyc pycache files)" + + cd "$pkgdir" + amove $(find usr/lib/python3* -name "*.pyc") +} + +pyc1() { + pkgdesc="$pkgdesc (.opt-1.pyc pycache files)" + + cd "$pkgdir" + amove $(find usr/lib/python3* -name "*.opt-1.pyc") } -pythonispython3() { - pkgdesc="python -> python3 symlink" - depends="python3" +pyc2() { + pkgdesc="$pkgdesc (.opt-2.pyc pycache files)" - mkdir -p "$subpkgdir"/usr/bin - ln -s python3 "$subpkgdir"/usr/bin/python + cd "$pkgdir" + amove $(find usr/lib/python3* -name "*.opt-2.pyc") } sha512sums=" -aa7f58a9b31de9824185b3e7bfa7da0dcf64ae9e89840664eae9d98d9048a650fa012cd5b873a62ff44b65b856db86f095c4003117406ec5e9583ec5f7e78e90 Python-3.10.5.tar.xz -f11f9974b29c5c6fce3890d7e42425c1cb02e42c1b8f49c5cc4b249234e67b64317d0e5e82721e2fbf1b53269c8569a9c869d59ce42b5e927f6622f0753e53cd bluez-5.64.tar.xz -fe123dd871f7a3fa868c499a957b94f1d815a1e1de964aaff1116c579defd4d9d1e9b7eb418cf114b169b97426ed603bf4b1e61b45ec483df06abe988c6a30ee fix-xattrs-glibc.patch +4a2213b108e7f1f1525baa8348e68b2a2336d925e60d0a59f0225fc470768a2c8031edafc0b8243f94dbae18afda335ee5adf2785328c2218fd64cbb439f13a4 Python-3.12.3.tar.xz +46dd8230ee2ab66e9c4157c10b2bd9c414fd7f30be0bee73e21a9eea88f63fff362d47828e0fc77ddc59df097b414b21505f8b5f98bc866381115c58ae3f4862 externally-managed ab8eaa2858d5109049b1f9f553198d40e0ef8d78211ad6455f7b491af525bffb16738fed60fc84e960c4889568d25753b9e4a1494834fea48291b33f07000ec2 musl-find_library.patch -14b00953cdb5fe757b38dbf759d7203c3504b46e330494ec195db92290640ec640fb29cc4456208a25dadc028ebaf211b0df71f458a3b76023fdafb4f91ff46a custom-bluetooth-h-path.patch -a84483246e413650a904c34c18f5e4f4168c39067d069f48557c330de6eb3db19fd96a4d453d742db3dcb7c7f962722903f62823c752ff90510c89830435ffc0 arm-alignment.patch " |