From c2e63feb6209ef504753fe2c975cf61b1c31b5cf Mon Sep 17 00:00:00 2001 From: Marco Varlese Date: Fri, 6 Oct 2017 15:07:08 +0200 Subject: [PATCH] Allow use of /etc/os-release file The top-level Makefile in VPP already uses the file /etc/os-release to recognize which OS the build is being performed on. The scripts for vagrant images instead were still using different files for different distros and adding a new distro to be supported causes issues with the extra-logic to deal with it. This patch aligns the vagrant scripts to use the same approach followed by the top-level Makefile and simplifies the steps to identify / update the OS and build / run VPP. Change-Id: I539f4a7c27b3fef70ed1c12b0276049bc47dc289 Signed-off-by: Marco Varlese --- extras/vagrant/Vagrantfile | 3 +++ extras/vagrant/build.sh | 35 +++++++++++------------------------ extras/vagrant/run.sh | 19 +++++++++---------- extras/vagrant/update.sh | 20 +++++++++----------- src/m4/ax_vpp_find_jdk8.m4 | 2 +- 5 files changed, 33 insertions(+), 46 deletions(-) diff --git a/extras/vagrant/Vagrantfile b/extras/vagrant/Vagrantfile index 714ba94c953..badaa979a43 100644 --- a/extras/vagrant/Vagrantfile +++ b/extras/vagrant/Vagrantfile @@ -9,6 +9,9 @@ Vagrant.configure(2) do |config| config.vm.box = "centos/7" config.vm.box_version = "1708.01" config.ssh.insert_key = false + elsif distro == 'opensuse' + config.vm.box = "opensuse/openSUSE-42.3-x86_64" + config.vm.box_version = "1.0.4.20170726" else config.vm.box = "puppetlabs/ubuntu-16.04-64-nocm" end diff --git a/extras/vagrant/build.sh b/extras/vagrant/build.sh index fcfd52aa707..d317c31aca6 100755 --- a/extras/vagrant/build.sh +++ b/extras/vagrant/build.sh @@ -17,22 +17,11 @@ echo 2:$2 echo VPP_DIR: $VPP_DIR echo SUDOCMD: $SUDOCMD -# Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - sudo yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` -elif [ -f /etc/os-release ];then - . /etc/os-release - DISTRIB_ID=$ID - DISTRIB_RELEASE=$VERSION_ID - DISTRIB_CODENAME=$VERSION - DISTRIB_DESCRIPTION=$PRETTY_NAME +if [ "$(uname)" <> "Darwin" ]; then + OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') + OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') fi + KERNEL_OS=`uname -o` KERNEL_MACHINE=`uname -m` KERNEL_RELEASE=`uname -r` @@ -42,10 +31,8 @@ echo KERNEL_OS: $KERNEL_OS echo KERNEL_MACHINE: $KERNEL_MACHINE echo KERNEL_RELEASE: $KERNEL_RELEASE echo KERNEL_VERSION: $KERNEL_VERSION -echo DISTRIB_ID: $DISTRIB_ID -echo DISTRIB_RELEASE: $DISTRIB_RELEASE -echo DISTRIB_CODENAME: $DISTRIB_CODENAME -echo DISTRIB_DESCRIPTION: $DISTRIB_DESCRIPTION +echo OS_ID: $OS_ID +echo OS_VERSION_ID: $OS_ID # Install dependencies cd $VPP_DIR @@ -57,7 +44,7 @@ $SUDOCMD make wipe (cd build-root/;$SUDOCMD make distclean) rm -f build-root/.bootstrap.ok -if [ $DISTRIB_ID == "CentOS" ]; then +if [ $OS_ID == "centos" ]; then echo rpm -V apr-devel rpm -V apr-devel if [ $? != 0 ]; then sudo yum reinstall -y apr-devel;fi @@ -72,14 +59,14 @@ fi # Build and install packaging $SUDOCMD make bootstrap -if [ "$DISTRIB_ID" == "Ubuntu" ]; then +if [ "$OS_ID" == "ubuntu" ]; then $SUDOCMD make pkg-deb -elif [ "$DISTRIB_ID" == "debian" ]; then +elif [ "$OS_ID" == "debian" ]; then $SUDOCMD make pkg-deb -elif [ "$DISTRIB_ID" == "CentOS" ]; then +elif [ "$OS_ID" == "centos" ]; then (cd $VPP_DIR/vnet ;$SUDOCMD aclocal;$SUDOCMD automake -a) $SUDOCMD make pkg-rpm -elif [ "$DISTRIB_ID" == "opensuse" ]; then +elif [ "$OS_ID" == "opensuse" ]; then $SUDOCMD make build-release fi diff --git a/extras/vagrant/run.sh b/extras/vagrant/run.sh index 1cd3382640a..3c779fa23f6 100755 --- a/extras/vagrant/run.sh +++ b/extras/vagrant/run.sh @@ -1,22 +1,21 @@ #!/bin/bash # Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` +if [ "$(uname)" <> "Darwin" ]; then + OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') + OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') fi -if [ $DISTRIB_ID == "CentOS" ]; then +if [ "$OS_ID" == "ubuntu" ]; then + $OS_CODENAME=$UBUNTU_CODENAME +fi + +if [ "$OS_ID" == "centos" ] || [ "$OS_ID" == "opensuse" ]; then # Install uio-pci-generic modprobe uio_pci_generic fi echo "Starting VPP..." -if [ $DISTRIB_ID == "Ubuntu" ] && [ $DISTRIB_CODENAME = "trusty" ] ; then +if [ "$OS_ID" == "ubuntu" ] && [ $OS_CODENAME = "trusty" ] ; then start vpp else service vpp start diff --git a/extras/vagrant/update.sh b/extras/vagrant/update.sh index b4962bfc313..18bc25736a1 100755 --- a/extras/vagrant/update.sh +++ b/extras/vagrant/update.sh @@ -12,19 +12,13 @@ if [ $HUGEPAGES != 1024 ]; then exit fi -# Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` +if [ "$(uname)" <> "Darwin" ]; then + OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') + OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') fi # Do initial setup for the system -if [ $DISTRIB_ID == "Ubuntu" ]; then +if [ "$OS_ID" == "ubuntu" ]; then export DEBIAN_PRIORITY=critical export DEBIAN_FRONTEND=noninteractive @@ -41,7 +35,7 @@ if [ $DISTRIB_ID == "Ubuntu" ]; then # Install useful but non-mandatory tools apt-get install -y emacs x11-utils git-review gdb gdbserver xfce4-terminal iperf3 -elif [ $DISTRIB_ID == "CentOS" ]; then +elif [ "$OS_ID" == "centos" ]; then if [ "$(echo $DISTRIB_RELEASE | cut -d'.' -f1)" == "7" ]; then rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum groupinstall "X Window system" -y @@ -50,4 +44,8 @@ elif [ $DISTRIB_ID == "CentOS" ]; then # Standard update + upgrade dance yum check-update yum update -y +elif [ "$OS_ID" == "opensuse" ]; then + zypper update -y + # NASM >= 2.12 is not available in previous openSUSE release; need to install it from TW + zypper install -y https://download.opensuse.org/tumbleweed/repo/oss/suse/x86_64/nasm-2.13.01-2.1.x86_64.rpm fi diff --git a/src/m4/ax_vpp_find_jdk8.m4 b/src/m4/ax_vpp_find_jdk8.m4 index 382a6c80e8f..94b785038f7 100644 --- a/src/m4/ax_vpp_find_jdk8.m4 +++ b/src/m4/ax_vpp_find_jdk8.m4 @@ -20,7 +20,7 @@ do break fi - for dir in $(find /usr/lib/jvm/* -maxdepth 0 -type d); do + for dir in $(find /usr/lib*/jvm/* -maxdepth 0 -type d); do AC_MSG_CHECKING([${dir} for Java 8 compiler]) JAVA_VERSION=$(${dir}/bin/javac -source 8 -version 2>&1) if test 0 -eq "$?"; then -- 2.16.6