diff --git a/.gitlab-ci/build/gitlab-ci.yml b/.gitlab-ci/build/gitlab-ci.yml index 6908dab45f5..2a12acb3907 100644 --- a/.gitlab-ci/build/gitlab-ci.yml +++ b/.gitlab-ci/build/gitlab-ci.yml @@ -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: diff --git a/.gitlab-ci/container/alpine/x86_64_build.sh b/.gitlab-ci/container/alpine/x86_64_build.sh index 24fd792232e..bcc7732a5ef 100644 --- a/.gitlab-ci/container/alpine/x86_64_build.sh +++ b/.gitlab-ci/container/alpine/x86_64_build.sh @@ -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 diff --git a/.gitlab-ci/container/cross_build.sh b/.gitlab-ci/container/cross_build.sh index 8d22ba0d5a0..6fe2fc210d3 100644 --- a/.gitlab-ci/container/cross_build.sh +++ b/.gitlab-ci/container/cross_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 diff --git a/.gitlab-ci/container/debian/x86_64_build-base.sh b/.gitlab-ci/container/debian/x86_64_build-base.sh index 641fa63b648..f4ece170084 100644 --- a/.gitlab-ci/container/debian/x86_64_build-base.sh +++ b/.gitlab-ci/container/debian/x86_64_build-base.sh @@ -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 diff --git a/.gitlab-ci/container/debian/x86_64_build.sh b/.gitlab-ci/container/debian/x86_64_build.sh index d8c43e2146b..258ae3f612b 100644 --- a/.gitlab-ci/container/debian/x86_64_build.sh +++ b/.gitlab-ci/container/debian/x86_64_build.sh @@ -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 diff --git a/.gitlab-ci/image-tags.yml b/.gitlab-ci/image-tags.yml index 9c3404d4249..74322a8e690 100644 --- a/.gitlab-ci/image-tags.yml +++ b/.gitlab-ci/image-tags.yml @@ -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" diff --git a/.gitlab-ci/meson/build.sh b/.gitlab-ci/meson/build.sh index fe62941d7c8..894aa5e94da 100755 --- a/.gitlab-ci/meson/build.sh +++ b/.gitlab-ci/meson/build.sh @@ -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 \