6 export DEBIAN_FRONTEND
=noninteractive
8 CROSS_ARCHITECTURES
="i386 ppc64el s390x"
9 for arch
in $CROSS_ARCHITECTURES; do
10 dpkg
--add-architecture $arch
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
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 echo 'deb https://deb.debian.org/debian testing main' >/etc
/apt
/sources.list.d
/testing.list
29 # Don't use newer packages from testing by default
30 cat >/etc
/apt
/preferences
<<EOF
32 Pin: release a=testing
36 apt-get dist-upgrade
-y
38 apt-get
install -y --no-remove \
61 libomxil-bellagio-dev \
63 libpciaccess-dev
:i386 \
69 libvulkan-dev
:ppc64el \
97 apt-get
install -y --no-remove -t buster-backports \
100 # Cross-build Mesa deps
101 for arch
in $CROSS_ARCHITECTURES; do
102 apt-get
install -y --no-remove \
103 crossbuild-essential-
${arch} \
105 libexpat1-dev
:${arch} \
110 apt-get
install -y --no-remove -t buster-backports \
113 mkdir
/var
/cache
/apt
/archives
/${arch}
114 # Download llvm-* packages, but don't install them yet, since they can
115 # only be installed for one architecture at a time
116 apt-get
install -o Dir
::Cache
::archives
=/var
/cache
/apt
/archives
/$arch --download-only \
117 -y --no-remove -t buster-backports \
121 apt-get
install -y --no-remove -t buster-backports \
125 # Install packages we need from Debian testing last, to avoid pulling in more
127 # Need to allow removing libgcc1 for these
128 apt-get
install -y -t testing \
133 apt-get
install -y --no-remove -t testing \
134 g
++-mingw-w64-x86-64-win32 \
141 . .gitlab-ci
/container
/container_pre_build.sh
144 # Debian's pkg-config wrapers for mingw are broken, and there's no sign that
145 # they're going to be fixed, so we'll just have to fix it ourselves
146 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
147 cat >/usr
/local
/bin
/x86_64-w64-mingw32-pkg-config
<<EOF
150 PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@
152 chmod +x
/usr
/local
/bin
/x86_64-w64-mingw32-pkg-config
155 # Generate cross build files for Meson
156 for arch
in $CROSS_ARCHITECTURES; do
157 . .gitlab-ci
/create-cross-file.sh
$arch
161 # for the vulkan overlay layer
162 wget https
://github.com
/KhronosGroup
/glslang
/releases
/download
/master-tot
/glslang-master-linux-Release.
zip
163 unzip glslang-master-linux-Release.
zip bin
/glslangValidator
164 install -m755 bin
/glslangValidator
/usr
/local
/bin
/
165 rm bin
/glslangValidator glslang-master-linux-Release.
zip
168 # dependencies where we want a specific version
169 export XORG_RELEASES
=https
://xorg.freedesktop.org
/releases
/individual
170 export XCB_RELEASES
=https
://xcb.freedesktop.org
/dist
171 export WAYLAND_RELEASES
=https
://wayland.freedesktop.org
/releases
173 export XORGMACROS_VERSION
=util-macros-1.19
.0
174 export LIBDRM_VERSION
=libdrm-2.4
.100
175 export XCBPROTO_VERSION
=xcb-proto-1.13
176 export LIBXCB_VERSION
=libxcb-1.13
177 export LIBWAYLAND_VERSION
=wayland-1.15
.0
178 export WAYLAND_PROTOCOLS_VERSION
=wayland-protocols-1.12
180 wget
$XORG_RELEASES/util
/$XORGMACROS_VERSION.
tar.bz2
181 tar -xvf $XORGMACROS_VERSION.
tar.bz2
&& rm $XORGMACROS_VERSION.
tar.bz2
182 cd $XORGMACROS_VERSION; .
/configure
; make install; cd ..
183 rm -rf $XORGMACROS_VERSION
185 wget
$XCB_RELEASES/$XCBPROTO_VERSION.
tar.bz2
186 tar -xvf $XCBPROTO_VERSION.
tar.bz2
&& rm $XCBPROTO_VERSION.
tar.bz2
187 cd $XCBPROTO_VERSION; .
/configure
; make install; cd ..
188 rm -rf $XCBPROTO_VERSION
190 wget
$XCB_RELEASES/$LIBXCB_VERSION.
tar.bz2
191 tar -xvf $LIBXCB_VERSION.
tar.bz2
&& rm $LIBXCB_VERSION.
tar.bz2
192 cd $LIBXCB_VERSION; .
/configure
; make install; cd ..
193 rm -rf $LIBXCB_VERSION
195 wget https
://dri.freedesktop.org
/libdrm
/$LIBDRM_VERSION.
tar.bz2
196 tar -xvf $LIBDRM_VERSION.
tar.bz2
&& rm $LIBDRM_VERSION.
tar.bz2
198 meson build
-D vc4
=true
-D freedreno
=true
-D etnaviv
=true
-D libdir
=lib
/x86_64-linux-gnu
; ninja
-C build
install
199 rm -rf build
; meson
--cross-file=/cross_file-ppc64el.txt build
-D libdir
=lib
/powerpc64le-linux-gnu
; ninja
-C build
install
200 rm -rf build
; meson
--cross-file=/cross_file-i386.txt build
-D libdir
=lib
/i386-linux-gnu
; ninja
-C build
install
202 rm -rf $LIBDRM_VERSION
204 wget
$WAYLAND_RELEASES/$LIBWAYLAND_VERSION.
tar.xz
205 tar -xvf $LIBWAYLAND_VERSION.
tar.xz
&& rm $LIBWAYLAND_VERSION.
tar.xz
206 cd $LIBWAYLAND_VERSION; .
/configure
--enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
207 rm -rf $LIBWAYLAND_VERSION
209 wget
$WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.
tar.xz
210 tar -xvf $WAYLAND_PROTOCOLS_VERSION.
tar.xz
&& rm $WAYLAND_PROTOCOLS_VERSION.
tar.xz
211 cd $WAYLAND_PROTOCOLS_VERSION; .
/configure
; make install; cd ..
212 rm -rf $WAYLAND_PROTOCOLS_VERSION
215 # The version of libglvnd-dev in debian is too old
216 # Check this page to see when this local compilation can be dropped in favour of the package:
217 # https://packages.debian.org/libglvnd-dev
219 wget https
://gitlab.freedesktop.org
/glvnd
/libglvnd
/-/archive
/v
$GLVND_VERSION/libglvnd-v
$GLVND_VERSION.
tar.gz
220 tar -xvf libglvnd-v
$GLVND_VERSION.
tar.gz
&& rm libglvnd-v
$GLVND_VERSION.
tar.gz
221 pushd libglvnd-v
$GLVND_VERSION; .
/autogen.sh
; .
/configure
; make install; popd
222 rm -rf libglvnd-v
$GLVND_VERSION
226 git clone https
://gitlab.freedesktop.org
/mesa
/shader-db.git
--depth 1
227 rm -rf shader-db
/.git
233 ############### Uninstall the build software
247 . .gitlab-ci
/container
/container_post_build.sh