From a87741cedadf6a4928eef15d60f35bd557596e03 Mon Sep 17 00:00:00 2001 From: Manish Date: Fri, 25 Mar 2022 10:48:15 +0000 Subject: [PATCH 01/16] Ubuntu 20.04 compilation support added in buil-oai Compilation flag updated for native architecture Signed-off-by: Manish --- cmake_targets/CMakeLists.txt | 2 +- cmake_targets/tools/build_helper | 46 ++++++++++++++++++++------------ 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 46e33e8803..506fad9a4d 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -236,7 +236,7 @@ endif() add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP") -set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic") +set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -march=native") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=gnu99 -funroll-loops") diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 55a39c6b2b..792246338d 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -103,6 +103,8 @@ get_distribution_release() { check_supported_distribution() { local distribution=$(get_distribution_release) case "$distribution" in + "ubuntu21.04") return 0 ;; + "ubuntu20.04") return 0 ;; "ubuntu18.04") return 0 ;; "ubuntu17.10") return 0 ;; "ubuntu17.04") return 0 ;; @@ -574,7 +576,16 @@ check_install_soapy () { check_install_additional_tools (){ $SUDO $INSTALLER update -y + local optional_packages="" if [[ "$OS_DISTRO" == "ubuntu" ]]; then + case "$(get_distribution_release)" in + "ubuntu14.04"| "ubuntu16.04"| "ubuntu17.04"| "ubuntu17.10"| "ubuntu18.04") + optional_packages="python-dev python-pexpect python-numpy python-scipy python-matplotlib" + ;; + "ubuntu20.04"| "ubuntu21.04") + optional_packages="python3 python3-pip python3-dev python3-scipy python3-matplotlib exuberant-ctags" + ;; + esac PACKAGE_LIST="\ check \ dialog \ @@ -584,8 +595,6 @@ check_install_additional_tools (){ libpthread-stubs0-dev \ openvpn \ pkg-config \ - python-dev \ - python-pexpect \ sshfs \ swig \ tshark \ @@ -598,13 +607,10 @@ check_install_additional_tools (){ iperf3 \ android-tools-adb \ wvdial \ - python-numpy \ sshpass \ nscd \ bc \ - ntp \ - python-scipy \ - python-matplotlib" + ntp" elif [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then PACKAGE_LIST="\ check \ @@ -662,7 +668,7 @@ check_install_additional_tools (){ python2-scipy \ python2-matplotlib" fi - $SUDO $INSTALLER install -y $PACKAGE_LIST + $SUDO $INSTALLER install -y $PACKAGE_LIST $optional_packages $SUDO rm -fr /opt/ssh $SUDO GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/ssh.git /opt/ssh @@ -697,23 +703,33 @@ check_install_oai_software() { $SUDO apt install -y software-properties-common case "$(get_distribution_release)" in "ubuntu14.04") - specific_packages="libtasn1-3-dev libgnutls-dev libatlas-dev iproute libconfig8-dev" + specific_packages="libtasn1-3-dev libgnutls-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-de python-pip pydb" # For iperf3 $SUDO add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty-backports universe" $SUDO apt-get update ;; "ubuntu16.04") - specific_packages="libtasn1-6-dev libgnutls-dev libatlas-dev iproute libconfig8-dev" + specific_packages="libtasn1-6-dev libgnutls-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" ;; "ubuntu17.04") - specific_packages="libtasn1-6-dev libgnutls28-dev libatlas-dev iproute libconfig8-dev" + specific_packages="libtasn1-6-dev libgnutls28-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" ;; "ubuntu17.10") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute libconfig8-dev" + specific_packages="libtasn1-6-dev libgnutls28-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" ;; "ubuntu18.04") + specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev iptables-dev libgcrypt11-dev python-pip pydb" + LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" + LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" + ;; + "ubuntu20.04") + specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev" + LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" + LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" + ;; + "ubuntu21.04") specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev" LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" @@ -741,15 +757,13 @@ check_install_oai_software() { guile-2.0-dev \ iperf \ iptables \ - iptables-dev \ libatlas-base-dev \ libblas-dev \ - liblapack-dev\ - liblapacke-dev\ + liblapack-dev \ + liblapacke-dev \ libffi-dev \ libforms-bin \ libforms-dev \ - libgcrypt11-dev \ libgmp-dev \ libgtk-3-dev \ libidn2-0-dev \ @@ -772,8 +786,6 @@ check_install_oai_software() { python \ subversion \ xmlstarlet \ - python-pip \ - pydb \ libyaml-dev \ wget \ libxpm-dev \ From 8f64e6414c02d1b9eb9820c3d4f653af3441edfd Mon Sep 17 00:00:00 2001 From: Manish Date: Fri, 25 Mar 2022 10:55:54 +0000 Subject: [PATCH 02/16] Build document updated for compilation on Ubuntu 20 using buil-oai Signed-off-by: Manish --- doc/BUILD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/BUILD.md b/doc/BUILD.md index 852a248659..a52ce98cb5 100644 --- a/doc/BUILD.md +++ b/doc/BUILD.md @@ -77,7 +77,7 @@ cd cmake_targets/ ./build_oai -I -w USRP --eNB --UE --nrUE --gNB ``` -- The `-I` option is to install pre-requisites, you only need it the first time you build the softmodem or when some oai dependencies have changed. Note: for Ubuntu 20 use cmake_targets/install_external_packages.ubuntu20 instead! +- The `-I` option is to install pre-requisites, you only need it the first time you build the softmodem or when some oai dependencies have changed. - The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process. The RF simulator[RF simulator](../targets/ARCH/rfsimulator/README.md) is implemented as a specific device replacing RF hardware, it can be specifically built using `-w SIMU` option, but is also built during any softmodem build. - `--eNB` is to build the `lte-softmodem` executable and all required shared libraries - `--gNB` is to build the `nr-softmodem` executable and all required shared libraries From 08c06b96ad4c877ebe8e764a9d10f10976f0ed63 Mon Sep 17 00:00:00 2001 From: Manish Date: Fri, 25 Mar 2022 11:29:20 +0000 Subject: [PATCH 03/16] install_external_packages.ubuntu20 file removed native architecture flag removed as compilation happen on diffrent server in CI Signed-off-by: Manish --- cmake_targets/CMakeLists.txt | 2 +- .../install_external_packages.ubuntu20 | 499 ------------------ 2 files changed, 1 insertion(+), 500 deletions(-) delete mode 100755 cmake_targets/install_external_packages.ubuntu20 diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 506fad9a4d..46e33e8803 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -236,7 +236,7 @@ endif() add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP") -set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic -march=native") +set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=gnu99 -funroll-loops") diff --git a/cmake_targets/install_external_packages.ubuntu20 b/cmake_targets/install_external_packages.ubuntu20 deleted file mode 100755 index a2f6a9709c..0000000000 --- a/cmake_targets/install_external_packages.ubuntu20 +++ /dev/null @@ -1,499 +0,0 @@ -#!/bin/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 -# */ - -# brief -# authors Laurent Thomas -# -####################################### - -if [ ! -f /etc/os-release ]; then - echo "No /etc/os-release file found. You're likely on an unsupported distro." - exit 1 -fi -OS_DISTRO=$(grep "^ID=" /etc/os-release | sed "s/ID=//" | sed "s/\"//g") -OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed "s/\"//g") -case "$OS_DISTRO" in - ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt"; CMAKE="cmake" ;; -esac - -SUDO='sudo -E' - -############################### -## echo and family -############################### -black='\E[30m' -red='\E[31m' -green='\E[32m' -yellow='\E[33m' -blue='\E[1;34m' -magenta='\E[35m' -cyan='\E[36m' -white='\E[37m' -reset_color='\E[00m' -COLORIZE=1 - -cecho() { - # Color-echo - # arg1 = message - # arg2 = color - local default_msg="No Message." - message=${1:-$default_msg} - color=${2:-$green} - [ "$COLORIZE" = "1" ] && message="$color$message$reset_color" - echo -e "$message" - return -} - -echo_error() { cecho "$* $red" ;} -echo_fatal() { cecho "$* $red"; exit 1 ;} -echo_warning() { cecho "$* $yellow" ;} -echo_success() { cecho "$* $green" ;} -echo_info() { cecho "$* $blue" ;} - -######################## -# distribution helpers # -######################## - -# This function return a string to identify the distribution we are running -# Examples: -# ubuntu16.04 -# debian8.5 -get_distribution_release() { - echo "$OS_DISTRO$OS_RELEASE" -} - -check_supported_distribution() { - case $(get_distribution_release) in - "ubuntu20.04") return 0 ;; - "ubuntu20.10") return 0 ;; - "ubuntu21.04") return 0 ;; - "ubuntu21.10") return 0 ;; - esac - return 1 -} - -################## -# Error handlers # -################## - -handler_EXIT() { - local exit_code=$? - [ "$exit_code" -eq 0 ] || echo_error "build have failed" - exit $exit_code -} - -trap handler_EXIT EXIT - -########################### -# Cleaners -########################### - -clean_kernel() { - $SUDO modprobe ip_tables - $SUDO modprobe x_tables - $SUDO iptables -P INPUT ACCEPT - $SUDO iptables -F INPUT - $SUDO iptables -P OUTPUT ACCEPT - $SUDO iptables -F OUTPUT - $SUDO iptables -P FORWARD ACCEPT - $SUDO iptables -F FORWARD - $SUDO iptables -t nat -F - $SUDO iptables -t mangle -F - $SUDO iptables -t filter -F - $SUDO iptables -t raw -F - echo_info "Flushed iptables" - $SUDO rmmod nasmesh > /dev/null 2>&1 - $SUDO rmmod oai_nw_drv > /dev/null 2>&1 - $SUDO rmmod openair_rf > /dev/null 2>&1 - $SUDO rmmod ue_ip > /dev/null 2>&1 - echo_info "removed drivers from kernel" -} - -clean_all_files() { - set_openair_env - rm -rf "$OPENAIR_DIR"/targets/bin/* - dir="$OPENAIR_DIR/cmake_targets" - rm -rf "$dir"/log/* - rm -rf "$dir"/ran_build/build - rm -rf "$dir"/ran_build_noLOG/build - rm -rf "$dir"/lte-simulators/build - rm -rf "$dir"/nas_sim_tools/build - rm -rf "$dir"/oaisim_build_oai/build - rm -rf "$dir"/oaisim_build_oai/CMakeLists.txt - rm -rf "$dir"/autotests/bin - rm -rf "$dir"/autotests/log - rm -rf "$dir"/autotests/*/build -} - -############################################ -# External packages installers -############################################ - -install_protobuf_from_source(){ - protobuf_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_install_log.txt - echo_info "\nInstalling Google Protobuf from sources. The log file for Protobuf installation is here: $protobuf_install_log " - ( - cd /tmp || exit - echo "Downloading protobuf" - #rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1 - #wget https://github.com/protocolbuffers/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz - #tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner - #cd protobuf-2.6.1/ - rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0 - wget --tries=3 --retry-connrefused https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz - tar -xzvf protobuf-cpp-3.3.0.tar.gz --owner "$USER" --group "$(groups | cut -d" " -f1)" --no-same-owner - cd protobuf-3.3.0/ || exit - ./configure - echo "Compiling protobuf" - make -j"$(nproc)" - $SUDO make install - $SUDO ldconfig - ) >& "$protobuf_install_log" -} - -install_protobuf_c_from_source(){ - protobuf_c_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_c_install_log.txt - echo_info "\nInstalling Google Protobuf_C from sources. The log file for Protobuf_C installation is here: $protobuf_c_install_log " - ( - if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then - export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig - fi - cd /tmp || exit - echo "Downloading protobuf-c" - rm -rf /tmp/protobuf-c - git clone https://github.com/protobuf-c/protobuf-c.git - cd protobuf-c || exit - git checkout 2a46af42784abf86804d536f6e0122d47cfeea45 - ./autogen.sh - ./configure - echo "Compiling protobuf-c" - make -j"$(nproc)" - $SUDO make install - $SUDO ldconfig - ) >& "$protobuf_c_install_log" -} - -install_usrp_uhd_driver_from_source(){ - uhd_install_log=$OPENAIR_DIR/cmake_targets/log/uhd_install_log.txt - echo_info "\nInstalling UHD driver from sources. The log file for UHD driver installation is here: $uhd_install_log " - ( - cd /tmp || exit - echo "Downloading UHD driver" - rm -rf /tmp/uhd - git clone https://github.com/EttusResearch/uhd.git - cd uhd || exit - git checkout UHD-3.15.LTS - mkdir -p host/build - cd host/build || exit - $CMAKE ../ -GNinja - echo "Compiling UHD" - ninja - $SUDO ninja install - $SUDO ldconfig - $SUDO /usr/lib/uhd/utils/uhd_images_downloader.py - ) >& "$uhd_install_log" -} - -install_bladerf_driver_from_source(){ - bladerf_install_log=$OPENAIR_DIR/cmake_targets/log/bladerf_install_log.txt - echo_info "\nInstalling BladeRF driver from sources. The log file for BladeRF driver installation is here: $bladerf_install_log " - ( - cd /tmp || exit - echo "Downloading BladeRF driver" - rm -rf /tmp/bladeRF - git clone https://github.com/Nuand/bladeRF.git - cd bladeRF || exit - git checkout tags/2016.06 - mkdir -p build - cd build || exit - $CMAKE ../ - echo "Compiling BladeRF driver" - make -j"$(nproc)" - $SUDO make install - $SUDO ldconfig - echo "Downloading FPGA and firmware images" - cd /tmp/bladeRF || exit - wget --tries=3 --retry-connrefused https://www.nuand.com/fx3/bladeRF_fw_latest.img - wget --tries=3 --retry-connrefused https://www.nuand.com/fpga/hostedx40-latest.rbf - sudo mkdir -p /usr/share/Nuand/bladeRF - sudo mv bladeRF_fw_latest.img /usr/share/Nuand/bladeRF/bladeRF_fw.img - sudo mv hostedx40-latest.rbf /usr/share/Nuand/bladeRF/hostedx40.rbf - ) >& "$bladerf_install_log" -} - -check_install_bladerf_driver(){ - if [[ "$OS_DISTRO" == "ubuntu" ]]; then - $SUDO apt-get install -y bladerf libbladerf-dev - $SUDO apt-get install -y bladerf-firmware-fx3 - $SUDO apt-get install -y bladerf-fpga-hostedx40 - elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then - install_bladerf_driver_from_source - else - echo_error "BladeRF Installer for OAI does not support automatic build. Install BladeRF compiling sources manually from BladeRF website" - fi -} - -flash_firmware_bladerf() { - $SUDO bladeRF-cli --flash-firmware /usr/share/Nuand/bladeRF/bladeRF_fw.img -} - -install_soapy_from_source(){ - soapy_install_log=$OPENAIR_DIR/cmake_targets/log/soapy_install_log.txt - echo_info "\nInstalling Soapy EcoSystem from source. The log file for Soapy installation is here: $soapy_install_log " - ( - cd /tmp || exit - echo "Downloading SoapySDR" - rm -rf /tmp/soapysdr - git clone -b soapy-sdr-0.7.0 --single-branch https://github.com/pothosware/SoapySDR.git - cd SoapySDR || exit - #git checkout tags/release_003_010_001_001 - mkdir -p build - cd build || exit - $CMAKE ../ - echo "Compiling SoapySDR" - make -j"$(nproc)" - $SUDO make install - $SUDO ldconfig - cd /tmp || exit - echo "Downloading SoapyRemote" - rm -rf /tmp/soapyremote - git clone -b soapy-remote-0.5.0 --single-branch https://github.com/pothosware/SoapyRemote.git - cd SoapyRemote || exit - #git checkout tags/release_003_010_001_001 - mkdir -p build - cd build || exit - cmake ../ - echo "Compiling SoapyRemote" - make -j"$(nproc)" - $SUDO make install - $SUDO ldconfig - ) >& "$soapy_install_log" -} - -install_soapy_iris_from_source(){ - iris_install_log=$OPENAIR_DIR/cmake_targets/log/iris_install_log.txt - echo_info "\nInstalling Iris driver from source. The log file for Iris driver installation is here: $iris_install_log " - ( - cd /tmp || exit - echo "Downloading SoapyIris" - rm -rf /tmp/sklk-soapyiris - git clone -b soapy-iris-2018.08.0.1 --single-branch https://github.com/skylarkwireless/sklk-soapyiris.git - cd sklk-soapyiris || exit - mkdir -p build - cd build ||exit - cmake ../ - echo "Compiling SoapyIris" - make -j"$(nproc)" - $SUDO make install - $SUDO ldconfig - ) >& "$iris_install_log" -} - -check_install_soapy () { - #if [[ "$OS_DISTRO" == "ubuntu" ]]; then - #first we remove old installation - $SUDO apt-get remove -y soapysdr soapysdr-server libsoapysdr-dev python-soapysdr python3-soapysdr soapysdr-module-remote || true - #$SUDO add-apt-repository -y ppa:myriadrf/drivers - #$SUDO apt-get update - #$SUDO apt-get install -y soapysdr soapysdr-server libsoapysdr-dev python-soapysdr python3-soapysdr soapysdr-module-remote - - #elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then - # $SUDO $INSTALLER -y install software-properties-common python3-software-properties python-software-properties subversion git python3 python-numpy python3-numpy cmake swig python-dev - install_soapy_from_source - #fi - install_soapy_iris_from_source - -} - -check_install_ubuntu_packages() { - $SUDO $INSTALLER update -y - if [[ "$OS_DISTRO" == "ubuntu" ]]; then - local LAPACK_LIBNAME="liblapack.so" - local LAPACK_TARGET="/usr/lib/atlas-base/atlas/liblapack.so" - $SUDO apt install -y software-properties-common - case "$(get_distribution_release)" in - "ubuntu20.04") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev" - LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" - LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" - ;; - "ubuntu21.04") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev" - LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" - LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" - ;; - esac - $SUDO $INSTALLER install -y \ - $specific_packages \ - check \ - dialog \ - dkms \ - gawk \ - libboost-all-dev \ - libpthread-stubs0-dev \ - openvpn \ - pkg-config \ - python3-dev \ - sshfs \ - swig \ - tshark \ - uml-utilities \ - unzip \ - valgrind \ - vlan \ - exuberant-ctags \ - ntpdate \ - iperf3 \ - android-tools-adb \ - wvdial \ - sshpass \ - nscd \ - bc \ - ntp \ - python3-scipy \ - python3-matplotlib \ - bison \ - build-essential \ - cmake \ - cmake-curses-gui \ - ninja-build \ - doxygen \ - doxygen-gui \ - texlive-latex-base \ - ethtool \ - flex \ - gdb \ - git \ - graphviz \ - gtkwave \ - iperf \ - iptables \ - libxtables-dev \ - libatlas-base-dev \ - libblas-dev \ - liblapack-dev\ - liblapacke-dev\ - libffi-dev \ - libforms-bin \ - libforms-dev \ - libgcrypt20-dev \ - libgmp-dev \ - libgtk-3-dev \ - libidn2-0-dev \ - libidn11-dev \ - libmysqlclient-dev \ - libpython2.7-dev \ - libsctp1 \ - libsctp-dev \ - libssl-dev \ - libtool \ - libusb-1.0-0-dev \ - libxml2 \ - libxml2-dev \ - libxslt1-dev \ - octave-signal \ - openssh-client \ - openssh-server \ - openssl \ - python3 \ - subversion \ - xmlstarlet \ - python3-pip \ - libyaml-dev \ - wget \ - libxpm-dev \ - libboost-all-dev \ - nettle-dev \ - nettle-bin \ - libreadline-dev - fi - - $SUDO update-alternatives --set "$LAPACK_LIBNAME" "$LAPACK_TARGET" - -} - -install_asn1c_from_source(){ - asn1_install_log=$OPENAIR_DIR/cmake_targets/log/asn1c_install_log.txt - echo_info "\nInstalling ASN1. The log file for ASN1 installation is here: $asn1_install_log " - ( - $SUDO rm -rf /tmp/asn1c - # GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c - git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c - cd /tmp/asn1c || exit - # better to use a given commit than a branch in case the branch - # is updated and requires modifications in the source of OAI - #git checkout velichkov_s1ap_plus_option_group - git checkout f12568d617dbf48497588f8e227d70388fa217c9 - autoreconf -iv - ./configure - make -j"$(nproc)" - $SUDO make install - cd - || exit - $SUDO ldconfig - ) > "$asn1_install_log" 2>&1 -} - -################################ -# set_openair_env -############################### -set_openair_env(){ - fullpath=$(readlink -f "${BASH_SOURCE[0]}") - [ -f "/.$fullpath" ] || fullpath=$(readlink -f "$PWD/$fullpath") - openair_path=${fullpath%/cmake_targets/*} - openair_path=${openair_path%/targets/*} - openair_path=${openair_path%/openair[123]/*} - export OPENAIR_DIR=$openair_path - export OPENAIR1_DIR=$openair_path/openair1 - export OPENAIR2_DIR=$openair_path/openair2 - export OPENAIR3_DIR=$openair_path/openair3 - export OPENAIR_TARGETS=$openair_path/targets -} - -if ! check_supported_distribution; then - echo_error "Your distribution $(get_distribution_release) is not supported by oai !" - exit 1 -fi -set_openair_env -echo_info "Installing packages" -check_install_ubuntu_packages - -echo_info "installing ASN.1 compiler" -install_asn1c_from_source - -echo_info "installing protobuf/protobuf-c for flexran agent support" -install_protobuf_from_source -install_protobuf_c_from_source - -if [ "$1" == "USRP" ] ; then - echo_info "installing packages for USRP support" - install_usrp_uhd_driver -fi -if [ "$1" == "BLADERF" ] ; then - echo_info "installing packages for BLADERF support" - check_install_bladerf_driver - flash_firmware_bladerf -fi -if [ "$1" == "IRIS" ] ; then - echo_info "installing packages for IRIS support" - check_install_soapy - # flash_firmware_iris -fi From 686bacabbebc7938ec07c446dc81b26db65c52a6 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 15:00:55 +0100 Subject: [PATCH 04/16] Do not trap ^C in build_oai, and remove unused bash function --- cmake_targets/build_oai | 1 - cmake_targets/tools/build_helper | 20 -------------------- 2 files changed, 21 deletions(-) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index c65728a41d..ecfc7d7387 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -59,7 +59,6 @@ BUILD_ECLIPSE=0 NR="False" OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope" RU=0 -trap handle_ctrl_c INT function print_help() { echo_info " diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 792246338d..afc0a6ae2b 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -967,23 +967,3 @@ do fi done } - - -# get from http://www.linuxjournal.com/content/validating-ip-address-bash-script -validate_ip() { - -local ip=$1 -local stat=1 - -if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then - OIFS=$IFS - IFS='.' - ip=($ip) - IFS=$OIFS - [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ - && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] - stat=$? -fi - -return $stat -} From a2e7a770c021fedff1243344352273ccc7aebea6 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 15:05:05 +0100 Subject: [PATCH 05/16] Remove unused ssh repository --- cmake_targets/tools/build_helper | 5 ----- 1 file changed, 5 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index afc0a6ae2b..adc9d6d9e9 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -670,9 +670,6 @@ check_install_additional_tools (){ fi $SUDO $INSTALLER install -y $PACKAGE_LIST $optional_packages - $SUDO rm -fr /opt/ssh - $SUDO GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/ssh.git /opt/ssh - #The packages below are already installed for Redhat distros (RHEL, CentOS, Fedora) if [[ "$OS_DISTRO" == "ubuntu" ]]; then $SUDO -H pip install paramiko @@ -872,8 +869,6 @@ check_install_oai_software() { fi install_asn1c_from_source $1 - $SUDO rm -fr /opt/ssh - $SUDO git clone https://gist.github.com/2190472.git /opt/ssh } install_asn1c_from_source(){ From 951682821c07e45031296c34da68efe485b9cd23 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 15:19:18 +0100 Subject: [PATCH 06/16] Remove old Ubuntu releases --- cmake_targets/tools/build_helper | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index adc9d6d9e9..aa01c35e1c 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -106,10 +106,7 @@ check_supported_distribution() { "ubuntu21.04") return 0 ;; "ubuntu20.04") return 0 ;; "ubuntu18.04") return 0 ;; - "ubuntu17.10") return 0 ;; - "ubuntu17.04") return 0 ;; "ubuntu16.04") return 0 ;; - "ubuntu14.04") return 0 ;; "fedora24") return 0 ;; "rhel7") return 0 ;; "rhel7.6") return 0 ;; @@ -473,10 +470,6 @@ install_bladerf_driver_from_source(){ check_install_bladerf_driver(){ if [[ "$OS_DISTRO" == "ubuntu" ]]; then - if [ "$(get_distribution_release)" == "ubuntu14.04" ] ; then - $SUDO add-apt-repository -y ppa:bladerf/bladerf - $SUDO apt-get update - fi $SUDO apt-get install -y bladerf libbladerf-dev $SUDO apt-get install -y bladerf-firmware-fx3 $SUDO apt-get install -y bladerf-fpga-hostedx40 @@ -579,7 +572,7 @@ check_install_additional_tools (){ local optional_packages="" if [[ "$OS_DISTRO" == "ubuntu" ]]; then case "$(get_distribution_release)" in - "ubuntu14.04"| "ubuntu16.04"| "ubuntu17.04"| "ubuntu17.10"| "ubuntu18.04") + "ubuntu16.04"| "ubuntu18.04") optional_packages="python-dev python-pexpect python-numpy python-scipy python-matplotlib" ;; "ubuntu20.04"| "ubuntu21.04") @@ -699,23 +692,9 @@ check_install_oai_software() { local LAPACK_TARGET="/usr/lib/atlas-base/atlas/liblapack.so" $SUDO apt install -y software-properties-common case "$(get_distribution_release)" in - "ubuntu14.04") - specific_packages="libtasn1-3-dev libgnutls-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-de python-pip pydb" - # For iperf3 - $SUDO add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty-backports universe" - $SUDO apt-get update - ;; "ubuntu16.04") specific_packages="libtasn1-6-dev libgnutls-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" ;; - "ubuntu17.04") - specific_packages="libtasn1-6-dev libgnutls28-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" - ;; - "ubuntu17.10") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" - LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" - LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" - ;; "ubuntu18.04") specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev iptables-dev libgcrypt11-dev python-pip pydb" LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" From 38e0bacf2661e75bf43c04394b69704a140e3226 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 16:57:14 +0100 Subject: [PATCH 07/16] Install protobuf from repository if available --- cmake_targets/build_oai | 3 +- cmake_targets/tools/build_helper | 51 +++++++++----------------------- 2 files changed, 15 insertions(+), 39 deletions(-) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index ecfc7d7387..8d221dd9f2 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -564,8 +564,7 @@ function main() { #fi fi echo_info "Installing protobuf/protobuf-c for flexran agent support" - install_protobuf_from_source - install_protobuf_c_from_source + install_protobuf_c echo_success "protobuf/protobuf-c installation successful" fi diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index aa01c35e1c..68ad2e18b5 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -251,43 +251,6 @@ compilations() { # External packages installers ############################################ -install_protobuf_from_source(){ - protobuf_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_install_log.txt - echo_info "\nInstalling Google Protobuf from sources. The log file for Protobuf installation is here: $protobuf_install_log " - ( - cd /tmp - echo "Downloading protobuf" - #rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1 - #wget https://github.com/protocolbuffers/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz - #tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner - #cd protobuf-2.6.1/ - - if [ $IS_CONTAINER -eq 0 ] - then - rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0 - wget --tries=3 --retry-connrefused https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz - tar -xzvf protobuf-cpp-3.3.0.tar.gz --owner $(id -u) --group $(id -g) --no-same-owner - cd protobuf-3.3.0/ - else - export LD_LIBRARY_PATH=/usr/local/lib #protoc needs to know where toclook for shared libs - rm -rf /tmp/protobuf - git clone --depth=1 --branch=v3.3.0 https://github.com/protocolbuffers/protobuf.git /tmp/protobuf - cd /tmp/protobuf - git submodule update --init --recursive - ./autogen.sh - fi - ./configure - echo "Compiling protobuf" - make -j`nproc` - $SUDO make install - $SUDO ldconfig - if [[ -v CI_ENV ]]; then - cd /tmp - $SUDO rm -rf protobuf* - fi - ) >& $protobuf_install_log -} - install_protobuf_c_from_source(){ protobuf_c_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_c_install_log.txt echo_info "\nInstalling Google Protobuf_C from sources. The log file for Protobuf_C installation is here: $protobuf_c_install_log " @@ -314,6 +277,20 @@ install_protobuf_c_from_source(){ ) >& $protobuf_c_install_log } +install_protobuf_c() { + local protobuf_packages="" + case "$(get_distribution_release)" in + "ubuntu18.04" | "ubuntu20.04" | "ubuntu21.04") + protobuf_packages="protobuf-c-compiler libprotobuf-c1 libprotobuf-c-dev" + ;; + esac + if [[ "$protobuf_packages" == "" ]]; then + install_protobuf_c_from_source + else + $SUDO $INSTALLER -y install $protobuf_packages + fi +} + install_usrp_uhd_driver_from_source(){ uhd_install_log=$OPENAIR_DIR/cmake_targets/log/uhd_install_log.txt echo_info "\nInstalling UHD driver from sources. The log file for UHD driver installation is here: $uhd_install_log " From 51e3b6c79022d7e8113469d3ad6ace04c7bd7e92 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 17:11:24 +0100 Subject: [PATCH 08/16] Add support for Fedora 35 and add missing gcc/g++ packages (both required) --- cmake_targets/tools/build_helper | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 68ad2e18b5..bdb96b0a83 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -107,7 +107,7 @@ check_supported_distribution() { "ubuntu20.04") return 0 ;; "ubuntu18.04") return 0 ;; "ubuntu16.04") return 0 ;; - "fedora24") return 0 ;; + "fedora35") return 0 ;; "rhel7") return 0 ;; "rhel7.6") return 0 ;; "rhel7.7") return 0 ;; @@ -284,6 +284,11 @@ install_protobuf_c() { protobuf_packages="protobuf-c-compiler libprotobuf-c1 libprotobuf-c-dev" ;; esac + case "$OS_DISTRO" in + "rhel" | "centos" | "fedora") # in EPEL and Fedora repos (at least as of 35) + protobuf_packages="protobuf-c-compiler protobuf-c protobuf-c-devel" + ;; + esac if [[ "$protobuf_packages" == "" ]]; then install_protobuf_c_from_source else @@ -703,6 +708,8 @@ check_install_oai_software() { texlive-latex-base \ ethtool \ flex \ + g++ \ + gcc \ gdb \ git \ graphviz \ @@ -756,8 +763,6 @@ check_install_oai_software() { $SUDO $INSTALLER install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm fi $SUDO $INSTALLER install -y python-epdb vim-common - else - $SUDO $INSTALLER install -y pydb fi $SUDO $INSTALLER install -y \ @@ -769,6 +774,8 @@ check_install_oai_software() { doxygen \ ethtool \ flex \ + g++ \ + gcc \ gdb \ git \ graphviz \ From 1fc659331fe0d65930dda34a5a616022d284c8f8 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 17:32:26 +0100 Subject: [PATCH 09/16] Stop build_oai after dep installation if no compilation requested --- cmake_targets/build_oai | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 8d221dd9f2..31acd2e8fb 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -573,19 +573,6 @@ function main() { check_install_additional_tools fi - - - echo_info "3. building the compilation directives ..." - - DIR=$OPENAIR_DIR/cmake_targets - - [ "$CLEAN" = "1" ] && rm -rf $DIR/$BUILD_DIR/build - mkdir -p $DIR/$BUILD_DIR/build - - cd $DIR/$BUILD_DIR/build - echo_info "running $CMAKE_CMD" - eval $CMAKE_CMD ../.. - execlist="" if [ "$eNB" = "1" ] ; then execlist="$execlist lte-softmodem" @@ -605,10 +592,25 @@ function main() { if [ "$nrUE" = 1 ] ; then execlist="$execlist nr-uesoftmodem" fi - if [ "$ittiSIM" = "1" ] ; then execlist="$execlist nr-ittisim" fi + + if [[ "$execlist" == "" && "$SIMUS_PHY" != "1" ]]; then + echo_success "installing dependencies successful" + exit + fi + + echo_info "3. building the compilation directives ..." + + DIR=$OPENAIR_DIR/cmake_targets + + [ "$CLEAN" = "1" ] && rm -rf $DIR/$BUILD_DIR/build + mkdir -p $DIR/$BUILD_DIR/build + + cd $DIR/$BUILD_DIR/build + echo_info "running $CMAKE_CMD" + eval $CMAKE_CMD ../.. for f in $execlist ; do echo_info "Compiling $f..." From 255f4f1f402a7c0ac67c9c96bfc9737ee0043678 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 18:18:24 +0100 Subject: [PATCH 10/16] Fix additional packages for Fedora 35 --- cmake_targets/tools/build_helper | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index bdb96b0a83..1763d681a6 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -631,17 +631,17 @@ check_install_additional_tools (){ valgrind \ vconfig \ ctags \ - ntpdate \ + ntpsec \ iperf3 \ wvdial \ python-numpy \ sshpass \ nscd \ - python2-paramiko \ + python-paramiko \ python-pyroute2 \ python-netifaces \ - python2-scipy \ - python2-matplotlib" + python-scipy \ + python-matplotlib" fi $SUDO $INSTALLER install -y $PACKAGE_LIST $optional_packages From df93c43ec45fdde023c55e2a7c8a4302e4c997c5 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 25 Mar 2022 18:30:23 +0100 Subject: [PATCH 11/16] Add support for Ubuntu 22 --- cmake_targets/tools/build_helper | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 1763d681a6..e6801902bb 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -103,6 +103,7 @@ get_distribution_release() { check_supported_distribution() { local distribution=$(get_distribution_release) case "$distribution" in + "ubuntu22.04") return 0 ;; "ubuntu21.04") return 0 ;; "ubuntu20.04") return 0 ;; "ubuntu18.04") return 0 ;; @@ -280,7 +281,7 @@ install_protobuf_c_from_source(){ install_protobuf_c() { local protobuf_packages="" case "$(get_distribution_release)" in - "ubuntu18.04" | "ubuntu20.04" | "ubuntu21.04") + "ubuntu18.04" | "ubuntu20.04" | "ubuntu21.04" | "ubuntu22.04") protobuf_packages="protobuf-c-compiler libprotobuf-c1 libprotobuf-c-dev" ;; esac @@ -555,10 +556,10 @@ check_install_additional_tools (){ if [[ "$OS_DISTRO" == "ubuntu" ]]; then case "$(get_distribution_release)" in "ubuntu16.04"| "ubuntu18.04") - optional_packages="python-dev python-pexpect python-numpy python-scipy python-matplotlib" + optional_packages="python-dev python-pexpect python-numpy python-scipy python-matplotlib ctags" ;; - "ubuntu20.04"| "ubuntu21.04") - optional_packages="python3 python3-pip python3-dev python3-scipy python3-matplotlib exuberant-ctags" + "ubuntu20.04" | "ubuntu21.04" | "ubuntu22.04" ) + optional_packages="python3 python3-pip python3-dev python3-scipy python3-matplotlib universal-ctags" ;; esac PACKAGE_LIST="\ @@ -577,7 +578,6 @@ check_install_additional_tools (){ unzip \ valgrind \ vlan \ - ctags \ ntpdate \ iperf3 \ android-tools-adb \ @@ -675,20 +675,25 @@ check_install_oai_software() { $SUDO apt install -y software-properties-common case "$(get_distribution_release)" in "ubuntu16.04") - specific_packages="libtasn1-6-dev libgnutls-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb" + specific_packages="libtasn1-6-dev libgnutls-dev libatlas-dev iproute libconfig8-dev iptables-dev libgcrypt11-dev python-pip pydb python guile-2.0-dev" ;; "ubuntu18.04") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev iptables-dev libgcrypt11-dev python-pip pydb" + specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev iptables-dev libgcrypt11-dev python-pip pydb python guile-2.0-dev" LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" ;; "ubuntu20.04") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev" + specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev python guile-2.0-dev" LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" ;; "ubuntu21.04") - specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev" + specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev python guile-2.0-dev" + LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" + LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" + ;; + "ubuntu22.04") + specific_packages="libtasn1-6-dev libgnutls28-dev iproute2 libconfig-dev python2 guile-2.2-dev" LAPACK_LIBNAME="liblapack.so-x86_64-linux-gnu" LAPACK_TARGET="/usr/lib/x86_64-linux-gnu/atlas/liblapack.so" ;; @@ -714,7 +719,6 @@ check_install_oai_software() { git \ graphviz \ gtkwave \ - guile-2.0-dev \ iperf \ iptables \ libatlas-base-dev \ @@ -743,7 +747,6 @@ check_install_oai_software() { openssh-client \ openssh-server \ openssl \ - python \ subversion \ xmlstarlet \ libyaml-dev \ From 8c8f3f8678c939c4ed47df5a71e5ab00dd1f51d3 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Sat, 26 Mar 2022 10:43:47 +0100 Subject: [PATCH 12/16] Compiling protobuf-c requires protobuf, so add it --- cmake_targets/tools/build_helper | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index e6801902bb..554f3ccfe5 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -252,6 +252,43 @@ compilations() { # External packages installers ############################################ +install_protobuf_from_source(){ + protobuf_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_install_log.txt + echo_info "\nInstalling Google Protobuf from sources. The log file for Protobuf installation is here: $protobuf_install_log " + ( + cd /tmp + echo "Downloading protobuf" + #rm -rf /tmp/protobuf-2.6.1.tar.gz* /tmp/protobuf-2.6.1 + #wget https://github.com/protocolbuffers/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz + #tar -xzvf protobuf-2.6.1.tar.gz --owner $USER --group $USER --no-same-owner + #cd protobuf-2.6.1/ + + if [ $IS_CONTAINER -eq 0 ] + then + rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0 + wget --tries=3 --retry-connrefused https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz + tar -xzvf protobuf-cpp-3.3.0.tar.gz --owner $(id -u) --group $(id -g) --no-same-owner + cd protobuf-3.3.0/ + else + export LD_LIBRARY_PATH=/usr/local/lib #protoc needs to know where toclook for shared libs + rm -rf /tmp/protobuf + git clone --depth=1 --branch=v3.3.0 https://github.com/protocolbuffers/protobuf.git /tmp/protobuf + cd /tmp/protobuf + git submodule update --init --recursive + ./autogen.sh + fi + ./configure + echo "Compiling protobuf" + make -j`nproc` + $SUDO make install + $SUDO ldconfig + if [[ -v CI_ENV ]]; then + cd /tmp + $SUDO rm -rf protobuf* + fi + ) >& $protobuf_install_log +} + install_protobuf_c_from_source(){ protobuf_c_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_c_install_log.txt echo_info "\nInstalling Google Protobuf_C from sources. The log file for Protobuf_C installation is here: $protobuf_c_install_log " @@ -291,6 +328,7 @@ install_protobuf_c() { ;; esac if [[ "$protobuf_packages" == "" ]]; then + install_protobuf_from_source install_protobuf_c_from_source else $SUDO $INSTALLER -y install $protobuf_packages From ee9ec777e643fe4a3ff521bf62a36076a94f0d2e Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Sat, 26 Mar 2022 10:50:33 +0100 Subject: [PATCH 13/16] Update libprotobuf-c docker file paths (now installed from package) --- docker/Dockerfile.eNB.rhel8.2 | 2 +- docker/Dockerfile.eNB.ubuntu18 | 2 +- docker/Dockerfile.gNB.rhel8.2 | 2 +- docker/Dockerfile.gNB.ubuntu18 | 2 +- docker/Dockerfile.lteUE.rhel8.2 | 2 +- docker/Dockerfile.lteUE.ubuntu18 | 2 +- docker/Dockerfile.nrUE.rhel8.2 | 2 +- docker/Dockerfile.nrUE.ubuntu18 | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docker/Dockerfile.eNB.rhel8.2 b/docker/Dockerfile.eNB.rhel8.2 index 7924f5bd78..5296ac2172 100644 --- a/docker/Dockerfile.eNB.rhel8.2 +++ b/docker/Dockerfile.eNB.rhel8.2 @@ -96,7 +96,7 @@ COPY --from=enb-base \ # Now we are copying from builder-image the UHD files. COPY --from=enb-base /usr/local/bin/uhd_find_devices /usr/local/bin -COPY --from=enb-base /usr/local/lib/libprotobuf-c.so.1 /usr/local/lib +COPY --from=enb-base /usr/lib64/libprotobuf-c.so.1 /usr/local/lib COPY --from=enb-base /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=enb-base /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin diff --git a/docker/Dockerfile.eNB.ubuntu18 b/docker/Dockerfile.eNB.ubuntu18 index 222a7f42bb..f95a03398a 100644 --- a/docker/Dockerfile.eNB.ubuntu18 +++ b/docker/Dockerfile.eNB.ubuntu18 @@ -83,7 +83,7 @@ COPY --from=enb-build \ COPY --from=enb-base /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=enb-base \ /usr/local/lib/libuhd.so.3.15.0 \ - /usr/local/lib/libprotobuf-c.so.1 \ + /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1 \ /usr/local/lib/ COPY --from=enb-base /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin COPY --from=enb-base \ diff --git a/docker/Dockerfile.gNB.rhel8.2 b/docker/Dockerfile.gNB.rhel8.2 index 6a1b447a62..9ec7ee7556 100644 --- a/docker/Dockerfile.gNB.rhel8.2 +++ b/docker/Dockerfile.gNB.rhel8.2 @@ -100,7 +100,7 @@ COPY --from=gnb-base \ # Now we are copying from builder-image the UHD files. COPY --from=gnb-base /usr/local/bin/uhd_find_devices /usr/local/bin -COPY --from=gnb-base /usr/local/lib/libprotobuf-c.so.1 /usr/local/lib +COPY --from=gnb-base /usr/lib64/libprotobuf-c.so.1 /usr/local/lib COPY --from=gnb-base /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=gnb-base /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin diff --git a/docker/Dockerfile.gNB.ubuntu18 b/docker/Dockerfile.gNB.ubuntu18 index 6f990db833..6a98c8d3ce 100644 --- a/docker/Dockerfile.gNB.ubuntu18 +++ b/docker/Dockerfile.gNB.ubuntu18 @@ -84,7 +84,7 @@ COPY --from=gnb-build \ COPY --from=gnb-base /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=gnb-base \ /usr/local/lib/libuhd.so.3.15.0 \ - /usr/local/lib/libprotobuf-c.so.1 \ + /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1 \ /usr/local/lib/ COPY --from=gnb-base /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin COPY --from=gnb-base \ diff --git a/docker/Dockerfile.lteUE.rhel8.2 b/docker/Dockerfile.lteUE.rhel8.2 index cc1be3d41d..ab7d224939 100644 --- a/docker/Dockerfile.lteUE.rhel8.2 +++ b/docker/Dockerfile.lteUE.rhel8.2 @@ -98,7 +98,7 @@ COPY --from=lte-ue-base \ # Now we are copying from builder-image the UHD files. COPY --from=lte-ue-base /usr/local/bin/uhd_find_devices /usr/local/bin -COPY --from=lte-ue-base /usr/local/lib/libprotobuf-c.so.1 /usr/local/lib +COPY --from=lte-ue-base /usr/lib64/libprotobuf-c.so.1 /usr/local/lib COPY --from=lte-ue-base /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=lte-ue-base /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin diff --git a/docker/Dockerfile.lteUE.ubuntu18 b/docker/Dockerfile.lteUE.ubuntu18 index 292ac37e5f..b2a0fd6e93 100644 --- a/docker/Dockerfile.lteUE.ubuntu18 +++ b/docker/Dockerfile.lteUE.ubuntu18 @@ -86,7 +86,7 @@ COPY --from=lte-ue-build \ COPY --from=lte-ue-base /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=lte-ue-base \ /usr/local/lib/libuhd.so.3.15.0 \ - /usr/local/lib/libprotobuf-c.so.1 \ + /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1 \ /usr/local/lib/ COPY --from=lte-ue-base /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin diff --git a/docker/Dockerfile.nrUE.rhel8.2 b/docker/Dockerfile.nrUE.rhel8.2 index d38e81bd71..498e6bedcf 100644 --- a/docker/Dockerfile.nrUE.rhel8.2 +++ b/docker/Dockerfile.nrUE.rhel8.2 @@ -103,7 +103,7 @@ COPY --from=nr-ue-base \ # Now we are copying from builder-image the UHD files. COPY --from=nr-ue-base /usr/local/bin/uhd_find_devices /usr/local/bin -COPY --from=nr-ue-base /usr/local/lib/libprotobuf-c.so.1 /usr/local/lib +COPY --from=nr-ue-base /usr/lib64/libprotobuf-c.so.1 /usr/local/lib COPY --from=nr-ue-base /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64 COPY --from=nr-ue-base /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin diff --git a/docker/Dockerfile.nrUE.ubuntu18 b/docker/Dockerfile.nrUE.ubuntu18 index 0fa219296b..0edfdd2160 100644 --- a/docker/Dockerfile.nrUE.ubuntu18 +++ b/docker/Dockerfile.nrUE.ubuntu18 @@ -88,7 +88,7 @@ COPY --from=nr-ue-build \ COPY --from=nr-ue-base /usr/local/bin/uhd_find_devices /usr/local/bin COPY --from=nr-ue-base \ /usr/local/lib/libuhd.so.3.15.0 \ - /usr/local/lib/libprotobuf-c.so.1 \ + /usr/lib/x86_64-linux-gnu/libprotobuf-c.so.1 \ /usr/local/lib/ COPY --from=nr-ue-base /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin From 8df0cc3aa93c59f6d5d6e6fd91073934babeed83 Mon Sep 17 00:00:00 2001 From: Manish Date: Tue, 29 Mar 2022 04:13:45 +0000 Subject: [PATCH 14/16] Compile time flag added for native architecture compilation Signed-off-by: Manish --- cmake_targets/build_oai | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 31acd2e8fb..5099743be1 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -59,6 +59,8 @@ BUILD_ECLIPSE=0 NR="False" OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope" RU=0 +CMAKE_C_FLAGS=() +CMAKE_CXX_FLAGS=() function print_help() { echo_info " @@ -182,6 +184,10 @@ function main() { until [ -z "$1" ] do case "$1" in + --archnative) + CMAKE_C_FLAGS+=("-march=native") + CMAKE_CXX_FLAGS+=("-march=native") + shift;; -c | --clean) CLEAN=1 shift;; @@ -609,6 +615,8 @@ function main() { mkdir -p $DIR/$BUILD_DIR/build cd $DIR/$BUILD_DIR/build + if [[ ${#CMAKE_C_FLAGS[@]} > 0 ]]; then CMAKE_CMD="$CMAKE_CMD -DCMAKE_C_FLAGS=\"${CMAKE_C_FLAGS[*]}\""; fi + if [[ ${#CMAKE_CXX_FLAGS[@]} > 0 ]]; then CMAKE_CMD="$CMAKE_CMD -DCMAKE_CXX_FLAGS=\"${CMAKE_CXX_FLAGS[*]}\""; fi echo_info "running $CMAKE_CMD" eval $CMAKE_CMD ../.. From 73277172f69f65acfc8ee3fa9f635c3b8d6d909d Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Wed, 30 Mar 2022 08:00:46 +0200 Subject: [PATCH 15/16] Update build_oai -h --- cmake_targets/build_oai | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 5099743be1..9bb07ef6a4 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -64,9 +64,11 @@ CMAKE_CXX_FLAGS=() function print_help() { echo_info " -This program installs OpenAirInterface Software -You should have ubuntu 16.xx or 18.04 updated -Options +This script compiles OpenAirInterface Software, and can install dependencies +for a number of distributions (Ubuntu 18-22, Fedora, RHEL7/8). +Options: +--arch-native + Passes -march=native to the compiler. -c | --clean Erase all files to make a rebuild from start -C | --clean-all From 790f2802f70908dfa4d2bb1bd845e28a00fd9090 Mon Sep 17 00:00:00 2001 From: Manish Date: Fri, 1 Apr 2022 03:48:44 +0000 Subject: [PATCH 16/16] Help Menu and Argument Flag Aligned Signed-off-by: Manish --- cmake_targets/build_oai | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index 9bb07ef6a4..8270e3989f 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -186,7 +186,7 @@ function main() { until [ -z "$1" ] do case "$1" in - --archnative) + --arch-native) CMAKE_C_FLAGS+=("-march=native") CMAKE_CXX_FLAGS+=("-march=native") shift;;