From a456e4095d6203bf034573b82fa238d3229429f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Chojnowski?= Date: Sat, 7 Feb 2026 10:54:37 +0100 Subject: [PATCH] vk-bootstrap: 0.7 -> 1.4.335 Motivation: the package is outdated by 3 years. Things done: 1. Bump the version (to match the current version of Vulkan headers in nixpkgs). 2. Update the catch2 dependency to catch2_3, following upstream. 3. Upstream uses FetchContent to fetch catch2 and glfw for testing. Patch CMakeLists.txt so that system packages are used instead. 4. Remove the [out, dev] split. It's pointless because this is a static library. 5. Enable checkPhase. Comment out a test which uses FetchContent. Fix CMAKE_PREFIX_PATH in one of the integration tests. --- .../0001-disable-fetch-content.patch | 14 +++++++ .../vk-bootstrap/0002-fix-install-tests.patch | 38 ++++++++++++++++++ pkgs/by-name/vk/vk-bootstrap/package.nix | 40 +++++++++---------- 3 files changed, 72 insertions(+), 20 deletions(-) create mode 100644 pkgs/by-name/vk/vk-bootstrap/0001-disable-fetch-content.patch create mode 100644 pkgs/by-name/vk/vk-bootstrap/0002-fix-install-tests.patch diff --git a/pkgs/by-name/vk/vk-bootstrap/0001-disable-fetch-content.patch b/pkgs/by-name/vk/vk-bootstrap/0001-disable-fetch-content.patch new file mode 100644 index 000000000000..803e0f449978 --- /dev/null +++ b/pkgs/by-name/vk/vk-bootstrap/0001-disable-fetch-content.patch @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7ec2d39..f52313d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -129,7 +128,8 @@ if(VK_BOOTSTRAP_TEST) + endif() + endif() + +- add_subdirectory(ext) ++ find_package(glfw3) ++ find_package(Catch2 3) + add_subdirectory(tests) + add_subdirectory(example) + endif () diff --git a/pkgs/by-name/vk/vk-bootstrap/0002-fix-install-tests.patch b/pkgs/by-name/vk/vk-bootstrap/0002-fix-install-tests.patch new file mode 100644 index 000000000000..a23bf2b783e2 --- /dev/null +++ b/pkgs/by-name/vk/vk-bootstrap/0002-fix-install-tests.patch @@ -0,0 +1,38 @@ +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index 0b4f2e1..4dd1fe0 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -58,14 +58,16 @@ list(APPEND CMAKE_MODULE_PATH ${Catch2_SOURCE_DIR}/extras) + include(Catch) + catch_discover_tests(vk-bootstrap-test) + +-# Test add_subdirectory support using fetch content vulkan headers +-add_test(NAME integration.add_subdirectory.fetch_content_vulkan_headers +- COMMAND ${CMAKE_CTEST_COMMAND} +- --build-and-test ${CMAKE_CURRENT_LIST_DIR}/integration +- ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory/fetch_content_vulkan_headers +- --build-generator ${CMAKE_GENERATOR} +- --build-options -DADD_SUBDIRECTORY_TESTING=ON -DVULKAN_HEADER_VERSION_GIT_TAG=${VK_BOOTSTRAP_SOURCE_HEADER_VERSION_GIT_TAG} +-) ++# Commented out for nixpkgs due to external dependencies. ++# ++# # Test add_subdirectory support using fetch content vulkan headers ++# add_test(NAME integration.add_subdirectory.fetch_content_vulkan_headers ++# COMMAND ${CMAKE_CTEST_COMMAND} ++# --build-and-test ${CMAKE_CURRENT_LIST_DIR}/integration ++# ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory/fetch_content_vulkan_headers ++# --build-generator ${CMAKE_GENERATOR} ++# --build-options -DADD_SUBDIRECTORY_TESTING=ON -DVULKAN_HEADER_VERSION_GIT_TAG=${VK_BOOTSTRAP_SOURCE_HEADER_VERSION_GIT_TAG} ++# ) + + get_target_property(vulkan_headers_include_dir Vulkan::Headers INTERFACE_INCLUDE_DIRECTORIES) + +@@ -105,7 +107,7 @@ if (VulkanHeaders_FOUND) + --build-and-test ${CMAKE_CURRENT_LIST_DIR}/integration + ${CMAKE_CURRENT_BINARY_DIR}/find_package/find_package_vulkan_headers + --build-generator ${CMAKE_GENERATOR} +- --build-options -DFIND_PACKAGE_TESTING=ON "-DCMAKE_PREFIX_PATH=${vulkan_headers_install_dir};${test_install_dir}" ++ --build-options -DFIND_PACKAGE_TESTING=ON "-DCMAKE_PREFIX_PATH=${vulkan_headers_install_dir};${test_install_dir};${CMAKE_INSTALL_PREFIX}" + ) + + set_tests_properties(integration.find_package.find_package_vulkan_headers PROPERTIES DEPENDS integration.install) diff --git a/pkgs/by-name/vk/vk-bootstrap/package.nix b/pkgs/by-name/vk/vk-bootstrap/package.nix index 64bbd45289cd..7952cc2c1063 100644 --- a/pkgs/by-name/vk/vk-bootstrap/package.nix +++ b/pkgs/by-name/vk/vk-bootstrap/package.nix @@ -5,40 +5,40 @@ cmake, vulkan-headers, glfw, - catch2, + catch2_3, }: stdenv.mkDerivation (finalAttrs: { pname = "vk-bootstrap"; - version = "0.7"; - outputs = [ - "out" - "dev" - ]; + version = "1.4.335"; src = fetchFromGitHub { owner = "charles-lunarg"; repo = "vk-bootstrap"; rev = "v${finalAttrs.version}"; - hash = "sha256-X3ANqfplrCF1R494+H5/plcwMH7rbW6zpLA4MZrYaoE="; + hash = "sha256-WFROoVAOl4HBNb/a8rx522Zz2LP4m2Zk03jckWxv7w0="; }; - postPatch = '' - # Upstream uses cmake FetchContent to resolve glfw and catch2 - # needed for examples and tests - sed -i 's=add_subdirectory(ext)==g' CMakeLists.txt - sed -i 's=Catch2==g' tests/CMakeLists.txt - ''; - - nativeBuildInputs = [ cmake ]; - buildInputs = [ - vulkan-headers - glfw - catch2 + patches = [ + ./0001-disable-fetch-content.patch + ./0002-fix-install-tests.patch ]; + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + vulkan-headers + ]; + + checkInputs = [ + glfw + catch2_3 + ]; + + doCheck = true; + cmakeFlags = [ - "-DVK_BOOTSTRAP_VULKAN_HEADER_DIR=${vulkan-headers}/include" + "-DVK_BOOTSTRAP_INSTALL=1" ]; meta = {