blob: 88d208d34fd97816448e89315da712eee0552c77 (
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
|
#!/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 python-virtualenv python-setuptools \
python-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 \
debhelper 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 debian-xcontrol devscripts \
pristine-tar dh-python python-sphinx libpcap0.8-dev libstdc++5 \
python-scapy inkscape libxen-dev libxenstore3.0 python-sphinx-rtd-theme"
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')"
}
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
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
;;
*)
echo "---> Unknown operating system"
;;
esac
# execute steps for all systems
all_systems
|