# Multi-stage build for Odin + Python test environment with RocksDB FROM debian:bookworm-slim AS odin-builder # Install dependencies for building Odin RUN apt-get update && apt-get install -y \ git \ curl \ build-essential \ clang \ llvm \ && rm -rf /var/lib/apt/lists/* # Install Odin compiler WORKDIR /opt RUN git clone https://github.com/odin-lang/Odin.git odin \ && cd odin \ && ./build_odin.sh release # Final stage with both Odin and Python FROM python:3.12-slim # Install runtime and build dependencies including RocksDB RUN apt-get update && apt-get install -y \ clang \ llvm \ make \ git \ build-essential \ cmake \ pkg-config \ # RocksDB and compression libraries librocksdb-dev \ librocksdb8.7 \ # Compression libraries that RocksDB depends on libsnappy-dev \ libgflags-dev \ libz-dev \ libbz2-dev \ liblz4-dev \ libzstd-dev \ # Additional common dependencies libssl-dev \ libcurl4-openssl-dev \ && rm -rf /var/lib/apt/lists/* # Copy Odin compiler from builder stage COPY --from=odin-builder /opt/odin /opt/odin # Add Odin to PATH ENV PATH="/opt/odin:${PATH}" ENV ODIN_ROOT="/opt/odin" # Set up library paths for RocksDB ENV LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH}" ENV PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:${PKG_CONFIG_PATH}" # Install Python dependencies RUN pip install --no-cache-dir boto3 pytest requests # Set working directory WORKDIR /workspace # Default command CMD ["/bin/bash"]