From 817ee1a2173099e0e3cc4c429625643230117026 Mon Sep 17 00:00:00 2001
From: Gabriele Gemmi <gemmi.g@northeastern.edu>
Date: Wed, 7 Dec 2022 17:24:25 +0000
Subject: [PATCH] Cleanup of external dependencies in the installs script

Many useless dependencies have been removed or moved to the additional tools list of packages.
Xforms and ue-ip module must now be built explicitly
Removed support for Ubuntu 16. Addedd support for Debian 11 and Fedora 37

Squashed commits:

removed all unused dependencies
Applied patch from Robert + cleanup in the dependencies
Applied patch from Robert + cleanup in the dependencies
Moved xforms to optional packages, minor fixes
remvoed ue_ip module from ue build
fixes in the build script
styling fixes
Make RHEL8 ran-base build
- Use EPEL 8
- Inside container there is no sudo, so remove superfluous -H
- Install python3-mako
Working build on fedora 36
Make build by install xxd
Drop Ubuntu 16 support
add pip3 again
Correct software
Drop useless software, maybe drop python too
Fix: comment mistaken for package
Remove Netinterfaces from optional packages (Ubuntu)
Don't link xforms into 4G simulators: not needed
Install xmlstarlet, required for physims
Support for fedora 37
Remove irrelevant svn executable from physims
Option to compile UE ip kernel module
Install only relevant boost libs
Removed --skip-broken
Remove unnecessary vconfig,numpy,scipy dependencies
Remove packages that have been installed (pkg-config), python, awk
Remove unnecessary ntpsec package
addedd support for debian 11
styiling fixes
---
 CMakeLists.txt                      |   9 +-
 cmake_targets/build_oai             |   6 +-
 cmake_targets/tools/build_helper    | 249 ++++++----------------------
 docker/Dockerfile.base.rhel8.2      |   2 +-
 docker/Dockerfile.base.ubuntu18     |   2 +-
 docker/Dockerfile.phySim.rhel8.2    |   1 -
 executables/nr-softmodem.c          |   1 -
 openair1/SIMULATION/LTE_PHY/dlsim.c |  29 ----
 openair1/SIMULATION/LTE_PHY/ulsim.c |  15 --
 9 files changed, 63 insertions(+), 251 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2a781499ce..60f1f12e94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2377,7 +2377,7 @@ target_link_libraries(nr-softmodem PRIVATE
   -Wl,--end-group z dl)
 
 target_link_libraries(nr-softmodem PRIVATE ${LIBXML2_LIBRARIES})
-target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
+target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
 target_link_libraries(nr-softmodem PRIVATE ${LIB_LMS_LIBRARIES})
 target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
 target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc asn1_lte_rrc)
@@ -2424,7 +2424,7 @@ target_link_libraries(nr-uesoftmodem PRIVATE
   -Wl,--end-group z dl)
 
 target_link_libraries(nr-uesoftmodem PRIVATE ${LIBXML2_LIBRARIES})
-target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${XFORMS_LIBRARIES} ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
+target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${CMAKE_DL_LIBS} ${ATLAS_LIBRARIES})
 target_link_libraries(nr-uesoftmodem PRIVATE ${LIB_LMS_LIBRARIES})
 target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
 target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc asn1_lte_rrc)
@@ -2465,7 +2465,7 @@ add_executable(rftest
   ${OPENAIR_DIR}/executables/softmodem-common.c
   ${SHLIB_LOADER_SOURCES}
 )
