| #!/usr/bin/env bash |
| # shellcheck disable=SC2086 # we want word splitting |
| |
| set -e |
| set -o xtrace |
| |
| export DEBIAN_FRONTEND=noninteractive |
| export LLVM_VERSION="${LLVM_VERSION:=15}" |
| |
| # Ephemeral packages (installed for this script and removed again at the end) |
| STABLE_EPHEMERAL=" \ |
| " |
| |
| dpkg --add-architecture $arch |
| apt-get update |
| |
| apt-get install -y --no-remove \ |
| $EXTRA_LOCAL_PACKAGES \ |
| $STABLE_EPHEMERAL \ |
| crossbuild-essential-$arch \ |
| pkgconf:$arch \ |
| libasan8:$arch \ |
| libdrm-dev:$arch \ |
| libelf-dev:$arch \ |
| libexpat1-dev:$arch \ |
| libffi-dev:$arch \ |
| libpciaccess-dev:$arch \ |
| libstdc++6:$arch \ |
| libvulkan-dev:$arch \ |
| libx11-dev:$arch \ |
| libx11-xcb-dev:$arch \ |
| libxcb-dri2-0-dev:$arch \ |
| libxcb-dri3-dev:$arch \ |
| libxcb-glx0-dev:$arch \ |
| libxcb-present-dev:$arch \ |
| libxcb-randr0-dev:$arch \ |
| libxcb-shm0-dev:$arch \ |
| libxcb-xfixes0-dev:$arch \ |
| libxdamage-dev:$arch \ |
| libxext-dev:$arch \ |
| libxrandr-dev:$arch \ |
| libxshmfence-dev:$arch \ |
| libxxf86vm-dev:$arch \ |
| libwayland-dev:$arch |
| |
| if [[ $arch != "armhf" ]]; then |
| # We don't need clang-format for the crossbuilds, but the installed amd64 |
| # package will conflict with libclang. Uninstall clang-format (and its |
| # problematic dependency) to fix. |
| apt-get remove -y clang-format-${LLVM_VERSION} libclang-cpp${LLVM_VERSION} |
| |
| # llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only |
| # with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get |
| # around this. |
| apt-get install -y --no-remove --no-install-recommends \ |
| libclang-cpp${LLVM_VERSION}:$arch \ |
| libgcc-s1:$arch \ |
| libtinfo-dev:$arch \ |
| libz3-dev:$arch \ |
| llvm-${LLVM_VERSION}:$arch \ |
| zlib1g |
| fi |
| |
| . .gitlab-ci/container/create-cross-file.sh $arch |
| |
| |
| . .gitlab-ci/container/container_pre_build.sh |
| |
| |
| # dependencies where we want a specific version |
| EXTRA_MESON_ARGS="--cross-file=/cross_file-${arch}.txt -D libdir=lib/$(dpkg-architecture -A $arch -qDEB_TARGET_MULTIARCH)" |
| . .gitlab-ci/container/build-libdrm.sh |
| |
| . .gitlab-ci/container/build-wayland.sh |
| |
| apt-get purge -y \ |
| $STABLE_EPHEMERAL |
| |
| . .gitlab-ci/container/container_post_build.sh |
| |
| # This needs to be done after container_post_build.sh, or apt-get breaks in there |
| if [[ $arch != "armhf" ]]; then |
| apt-get download llvm-${LLVM_VERSION}-{dev,tools}:$arch |
| dpkg -i --force-depends llvm-${LLVM_VERSION}-*_${arch}.deb |
| rm llvm-${LLVM_VERSION}-*_${arch}.deb |
| fi |