# SPDX-License-Identifier: LicenseRef-CSSL-1.0

#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
#   Valid for Ubuntu 24.04
#
#---------------------------------------------------------------------

ARG UBUNTU_IMAGE=ubuntu:noble
FROM ran-base:latest AS gnb-base

FROM ran-build:latest AS gnb-build

COPY ./libori.so /usr/local/lib/

# build AW2S fronthaul lib
WORKDIR /oai-ran
RUN /bin/sh oaienv && \
    cd cmake_targets/ && \
    ./build_oai -w AW2SORI -t Ethernet

#start from scratch for target executable
FROM ${UBUNTU_IMAGE} AS oai-gnb-aw2s
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe

RUN apt-get update && \
    apt-get upgrade --yes && \
    apt-get install --yes \
        procps \
        libsctp1 \
        tzdata \
        libc6 \
        libconfig9 \
        gdb \
        openssl \
        net-tools \
        iproute2 \
        iputils-ping \
        libyaml-cpp-dev && \
    rm -rf /var/lib/apt/lists/*

COPY ./libori.so /usr/local/lib/

WORKDIR /opt/oai-gnb-aw2s/bin
COPY --from=gnb-build /oai-ran/cmake_targets/ran_build/build/nr-softmodem ./
COPY ./docker/scripts/gnb-aw2s_entrypoint.sh /opt/oai-gnb-aw2s/bin/entrypoint.sh

COPY --from=gnb-build \
    /oai-ran/cmake_targets/ran_build/build/liboai_eth_transpro.so \
    /oai-ran/cmake_targets/ran_build/build/librfsimulator.so \
    /oai-ran/cmake_targets/ran_build/build/libaw2sori_transpro.so \
    /oai-ran/cmake_targets/ran_build/build/libcoding.so \
    /oai-ran/cmake_targets/ran_build/build/libparams_libconfig.so \
    /oai-ran/cmake_targets/ran_build/build/libdfts.so \
    /oai-ran/cmake_targets/ran_build/build/libldpc*.so \
    /oai-ran/cmake_targets/ran_build/build/libtelnetsrv.so \
    /oai-ran/cmake_targets/ran_build/build/libparams_yaml.so \
    /usr/local/lib/


RUN /bin/bash -c "ln -s /usr/local/lib/libaw2sori_transpro.so /usr/local/lib/libthirdparty_transpro.so" && \
    /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so /usr/local/lib/liboai_transpro.so" && \
    ldconfig && \
    echo "---- ldd on nr-softmodem ----" && \
    ldd /opt/oai-gnb-aw2s/bin/nr-softmodem && \
    echo "---- ldd on shared libraries ----" && \
    ldd /usr/local/lib/liboai_eth_transpro.so \
        /usr/local/lib/librfsimulator.so \
        /usr/local/lib/libaw2sori_transpro.so \
        /usr/local/lib/libcoding.so \
        /usr/local/lib/libparams_libconfig.so \
        /usr/local/lib/libdfts.so \
        /usr/local/lib/libldpc*.so \
        /usr/local/lib/libtelnetsrv.so

WORKDIR /opt/oai-gnb-aw2s

COPY --from=gnb-base /usr/local/bin/yq /usr/local/bin/yq
COPY --from=gnb-base /tini /tini
ENTRYPOINT ["/tini", "-v", "--", "/opt/oai-gnb-aw2s/bin/entrypoint.sh"]
CMD ["/opt/oai-gnb-aw2s/bin/nr-softmodem"]
