Files
bananarchy/scripts/build-fcitx5-t9.sh
2026-10-19 09:23:54 +03:00

77 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
# Cross-compile Bananarchy multi-mode fcitx5-t9 engine (abc/Abc/ABC/Sym/Ctl/123) for armv7
set -eu
BASE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
ROOTFS_DIR="${ROOTFS_DIR:-$BASE_DIR/rootfs}"
if [ -e "$ROOTFS_DIR" ]; then
ROOTFS_DIR="$(realpath "$ROOTFS_DIR")"
fi
exec docker run --rm --network=host \
-e HOST_UID="$(id -u)" \
-e HOST_GID="$(id -g)" \
-v "$BASE_DIR:/bananarchy" \
-v "$ROOTFS_DIR:/target-rootfs" \
alpine:3.24 sh -eu -c '
cat > /etc/apk/repositories <<EOF
https://mirror.nura.eco/postmarketos/v26.06
https://dl-cdn.alpinelinux.org/alpine/edge/main
https://dl-cdn.alpinelinux.org/alpine/edge/community
https://dl-cdn.alpinelinux.org/alpine/edge/testing
EOF
cp /bananarchy/keys/* /etc/apk/keys/
apk add --no-cache \
build-base \
gcc-armv7 \
g++-armv7 \
binutils-armv7 >/dev/null
echo "[1/3] Preparing ephemeral armv7 sysroot (musl-dev, fcitx5-dev)..."
mkdir -p /tmp/armv7-sysroot/etc/apk/keys
cp /etc/apk/repositories /tmp/armv7-sysroot/etc/apk/repositories
cp /etc/apk/keys/* /tmp/armv7-sysroot/etc/apk/keys/
apk --root /tmp/armv7-sysroot --initdb --arch armv7 add --no-scripts \
alpine-baselayout \
musl-dev \
linux-headers \
fcitx5-dev >/dev/null
echo "[2/3] Compiling Bananarchy multi-mode fcitx5-t9 engine for armv7..."
mkdir -p \
/bananarchy/prebuilt/fcitx5-t9/usr/lib/fcitx5 \
/bananarchy/prebuilt/fcitx5-t9/usr/share/fcitx5/addon \
/bananarchy/prebuilt/fcitx5-t9/usr/share/fcitx5/inputmethod
armv7-alpine-linux-musleabihf-g++ \
-shared -fPIC -O2 -std=c++20 \
--sysroot=/tmp/armv7-sysroot \
-I/tmp/armv7-sysroot/usr/include/Fcitx5/Core \
-I/tmp/armv7-sysroot/usr/include/Fcitx5/Config \
-I/tmp/armv7-sysroot/usr/include/Fcitx5/Utils \
-I/bananarchy/src/fcitx5-t9/src \
/bananarchy/src/fcitx5-t9/src/t9.cpp \
-L/tmp/armv7-sysroot/usr/lib \
-lFcitx5Core -lFcitx5Config -lFcitx5Utils \
-o /bananarchy/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so
armv7-alpine-linux-musleabihf-strip --strip-unneeded \
/bananarchy/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so
cp -f /bananarchy/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so \
/bananarchy/prebuilt/fcitx5-t9/usr/lib/fcitx5/t9.so
cp /bananarchy/src/fcitx5-t9/src/t9-addon.conf \
/bananarchy/prebuilt/fcitx5-t9/usr/share/fcitx5/addon/t9.conf
cp /bananarchy/src/fcitx5-t9/src/t9-inputmethod.conf \
/bananarchy/prebuilt/fcitx5-t9/usr/share/fcitx5/inputmethod/t9.conf
echo "[3/3] Updating overlay/rootfs and target rootfs with compiled fcitx5-t9..."
cp -a /bananarchy/prebuilt/fcitx5-t9/usr/. /bananarchy/overlay/rootfs/usr/
if [ -d /target-rootfs/usr/lib/fcitx5 ]; then
cp -a /bananarchy/prebuilt/fcitx5-t9/usr/. /target-rootfs/usr/
fi
chown -R "$HOST_UID:$HOST_GID" /bananarchy/prebuilt/fcitx5-t9 /bananarchy/overlay/rootfs/usr
ls -lh /bananarchy/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so
'