ci: build a host version of mesa for cross builds
We're about to introduce a hard dependency on OpenCL functions in Iris & Anv to generate commands. Intel-clc has been modified to generate serialized NIR. A number of builders are doing cross builds, so we can't use the intel-clc built in that cross build. Other builds like ASAN/MSAN also complain when running the built version of intel-clc because of uninitialized values in the packaged LLVM libraries from the x86_64-base image. To solve those problems we build a host version of intel-clc and use that binary in the cross build to generate the serialized NIR. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26797>
This commit is contained in:

committed by
Marge Bot

parent
1e31fd5f42
commit
da391650f5
@@ -103,8 +103,22 @@ debian-testing-asan:
|
||||
-D b_sanitize=address
|
||||
-D valgrind=disabled
|
||||
-D tools=dlclose-skip
|
||||
-D intel-clc=system
|
||||
S3_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
# Do a host build for intel-clc (asan complains not being loaded
|
||||
# as the first library)
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
debian-testing-msan:
|
||||
# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
|
||||
@@ -116,6 +130,7 @@ debian-testing-msan:
|
||||
EXTRA_OPTION:
|
||||
-D b_sanitize=memory
|
||||
-D b_lundef=false
|
||||
-D intel-clc=system
|
||||
S3_ARTIFACT_NAME: ""
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
# Don't run all the tests yet:
|
||||
@@ -124,6 +139,19 @@ debian-testing-msan:
|
||||
MESON_TEST_ARGS: "--suite glcpp --suite format"
|
||||
GALLIUM_DRIVERS: "freedreno,iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
||||
VULKAN_DRIVERS: intel,amd,broadcom,virtio
|
||||
# Do a host build for intel-clc (msan complains about
|
||||
# uninitialized values in the LLVM libs)
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
debian-build-testing:
|
||||
extends: .meson-build
|
||||
@@ -195,6 +223,7 @@ debian-release:
|
||||
-D osmesa=true
|
||||
-D tools=all
|
||||
-D intel-clc=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
BUILDTYPE: "release"
|
||||
S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
|
||||
@@ -219,7 +248,7 @@ alpine-build-testing:
|
||||
-D egl=enabled
|
||||
-D glvnd=false
|
||||
-D platforms=wayland
|
||||
LLVM_VERSION: ""
|
||||
LLVM_VERSION: "16"
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||
GALLIUM_ST: >
|
||||
-D dri3=enabled
|
||||
@@ -265,7 +294,7 @@ fedora-release:
|
||||
-D selinux=true
|
||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D intel-clc=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
-D teflon=true
|
||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||
@@ -317,6 +346,7 @@ debian-android:
|
||||
-D platform-sdk-version=33
|
||||
-D valgrind=disabled
|
||||
-D android-libbacktrace=disabled
|
||||
-D intel-clc=system
|
||||
GALLIUM_ST: >
|
||||
-D dri3=disabled
|
||||
-D gallium-vdpau=disabled
|
||||
@@ -325,8 +355,19 @@ debian-android:
|
||||
-D gallium-xa=disabled
|
||||
-D gallium-nine=false
|
||||
-D gallium-rusticl=false
|
||||
LLVM_VERSION: ""
|
||||
LLVM_VERSION: "15"
|
||||
PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
||||
script:
|
||||
@@ -507,6 +548,7 @@ debian-clang:
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D build-aco-tests=true
|
||||
-D intel-clc=enabled
|
||||
-D intel-rt=enabled
|
||||
-D imagination-srv=true
|
||||
-D teflon=true
|
||||
CC: clang-${LLVM_VERSION}
|
||||
@@ -579,7 +621,7 @@ debian-vulkan:
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D build-aco-tests=true
|
||||
-D intel-clc=disabled
|
||||
-D intel-rt=disabled
|
||||
-D imagination-srv=true
|
||||
|
||||
debian-x86_32:
|
||||
@@ -594,6 +636,18 @@ debian-x86_32:
|
||||
LLVM_VERSION: 15
|
||||
EXTRA_OPTION: >
|
||||
-D vulkan-layers=device-select,overlay
|
||||
-D intel-clc=system
|
||||
HOST_BUILD_OPTIONS: >
|
||||
-D build-tests=false
|
||||
-D enable-glcpp-tests=false
|
||||
-D gallium-opencl=disabled
|
||||
-D gallium-drivers=
|
||||
-D vulkan-drivers=
|
||||
-D video-codecs=
|
||||
-D glx=disabled
|
||||
-D platforms=
|
||||
-D intel-clc=enabled
|
||||
-D install-intel-clc=true
|
||||
|
||||
debian-s390x:
|
||||
extends:
|
||||
|
@@ -8,6 +8,8 @@
|
||||
set -e
|
||||
set -o xtrace
|
||||
|
||||
export LLVM_VERSION="${LLVM_VERSION:=16}"
|
||||
|
||||
EPHEMERAL=(
|
||||
)
|
||||
|
||||
@@ -16,6 +18,7 @@ DEPS=(
|
||||
bash
|
||||
bison
|
||||
ccache
|
||||
clang16-dev
|
||||
cmake
|
||||
clang-dev
|
||||
coreutils
|
||||
@@ -27,6 +30,7 @@ DEPS=(
|
||||
gettext
|
||||
glslang
|
||||
linux-headers
|
||||
llvm16-static
|
||||
llvm16-dev
|
||||
meson
|
||||
expat-dev
|
||||
@@ -48,6 +52,10 @@ DEPS=(
|
||||
|
||||
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
. .gitlab-ci/container/container_pre_build.sh
|
||||
|
||||
|
||||
|
@@ -52,7 +52,8 @@ 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}"
|
||||
apt-get remove -y "clang-format-${LLVM_VERSION}" "libclang-cpp${LLVM_VERSION}" \
|
||||
"llvm-${LLVM_VERSION}-runtime" "llvm-${LLVM_VERSION}-linker-tools"
|
||||
|
||||
# llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only
|
||||
# with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
|
||||
|
@@ -25,6 +25,7 @@ DEPS=(
|
||||
bison
|
||||
ccache
|
||||
curl
|
||||
"clang-${LLVM_VERSION}"
|
||||
"clang-format-${LLVM_VERSION}"
|
||||
dpkg-cross
|
||||
findutils
|
||||
@@ -86,6 +87,10 @@ apt-get update
|
||||
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||
$EXTRA_LOCAL_PACKAGES
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
# Needed for ci-fairy, this revision is able to upload files to S3
|
||||
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||
|
||||
|
@@ -75,10 +75,6 @@ tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
|
||||
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
||||
rm -rf $XORGMACROS_VERSION
|
||||
|
||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||
|
||||
. .gitlab-ci/container/build-libclc.sh
|
||||
|
||||
. .gitlab-ci/container/build-wayland.sh
|
||||
|
||||
. .gitlab-ci/container/build-shader-db.sh
|
||||
|
@@ -13,10 +13,10 @@
|
||||
|
||||
variables:
|
||||
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
||||
DEBIAN_BASE_TAG: "20240128-virgl"
|
||||
DEBIAN_BASE_TAG: "20240208-libclc-9"
|
||||
|
||||
DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build"
|
||||
DEBIAN_BUILD_TAG: "20240104-find"
|
||||
DEBIAN_BUILD_TAG: "20240208-libclc-9"
|
||||
|
||||
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
|
||||
|
||||
@@ -27,7 +27,7 @@ variables:
|
||||
DEBIAN_X86_64_TEST_ANDROID_TAG: "20240124-split"
|
||||
DEBIAN_X86_64_TEST_GL_TAG: "20240129-piglit-e931"
|
||||
DEBIAN_X86_64_TEST_VK_TAG: "20240129-piglit-e931"
|
||||
ALPINE_X86_64_BUILD_TAG: "20230107-libdrm"
|
||||
ALPINE_X86_64_BUILD_TAG: "20240208-libclc-5"
|
||||
ALPINE_X86_64_LAVA_SSH_TAG: "20230626-v1"
|
||||
FEDORA_X86_64_BUILD_TAG: "20240123-teflon-3"
|
||||
KERNEL_ROOTFS_TAG: "20240129-piglit-e931"
|
||||
|
@@ -2,7 +2,7 @@
|
||||
# shellcheck disable=SC1003 # works for us now...
|
||||
# shellcheck disable=SC2086 # we want word splitting
|
||||
|
||||
section_switch meson-configure "meson: configure"
|
||||
section_switch meson-cross-file "meson: cross file generate"
|
||||
|
||||
set -e
|
||||
set -o xtrace
|
||||
@@ -49,6 +49,38 @@ if [ -n "$CROSS" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$HOST_BUILD_OPTIONS" ]; then
|
||||
section_switch meson-host-configure "meson: host configure"
|
||||
|
||||
# Stash the PKG_CONFIG_LIBDIR so that we can use the base x86_64 image
|
||||
# libraries.
|
||||
tmp_pkg_config_libdir=$PKG_CONFIG_LIBDIR
|
||||
unset PKG_CONFIG_LIBDIR
|
||||
|
||||
# Compile a host version for the few tools we need for a cross build (for
|
||||
# now just intel-clc)
|
||||
rm -rf _host_build
|
||||
meson setup _host_build \
|
||||
--native-file=native.file \
|
||||
-D prefix=/usr \
|
||||
-D libdir=lib \
|
||||
${HOST_BUILD_OPTIONS}
|
||||
|
||||
pushd _host_build
|
||||
|
||||
section_switch meson-host-build "meson: host build"
|
||||
|
||||
meson configure
|
||||
ninja
|
||||
ninja install
|
||||
popd
|
||||
|
||||
# Restore PKG_CONFIG_LIBDIR
|
||||
if [ -n "$tmp_pkg_config_libdir" ]; then
|
||||
export PKG_CONFIG_LIBDIR=$tmp_pkg_config_libdir
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only use GNU time if available, not any shell built-in command
|
||||
case $CI_JOB_NAME in
|
||||
# ASAN leak detection is incompatible with strace
|
||||
@@ -66,6 +98,8 @@ case $CI_JOB_NAME in
|
||||
;;
|
||||
esac
|
||||
|
||||
section_switch meson-configure "meson: configure"
|
||||
|
||||
rm -rf _build
|
||||
meson setup _build \
|
||||
--native-file=native.file \
|
||||
|
Reference in New Issue
Block a user