diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/vnf_build.sh | 71 |
1 files changed, 48 insertions, 23 deletions
diff --git a/tools/vnf_build.sh b/tools/vnf_build.sh index 4f6212ca..53bee284 100755 --- a/tools/vnf_build.sh +++ b/tools/vnf_build.sh @@ -24,8 +24,9 @@ echo "-------------------------------------------------------------------------- HUGEPGSZ=`cat /proc/meminfo | grep Hugepagesize | cut -d : -f 2 | tr -d ' '` MODPROBE="/sbin/modprobe" INSMOD="/sbin/insmod" -DPDK_DOWNLOAD="http://dpdk.org/browse/dpdk/snapshot/dpdk-16.04.zip" +DPDK_DOWNLOAD="Not initialized" DPDK_DIR=$VNF_CORE/dpdk +DPDK_RTE_VER="16.04" # # Sets QUIT variable so script will finish. @@ -68,6 +69,8 @@ step_1() CONFIG_NUM=1 TEXT[1]="Check OS and network connection" FUNC[1]="setup_env" + TEXT[2]="Select DPDK RTE version" + FUNC[2]="select_dpdk_rte_ver" } setup_env() { @@ -94,6 +97,28 @@ setup_env() fi echo "Network connectivity successful." } +select_dpdk_rte_ver() +{ + + TITLE="Select the DPDK RTE version" + CONFIG_NUM=1 + echo "[1] DPDK 16.04" + echo "[2] DPDK 16.11" + echo "[3] DPDK 17.02" + echo "[4] DPDK 17.05" + echo + + while true; do + read -p "Select DPDK version to be used: " yn + case $yn in + [1]* ) DPDK_RTE_VER=16.04 ; return;; + [2]* ) DPDK_RTE_VER=16.11 ; return;; + [3]* ) DPDK_RTE_VER=17.02 ; return;; + [4]* ) DPDK_RTE_VER=17.05 ; return;; + * ) echo " Invalid selection...";; + esac + done +} step_2() { @@ -115,7 +140,7 @@ get_agreement_download() echo echo "List of packages needed for VNFs build and installation:" echo "-------------------------------------------------------" - echo "1. DPDK version 16.04" + echo "1. DPDK version $DPDK_RTE_VER" echo "2. build-essential" echo "3. linux-headers-generic" echo "4. git" @@ -150,7 +175,8 @@ install_libs() fi sudo apt-get update sudo apt-get -y install build-essential linux-headers-$(uname -r) git unzip libpcap0.8-dev gcc \ - make libc6 libc6-dev g++-multilib libzmq3-dev libcurl4-openssl-dev + make libc6 libc6-dev g++-multilib libzmq3-dev libcurl4-openssl-dev net-tools wget gcc unzip \ + libpcap-dev libncurses-dev libedit-dev pciutils liblua5.2-dev libncursesw5-dev touch .download } @@ -162,12 +188,13 @@ download_dpdk_zip() echo "Please choose option '2.Agree to download' first" return fi + DPDK_DOWNLOAD="http://dpdk.org/browse/dpdk/snapshot/dpdk-$DPDK_RTE_VER.zip" rm -rf $DPDK_DIR if [ ! -e ${DPDK_DOWNLOAD##*/} ] ; then wget ${DPDK_DOWNLOAD} fi unzip -o ${DPDK_DOWNLOAD##*/} - mv $VNF_CORE/dpdk-16.04 $VNF_CORE/dpdk + mv $VNF_CORE/dpdk-$DPDK_RTE_VER $VNF_CORE/dpdk } install_dpdk() @@ -182,13 +209,16 @@ install_dpdk() export RTE_TARGET=x86_64-native-linuxapp-gcc pushd $DPDK_DIR - echo "Apply dpdk custom patches..." - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-management.patch - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-Rx-hang-when-disable-LLDP.patch - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-status-change-interrupt.patch - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-VF-bonded-device-link-down.patch - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/disable-acl-debug-logs.patch - patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/set-log-level-to-info.patch + + if [ $DPDK_RTE_VER == "16.04" ] ; then + echo "Apply dpdk custom patches..." + patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-management.patch + patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-Rx-hang-when-disable-LLDP.patch + patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-link-status-change-interrupt.patch + patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/i40e-fix-VF-bonded-device-link-down.patch + patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/disable-acl-debug-logs.patch + patch -p1 < $VNF_CORE/patches/dpdk_custom_patch/set-log-level-to-info.patch + fi make -j install T=$RTE_TARGET if [ $? -ne 0 ] ; then @@ -261,20 +291,15 @@ build_vnfs() #--- Add non intractive option to build vnfs if [[ "$1" = "--silient" ]];then + DPDK_VER=("" "16.04" "16.11" "17.02" "17.05") + member="$2" + for item in "${DPDK_VER[@]}"; do + if [[ "$member" == "$item" ]]; then + DPDK_RTE_VER="$member" + fi + done pushd $VNF_CORE - echo "Setup proxy if needed..." - http_proxy=$2 - https_proxy=$3 - if [[ "$http_proxy" != "" ]]; then - export http_proxy=$http_proxy - export https_proxy=$http_proxy - fi - - if [[ "$https_proxy" != "" ]]; then - export https_proxy=$https_proxy - fi - echo "Install required libraries..." touch .agree install_libs |