Add support for openSUSE Leap 42.2
[vswitchperf.git] / systems / build_base_machine.sh
index 82cf476..59712b9 100755 (executable)
@@ -3,7 +3,7 @@
 # Top level scripts to build basic setup for the host
 #
 
-# Copyright 2015 OPNFV
+# Copyright 2015 OPNFV, Intel Corporation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 #
 # Contributors:
 #   Aihua Li, Huawei Technologies.
+#   Abdul Halim, Intel Corporation.
+#   Martin Klozik, Intel Corporation.
+
+ROOT_UID=0
+SUDO=""
+
+export VSPERFENV_DIR="$HOME/vsperfenv"
 
 # function to emit error message before quitting
 function die() {
@@ -27,13 +34,49 @@ function die() {
     exit 1
 }
 
-# determine this machine's distro-version
+# Detect OS name and version from systemd based os-release file
+. /etc/os-release
+
+# Get OS name (the First word from $NAME in /etc/os-release)
+OS_NAME="$ID"
+
+# check if root
+if [ "$UID" -ne "$ROOT_UID" ]
+then
+    # installation must be run via sudo
+    SUDO="sudo -E"
+fi
+
+# If there is version specific dir available then set distro_dir to that
+if [ -d "$OS_NAME/$VERSION_ID" ]; then
+    distro_dir="$OS_NAME/$VERSION_ID"
+else
+    # Fallback - Default distro_dir = OS name
+    distro_dir="$OS_NAME"
+fi
 
-distro=`lsb_release -i  | cut -f 2`
-distro_dir=$distro
+# build base system using OS specific scripts
+if [ -d "$distro_dir" ] && [ -e "$distro_dir/build_base_machine.sh" ]; then
+    $SUDO $distro_dir/build_base_machine.sh || die "$distro_dir/build_base_machine.sh failed"
+else
+    die "$distro_dir is not yet supported"
+fi
+
+if [ -d "$distro_dir" ] && [ -e "$distro_dir/prepare_python_env.sh" ] ; then
+    $distro_dir/prepare_python_env.sh || die "prepare_python_env.sh failed"
+else
+    die "$distro_dir is not yet supported"
+fi
+
+if [ ! -d /lib/modules/`uname -r`/build ] ; then
+    die "Kernel devel is not available for active kernel. It can be caused by recent kernel update. Please reboot and run $0 again."
+fi
 
-if [ -d "$distro_dir" ] && [ -e $distro_dir/build_base_machine.sh ]; then
-   $distro_dir/build_base_machine.sh
+# download and compile DPDK, OVS and QEMU
+if [ -f ../src/Makefile ] ; then
+    cd ../src
+    make || die "Make failed"
+    cd -
 else
-   die "$distro_dir is not yet supported"
+    die "Make failed; No Makefile"
 fi