From c6fab23af753846c63480a2388156f672b981041 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Thu, 20 Jul 2023 14:45:50 +0200 Subject: [PATCH] chore(ci): adding 2 dockerfiles to test ARM64 cross-compilation Signed-off-by: Raphael Defosseux --- docker/Dockerfile.base.ubuntu20.cross-arm64 | 83 ++++++++++++++++++++ docker/Dockerfile.build.ubuntu20.cross-arm64 | 47 +++++++++++ 2 files changed, 130 insertions(+) create mode 100644 docker/Dockerfile.base.ubuntu20.cross-arm64 create mode 100644 docker/Dockerfile.build.ubuntu20.cross-arm64 diff --git a/docker/Dockerfile.base.ubuntu20.cross-arm64 b/docker/Dockerfile.base.ubuntu20.cross-arm64 new file mode 100644 index 0000000000..55ea35fa96 --- /dev/null +++ b/docker/Dockerfile.base.ubuntu20.cross-arm64 @@ -0,0 +1,83 @@ +#/* +# * 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 20.04 to cross-compile for ARM64 +# +#--------------------------------------------------------------------- + +# Very important, the focal image shall not be using mirrors. A lot of them do NOT support ARM64. +FROM ubuntu:focal AS ran-base +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/Paris + +#install developers pkg/repo +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + #enabling arm64 architecture + dpkg --add-architecture arm64 && \ + echo "deb [arch=arm64] http://ports.ubuntu.com/ focal main restricted\n" \ + "deb [arch=arm64] http://ports.ubuntu.com/ focal-updates main restricted\n" \ + "deb [arch=arm64] http://ports.ubuntu.com/ focal universe\n" \ + "deb [arch=arm64] http://ports.ubuntu.com/ focal-updates universe\n" \ + "deb [arch=arm64] http://ports.ubuntu.com/ focal multiverse\n" \ + "deb [arch=arm64] http://ports.ubuntu.com/ focal-updates multiverse\n" \ + "deb [arch=arm64] http://ports.ubuntu.com/ focal-backports main restricted universe multiverse" \ + | tee /etc/apt/sources.list.d/arm-cross-compile-sources.list && \ + cp /etc/apt/sources.list "/etc/apt/sources.list.`date`.backup" && \ + sed -i -E "s/(deb)\ (http:.+)/\1\ [arch=amd64]\ \2/" /etc/apt/sources.list && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + build-essential \ + psmisc \ + git \ + tzdata \ + xxd \ + # ARM64 packages + libatlas-base-dev:arm64 \ + libblas-dev:arm64 \ + liblapack-dev:arm64 \ + liblapacke-dev:arm64 \ + libreadline-dev:arm64 \ + libgnutls28-dev:arm64 \ + libconfig-dev:arm64 \ + libsctp-dev:arm64 \ + libssl-dev:arm64 \ + libtool:arm64 \ + zlib1g-dev:arm64 \ + # cross build libs and compilers + libc6-dev-i386 \ + gcc-9-aarch64-linux-gnu \ + g++-9-aarch64-linux-gnu && \ + apt-get clean + +# create the WORKDIR +WORKDIR /oai-ran +COPY . . + +#run build_oai -I to get the builder image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai -I && \ + apt-get clean diff --git a/docker/Dockerfile.build.ubuntu20.cross-arm64 b/docker/Dockerfile.build.ubuntu20.cross-arm64 new file mode 100644 index 0000000000..058d9a091f --- /dev/null +++ b/docker/Dockerfile.build.ubuntu20.cross-arm64 @@ -0,0 +1,47 @@ +#/* +# * 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 20.04 to cross-compile for ARM64 +# +#--------------------------------------------------------------------- + +FROM ran-base:latest as ran-build + +RUN rm -Rf /oai-ran +WORKDIR /oai-ran +COPY . . + +# build all targets so final targets can be created afterwards +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p ran_build/build ran_build/build-cross && \ + cd ran_build/build && \ + cmake ../../.. -GNinja && \ + echo "====== Start of log for host-tools ======" && \ + ninja ldpc_generators generate_T && \ + echo "====== End of log for host-tools ======" && \ + cd ../build-cross/ && \ + cmake ../../.. -GNinja -DCMAKE_TOOLCHAIN_FILE=../../../cmake_targets/cross-arm.cmake -DNATIVE_DIR=../build && \ + echo "====== Start of log for cross-build executables ======" && \ + ninja dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim lte-softmodem nr-softmodem nr-cuup oairu lte-uesoftmodem nr-uesoftmodem params_libconfig coding rfsimulator && \ + echo "====== End of log for cross-build executables ======"