blob: 121a420b53f64b468c30f4df789adada28cf831f (
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
|
#!/bin/bash
do_setup() {
echo "127.0.1.1 $(hostname) # temporary" >> /etc/hosts
}
do_cleanup() {
perl -i -ne 'print unless /^127.0.1.1.*# temporary$/' /etc/hosts
}
deb_enable_serial_console() {
# enable grub and login on serial console
echo <<EOF>> /etc/default/grub
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=38400 --unit=0 --word=8 --parity=no --stop=1"
EOF
update-grub
}
deb_probe_modules() {
for mod in "$@"
do
modprobe ${mod}
done
}
deb_enable_modules() {
for mod in "$@"
do
echo ${mod} >> /etc/modules
done
}
deb_aptconf_batchconf() {
cat <<EOF >> /etc/apt/apt.conf
APT {
Get {
Assume-Yes "true";
allow-change-held-packages "true";
allow-downgrades "true";
allow-remove-essential "true";
};
};
Dpkg::Options {
"--force-confdef";
"--force-confold";
};
EOF
}
deb_sync_minor() {
echo '---> Updating OS'
# Standard update + upgrade dance
apt-get -qq update
apt-get -qq upgrade
apt-get -qq dist-upgrade
}
deb_correct_shell() {
echo '---> Correcting system shell'
# Fix the silly notion that /bin/sh should point to dash by pointing it to bash
update-alternatives --install /bin/sh sh /bin/bash 100
}
deb_flush() {
echo '---> Flushing extra packages and package cache'
apt-get -qq autoremove
apt-get -qq clean
}
deb_add_ppa() {
echo "---> Adding '$1' PPA"
apt-get -qq install software-properties-common
apt-add-repository -y $1
apt-get -qq update
}
deb_install_pkgs() {
LSB_PATH=$(which lsb_release)
if [ $? == 0 ]
then
VERSION=$(lsb_release -r | awk '{print $2}')
DIST=$(lsb_release -i | awk '{print $3}')
CODENAME=$(lsb_release -c | awk '{print $2}')
else
ISSUE_TXT=$(head -1 /etc/issue)
DIST=$(echo "${ISSUE_TXT}" | awk '{print $1}')
if [ "$DIST" = "Ubuntu" ]
then
VERSION=$(echo "${ISSUE_TXT}" | awk '{print $2}' | sed -e 's/^(\d+\.\d+)(\.\d+)?$/\1/')
elif [ "$DIST" = "Debian" ]
then
VERSION=$(echo "${ISSUE_TXT}" | awk '{print $3}')
else
echo "Unrecognized distribution: ${DIST}"
fi
fi
echo "---> Detected [${DIST} v${VERSION} (${CODENAME})]"
PACKAGES="" # initialize PACKAGES
if [ "$VERSION" = '14.04' ]
then
# openjdk-8-jdk is not available in 14.04 repos by default
deb_add_ppa ppa:openjdk-r/ppa
# Install OpenJDK v8 *and* v7 on Trusty
PACKAGES="$PACKAGES openjdk-8-jdk-headless openjdk-7-jdk emacs24-nox"
elif [ "$VERSION" = '16.04' ]
then
# Install default jdk (v8 on this platform)
PACKAGES="$PACKAGES default-jdk-headless emacs-nox"
# plymouth-label and plymouth-themes are required to get rid of
# initrd warnings / errors on 16.04
apt-get -qq install plymouth-themes plymouth-label
fi
# Build tools - should match vpp/Makefile DEB_DEPENDS variable
PACKAGES="$PACKAGES 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"
# Interface manipulation tools, editors, debugger and lsb
PACKAGES="$PACKAGES iproute2 ethtool vlan bridge-utils
vim gdb lsb-release"
# Install latest kernel and uio
PACKAGES="$PACKAGES linux-image-extra-virtual linux-headers-virtual"
# $$$ comment out for the moment
# PACKAGES="$PACKAGES maven3"
# Install virtualenv for test execution
PACKAGES="$PACKAGES python-virtualenv python-pip python-dev"
echo '---> Installing packages'
# disable double quoting check
# shellcheck disable=SC2086
apt-get -qq install ${PACKAGES}
# Specify documentation packages
DOC_PACKAGES="doxygen graphviz"
apt-get -qq install ${DOC_PACKAGES}
}
deb_enable_hugepages() {
# Setup for hugepages using sysctl so it persists across reboots
sysctl -w vm.nr_hugepages=1024
mkdir -p /mnt/huge
echo "hugetlbfs /mnt/huge hugetlbfs defaults 0 0" >> /etc/fstab
}
deb_mount_hugepages() {
mount /mnt/huge
}
deb_reup_certs() {
# update CA certificates
echo '---> Forcing CA certificate update'
update-ca-certificates -f
}
deb_remove_pkgs() {
echo '---> Removing unattended-upgrades packge to avoid it locking /var/lib/dpkg/lock'
apt-get remove unattended-upgrades
}
deb_disable_apt_systemd_daily() {
echo '---> Stopping and disabling apt.systemd.daily to avoid it locking /var/lib/dpkg/lock'
systemctl stop apt.systemd.daily
systemctl disable apt.systemd.daily
}
rh_clean_pkgs() {
echo '---> Cleaning caches'
yum clean all -q
}
rh_update_pkgs() {
echo '---> Updating OS'
yum upgrade -q -y
}
rh_install_pkgs() {
echo '---> Installing tools'
# Install build tools
yum install -q -y @development redhat-lsb glibc-static java-1.8.0-openjdk-devel yum-utils \
openssl-devel apr-devel
# Specify documentation packages
DOC_PACKAGES="doxygen graphviz"
yum install -q -y install ${DOC_PACKAGES}
# Install python development
OUTPUT=$(yum search python34-devel 2>&1)
if [ "$OUTPUT" == "No matches" ]
then
echo '---> Installing python-devel'
yum install -q -y python-devel
else
echo '---> Installing python34-devel'
yum install -q -y python34-devel
fi
echo '---> Configuring EPEL'
# Install EPEL
OUTPUT=$(rpm -qa epel-release)
if [ -z "$OUTPUT" ]
then
yum install -q -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
fi
# Install components to build Ganglia modules
yum install -q -y --enablerepo=epel {libconfuse,ganglia}-devel mock
# Install debuginfo packages
debuginfo-install -q -y glibc-2.17-106.el7_2.4.x86_64 openssl-libs-1.0.1e-51.el7_2.4.x86_64 zlib-1.2.7-15.el7.x86_64
}
|