mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-21 06:23:52 +00:00
Bundle pinned offline dependencies, remove libcork/libipset and submodule requirements, and add portable runtime helpers with relocatable static/shared library installations.
Add Clang static build validation for Linux/musl, macOS and Windows, real TCP/UDP and SIP003 interoperability coverage, and recorded performance tradeoffs. All 21 hosted checks pass at the reviewed PR head 8d504e6218.
34 lines
1.4 KiB
Docker
34 lines
1.4 KiB
Docker
ARG ALPINE_IMAGE=alpine:3.24
|
|
FROM ${ALPINE_IMAGE} AS build
|
|
ARG ALPINE_MIRROR=https://dl-cdn.alpinelinux.org/alpine
|
|
RUN sed -i "s|https://dl-cdn.alpinelinux.org/alpine|${ALPINE_MIRROR}|g" /etc/apk/repositories \
|
|
&& apk add --no-cache clang lld make musl-dev compiler-rt cmake linux-headers python3 binutils file
|
|
ENV CC=clang
|
|
WORKDIR /src
|
|
COPY . .
|
|
ARG SS_MINIMAL=OFF
|
|
RUN --network=none cmake -S . -B /build \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DSS_DEPENDENCY_MODE=bundled -DWITH_STATIC=ON \
|
|
-DSS_BUILD_STATIC_LIBRARY=OFF -DSS_BUILD_SHARED_LIBRARY=OFF \
|
|
-DSS_MINIMAL=${SS_MINIMAL} -DCMAKE_EXE_LINKER_FLAGS="-static -fuse-ld=lld --rtlib=compiler-rt" \
|
|
-DCMAKE_INSTALL_PREFIX=/out \
|
|
&& cmake --build /build --parallel 4 \
|
|
&& ctest --test-dir /build -L 'unit|vendor' --output-on-failure --no-tests=error \
|
|
&& python3 tests/interop.py --self --bin /build/bin \
|
|
&& cmake --install /build --strip \
|
|
&& for binary in /out/bin/ss-*; do \
|
|
file "$binary"; \
|
|
! readelf -l "$binary" | grep -q INTERP || exit 1; \
|
|
! readelf -d "$binary" | grep -q NEEDED || exit 1; \
|
|
done
|
|
|
|
# Export binaries and their license files with --target artifacts --output.
|
|
FROM scratch AS artifacts
|
|
COPY --from=build /out/ /
|
|
|
|
# No libc, dynamic loader, package manager or shell in the runtime image.
|
|
FROM scratch AS runtime
|
|
COPY --from=build /out/ /usr/local/
|
|
ENTRYPOINT ["/usr/local/bin/ss-server"]
|