FROM awiciroh/ciroh-ngen-image AS base
RUN dnf install -y gcc clang
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
RUN echo 'source $HOME/.cargo/env' >> $HOME/.bashrc
RUN dnf install -y wget zip
FROM base AS torch
WORKDIR /tch
RUN wget -O libtorch.zip https://download.pytorch.org/libtorch/cu126/libtorch-cxx11-abi-shared-with-deps-2.6.0%2Bcu126.zip
RUN unzip libtorch.zip
ENV LD_LIBRARY_PATH=/tch/libtorch/lib:$LD_LIBRARY_PATH
ENV LIBTORCH=/tch/libtorch
FROM base AS build
COPY --from=bmi-rs . /bmi-rs
WORKDIR /rust
COPY . .
RUN rm -rf target
RUN rm -rf /bmi-rs/target
RUN cargo build --release
FROM base AS dev
RUN cargo install samply
COPY --from=bmi-rs . /bmi-rs
WORKDIR /rust
COPY . .
RUN echo -e '[profile.profiling]\ninherits = "release"\ndebug = true' >> $HOME/.cargo/config.toml
RUN RUSTFLAGS="-C debuginfo=2 -C strip=none -C force-frame-pointers=yes" cargo build --profile profiling
RUN cp /rust/target/profiling/librust_lstm_1025.so /dmod/shared_libs/librust_lstm_1025.so
WORKDIR /ngen
FROM build AS final
COPY --from=build /rust/target/release/librust_lstm_1025.so /dmod/shared_libs/librust_lstm_1025.so
WORKDIR /ngen