-target_link_libraries(rftest PRIVATE minimal_lib CONFIG_LIB PHY_NR_COMMON UTIL pthread dl m forms ${T_LIB} )
+target_link_libraries(rftest PRIVATE minimal_lib CONFIG_LIB PHY_NR_COMMON UTIL pthread dl m ${T_LIB} )
 target_link_libraries(rftest PRIVATE asn1_lte_rrc asn1_nr_rrc)
 
 add_executable(polartest
@@ -2631,14 +2631,13 @@ foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim pr
     ${OPENAIR_DIR}/common/utils/lte/ue_power.c
     ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
     ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
-    ${XFORMS_SOURCE}
     ${T_SOURCE}
     ${SHLIB_LOADER_SOURCES}
     ${NFAPI_USER_DIR}/nfapi.c
     )
   target_link_libraries (${myExe} PRIVATE
     -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_NR_COMMON PHY PHY_UE PHY_RU ITTI -Wl,--end-group
-    pthread m rt CONFIG_LIB ${ATLAS_LIBRARIES}  ${XFORMS_LIBRARIES} ${T_LIB} dl
+    pthread m rt CONFIG_LIB ${ATLAS_LIBRARIES} ${T_LIB} dl
     )
   target_link_libraries(${myExe} PRIVATE asn1_nr_rrc asn1_lte_rrc)
 
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 720d0f0c96..9fb2d64e4a 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -285,6 +285,10 @@ function main() {
        --UE-gen-nvram)
             gen_nvram_path=$(readlink -f "$2")
             shift 2;;
+       --UE-ip)
+            UE_ip=1
+            echo_info "Will compile UE"
+            shift;;
        -w | --hardware)
             # Use OAI_USRP as the key word USRP is used inside UHD driver           
             case "$2" in
@@ -588,7 +592,7 @@ function main() {
 
     echo_info "Compiling UE specific part"
 
-    if [ $IS_CONTAINER -eq 0 ]
+    if [ $UE_ip -eq 1 ]
     then
       echo_info "Building ue_ip module"
       compilations $BUILD_DIR ue_ip
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 029d25b236..3efac9da50 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -32,8 +32,8 @@ 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
   fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
-  rhel)   OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
-  centos) OS_BASEDISTRO="centos"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
+  rhel)   OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
+  centos) OS_BASEDISTRO="centos"; INSTALLER="yum"; CMAKE="cmake3" ;;
   debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
   ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
 esac
@@ -90,7 +90,6 @@ echo_info()    { cecho "$*" $blue         ;}
 # If we can't check the distribution, it returns "Unknown"
 # This function return always true as exit code by design
 # Examples:
-#   ubuntu16.04
 #   debian8.5
 get_distribution_release() {
     if [[ ! -z "$OS_DISTRO$OS_RELEASE" ]]; then
@@ -107,9 +106,9 @@ check_supported_distribution() {
         "ubuntu21.04") return 0 ;;
         "ubuntu20.04") return 0 ;;
         "ubuntu18.04") return 0 ;;
-        "ubuntu16.04") return 0 ;;
-        "fedora35")    return 0 ;;
+        "debian11")    return 0 ;;
         "fedora36")    return 0 ;;
+        "fedora37")    return 0 ;;
         "rhel7")       return 0 ;;
         "rhel7.6")     return 0 ;;
         "rhel7.7")     return 0 ;;
