改动之后
bash
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Dockerfile for the Open-Air-Interface BUILD service
# Valid for Ubuntu 24.04
#
#---------------------------------------------------------------------
ARG DOCKER_CUSTOM_IMAGE_TAG=latest
FROM ran-base-cuda:${DOCKER_CUSTOM_IMAGE_TAG} AS ran-build-cuda
ARG BUILD_OPTION
ARG FLEXRIC_BUILD_OPTIONS
ARG NVIDIA_DRIVER_CAPABILITIES=all
ARG E2AP_VERSION=E2AP_V3
ARG KPM_VERSION=KPM_V3_00
# TensorRT 11 plan builds use ModelOpt to convert ONNX models to FP16.
# Isolate pip dependencies from apt-managed Python packages (e.g. NumPy).
RUN apt-get update && \
apt-get install --yes --no-install-recommends python3-venv && \
rm -rf /var/lib/apt/lists/* && \
python3 -m venv /opt/modelopt-venv && \
/opt/modelopt-venv/bin/python3 -m pip install --no-cache-dir 'nvidia-modelopt[onnx]' && \
/opt/modelopt-venv/bin/python3 -c "import modelopt.onnx.autocast"
RUN rm -Rf /oai-ran
WORKDIR /oai-ran
# Copy OAI and plugins from sionna-rk context
COPY ext/openairinterface5g/ .
COPY plugins/ plugins/
# build all targets so final targets can be created afterwards
RUN \
# Mount CCache cache direrctory
--mount=type=cache,target=/root/.cache/ccache/ \
# Mount CPM package cache
--mount=type=cache,target=/root/.cache/cpm/ \
/bin/sh oaienv && \
cd cmake_targets && \
mkdir -p log && \
./build_oai -c --ninja \
--eNB --gNB --RU --UE --nrUE \
--build-lib "telnetsrv enbscope uescope nrscope" \
-w USRP -t Ethernet \
--build-e2 --cmake-opt -DKPM_VERSION=$KPM_VERSION --cmake-opt -DE2AP_VERSION=$E2AP_VERSION \
--noavx512 \
--build-tool-opt -k10 \
--cmake-opt -DCMAKE_C_FLAGS="-Werror" --cmake-opt -DCMAKE_CXX_FLAGS="-Werror" $BUILD_OPTION && \
# Mainly to see if the sanitize option was perfectly executed
echo "---- ldd on executables ----" && \
ldd ran_build/build/*softmodem* ran_build/build/nr-cuup ran_build/build/oairu && \
echo "---- ldd on shared libraries ----" && \
ldd ran_build/build/*.so
## Build FlexRIC for SM Models
RUN \
# Mount CCache cache direrctory
--mount=type=cache,target=/root/.cache/ccache/ \
mkdir -p openair2/E2AP/flexric/build && \
cd openair2/E2AP/flexric/build && \
cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
-DKPM_VERSION=$KPM_VERSION \
-DE2AP_VERSION=$E2AP_VERSION $FLEXRIC_BUILD_OPTIONS .. && \
ninja && \
ninja install
# Use the ModelOpt environment for plugin plan builds launched via docker run.
# Set PATH after compilation so OAI builds keep using the system Python.
ENV PATH="/opt/modelopt-venv/bin:${PATH}"