
Debian defaults to bfd, which is comically slow. We can't use lld because the old version we have in the debian stable we use has various bugs. This required bumping libwayland, which had multiply-defined symbols issues in the previous release. Closes: #3236 Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6324>
116 lines
3.5 KiB
Bash
116 lines
3.5 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
set -o xtrace
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Ephemeral packages (installed for this script and removed again at the end)
|
|
STABLE_EPHEMERAL=" \
|
|
autoconf \
|
|
automake \
|
|
autotools-dev \
|
|
bzip2 \
|
|
cmake \
|
|
gnupg \
|
|
libgbm-dev \
|
|
libtool \
|
|
make \
|
|
unzip \
|
|
wget \
|
|
"
|
|
|
|
# We need multiarch for Wine
|
|
dpkg --add-architecture i386
|
|
apt-get update
|
|
|
|
apt-get install -y --no-remove \
|
|
$STABLE_EPHEMERAL \
|
|
libarchive-dev \
|
|
liblua5.3-dev \
|
|
libxml2-dev \
|
|
wine-development \
|
|
wine32-development
|
|
|
|
apt-get install -y --no-remove -t buster-backports \
|
|
llvm-8-dev
|
|
|
|
|
|
. .gitlab-ci/container/container_pre_build.sh
|
|
|
|
|
|
# Debian's pkg-config wrapers for mingw are broken, and there's no sign that
|
|
# they're going to be fixed, so we'll just have to fix it ourselves
|
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
|
|
cat >/usr/local/bin/x86_64-w64-mingw32-pkg-config <<EOF
|
|
#!/bin/sh
|
|
|
|
PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@
|
|
EOF
|
|
chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config
|
|
|
|
|
|
# dependencies where we want a specific version
|
|
export XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
|
|
export XCB_RELEASES=https://xcb.freedesktop.org/dist
|
|
export WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
|
|
|
|
export XORGMACROS_VERSION=util-macros-1.19.0
|
|
export XCBPROTO_VERSION=xcb-proto-1.13
|
|
export LIBXCB_VERSION=libxcb-1.13
|
|
export LIBWAYLAND_VERSION=wayland-1.17.0
|
|
export WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.12
|
|
|
|
wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
|
|
tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
|
|
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
|
rm -rf $XORGMACROS_VERSION
|
|
|
|
wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
|
|
tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2
|
|
cd $XCBPROTO_VERSION; ./configure; make install; cd ..
|
|
rm -rf $XCBPROTO_VERSION
|
|
|
|
wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
|
|
tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2
|
|
cd $LIBXCB_VERSION; ./configure; make install; cd ..
|
|
rm -rf $LIBXCB_VERSION
|
|
|
|
. .gitlab-ci/build-libdrm.sh
|
|
|
|
wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
|
|
tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz
|
|
cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
|
|
rm -rf $LIBWAYLAND_VERSION
|
|
|
|
wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
|
|
tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz
|
|
cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd ..
|
|
rm -rf $WAYLAND_PROTOCOLS_VERSION
|
|
|
|
|
|
# The version of libglvnd-dev in debian is too old
|
|
# Check this page to see when this local compilation can be dropped in favour of the package:
|
|
# https://packages.debian.org/libglvnd-dev
|
|
GLVND_VERSION=1.3.2
|
|
wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz
|
|
tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
|
|
pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
|
|
rm -rf libglvnd-v$GLVND_VERSION
|
|
|
|
|
|
pushd /usr/local
|
|
git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1
|
|
rm -rf shader-db/.git
|
|
cd shader-db
|
|
make
|
|
popd
|
|
|
|
|
|
############### Uninstall the build software
|
|
|
|
apt-get purge -y \
|
|
$STABLE_EPHEMERAL
|
|
|
|
. .gitlab-ci/container/container_post_build.sh
|