6 export DEBIAN_FRONTEND
=noninteractive
8 CROSS_ARCHITECTURES
="i386"
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
28 # Use newer packages from backports by default
29 cat >/etc
/apt
/preferences
<<EOF
31 Pin: release a=buster-backports
35 apt-get dist-upgrade
-y
37 apt-get
install -y --no-remove \
59 libomxil-bellagio-dev \
90 # Cross-build Mesa deps
91 for arch
in $CROSS_ARCHITECTURES; do
92 apt-get
install -y --no-remove \
93 crossbuild-essential-
${arch} \
99 # for 64bit windows cross-builds
100 apt-get
install -y --no-remove \
107 # Debian's pkg-config wrapers for mingw are broken, and there's no sign that
108 # they're going to be fixed, so we'll just have to fix it ourselves
109 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
110 cat >/usr
/local
/bin
/x86_64-w64-mingw32-pkg-config
<<EOF
113 PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@
115 chmod +x
/usr
/local
/bin
/x86_64-w64-mingw32-pkg-config
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
124 # dependencies where we want a specific version
125 export XORG_RELEASES
=https
://xorg.freedesktop.org
/releases
/individual
126 export XCB_RELEASES
=https
://xcb.freedesktop.org
/dist
127 export WAYLAND_RELEASES
=https
://wayland.freedesktop.org
/releases
129 export XORGMACROS_VERSION
=util-macros-1.19
.0
130 export LIBDRM_VERSION
=libdrm-2.4
.100
131 export XCBPROTO_VERSION
=xcb-proto-1.13
132 export LIBXCB_VERSION
=libxcb-1.13
133 export LIBWAYLAND_VERSION
=wayland-1.15
.0
134 export WAYLAND_PROTOCOLS_VERSION
=wayland-protocols-1.12
136 wget
$XORG_RELEASES/util
/$XORGMACROS_VERSION.
tar.bz2
137 tar -xvf $XORGMACROS_VERSION.
tar.bz2
&& rm $XORGMACROS_VERSION.
tar.bz2
138 cd $XORGMACROS_VERSION; .
/configure
; make install; cd ..
139 rm -rf $XORGMACROS_VERSION
141 wget
$XCB_RELEASES/$XCBPROTO_VERSION.
tar.bz2
142 tar -xvf $XCBPROTO_VERSION.
tar.bz2
&& rm $XCBPROTO_VERSION.
tar.bz2
143 cd $XCBPROTO_VERSION; .
/configure
; make install; cd ..
144 rm -rf $XCBPROTO_VERSION
146 wget
$XCB_RELEASES/$LIBXCB_VERSION.
tar.bz2
147 tar -xvf $LIBXCB_VERSION.
tar.bz2
&& rm $LIBXCB_VERSION.
tar.bz2
148 cd $LIBXCB_VERSION; .
/configure
; make install; cd ..
149 rm -rf $LIBXCB_VERSION
151 wget https
://dri.freedesktop.org
/libdrm
/$LIBDRM_VERSION.
tar.bz2
152 tar -xvf $LIBDRM_VERSION.
tar.bz2
&& rm $LIBDRM_VERSION.
tar.bz2
153 cd $LIBDRM_VERSION; meson build
-D vc4
=true
-D freedreno
=true
-D etnaviv
=true
; ninja
-j4 -C build
install; cd ..
154 rm -rf $LIBDRM_VERSION
156 wget
$WAYLAND_RELEASES/$LIBWAYLAND_VERSION.
tar.xz
157 tar -xvf $LIBWAYLAND_VERSION.
tar.xz
&& rm $LIBWAYLAND_VERSION.
tar.xz
158 cd $LIBWAYLAND_VERSION; .
/configure
--enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
159 rm -rf $LIBWAYLAND_VERSION
161 wget
$WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.
tar.xz
162 tar -xvf $WAYLAND_PROTOCOLS_VERSION.
tar.xz
&& rm $WAYLAND_PROTOCOLS_VERSION.
tar.xz
163 cd $WAYLAND_PROTOCOLS_VERSION; .
/configure
; make install; cd ..
164 rm -rf $WAYLAND_PROTOCOLS_VERSION
167 # The version of libglvnd-dev in debian is too old
168 # Check this page to see when this local compilation can be dropped in favour of the package:
169 # https://packages.debian.org/libglvnd-dev
171 wget https
://gitlab.freedesktop.org
/glvnd
/libglvnd
/-/archive
/v
$GLVND_VERSION/libglvnd-v
$GLVND_VERSION.
tar.gz
172 tar -xvf libglvnd-v
$GLVND_VERSION.
tar.gz
&& rm libglvnd-v
$GLVND_VERSION.
tar.gz
173 pushd libglvnd-v
$GLVND_VERSION; .
/autogen.sh
; .
/configure
; make install; popd
174 rm -rf libglvnd-v
$GLVND_VERSION
178 git clone https
://gitlab.freedesktop.org
/mesa
/shader-db.git
--depth 1
179 rm -rf shader-db
/.git
184 # Use ccache to speed up builds
185 apt-get
install -y --no-remove ccache
187 # We need xmllint to validate the XML files in Mesa
188 apt-get
install -y --no-remove libxml2-utils
191 # Generate cross build files for Meson
192 for arch
in $CROSS_ARCHITECTURES; do
193 cross_file
="/cross_file-$arch.txt"
194 /usr
/share
/meson
/debcrossgen
--arch "$arch" -o "$cross_file"
195 # Explicitly set ccache path for cross compilers
196 sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
197 if [ "$arch" = "i386" ]; then
198 # Work around a bug in debcrossgen that should be fixed in the next release
199 sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
200 # Don't need wrapper for i386 executables
201 sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
206 ############### Uninstall the build software
220 apt-get autoremove -y --purge