cysamurai 2 months ago
parent 404b403f21
commit 22db1c965f

@ -12,6 +12,70 @@ npm config set fetch-retry-mintimeout 20000
npm config set fetch-retry-maxtimeout 120000 npm config set fetch-retry-maxtimeout 120000
npm config set fetch-timeout 300000 npm config set fetch-timeout 300000
ensure_amd64_deps() {
local x64_pc_dir="/usr/lib/x86_64-linux-gnu/pkgconfig"
local missing=0
for f in glib-2.0.pc gdk-3.0.pc webkit2gtk-4.1.pc; do
if [[ ! -f "$x64_pc_dir/$f" ]]; then
missing=1
break
fi
done
if [[ "$missing" -eq 0 ]]; then
return
fi
echo "==> 补齐 amd64 依赖(当前容器缺少 x86_64 pkg-config 文件)"
apt-get update
apt-get install -y --no-install-recommends \
build-essential:amd64 pkg-config:amd64 patchelf:amd64 \
libglib2.0-dev:amd64 libgtk-3-dev:amd64 \
libwebkit2gtk-4.1-dev:amd64 libjavascriptcoregtk-4.1-dev:amd64 \
libayatana-appindicator3-dev:amd64 librsvg2-dev:amd64 libssl-dev:amd64
}
ensure_arm64_deps() {
local arm64_pc_dir="/usr/lib/aarch64-linux-gnu/pkgconfig"
local missing=0
for f in glib-2.0.pc gdk-3.0.pc webkit2gtk-4.1.pc; do
if [[ ! -f "$arm64_pc_dir/$f" ]]; then
missing=1
break
fi
done
if [[ "$missing" -eq 0 ]]; then
return
fi
echo "==> 补齐 arm64 交叉依赖(当前容器缺少 aarch64 pkg-config 文件)"
apt-get update
apt-get install -y --no-install-recommends \
-o Dpkg::Options::="--force-overwrite" \
gcc-aarch64-linux-gnu \
libglib2.0-dev:arm64 libgtk-3-dev:arm64 \
libcairo2-dev:arm64 libpango1.0-dev:arm64 \
libgdk-pixbuf-2.0-dev:arm64 libatk1.0-dev:arm64 libepoxy-dev:arm64 \
libwebkit2gtk-4.1-dev:arm64 libjavascriptcoregtk-4.1-dev:arm64 \
libssl-dev:arm64 libayatana-appindicator3-dev:arm64 librsvg2-dev:arm64
}
case "$BUILD_ARCH" in
amd64)
ensure_amd64_deps
;;
arm64)
ensure_arm64_deps
;;
all)
ensure_amd64_deps
ensure_arm64_deps
;;
*)
echo "错误: BUILD_ARCH 仅支持 all|amd64|arm64当前为 \"$BUILD_ARCH\"" >&2
exit 1
;;
esac
if (($# == 0)); then if (($# == 0)); then
mapfile -t projects < <(bash /work/scripts/build-linux-deb-all.sh --list-projects) mapfile -t projects < <(bash /work/scripts/build-linux-deb-all.sh --list-projects)
else else

@ -88,20 +88,39 @@ echo "==> docker build --platform linux/amd64 -f scripts/docker/Dockerfile -t $I
docker build --platform linux/amd64 -f scripts/docker/Dockerfile -t "$IMAGE_TAG" "$REPO_ROOT" docker build --platform linux/amd64 -f scripts/docker/Dockerfile -t "$IMAGE_TAG" "$REPO_ROOT"
if [[ "$RUN_MODE" == "docker" ]]; then if [[ "$RUN_MODE" == "docker" ]]; then
DOCKER_BUILD_ARCH="all" echo "==> docker run #1 (amd64: npm ci + build-linux-deb-all.sh)"
echo "==> docker run (amd64+arm64: npm ci + build-linux-deb-all.sh)" docker run --rm \
--platform linux/amd64 \
-v "$REPO_ROOT:/work" \
-w /work \
-e RUSTUP_HOME=/opt/rustup \
-e CARGO_HOME=/opt/cargo \
-e BUILD_ARCH=amd64 \
-e NPM_REGISTRY="${NPM_REGISTRY:-https://registry.npmjs.org/}" \
"$IMAGE_TAG" \
bash /work/scripts/docker/container-entry.sh "${SELECTED_PROJECTS[@]}"
echo "==> docker run #2 (arm64: npm ci + build-linux-deb-all.sh)"
docker run --rm \
--platform linux/amd64 \
-v "$REPO_ROOT:/work" \
-w /work \
-e RUSTUP_HOME=/opt/rustup \
-e CARGO_HOME=/opt/cargo \
-e BUILD_ARCH=arm64 \
-e NPM_REGISTRY="${NPM_REGISTRY:-https://registry.npmjs.org/}" \
"$IMAGE_TAG" \
bash /work/scripts/docker/container-entry.sh "${SELECTED_PROJECTS[@]}"
else else
DOCKER_BUILD_ARCH="arm64"
echo "==> docker run (arm64: npm ci + build-linux-deb-all.sh)" echo "==> docker run (arm64: npm ci + build-linux-deb-all.sh)"
fi
docker run --rm \ docker run --rm \
--platform linux/amd64 \ --platform linux/amd64 \
-v "$REPO_ROOT:/work" \ -v "$REPO_ROOT:/work" \
-w /work \ -w /work \
-e RUSTUP_HOME=/opt/rustup \ -e RUSTUP_HOME=/opt/rustup \
-e CARGO_HOME=/opt/cargo \ -e CARGO_HOME=/opt/cargo \
-e BUILD_ARCH="$DOCKER_BUILD_ARCH" \ -e BUILD_ARCH=arm64 \
-e NPM_REGISTRY="${NPM_REGISTRY:-https://registry.npmjs.org/}" \ -e NPM_REGISTRY="${NPM_REGISTRY:-https://registry.npmjs.org/}" \
"$IMAGE_TAG" \ "$IMAGE_TAG" \
bash /work/scripts/docker/container-entry.sh "${SELECTED_PROJECTS[@]}" bash /work/scripts/docker/container-entry.sh "${SELECTED_PROJECTS[@]}"
fi

Loading…
Cancel
Save