@@ -306,7 +305,8 @@ install_usrp_uhd_driver_from_source(){
 }
 
 check_install_usrp_uhd_driver(){
-    if [[ "$OS_DISTRO" == "ubuntu" ]]; then
+    if [[ "$OS_BASEDISTRO" == "debian" ]]; then
+        boost_libs_ubuntu="libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev libboost-test-dev libboost-regex-dev"
         #first we remove old installation
         $SUDO apt-get remove uhd -y || true
         $SUDO apt-get remove uhd-host -y || true
@@ -323,8 +323,8 @@ check_install_usrp_uhd_driver(){
         fi
         v=$(lsb_release -cs)
         $SUDO apt-add-repository --remove "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
-        if [[ -v BUILD_UHD_FROM_SOURCE ]]; then
-            $SUDO apt-get install -y libboost-all-dev libusb-1.0-0-dev doxygen python3-docutils python3-mako python3-numpy python3-requests python3-setuptools ninja-build
+        if [[ -v BUILD_UHD_FROM_SOURCE ]] || [[ "$OS_DISTRO" == "debian" ]]; then
+            $SUDO apt-get install -y $boost_libs_ubuntu libusb-1.0-0-dev doxygen python3-docutils python3-mako python3-numpy python3-requests python3-setuptools ninja-build
             install_usrp_uhd_driver_from_source
             return
         fi
@@ -346,22 +346,20 @@ check_install_usrp_uhd_driver(){
             x=$((x + 1))
         done
         $SUDO apt-get update
-        $SUDO apt-get -y install python-tk libboost-all-dev libusb-1.0-0-dev
+        $SUDO apt-get -y install python-tk  $boost_libs_ubuntu libusb-1.0-0-dev
         case "$(get_distribution_release)" in
-          "ubuntu16.04")
-            $SUDO apt-get -y install libuhd-dev libuhd3.15.0 uhd-host
-            ;;
           "ubuntu18.04" | "ubuntu20.04" | "ubuntu22.04")
             $SUDO apt-get -y install libuhd-dev libuhd4.2.0 uhd-host
             ;;
         esac
     elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
+        boost_libs_fedora="boost-chrono boost-date-time boost-filesystem boost-program-options boost-thread boost-test boost-regex boost-devel"
         if [ $IS_CONTAINER -eq 0 ]
         then
-            $SUDO $INSTALLER -y install python boost libusb-devel libusbx-devel boost-devel python-mako python-docutils $CMAKE
-            $SUDO -H pip install requests
+            $SUDO $INSTALLER -y install python3 $boost_libs_fedora libusb-devel libusbx-devel  python3-mako python3-docutils python3-pip $CMAKE
+            $SUDO pip3 install requests
         else
-            $SUDO $INSTALLER -y install boost boost-devel $CMAKE
+            $SUDO $INSTALLER -y install $boost_libs_fedora $CMAKE
             $SUDO pip3 install mako requests
         fi
         if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
@@ -419,6 +417,8 @@ install_bladerf_driver_from_source(){
     $SUDO ldconfig
     echo "Downloading FPGA and firmware images"
     cd /tmp/bladeRF
+    #wget has been removed from default dependencies, so we must be sure that's installed
+    $SUDO $INSTALLER -y install wget
     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
@@ -529,110 +529,42 @@ check_install_soapy () {
 check_install_additional_tools (){
   $SUDO $INSTALLER update -y
   local optional_packages=""
-  if [[ "$OS_DISTRO" == "ubuntu" ]]; then
+  if [[ "$OS_BASEDISTRO" == "debian" ]]; then
     case "$(get_distribution_release)" in
-        "ubuntu16.04"| "ubuntu18.04")
-            optional_packages="python-dev python-pexpect python-numpy python-scipy python-matplotlib ctags"
+        "ubuntu18.04")
+            optional_packages="python-dev python-pip python-pyroute2 python python-numpy python-scipy python-matplotlib ctags"
             ;;
-        "ubuntu20.04" | "ubuntu21.04" | "ubuntu22.04" )
-            optional_packages="python3 python3-pip python3-dev python3-scipy python3-matplotlib universal-ctags"
+        "ubuntu20.04" | "ubuntu21.04" | "ubuntu22.04" | "debian11" )
+            optional_packages="python3 python3-pip python3-dev python3-scipy python3-matplotlib python3-pyroute2 universal-ctags"
             ;;
     esac
     PACKAGE_LIST="\
-	check \
-	dialog \
-	dkms \
-	gawk \
-	libboost-all-dev \
+	doxygen \
 	libpthread-stubs0-dev \
-	openvpn \
-	pkg-config \
-	sshfs \
-	swig  \
 	tshark \
 	uml-utilities \
-	unzip  \
-	valgrind  \
-	vlan	  \
-        ntpdate \
         iperf3 \
-        android-tools-adb \
-	wvdial \
-        sshpass \
-        bc \
-        ntp"
+        libforms-bin \
+        libforms-dev \
+        xmlstarlet"
   elif [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
     PACKAGE_LIST="\
-      check \
-      dialog \
-      dkms \
-      gawk \
-      boost-devel \
-      openvpn \
-      pkgconfig \
-      pexpect \
-      sshfs \
-      swig  \
-      wireshark \
-      unzip  \
-      valgrind  \
-      vconfig	  \
+      doxygen \
       ctags \
-      ntpdate \
       iperf3 \
-      wvdial \
-      numpy \
-      sshpass \
-      python2-paramiko \
-      python-pyroute2 \
-      python-netifaces \
-      scipy \
-      python-matplotlib"
+      xforms \
+      xforms-devel \
+      xmlstarlet"
   elif [[ "$OS_DISTRO" == "fedora" ]]; then
     PACKAGE_LIST=" \
-      check \
-      dialog \
-      dkms \
-      gawk \
-      boost-devel \
-      openvpn \
-      pkgconfig \
-      python-pexpect \
-      sshfs \
-      swig  \
-      wireshark \
-      unzip  \
-      valgrind  \
-      vconfig	  \
+      doxygen \
       ctags \
-      ntpsec \
       iperf3 \
-      wvdial \
-      python-numpy \
-      sshpass \
-      python-paramiko \
-      python-pyroute2 \
-      python-netifaces \
-      python-scipy \
-      python-matplotlib"
+      xforms \
+      xforms-devel \
+      xmlstarlet"
   fi
     $SUDO $INSTALLER install -y $PACKAGE_LIST $optional_packages
-
-  #The packages below are already installed for Redhat distros (RHEL, CentOS, Fedora)
-  if [[ "$OS_DISTRO" == "ubuntu" ]]; then
-    $SUDO -H pip install paramiko
-    $SUDO -H pip install pyroute2 colorama
-    log_netiface=$OPENAIR_DIR/cmake_targets/log/netiface_install_log.txt
-    echo_info "Installing Netinterfaces package. The logfile for installation is in $log_netiface"
-    (
-    $SUDO rm -fr /tmp/netifaces-0.10.4.tar.gz /tmp/netifaces
-    wget --tries=3 --retry-connrefused -P /tmp  https://pypi.python.org/packages/18/fa/dd13d4910aea339c0bb87d2b3838d8fd923c11869b1f6e741dbd0ff3bc00/netifaces-0.10.4.tar.gz
-    tar -xzvf /tmp/netifaces-0.10.4.tar.gz -C /tmp
-    cd /tmp/netifaces-0.10.4
-    $SUDO python setup.py install
-    cd -
-    ) >& $log_netiface
-  fi
 }
 
 check_install_oai_software() {
@@ -642,91 +574,48 @@ check_install_oai_software() {
         exit 1
     fi
     $SUDO $INSTALLER update -y
-  if [[ "$OS_DISTRO" == "ubuntu" ]]; then
-    local LAPACK_LIBNAME="liblapack.so"
-    local LAPACK_TARGET="/usr/lib/atlas-base/atlas/liblapack.so"
+  if [[ "$OS_BASEDISTRO" == "debian" ]]; then
     $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 python guile-2.0-dev"
-            ;;
         "ubuntu18.04")
-            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"
+            specific_packages="libgcrypt11-dev guile-2.0-dev"
             ;;
         "ubuntu20.04")
