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 "==============================="
20 echo executing on machine `uname -a`
23 echo run BuildAndTestOVS -h for help
30 sudo rpm -e --allmatches $1
34 function cleanrpms() {
42 while getopts "cdg:hkp:u:v" opt; do
45 setnocheck="--without check"
64 OVS_REPO_URL=${OPTARG}
76 echo "---------------------------------------"
77 echo Clean out old working dir
84 echo "----------------------------------------"
85 echo Install pre-reqs.
87 sudo yum -y install gcc make python-devel openssl-devel kernel-devel graphviz \
88 kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
89 libtool python-twisted-core desktop-file-utils groff PyQt4
93 kernel_version=$(uname -a | awk '{print $3}')
97 echo "---------------------------------------"
98 echo Clean out old reminents of old rpms and rpm _topdir.
101 rm openvswitch*.rpm || true
102 if [ -d $RPMDIR ]; then
106 echo "---------------------------------------"
107 echo Create new rpm _topdir.
109 mkdir -p $HOME/rpmbuild/RPMS
110 mkdir -p $HOME/rpmbuild/SOURCES
111 mkdir -p $HOME/rpmbuild/SPECS
112 mkdir -p $HOME/rpmbuild/SRPMS
119 if [ ! -z $DPDK ]; then
120 echo "----------------------------------"
121 echo "Build OVS for dpdk. Use Fedora copr repo"
123 echo "----------------------------------"
124 echo "Clone Fedora copr repo and copy files."
126 git clone http://copr-dist-git.fedorainfracloud.org/cgit/pmatilai/dpdk/openvswitch.git
127 cp $TMPDIR/openvswitch/openvswitch.spec $RPMDIR/SPECS
128 cp $TMPDIR/openvswitch/* $RPMDIR/SOURCES
129 snapgit=`grep "define snapver" $TMPDIR/openvswitch/openvswitch.spec | cut -c26-33`
130 echo "-------------------------------------------"
131 echo "Remove old dpdk, ovs and dpdk development rpms"
134 echo "-------------------------------------------"
135 echo "Install dpdk and dpdk development rpms"
137 sudo rpm -ivh $HOME/dpdk-2*.rpm
138 sudo rpm -ivh $HOME/dpdk-devel*.rpm
139 echo "----------------------------------------"
140 echo "Copy DPDK RPM to SOURCES"
142 cp $HOME/*.rpm $RPMDIR/SOURCES
143 echo "--------------------------------------------"
144 echo "Get commit from $snapgit User Space OVS version $TAG"
147 git clone $OVS_REPO_URL
149 git checkout $snapgit
150 echo "--------------------------------------------"
151 echo "Creating archive, $archive using copr script"
153 snapser=`git log --pretty=oneline | wc -l`
154 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
155 prefix=openvswitch-${basever}-${snapser}.git${snapgit}
156 archive=$prefix.tar.gz
157 git archive --prefix=${prefix}/ HEAD | gzip -9 > $RPMDIR/SOURCES/${archive}
158 cd $TMPDIR/openvswitch
159 echo "--------------------------------------------"
160 echo "Build openvswitch RPM"
163 echo "-------------------------------------------------"
164 echo "Build OVS without DPDK:"
165 echo "Use spec files for $os_type in OVS distribution."
167 if [[ "$TAG" =~ "master" ]]; then
168 git clone $OVS_REPO_URL
171 if [[ ! "$OVS_PATCH" =~ "no" ]]; then
172 echo "Apply patches from $OVS_PATCH"
174 basever=`grep AC_INIT configure.ac | cut -d' ' -f2 | cut -d, -f1`
175 export VERSION=$basever
177 echo "--------------------------------------------"
178 echo making distribution tarball for Open vswitch version $VERSION
184 echo cp openvswitch-*.tar.gz $HOME/rpmbuild/SOURCES
185 cp openvswitch-*.tar.gz $HOME/rpmbuild/SOURCES
187 export VERSION=${TAG}
188 echo "---------------------------------------------"
189 echo "Get openvswith-${VERSION}.tar.gz"
191 curl --silent --output $HOME/rpmbuild/SOURCES/openvswitch-${VERSION}.tar.gz http://openvswitch.org/releases/openvswitch-${VERSION}.tar.gz
194 if [ ! -z $kmod ]; then
195 echo "--------------------------------------------"
196 echo "Building openvswitch kernel module RPM"
198 rpmbuild -bb -D "kversion $kernel_version" -D "kflavors default" --define "_topdir `echo $RPMDIR`" $setnocheck rhel/openvswitch-kmod-${os_type}.spec
200 echo "--------------------------------------------"
201 echo "Build openvswitch RPM"
204 rpmbuild -bb --define "_topdir `echo $RPMDIR`" $setnocheck openvswitch.spec
206 cp $RPMDIR/RPMS/x86_64/*.rpm $HOME