diff options
Diffstat (limited to 'testing/pypy3/APKBUILD')
-rw-r--r-- | testing/pypy3/APKBUILD | 117 |
1 files changed, 90 insertions, 27 deletions
diff --git a/testing/pypy3/APKBUILD b/testing/pypy3/APKBUILD index 88644a048b3..5322f6e6f83 100644 --- a/testing/pypy3/APKBUILD +++ b/testing/pypy3/APKBUILD @@ -1,9 +1,10 @@ # Maintainer: Thomas Liske <thomas@fiasko-nw.net> pkgname=pypy3 -pkgver=7.3.9 +pkgver=7.3.12 _pkgver=${pkgver/_/} +_pyver=3.10 pkgrel=0 -pkgdesc="Fast, compliant alternative implementation of Python 3.8" +pkgdesc="Fast, compliant alternative implementation of Python $_pyver" url="https://www.pypy.org/" arch="x86 x86_64 aarch64 s390x" license="MIT" @@ -14,59 +15,121 @@ makedepends=" libffi-dev linux-headers ncurses-dev - openssl-dev + openssl-dev>3 pypy readline-dev - rsync sqlite-dev tk-dev util-linux-misc xz-dev zlib-dev " -[ "$CARCH" = "x86" ] && options="textrels" # on x86 has textrels -source="https://downloads.python.org/pypy/pypy3.8-v$_pkgver-src.tar.bz2 +subpackages="$pkgname-dev $pkgname-tests $pkgname-tkinter $pkgname-pyc" +source="https://downloads.python.org/pypy/pypy$_pyver-v$_pkgver-src.tar.bz2 0001-time.patch 0002-extern-stdio.patch " -builddir="$srcdir/pypy3.8-v$_pkgver-src" -options="$options !check" # todo +builddir="$srcdir/pypy$_pyver-v$_pkgver-src" +options="!check" # todo + +[ "$CARCH" = "x86" ] && options="$options textrels" # on x86 has textrels build() { - cd pypy/goal + if [ "$JOBS" -gt 16 ]; then + export JOBS=16 + fi + + msg "building pypy3" + pypy rpython/bin/rpython --opt=jit --shared --make-jobs=${JOBS:-2} pypy/goal/targetpypystandalone.py + + msg "configuring system dirs" + ./pypy3.10-c -m sysconfig --generate-posix-vars \ + LIBDIR=/usr/lib \ + TZPATH=/usr/share/zoneinfo \ + INCLUDEPY=/usr/include/pypy$_pyver + + local out="$(cat pybuilddir.txt)" + cp "$out"/_sysconfigdata__*.py lib-python/3/ + + msg "generating pattern pickles" + ./pypy$_pyver-c - <<-EOF + import lib2to3.pygram + import lib2to3.patcomp + lib2to3.patcomp.PatternCompiler() + EOF - # translate with JIT - [[ "$JOBS" -gt 16 ]] && JOBS=16 - pypy ../../rpython/bin/rpython --opt=jit --shared --make-jobs=${JOBS:-2} targetpypystandalone + msg "compiling binary modules" + ./pypy$_pyver-c lib_pypy/pypy_tools/build_cffi_imports.py - # compile binary modules - PYTHONPATH=../.. ./pypy3-c ../../lib_pypy/pypy_tools/build_cffi_imports.py + # cleanup pypy libdir + find lib_pypy -name "*_cffi.[co]" -delete + find lib_pypy -type d -empty -delete } check() { - cd pypy/goal - ./pypy3-c -u ../test_all.py \ - ../module/pypyjit/test_pypy_c + ./pypy$_pyver-c -u pypy/test_all.py \ + pypy/module/pypyjit/test_pypy_c } package() { - install -Dm755 pypy/goal/pypy3-c "$pkgdir"/usr/lib/pypy/bin/pypy3-c - install -Dm755 pypy/goal/libpypy3-c.so "$pkgdir"/usr/lib/pypy/bin/libpypy3-c.so + mkdir -p "$pkgdir"/usr/lib/pypy$_pyver "$pkgdir"/usr/include + + # install stdlib + # this puts everything just like python itself does + cp -a lib-python/3/. lib_pypy/. "$pkgdir"/usr/lib/pypy$_pyver/ + + # install includes + cp -a include/pypy$_pyver "$pkgdir"/usr/include/ + + # install pypy itself + install -Dm755 ./pypy$_pyver-c -t "$pkgdir"/usr/bin + install -Dm755 ./libpypy$_pyver-c.so -t "$pkgdir"/usr/lib/ + + # install symlink + ln -sfv pypy$_pyver-c "$pkgdir"/usr/bin/pypy3 - rsync -r --exclude='__pycache__' --exclude='*.c' --exclude '*.o' lib_pypy/ "$pkgdir"/usr/lib/pypy/lib_pypy/ + # allow fail for 2to3 module + ./pypy$_pyver-c -m compileall -fq "$pkgdir"/usr/lib || true +} + +dev() { + default_dev + + # pyconfig.h is needed at runtime + mkdir -p "$pkgdir"/usr/include/pypy$_pyver + mv "$subpkgdir"/usr/include/pypy$_pyver/pyconfig.h \ + "$pkgdir"/usr/include/pypy$_pyver/ +} + +tests() { + pkgdesc="$pkgdesc (test module)" - rsync -r --exclude='__pycache__' --exclude='test' --exclude='tests' lib-python/ "$pkgdir"/usr/lib/pypy/lib-python/ + amove \ + usr/lib/pypy$_pyver/test \ + usr/lib/pypy$_pyver/*/test \ + usr/lib/pypy$_pyver/*/tests +} + +pyc() { + pkgdesc="Precompiled Python bytecode for ${subpkgname%-pyc}" + install_if="${subpkgname%-pyc}=$pkgver-r$pkgrel pyc" + + cd "$pkgdir" + local IFS=' +' + # shellcheck disable=2046 + amove $(find usr/lib/pypy$_pyver -type d -name __pycache__) +} - rsync -r --include='*.h' -f 'hide,! */' include/ "$pkgdir"/usr/lib/pypy/include/ +tkinter() { + pkgdesc="$pkgdesc (tkinter module)" - # Install symlinks - mkdir -p "$pkgdir"/usr/bin "$pkgdir"/usr/lib - ln -s ../lib/pypy/bin/pypy3-c "$pkgdir"/usr/bin/pypy3 - ln -s pypy/bin/libpypy3-c.so "$pkgdir"/usr/lib/libpypy3-c.so + amove usr/lib/pypy$_pyver/_tkinter \ + usr/lib/pypy$_pyver/tkinter } sha512sums=" -2d1f1c0eda08344332fb983a1cd4e76391eb95197519d151d28ff7e6d3a337bc584908eed523a2f26aee0f62e61650353fada1a0d96d57dd197b2f349e033609 pypy3.8-v7.3.9-src.tar.bz2 +080520c7de267e17a2823f06cd0a15c108a2c32fc296d6e24782050eb546fa74852d948ede2c381dba110774121b20efc3a07b553acd0ac0db4a844dfc09069e pypy3.10-v7.3.12-src.tar.bz2 42abc8c67c249ff012010aec568579cd738ed2d74ffdf93755c9427117e85cd859390266c7431fcb4d2fcfd82b61d5ba0c58bd0ceda44e5d12bf22df5935bb24 0001-time.patch b648204914072e74367b94065d65b423324bcbabc0e2199ad195ab9822ccc6c51ec552c8c17ed22c26caf73b04d16d6f4c3e14a8d1af0e378d76d6c3b587b784 0002-extern-stdio.patch " |