# Build Spine C++ native runtime from source in a minimal Ubuntu container
FROM ubuntu:jammy-20260217
# Non-interactive frontend for apt
ENV DEBIAN_FRONTEND=noninteractive
# Install required build tools and libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake python3 python3-pip pkg-config \
libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev \
libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository into the image
WORKDIR /workspace
COPY . /workspace
# Configure, build, and install Spine-Cpp from source
RUN mkdir -p build \
&& cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
&& cmake --build build --config Release -- -j$(nproc) \
&& cmake --install build --prefix /usr/local
# Default to an interactive shell
CMD ["/bin/bash"]
git node_modules build CMakeFiles CMakeCache.txt cmake_install.cmake Makefile *.o *.a *.so *.log *.tmp *.zip *.tar.gz *.dSYM *.DS_Store *.class *.pyc *.pyo
Exact error message and exit code - CMake Error: The source directory "/workspace" does not appear to contain CMakeLists.txt. - Exit code: 1 Failing command/step - RUN mkdir -p build && cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release -- -j$(nproc) && cmake --install build --prefix /usr/local Missing packages or files mentioned - The source directory /workspace does not appear to contain CMakeLists.txt. This indicates the repository copied into /workspace is missing a top-level CMakeLists.txt (or COPY did not place it there). Version mismatch/info - Base image: ubuntu:jammy-20260217 (digest sha256:ce4a593b4e323dcc3dd728e397e0a866a1bf516a1b7c31d6aa06991baec4f2e0) - CMake version in build: cmake 3.22.1 (installed via apt; see cmake 3.22.1-1ubuntu1.22.04.2) - OS/release: Ubuntu Jammy (22.04)
# Build Spine C++ native runtime from source in a robust Ubuntu container
FROM ubuntu:jammy-20260217
# Non-interactive frontend for apt
ENV DEBIAN_FRONTEND=noninteractive
# Install required build tools and libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake python3 python3-pip pkg-config \
libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev \
libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository into the image
WORKDIR /workspace
COPY . /workspace
# Configure, build, and install Spine-Cpp from source
RUN mkdir -p build \
&& set -e; \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release || \
cmake -S spine-cpp -B spine-cpp/build -DCMAKE_BUILD_TYPE=Release; \
if cmake -S . -B build -DCMAKE_BUILD_TYPE=Release; then \
cmake --build build --config Release -- -j$(nproc); \
cmake --install build --prefix /usr/local; \
else \
cmake --build spine-cpp/build --config Release -- -j$(nproc); \
cmake --install spine-cpp/build --prefix /usr/local; \
fi
# Default to an interactive shell
CMD ["/bin/bash"]
# Build Spine C++ native runtime from source in a robust Ubuntu container
FROM ubuntu:jammy-20260217
# Non-interactive frontend for apt
ENV DEBIAN_FRONTEND=noninteractive
# Install required build tools and libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake python3 python3-pip pkg-config \
libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev \
libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository into the image
WORKDIR /workspace
COPY . /workspace
# Configure, build, and install Spine-Cpp from source
RUN mkdir -p build \
&& if [ -d spine-cpp ]; then \
cmake -S spine-cpp -B spine-cpp/build -DCMAKE_BUILD_TYPE=Release; \
cmake --build spine-cpp/build --config Release -- -j$(nproc); \
cmake --install spine-cpp/build --prefix /usr/local; \
else \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release; \
cmake --build build --config Release -- -j$(nproc); \
cmake --install build --prefix /usr/local; \
fi \
&& ldconfig
# Lightweight Smoke Test: verify that the library path exists
RUN echo "Smoke test: listing /usr/local/lib" && ls -la /usr/local/lib | head -n 5
# Default to an interactive shell
CMD ["/bin/bash"]
git node_modules build CMakeFiles CMakeCache.txt cmake_install.cmake Makefile *.o *.a *.so *.log *.tmp *.zip *.tar.gz *.dSYM *.DS_Store *.class *.pyc *.pyo
Concerns: FROM image tag ubuntu:jammy-20260217 is a dated tag; confirm it is still available or pin to a digest to ensure reproducibility., COPY . /workspace relies on the build context containing the Spine-Cpp repo structure; ensure .dockerignore doesn't exclude necessary files and that the repo layout matches the build script expectations. Smoke [FAIL]: test -n "$(ls -A /usr/local/lib 2>/dev/null)" && echo 'libraries present' || echo 'no libraries found Output: sh: 1: Syntax error: Unterminated quoted string Smoke [PASS]: ldconfig -p | grep -i spinecpp || true Smoke [FAIL]: test -d /usr/local/include && echo 'include dir exists' || echo 'include dir missing Output: sh: 1: Syntax error: Unterminated quoted string
# Build Spine C++ native runtime from source in a robust Ubuntu container
-FROM ubuntu:jammy-20260217
+FROM ubuntu:22.04
# Non-interactive frontend for apt
ENV DEBIAN_FRONTEND=noninteractive
# Install required build tools and libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake python3 python3-pip pkg-config \
libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev \
libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository into the image
WORKDIR /workspace
COPY . /workspace
# Configure, build, and install Spine-Cpp from source
RUN mkdir -p build \
&& if [ -d spine-cpp ]; then \
cmake -S spine-cpp -B spine-cpp/build -DCMAKE_BUILD_TYPE=Release; \
cmake --build spine-cpp/build --config Release -- -j$(nproc); \
cmake --install spine-cpp/build --prefix /usr/local; \
else \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release; \
cmake --build build --config Release -- -j$(nproc); \
cmake --install build --prefix /usr/local; \
fi \
&& ldconfig
# Default to an interactive shell
CMD ["/bin/bash"]
Concerns: The Dockerfile contains patch diff markers (-FROM ... and +FROM ...) which are invalid in a real Dockerfile and will cause the build to fail., COPY . /workspace may copy unnecessary or large files (e.g., build artifacts, VCS metadata); consider adding a .dockerignore to limit context size., The build logic assumes either an existing spine-cpp directory or building from root; verify the repository layout and ensure required dependencies (headers, libs) are installed to /usr/local via cmake install.
# Build Spine C++ native runtime from source in a robust Ubuntu container
FROM ubuntu:jammy-20260217
# Non-interactive frontend for apt
ENV DEBIAN_FRONTEND=noninteractive
# Install required build tools and libraries
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake python3 python3-pip pkg-config \
libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev \
libglu-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository into the image
WORKDIR /workspace
COPY . /workspace
# Configure, build, and install Spine-Cpp from source
RUN cmake -S spine-cpp -B spine-cpp/build -DCMAKE_BUILD_TYPE=Release \
&& cmake --build spine-cpp/build --config Release -- -j$(nproc) \
&& cmake --install spine-cpp/build --prefix /usr/local
# Default to an interactive shell
CMD ["/bin/bash"]
Concerns: The Dockerfile copies the entire repository into the image and builds in a single stage, which can lead to a large image size. Consider using a multi-stage build to separate the build environment from the runtime image., The built artifacts are installed to /usr/local but there is no explicit post-install testing in the Dockerfile. The default CMD is an interactive shell, which is fine for development but may complicate automated testing unless smoke tests are provided. Smoke [PASS]: cmake --version Smoke [PASS]: ls -la /usr/local/lib | head -n 5 Smoke [PASS]: ls -la /usr/local/include | head -n 5