From 4a5a1ca2c2e99839d762bd5fd38b2b59471bd483 Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Tue, 20 May 2025 09:30:06 +0800 Subject: [PATCH] fix shadowsocks build --- shadowsocks-rust/Dockerfile | 75 ++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/shadowsocks-rust/Dockerfile b/shadowsocks-rust/Dockerfile index 49598ed..c443169 100644 --- a/shadowsocks-rust/Dockerfile +++ b/shadowsocks-rust/Dockerfile @@ -1,43 +1,34 @@ -FROM --platform=$BUILDPLATFORM rust:alpine AS builder +FROM --platform=$BUILDPLATFORM gitea.woggioni.net/woggioni/arch-builder:rust-full AS base ARG VERSION TARGETPLATFORM BUILDPLATFORM -RUN set -x \ - && apk add --no-cache build-base cmake llvm15-dev clang15-libclang clang15 rust-bindgen git rustup curl - -WORKDIR /root/shadowsocks-rust +WORKDIR /home/luser/shadowsocks-rust RUN git clone --depth 1 --branch "v${VERSION}" https://github.com/shadowsocks/shadowsocks-rust.git . -RUN case "$TARGETPLATFORM" in \ - "linux/386") \ - RUST_TARGET="i686-unknown-linux-musl" \ - MUSL="i686-linux-musl" \ - ;; \ - "linux/amd64") \ - RUST_TARGET="x86_64-unknown-linux-musl" \ - MUSL="x86_64-linux-musl" \ - ;; \ - "linux/arm64") \ - RUST_TARGET="aarch64-unknown-linux-musl" \ - MUSL="aarch64-linux-musl" \ - ;; \ - "linux/arm/v7") \ - RUST_TARGET="arm-unknown-linux-musleabihf" \ - MUSL="arm-linux-musleabihf" \ - ;; \ - *) \ - echo "Doesn't support $TARGETPLATFORM architecture" \ - exit 1 \ - ;; \ - esac \ - && wget -qO- "https://musl.cc/$MUSL-cross.tgz" | tar -xzC /root/ \ - && PATH="/root/$MUSL-cross/bin:$PATH" \ - && CC=/root/$MUSL-cross/bin/$MUSL-gcc \ - && echo "CC=$CC" \ - && rustup override set stable \ - && rustup target add "$RUST_TARGET" \ - && RUSTFLAGS="-C linker=$CC" CC=$CC cargo build --target "$RUST_TARGET" --release --features "full-extra" \ +FROM base AS builder-linux_386 +ENV RUST_TARGET="i686-unknown-linux-musl" + +FROM base AS builder-linux_amd64 +ENV RUST_TARGET="x86_64-unknown-linux-musl" +ENV CC_x86_64-unknown-linux-musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-gcc +ENV CXX_x86_64-unknown-linux-musl=/opt/x-tools/x86_64-unknown-linux-musl/bin/x86_64-unknown-linux-musl-g++ + +FROM base AS builder-linux_arm64 +ENV RUST_TARGET="aarch64-unknown-linux-musl" +ENV CC_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-gcc +ENV CXX_aarch64_unknown_linux_musl=/opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-g++ + + +FROM base AS builder-linux_arm_v7 +ENV RUST_TARGET="arm-unknown-linux-musleabihf" +ENV CC_armv7_unknown_linux_musleabihf=/opt/x-tools/arm-unknown-linux-musleabi/bin/arm-unknown-linux-musleabi-gcc +ENV CXX_armv7_unknown_linux_musleabihf=/opt/x-tools/arm-unknown-linux-musleabi/bin/arm-unknown-linux-musleabi-g++ + + +FROM builder-${TARGETPLATFORM/\//_} AS builder +RUN rustup target add $RUST_TARGET +RUN cargo +stable build --locked --target "$RUST_TARGET" --release --features "full,aead-cipher-extra,aead-cipher-2022-extra,security-replay-attack-detect" \ && mv target/$RUST_TARGET/release/ss* target/release/ COPY download_v2ray.sh download_v2ray.sh @@ -48,20 +39,20 @@ RUN ./download_xray.sh "$TARGETPLATFORM" FROM busybox:musl AS sslocal # NOTE: Please be careful to change the path of these binaries, refer to #1149 for more information. -COPY --from=builder /root/shadowsocks-rust/target/release/sslocal /usr/bin/ -COPY --from=builder /root/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ -COPY --from=builder /root/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ -COPY --from=builder /tmp/v2ray-plugin /usr/bin/v2ray-plugin -COPY --from=builder /tmp/xray-plugin /usr/bin/xray-plugin +COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/target/release/sslocal /usr/bin/ +COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ +COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ +COPY --from=builder --chown=root:root /tmp/v2ray-plugin /usr/bin/v2ray-plugin +COPY --from=builder --chown=root:root /tmp/xray-plugin /usr/bin/xray-plugin ENTRYPOINT [ "docker-entrypoint.sh" ] CMD [ "sslocal", "--log-without-time", "-c", "/etc/shadowsocks-rust/config.json" ] FROM busybox:musl AS ssserver -COPY --from=builder /root/shadowsocks-rust/target/release/ssserver /usr/bin/ -COPY --from=builder /root/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ -COPY --from=builder /root/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ +COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/target/release/ssserver /usr/bin/ +COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ +COPY --from=builder --chown=root:root /home/luser/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ COPY --from=builder /tmp/v2ray-plugin /usr/bin/v2ray-plugin COPY --from=builder /tmp/xray-plugin /usr/bin/xray-plugin