diff --git a/packages/turbopack/add-android-triples.patch b/packages/turbopack/add-android-triples.patch new file mode 100644 index 00000000000..07df9c1f40c --- /dev/null +++ b/packages/turbopack/add-android-triples.patch @@ -0,0 +1,27 @@ +From 8e67ab456d44c99f390d51df7a07352fc466fc53 Mon Sep 17 00:00:00 2001 +From: xingguangcuican6666 +Date: Wed, 4 Mar 2026 23:30:01 +0800 +Subject: [PATCH] Fixed_arch + +--- + packages/next-swc/package.json | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/packages/next-swc/package.json b/packages/next-swc/package.json +index da9a29f0..b0687f66 100644 +--- a/packages/next-swc/package.json ++++ b/packages/next-swc/package.json +@@ -27,6 +27,10 @@ + "defaults": true, + "additional": [ + "i686-pc-windows-msvc", ++ "aarch64-linux-android", ++ "armv7-linux-androideabi", ++ "i686-linux-android", ++ "x86_64-linux-android", + "aarch64-unknown-linux-gnu", + "aarch64-apple-darwin", + "x86_64-unknown-linux-musl", +-- +2.53.0 + diff --git a/packages/turbopack/build.sh b/packages/turbopack/build.sh new file mode 100644 index 00000000000..8309d7d378c --- /dev/null +++ b/packages/turbopack/build.sh @@ -0,0 +1,75 @@ +TERMUX_PKG_HOMEPAGE=https://turbo.build/ +TERMUX_PKG_DESCRIPTION="Rust-based incremental compilation engine and bundler for Next.js" +TERMUX_PKG_MAINTAINER="@xingguangcuican6666" +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_VERSION=16.1.6 +TERMUX_PKG_SRCURL=https://github.com/vercel/next.js/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz +TERMUX_PKG_SHA256=63e8f9f386022fa0b9bea1113e7649fe250ae4bb85782b1c4286a3fbf0efedea +TERMUX_PKG_BUILD_IN_SRC=true +TERMUX_RUST_VERSION="nightly" + +termux_step_make() { + local RUST_TARGET + case "$TERMUX_ARCH" in + aarch64) RUST_TARGET="aarch64-linux-android" ;; + arm) RUST_TARGET="armv7-linux-androideabi" ;; + i686) RUST_TARGET="i686-linux-android" ;; + x86_64) RUST_TARGET="x86_64-linux-android" ;; + esac + + # 1. 环境准备 + termux_setup_rust + termux_setup_nodejs + export ANDROID_NDK_LATEST_HOME="${NDK}" + + # 2. 核心:开启 Tokio 不稳定特性,解决 disable_lifo_slot 报错 + export RUSTFLAGS="--cfg tokio_unstable" + + # 3. 核心:动态绑定 Linker,解决 x86_64 误用 aarch64 编译器的问题 + # $CC 是 Termux 提供的指向当前架构正确编译器的变量 + local ENV_PREFIX=$(echo "$RUST_TARGET" | tr '[:lower:]-' '[:upper:]_') + export "CARGO_TARGET_${ENV_PREFIX}_LINKER"="$CC" + export "CC_${RUST_TARGET//-/_}"="$CC" + + # 4. 安装依赖 + npx pnpm install + + # 5. 进入子包目录并运行你指定的脚本 + # 因为你已经 patch 了该目录下的 package.json,所以这里会识别新的 triples + cd packages/next-swc + npx pnpm run build-native-release --target "$RUST_TARGET" +} + +termux_step_make_install() { + local NAPI_ARCH + case "$TERMUX_ARCH" in + aarch64) NAPI_ARCH="arm64" ;; + arm) NAPI_ARCH="arm-eabi" ;; + i686) NAPI_ARCH="ia32" ;; + x86_64) NAPI_ARCH="x64" ;; + esac + + local PACKAGE_NAME="@next/swc-android-${NAPI_ARCH}" + local INSTALL_DIR="$TERMUX_PREFIX/lib/node_modules/${PACKAGE_NAME}" + local BINARY_NAME="next-swc.android-${NAPI_ARCH}.node" + + mkdir -p "$INSTALL_DIR" + + # 拷贝产物 (napi build 默认会把产物放在目录根部或 native/ 下) + # 如果你在 package.json 里指定了输出到 native,路径如下: + install -Dm755 "native/${BINARY_NAME}" "$INSTALL_DIR/${BINARY_NAME}" + + # 瘦身:剥离调试符号 + ${STRIP} --strip-unneeded "$INSTALL_DIR/${BINARY_NAME}" + + # 生成符合 Termux Linter 要求的 package.json + cat > "$INSTALL_DIR/package.json" <