From bc81ad83e2a4b0e39fc31968487ec0b8fa93b4e4 Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 21 Jun 2025 06:54:51 +0100 Subject: [PATCH] media-libs/vulkan-layers: wire up (restricted) tests There's a gazillion segfaults that need investigation, so wire up the tests but keep them restricted for now. Signed-off-by: Sam James --- ...kan-layers-1.4.313.0-tests-no-static.patch | 40 +++++++++++++++++++ .../vulkan-layers-1.4.313.0.ebuild | 10 ++++- .../vulkan-layers/vulkan-layers-9999.ebuild | 10 ++++- 3 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 media-libs/vulkan-layers/files/vulkan-layers-1.4.313.0-tests-no-static.patch diff --git a/media-libs/vulkan-layers/files/vulkan-layers-1.4.313.0-tests-no-static.patch b/media-libs/vulkan-layers/files/vulkan-layers-1.4.313.0-tests-no-static.patch new file mode 100644 index 0000000000000..601f459f8482a --- /dev/null +++ b/media-libs/vulkan-layers/files/vulkan-layers-1.4.313.0-tests-no-static.patch @@ -0,0 +1,40 @@ +This is a revert of upstream commit b5c2e38840480e3653360127f18459a907c75f5c to allow +building tests without building dev-util/spirv-tools with static-libs. +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -320,13 +320,11 @@ endif() + + find_package(GTest CONFIG) + find_package(glslang CONFIG) +-find_package(SPIRV-Tools CONFIG) + + target_link_libraries(vk_layer_validation_tests PRIVATE + VkLayer_utils + glslang::SPIRV + glslang::SPVRemapper +- SPIRV-Tools-static + SPIRV-Headers::SPIRV-Headers + GTest::gtest + GTest::gtest_main +@@ -347,6 +345,21 @@ target_include_directories(vk_layer_validation_tests PRIVATE + ${VVL_SOURCE_DIR}/layers/external + ) + ++find_package(SPIRV-Tools CONFIG QUIET) ++ ++# See https://github.com/KhronosGroup/SPIRV-Tools/issues/3909 for background on this. ++# The targets available from SPIRV-Tools change depending on how SPIRV_TOOLS_BUILD_STATIC is set. ++# Try to handle all possible combinations so that we work with externally built packages. ++if (TARGET SPIRV-Tools) ++ target_link_libraries(vk_layer_validation_tests PRIVATE SPIRV-Tools) ++elseif(TARGET SPIRV-Tools-static) ++ target_link_libraries(vk_layer_validation_tests PRIVATE SPIRV-Tools-static) ++elseif(TARGET SPIRV-Tools-shared) ++ target_link_libraries(vk_layer_validation_tests PRIVATE SPIRV-Tools-shared) ++else() ++ message(FATAL_ERROR "Cannot determine SPIRV-Tools target name") ++endif() ++ + # More details in tests/android/mock/README.md + option(VVL_MOCK_ANDROID "Enable building for Android on desktop for testing with MockICD setup") + if(VVL_MOCK_ANDROID) diff --git a/media-libs/vulkan-layers/vulkan-layers-1.4.313.0.ebuild b/media-libs/vulkan-layers/vulkan-layers-1.4.313.0.ebuild index a9bc67b960058..f73a7e9ec03cb 100644 --- a/media-libs/vulkan-layers/vulkan-layers-1.4.313.0.ebuild +++ b/media-libs/vulkan-layers/vulkan-layers-1.4.313.0.ebuild @@ -22,7 +22,9 @@ HOMEPAGE="https://github.com/KhronosGroup/Vulkan-ValidationLayers" LICENSE="Apache-2.0" SLOT="0" -IUSE="wayland X" +IUSE="wayland test X" +# Many segfaults as of 1.4.313.0 +RESTRICT="!test? ( test ) test" RDEPEND="~dev-util/spirv-tools-${PV}[${MULTILIB_USEDEP}]" DEPEND="${RDEPEND} @@ -40,6 +42,10 @@ DEPEND="${RDEPEND} QA_SONAME="/usr/lib[^/]*/libVkLayer_khronos_validation.so" +PATCHES=( + "${FILESDIR}"/${PN}-1.4.313.0-tests-no-static.patch +) + multilib_src_configure() { local mycmakeargs=( -DCMAKE_C_FLAGS="${CFLAGS} -DNDEBUG" @@ -49,7 +55,7 @@ multilib_src_configure() { -DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland) -DBUILD_WSI_XCB_SUPPORT=$(usex X) -DBUILD_WSI_XLIB_SUPPORT=$(usex X) - -DBUILD_TESTS=OFF + -DBUILD_TESTS=$(usex test) ) cmake_src_configure } diff --git a/media-libs/vulkan-layers/vulkan-layers-9999.ebuild b/media-libs/vulkan-layers/vulkan-layers-9999.ebuild index aead30e6a6fe1..6c18930cbc0b7 100644 --- a/media-libs/vulkan-layers/vulkan-layers-9999.ebuild +++ b/media-libs/vulkan-layers/vulkan-layers-9999.ebuild @@ -22,7 +22,9 @@ HOMEPAGE="https://github.com/KhronosGroup/Vulkan-ValidationLayers" LICENSE="Apache-2.0" SLOT="0" -IUSE="wayland X" +IUSE="wayland test X" +# Many segfaults as of 1.4.313.0 +RESTRICT="!test? ( test ) test" RDEPEND="~dev-util/spirv-tools-${PV}[${MULTILIB_USEDEP}]" DEPEND="${RDEPEND} @@ -40,6 +42,10 @@ DEPEND="${RDEPEND} QA_SONAME="/usr/lib[^/]*/libVkLayer_khronos_validation.so" +PATCHES=( + "${FILESDIR}"/${PN}-1.4.313.0-tests-no-static.patch +) + multilib_src_configure() { local mycmakeargs=( -DCMAKE_C_FLAGS="${CFLAGS} -DNDEBUG" @@ -49,7 +55,7 @@ multilib_src_configure() { -DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland) -DBUILD_WSI_XCB_SUPPORT=$(usex X) -DBUILD_WSI_XLIB_SUPPORT=$(usex X) - -DBUILD_TESTS=OFF + -DBUILD_TESTS=$(usex test) ) cmake_src_configure }