diff options
Diffstat (limited to 'build/BuildAndTestOVS.sh')
-rwxr-xr-x | build/BuildAndTestOVS.sh | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/build/BuildAndTestOVS.sh b/build/BuildAndTestOVS.sh new file mode 100755 index 0000000..10a2f05 --- /dev/null +++ b/build/BuildAndTestOVS.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +# Copyright (c) 2016 Open Platform for NFV Project, Inc. and its contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e + +echo "===============================" +echo executing $0 $@ +echo + +usage() { + echo "$0 -a <kernel major> -d -g <OVS TAG> -h\ + -i <kernel minor> -p <patch url> -t -u <OVS URL> -v <verbose\ + -a <kernel major> -- Specify major release if special kernel is required\ + The default kernel is Centos 7.2 kernel after upgrade.\ + -d <dpdk> -- Specify dpdk build.\ + The default is to build ovs for linux kernel data path.\ + -g <OVS TAG> -- OVS release tag or branch to build such as 2.4.\ + The default is master.\ + -h print this message\ + -i <kernel minor> -- Specify minor release if special kernel is required.\ + The default kernel is Centos 7.2 kernel after upgrade.\ + -p <patch url> -- Specify url to patches if required for ovs rpm.\ + -t -- Test rpm.\ + -u <OVS URL> -- path to OVS repo if using fork for patch.\ + The default is https://github.com/openvswitch/ovs.git\ + -v -- Set verbose mode." +} + +while getopts "a:dg:hi:p:tu:v" opt; do + case "$opt" in + a) + kernel_major=${OPTARG} + ;; + d) + DPDK="yes" + ;; + g) + TAG=${OPTARG} + ;; + h) + usage + exit 1 + ;; + i) + kernel_minor=${OPTARG} + ;; + p) + OVS_PATCH=${OPTARG} + ;; + t) + TESTRPM="yes" + ;; + u) + OVS_REPO_URL=${OPTARG} + ;; + v) + verbose="yes" + ;; + esac +done + +if [ -z $TAG ]; then + TAG=master +fi + +if [ -z $OVS_REPO_URL ]; then + OVS_REPO_URL=https://github.com/openvswitch/ovs.git +fi + +if [ ! -z $kernel_major ] && [ ! -z $kernel_minor ]; then + kernel_version=$kernel_major.$kernel_minor + echo =================== + echo Will install kernel version: major is $kernel_major and minor is $kernel_minor + echo =================== +else + echo Will use default kernel in ovs test vm +fi + +if [ ! -z $DPDK ]; then + setbuilddpdk="-d" +fi + +if [ -z ${WORKSPACE+1} ]; then + # We are not being run by Jenkins. + export WORKSPACE=$HOME/opnfv/ovsnfv + mkdir -p opnfv + cd opnfv + git clone https://git.opnfv.org/ovsnfv +fi + +export BUILD_BASE=$WORKSPACE/build + + + +if [ ! -d $BUILD_BASE ] +then + mkdir -p $BUILD_BASE +fi + +if [ ! -f $BUILD_BASE/config ]; then + touch $BUILD_BASE/config +fi + +export PATH=$PATH:$WORKSPACE/ci:$BUILD_BASE +source $BUILD_BASE/config + +cd $BUILD_BASE +export TOPDIR=$BUILD_BASE + +# build variables + +export TMP_RELEASE_DIR=$TOPDIR/release +export CACHE_DIR=$TOPDIR/cache +export TMPDIR=$TOPDIR/scratch +export RPMDIR=$TOPDIR/rpmbuild + + +mkdir -p $RPMDIR/RPMS +mkdir -p $RPMDIR/SOURCES +mkdir -p $RPMDIR/SPECS +mkdir -p $RPMDIR/SRPMS + + +if [ ! -z $TESTRPM ]; then + # Spawn VM to do the testing. + if [ ! -z $kernel_version ]; then + instack_ovs.sh -a $kernel_major -g $TAG -i $kernel_minor -p $OVS_PATCH -t -u $OVS_REPO_URL + else + instack_ovs.sh $setbuilddpdk -g $TAG -p $OVS_PATCH -t -u $OVS_REPO_URL + fi +else + # Run build locally. + build_ovs_rpm.sh $setbuilddpdk -g $TAG -p $OVS_PATCH -u $OVS_REPO_URL + cp $HOME/rpmbuild/RPMS/* $TMP_RELEASE_DIR +fi + +exit 0 |