pypy{,3}: Add build for arm

This commit is contained in:
Chongyun Lee 2022-04-25 09:35:36 +08:00 committed by Henrik Grimler
parent 75e9f31224
commit ff7bc6a52c
No known key found for this signature in database
GPG Key ID: B0076E490B71616B
2 changed files with 18 additions and 30 deletions

View File

@ -4,6 +4,7 @@ TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@licy183"
_MAJOR_VERSION=2.7
TERMUX_PKG_VERSION=7.3.9
TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL=https://downloads.python.org/pypy/pypy$_MAJOR_VERSION-v$TERMUX_PKG_VERSION-src.tar.bz2
TERMUX_PKG_SHA256=39b0972956f6548ce5828019dbae12503c32d6cbe91a2becf88d3e42cc52197b
TERMUX_PKG_DEPENDS="gdbm, libandroid-posix-semaphore, libandroid-support, libbz2, libcrypt, libexpat, libffi, liblzma, libsqlite, libxml2, ncurses, ncurses-ui-libs, openssl, readline, zlib"
@ -11,9 +12,6 @@ TERMUX_PKG_BUILD_DEPENDS="binutils, clang, dash, make, ndk-multilib, pkg-config,
TERMUX_PKG_RECOMMENDS="clang, make, pkg-config"
TERMUX_PKG_SUGGESTS="pypy-tkinter"
TERMUX_PKG_BUILD_IN_SRC=true
# `termux-docker` doesn't provide the docker image of arm architecture.
# See https://github.com/termux/termux-docker#known-issues
TERMUX_PKG_BLACKLISTED_ARCHES="arm"
TERMUX_PKG_RM_AFTER_INSTALL="
opt/pypy/lib-python/${_MAJOR_VERSION}/test
opt/pypy/lib-python/${_MAJOR_VERSION}/*/test
@ -74,11 +72,11 @@ termux_step_pre_configure() {
fi
# Get host platform rootfs tar if needed.
if [ ! -f "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$HOST_ARCH.tar" ]; then
if [ ! -f "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$HOST_ARCH.tar" ]; then
(
cd $TERMUX_PKG_CACHEDIR
$DOCKER_PULL kcubeterm/termux:$HOST_ARCH
mv kcubeterm_termux.tar kcubeterm_termux_$HOST_ARCH.tar
$DOCKER_PULL termux/termux-docker:$HOST_ARCH
mv termux_termux-docker.tar termux_termux-docker_$HOST_ARCH.tar
)
fi
@ -91,11 +89,11 @@ termux_step_pre_configure() {
if [ $QEMU_MAJOR_VERSION -lt '6' ]; then
termux_error_exit "qemu-user-static's version must be greater than 6.0.0"
fi
if [ ! -f "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$TERMUX_ARCH.tar" ]; then
if [ ! -f "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$TERMUX_ARCH.tar" ]; then
(
cd $TERMUX_PKG_CACHEDIR
$DOCKER_PULL kcubeterm/termux:$TERMUX_ARCH
mv kcubeterm_termux.tar kcubeterm_termux_$TERMUX_ARCH.tar
$DOCKER_PULL termux/termux-docker:$TERMUX_ARCH
mv termux_termux-docker.tar termux_termux-docker_$TERMUX_ARCH.tar
)
fi
fi
@ -107,7 +105,7 @@ termux_step_configure() {
# Bootstrap a proot rootfs for the host platform
HOST_ROOTFS_BASE=$TERMUX_PKG_TMPDIR/host-rootfs
cat "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$HOST_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE
cat "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$HOST_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE
# Add build dependicies for pypy on the host platform rootfs
# Build essential
@ -140,7 +138,6 @@ termux_step_configure() {
$PROOT_HOST update-static-dns
$PROOT_HOST apt autoremove --purge -yq science-repo game-repo || :
sed -i "s/deb/deb [trusted=yes]/g" $HOST_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
sed -i "s/packages.termux.org/packages-cf.termux.org/g" $HOST_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
$PROOT_HOST apt update
$PROOT_HOST apt install -o Dpkg::Options::=--force-confnew -yq $BUILD_DEP
$PROOT_HOST python2 -m pip install cffi pycparser
@ -155,7 +152,7 @@ termux_step_configure() {
cp /usr/bin/qemu-$TERMUX_ARCH-static $HOST_ROOTFS_BASE/$TERMUX_PREFIX/bin/
TARGET_ROOTFS_BASE=$TERMUX_ANDROID_HOME/target-rootfs
mkdir -p $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE
cat "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$TERMUX_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE
cat "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$TERMUX_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE
PROOT_TARGET="env -i PROOT_NO_SECCOMP=1
$TERMUX_RUNTIME_ENV_VARS
$PROOT
@ -173,10 +170,7 @@ termux_step_configure() {
$PROOT_TARGET apt autoremove --purge -yq science-repo game-repo || :
# FIXME: If we don't add `[trusted=yes]`, apt-key will generate an error.
# FIXME: The key(s) in the keyring XXX.gpg are ignored as the file is not readable by user '' executing apt-key.
# FIXME: I have no idea why this error occurs in github action, neither
# FIXME: can I reproduce it in my local docker container.
sed -i "s/deb/deb [trusted=yes]/g" $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
sed -i "s/packages.termux.org/packages-cf.termux.org/g" $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
$PROOT_TARGET apt update
$PROOT_TARGET apt install -o Dpkg::Options::=--force-confnew -yq dash
# Use dash to provide /system/bin/sh, since /system/bin/sh is a symbolic link

View File

@ -4,6 +4,7 @@ TERMUX_PKG_LICENSE="MIT"
TERMUX_PKG_MAINTAINER="@licy183"
_MAJOR_VERSION=3.8
TERMUX_PKG_VERSION=7.3.9
TERMUX_PKG_REVISION=1
TERMUX_PKG_SRCURL=https://downloads.python.org/pypy/pypy$_MAJOR_VERSION-v$TERMUX_PKG_VERSION-src.tar.bz2
TERMUX_PKG_SHA256=5b5d9d9256f12a129af8384e2f581bdfab3bc0fbbe3a0a480d9c1d2e95490eb1
TERMUX_PKG_DEPENDS="gdbm, libandroid-posix-semaphore, libandroid-support, libbz2, libcrypt, libexpat, libffi, liblzma, libsqlite, libxml2, ncurses, ncurses-ui-libs, openssl, readline, zlib"
@ -11,9 +12,6 @@ TERMUX_PKG_BUILD_DEPENDS="binutils, clang, dash, make, ndk-multilib, pkg-config,
TERMUX_PKG_RECOMMENDS="clang, make, pkg-config"
TERMUX_PKG_SUGGESTS="pypy3-tkinter"
TERMUX_PKG_BUILD_IN_SRC=true
# `termux-docker` doesn't provide the docker image of arm architecture.
# See https://github.com/termux/termux-docker#known-issues
TERMUX_PKG_BLACKLISTED_ARCHES="arm"
TERMUX_PKG_RM_AFTER_INSTALL="
opt/pypy3/lib/pypy$_MAJOR_VERSION/test
opt/pypy3/lib/pypy$_MAJOR_VERSION/*/test
@ -74,11 +72,11 @@ termux_step_pre_configure() {
fi
# Get host platform rootfs tar if needed.
if [ ! -f "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$HOST_ARCH.tar" ]; then
if [ ! -f "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$HOST_ARCH.tar" ]; then
(
cd $TERMUX_PKG_CACHEDIR
$DOCKER_PULL kcubeterm/termux:$HOST_ARCH
mv kcubeterm_termux.tar kcubeterm_termux_$HOST_ARCH.tar
$DOCKER_PULL termux/termux-docker:$HOST_ARCH
mv termux_termux-docker.tar termux_termux-docker_$HOST_ARCH.tar
)
fi
@ -91,11 +89,11 @@ termux_step_pre_configure() {
if [ $QEMU_MAJOR_VERSION -lt '6' ]; then
termux_error_exit "qemu-user-static's version must be greater than 6.0.0"
fi
if [ ! -f "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$TERMUX_ARCH.tar" ]; then
if [ ! -f "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$TERMUX_ARCH.tar" ]; then
(
cd $TERMUX_PKG_CACHEDIR
$DOCKER_PULL kcubeterm/termux:$TERMUX_ARCH
mv kcubeterm_termux.tar kcubeterm_termux_$TERMUX_ARCH.tar
$DOCKER_PULL termux/termux-docker:$TERMUX_ARCH
mv termux_termux-docker.tar termux_termux-docker_$TERMUX_ARCH.tar
)
fi
fi
@ -107,7 +105,7 @@ termux_step_configure() {
# Bootstrap a proot rootfs for the host platform
HOST_ROOTFS_BASE=$TERMUX_PKG_TMPDIR/host-rootfs
cat "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$HOST_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE
cat "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$HOST_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE
# Add build dependicies for pypy on the host platform rootfs
# Build essential
@ -140,7 +138,6 @@ termux_step_configure() {
$PROOT_HOST update-static-dns
$PROOT_HOST apt autoremove --purge -yq science-repo game-repo || :
sed -i "s/deb/deb [trusted=yes]/g" $HOST_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
sed -i "s/packages.termux.org/packages-cf.termux.org/g" $HOST_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
$PROOT_HOST apt update
$PROOT_HOST apt install -o Dpkg::Options::=--force-confnew -yq $BUILD_DEP
$PROOT_HOST python2 -m pip install cffi pycparser
@ -155,7 +152,7 @@ termux_step_configure() {
cp /usr/bin/qemu-$TERMUX_ARCH-static $HOST_ROOTFS_BASE/$TERMUX_PREFIX/bin/
TARGET_ROOTFS_BASE=$TERMUX_ANDROID_HOME/target-rootfs
mkdir -p $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE
cat "$TERMUX_PKG_CACHEDIR/kcubeterm_termux_$TERMUX_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE
cat "$TERMUX_PKG_CACHEDIR/termux_termux-docker_$TERMUX_ARCH.tar" | $UNDOCKER -o $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE
PROOT_TARGET="env -i PROOT_NO_SECCOMP=1
$TERMUX_RUNTIME_ENV_VARS
$PROOT
@ -173,10 +170,7 @@ termux_step_configure() {
$PROOT_TARGET apt autoremove --purge -yq science-repo game-repo || :
# FIXME: If we don't add `[trusted=yes]`, apt-key will generate an error.
# FIXME: The key(s) in the keyring XXX.gpg are ignored as the file is not readable by user '' executing apt-key.
# FIXME: I have no idea why this error occurs in github action, neither
# FIXME: can I reproduce it in my local docker container.
sed -i "s/deb/deb [trusted=yes]/g" $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
sed -i "s/packages.termux.org/packages-cf.termux.org/g" $HOST_ROOTFS_BASE/$TARGET_ROOTFS_BASE/$TERMUX_PREFIX/etc/apt/sources.list
$PROOT_TARGET apt update
$PROOT_TARGET apt install -o Dpkg::Options::=--force-confnew -yq dash
# Use dash to provide /system/bin/sh, since /system/bin/sh is a symbolic link