Commit 4f583e20 authored by Lionel Gauthier's avatar Lionel Gauthier

branch LG_PRE_RELEASE_0.3 reintegration

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7116 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent a94678b4
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE # Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
# #
################################################################################ ################################################################################
# file build_oai.bash # file build_oai
# brief OAI automated build tool that can be used to install, compile, run OAI. # brief OAI automated build tool that can be used to install, compile, run OAI.
# author Navid Nikaein, Lionel GAUTHIER, Laurent Thomas # author Navid Nikaein, Lionel GAUTHIER, Laurent Thomas
...@@ -37,20 +37,76 @@ ...@@ -37,20 +37,76 @@
################################ ################################
ORIGIN_PATH=$PWD ORIGIN_PATH=$PWD
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0)) THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
source $THIS_SCRIPT_PATH/tools/build_helper.bash source $THIS_SCRIPT_PATH/tools/build_helper
MSC_GEN="False"
XFORMS="False" XFORMS="False"
VCD_TIMING="False" VCD_TIMING="False"
REL="Rel10" REL="Rel10"
HW="EXMIMO" HW="EXMIMO"
until [ -z "$1" ] function print_help() {
do echo_info '
This program installs OpenAirInterface Software
You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
Options
-h
This help
-c | --clean
Erase all files to make a rebuild from start"
-C | --clean-all
Erase all files made by previous compilations, installations"
--clean-kernel
Erase previously installed features in kernel: iptables, drivers, ...
-I | --install-external-packages
Installs required packages such as LibXML, asn1.1 compiler, freediameter, ...
This option will require root password
--install-optional-packages
Install useful but not mandatory packages such as valgrind
-g | --run-with-gdb
Add debugging symbols to compilation directives
-h | --help
Print this help
--eNB
Makes the eNB LTE softmodem
--UE
Makes the UE softmodem
--EPC
Makes the EPC (MME-SPGW, HSS)
-r | --3gpp-release
default is Rel10,
Rel8 limits the implementation to 3GPP Release 8 version
-w | --hardware
EXMIMO (Default), USRP, None
Adds this RF board support (in external packages installation and in compilation)
--oaisim
Makes the oaisim simulator
--phy_simulators
Makes the unitary tests Layer 1 simulators
--core_simulators
Makes the core security features unitary simulators
-s | --check
runs a set of auto-tests based on simulators and several compilation tests
-V | --vcd
Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
Adds a software oscilloscope feature to the produced binaries
--install-system-files
Install OpenArInterface required files in Linux system
(will ask root password)
Typical Options for a quick startup with a COTS UE and Eurecom RF board: build_oai -I -g -eNB -EPC -x --install-system-files'
}
function main() {
until [ -z "$1" ]
do
case "$1" in case "$1" in
-c | --clean) -c | --clean)
CLEAN=1 CLEAN=1
clean_all_files shift;;
echo_info "Erased all previously producted files" -C | --clean-all)
CLEAN_ALL=1
shift;; shift;;
--clean-kernel) --clean-kernel)
clean_kernel clean_kernel
...@@ -86,6 +142,8 @@ do ...@@ -86,6 +142,8 @@ do
shift 2;; shift 2;;
-w | --hardware) -w | --hardware)
HW="$2" #"${i#*=}" HW="$2" #"${i#*=}"
# Use OAI_USRP as the key work USRP is used inside UHD driver
[ "$HW" == "USRP" ] && HW=OAI_USRP
echo_info "setting hardware to: $HW" echo_info "setting hardware to: $HW"
shift 2;; shift 2;;
--oaisim) --oaisim)
...@@ -126,43 +184,60 @@ do ...@@ -126,43 +184,60 @@ do
echo_fatal "Unknown option $1" echo_fatal "Unknown option $1"
break;; break;;
esac esac
done done
############################################
# setting and printing OAI envs, we should check here
############################################
echo_info "2. Setting the OAI PATHS ..."
############################################ set_openair_env
# setting and printing OAI envs, we should check here cecho "OPENAIR_DIR = $OPENAIR_DIR" $green
############################################
# for conf files copy in this bash script
if [ -d /usr/lib/freeDiameter ]; then
export FREEDIAMETER_PREFIX=/usr
else
if [ -d /usr/local/lib/freeDiameter ]; then
export FREEDIAMETER_PREFIX=/usr/local
else
echo_warning "FreeDiameter prefix not found, install freeDiameter if EPC, HSS"
fi
fi
echo_info "2. Setting the OAI PATHS ..."
set_openair_env if [ "$CLEAN_ALL" = "1" ] ; then
cecho "OPENAIR_HOME = $OPENAIR_HOME" $green clean_all_files
echo_info "Erased all previously producted files"
fi
dbin=$OPENAIR_HOME/targets/bin dbin=$OPENAIR_DIR/targets/bin
dlog=$OPENAIR_HOME/cmake_targets/log dlog=$OPENAIR_DIR/cmake_targets/log
mkdir -p $dbin $dlog mkdir -p $dbin $dlog
if [ "$INSTALL_EXTERNAL" = "1" ] ; then if [ "$INSTALL_EXTERNAL" = "1" ] ; then
echo_info "Installing packages" echo_info "Installing packages"
check_install_oai_software check_install_oai_software
echo_info "Making X.509 certificates" echo_info "Making X.509 certificates"
make_certs eur make_certs eur
if [ "$HW" == "USRP" ] ; then if [ "$HW" == "OAI_USRP" ] ; then
echo_info "installing packages for USRP support" echo_info "installing packages for USRP support"
check_install_usrp_uhd_driver check_install_usrp_uhd_driver
fi fi
fi fi
if [ "$INSTALL_OPTIONAL" = "1" ] ; then if [ "$INSTALL_OPTIONAL" = "1" ] ; then
echo_info "Installing optional packages" echo_info "Installing optional packages"
check_install_additional_tools check_install_additional_tools
fi fi
echo_info "3. building the compilation directives ..." echo_info "3. building the compilation directives ..."
DIR=$OPENAIR_HOME/cmake_targets DIR=$OPENAIR_DIR/cmake_targets
if [ "$eNB" = "1" -o "UE" = "1" ] ; then if [ "$eNB" = "1" -o "UE" = "1" ] ; then
# LTE softmodem compilation # LTE softmodem compilation
mkdir -p $DIR/lte_build_oai/build mkdir -p $DIR/lte_build_oai/build
cmake_file=$DIR/lte_build_oai/CMakeLists.txt cmake_file=$DIR/lte_build_oai/CMakeLists.txt
...@@ -180,9 +255,9 @@ if [ "$eNB" = "1" -o "UE" = "1" ] ; then ...@@ -180,9 +255,9 @@ if [ "$eNB" = "1" -o "UE" = "1" ] ; then
lte_build_oai lte-softmodem \ lte_build_oai lte-softmodem \
lte-softmodem lte-softmodem.$REL lte-softmodem lte-softmodem.$REL
fi fi
if [ "$UE" = 1 ] ; then if [ "$UE" = 1 ] ; then
# ue_ip driver compilation # ue_ip driver compilation
echo_info "Compiling UE specific part" echo_info "Compiling UE specific part"
compilations \ compilations \
...@@ -194,18 +269,18 @@ if [ "$UE" = 1 ] ; then ...@@ -194,18 +269,18 @@ if [ "$UE" = 1 ] ; then
compilations \ compilations \
lte_build_oai nvram \ lte_build_oai nvram \
nvram $dbin/nvram nvram $dbin/nvram
fi fi
if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
cd $OPENAIR_DIR/cmake_targets/lte-simulators cd $OPENAIR_DIR/cmake_targets/lte-simulators
[ "$CLEAN" = "1" ] && rm -rf build [ "$CLEAN" = "1" ] && rm -rf build
mkdir -p build mkdir -p build
cd build cd build
rm -f *sim rm -f *sim
cmake .. cmake ..
fi fi
if [ "$SIMUS_PHY" = "1" ] ; then if [ "$SIMUS_PHY" = "1" ] ; then
# lte unitary simulators compilation # lte unitary simulators compilation
echo_info "Compiling unitary tests simulators" echo_info "Compiling unitary tests simulators"
simlist="dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim" simlist="dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
...@@ -214,11 +289,11 @@ if [ "$SIMUS_PHY" = "1" ] ; then ...@@ -214,11 +289,11 @@ if [ "$SIMUS_PHY" = "1" ] ; then
lte-simulators $f \ lte-simulators $f \
$f $dbin/$f.$REL $f $dbin/$f.$REL
done done
fi fi
# Core simulators # Core simulators
############# #############
if [ "$SIMUS_CORE" = "1" ] ; then if [ "$SIMUS_CORE" = "1" ] ; then
# lte unitary simulators compilation # lte unitary simulators compilation
echo_info "Compiling unitary tests simulators" echo_info "Compiling unitary tests simulators"
simlist="secu_knas_encrypt_eia1 secu_kenb aes128_ctr_encrypt aes128_ctr_decrypt secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2" simlist="secu_knas_encrypt_eia1 secu_kenb aes128_ctr_encrypt aes128_ctr_decrypt secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2"
...@@ -227,11 +302,11 @@ if [ "$SIMUS_CORE" = "1" ] ; then ...@@ -227,11 +302,11 @@ if [ "$SIMUS_CORE" = "1" ] ; then
lte-simulators test_$f \ lte-simulators test_$f \
test_$f $dbin/test_$f.$REL test_$f $dbin/test_$f.$REL
done done
fi fi
# EXMIMO drivers & firmware loader # EXMIMO drivers & firmware loader
############### ###############
if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then
echo_info "Compiling Express MIMO 2 board drivers" echo_info "Compiling Express MIMO 2 board drivers"
compilations \ compilations \
lte_build_oai openair_rf \ lte_build_oai openair_rf \
...@@ -239,9 +314,9 @@ if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then ...@@ -239,9 +314,9 @@ if [ "$HW" = "EXMIMO" -a "$UE$eNB" != "" ] ; then
compilations \ compilations \
lte_build_oai updatefw \ lte_build_oai updatefw \
updatefw $dbin/updatefw updatefw $dbin/updatefw
fi fi
if [ "$oaisim" = "1" ] ; then if [ "$oaisim" = "1" ] ; then
echo_info "Compiling oaisim" echo_info "Compiling oaisim"
cmake_file=$DIR/oaisim_build_oai/CMakeLists.txt cmake_file=$DIR/oaisim_build_oai/CMakeLists.txt
cp $DIR/oaisim_build_oai/CMakeLists.template $cmake_file cp $DIR/oaisim_build_oai/CMakeLists.template $cmake_file
...@@ -276,26 +351,28 @@ if [ "$oaisim" = "1" ] ; then ...@@ -276,26 +351,28 @@ if [ "$oaisim" = "1" ] ; then
compilations \ compilations \
oaisim_mme_build_oai oaisim_mme \ oaisim_mme_build_oai oaisim_mme \
oaisim_mme $dbin/oaisim_mme.$REL oaisim_mme $dbin/oaisim_mme.$REL
fi fi
# EPC compilation # EPC compilation
################## ##################
if [ "$EPC" = "1" ] ; then if [ "$EPC" = "1" ] ; then
echo_info "Compiling EPC" echo_info "Compiling EPC"
cmake_file=$DIR/epc_build_oai/CMakeLists.txt cmake_file=$DIR/epc_build_oai/CMakeLists.txt
cp $DIR/epc_build_oai/CMakeLists.template $cmake_file cp $DIR/epc_build_oai/CMakeLists.template $cmake_file
echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file
echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
[ "$CLEAN" = "1" ] && rm -rf $DIR/epc_build_oai/build
mkdir -p $DIR/epc_build_oai/build mkdir -p $DIR/epc_build_oai/build
cd $DIR/epc_build_oai/build cd $DIR/epc_build_oai/build
cmake .. cmake ..
compilations \ compilations \
epc_build_oai mme_gw \ epc_build_oai mme_gw \
mme_gw $dbin/mme_gw.$REL mme_gw $dbin/mme_gw.$REL
# Only integrated mme+sgw+pgw is operational today # Only integrated mme+sgw+pgw is operational today
# compilations \ # compilations \
# epc_build_oai oai_sgw \ # epc_build_oai oai_sgw \
# oai_sgw $dbin/oai_sgw.$REL # oai_sgw $dbin/oai_sgw.$REL
compilations \ compilations \
epc_build_oai xt_GTPUAH_lib \ epc_build_oai xt_GTPUAH_lib \
libxt_GTPUAH_lib.so $dbin libxt_GTPUAH_lib.so $dbin
...@@ -309,24 +386,19 @@ if [ "$EPC" = "1" ] ; then ...@@ -309,24 +386,19 @@ if [ "$EPC" = "1" ] ; then
epc_build_oai xt_GTPUAH \ epc_build_oai xt_GTPUAH \
CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin
if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
# Example HSS and EPC run on the same host # Example HSS and EPC run on the same host
$OPENAIR_HOME/cmake_targets/tools/build_hss --clean --debug --install-hss-files --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn` if [ "$CLEAN" = "1" ]; then
# example HHS and EPC run on separate hosts (can use SCTP) $OPENAIR_DIR/cmake_targets/tools/build_hss --clean --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
# $OPENAIR_HOME/cmake_targets/tools/build_hss --clean --debug --install-hss-files
else else
# Example HSS and EPC run on the same host $OPENAIR_DIR/cmake_targets/tools/build_hss --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
$OPENAIR_HOME/cmake_targets/tools/build_hss --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
# example HHS and EPC run on separate hosts (can use SCTP)
# $OPENAIR_HOME/cmake_targets/tools/build_hss --debug
fi fi
fi # example HHS and EPC run on separate hosts (can use SCTP)
# $OPENAIR_DIR/cmake_targets/tools/build_hss --debug
if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
echo_info "Copying iptables libraries into system directory: /lib/xtables" echo_info "Copying iptables libraries into system directory: /lib/xtables"
if [ -f $dbin/libxt_GTPURH_lib.so ] ; then if [ -f $dbin/libxt_GTPURH_lib.so ] ; then
$SUDO rm -f /lib/xtables/libxt_GTPURH.so /lib/xtables/libxt_GTPUAH.s $SUDO rm -f /lib/xtables/libxt_GTPURH.so /lib/xtables/libxt_GTPUAH.so
$SUDO ln -s $dbin/libxt_GTPURH_lib.so /lib/xtables/libxt_GTPURH.so $SUDO ln -s $dbin/libxt_GTPURH_lib.so /lib/xtables/libxt_GTPURH.so
$SUDO ln -s $dbin/libxt_GTPUAH_lib.so /lib/xtables/libxt_GTPUAH.so $SUDO ln -s $dbin/libxt_GTPUAH_lib.so /lib/xtables/libxt_GTPUAH.so
else else
...@@ -335,7 +407,7 @@ if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then ...@@ -335,7 +407,7 @@ if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
dconf=$OPENAIR_TARGETS/bin dconf=$OPENAIR_TARGETS/bin
mkdir -p $dconf mkdir -p $dconf
#LG??? cp $ORIGIN_PATH/$CONFIG_FILE $dconf || echo_fatal "config file $ORIGIN_PATH/$CONFIG_FILE not found" #cp $ORIGIN_PATH/$CONFIG_FILE $dconf || echo_error "config file $ORIGIN_PATH/$CONFIG_FILE not found"
# generate USIM data # generate USIM data
if [ -f $dbin/nvram ]; then if [ -f $dbin/nvram ]; then
...@@ -344,27 +416,30 @@ if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then ...@@ -344,27 +416,30 @@ if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
echo_warning "not generated UE NAS files: binaries not found" echo_warning "not generated UE NAS files: binaries not found"
fi fi
# Do EPC # Do EPC
if [ -f $DIR/epc_build_oai/build/epc_s6a.conf ] ; then if [ -f $DIR/epc_build_oai/build/mme_fd.conf ] ; then
cp $DIR/epc_build_oai/build/epc.*.conf $dconf cp $DIR/epc_build_oai/build/epc.*.conf $dconf
$SUDO cp $DIR/epc_build_oai/build/epc_s6a.conf /usr/local/etc/freeDiameter $SUDO cp -uv $DIR/epc_build_oai/build/mme_fd.conf $FREEDIAMETER_PREFIX/etc/freeDiameter
else else
echo_warning "not installed EPC config files: not found" echo_warning "not installed EPC config files: not found"
fi fi
# Do HSS # Do HSS
# bash doesn't like space char around = char # bash doesn't like space char around = char
#cp $DIR/hss_build/hss.conf $dbin cp -uv $DIR/hss_build/build/hss.conf $dbin
#$SUDO cp $DIR/hss_build/build/hss_fd.conf $DIR/hss_build/acl.conf /usr/local/etc/freeDiameter $SUDO cp -uv $DIR/hss_build/build/hss_fd.conf $DIR/hss_build/build/acl.conf $FREEDIAMETER_PREFIX/etc/freeDiameter
if [ -f $dbin/hss.conf ] ; then # if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
sed -e 's/ *= */=/' $dbin/hss.conf > $dconf/hss.conf.nospace # if [ -f $dbin/hss.conf ] ; then
source $dconf/hss.conf.nospace # sed -e 's/ *= */=/' $dbin/hss.conf > $dconf/hss.conf.nospace
rm -f $dconf/hss.conf.nospace # source $dconf/hss.conf.nospace
create_hss_database root linux "$MYSQL_user" "$MYSQL_pass" "$MYSQL_db" # rm -f $dconf/hss.conf.nospace
else # create_hss_database root linux "$MYSQL_user" "$MYSQL_pass" "$MYSQL_db"
echo_warning "not created HSS database: config not found" # else
fi # echo_warning "not created HSS database: config not found"
# fi
# fi
fi fi
# Auto-tests # Auto-tests
...@@ -376,3 +451,6 @@ if [ "$OAI_TEST" = "1" ]; then ...@@ -376,3 +451,6 @@ if [ "$OAI_TEST" = "1" ]; then
else else
echo_info "10. Bypassing the Tests ..." echo_info "10. Bypassing the Tests ..."
fi fi
}
main "$@"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment