summaryrefslogtreecommitdiffstats
path: root/build/BuildAndTestOVS.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build/BuildAndTestOVS.sh')
-rwxr-xr-xbuild/BuildAndTestOVS.sh150
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