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}
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
81 function apply_nsh_patches() {
82 echo "-------------------------------------------"
83 echo "Clone NSH patch and copy patch files."
86 if [ -e ovs_nsh_patches ]; then
87 rm -rf ovs_nsh_patches
89 git clone https://github.com/yyang13/ovs_nsh_patches.git
90 cp $TMPDIR/ovs_nsh_patches/*.patch $RPMDIR/SOURCES
91 cp $BUILDDIR/patches/ovs_nsh_patches/*.spec $BUILDDIR
96 kernel_version=$(uname -a | awk '{print $3}')
100 echo "---------------------------------------"
101 echo "Clean out old reminents of old rpms and rpm _topdir."
104 rm openvswitch*.rpm || true
105 if [ -d $RPMDIR ]; then
109 echo "---------------------------------------"
110 echo "Create new rpm _topdir."
112 mkdir -p $HOME/rpmbuild/RPMS
113 mkdir -p $HOME/rpmbuild/SOURCES
114 mkdir -p $HOME/rpmbuild/SPECS
115 mkdir -p $HOME/rpmbuild/SRPMS
124 if [ ! -z $DPDK ]; then
125 echo "----------------------------------"
126 echo "Build OVS for dpdk. Use Fedora copr repo"
128 echo "----------------------------------"
129 echo "Clone Fedora copr repo and copy files."
131 git clone https://github.com/tfherbert/ovs-snap.git
133 git checkout $COPR_OVS_VERSION
134 echo "-----------------------------------"
135 cp $TMPDIR/ovs-snap/openvswitch.spec $RPMDIR/SPECS
136 cp $TMPDIR/ovs-snap/* $RPMDIR/SOURCES
137 snapgit=`grep "define snapver" $TMPDIR/ovs-snap/openvswitch.spec | cut -c26-33`
138 echo "-----------------------------------------------"
139 echo "Remove any old installed ovs and dpdk rpms."
143 if [ -z $DPDK_VERSION ]; then
146 echo "-------------------------------------------"
147 echo "Install dpdk and dpdk development rpms for version $DPDK_VERSION"
149 sudo rpm -ivh $HOME/dpdk-${DPDK_VERSION:0:1}*.rpm
150 sudo rpm -ivh $HOME/dpdk-devel*.rpm
151 echo "----------------------------------------"
152 echo "Copy DPDK RPM to SOURCES"
154 cp $HOME/*.rpm $RPMDIR/SOURCES
155 echo "--------------------------------------------"
156 echo "Get commit from $snapgit User Space OVS version $TAG"
159 git clone $OVS_REPO_URL
161 git checkout $snapgit
162 echo "--------------------------------------------"
163 echo "Creating snapshot, $archive with name same as in spec file."
165 snapser=`git log --pretty=oneline | wc -l`
166 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
167 prefix=openvswitch-${basever}
168 archive=${prefix}-${snapser}.git${snapgit}.tar.gz
169 git archive --prefix=${prefix}-${snapser}.git${snapgit}/ HEAD | gzip -9 > $RPMDIR/SOURCES/${archive}
171 echo "--------------------------------------------"
172 echo "Build openvswitch RPM"
174 rpmbuild -bb -vv --define "_topdir `echo $RPMDIR`" $setnocheck openvswitch.spec
176 echo "-------------------------------------------------"
177 echo "Build OVS without DPDK:"
178 echo "Use spec files for $os_type in OVS distribution."
180 echo "-------------------------------------------"
181 echo "Remove old rpms."
185 git clone $OVS_REPO_URL
187 git checkout $OVS_VERSION
188 echo "--------------------------------------------"
189 echo "Get commit from $snapgit User Space OVS version $TAG"
191 snapgit=`git log --pretty=oneline -n1|cut -c1-8`
192 snapser=`git log --pretty=oneline | wc -l`
193 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
194 prefix=openvswitch-${basever}
195 snapver=${snapser}.NSH${snapgit}
196 archive=${prefix}-${snapser}.NSH${snapgit}.tar.gz
198 if [ ! -z $OVS_PATCH ]; then
199 echo "-------------------------------------------"
200 echo "Apply OVS patches."
205 echo "----------------------------------"
206 echo "Create dist name and rpm name. Put $snapver into spec file"
209 sed -i "s/%define snapver.*/%define snapver ${snapver}/" openvswitch.spec
210 echo "----------------------------------"
211 echo "Copy spec file."
213 cp $BUILD_BASE/openvswitch.spec $RPMDIR/SPECS
214 cp $BUILD_BASE/openvswitch.spec $RPMDIR/SOURCES
215 echo "--------------------------------------------"
216 echo "Creating snapshot, $archive with name same as in spec file."
219 git archive --prefix=${prefix}-${snapser}.NSH${snapgit}/ HEAD | gzip -9 > $RPMDIR/SOURCES/${archive}
220 echo "--------------------------------------------"
221 echo "Build openvswitch RPM"
224 rpmbuild -bb -vv --without dpdk --define "_topdir `echo $RPMDIR`" $setnocheck openvswitch.spec
227 # This section is for building OVS kernel module.
229 if [ ! -z $kmod ]; then
230 echo "--------------------------------------------"
231 echo Build Open vswitch kernel module
237 git clone $OVS_REPO_URL
239 git checkout $OVS_VERSION
240 echo "--------------------------------------------"
241 echo "Get commit from $snapgit User Space OVS version $TAG"
243 snapgit=`git log --pretty=oneline -n1|cut -c1-8`
244 snapser=`git log --pretty=oneline | wc -l`
245 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
246 prefix=openvswitch-kmod-${basever}
247 snapver=${snapser}.NSH${snapgit}
248 archive=${prefix}-${snapser}.NSH${snapgit}.tar.gz
250 if [ ! -z $OVS_PATCH ]; then
251 echo "-------------------------------------------"
252 echo "Apply OVS patches."
256 echo "----------------------------------"
257 echo "Create dist name and rpm name. Put $snapver into spec file"
260 sed -i "s/%define snapver.*/%define snapver ${snapver}/" openvswitch-kmod.spec
261 echo "----------------------------------"
262 echo "Copy spec file."
264 cp $BUILD_BASE/openvswitch-kmod.spec $RPMDIR/SPECS
265 cp $BUILD_BASE/openvswitch-kmod.spec $RPMDIR/SOURCES
266 echo "-------------------------------------------"
267 echo "Apply nsh patches."
270 echo "--------------------------------------------"
271 echo "Creating snapshot, $archive with name same as in spec file."
274 git archive --prefix=${prefix}-${snapser}.NSH${snapgit}/ HEAD | gzip -9 > $RPMDIR/SOURCES/${archive}
275 echo "--------------------------------------------"
276 echo "Building openvswitch kernel module RPM"
279 rpmbuild -bb -vv -D "kversion $kernel_version" -D "kflavors default" --define "_topdir `echo $RPMDIR`" $setnocheck openvswitch-kmod.spec
282 cp $RPMDIR/RPMS/x86_64/*.rpm $HOME