blob: 62f3af55d47c0d3088f6ab186596f2eecd19a455 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
|
#!/bin/bash
# vim: ts=4 sw=4 sts=4 et tw=72 :
rh_systems() {
# RH Install build tools
echo "---> Installing RH build tools $(date +'%Y%m%dT%H%M%S')"
RH_TOOLS_PKGS="@development redhat-lsb glibc-static \
java-1.8.0-openjdk-devel yum-utils openssl-devel apr-devel indent rpm"
yum install -y ${RH_TOOLS_PKGS}
# Memory leakage checks
yum install -y valgrind
# RH Install Python dependencies
###REMOVED mysql-devel
echo "---> Installing RH Python dependencies $(date +'%Y%m%dT%H%M%S')"
RH_PYTHON_PKGS="python-devel python-virtualenv python-setuptools \
python-pip kernel-devel epel-rpm-macros"
pip install --upgrade pip
yum install -y ${RH_PYTHON_PKGS}
pip install pypcap
# RH Install Documentation packages
###Removed python-pyparsing
echo "---> Installing RH documentation packages $(date +'%Y%m%dT%H%M%S')"
RH_DOC_PKGS="doxygen graphviz python-jinja2 asciidoc \
dblatex source-highlight python-sphinx libxml2 libffi-devel python-cffi"
yum install -y install ${RH_DOC_PKGS}
# RH Install GCC packages
echo "---> Installing RH GCC packages $(date +'%Y%m%dT%H%M%S')"
RH_GCC_PKGS="cpp gcc c++ cmake make"
yum install -y ${RH_GCC_PKGS}
# RH Install components to build Ganglia modules
echo "---> Installing RH components $(date +'%Y%m%dT%H%M%S')"
RH_GANGLIA_MODS="libconfuse-devel ganglia-devel mock"
yum install -y --enablerepo=epel ${RH_GANGLIA_MODS}
# RH Install module for VPP project
echo uio_pci_generic >> /etc/modules
# RH Install VPP packages to shorten build times
echo "---> Installing VPP dependencies $(date +'%Y%m%dT%H%M%S')"
RH_VPP_PKGS="curl autoconf automake bison ccache dkms git libtool \
libconfuse-dev git-review cscope"
yum install -y ${RH_VPP_PKGS}
yum groupinstall "Development Tools"
# RH Install TLDK dependencies
RH_TLKD_PKGS="libpcap-devel libcap-devel scapy"
yum install -y ${RH_TLKD_PKGS}
# RH Install Puppet packages
PUPPET_PKGS="libxml2-devel libxslt-devel ruby-devel zlib-devel"
yum install -y ${PUPPET_PKGS}
# RH Install debuginfo packages
#echo "---> Installing debug packages $(date +'%Y%m%dT%H%M%S')"
#RH_DEBUG_PKGS="glibc openssl-libs zlib"
#debuginfo-install -y ${RH_DEBUG_PKGS}
# # RH Packer builds happen from the centos flavor images
# PACKERDIR=$(mktemp -d)
# # disable double quote checking
# # shellcheck disable=SC2086
# cd $PACKERDIR
# wget https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_linux_amd64.zip
# unzip packer_0.10.1_linux_amd64.zip -d /usr/local/bin/
# # rename packer to avoid conflicts with cracklib
# mv /usr/local/bin/packer /usr/local/bin/packer.io
# # cleanup from the installation
# # disable double quote checking
# # shellcheck disable=SC2086
# rm -rf $PACKERDIR
# # cleanup from previous install process
# if [ -d /tmp/packer ]
# then
# rm -rf /tmp/packer
# fi
}
ubuntu_systems() {
# DEB add Toolchain repo
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
#Configuring thirdparty Nexus repo
echo "deb [trusted=yes] https://nexus.fd.io/content/repositories/thirdparty ./" > /etc/apt/sources.list.d/FD.io.thirdparty.list
# DEB Install PPA packages
echo "---> Adding '$1' PPA $(date +'%Y%m%dT%H%M%S')"
dpkg -l software-properties-common > /dev/null 2>&1 || software-properties-common
listfile=$(perl -e "print(q{$1} =~ m{^ppa:(.+)/ppa})")-ppa-${CODENAME}.list
if [ ! -f /etc/apt/sources.list.d/${listfile} ]
then
do_retry sudo apt-add-repository -y $1
fi
apt-get update
# DEB cloud packages
echo "---> Installing cloud packages $(date +'%Y%m%dT%H%M%S')"
CLOUD_PKGS="cloud-initramfs-dyn-netconf cloud-initramfs-growroot \
cloud-initramfs-rescuevol"
apt install -y ${CLOUD_PKGS}
# DEB Install Python dependencies
echo "---> Installing Python dependencies $(date +'%Y%m%dT%H%M%S')"
PYTHON_PKGS="python-all python-dev python3-virtualenv python-setuptools \
python3-pip libssl-dev libmysqlclient-dev python2.7 \
libffi-dev python-cffi"
apt install -y ${PYTHON_PKGS}
# Memory leakage checks
apt install -y valgrind
# DEB Install Documentation packages
echo "---> Installing documentation packages $(date +'%Y%m%dT%H%M%S')"
DOC_PKGS="doxygen graphviz python-pyparsing python-jinja2 asciidoc \
dblatex source-highlight"
apt install -y ${DOC_PKGS}
# DEB Install the correct version of toolchain packages
echo "---> Installing latest toolchain packages from PPA $(date +'%Y%m%dT%H%M%S')"
#Retry to prevent timeout failure
#echo "---> Updating package index $(date +'%Y%m%dT%H%M%S')"
#do_retry sudo apt-get update
#echo "<--- Updating package index $(date +'%Y%m%dT%H%M%S')"
#echo "<--- Adding '$1' PPA $(date +'%Y%m%dT%H%M%S')"
# DEB Install GCC packages
echo "---> Installing GCC-5 packages $(date +'%Y%m%dT%H%M%S')"
GCC_PKGS="cpp gcc g++ cmake lcov gcc-multilib"
apt install -y ${GCC_PKGS}
# DEB Install VPP packages to shorten build times
echo "---> Installing VPP DEB_DEPENDS packages $(date +'%Y%m%dT%H%M%S')"
VPP_PKGS="curl build-essential autoconf automake bison libssl-dev ccache \
dkms git libtool libganglia1-dev libapr1-dev dh-systemd \
libconfuse-dev git-review exuberant-ctags cscope indent pkg-config emacs"
apt install -y ${VPP_PKGS}
# DEB Install CSIT packages
CSIT_PKGS="libxml2 libxml2-dev libxslt-dev zlib1g-dev bc unzip"
apt install -y ${CSIT_PKGS}
# DEB Install latest kernel and uio
echo "---> Installing kernel image and header packages $(date +'%Y%m%dT%H%M%S')"
DEB_PKGS="linux-image-extra-virtual linux-headers-virtual linux-headers-`uname -r`"
apt install -y ${DEB_PKGS}
# DEB Install deb_dpdk packages to shorten build times
###REMOVED sphinx-rtd-theme
echo "---> Installing deb_dpdk packages $(date +'%Y%m%dT%H%M%S')"
DEB_DPDK_PKGS="google-mock lsb-release dpkg-dev devscripts pristine-tar \
dh-python sphinx-doc sphinx-common libpcap0.8-dev libstdc++5 \
python3-scapy inkscape libxen-dev libxenstore3.0 python3 \
python3-sphinx python3-sphinx-rtd-theme libibverbs-dev libnuma-dev"
apt install -y ${DEB_DPDK_PKGS}
sudo apt install -y libcap-dev libpcap-dev
TEXLIVE_PKGS="texlive-fonts-recommended tex-common texlive-base \
texlive-binaries texlive-pictures texlive-latex-recommended \
preview-latex-style texlive-latex-extra"
apt install -y ${TEXLIVE_PKGS}
echo "<--- Installing deb_dpdk packages $(date +'%Y%m%dT%H%M%S')"
# DEB Manipulation tools, edits debugger, and LSB
echo "---> Installing tools packages $(date +'%Y%m%dT%H%M%S')"
TOOL_PKGS="iproute2 ethtool vlan bridge-utils vim gdb lsb-release gdbserver"
apt install -y ${TOOL_PKGS}
# DEB Updating CA certificates
echo "---> Forcing CA certificate update $(date +'%Y%m%dT%H%M%S')"
sudo update-ca-certificates -f > /dev/null 2>&1
echo "<--- Forcing CA certificate update $(date +'%Y%m%dT%H%M%S')"
# Install TLDK development tools
echo "---> Installing TLDK packages $(date +'%Y%m%dT%H%M%S')"
TLDK_PKGS="libaprutil1-dev libc-dev-bin libc6-dev libcrypt-dev \
libexpat1-dev libldap2-dev libsctp-dev libsctp1 libserf-1-1 libsvn1 \
linux-libc-dev python3-pyelftools libnuma-dev"
apt install -y ${TLDK_PKGS}
pip3 install meson ninja
}
opensuse_systems() {
# Creating a function to install packages. openSUSE doesn't read the
# packages variables as expected.
function install_pkgs ()
{
for pkgs in $@; do
zypper -n install "$pkgs"
done
}
# Update to latest available packages and security bug-fixes
zypper update -y
# Replacing cloud.cfg, it's not supported by cloud-init
cp /etc/cloud/cloud.cfg.orig /etc/cloud/cloud.cfg
# Install openSUSE Development tool packages
echo "--->Installing Development tool packages $(date +'%Y%m%dT%H%M%S')"
ODTL="java-1_8_0-openjdk-devel indent pkg-config lcov cscope libtool ctags \
bison libxml2-tools libxslt-devel python-virtualenv libopenssl-devel"
install_pkgs "$ODTL"
# Install openSUSE Development resources and libraries
echo "--->Installing DEV resources & libraries $(date +'%Y%m%dT%H%M%S')"
ODRL="kernel-devel libffi-devel libconfuse-devel libapr1 libapr1-devel \
libexpat-devel pcre-devel libxml2-devel ruby-devel zlib-devel \
glibc-devel-static libstdc++6 libclang llvm-clang check-devel"
install_pkgs "$ODRL"
# Install openSUSE Packaging utilities and resources
echo "--->Installing PKG utilities & resources $(date +'%Y%m%dT%H%M%S')"
OPP="yum-utils rpm-build"
install_pkgs "$OPP"
# Install openSUSE Python resources and libraries
echo "--->Installing Python resources & libraries $(date +'%Y%m%dT%H%M%S')"
OPRL="python-devel python-setuptools python-pip python-wheel python-mock \
python3-devel python3-pip python-rpm-macros shadow libnuma-devel"
install_pkgs "$OPRL"
# Install openSUSE Documentation packages
echo "---> Installing Documentation packages $(date +'%Y%m%dT%H%M%S')"
ODP="doxygen graphviz asciidoc dblatex source-highlight python-sphinx \
libxml2 python-jinja2 python-cffi python-pyparsing \
python-sphinx_rtd_theme"
install_pkgs "$ODP"
# Install openSUSE Compliation packages
echo "--->Installing Compliation packages $(date +'%Y%m%dT%H%M%S')"
OCP="cpp gcc gcc-c++ cmake make gcc6 libstdc++-devel ruby-devel"
install_pkgs "$OCP"
# Install openSUSE Debugging tool packages
echo "--->Installing Debugging tool packages $(date +'%Y%m%dT%H%M%S')"
ODTP="valgrind rrdtool rrdtool-devel autoconf automake ccache chrpath"
install_pkgs "$ODTP"
# Install openSUSE Misc tool packages
echo "--->Installing Misc tool packages $(date +'%Y%m%dT%H%M%S')"
OMTP="openssl emacs curl git git-review unzip devscripts \
iproute2 ethtool vlan bridge-utils vim gdb gdbserver \
lsb-release distribution-release"
install_pkgs "$OMTP"
# Install openSUSE TLDK dependencies
OTD="libpcap-devel libcap-devel"
install_pkgs "${OTD}"
zypper -n install -t pattern devel_basis
# Leap 42.3 does not have a recent NASM version and VPP requires NASM 2.12
# minimum so installing from TW repo
zypper install -y \
https://download.opensuse.org/tumbleweed/repo/oss/suse/x86_64/nasm-2.13.01-2.2.x86_64.rpm
# Leap 42.3 does not have a recent INDENT version
# Other distros in Jenkins run 2.2.11 so let's align Leap 42.3 too to avoid
# build checks differences and false-positives
zypper --non-interactive --gpg-auto-import-keys ar \
https://download.opensuse.org/repositories/devel:/tools/openSUSE_Leap_42.3/devel:tools.repo
zypper --gpg-auto-import-keys ref
zypper install -y indent
}
all_systems() {
echo 'Configure keep alive to prevent timeout during testing'
local SSH_CFG=/etc/ssh/ssh_config
echo "TCPKeepAlive true" | sudo tee -a ${SSH_CFG} >/dev/null 2>&1
echo "ServerAliveCountMax 30" | sudo tee -a ${SSH_CFG} >/dev/null 2>&1
echo "ServerAliveInterval 10" | sudo tee -a ${SSH_CFG} >/dev/null 2>&1
# Following installs hashicorp's packer binary which is required for
# ci-management-{verify,merge}-packer jobs
mkdir /tmp/packer.io
cd /tmp/packer.io
wget https://releases.hashicorp.com/packer/0.12.2/packer_0.12.2_linux_amd64.zip
unzip packer_0.12.2_linux_amd64.zip -d /usr/local/bin/
# note: rename to packer.io to avoid conflict with cracklib packer
mv /usr/local/bin/packer /usr/local/bin/packer.io
# Install packagecloud.io
apt-get update
apt-get install ruby-dev
gem install rake
gem install package_cloud
}
echo "---> Detecting OS"
ORIGIN=$(facter operatingsystem | tr '[:upper:]' '[:lower:]')
case "${ORIGIN}" in
fedora|centos|redhat)
echo "---> RH type system detected"
rh_systems
;;
ubuntu)
echo "---> Ubuntu system detected"
ubuntu_systems
;;
opensuse)
echo "---> openSuSE system detected"
opensuse_systems
;;
*)
echo "---> Unknown operating system"
;;
esac
# execute steps for all systems
all_systems
|