-            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"
+            specific_packages="guile-2.0-dev"
             ;;
          "ubuntu21.04")
-            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"
+            specific_packages="guile-2.0-dev"
             ;;
          "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"
+            specific_packages="guile-2.2-dev"
+            ;;
+         "debian11")
+            specific_packages="guile-2.2-dev libz-dev"
             ;;
     esac
     $SUDO apt-get install -y \
     $specific_packages \
-	autoconf  \
 	automake  \
-	bison  \
 	build-essential \
 	$CMAKE \
-	cmake-curses-gui  \
-	curl \
         ninja-build \
-	doxygen \
-	doxygen-gui \
-	texlive-latex-base \
-	ethtool \
-	flex  \
-        g++ \
-        gcc \
-	gdb  \
+	pkg-config \
 	git \
-	graphviz \
-	gtkwave \
-	iperf \
-	iptables \
 	libatlas-base-dev \
 	libblas-dev \
 	liblapack-dev \
 	liblapacke-dev \
-	libffi-dev \
-	libforms-bin \
-	libforms-dev \
-	libgmp-dev \
-	libgtk-3-dev \
-	libidn2-0-dev  \
-	libidn11-dev \
-	libmysqlclient-dev  \
-	libpython2.7-dev \
-        libreadline-dev \
-	libsctp1  \
+	libreadline-dev \
+	libgnutls28-dev \
+	libconfig-dev \
 	libsctp-dev  \
 	libssl-dev  \
 	libtool  \
