60b92e6f4eb041fbec145c30cdd610a98df017ca
[ovsnfv.git] / build / build_ovs_rpm.sh
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2016 Red Hat Inc. and others.
4 # therbert@redhat.com
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10 set -e
11 declare -i CNT
12
13 echo "==============================="
14 echo executing $0 $@
15 echo executing on machine `uname -a`
16
17 usage() {
18     echo run BuildAndTestOVS -h for help
19 }
20
21 while getopts "cdg:hkp:u:v" opt; do
22     case "$opt" in
23         c)
24             setnocheck="--without check"
25             ;;
26         d)
27             DPDK="yes"
28             ;;
29         g)
30             TAG=${OPTARG}
31             ;;
32         h|\?)
33             usage
34             exit 1
35             ;;
36         k)
37             kmod="yes"
38             ;;
39         p)
40             OVS_PATCH=${OPTARG}
41             ;;
42         u)
43             OVS_REPO_URL=${OPTARG}
44             ;;
45         v)
46             verbose="yes"
47             ;;
48     esac
49 done
50
51 HOME=`pwd`
52 TOPDIR=$HOME
53 TMPDIR=$TOPDIR/ovsrpm
54
55 if [ -d $TMPDIR ]
56 then
57     rm -rf $TMPDIR
58 fi
59
60 sudo yum -y install gcc make python-devel openssl-devel kernel-devel graphviz \
61        kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
62        libtool
63
64 VERSION=2.3.90
65 os_type=fedora
66 kernel_version=$(uname -a | awk '{print $3}')
67
68 mkdir -p $TMPDIR
69
70 cd $TMPDIR
71
72 mkdir -p $HOME/rpmbuild/RPMS
73 mkdir -p $HOME/rpmbuild/SOURCES
74 mkdir -p $HOME/rpmbuild/SPECS
75 mkdir -p $HOME/rpmbuild/SRPMS
76
77 RPMDIR=$HOME/rpmbuild
78
79
80 echo "---------------------"
81 echo "Clone git repo $OVS_REPO_URL and checkout branch or tag $TAG"
82 echo
83 git clone $OVS_REPO_URL
84
85 cd ovs
86 echo "--------------------"
87 echo "Checkout OVS $TAG"
88 echo
89 if [[ ! "$TAG" =~ "master" ]]; then
90     git checkout $TAG
91 fi
92 if [[ ! "$OVS_PATCH" =~ "no" ]]; then
93     echo "Apply patches from $OVS_PATCH"
94 fi
95 ./boot.sh
96 if [ ! -z $DPDK ]; then
97     ./configure --with-dpdk
98 else
99     ./configure --with-linux=/lib/modules/`uname -r`/build
100 fi
101 echo "--------------------"
102 echo "Make OVS $TAG"
103 echo
104 make
105
106 if [[ "$TAG" =~ "master" ]]; then
107     v=$($TMPDIR/ovs/utilities/ovs-vsctl --version | head -1 | cut -d' ' -f4)
108     export VERSION=$v
109 else
110     export VERSION=${TAG:1}
111 fi
112
113 echo making RPM for Open vswitch version $VERSION
114 make dist
115
116 echo cp openvswitch-*.tar.gz $HOME/rpmbuild/SOURCES
117 cp openvswitch-*.tar.gz $HOME/rpmbuild/SOURCES
118
119 if [ ! -z $kmod ]; then
120     echo "Building kernel module..."
121     rpmbuild -bb -D "kversion $kernel_version" -D "kflavors default" --define "_topdir `echo $RPMDIR`" $setnocheck rhel/openvswitch-kmod-${os_type}.spec
122 echo " Kernel RPM built!"
123 fi
124
125 echo "Building User Space..."
126 rpmbuild -bb --define "_topdir `echo $RPMDIR`" $setnocheck rhel/openvswitch.spec
127
128 cp $RPMDIR/RPMS/x86_64/*.rpm $HOME
129
130 exit 0