# Multi-stage build for GPUImage Swift package on Linux
FROM swift:4.2-bionic AS builder
# Install system dependencies needed for OpenGL, GLUT, and Video4Linux
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dev \
freeglut3-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libxcursor-dev \
libv4l-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the source into the container and build
WORKDIR /workspace
COPY . .
# Build the Swift package in release mode
RUN swift build -c release
# Runtime image
FROM debian:buster-slim AS runtime
# Install runtime OpenGL and Video4Linux related libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dri \
libgl1-mesa-glx \
freeglut3 \
libv4l-0 \
libv4l-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the built artifacts from the builder
COPY --from=builder /workspace/.build /workspace/.build
WORKDIR /workspace
# Default to an interactive shell so the container remains usable
CMD ["/bin/bash"]
# Multi-stage build for GPUImage Swift package on Linux
FROM swift:4.2 AS builder
# Install system dependencies needed for OpenGL, GLUT, and Video4Linux
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dev \
freeglut3-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libxcursor-dev \
libv4l-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the source into the container and build
WORKDIR /workspace
COPY . .
# Build the Swift package in release mode
RUN swift build -c release
# Runtime image
FROM debian:buster-slim AS runtime
# Install runtime OpenGL and Video4Linux related libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dri \
libgl1-mesa-glx \
freeglut3 \
libv4l-0 \
libv4l-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the built artifacts from the builder
COPY --from=builder /workspace/.build /workspace/.build
WORKDIR /workspace
# Default to an interactive shell so the container remains usable
CMD ["/bin/bash"]
# Docker ignore .git .gitignore .Build .build .swiftpm Package.resolved *.log *.tmp *.swp .DS_Store node_modules "
Build status: VerifyBuild build_failed Key issues and actionable details: - Failing step and exit code - Command: RUN apt-get update && apt-get install -y --no-install-recommends libgl1-mesa-dri libgl1-mesa-glx freeglut3 libv4l-0 libv4l-dev pkg-config && rm -rf /var/lib/apt/lists/* - Error: exit code 100 - Cause - apt-get update failed due to Debian buster repositories being unavailable (end-of-life) - 404 Not Found for http://deb.debian.org/debian buster Release - 404 Not Found for http://deb.debian.org/debian-security buster/updates Release - 404 Not Found for http://deb.debian.org/debian buster-updates Release - Message: The repository 'http://deb.debian.org/debian buster Release' does not have a Release file - Base image / Swift context - Base runtime: Debian Buster (buster-slim) - Builder image: Swift 4.2 - Issue stems from end-of-life repositories, not package name mismatches - Other architectural notes - Runtime stage installs libv4l-dev (development package) which could be unnecessary at runtime - No explicit EXPOSE or ENTRYPOINT beyond default CMD; consider documenting expected entrypoints or adding a minimal runnable binary for testing - Swift 4.2 and Debian Buster are both old; upgrading to a supported Debian release (e.g., Bullseye) or a newer Swift toolchain is recommended Recommended next steps: - Upgrade base image to a supported Debian release (e.g., Bullseye) or use a Swift image built on a current Debian - If libv4l-dev is not required at runtime, remove it from the apt-get install list - Add explicit EXPOSE and ENTRYPOINT (or a minimal CMD) for testability - Align Swift version with a supported toolchain (e.g., newer Swift) and ensure all repositories are reachable via a supported mirror if staying on an older Debian temporarily
# Multi-stage build for GPUImage Swift package on Linux
FROM swift:4.2 AS builder
# Install system dependencies needed for OpenGL, GLUT, and Video4Linux
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dev \
freeglut3-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libxcursor-dev \
libv4l-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the source into the container and build
WORKDIR /workspace
COPY . .
# Build the Swift package in release mode
RUN swift build -c release
# Runtime image
FROM debian:bullseye-slim AS runtime
# Install runtime OpenGL and Video4Linux related libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dri \
libgl1-mesa-glx \
freeglut3 \
libv4l-0 \
libv4l-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the built artifacts from the builder
COPY --from=builder /workspace/.build /workspace/.build
WORKDIR /workspace
# Default to an interactive shell so the container remains usable
CMD ["/bin/bash"]
- Exact error messages and exit code - /workspace/.build/checkouts/Cgd.git--1257136117223743592/module.modulemap:2:9: error: header '/usr/include/gd.h' not found - /workspace/.build/checkouts/SwiftGD.git-8174793632892340878/Sources/Format.swift:3:12: error: could not build C module 'Cgdlinux' - error: terminated(1): /usr/bin/swift-build-tool -f /workspace/.build/release.yaml main output: - Exit code: 1 - Failing command/step - [builder 5/5] RUN swift build -c release - Missing packages or files mentioned - Missing GD development headers: /usr/include/gd.h not found - Likely missing libgd-dev (GD development headers) in the image - Version mismatch or dependency info - No explicit version mismatch shown. Logs show dependencies being fetched/resolved (e.g., SwiftGD at 2.3.0, Cgd.git at 0.2.0), but the failure stems from missing GD headers rather than a version conflict. - Quick fix suggestion - Install GD development headers, e.g., apt-get update && apt-get install -y libgd-dev (or libgd-dev, libgd2-dev) in the build image, then re-run swift build.
# Multi-stage build for GPUImage Swift package on Linux
FROM swift:4.2 AS builder
# Install system dependencies needed for OpenGL, GLUT, and Video4Linux
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dev \
freeglut3-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libxcursor-dev \
libv4l-dev \
libgd-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the source into the container and build
WORKDIR /workspace
COPY . .
# Build the Swift package in release mode
RUN swift build -c release
# Runtime image
FROM debian:bullseye-slim AS runtime
# Install runtime OpenGL and Video4Linux related libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dri \
libgl1-mesa-glx \
freeglut3 \
libv4l-0 \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the built artifacts from the builder
COPY --from=builder /workspace/.build /workspace/.build
WORKDIR /workspace
# Default to an interactive shell so the container remains usable
CMD ["/bin/bash"]
Smoke [PASS]: test -d /workspace/.build/release && echo 'release build exists' || exit 1 Smoke [PASS]: ls -1 /workspace/.build/release | head -n 1 Smoke [FAIL]: echo 'smoke test complete Output: sh: 1: Syntax error: Unterminated quoted string
# Multi-stage build for GPUImage Swift package on Linux
FROM swift:4.2 AS builder
# Install system dependencies needed for OpenGL, GLUT, and Video4Linux
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dev \
freeglut3-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libxcursor-dev \
libv4l-dev \
libgd-dev \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the source into the container and build
WORKDIR /workspace
COPY . .
# Build the Swift package in release mode
RUN swift build -c release
# Runtime image
FROM debian:bullseye-slim AS runtime
# Install runtime OpenGL and Video4Linux related libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1-mesa-dri \
libgl1-mesa-glx \
freeglut3 \
libv4l-0 \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# Copy the built artifacts from the builder
COPY --from=builder /workspace/.build /workspace/.build
WORKDIR /workspace
# Default to an interactive shell so the container remains usable
CMD ["/bin/bash"]
Concerns: Runtime image does not copy Swift runtime libraries; the built Swift binary may fail to run due to missing libswift or Swift stdlib in the final image., The final CMD uses an interactive shell; while valid, the image may be more useful if it runs the built artifact by default or provides a clear entry point., The path to the built binary is not explicit; copying the entire .build may work but could miss runtime dependencies or require additional staging (e.g., /usr/lib/swift) in runtime. Smoke [PASS]: ls -la /workspace/.build/release | head -n 20 Smoke [PASS]: exe=$(for f in /workspace/.build/release/*; do if [ -x "$f" ]; then echo "$f"; break; fi; done); if [ -z "$exe" ]; then echo 'no_executable_found'; else echo "executable_found=$exe"; fi Smoke [PASS]: exe=$(for f in /workspace/.build/release/*; do if [ -x "$f" ]; then echo "$f"; break; fi; done); if [ -n "$exe" ]; then ldd "$exe" | head -n 5; else echo 'no_executable'; fi