5da0e86ff1a890aff5296443bd7abdf00b7096d0
[ovsnfv.git] / build / build_dpdk_rpm.sh
1 #!/bin/bash
2
3 # Copyright (c) 2016 Open Platform for NFV Project, Inc. and its contributors
4 #
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
8 #
9 #        http://www.apache.org/licenses/LICENSE-2.0
10 #
11 #    Unless required by applicable law or agreed to in writing, software
12 #    distributed under the License is distributed on an "AS IS" BASIS,
13 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #    See the License for the specific language governing permissions and
15 #    limitations under the License.
16
17 set -e
18
19 echo "==============================="
20 echo executing $0 $@
21 echo executing on machine `uname -a`
22
23 usage() {
24     echo run BuildAndTestOVS -h for complete help on options on ovsnfv scripts.
25 }
26
27 while getopts "g:hp:u:v" opt; do
28     case "$opt" in
29         g)
30             DPDK_VERSION=${OPTARG}
31             ;;
32         h|\?)
33             usage
34             exit 1
35             ;;
36         p)
37             DPDK_PATCH=${OPTARG}
38             ;;
39         u)
40             DPDK_REPO_URL=${OPTARG}
41             ;;
42         v)
43             verbose="yes"
44             ;;
45     esac
46 done
47
48 if [ -z $DPDK_REPO_URL ]; then
49     DPDK_REPO_URL=http://dpdk.org/git/dpdk
50 fi
51 if [ -z $DPDK_VERSION ]; then
52     DPDK_VERSION=2.2.0
53 fi
54
55 HOME=`pwd`
56 TOPDIR=$HOME
57 TMPDIR=$TOPDIR/rpms
58
59 if [ -d $TMPDIR ]
60 then
61     rm -rf $TMPDIR
62 fi
63
64 function install_pre_reqs() {
65     echo "----------------------------------------"
66     echo Install dependencies for dpdk.
67     echo
68     sudo yum -y install gcc make python-devel openssl-devel kernel-devel graphviz \
69                 kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
70                 libtool python-twisted-core desktop-file-utils groff PyQt4
71 }
72
73 mkdir -p $TMPDIR
74
75 cd $TMPDIR
76
77 mkdir -p $HOME/rpmbuild/RPMS
78 mkdir -p $HOME/rpmbuild/SOURCES
79 mkdir -p $HOME/rpmbuild/SPECS
80 mkdir -p $HOME/rpmbuild/SRPMS
81
82 RPMDIR=$HOME/rpmbuild
83
84 #
85 # Use Fedora copr spec file
86 #
87 echo "---------------------"
88 echo "Get copr distribution git"
89 mkdir -p copr
90 cd copr
91 git clone https://github.com/tfherbert/dpdk-snap.git
92 cd dpdk-snap
93 git checkout $COPR_DPDK_VERSION
94 echo "---------------------"
95 echo "Apply dpdk dpdk spec file patch"
96 echo
97 git apply $HOME/patches/spec_file_add_virtio_patch.patch
98 echo "---------------------"
99 echo "Copy in local dpdk patches"
100 echo
101 cp $HOME/patches/dpdk-16.04-virtio-devargs.patch $TMPDIR/copr/dpdk-snap
102
103 echo "---------------------"
104 echo "Build DPDK RPM version $DPDK_VERSION"
105 echo
106 cd $TMPDIR
107 git clone $DPDK_REPO_URL
108 cd dpdk
109 if [[ "$DPDK_VERSION" =~ "master" ]]; then
110     git checkout master
111     snapgit=`git log --pretty=oneline -n1|cut -c1-8`
112 else
113     git checkout v$DPDK_VERSION
114     snapgit=`grep "define snapver" $TMPDIR/copr/dpdk-snap/dpdk.spec | cut -c25-33`
115 fi
116
117 cp $TMPDIR/copr/dpdk-snap/dpdk.spec $TMPDIR/dpdk
118 cp $TMPDIR/copr/dpdk-snap/dpdk.spec $RPMDIR/SPECS
119 cp $TMPDIR/copr/dpdk-snap/*.patch $TMPDIR/copr/dpdk-snap/sources $TMPDIR/copr/dpdk-snap/dpdk-snapshot.sh $RPMDIR/SOURCES
120 snapser=`git log --pretty=oneline | wc -l`
121
122 makever=`make showversion`
123 basever=`echo ${makever} | cut -d- -f1`
124 prefix=dpdk-${basever:0:5}
125
126 archive=${prefix}.tar.gz
127 DPDK_VERSION=$basever
128
129 echo "-------------------------------"
130 echo "Creating ${archive}"
131 echo
132 git archive --prefix=${prefix}/ HEAD  | gzip -9 > ${archive}
133 cp ${archive} $RPMDIR/SOURCES/
134 echo "-------------------------------"
135 echo building RPM for DPDK version $DPDK_VERSION
136 echo
137 rpmbuild -bb --define "_topdir $RPMDIR" dpdk.spec
138
139 echo "-------------------------------"
140 echo Delete all rpms from $HOME
141 echo
142 set +e
143 rm $HOME/*.rpm
144 set -e
145
146 echo "-------------------------------"
147 echo Copy dpdk RPM
148 echo
149 cp $RPMDIR/RPMS/x86_64/*.rpm $HOME
150
151 exit 0