mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
0830eca24c
Since `_InternalSwiftSyntaxParser` isn't in the search paths when building with the `-static-stdlib` flag, we have to manually pass an include path so the swift compiler discovers it. Unfortunately we cannot just pass `-I/usr/lib/swift` because that results in duplicate library errors since the libraries we're linking statically also live there as shared libraries. This first symlinks the module definition to the root of the checkout and uses `.` for the `-I`. Any temporary path could be used instead.
41 lines
1.4 KiB
Docker
41 lines
1.4 KiB
Docker
# Explicitly specify `focal` because `swift:latest` does not use `ubuntu:latest`.
|
|
ARG BUILDER_IMAGE=swift:focal
|
|
ARG RUNTIME_IMAGE=ubuntu:focal
|
|
|
|
# builder image
|
|
FROM ${BUILDER_IMAGE} AS builder
|
|
RUN apt-get update && apt-get install -y \
|
|
libcurl4-openssl-dev \
|
|
libxml2-dev \
|
|
&& rm -r /var/lib/apt/lists/*
|
|
WORKDIR /workdir/
|
|
COPY Source Source/
|
|
COPY Tests Tests/
|
|
COPY Package.* ./
|
|
|
|
RUN ln -s /usr/lib/swift/_InternalSwiftSyntaxParser .
|
|
|
|
ARG SWIFT_FLAGS="-c release -Xswiftc -static-stdlib -Xlinker -lCFURLSessionInterface -Xlinker -lCFXMLInterface -Xlinker -lcurl -Xlinker -lxml2 -Xswiftc -I. -Xlinker -fuse-ld=lld -Xlinker -L/usr/lib/swift/linux"
|
|
RUN swift build $SWIFT_FLAGS
|
|
RUN mkdir -p /executables
|
|
RUN for executable in $(swift package completion-tool list-executables); do \
|
|
install -v `swift build $SWIFT_FLAGS --show-bin-path`/$executable /executables; \
|
|
done
|
|
|
|
# runtime image
|
|
FROM ${RUNTIME_IMAGE}
|
|
LABEL org.opencontainers.image.source https://github.com/realm/SwiftLint
|
|
RUN apt-get update && apt-get install -y \
|
|
libcurl4 \
|
|
libxml2 \
|
|
&& rm -r /var/lib/apt/lists/*
|
|
COPY --from=builder /usr/lib/libsourcekitdInProc.so /usr/lib
|
|
COPY --from=builder /usr/lib/swift/linux/libBlocksRuntime.so /usr/lib
|
|
COPY --from=builder /usr/lib/swift/linux/libdispatch.so /usr/lib
|
|
COPY --from=builder /usr/lib/swift/linux/lib_InternalSwiftSyntaxParser.so /usr/lib
|
|
COPY --from=builder /executables/* /usr/bin
|
|
|
|
RUN swiftlint version
|
|
|
|
CMD ["swiftlint"]
|