mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
624 lines
20 KiB
Plaintext
Executable File
624 lines
20 KiB
Plaintext
Executable File
# SPDX-License-Identifier: LicenseRef-CSSL-1.0
|
|
|
|
# file build_helper
|
|
# brief
|
|
#
|
|
#######################################
|
|
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
|
|
fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
|
|
rhel) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake3" ;;
|
|
rocky) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
|
|
centos) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake3" ;; # CentOS Stream
|
|
debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
|
|
ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
|
|
esac
|
|
KERNEL_VERSION=$(uname -r | cut -d '.' -f1)
|
|
KERNEL_MAJOR=$(uname -r | cut -d '.' -f2)
|
|
|
|
#check if we run inside a container
|
|
IS_CONTAINER=`grep -E -c "docker|podman|kubepods|libpod|buildah" /proc/self/cgroup || true`
|
|
#sudo is not needed when we are root
|
|
if [ "$UID" = 0 ]
|
|
then
|
|
SUDO=''
|
|
else
|
|
SUDO='sudo -S -E'
|
|
fi
|
|
|
|
###############################
|
|
## echo and family
|
|
###############################
|
|
# only emit color if connected to a terminal, and if it supports colors
|
|
if [ -t 1 ]; then
|
|
num_colors=$(tput colors)
|
|
if [ -n "$num_colors" ] && [ "$num_colors" -ge 8 ]; then
|
|
red='\E[31m'
|
|
green='\E[32m'
|
|
yellow='\E[33m'
|
|
blue='\E[1;34m'
|
|
reset_color='\E[00m'
|
|
fi
|
|
fi
|
|
|
|
cecho() {
|
|
# Color-echo
|
|
# arg1 = message
|
|
# arg2 = color
|
|
local default_msg="No Message."
|
|
message=${1:-$default_msg}
|
|
color=${2:-$green}
|
|
echo -e "$color$message$reset_color"
|
|
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
|
|
# If we can't check the distribution, it returns "Unknown"
|
|
# This function return always true as exit code by design
|
|
# Examples:
|
|
# debian8.5
|
|
get_distribution_release() {
|
|
if [[ ! -z "$OS_DISTRO$OS_RELEASE" ]]; then
|
|
echo "$OS_DISTRO$OS_RELEASE"
|
|
else
|
|
echo Unknown
|
|
fi
|
|
}
|
|
|
|
check_supported_distribution() {
|
|
local distribution=$(get_distribution_release)
|
|
case "$distribution" in
|
|
"ubuntu26.04") return 0 ;;
|
|
"ubuntu24.04") return 0 ;;
|
|
"ubuntu22.04") return 0 ;;
|
|
"debian11") return 0 ;;
|
|
"debian12") return 0 ;;
|
|
"fedora43") return 0 ;;
|
|
"fedora44") return 0 ;;
|
|
"rhel9.0") return 0 ;;
|
|
"rhel9.1") return 0 ;;
|
|
"rhel9.2") return 0 ;;
|
|
"rhel9.3") return 0 ;;
|
|
"rhel9.4") return 0 ;;
|
|
"rhel9.5") return 0 ;;
|
|
"rhel9.6") return 0 ;;
|
|
"rhel9.7") return 0 ;;
|
|
"rhel9.8") return 0 ;;
|
|
"centos9") return 0 ;; # CentOS stream
|
|
"rocky9.1") return 0 ;;
|
|
"rocky9.2") return 0 ;;
|
|
"rocky9.3") return 0 ;;
|
|
"rocky9.4") return 0 ;;
|
|
"rocky9.5") return 0 ;;
|
|
"rocky9.6") return 0 ;;
|
|
"rocky9.7") return 0 ;;
|
|
"rocky9.8") 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
|
|
|
|
############################################
|
|
# External packages installers
|
|
############################################
|
|
|
|
install_usrp_uhd_driver_from_source(){
|
|
echo_info "\nInstalling UHD driver from sources."
|
|
pushd /tmp
|
|
echo "Cloning UHD driver repository"
|
|
rm -rf /tmp/uhd
|
|
git clone https://github.com/EttusResearch/uhd.git
|
|
cd uhd
|
|
# For our legacy TDD eNB running with a B2xx RF board
|
|
# the following patch has to be applied
|
|
if [[ -v UHD_VERSION ]]; then
|
|
git checkout tags/v${UHD_VERSION}
|
|
# We recommend to use not older than 3.15.0.0
|
|
if [[ "$UHD_VERSION" == "3.15.0.0" ]]; then
|
|
# Tested that patch for the following versions:
|
|
# - 3.15.0.0
|
|
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-3.15-tdd-patch.diff
|
|
ret=$?;[[ $ret -ne 0 ]] && echo_fatal "Could not apply the TDD patch"
|
|
elif [[ "$UHD_VERSION" == "4.10.0.0" || "$UHD_VERSION" == "4.9.0.0" || "$UHD_VERSION" == "4.8.0.0" || "$UHD_VERSION" == "4.7.0.0" || "$UHD_VERSION" == "4.6.0.0" || "$UHD_VERSION" == "4.5.0.0" ]]; then
|
|
# Tested patch for versions listed in elif clause
|
|
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-4.5plus-tdd-patch.diff
|
|
ret=$?;[[ $ret -ne 0 ]] && echo_fatal "Could not apply the TDD patch"
|
|
else
|
|
# Tested that patch for the following versions:
|
|
# - 4.0.0.0
|
|
# - 4.1.0.0
|
|
# - 4.1.0.5
|
|
# - 4.2.0.0
|
|
# - 4.2.0.1
|
|
# - 4.3.0.0-rc1
|
|
# - 4.4.0.0
|
|
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-4.x-tdd-patch.diff
|
|
ret=$?;[[ $ret -ne 0 ]] && echo_fatal "Could not apply the TDD patch"
|
|
fi
|
|
else
|
|
git checkout tags/v4.8.0.0
|
|
git apply $OPENAIR_DIR/cmake_targets/tools/uhd-4.5plus-tdd-patch.diff
|
|
ret=$?;[[ $ret -ne 0 ]] && echo_fatal "Could not apply the TDD patch"
|
|
fi
|
|
# Printing out the results of the patch to make sure it was properly applied
|
|
git diff
|
|
mkdir -p host/build
|
|
cd host/build || true
|
|
$CMAKE ../ -GNinja -DENABLE_TESTS=OFF -DENABLE_EXAMPLES=OFF -DENABLE_B100=OFF -DENABLE_DOXYGEN=OFF -DENABLE_MANUAL=OFF -DENABLE_MAN_PAGES=OFF -DENABLE_MAN_PAGE_COMPRESSION=OFF -DENABLE_OCTOCLOCK=ON -DENABLE_USRP1=OFF -DENABLE_USRP2=OFF
|
|
echo "Compiling UHD"
|
|
ninja
|
|
$SUDO ninja install
|
|
$SUDO ldconfig -v
|
|
if [ $IS_CONTAINER -eq 0 ]; then
|
|
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
|
$SUDO /usr/local/lib/uhd/utils/uhd_images_downloader.py
|
|
fi
|
|
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "rocky" ]]; then
|
|
$SUDO /usr/local/lib64/uhd/utils/uhd_images_downloader.py
|
|
fi
|
|
fi
|
|
popd
|
|
rm -rf /tmp/uhd
|
|
}
|
|
|
|
check_install_usrp_uhd_driver(){
|
|
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* libuhd* -y || true
|
|
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 ]] || [[ "$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
|
|
echo_info "\nAdding PPA repository ettusresearch/uhd\n"
|
|
$SUDO add-apt-repository ppa:ettusresearch/uhd -y
|
|
$SUDO apt-get update
|
|
$SUDO apt-get -y install python3-tk $boost_libs_ubuntu libusb-1.0-0-dev
|
|
case "$(get_distribution_release)" in
|
|
"ubuntu22.04") $SUDO apt-get -y install libuhd-dev libuhd4.5.0 uhd-host ;;
|
|
"ubuntu24.04") $SUDO apt-get -y install libuhd-dev libuhd4.8.0 uhd-host ;;
|
|
"ubuntu26.04") $SUDO apt-get -y install libuhd-dev libuhd4.9.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 python3 $boost_libs_fedora libusb1-devel libusbx-devel python3-mako python3-docutils python3-pip $CMAKE
|
|
$SUDO pip3 install requests
|
|
else
|
|
$SUDO $INSTALLER -y install $boost_libs_fedora $CMAKE
|
|
$SUDO pip3 install mako requests
|
|
fi
|
|
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]] || [[ "$OS_DISTRO" == "rocky" ]]; then
|
|
if [ $IS_CONTAINER -eq 0 ]
|
|
then
|
|
# until EPEL repo hasn't bumped UHD driver to >=3.10 in EPEL, build driver from source
|
|
$SUDO $INSTALLER -y remove uhd uhd-devel uhd-firmware
|
|
fi
|
|
install_usrp_uhd_driver_from_source
|
|
else
|
|
$SUDO $INSTALLER -y install uhd uhd-devel uhd-firmware
|
|
fi
|
|
fi
|
|
}
|
|
|
|
install_usrp_uhd_driver() {
|
|
if [[ "$OS_DISTRO" == "ubuntu" ]]; then
|
|
# We move uhd-host apart because it depends on linux kernel version
|
|
# On newer kernels, it fails to install
|
|
$SUDO apt-get -y install uhd-host
|
|
fi
|
|
# quick workaround for below distributions
|
|
local distribution=$(get_distribution_release)
|
|
if [ -z $1 ]; then
|
|
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "rocky" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
|
|
$SUDO /usr/local/bin/uhd_images_downloader
|
|
else
|
|
$SUDO uhd_images_downloader
|
|
fi
|
|
else
|
|
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "rocky" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
|
|
$SUDO /usr/local/bin/uhd_images_downloader -i $1
|
|
else
|
|
$SUDO uhd_images_downloader -i $1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
install_bladerf_driver_from_source(){
|
|
echo_info "\nInstalling BladeRF driver from sources."
|
|
cd /tmp
|
|
echo "Downloading BladeRF driver"
|
|
rm -rf /tmp/bladeRF
|
|
git clone https://github.com/Nuand/bladeRF.git
|
|
cd bladeRF
|
|
git checkout tags/2025.10
|
|
mkdir -p build
|
|
cd build
|
|
$CMAKE ../
|
|
echo "Compiling BladeRF driver"
|
|
make
|
|
$SUDO make install
|
|
$SUDO ldconfig
|
|
}
|
|
|
|
check_install_bladerf_driver(){
|
|
if [[ "$OS_BASEDISTRO" == "debian" ]]; then
|
|
$SUDO apt-get update
|
|
$SUDO apt-get install -y libcurl4-openssl-dev
|
|
elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
|
|
$SUDO dnf -y install libcurl-devel
|
|
fi
|
|
install_bladerf_driver_from_source
|
|
}
|
|
|
|
check_install_lmssdr_driver(){
|
|
if ( [ -d "/usr/local/include/lime" ] &&
|
|
[ -f "/usr/local/include/lime/LimeSuite.h" ] )
|
|
then
|
|
echo_success "Found lmssdr drivers and tools installed from source"
|
|
else
|
|
echo_error "lmssdr support implies installing lmssdr drivers and tools" \
|
|
" from sources. check:"
|
|
echo_info "https://wiki.myriadrf.org/Lime_Suite"
|
|
echo_fatal "Cannot compile lmssdr device"
|
|
fi
|
|
}
|
|
|
|
install_soapy_from_source(){
|
|
echo_info "\nInstalling Soapy EcoSystem from source."
|
|
cd /tmp
|
|
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
|
|
#git checkout tags/release_003_010_001_001
|
|
mkdir -p build
|
|
cd build
|
|
$CMAKE ../
|
|
echo "Compiling SoapySDR"
|
|
make -j`nproc`
|
|
$SUDO make install
|
|
$SUDO ldconfig
|
|
cd /tmp
|
|
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
|
|
#git checkout tags/release_003_010_001_001
|
|
mkdir -p build
|
|
cd build
|
|
$CMAKE ../
|
|
echo "Compiling SoapyRemote"
|
|
make -j`nproc`
|
|
$SUDO make install
|
|
$SUDO ldconfig
|
|
}
|
|
|
|
install_soapy_iris_from_source(){
|
|
echo_info "\nInstalling Iris driver from source."
|
|
cd /tmp
|
|
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
|
|
mkdir -p build
|
|
cd build
|
|
$CMAKE ../
|
|
echo "Compiling SoapyIris"
|
|
make -j`nproc`
|
|
$SUDO make install
|
|
$SUDO ldconfig
|
|
}
|
|
|
|
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_additional_tools (){
|
|
$SUDO $INSTALLER update -y
|
|
local optional_packages=""
|
|
if [[ "$OS_BASEDISTRO" == "debian" ]]; then
|
|
case "$(get_distribution_release)" in
|
|
"ubuntu22.04" | "debian11" | "debian12" )
|
|
optional_packages="python3 python3-pip python3-dev python3-scipy python3-matplotlib python3-pyroute2 universal-ctags"
|
|
;;
|
|
esac
|
|
PACKAGE_LIST="\
|
|
doxygen \
|
|
libgnutls28-dev \
|
|
libpthread-stubs0-dev \
|
|
tshark \
|
|
uml-utilities \
|
|
iperf3 \
|
|
libforms-bin \
|
|
libforms-dev \
|
|
libxft-dev \
|
|
libpcre3-dev \
|
|
libssh-dev \
|
|
libxml2-dev"
|
|
elif [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]] || [[ "$OS_DISTRO" == "rocky" ]] || [[ "$OS_DISTRO" == "fedora" ]]; then
|
|
PACKAGE_LIST="\
|
|
doxygen \
|
|
ctags \
|
|
iperf3 \
|
|
gnutls-devel \
|
|
libXft-devel \
|
|
xforms \
|
|
xforms-devel \
|
|
pcre-devel \
|
|
libssh-devel \
|
|
libxml2-devel"
|
|
fi
|
|
$SUDO $INSTALLER install -y $PACKAGE_LIST $optional_packages
|
|
}
|
|
|
|
check_install_oai_software() {
|
|
local specific_packages=""
|
|
if ! check_supported_distribution; then
|
|
echo_error "Your distribution $(get_distribution_release) is not supported by oai !"
|
|
exit 1
|
|
fi
|
|
$SUDO $INSTALLER update -y
|
|
if [[ "$OS_BASEDISTRO" == "debian" ]]; then
|
|
$SUDO apt install -y software-properties-common
|
|
case "$(get_distribution_release)" in
|
|
"debian11" | "debian12" )
|
|
specific_packages="libz-dev"
|
|
;;
|
|
esac
|
|
$SUDO apt-get install -y \
|
|
$specific_packages \
|
|
automake \
|
|
build-essential \
|
|
$CMAKE \
|
|
ninja-build \
|
|
pkg-config \
|
|
git \
|
|
libreadline-dev \
|
|
libconfig-dev \
|
|
libsctp-dev \
|
|
libssl-dev \
|
|
libtool \
|
|
patch \
|
|
openssl \
|
|
zlib1g-dev \
|
|
xxd \
|
|
libyaml-cpp-dev
|
|
|
|
elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
|
|
if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]] || [[ "$OS_DISTRO" == "rocky" ]]; then
|
|
if rpm -q epel-release > /dev/null; then
|
|
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-9.noarch.rpm
|
|
fi
|
|
fi
|
|
|
|
$SUDO $INSTALLER install -y \
|
|
automake \
|
|
$CMAKE \
|
|
gcc \
|
|
gcc-c++ \
|
|
git \
|
|
pkgconfig \
|
|
libconfig-devel \
|
|
lksctp-tools \
|
|
lksctp-tools-devel \
|
|
libtool \
|
|
ninja-build \
|
|
make \
|
|
openssl-devel \
|
|
patch \
|
|
readline-devel \
|
|
vim-common \
|
|
zlib-devel \
|
|
yaml-cpp-devel
|
|
fi
|
|
|
|
install_asn1c_from_source $1
|
|
install_simde_from_source $1
|
|
}
|
|
|
|
install_asn1c_from_source(){
|
|
echo_info "\nInstalling ASN1."
|
|
$SUDO $INSTALLER -y install bison flex
|
|
$SUDO rm -rf /tmp/asn1c
|
|
git clone https://github.com/mouse07410/asn1c /tmp/asn1c
|
|
cd /tmp/asn1c
|
|
#git checkout vlm_master
|
|
# hotfix: current vlm_master (5fa129cf3161da9ff2d67341e6277e818c0f5d6a)
|
|
# breaks F1, NG, so use the one before.
|
|
git checkout 940dd5fa9f3917913fd487b13dfddfacd0ded06e
|
|
# Showing which version is used
|
|
git log -n1
|
|
autoreconf -iv
|
|
CFLAGS="-O2 -fno-strict-aliasing" ./configure --prefix /opt/asn1c/
|
|
make -j`nproc`
|
|
$SUDO make install
|
|
cd -
|
|
$SUDO ldconfig
|
|
if [[ -v CI_ENV ]]; then
|
|
$SUDO rm -rf /tmp/asn1c
|
|
fi
|
|
}
|
|
|
|
install_simde_from_source(){
|
|
echo_info "\nInstalling SIMDE from source without test cases (header files only)"
|
|
cd /tmp
|
|
$SUDO rm -rf /tmp/simde
|
|
git clone https://github.com/simd-everywhere/simde-no-tests.git /tmp/simde
|
|
cd /tmp/simde
|
|
# we can specify a given version of SIMDE (sha-one or tag)
|
|
if [[ -v SIMDE_VERSION ]]; then
|
|
git checkout -f $SIMDE_VERSION
|
|
else
|
|
# At time of writing, last working commit for OAI: 1c68d9a
|
|
git checkout 1c68d9ad60bf63f3fb527c4ee3b2319d828ffcc6
|
|
fi
|
|
# Showing which version is used
|
|
git log -n1
|
|
# brute force copy into /usr/include
|
|
$SUDO \cp -rv ../simde /usr/include
|
|
}
|
|
|
|
install_lttng() {
|
|
if [[ "$OS_DISTRO" != "ubuntu" ]]; then
|
|
echo_info "LTTng is supported only for ubuntu at the moment."
|
|
echo_info $distribution
|
|
return
|
|
fi
|
|
|
|
set +e
|
|
$SUDO apt-add-repository ppa:lttng/stable-2.13 -y && apt-get update
|
|
$SUDO apt-get install -y lttng-tools lttng-modules-dkms liblttng-ust-dev
|
|
if [[ $? > 0 ]]; then
|
|
echo "Failed to install LTTng using apt. Installing from source"
|
|
install_lttng_deps
|
|
install_lttng_from_source
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
install_lttng_deps() {
|
|
echo "installing dependencies of LTTng"
|
|
$SUDO apt-get install uuid-dev libxml2-dev -y
|
|
}
|
|
|
|
install_lttng_from_source() {
|
|
echo "installing LTTng from source"
|
|
install_popt_1_18_from_source
|
|
install_userspace_rcu
|
|
install_lttng_ust_2_13_from_source
|
|
install_lttng_tools_2_13_from_source
|
|
}
|
|
|
|
install_popt_1_18_from_source() {
|
|
$SUDO $INSTALLER -y install wget
|
|
echo_info "\nInstalling popt_1_18."
|
|
cd $(mktemp -d) &&
|
|
wget http://ftp.rpm.org/popt/releases/popt-1.x/popt-1.18.tar.gz
|
|
tar -xf popt-1.18.tar.gz && cd popt-1.18
|
|
./configure && make -j16 && $SUDO make install
|
|
}
|
|
|
|
install_userspace_rcu() {
|
|
echo_info "\nInstalling U-RCU from source."
|
|
cd /tmp
|
|
$SUDO rm -rf /tmp/urcu
|
|
git clone https://github.com/urcu/userspace-rcu.git /tmp/urcu
|
|
cd /tmp/urcu
|
|
git checkout stable-0.12
|
|
./bootstrap && ./configure && make
|
|
$SUDO make install
|
|
$SUDO ldconfig
|
|
}
|
|
|
|
|
|
install_lttng_modules_2_13_from_source() {
|
|
$SUDO $INSTALLER -y install wget
|
|
echo_info "\nInstalling LTTng Modules."
|
|
cd $(mktemp -d) &&
|
|
wget https://lttng.org/files/lttng-modules/lttng-modules-latest-2.13.tar.bz2 &&
|
|
tar -xf lttng-modules-latest-2.13.tar.bz2 &&
|
|
cd lttng-modules-2.13.* &&
|
|
make &&
|
|
$SUDO make modules_install &&
|
|
$SUDO depmod -a
|
|
}
|
|
|
|
install_lttng_ust_2_13_from_source() {
|
|
$SUDO $INSTALLER -y install wget
|
|
echo_info "\nInstalling LTTng UST."
|
|
cd $(mktemp -d) &&
|
|
wget https://lttng.org/files/lttng-ust/lttng-ust-latest-2.13.tar.bz2 &&
|
|
tar -xf lttng-ust-latest-2.13.tar.bz2 &&
|
|
cd lttng-ust-2.13.* &&
|
|
./configure --disable-numa &&
|
|
make &&
|
|
$SUDO make install &&
|
|
$SUDO ldconfig
|
|
}
|
|
|
|
install_lttng_tools_2_13_from_source() {
|
|
$SUDO $INSTALLER -y install wget
|
|
echo_info "\nInstalling LTTng Tools."
|
|
cd $(mktemp -d) &&
|
|
wget https://lttng.org/files/lttng-tools/lttng-tools-latest-2.13.tar.bz2 &&
|
|
tar -xf lttng-tools-latest-2.13.tar.bz2 &&
|
|
cd lttng-tools-2.13.* &&
|
|
./configure &&
|
|
make &&
|
|
$SUDO make install &&
|
|
$SUDO ldconfig
|
|
}
|
|
|
|
#################################################
|
|
# 2. compile
|
|
################################################
|
|
|
|
install_nas_tools() {
|
|
echo_success "generate .ue_emm.nvram .ue.nvram"
|
|
./nvram --gen -c $1 -o $2 > "$3"
|
|
echo_success "generate .usim.nvram"
|
|
./usim --gen -c $1 -o $2 >> "$3"
|
|
}
|
|
|
|
|
|
################################
|
|
# set_openair_env
|
|
###############################
|
|
set_openair_env(){
|
|
fullpath=`readlink -f $BASH_SOURCE`
|
|
[ -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
|
|
}
|