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 b_sanitize=address
|
||||||
-D valgrind=disabled
|
-D valgrind=disabled
|
||||||
-D tools=dlclose-skip
|
-D tools=dlclose-skip
|
||||||
|
-D intel-clc=system
|
||||||
S3_ARTIFACT_NAME: ""
|
S3_ARTIFACT_NAME: ""
|
||||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
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:
|
debian-testing-msan:
|
||||||
# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
|
# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
|
||||||
@@ -116,6 +130,7 @@ debian-testing-msan:
|
|||||||
EXTRA_OPTION:
|
EXTRA_OPTION:
|
||||||
-D b_sanitize=memory
|
-D b_sanitize=memory
|
||||||
-D b_lundef=false
|
-D b_lundef=false
|
||||||
|
-D intel-clc=system
|
||||||
S3_ARTIFACT_NAME: ""
|
S3_ARTIFACT_NAME: ""
|
||||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||||
# Don't run all the tests yet:
|
# Don't run all the tests yet:
|
||||||
@@ -124,6 +139,19 @@ debian-testing-msan:
|
|||||||
MESON_TEST_ARGS: "--suite glcpp --suite format"
|
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"
|
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
|
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:
|
debian-build-testing:
|
||||||
extends: .meson-build
|
extends: .meson-build
|
||||||
@@ -195,6 +223,7 @@ debian-release:
|
|||||||
-D osmesa=true
|
-D osmesa=true
|
||||||
-D tools=all
|
-D tools=all
|
||||||
-D intel-clc=enabled
|
-D intel-clc=enabled
|
||||||
|
-D intel-rt=enabled
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
BUILDTYPE: "release"
|
BUILDTYPE: "release"
|
||||||
S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
|
S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
|
||||||
@@ -219,7 +248,7 @@ alpine-build-testing:
|
|||||||
-D egl=enabled
|
-D egl=enabled
|
||||||
-D glvnd=false
|
-D glvnd=false
|
||||||
-D platforms=wayland
|
-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_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||||
GALLIUM_ST: >
|
GALLIUM_ST: >
|
||||||
-D dri3=enabled
|
-D dri3=enabled
|
||||||
@@ -265,7 +294,7 @@ fedora-release:
|
|||||||
-D selinux=true
|
-D selinux=true
|
||||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D intel-clc=enabled
|
-D intel-rt=enabled
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
-D teflon=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"
|
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 platform-sdk-version=33
|
||||||
-D valgrind=disabled
|
-D valgrind=disabled
|
||||||
-D android-libbacktrace=disabled
|
-D android-libbacktrace=disabled
|
||||||
|
-D intel-clc=system
|
||||||
GALLIUM_ST: >
|
GALLIUM_ST: >
|
||||||
-D dri3=disabled
|
-D dri3=disabled
|
||||||
-D gallium-vdpau=disabled
|
-D gallium-vdpau=disabled
|
||||||
@@ -325,8 +355,19 @@ debian-android:
|
|||||||
-D gallium-xa=disabled
|
-D gallium-xa=disabled
|
||||||
-D gallium-nine=false
|
-D gallium-nine=false
|
||||||
-D gallium-rusticl=false
|
-D gallium-rusticl=false
|
||||||
LLVM_VERSION: ""
|
LLVM_VERSION: "15"
|
||||||
PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
|
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
|
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
||||||
script:
|
script:
|
||||||
@@ -507,6 +548,7 @@ debian-clang:
|
|||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D build-aco-tests=true
|
-D build-aco-tests=true
|
||||||
-D intel-clc=enabled
|
-D intel-clc=enabled
|
||||||
|
-D intel-rt=enabled
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
-D teflon=true
|
-D teflon=true
|
||||||
CC: clang-${LLVM_VERSION}
|
CC: clang-${LLVM_VERSION}
|
||||||
@@ -579,7 +621,7 @@ debian-vulkan:
|
|||||||
EXTRA_OPTION: >
|
EXTRA_OPTION: >
|
||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D build-aco-tests=true
|
-D build-aco-tests=true
|
||||||
-D intel-clc=disabled
|
-D intel-rt=disabled
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
|
|
||||||
debian-x86_32:
|
debian-x86_32:
|
||||||
@@ -594,6 +636,18 @@ debian-x86_32:
|
|||||||
LLVM_VERSION: 15
|
LLVM_VERSION: 15
|
||||||
EXTRA_OPTION: >
|
EXTRA_OPTION: >
|
||||||
-D vulkan-layers=device-select,overlay
|
-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:
|
debian-s390x:
|
||||||
extends:
|
extends:
|
||||||
|
@@ -8,6 +8,8 @@
|
|||||||
set -e
|
set -e
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
|
export LLVM_VERSION="${LLVM_VERSION:=16}"
|
||||||
|
|
||||||
EPHEMERAL=(
|
EPHEMERAL=(
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -16,6 +18,7 @@ DEPS=(
|
|||||||
bash
|
bash
|
||||||
bison
|
bison
|
||||||
ccache
|
ccache
|
||||||
|
clang16-dev
|
||||||
cmake
|
cmake
|
||||||
clang-dev
|
clang-dev
|
||||||
coreutils
|
coreutils
|
||||||
@@ -27,6 +30,7 @@ DEPS=(
|
|||||||
gettext
|
gettext
|
||||||
glslang
|
glslang
|
||||||
linux-headers
|
linux-headers
|
||||||
|
llvm16-static
|
||||||
llvm16-dev
|
llvm16-dev
|
||||||
meson
|
meson
|
||||||
expat-dev
|
expat-dev
|
||||||
@@ -48,6 +52,10 @@ DEPS=(
|
|||||||
|
|
||||||
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
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
|
. .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
|
# We don't need clang-format for the crossbuilds, but the installed amd64
|
||||||
# package will conflict with libclang. Uninstall clang-format (and its
|
# package will conflict with libclang. Uninstall clang-format (and its
|
||||||
# problematic dependency) to fix.
|
# 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
|
# llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only
|
||||||
# with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
|
# with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
|
||||||
|
@@ -25,6 +25,7 @@ DEPS=(
|
|||||||
bison
|
bison
|
||||||
ccache
|
ccache
|
||||||
curl
|
curl
|
||||||
|
"clang-${LLVM_VERSION}"
|
||||||
"clang-format-${LLVM_VERSION}"
|
"clang-format-${LLVM_VERSION}"
|
||||||
dpkg-cross
|
dpkg-cross
|
||||||
findutils
|
findutils
|
||||||
@@ -86,6 +87,10 @@ apt-get update
|
|||||||
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||||
$EXTRA_LOCAL_PACKAGES
|
$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
|
# 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
|
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 ..
|
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
||||||
rm -rf $XORGMACROS_VERSION
|
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-wayland.sh
|
||||||
|
|
||||||
. .gitlab-ci/container/build-shader-db.sh
|
. .gitlab-ci/container/build-shader-db.sh
|
||||||
|
@@ -13,10 +13,10 @@
|
|||||||
|
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
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_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"
|
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_ANDROID_TAG: "20240124-split"
|
||||||
DEBIAN_X86_64_TEST_GL_TAG: "20240129-piglit-e931"
|
DEBIAN_X86_64_TEST_GL_TAG: "20240129-piglit-e931"
|
||||||
DEBIAN_X86_64_TEST_VK_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"
|
ALPINE_X86_64_LAVA_SSH_TAG: "20230626-v1"
|
||||||
FEDORA_X86_64_BUILD_TAG: "20240123-teflon-3"
|
FEDORA_X86_64_BUILD_TAG: "20240123-teflon-3"
|
||||||
KERNEL_ROOTFS_TAG: "20240129-piglit-e931"
|
KERNEL_ROOTFS_TAG: "20240129-piglit-e931"
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
# shellcheck disable=SC1003 # works for us now...
|
# shellcheck disable=SC1003 # works for us now...
|
||||||
# shellcheck disable=SC2086 # we want word splitting
|
# 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 -e
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
@@ -49,6 +49,38 @@ if [ -n "$CROSS" ]; then
|
|||||||
fi
|
fi
|
||||||
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
|
# Only use GNU time if available, not any shell built-in command
|
||||||
case $CI_JOB_NAME in
|
case $CI_JOB_NAME in
|
||||||
# ASAN leak detection is incompatible with strace
|
# ASAN leak detection is incompatible with strace
|
||||||
@@ -66,6 +98,8 @@ case $CI_JOB_NAME in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
section_switch meson-configure "meson: configure"
|
||||||
|
|
||||||
rm -rf _build
|
rm -rf _build
|
||||||
meson setup _build \
|
meson setup _build \
|
||||||
--native-file=native.file \
|
--native-file=native.file \
|
||||||
|
Reference in New Issue
Block a user