aboutsummaryrefslogtreecommitdiffstats
path: root/packer/provision/agl_dependencies.sh
blob: dc5331ad6e0adb0a6f739bf0c975746e0eb7e1fa (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
#!/bin/bash
# vim: sw=2 ts=2 sts=2 et :
#set -e
set -x

sudo su -c "echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until"

sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com 8B48AD6246925553 || true

# go
sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com F6BC817356A3D45E || true

sudo su -c "sed -i 's;http://archive.debian.org/debian;http://deb.debian.org/debian;' /etc/apt/sources.list"
sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com 7638D0442B90D010 || true

cat /etc/apt/sources.list

# Make sure that we aren't using the vexxhost mirrors as they have issues
echo "---> Removing Vexxhost Ubuntu mirrors"
sed -i 's/ubuntu.mirror.vexxhost.com/us.archive.ubuntu.com/g' /etc/apt/sources.list

# UPDATE things
sed -i -e "s,xenial,bionic,g" /etc/apt/sources.list

sync

cat /etc/apt/sources.list

DEBIAN_FRONTEND=noninteractive apt-get --purge remove  plymouth-theme* plymouth

DEBIAN_FRONTEND=noninteractive apt-get autoremove

DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y -u dist-upgrade

DEBIAN_FRONTEND=noninteractive dpkg --configure -a

DEBIAN_FRONTEND=noninteractive apt-get update && \
    apt-get -y install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat \
                       libsdl1.2-dev xterm make xsltproc docbook-utils fop dblatex xmlto autoconf automake \
                       libtool libglib2.0-dev libarchive-dev python-git git python python-minimal repo \
                       tree rsync python-yaml python-requests curl tar docker.io pandoc python3 \
                       ruby-all-dev ruby-ffi ruby-ffi-* jekyll ruby-redcarpet mkdocs \
                       python-pip python-simplejson g++-multilib make zip unzip iperf3 \
                       debian-keyring debian-archive-keyring python3-yaml python3-pip python-pip apt \
                       liblz4-tool zstd 

DEBIAN_FRONTEND=noninteractive apt-get clean

DEBIAN_FRONTEND=noninteractive apt-get -y install linux-image-4.15.0-123-generic

DEBIAN_FRONTEND=noninteractive apt full-upgrade

# Adding stretch-backports for lavacli
#echo "deb https://apt.lavasoftware.org/release buster-backports main" >> /etc/apt/sources.list

#wget https://apt.lavasoftware.org/lavasoftware.key.asc
#sudo apt-key add lavasoftware.key.asc
#rm lavasoftware.key.asc
#sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com A791358F2E49B100

#DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y lavacli

sudo pip3 install --upgrade pip
sudo pip3 install --upgrade --force-reinstall --ignore-installed pyyaml
sudo pip3 install --upgrade --ignore-installed --force-reinstall lavacli==1.0

# we have a build blocker wrt useradd - I assume it is caused by /bin/sh being dash
# systemd: Performing useradd with
echo "dash dash/sh boolean false" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

# add user ubuntu to docker group:
sudo usermod -a -G docker ubuntu

cat <<EOFHOSTS >> /etc/hosts

# workaround for download
10.30.72.8 download.automotivelinux.org
10.30.72.8 download-internal.automotivelinux.org
127.0.0.1 ubuntu-16

EOFHOSTS

# install newer version of jjb ... fixes issues with rendering
sudo pip install --upgrade --force-reinstall -v jenkins-job-builder

cat <<EOFSYSCTL >> /etc/sysctl.conf
# we have a lot of make jobs, this helps a lot
kernel.sched_child_runs_first = 1
# smooth over a lot of I/O requests and do less blocking
vm.dirty_background_bytes = 0
vm.dirty_background_ratio = 20
vm.dirty_expire_centisecs = 4320000
vm.dirtytime_expire_seconds = 432000
vm.dirty_bytes = 0
vm.dirty_ratio = 80
vm.dirty_writeback_centisecs = 0

# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1

EOFSYSCTL

### webdocs + xds
# taken from container setup script. not documented in readme.
# install node.js and tools (npm, gulp, bower)
#
#curl -v --connect-timeout 60 --retry 3 -sL https://deb.nodesource.com/setup_12.x | bash -
#DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
#which -a npm
#dpkg -L nodejs
#npm install --global gulp bower

################### SDX181207 { - obsolete: section until closing brace should be removed after migration to next docsite
# tools used to generate developer website (https://github.com/automotive-grade-linux/docs-agl)
#gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
#    && curl -sSL https://get.rvm.io | bash -s stable --ruby --gems=jekyll


mkdir -p /opt/AGL
cd /opt/AGL/

git clone https://git.automotivelinux.org/AGL/documentation
cd documentation
sudo pip3 install -r requirements.txt

# ruby markdown linter
#sudo gem install mdl

# python markdown linter
sudo pip3 install mdlint

# releng-scripts needs latest (stable v2.9) jinja2
sudo pip install --force-reinstall --ignore-installed jinja2
sudo pip install --upgrade jinja2
sudo pip install --force-reinstall --ignore-installed PyYAML
sudo pip install --upgrade PyYAML

sudo pip3 install --force-reinstall --ignore-installed jinja2
sudo pip3 install --upgrade jinja2
sudo pip3 install --force-reinstall --ignore-installed PyYAML
sudo pip3 install --upgrade PyYAML


# updates for cloud-init
sudo pip3 install --upgrade oauthlib
sudo pip3 install --upgrade configobj>=5.0.2
sudo pip3 install --upgrade requests
sudo pip3 install --upgrade jsonschema
sudo pip3 install --upgrade jsonpatch

python -c "import sys; print sys.path"

#sudo pip show jinja2
#sudo pip3 show jinja2

# install go for xds build

. /etc/os-release
#wget -O - "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x52B59B1571A79DBC054901C0F6BC817356A3D45E" | sudo apt-key add -
#sudo bash -c "cat >> /etc/apt/sources.list.d/golang.list <<EOF
#deb http://ppa.launchpad.net/longsleep/golang-backports/ubuntu bionic main
#EOF"
#sudo apt-get update
#sudo apt-get install golang-go

# Crossbuild standard go libraries for MacOS and Windows
#sudo GOOS=darwin GOARCH=amd64 go install -v -a std
#sudo GOOS=windows GOARCH=amd64 go install -v -a std

useradd -m -s /bin/bash jenkins

# Check if docker group exists
grep -q docker /etc/group
if [ "$?" == '0' ]
then
  # Add jenkins user to docker group
  usermod -a -G docker jenkins
fi

# Check if mock group exists
grep -q mock /etc/group
if [ "$?" == '0' ]
then
  # Add jenkins user to mock group so they can build Int/Pack's RPMs
  usermod -a -G mock jenkins
fi

mkdir -p /home/jenkins/.ssh
mkdir /w
cp -r /home/ubuntu/.ssh/authorized_keys /home/jenkins/.ssh/authorized_keys

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD0EqO61Im8/zCKj4Hg/H26Q3Z4UAjlIePVVu54LfbCIJ7wPLNTBBXBz74cTuiUMF8CbeBwOyWR83NELbSllKnr+wK6pv3h6f7Zn54sQBXjIy11K38CdrMdXxaCIIPBGqJvOy2JukdKuuwfTuXjUk57evoXKJH1aw3Vu3+81gvqCdKlzbWlOP1p0MdvsWVRpOMn27IH2Gz4/nDdwWtIF8YFHAIbWmlCZGiv8/i/nyuLfsC7p6p00qHfxO5KFTsstQe+/f8WkGNaY/Vz124PBic51GsJ+2SfEnDvYSaQvjsf+xPsfQ4Bo6xkz75sN3PYuNOGZX2TQom139b2x18XXzgwSzeZwYhPKN511xBFll5/0/SugWWU+7pNtXUrK+1PZ7zshlch/vaIJzeZCYYRim0yUDM6rLiJ/zqMRO5jvPqpnFjZ9Rz+bqPpLC3mMiEWBdbs9Hxtx3+NhrFVBGlDVoi7sBzDKyrSnuljAZHLaT9rxQquhWLKRUjPZviSb8s544WaQmWDyOTWkPXdN63pVM23EAfi1wVRIyPcLZMdoHQohbh+ePclG2pGfV8hro+aDNyvLcXj1wL8p43elV4d/jPjsePqso7IhyPSghhLCO7lLnrlNVBaI5A+/iUILRHU3LlmKJlErwDmkl1XAJbO0DHDpSwsIDrK1q9Eb7e+C6M8Ww==" >> /home/jenkins/.ssh/authorized_keys
chmod 0600 /home/jenkins/.ssh/authorized_keys

# Generate ssh key for use by Robot jobs
echo -e 'y\n' | ssh-keygen -N "" -f /home/jenkins/.ssh/id_rsa -t rsa
chown -R jenkins:jenkins /home/jenkins/.ssh /w

sudo chown -R ubuntu:ubuntu /home/ubuntu 


# gitlab-runner
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-gitlab-runner.pref
Explanation: Prefer GitLab provided packages over the Debian native ones
Package: gitlab-runner
Pin: origin packages.gitlab.com
Pin-Priority: 1001
EOF

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

DEBIAN_FRONTEND=noninteractive apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install gitlab-runner

# workaround for missing file that made pip bail out
sudo touch /usr/local/lib/python3.6/dist-packages/PyYAML-6.0.dist-info/METADATA || true



exit 0