3 # Copyright (c) 2016 Open Platform for NFV Project, Inc. and its contributors
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
18 echo "==============================="
19 echo "executing $0 $@"
20 echo "executing on machine `uname -a`"
23 echo "run BuildAndTestOVS -h for help"
26 while getopts "cdg:hkp:u:v" opt; do
29 setnocheck="--without check"
48 OVS_REPO_URL=${OPTARG}
58 TEMPDIR=$TOPDIR/ovsrpm
63 source $BUILDDIR/functions.sh
65 echo "---------------------------------------"
66 echo "Clean out old working dir."
73 function install_pre_reqs() {
74 echo "----------------------------------------"
75 echo "Install pre-reqs."
77 sudo yum -y install gcc make python-devel openssl-devel kernel-devel graphviz \
78 kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
79 libtool python-twisted-core desktop-file-utils groff PyQt4 \
80 selinux-policy-devel libpcap libpcap-devel libcap-ng-devel
82 function apply_nsh_patches() {
83 echo "-------------------------------------------"
84 echo "Clone NSH patch and copy patch files."
87 if [ -e ovs_nsh_patches ]; then
88 rm -rf ovs_nsh_patches
90 git clone https://github.com/yyang13/ovs_nsh_patches.git
91 cp $TEMPDIR/ovs_nsh_patches/*.patch $RPMDIR/SOURCES
93 if [ -e buildovsnsh ]; then
96 git clone https://github.com/tfherbert/buildovsnsh.git
97 cp buildovsnsh/*.spec $BUILDDIR
102 kernel_version=$(uname -a | awk '{print $3}')
104 RPMDIR=$HOME/rpmbuild
106 echo "---------------------------------------"
107 echo "Clean out old reminents of old rpms and rpm _topdir."
110 rm openvswitch*.rpm || true
111 if [ -d $RPMDIR ]; then
115 echo "---------------------------------------"
116 echo "Create new rpm _topdir."
118 mkdir -p $HOME/rpmbuild/RPMS
119 mkdir -p $HOME/rpmbuild/SOURCES
120 mkdir -p $HOME/rpmbuild/SPECS
121 mkdir -p $HOME/rpmbuild/SRPMS
130 if [ ! -z $DPDK ]; then
133 if [ -z $DPDK_VERSION ]; then
136 echo "-------------------------------------------"
137 echo "Install dpdk and dpdk development rpms for version $DPDK_VERSION"
139 sudo rpm -ivh $HOME/dpdk-${DPDK_VERSION}*.rpm
140 sudo rpm -ivh $HOME/dpdk-devel*.rpm
141 echo "----------------------------------------"
142 echo "Copy DPDK RPM to SOURCES"
144 cp $HOME/*.rpm $RPMDIR/SOURCES
146 git clone $OVS_REPO_URL
148 git checkout v$OVSTAG
149 echo "----------------------------------------------------"
150 echo "Build openvswitch RPM for version $OVSTAG"
152 echo "--------------------------------------------"
155 make rpm-fedora RPMBUILD_OPT="--with dpdk --without check"
157 echo "-------------------------------------------------"
158 echo "Build OVS without DPDK:"
159 echo "Use spec files for $os_type in OVS distribution."
161 echo "-------------------------------------------"
162 echo "Remove old rpms."
166 git clone $OVS_REPO_URL
168 git checkout $OVS_FORK_COMMIT_FOR_NSH
169 echo "--------------------------------------------"
170 echo "Get commit from $snapgit User Space OVS version $TAG"
172 snapgit=`git log --pretty=oneline -n1|cut -c1-8`
173 snapser=`git log --pretty=oneline | wc -l`
174 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
175 prefix=openvswitch-${basever}
176 snapver=${snapser}.NSH${snapgit}
177 archive=${prefix}-${snapser}.NSH${snapgit}.tar.gz
179 if [ ! -z $OVS_PATCH ]; then
180 echo "-------------------------------------------"
181 echo "Apply OVS patches."
186 echo "----------------------------------"
187 echo "Create dist name and rpm name. Put $snapver into spec file"
190 sed -i "s/%define snapver.*/%define snapver ${snapver}/" openvswitch.spec
191 echo "----------------------------------"
192 echo "Copy spec file."
194 cp $BUILD_BASE/openvswitch.spec $RPMDIR/SPECS
195 cp $BUILD_BASE/openvswitch.spec $RPMDIR/SOURCES
196 echo "--------------------------------------------"
197 echo "Creating snapshot, $archive with name same as in spec file."
200 git archive --prefix=${prefix}-${snapser}.NSH${snapgit}/ HEAD | gzip -9 > $RPMDIR/SOURCES/${archive}
201 echo "--------------------------------------------"
202 echo "Build openvswitch RPM"
205 rpmbuild -bb -vv --without dpdk --define "_topdir `echo $RPMDIR`" $setnocheck openvswitch.spec
208 # This section is for building OVS kernel module.
210 if [ ! -z $kmod ]; then
211 echo "--------------------------------------------"
212 echo Build Open vswitch kernel module
218 git clone $OVS_REPO_URL
220 git checkout $OVS_FORK_COMMIT_FOR_NSH
221 echo "--------------------------------------------"
222 echo "Get commit from $snapgit User Space OVS version $TAG"
224 snapgit=`git log --pretty=oneline -n1|cut -c1-8`
225 snapser=`git log --pretty=oneline | wc -l`
226 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
227 prefix=openvswitch-kmod-${basever}
228 snapver=${snapser}.NSH${snapgit}
229 archive=${prefix}-${snapser}.NSH${snapgit}.tar.gz
231 if [ ! -z $OVS_PATCH ]; then
232 echo "-------------------------------------------"
233 echo "Apply OVS patches."
237 echo "----------------------------------"
238 echo "Create dist name and rpm name. Put $snapver into spec file"
241 sed -i "s/%define snapver.*/%define snapver ${snapver}/" openvswitch-kmod.spec
242 echo "----------------------------------"
243 echo "Copy spec file."
245 cp $BUILD_BASE/openvswitch-kmod.spec $RPMDIR/SPECS
246 cp $BUILD_BASE/openvswitch-kmod.spec $RPMDIR/SOURCES
247 echo "-------------------------------------------"
248 echo "Apply nsh patches."
251 echo "--------------------------------------------"
252 echo "Creating snapshot, $archive with name same as in spec file."
255 git archive --prefix=${prefix}-${snapser}.NSH${snapgit}/ HEAD | gzip -9 > $RPMDIR/SOURCES/${archive}
256 echo "--------------------------------------------"
257 echo "Building openvswitch kernel module RPM"
260 rpmbuild -bb -vv -D "kversion $kernel_version" -D "kflavors default" --define "_topdir `echo $RPMDIR`" $setnocheck openvswitch-kmod.spec
263 cp $RPMDIR/RPMS/x86_64/*.rpm $HOME || true
264 cp $TEMPDIR/ovs/rpm/rpmbuild/RPMS/x86_64/*.rpm $HOME || true