1bf215546Sopenharmony_ci#!/bin/bash
2bf215546Sopenharmony_ci
3bf215546Sopenharmony_ciset -e
4bf215546Sopenharmony_ciset -o xtrace
5bf215546Sopenharmony_ci
6bf215546Sopenharmony_ciexport DEBIAN_FRONTEND=noninteractive
7bf215546Sopenharmony_ci
8bf215546Sopenharmony_ci# Ephemeral packages (installed for this script and removed again at the end)
9bf215546Sopenharmony_ciSTABLE_EPHEMERAL=" \
10bf215546Sopenharmony_ci        "
11bf215546Sopenharmony_ci
12bf215546Sopenharmony_cidpkg --add-architecture $arch
13bf215546Sopenharmony_ciapt-get update
14bf215546Sopenharmony_ci
15bf215546Sopenharmony_ciapt-get install -y --no-remove \
16bf215546Sopenharmony_ci        $STABLE_EPHEMERAL \
17bf215546Sopenharmony_ci        crossbuild-essential-$arch \
18bf215546Sopenharmony_ci        libelf-dev:$arch \
19bf215546Sopenharmony_ci        libexpat1-dev:$arch \
20bf215546Sopenharmony_ci        libpciaccess-dev:$arch \
21bf215546Sopenharmony_ci        libstdc++6:$arch \
22bf215546Sopenharmony_ci        libvulkan-dev:$arch \
23bf215546Sopenharmony_ci        libx11-dev:$arch \
24bf215546Sopenharmony_ci        libx11-xcb-dev:$arch \
25bf215546Sopenharmony_ci        libxcb-dri2-0-dev:$arch \
26bf215546Sopenharmony_ci        libxcb-dri3-dev:$arch \
27bf215546Sopenharmony_ci        libxcb-glx0-dev:$arch \
28bf215546Sopenharmony_ci        libxcb-present-dev:$arch \
29bf215546Sopenharmony_ci        libxcb-randr0-dev:$arch \
30bf215546Sopenharmony_ci        libxcb-shm0-dev:$arch \
31bf215546Sopenharmony_ci        libxcb-xfixes0-dev:$arch \
32bf215546Sopenharmony_ci        libxdamage-dev:$arch \
33bf215546Sopenharmony_ci        libxext-dev:$arch \
34bf215546Sopenharmony_ci        libxrandr-dev:$arch \
35bf215546Sopenharmony_ci        libxshmfence-dev:$arch \
36bf215546Sopenharmony_ci        libxxf86vm-dev:$arch \
37bf215546Sopenharmony_ci        wget
38bf215546Sopenharmony_ci
39bf215546Sopenharmony_ciif [[ $arch != "armhf" ]]; then
40bf215546Sopenharmony_ci    if [[ $arch == "s390x" ]]; then
41bf215546Sopenharmony_ci        LLVM=9
42bf215546Sopenharmony_ci    else
43bf215546Sopenharmony_ci        LLVM=11
44bf215546Sopenharmony_ci    fi
45bf215546Sopenharmony_ci
46bf215546Sopenharmony_ci    # llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only
47bf215546Sopenharmony_ci    # with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
48bf215546Sopenharmony_ci    # around this.
49bf215546Sopenharmony_ci    apt-get install -y --no-remove \
50bf215546Sopenharmony_ci            libclang-cpp${LLVM}:$arch \
51bf215546Sopenharmony_ci            libffi-dev:$arch \
52bf215546Sopenharmony_ci            libgcc-s1:$arch \
53bf215546Sopenharmony_ci            libtinfo-dev:$arch \
54bf215546Sopenharmony_ci            libz3-dev:$arch \
55bf215546Sopenharmony_ci            llvm-${LLVM}:$arch \
56bf215546Sopenharmony_ci            zlib1g
57bf215546Sopenharmony_cifi
58bf215546Sopenharmony_ci
59bf215546Sopenharmony_ci. .gitlab-ci/container/create-cross-file.sh $arch
60bf215546Sopenharmony_ci
61bf215546Sopenharmony_ci
62bf215546Sopenharmony_ci. .gitlab-ci/container/container_pre_build.sh
63bf215546Sopenharmony_ci
64bf215546Sopenharmony_ci
65bf215546Sopenharmony_ci# dependencies where we want a specific version
66bf215546Sopenharmony_ciEXTRA_MESON_ARGS="--cross-file=/cross_file-${arch}.txt -D libdir=lib/$(dpkg-architecture -A $arch -qDEB_TARGET_MULTIARCH)"
67bf215546Sopenharmony_ci. .gitlab-ci/container/build-libdrm.sh
68bf215546Sopenharmony_ci
69bf215546Sopenharmony_ciapt-get purge -y \
70bf215546Sopenharmony_ci        $STABLE_EPHEMERAL
71bf215546Sopenharmony_ci
72bf215546Sopenharmony_ci. .gitlab-ci/container/container_post_build.sh
73bf215546Sopenharmony_ci
74bf215546Sopenharmony_ci# This needs to be done after container_post_build.sh, or apt-get breaks in there
75bf215546Sopenharmony_ciif [[ $arch != "armhf" ]]; then
76bf215546Sopenharmony_ci    apt-get download llvm-${LLVM}-{dev,tools}:$arch
77bf215546Sopenharmony_ci    dpkg -i --force-depends llvm-${LLVM}-*_${arch}.deb
78bf215546Sopenharmony_ci    rm llvm-${LLVM}-*_${arch}.deb
79bf215546Sopenharmony_cifi
80