gitlab-ci: Add x86_build-base docker image
[mesa.git] / .gitlab-ci / container / x86_build-base.sh
1 #!/bin/bash
2
3 set -e
4 set -o xtrace
5
6 export DEBIAN_FRONTEND=noninteractive
7
8 CROSS_ARCHITECTURES="i386 ppc64el s390x"
9 for arch in $CROSS_ARCHITECTURES; do
10 dpkg --add-architecture $arch
11 done
12
13 apt-get install -y \
14 ca-certificates \
15 gnupg \
16 unzip \
17 wget
18
19 # Upstream LLVM package repository
20 apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
21 echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
22
23 sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
24 echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
25
26 apt-get update
27
28 apt-get install -y --no-remove \
29 $STABLE_EPHEMERAL \
30 bison \
31 ccache \
32 clang-9 \
33 flex \
34 g++ \
35 g++-mingw-w64-x86-64 \
36 gcc \
37 gettext \
38 libclang-9-dev \
39 libclc-dev \
40 libdrm-dev:s390x \
41 libelf-dev \
42 libepoxy-dev \
43 libexpat1-dev \
44 libgtk-3-dev \
45 libomxil-bellagio-dev \
46 libpciaccess-dev \
47 libpciaccess-dev:i386 \
48 libunwind-dev \
49 libva-dev \
50 libvdpau-dev \
51 libvulkan-dev \
52 libvulkan-dev:ppc64el \
53 libx11-dev \
54 libx11-xcb-dev \
55 libxdamage-dev \
56 libxext-dev \
57 libxml2-utils \
58 libxrandr-dev \
59 libxrender-dev \
60 libxshmfence-dev \
61 libxvmc-dev \
62 libxxf86vm-dev \
63 libz-mingw-w64-dev \
64 llvm-9-dev \
65 pkg-config \
66 python-mako \
67 python3-mako \
68 python3-pil \
69 python3-requests \
70 qemu-user \
71 scons \
72 wine-development \
73 wine32-development \
74 wine64-development \
75 x11proto-dri2-dev \
76 x11proto-gl-dev \
77 x11proto-randr-dev \
78 xz-utils \
79 zlib1g-dev
80
81 apt-get install -y --no-remove -t buster-backports \
82 libclang-8-dev \
83 libllvm8 \
84 meson
85
86 # Cross-build Mesa deps
87 for arch in $CROSS_ARCHITECTURES; do
88 apt-get install -y --no-remove \
89 crossbuild-essential-${arch} \
90 libelf-dev:${arch} \
91 libexpat1-dev:${arch} \
92 libffi-dev:${arch} \
93 libstdc++6:${arch} \
94 libtinfo-dev:${arch}
95
96 apt-get install -y --no-remove -t buster-backports \
97 libllvm8:${arch}
98
99 mkdir /var/cache/apt/archives/${arch}
100 # Download llvm-* packages, but don't install them yet, since they can
101 # only be installed for one architecture at a time
102 apt-get install -o Dir::Cache::archives=/var/cache/apt/archives/$arch --download-only \
103 -y --no-remove -t buster-backports \
104 llvm-8-dev:${arch}
105 done
106
107 apt-get install -y --no-remove -t buster-backports \
108 llvm-8-dev
109
110
111 # Generate cross build files for Meson
112 for arch in $CROSS_ARCHITECTURES; do
113 . .gitlab-ci/create-cross-file.sh $arch
114 done
115
116
117 # for the vulkan overlay layer
118 wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip
119 unzip glslang-master-linux-Release.zip bin/glslangValidator
120 install -m755 bin/glslangValidator /usr/local/bin/
121 rm bin/glslangValidator glslang-master-linux-Release.zip
122
123
124 ############### Uninstall ephemeral packages
125
126 apt-get purge -y \
127 gnupg \
128 unzip \
129 wget
130
131 . .gitlab-ci/container/container_post_build.sh