# This Dockerfile is used to build the `atomic` example.
# WARNING:
# The build image is fairly large, so you need to have extra storage space on your CI
FROM foundationdb/build:centos7-20240228040135-fc272dd89b
ARG FDB_VERSION="7.3.27"
ARG FDB_RS_FEATURE_VERSION="fdb-7_3"
# Required to correctly build the example
ENV RUSTC_LINKER=clang
# Add source code and bump Rust version to stable
RUN mkdir /root/fdb-rs
COPY . /root/fdb-rs
RUN /root/.cargo/bin/rustup update stable
RUN /root/.cargo/bin/rustup default stable
# Install libfdb
ADD https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/foundationdb-clients-${FDB_VERSION}-1.el7.x86_64.rpm /tmp/foundationdb-clients-${FDB_VERSION}-1.el7.x86_64.rpm
RUN rpm -i /tmp/foundationdb-clients-${FDB_VERSION}-1.el7.x86_64.rpm
# Install fdbserver
ADD https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/foundationdb-server-${FDB_VERSION}-1.el7.x86_64.rpm /tmp/foundationdb-server-${FDB_VERSION}-1.el7.x86_64.rpm
RUN rpm -i /tmp/foundationdb-server-${FDB_VERSION}-1.el7.x86_64.rpm
# Build the .so
# The artifact will be at /root/fdb-rs/target/release/examples/libatomic.so
RUN cd /root/fdb-rs && \
source /opt/rh/devtoolset-11/enable && \
source /root/.cargo/env && \
RUSTFLAGS="-C linker=clang" cargo build -p foundationdb-simulation --release --example atomic --features ${FDB_RS_FEATURE_VERSION},fdb-docker
# In case you are running a seg fault, uncomment this to have the fdbserver debug
# ADD https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/fdbserver.debug.x86_64.gz /tmp/fdbserver.debug.x86_64.gz
# RUN gzip -d /tmp/fdbserver.debug.x86_64.gz
WORKDIR /root/fdb-rs
CMD ["/root/fdb-rs/scripts/simulation_entrypoint.sh", "20"]