-	libusb-1.0-0-dev \
-	libxml2 \
-	libxml2-dev  \
 	libxslt1-dev \
-	octave-signal \
-	openssh-client \
-	openssh-server \
+	libtasn1-6-dev \
+	patch \
 	openssl \
-	subversion \
-	xmlstarlet \
-	wget \
-	libxpm-dev \
-        libboost-all-dev
-
-    $SUDO update-alternatives --set "$LAPACK_LIBNAME" "$LAPACK_TARGET"
+        xxd
 
     $SUDO apt-get install -y nettle-dev nettle-bin
   elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
@@ -735,74 +624,40 @@ check_install_oai_software() {
         echo "EPEL repos already present. Good."
       else
         echo "EPEL repos not present. Installing them."
-        $SUDO $INSTALLER install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
+        $SUDO $INSTALLER install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
       fi
-      $SUDO $INSTALLER install -y python-epdb vim-common
     fi
 
     $SUDO $INSTALLER install -y \
-      autoconf \
       automake \
-      bc \
-      bison \
       $CMAKE \
-      doxygen \
-      ethtool \
-      flex \
-      g++ \
       gcc \
-      gdb \
+      gcc-c++ \
       git \
-      graphviz \
-      gtkwave \
       guile-devel \
-      iperf \
-      iproute \
-      iptables \
-      iptables-devel \
       atlas-devel \
-      blas-devel \
+      pkgconfig \
       libconfig-devel \
       libffi-devel \
-      xforms \
-      xforms-devel \
       libgcrypt-devel \
-      gmp-devel \
-      gtk3-devel \
-      libidn2-devel  \
-      libidn-devel \
-      mariadb-devel \
       lksctp-tools \
       lksctp-tools-devel \
       openssl-devel \
       libtasn1 \
       libtool \
-      libusb-devel \
-      libxml2 \
-      libxml2-devel \
       libxslt-devel \
       ninja-build \
       make \
-      openssh-clients \
-      openssh-server \
       openssl \
       patch \
-      psmisc \
-      python \
       readline-devel \
-      subversion \
-      xmlstarlet \
-      python-pip \
-      wget \
-      kernel-headers \
-      kernel-devel \
       nettle-devel \
       gnutls-devel \
-      libXpm-devel \
       lapack \
       lapack-devel \
       blas \
-      blas-devel
+      blas-devel \
+      vim-common
   fi
 
     install_asn1c_from_source $1
diff --git a/docker/Dockerfile.base.rhel8.2 b/docker/Dockerfile.base.rhel8.2
index ae41956379..17a559379d 100644
--- a/docker/Dockerfile.base.rhel8.2
+++ b/docker/Dockerfile.base.rhel8.2
@@ -68,5 +68,5 @@ COPY . .
 RUN /bin/sh oaienv && \ 
     cd cmake_targets && \
     mkdir -p log && \
-    ./build_oai -I -w USRP && \
+    ./build_oai -I --install-optional-packages -w USRP && \
     rm /etc/pki/entitlement/*pem
diff --git a/docker/Dockerfile.base.ubuntu18 b/docker/Dockerfile.base.ubuntu18
index 1a19304c10..7cf2ecceaa 100644
--- a/docker/Dockerfile.base.ubuntu18
+++ b/docker/Dockerfile.base.ubuntu18
@@ -57,4 +57,4 @@ COPY . .
 RUN /bin/sh oaienv && \ 
     cd cmake_targets && \
     mkdir -p log && \
-    ./build_oai -I -w USRP
+    ./build_oai -I -w USRP --install-optional-packages
diff --git a/docker/Dockerfile.phySim.rhel8.2 b/docker/Dockerfile.phySim.rhel8.2
index c3f6d258b3..62378bf7dd 100644
--- a/docker/Dockerfile.phySim.rhel8.2
+++ b/docker/Dockerfile.phySim.rhel8.2
@@ -101,7 +101,6 @@ WORKDIR /usr/bin/
 COPY --from=phy-sim-build \
     /usr/bin/killall \
     /usr/bin/xmlstarlet \
-    /usr/bin/svn \
     ./
 
 # Copy the relevant configuration files for phySim
diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c
index 2cbea144cf..dddd1da641 100644
--- a/executables/nr-softmodem.c
+++ b/executables/nr-softmodem.c
@@ -68,7 +68,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include <openair2/GNB_APP/gnb_app.h>
 #include "PHY/TOOLS/phy_scope_interface.h"
 #include "PHY/TOOLS/nr_phy_scope.h"
-#include "stats.h"
 #include "nr-softmodem.h"
 #include "executables/softmodem-common.h"
 #include "executables/thread-common.h"
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index c4ff82c22b..44e79121b2 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -49,7 +49,6 @@
 #include "PHY/MODULATION/modulation_common.h"
 #include "PHY/MODULATION/modulation_eNB.h"
 #include "PHY/MODULATION/modulation_UE.h"
-#include "PHY/TOOLS/lte_phy_scope.h"
 #include "SCHED/sched_eNB.h"
 #include "SCHED_UE/sched_UE.h"
 #include "SIMULATION/TOOLS/sim.h"
@@ -493,7 +492,6 @@ int test_perf=0;
 int n_frames;
 int n_ch_rlz = 1;
 int rx_sample_offset = 0;
-int xforms=0;
 int dump_table=0;
 int loglvl=OAILOG_INFO;
 int mcs1=0,mcs2=0,mcs_i=0,dual_stream_UE = 0,awgn_flag=0;
@@ -565,7 +563,6 @@ int main(int argc, char **argv) {
   short *uncoded_ber_bit=NULL;
   int osf=1;
   frame_t frame_type = FDD;
-  FD_lte_phy_scope_ue *form_ue = NULL;
   char title[255];
   int numCCE=0;
   //int dci_length_bytes=0,dci_length=0;
@@ -679,7 +676,6 @@ int main(int argc, char **argv) {
     { "uEdual", "Enables the Interference Aware Receiver for TM5 (default is normal receiver)",0, iptr:NULL,  defintval:0, TYPE_INT, 0 },
     { "xTransmission","Transmission mode (1,2,6,7 for the moment)",0, iptr:NULL,  defintval:25, TYPE_INT, 0 },
     { "yn_tx_phy","Number of TX antennas used in eNB",0, iptr:NULL,  defintval:25, TYPE_INT, 0 },
-    { "XForms", "Display the soft scope", PARAMFLAG_BOOL, iptr:&xforms,  defintval:0, TYPE_INT, 0 },
     { "Yperfect_ce","Perfect CE", PARAMFLAG_BOOL, iptr:&perfect_ce,  defintval:0, TYPE_INT, 0 },
     { "Zdump", "dump table",PARAMFLAG_BOOL,  iptr:&dump_table, defintval:0, TYPE_INT, 0 },
     { "Loglvl", "log level",0, iptr:&loglvl,  defintval:OAILOG_INFO, TYPE_INT, 0 },
@@ -952,24 +948,6 @@ int main(int argc, char **argv) {
     AssertFatal(NB_RB <= N_RB_DL,"illegal NB_RB %d\n",NB_RB);
   }
 
-  if (xforms==1) {
-    fl_initialize (&argc, argv, NULL, 0, 0);
-    form_ue = create_lte_phy_scope_ue();
-    sprintf (title, "LTE PHY SCOPE eNB");
-    fl_show_form (form_ue->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
-
-    if (!dual_stream_UE==0) {
-      if (UE) {
-        UE->use_ia_receiver = 1;
-        fl_set_button(form_ue->button_0,1);
-        fl_set_object_label(form_ue->button_0, "IA Receiver ON");
-        fl_set_object_color(form_ue->button_0, FL_GREEN, FL_GREEN);
-      } else {
-        printf("UE  is NULL\n");
-        exit(-1);
-      }
-    }
-  }
 
   if (transmission_mode==5) {
     n_users = 2;
@@ -1792,13 +1770,6 @@ int main(int argc, char **argv) {
             //      UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->round++;
           }
 
-          if (xforms==1) {
-            phy_scope_UE(form_ue,
-                         UE,
-                         eNB_id,
-                         0,// UE_id
-                         subframe);
-          }
 
           UE->proc.proc_rxtx[UE->current_thread_id[subframe]].frame_rx++;
         }  //round
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index c03d081387..7c75c27378 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -42,7 +42,6 @@
 #include "PHY/INIT/phy_init.h"
 #include "PHY/LTE_TRANSPORT/transport_proto.h"
 #include "PHY/LTE_UE_TRANSPORT/transport_proto_ue.h"
-#include "PHY/TOOLS/lte_phy_scope.h"
 #include "SCHED/sched_eNB.h"
 #include "SCHED_UE/sched_UE.h"
 #include "SIMULATION/TOOLS/sim.h"
@@ -69,18 +68,15 @@ double cpuf;
 #include <openair1/SIMULATION/LTE_PHY/common_sim.h>
 channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX];
 channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX];
-//Added for PHY abstractionopenair1/PHY/TOOLS/lte_phy_scope.h
 node_desc_t *enb_data[NUMBER_OF_eNB_MAX];
 node_desc_t *ue_data[NUMBER_OF_UE_MAX];
 //double sinr_bler_map[MCS_COUNT][2][16];
 
 extern uint16_t beta_ack[16],beta_ri[16],beta_cqi[16];
 //extern  char* namepointer_chMag ;
-int xforms=0;
 THREAD_STRUCT thread_struct;
 nfapi_ue_release_request_body_t release_rntis;
 
-FD_lte_phy_scope_enb *form_enb;
 char title[255];
 
 /*the following parameters are used to control the processing times*/
@@ -435,7 +431,6 @@ int main(int argc, char **argv) {
     { "delay_chan", "Channel delay",0, iptr:&delay,  defintval:0, TYPE_INT, 0 },
     { "Doppler", "Maximum doppler shift",0, dblptr:&maxDoppler,  defdblval:0.0, TYPE_DOUBLE, 0 },
     { "Zdump", "dump table",PARAMFLAG_BOOL,  iptr:&dump_table, defintval:0, TYPE_INT, 0 },
-    { "Forms", "Display the soft scope", PARAMFLAG_BOOL, iptr:&xforms,  defintval:0, TYPE_INT, 0 },
     { "Lparallel", "Enable parallel execution",0, strptr:NULL,  defstrval:NULL, TYPE_STRING,  0 },
     { "Iterations", "Number of iterations of turbo decoder", 0, iptr:&max_turbo_iterations,  defintval:4, TYPE_INT, 0 },
     { "Performance", "Display CPU perfomance of each L1 piece", PARAMFLAG_BOOL,  iptr:NULL,  defintval:0, TYPE_INT, 0 },
@@ -695,13 +690,6 @@ int main(int argc, char **argv) {
     fprintf(csv_fdUL,"data_all%d=[",mcs);
   }
 
-  if (xforms==1) {
-    fl_initialize (&argc, argv, NULL, 0, 0);
-    form_enb = create_lte_phy_scope_enb();
-    sprintf (title, "LTE PHY SCOPE eNB");
-    fl_show_form (form_enb->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
-  }
-
   UE->pdcch_vars[0][0]->crnti = 14;
   UE->frame_parms.soundingrs_ul_config_common.enabled_flag = srs_flag;
   UE->frame_parms.soundingrs_ul_config_common.srs_BandwidthConfig = 2;
@@ -1265,9 +1253,6 @@ int main(int argc, char **argv) {
         if ((errs[0]>=100) && (trials>(n_frames/2)))
           break;
 
-        if (xforms==1)
-          phy_scope_eNB(form_enb,eNB,0);
-
         double t_tx = inMicroS(UE->phy_proc_tx.p_time);
         double t_tx_ifft = inMicroS(UE->ofdm_mod_stats.p_time);
         double t_tx_mod = inMicroS(UE->ulsch_modulation_stats.p_time);
-- 
2.26.2