diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d6e9f7..219497a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -196,6 +196,56 @@ jobs: name: wheels-macos-${{ matrix.platform.target }} path: dist + termux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: '20' + - name: Build frontend + run: | + npm install + npm run build + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - name: Set up Android NDK + uses: nttld/setup-ndk@v1 + with: + ndk-version: r26d + - name: Install dependencies and Android target + run: | + pip install maturin + rustup target add aarch64-linux-android + - name: Set up CPython interpreter for cross-compilation + run: | + BASE_URL="https://packages.termux.dev/apt/termux-main/pool/main/p/python" + FNAME=$(curl -s "$BASE_URL/" | grep -oE 'python_[0-9]+\.[0-9]+\.[0-9]+_aarch64\.deb' | { IFS= read -r line; echo "$line"; }) + wget -nv "$BASE_URL/$FNAME" + mkdir python + dpkg-deb -x $FNAME python + sed -i 's/pyo3 = { version = "0.24.0", features = \[.*\] }/pyo3 = { version = "0.24.0" }/' crates/stream-gears/Cargo.toml + cp -a python/data/data/com.termux/files/usr/lib/libpython* $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/24 + - name: Build wheel for aarch64 (Termux) + run: | + export NDK_BIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin + export CC_aarch64_linux_android=$NDK_BIN/aarch64-linux-android24-clang + export AR_aarch64_linux_android=$NDK_BIN/llvm-ar + export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=$NDK_BIN/aarch64-linux-android24-clang + export PYO3_CROSS_LIB_DIR=python/data/data/com.termux/files/usr/lib/ + maturin build \ + --release \ + --strip \ + --manylinux off \ + --target aarch64-linux-android \ + --out dist + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-termux-aarch64 + path: dist + sdist: runs-on: ubuntu-latest steps: @@ -222,7 +272,7 @@ jobs: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} - needs: [linux, musllinux, windows, macos, sdist] + needs: [linux, musllinux, windows, macos, termux, sdist] permissions: # Use to sign the release artifacts id-token: write diff --git a/README.md b/README.md index ee8a40c..0458e09 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,13 @@ 3. 启动:`biliup start` 4. 访问 WebUI:`http://your-ip:19159` +### Termux +1. 仅为64位 Android 7.0+预编译wheel(本地编译见Wiki) +2. 仅支持最新版 Python:`pkg install libxml2 libxslt getconf python -y` +3. 安装:`pip3 install biliup` +4. 启动:`biliup start` +5. 访问 WebUI:`http://your-ip:19159` + --- diff --git a/pyproject.toml b/pyproject.toml index d9983fd..2465fa5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ dependencies = [ "m3u8 >= 6.0.0", "truststore >= 0.10.1; python_version >= '3.10'", "async-lru >= 2.0.5", + "quickjs >= 1.19.4", ] dynamic = ["version"]