Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] vtk: update to 9.3.1.
@ 2024-09-30 22:52 Calandracas606
  2024-10-01  1:28 ` [PR PATCH] [Updated] " Calandracas606
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Calandracas606 @ 2024-09-30 22:52 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1255 bytes --]

There is a new pull request by Calandracas606 against master on the void-packages repository

https://github.com/Calandracas606/void-packages vtk
https://github.com/void-linux/void-packages/pull/52432

vtk: update to 9.3.1.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **briefly**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, aarch64-musl
- I built this PR locally for these architectures:
  - x86_64
  - x86_64-musl
  - aarch64

nocross since depends on hdf5 which is nocross


A patch file from https://github.com/void-linux/void-packages/pull/52432.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-vtk-52432.patch --]
[-- Type: text/x-diff, Size: 25866 bytes --]

From 4ba5f3d31b04b275fcfbfae15420ea61d5e89e32 Mon Sep 17 00:00:00 2001
From: Daniel Martinez <danielmartinez@cock.li>
Date: Mon, 30 Sep 2024 18:42:57 -0400
Subject: [PATCH] vtk: update to 9.3.1.

---
 srcpkgs/vtk/patches/0001-stat64.patch    | 390 +++++++++++++++++++++++
 srcpkgs/vtk/patches/0002-stat64.patch    | 170 ++++++++++
 srcpkgs/vtk/patches/gcc13.patch          |  13 -
 srcpkgs/vtk/patches/vtkioss-unistd.patch |   6 +-
 srcpkgs/vtk/template                     |   7 +-
 5 files changed, 567 insertions(+), 19 deletions(-)
 create mode 100644 srcpkgs/vtk/patches/0001-stat64.patch
 create mode 100644 srcpkgs/vtk/patches/0002-stat64.patch
 delete mode 100644 srcpkgs/vtk/patches/gcc13.patch

diff --git a/srcpkgs/vtk/patches/0001-stat64.patch b/srcpkgs/vtk/patches/0001-stat64.patch
new file mode 100644
index 00000000000000..aa673d2b6e9266
--- /dev/null
+++ b/srcpkgs/vtk/patches/0001-stat64.patch
@@ -0,0 +1,390 @@
+From 748572894e96b1eab4089da912441ae1b588b2aa Mon Sep 17 00:00:00 2001
+From: Jaswant Panchumarti <jaswant.panchumarti@kitware.com>
+Date: Wed, 30 Aug 2023 15:24:16 -0400
+Subject: [PATCH] emsdk 3.1.45: get code to compile
+
+- closes vtk/vtk#19060.
+- disable IOExportGL2PS for WebAssembly.
+- handle stat64 vs stat for emscripten in LSDyna and Ensight readers.
+---
+ .../docs/advanced/build_wasm_emscripten.md    | 10 +++
+ .../release/dev/update-dawn-webgpu.md         |  6 ++
+ IO/EnSight/vtkEnSight6BinaryReader.cxx        |  8 ++
+ IO/EnSight/vtkEnSightGoldBinaryReader.cxx     |  8 ++
+ IO/ExportGL2PS/vtk.module                     |  2 +-
+ IO/LSDyna/LSDynaFamily.cxx                    |  8 ++
+ Rendering/WebGPU/vtkWGPUContext.cxx           | 77 ++++++-------------
+ Rendering/WebGPU/vtkWebGPUActor.cxx           |  5 ++
+ .../WebGPU/vtkWebGPUInternalsShaderModule.cxx |  2 +-
+ Rendering/WebGPU/vtkWebGPURenderWindow.cxx    | 38 ++++++---
+ 10 files changed, 98 insertions(+), 66 deletions(-)
+ create mode 100644 Documentation/release/dev/update-dawn-webgpu.md
+
+diff --git a/Documentation/docs/advanced/build_wasm_emscripten.md b/Documentation/docs/advanced/build_wasm_emscripten.md
+index ceb50ce1115..c58b1a269c3 100644
+--- a/Documentation/docs/advanced/build_wasm_emscripten.md
++++ b/Documentation/docs/advanced/build_wasm_emscripten.md
+@@ -54,6 +54,16 @@ For this guide, you will need the following:
+ These instructions use a specific convention for the source, build and install directories that is appropriate when building VTK for wasm inside
+ a docker container. Please replace these _root-directory_ paths if VTK is being built outside a docker container.
+ 
++### Install emscripten ports (IMPORTANT!)
++Emscripten uses SDL2 to connect user input events to the browser event subsystem. The SDL2 port
++will need to be built if this is the first time you downloaded the EMSDK. The `embuilder` script
++will be on the path if you installed and activated EMSDK as described in the prerequisites.
++```bash
++$ embuilder build sdl2
++```
++
++### Build VTK
++
+ 1. Configure the project with CMake. `emcmake` tells CMake to use the `emscripten` toolchain for cross compilation.
+ 
+ ```bash
+diff --git a/Documentation/release/dev/update-dawn-webgpu.md b/Documentation/release/dev/update-dawn-webgpu.md
+new file mode 100644
+index 00000000000..faa8f53bbbe
+--- /dev/null
++++ b/Documentation/release/dev/update-dawn-webgpu.md
+@@ -0,0 +1,6 @@
++# Update Dawn/WebGPU API in the WebGPU backend
++
++- `WGPUShaderModuleWGSLDescriptor::source` has now been renamed to `WGPUShaderModuleWGSLDescriptor::code`.
++- `SetDeviceLostCallback`(deprecated by webgpu) has been removed in favor of `WGPUDeviceDescriptor::deviceLostCallback` member.
++- `dawn::native::GetAdapter` (deprecated by dawn) has now been renamed to `dawn::native::EnumerateAdapters`.
++- `wgpu::RenderBundleEncoder::colorFormatsCount` (deprecated by webgpu) has now been renamed to `colorFormatCount`. However, emscripten still uses the version of webgpu which shipped with `colorFormatsCount`, so in webassembly, `colorFormatsCount` continues to be used. We will change this after emscripten updates it's webgpu headers.
+diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+index 2cd04c9755b..167e63efd41 100644
+--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
++++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+@@ -31,6 +31,14 @@
+ // The BSDs use stat().
+ #define VTK_STAT_STRUCT struct stat
+ #define VTK_STAT_FUNC stat
++#elif defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
++#define VTK_STAT_STRUCT struct stat64
++#define VTK_STAT_FUNC stat64
++#else
++#define VTK_STAT_STRUCT struct stat
++#define VTK_STAT_FUNC stat
++#endif
+ #else
+ // here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+ // us on POSIX without resorting to using stat64.
+diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+index e3c81bd5e8c..c374f9879bf 100644
+--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
++++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+@@ -37,6 +37,14 @@
+ // The BSDs use stat().
+ #define VTK_STAT_STRUCT struct stat
+ #define VTK_STAT_FUNC stat
++#elif defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
++#define VTK_STAT_STRUCT struct stat64
++#define VTK_STAT_FUNC stat64
++#else
++#define VTK_STAT_STRUCT struct stat
++#define VTK_STAT_FUNC stat
++#endif
+ #else
+ // here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+ // us on POSIX without resorting to using stat64.
+diff --git a/IO/ExportGL2PS/vtk.module b/IO/ExportGL2PS/vtk.module
+index d72b75b482e..97038c7fb17 100644
+--- a/IO/ExportGL2PS/vtk.module
++++ b/IO/ExportGL2PS/vtk.module
+@@ -3,7 +3,7 @@ NAME
+ LIBRARY_NAME
+   vtkIOExportGL2PS
+ CONDITION
+-  NOT ANDROID AND NOT APPLE_IOS AND NOT VTK_OPENGL_USE_GLES
++  NOT ANDROID AND NOT APPLE_IOS AND NOT EMSCRIPTEN AND NOT VTK_OPENGL_USE_GLES
+ IMPLEMENTABLE
+ IMPLEMENTS
+   VTK::IOExportGL2PS
+diff --git a/IO/LSDyna/LSDynaFamily.cxx b/IO/LSDyna/LSDynaFamily.cxx
+index 15755d06840..fdb914ab6fa 100644
+--- a/IO/LSDyna/LSDynaFamily.cxx
++++ b/IO/LSDyna/LSDynaFamily.cxx
+@@ -24,8 +24,16 @@ namespace
+ #if (VTK_SIZEOF_ID_TYPE == 8) && !defined(_DARWIN_FEATURE_64_BIT_INODE) &&                         \
+   !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+ #ifndef _WIN32
++#if defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
+ #define USE_STAT_64
+ #else
++#define USE_STAT
++#endif
++#else
++#define USE_STAT_64
++#endif
++#else
+ #define USE_WIN_STAT_64
+ #endif
+ #else
+diff --git a/Rendering/WebGPU/vtkWGPUContext.cxx b/Rendering/WebGPU/vtkWGPUContext.cxx
+index d0400786707..b280022873a 100644
+--- a/Rendering/WebGPU/vtkWGPUContext.cxx
++++ b/Rendering/WebGPU/vtkWGPUContext.cxx
+@@ -73,7 +73,7 @@ static void WaitABit()
+ 
+ }
+ namespace vtkWGPUImpl = vtkWGPUEmscriptenImpl;
+-#elif VTK_USE_DAWN_NATIVE
++#elif VTK_USE_DAWN_WEBGPU
+ #include <cstring>
+ #include <dawn/dawn_proc.h>
+ #include <dawn/native/DawnNative.h>
+@@ -88,11 +88,11 @@ static struct
+   struct
+   {
+     DawnProcTable ProcTable;
+-    std::unique_ptr<dawn_native::Instance> Instance = nullptr;
++    std::unique_ptr<dawn::native::Instance> Instance = nullptr;
+   } DawnNativeEntryPoint;
+   struct
+   {
+-    dawn_native::Adapter Handle;
++    dawn::native::Adapter Handle;
+     wgpu::BackendType DawnBackendType;
+     struct
+     {
+@@ -113,10 +113,10 @@ static void Initialize()
+   }
+ 
+   // Set up the native procs for the global proctable
+-  GPUContext.DawnNativeEntryPoint.ProcTable = dawn_native::GetProcs();
++  GPUContext.DawnNativeEntryPoint.ProcTable = dawn::native::GetProcs();
+   dawnProcSetProcs(&GPUContext.DawnNativeEntryPoint.ProcTable);
+   GPUContext.DawnNativeEntryPoint.Instance =
+-    std::unique_ptr<dawn_native::Instance>(new dawn_native::Instance());
++    std::unique_ptr<dawn::native::Instance>(new dawn::native::Instance());
+   GPUContext.DawnNativeEntryPoint.Instance->DiscoverDefaultAdapters();
+   GPUContext.DawnNativeEntryPoint.Instance->EnableBackendValidation(true);
+ 
+@@ -125,16 +125,12 @@ static void Initialize()
+   // are the preferred on their respective platforms, and Vulkan is preferred to
+   // OpenGL
+   GPUContext.Adapter.DawnBackendType =
+-#if defined(VTK_DAWN_ENABLE_BACKEND_D3D12)
++#if defined(_WIN32)
+     wgpu::BackendType::D3D12;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_METAL)
++#elif defined(__APPLE__)
+     wgpu::BackendType::Metal;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_VULKAN)
+-    wgpu::BackendType::Vulkan;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_OPENGL)
+-    wgpu::BackendType::OpenGL;
+ #else
+-#error
++    wgpu::BackendType::Vulkan;
+ #endif
+   GPUContext.Adapter.Handle = nullptr;
+   GPUContext.Initialized = true;
+@@ -159,48 +155,19 @@ static wgpu::Adapter RequestAdapter(const wgpu::RequestAdapterOptions& options)
+ {
+   Initialize();
+ 
+-  // Search available adapters for a good match, in the
+-  // following priority order
+-  std::vector<wgpu::AdapterType> typePriority;
+-  if (options.powerPreference == wgpu::PowerPreference::LowPower)
+-  {
+-    // low power
+-    typePriority = std::vector<wgpu::AdapterType>{
+-      wgpu::AdapterType::IntegratedGPU,
+-      wgpu::AdapterType::DiscreteGPU,
+-      wgpu::AdapterType::CPU,
+-    };
+-  }
+-  else if (options.powerPreference == wgpu::PowerPreference::HighPerformance)
+-  {
+-    // high performance
+-    typePriority = std::vector<wgpu::AdapterType>{
+-      wgpu::AdapterType::DiscreteGPU,
+-      wgpu::AdapterType::IntegratedGPU,
+-      wgpu::AdapterType::CPU,
+-    };
+-  }
+-
+-  std::vector<dawn_native::Adapter> adapters =
+-    GPUContext.DawnNativeEntryPoint.Instance->GetAdapters();
+-  for (auto reqType : typePriority)
++  std::vector<dawn::native::Adapter> adapters =
++    GPUContext.DawnNativeEntryPoint.Instance->EnumerateAdapters(&options);
++  for (const dawn::native::Adapter& adapter : adapters)
+   {
+-    for (const dawn_native::Adapter& adapter : adapters)
+-    {
+-      wgpu::AdapterProperties ap;
+-      adapter.GetProperties(&ap);
+-      if (ap.adapterType == reqType &&
+-        (reqType == wgpu::AdapterType::CPU || ap.backendType == GPUContext.Adapter.DawnBackendType))
+-      {
+-        GPUContext.Adapter.Handle = adapter;
+-        SetAdapterInfo(ap);
+-        std::string msg = vtkfmt::format(
+-          "Selected adapter {0} (device={1:#x} vendor={2:#x} type={3}/{4})", ap.name, ap.deviceID,
+-          ap.vendorID, GPUContext.Adapter.Info.TypeName, GPUContext.Adapter.Info.BackendName);
+-        vtkWGPUContextLog(msg);
+-        return wgpu::Adapter(GPUContext.Adapter.Handle.Get());
+-      }
+-    }
++    GPUContext.Adapter.Handle = adapter;
++    wgpu::AdapterProperties ap;
++    adapter.GetProperties(&ap);
++    SetAdapterInfo(ap);
++    std::string msg = vtkfmt::format(
++      "Selected adapter {0} (device={1:#x} vendor={2:#x} type={3}/{4})", ap.name, ap.deviceID,
++      ap.vendorID, GPUContext.Adapter.Info.TypeName, GPUContext.Adapter.Info.BackendName);
++    vtkWGPUContextLog(msg);
++    return wgpu::Adapter(GPUContext.Adapter.Handle.Get());
+   }
+ 
+   return nullptr;
+@@ -234,7 +201,7 @@ static void LogAvailableAdapters()
+ 
+   std::stringstream msg;
+   msg << "Available adapters:\n";
+-  for (auto&& a : GPUContext.DawnNativeEntryPoint.Instance->GetAdapters())
++  for (auto&& a : GPUContext.DawnNativeEntryPoint.Instance->EnumerateAdapters())
+   {
+     wgpu::AdapterProperties p;
+     a.GetProperties(&p);
+@@ -297,7 +264,7 @@ static const char* AdapterTypeName(wgpu::AdapterType t)
+ }
+ }
+ namespace vtkWGPUImpl = vtkWGPUDawnImpl;
+-#endif // VTK_USE_DAWN_NATIVE
++#endif // VTK_USE_DAWN_WEBGPU
+ 
+ //------------------------------------------------------------------------------
+ void vtkWGPUContext::LogAvailableAdapters()
+diff --git a/Rendering/WebGPU/vtkWebGPUActor.cxx b/Rendering/WebGPU/vtkWebGPUActor.cxx
+index 4121547120e..63aa4d5ede1 100644
+--- a/Rendering/WebGPU/vtkWebGPUActor.cxx
++++ b/Rendering/WebGPU/vtkWebGPUActor.cxx
+@@ -79,7 +79,12 @@ wgpu::RenderBundle vtkWebGPUActor::RenderToBundle(vtkRenderer* ren, vtkMapper* m
+     const int sampleCount = wgpuRenWin->GetMultiSamples() ? wgpuRenWin->GetMultiSamples() : 1;
+ 
+     wgpu::RenderBundleEncoderDescriptor bundleEncDesc;
++#if __EMSCRIPTEN__
++    // FIXME: Update this after emscripten webgpu updates to colorFormatCount
+     bundleEncDesc.colorFormatsCount = 1;
++#else
++    bundleEncDesc.colorFormatCount = 1;
++#endif
+     bundleEncDesc.colorFormats = &colorFormat;
+     bundleEncDesc.depthStencilFormat = wgpuRenWin->GetDepthStencilFormat();
+     bundleEncDesc.sampleCount = sampleCount;
+diff --git a/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx b/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
+index 2d0731ac253..705fb9b59ac 100644
+--- a/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
++++ b/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
+@@ -8,7 +8,7 @@ wgpu::ShaderModule vtkWebGPUInternalsShaderModule::CreateFromWGSL(
+   const wgpu::Device& device, const std::string& source)
+ {
+   wgpu::ShaderModuleWGSLDescriptor wgslDesc;
+-  wgslDesc.source = source.c_str();
++  wgslDesc.code = source.c_str();
+ 
+   wgpu::ShaderModuleDescriptor descriptor;
+   descriptor.nextInChain = &wgslDesc;
+diff --git a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
+index f0e824f0e54..95a7d7fd605 100644
+--- a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
++++ b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
+@@ -61,8 +61,9 @@ void device_lost_callback(WGPUDeviceLostReason reason, char const* message, void
+     default:
+       reason_type_lbl = "Unknown";
+   }
+-  vtkErrorWithObjectMacro(reinterpret_cast<vtkObject*>(self),
+-    << "Device lost! Reason : " << message << " Reason Type: " << reason_type_lbl);
++  auto renWin = vtkRenderWindow::SafeDownCast(reinterpret_cast<vtkObject*>(self));
++  vtkWarningWithObjectMacro(
++    renWin, << "Device lost! Reason : " << message << " Reason Type: " << reason_type_lbl);
+ }
+ 
+ struct PixelReadDescriptor
+@@ -136,6 +137,8 @@ bool vtkWebGPURenderWindow::WGPUInit()
+   this->Adapter = vtkWGPUContext::RequestAdapter(options);
+   wgpu::DeviceDescriptor deviceDescriptor = {};
+   deviceDescriptor.label = "vtkWebGPURenderWindow::WGPUInit";
++  deviceDescriptor.deviceLostCallback = &device_lost_callback;
++  deviceDescriptor.deviceLostUserdata = this;
+   ///@{ TODO: Populate feature requests
+   // ...
+   ///@}
+@@ -150,7 +153,6 @@ bool vtkWebGPURenderWindow::WGPUInit()
+   }
+   // install error handler
+   this->Device.SetUncapturedErrorCallback(&::print_wgpu_error, this);
+-  this->Device.SetDeviceLostCallback(&::device_lost_callback, this);
+   ///@}
+   return true;
+ }
+@@ -161,7 +163,6 @@ void vtkWebGPURenderWindow::WGPUFinalize()
+   vtkDebugMacro(<< __func__ << " WGPUInitialized=" << this->WGPUInitialized);
+   this->DestroyDepthStencilTexture();
+   this->DestroySwapChain();
+-  this->Device.SetDeviceLostCallback(nullptr, nullptr);
+   this->Device = nullptr;
+ }
+ 
+@@ -586,18 +587,35 @@ void vtkWebGPURenderWindow::ReadPixels()
+   this->BufferMapReadContext.src = this->ColorAttachment.OffscreenBuffer;
+   this->BufferMapReadContext.size = this->ColorAttachment.OffscreenBuffer.GetSize();
+   this->BufferMapReadContext.dst = this->CachedPixelBytes;
++  this->BufferMapReadContext.window = this;
+ 
+   auto onBufferMapped = [](WGPUBufferMapAsyncStatus status, void* userdata) {
+     auto ctx = reinterpret_cast<MappingContext*>(userdata);
+     switch (status)
+     {
+-      case WGPUBufferMapAsyncStatus_DestroyedBeforeCallback:
++      case WGPUBufferMapAsyncStatus_ValidationError:
++        vtkErrorWithObjectMacro(ctx->window, << "Validation error occurred");
++        break;
++      case WGPUBufferMapAsyncStatus_Unknown:
++        vtkErrorWithObjectMacro(ctx->window, << "Unknown error occurred");
++        break;
+       case WGPUBufferMapAsyncStatus_DeviceLost:
+-      case WGPUBufferMapAsyncStatus_Error:
++        vtkErrorWithObjectMacro(ctx->window, << "Device lost!");
++        break;
++      case WGPUBufferMapAsyncStatus_DestroyedBeforeCallback:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer destroyed before callback");
++        break;
+       case WGPUBufferMapAsyncStatus_UnmappedBeforeCallback:
+-      case WGPUBufferMapAsyncStatus_Unknown:
+-      default:
+-        assert(false);
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer unmapped before callback");
++        break;
++      case WGPUBufferMapAsyncStatus_MappingAlreadyPending:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer already has a mapping pending completion");
++        break;
++      case WGPUBufferMapAsyncStatus_OffsetOutOfRange:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer offset out of range");
++        break;
++      case WGPUBufferMapAsyncStatus_SizeOutOfRange:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer size out of range");
+         break;
+       case WGPUBufferMapAsyncStatus_Success:
+       {
+@@ -611,6 +629,8 @@ void vtkWebGPURenderWindow::ReadPixels()
+         std::copy(mapped, mapped + ctx->size, ctx->dst->GetPointer(0));
+       }
+       break;
++      default:
++        break;
+     }
+     ctx->src.Unmap();
+   };
+-- 
+GitLab
+
diff --git a/srcpkgs/vtk/patches/0002-stat64.patch b/srcpkgs/vtk/patches/0002-stat64.patch
new file mode 100644
index 00000000000000..01da6d55b01c56
--- /dev/null
+++ b/srcpkgs/vtk/patches/0002-stat64.patch
@@ -0,0 +1,170 @@
+From 0f4635e876560d00df58c809526435180d0b1912 Mon Sep 17 00:00:00 2001
+From: David Gobbi <david.gobbi@gmail.com>
+Date: Sun, 18 Aug 2024 09:24:26 -0600
+Subject: [PATCH] Prefer SystemTools::Stat over system stat/stat64
+
+This keeps all of the stat() calls in VTK centralized (except the
+ones implemented in ThirdParty).  Note that kwsys no longer defines
+any LSF support macros since 2019, so this might impact the ability
+to use large files on some 32-bit platforms, but hopefully any
+platforms where this is a concern will honor _FILE_OFFSET_BITS=64
+like 32-bit glibc does.
+---
+ IO/EnSight/vtkEnSight6BinaryReader.cxx    | 28 ++-----------
+ IO/EnSight/vtkEnSightGoldBinaryReader.cxx | 25 +-----------
+ IO/LSDyna/LSDynaFamily.cxx                | 48 +----------------------
+ 3 files changed, 8 insertions(+), 93 deletions(-)
+
+diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+index 167e63efd41..1f26a171c26 100644
+--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
++++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+@@ -18,33 +18,13 @@
+ #include "vtkUnstructuredGrid.h"
+ #include "vtksys/Encoding.hxx"
+ #include "vtksys/FStream.hxx"
++#include "vtksys/SystemTools.hxx"
+ 
+ #include <cctype>
+ #include <string>
+-#include <sys/stat.h>
+-
+-#if defined(_WIN32)
+-#define VTK_STAT_STRUCT struct _stat64
+-#define VTK_STAT_FUNC _stat64
+-#elif defined _DARWIN_FEATURE_64_BIT_INODE || defined __FreeBSD__ || defined __NetBSD__ ||         \
+-  defined __OpenBSD__
+-// The BSDs use stat().
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#elif defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#else
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#endif
+-#else
+-// here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+-// us on POSIX without resorting to using stat64.
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#endif
++
++#define VTK_STAT_STRUCT vtksys::SystemTools::Stat_t
++#define VTK_STAT_FUNC vtksys::SystemTools::Stat
+ 
+ VTK_ABI_NAMESPACE_BEGIN
+ vtkStandardNewMacro(vtkEnSight6BinaryReader);
+diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+index ff8cad7bd46..75c126a2b0c 100644
+--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
++++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+@@ -26,31 +26,10 @@
+ #include <map>
+ #include <numeric>
+ #include <string>
+-#include <sys/stat.h>
+ #include <vector>
+ 
+-#if defined(_WIN32)
+-#define VTK_STAT_STRUCT struct _stat64
+-#define VTK_STAT_FUNC _stat64
+-#elif defined _DARWIN_FEATURE_64_BIT_INODE || defined __FreeBSD__ || defined __NetBSD__ ||         \
+-  defined __OpenBSD__
+-// The BSDs use stat().
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#elif defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#else
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#endif
+-#else
+-// here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+-// us on POSIX without resorting to using stat64.
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#endif
++#define VTK_STAT_STRUCT vtksys::SystemTools::Stat_t
++#define VTK_STAT_FUNC vtksys::SystemTools::Stat
+ 
+ VTK_ABI_NAMESPACE_BEGIN
+ class vtkEnSightGoldBinaryReader::vtkUtilities
+diff --git a/IO/LSDyna/LSDynaFamily.cxx b/IO/LSDyna/LSDynaFamily.cxx
+index fdb914ab6fa..1574d97b281 100644
+--- a/IO/LSDyna/LSDynaFamily.cxx
++++ b/IO/LSDyna/LSDynaFamily.cxx
+@@ -18,44 +18,6 @@
+ VTK_ABI_NAMESPACE_BEGIN
+ namespace
+ {
+-// Decide which of 3 stat varieties to use: stat, stat64, __stat64
+-// Usually stat uses 32 bit fields, and stat64 (with underscores in Windows) uses 64 bit fields.
+-// But on the BSDs, stat uses 64 bit fields these days.
+-#if (VTK_SIZEOF_ID_TYPE == 8) && !defined(_DARWIN_FEATURE_64_BIT_INODE) &&                         \
+-  !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+-#ifndef _WIN32
+-#if defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define USE_STAT_64
+-#else
+-#define USE_STAT
+-#endif
+-#else
+-#define USE_STAT_64
+-#endif
+-#else
+-#define USE_WIN_STAT_64
+-#endif
+-#else
+-#define USE_STAT
+-#endif
+-
+-#if defined(USE_STAT_64)
+-int LS_DYNA_STAT(const char* fname, struct stat64& s)
+-{
+-  return stat64(fname, &s);
+-}
+-#elif defined(USE_WIN_STAT_64)
+-int LS_DYNA_STAT(const char* fname, struct __stat64& s)
+-{
+-  return __stat64(fname, &s);
+-}
+-#elif defined(USE_STAT)
+-int LS_DYNA_STAT(const char* fname, struct stat& s)
+-{
+-  return stat(fname, &s);
+-}
+-#endif
+ 
+ vtkLSDynaFile_t VTK_LSDYNA_OPENFILE(const char* fname)
+ {
+@@ -205,18 +167,12 @@ int LSDynaFamily::ScanDatabaseDirectory()
+   int adaptLevel = 0;
+   int tryAdapt = 0; // don't try an adaptive step unless we have one good file at the current level.
+   bool adapted = true; // true when advancing over a mesh adaptation.
+-#if defined(USE_WIN_STAT_64)
+-  struct __stat64 st;
+-#elif defined(USE_STAT_64)
+-  struct stat64 st;
+-#elif defined(USE_STAT)
+-  struct stat st;
+-#endif
++  vtksys::SystemTools::Stat_t st;
+   while (tryAdapt >= 0)
+   {
+     tmpFile = vtkLSGetFamilyFileName(
+       this->DatabaseDirectory.c_str(), this->DatabaseBaseName, adaptLevel, filenum);
+-    if (LS_DYNA_STAT(tmpFile.c_str(), st) == 0)
++    if (vtksys::SystemTools::Stat(tmpFile.c_str(), &st) == 0)
+     {
+       if (adapted)
+       {
+-- 
+GitLab
+
diff --git a/srcpkgs/vtk/patches/gcc13.patch b/srcpkgs/vtk/patches/gcc13.patch
deleted file mode 100644
index d0ba2017b70ca0..00000000000000
--- a/srcpkgs/vtk/patches/gcc13.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Source: https://src.fedoraproject.org/rpms/vtk/blob/1a12f28665b2f24537b98fcf4b3fb3a176fa7fba/f/vtk-include.patch
-
-diff -up VTK-9.2.5/IO/Image/vtkSEPReader.h.include VTK-9.2.5/IO/Image/vtkSEPReader.h
---- VTK-9.2.5/IO/Image/vtkSEPReader.h.include	2023-01-05 08:51:35.000000000 -0700
-+++ VTK-9.2.5/IO/Image/vtkSEPReader.h	2023-01-17 07:43:41.988095734 -0700
-@@ -26,6 +26,7 @@
- #include "vtkNew.h" // for ivars
- 
- #include <array>  // for std::array
-+#include <cstdint> // for std::uint8_t
- #include <string> // for std::string
- 
- namespace details
diff --git a/srcpkgs/vtk/patches/vtkioss-unistd.patch b/srcpkgs/vtk/patches/vtkioss-unistd.patch
index df43a1fe5bba9c..d07abb59fe5edd 100644
--- a/srcpkgs/vtk/patches/vtkioss-unistd.patch
+++ b/srcpkgs/vtk/patches/vtkioss-unistd.patch
@@ -11,9 +11,9 @@ index ca5f15de..99c2bbdd 100644
  #else
 -#include <sys/unistd.h>
 +#include <unistd.h>
- #endif
- 
- #ifdef SEACAS_HAVE_MPI
+ #if defined(__APPLE__) && defined(__MACH__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
 @@ -35,9 +35,6 @@
  
  #include <cstdio>
diff --git a/srcpkgs/vtk/template b/srcpkgs/vtk/template
index 189591d55725a7..5d87abde765f37 100644
--- a/srcpkgs/vtk/template
+++ b/srcpkgs/vtk/template
@@ -1,7 +1,7 @@
 # Template file for 'vtk'
 pkgname=vtk
-version=9.2.6
-revision=3
+version=9.3.1
+revision=1
 build_style=cmake
 # vtk can be huge, especially with -DVTK_BUILD_ALL_MODULES=ON"
 # Build only the core modules plus python bindings for now
@@ -14,6 +14,7 @@ configure_args="-DBUILD_SHARED_LIBS=ON -DVTK_FORBID_DOWNLOADS=ON
  -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_cgns=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
  -DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3"
 # vtk forks libharu, bumps to v2.4.0, and requires libharu>=2.4.0
 makedepends="zlib-devel freetype-devel liblz4-devel expat-devel MesaLib-devel
@@ -26,7 +27,7 @@ maintainer="Piraty <mail@piraty.dev>"
 license="BSD-3-Clause"
 homepage="https://www.vtk.org"
 distfiles="https://www.vtk.org/files/release/${version:0:3}/VTK-${version}.tar.gz"
-checksum=06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12
+checksum=8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8
 
 if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 	makedepends+=" libexecinfo-devel"

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Updated] vtk: update to 9.3.1.
  2024-09-30 22:52 [PR PATCH] vtk: update to 9.3.1 Calandracas606
@ 2024-10-01  1:28 ` Calandracas606
  2024-10-01  1:30 ` Calandracas606
  2024-10-01 13:15 ` [PR PATCH] [Merged]: " abenson
  2 siblings, 0 replies; 4+ messages in thread
From: Calandracas606 @ 2024-10-01  1:28 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1256 bytes --]

There is an updated pull request by Calandracas606 against master on the void-packages repository

https://github.com/Calandracas606/void-packages vtk
https://github.com/void-linux/void-packages/pull/52432

vtk: update to 9.3.1.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **briefly**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->

#### Local build testing
- I built this PR locally for my native architecture, aarch64-musl
- I built this PR locally for these architectures:
  - x86_64
  - x86_64-musl
  - aarch64

nocross since depends on hdf5 which is nocross


A patch file from https://github.com/void-linux/void-packages/pull/52432.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-vtk-52432.patch --]
[-- Type: text/x-diff, Size: 37735 bytes --]

From edd4a7a715e518321f2b0c91cbdf74bd1ebe798b Mon Sep 17 00:00:00 2001
From: Daniel Martinez <danielmartinez@cock.li>
Date: Mon, 30 Sep 2024 18:42:57 -0400
Subject: [PATCH 1/2] vtk: update to 9.3.1.

---
 common/shlibs                            | 220 ++++++-------
 srcpkgs/vtk/patches/0001-stat64.patch    | 390 +++++++++++++++++++++++
 srcpkgs/vtk/patches/0002-stat64.patch    | 170 ++++++++++
 srcpkgs/vtk/patches/gcc13.patch          |  13 -
 srcpkgs/vtk/patches/vtkioss-unistd.patch |   6 +-
 srcpkgs/vtk/template                     |   7 +-
 6 files changed, 677 insertions(+), 129 deletions(-)
 create mode 100644 srcpkgs/vtk/patches/0001-stat64.patch
 create mode 100644 srcpkgs/vtk/patches/0002-stat64.patch
 delete mode 100644 srcpkgs/vtk/patches/gcc13.patch

diff --git a/common/shlibs b/common/shlibs
index e03048c75bc428..6dd35e72d12e2c 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3343,116 +3343,116 @@ libgnuradio-pdu.so.3.10.10 gnuradio-3.10.10.0_1
 libgnuradio-osmosdr.so.0.2.0 gnuradio-osmosdr-0.2.0_1
 libflann_cpp.so.1.9 flann-1.9.1_1
 libflann.so.1.9 flann-1.9.1_1
-libvtkCommonCore-9.2.so.1 vtk-9.2.2_1
-libvtksys-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMisc-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkCommonTransforms-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMath-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLOD-9.2.so.1 vtk-9.2.2_1
-libvtkViewsInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkIOIOSS-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLabel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersPoints-9.2.so.1 vtk-9.2.2_1
-libvtkCommonExecutionModel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingHyperTreeGrid-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkCommonDataModel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTopology-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSources-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolumeOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOOggTheora-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportGL2PS-9.2.so.1 vtk-9.2.2_1
-libvtkIOAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOCesium3DTiles-9.2.so.1 vtk-9.2.2_1
-libvtkIOSegY-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVtkJS-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTexture-9.2.so.1 vtk-9.2.2_1
-libvtkIOVideo-9.2.so.1 vtk-9.2.2_1
-libvtkImagingSources-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStencil-9.2.so.1 vtk-9.2.2_1
-libvtkIOCGNSReader-9.2.so.1 vtk-9.2.2_1
-libvtkCommonComputationalGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkIOVeraOut-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionImage-9.2.so.1 vtk-9.2.2_1
-libvtkChartsCore-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkImagingHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkGeovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionWidgets-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersImaging-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersVerdict-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSMP-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingUI-9.2.so.1 vtk-9.2.2_1
-libvtkIOHDF-9.2.so.1 vtk-9.2.2_1
-libvtkCommonSystem-9.2.so.1 vtk-9.2.2_1
-libvtkImagingColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingSceneGraph-9.2.so.1 vtk-9.2.2_1
-libvtkParallelCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkImagingFourier-9.2.so.1 vtk-9.2.2_1
-libvtkCommonColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingAnnotation-9.2.so.1 vtk-9.2.2_1
-libvtkIOSQL-9.2.so.1 vtk-9.2.2_1
-libvtkIOImage-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersExtraction-9.2.so.1 vtk-9.2.2_1
-libvtkIOGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersFlowPaths-9.2.so.1 vtk-9.2.2_1
-libvtkIOMovie-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolume-9.2.so.1 vtk-9.2.2_1
-libvtkIOEnSight-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistryOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSelection-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersModeling-9.2.so.1 vtk-9.2.2_1
-libvtkViewsCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOMotionFX-9.2.so.1 vtk-9.2.2_1
-libvtkIOLSDyna-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContextOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingImage-9.2.so.1 vtk-9.2.2_1
-libvtkIOXMLParser-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMorphological-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallel-9.2.so.1 vtk-9.2.2_1
-libvtkViewsContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkIOImport-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLICOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkIOAsynchronous-9.2.so.1 vtk-9.2.2_1
-libvtkIOTecplotTable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCityGML-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMath-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallelXML-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingGL2PSOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneric-9.2.so.1 vtk-9.2.2_1
-libvtkIONetCDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisLayout-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHyperTree-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportPDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkIOXML-9.2.so.1 vtk-9.2.2_1
-libvtkIOChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionStyle-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOMINC-9.2.so.1 vtk-9.2.2_1
-libvtkTestingRendering-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallelImaging-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkIOExport-9.2.so.1 vtk-9.2.2_1
-libvtkIOCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersProgrammable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCONVERGECFD-9.2.so.1 vtk-9.2.2_1
-libvtkIOLegacy-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingFreeType-9.2.so.1 vtk-9.2.2_1
-libvtkIOPLY-9.2.so.1 vtk-9.2.2_1
-libvtkIOExodus-9.2.so.1 vtk-9.2.2_1
-libvtkkissfft-9.2.so.1 vtk-9.2.2_1
+libvtkCommonCore-9.3.so.1 vtk-9.3.2_1
+libvtksys-9.3.so.1 vtk-9.3.2_1
+libvtkCommonMisc-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingContext2D-9.3.so.1 vtk-9.3.2_1
+libvtkCommonTransforms-9.3.so.1 vtk-9.3.2_1
+libvtkCommonMath-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLOD-9.3.so.1 vtk-9.3.2_1
+libvtkViewsInfovis-9.3.so.1 vtk-9.3.2_1
+libvtkIOIOSS-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLabel-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersPoints-9.3.so.1 vtk-9.3.2_1
+libvtkCommonExecutionModel-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingHyperTreeGrid-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeneral-9.3.so.1 vtk-9.3.2_1
+libvtkCommonDataModel-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersTopology-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSources-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVolumeOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOOggTheora-9.3.so.1 vtk-9.3.2_1
+libvtkIOExportGL2PS-9.3.so.1 vtk-9.3.2_1
+libvtkIOAMR-9.3.so.1 vtk-9.3.2_1
+libvtkIOCesium3DTiles-9.3.so.1 vtk-9.3.2_1
+libvtkIOSegY-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVtkJS-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersTexture-9.3.so.1 vtk-9.3.2_1
+libvtkIOVideo-9.3.so.1 vtk-9.3.2_1
+libvtkImagingSources-9.3.so.1 vtk-9.3.2_1
+libvtkImagingStencil-9.3.so.1 vtk-9.3.2_1
+libvtkIOCGNSReader-9.3.so.1 vtk-9.3.2_1
+libvtkCommonComputationalGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkIOVeraOut-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersHybrid-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionImage-9.3.so.1 vtk-9.3.2_1
+libvtkChartsCore-9.3.so.1 vtk-9.3.2_1
+libvtkImagingStatistics-9.3.so.1 vtk-9.3.2_1
+libvtkImagingHybrid-9.3.so.1 vtk-9.3.2_1
+libvtkGeovisCore-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionWidgets-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersImaging-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersVerdict-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSMP-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingUI-9.3.so.1 vtk-9.3.2_1
+libvtkIOHDF-9.3.so.1 vtk-9.3.2_1
+libvtkCommonSystem-9.3.so.1 vtk-9.3.2_1
+libvtkImagingColor-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingSceneGraph-9.3.so.1 vtk-9.3.2_1
+libvtkParallelCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOInfovis-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkImagingFourier-9.3.so.1 vtk-9.3.2_1
+libvtkCommonColor-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingAnnotation-9.3.so.1 vtk-9.3.2_1
+libvtkIOSQL-9.3.so.1 vtk-9.3.2_1
+libvtkIOImage-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersCore-9.3.so.1 vtk-9.3.2_1
+libvtkInfovisCore-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersExtraction-9.3.so.1 vtk-9.3.2_1
+libvtkIOGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersFlowPaths-9.3.so.1 vtk-9.3.2_1
+libvtkIOMovie-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVolume-9.3.so.1 vtk-9.3.2_1
+libvtkIOEnSight-9.3.so.1 vtk-9.3.2_1
+libvtkDomainsChemistryOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersStatistics-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSelection-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersModeling-9.3.so.1 vtk-9.3.2_1
+libvtkViewsCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOMotionFX-9.3.so.1 vtk-9.3.2_1
+libvtkIOLSDyna-9.3.so.1 vtk-9.3.2_1
+libvtkIOParallel-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingContextOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingImage-9.3.so.1 vtk-9.3.2_1
+libvtkIOXMLParser-9.3.so.1 vtk-9.3.2_1
+libvtkImagingMorphological-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersParallel-9.3.so.1 vtk-9.3.2_1
+libvtkViewsContext2D-9.3.so.1 vtk-9.3.2_1
+libvtkIOImport-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLICOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkIOAsynchronous-9.3.so.1 vtk-9.3.2_1
+libvtkIOTecplotTable-9.3.so.1 vtk-9.3.2_1
+libvtkIOCityGML-9.3.so.1 vtk-9.3.2_1
+libvtkImagingMath-9.3.so.1 vtk-9.3.2_1
+libvtkIOParallelXML-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingGL2PSOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeneric-9.3.so.1 vtk-9.3.2_1
+libvtkIONetCDF-9.3.so.1 vtk-9.3.2_1
+libvtkImagingCore-9.3.so.1 vtk-9.3.2_1
+libvtkInfovisLayout-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersHyperTree-9.3.so.1 vtk-9.3.2_1
+libvtkIOExportPDF-9.3.so.1 vtk-9.3.2_1
+libvtkImagingGeneral-9.3.so.1 vtk-9.3.2_1
+libvtkIOXML-9.3.so.1 vtk-9.3.2_1
+libvtkIOChemistry-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionStyle-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersAMR-9.3.so.1 vtk-9.3.2_1
+libvtkIOMINC-9.3.so.1 vtk-9.3.2_1
+libvtkTestingRendering-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersParallelImaging-9.3.so.1 vtk-9.3.2_1
+libvtkDomainsChemistry-9.3.so.1 vtk-9.3.2_1
+libvtkIOExport-9.3.so.1 vtk-9.3.2_1
+libvtkIOCore-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersProgrammable-9.3.so.1 vtk-9.3.2_1
+libvtkIOCONVERGECFD-9.3.so.1 vtk-9.3.2_1
+libvtkIOLegacy-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingFreeType-9.3.so.1 vtk-9.3.2_1
+libvtkIOPLY-9.3.so.1 vtk-9.3.2_1
+libvtkIOExodus-9.3.so.1 vtk-9.3.2_1
+libvtkkissfft-9.3.so.1 vtk-9.3.2_1
 libvolume_key.so.1 volume_key-0.3.9_1
 librand48_r.so.0 rand48_r-0.1_1
 libxxhash.so.0 libxxHash-0.6.5_2
diff --git a/srcpkgs/vtk/patches/0001-stat64.patch b/srcpkgs/vtk/patches/0001-stat64.patch
new file mode 100644
index 00000000000000..aa673d2b6e9266
--- /dev/null
+++ b/srcpkgs/vtk/patches/0001-stat64.patch
@@ -0,0 +1,390 @@
+From 748572894e96b1eab4089da912441ae1b588b2aa Mon Sep 17 00:00:00 2001
+From: Jaswant Panchumarti <jaswant.panchumarti@kitware.com>
+Date: Wed, 30 Aug 2023 15:24:16 -0400
+Subject: [PATCH] emsdk 3.1.45: get code to compile
+
+- closes vtk/vtk#19060.
+- disable IOExportGL2PS for WebAssembly.
+- handle stat64 vs stat for emscripten in LSDyna and Ensight readers.
+---
+ .../docs/advanced/build_wasm_emscripten.md    | 10 +++
+ .../release/dev/update-dawn-webgpu.md         |  6 ++
+ IO/EnSight/vtkEnSight6BinaryReader.cxx        |  8 ++
+ IO/EnSight/vtkEnSightGoldBinaryReader.cxx     |  8 ++
+ IO/ExportGL2PS/vtk.module                     |  2 +-
+ IO/LSDyna/LSDynaFamily.cxx                    |  8 ++
+ Rendering/WebGPU/vtkWGPUContext.cxx           | 77 ++++++-------------
+ Rendering/WebGPU/vtkWebGPUActor.cxx           |  5 ++
+ .../WebGPU/vtkWebGPUInternalsShaderModule.cxx |  2 +-
+ Rendering/WebGPU/vtkWebGPURenderWindow.cxx    | 38 ++++++---
+ 10 files changed, 98 insertions(+), 66 deletions(-)
+ create mode 100644 Documentation/release/dev/update-dawn-webgpu.md
+
+diff --git a/Documentation/docs/advanced/build_wasm_emscripten.md b/Documentation/docs/advanced/build_wasm_emscripten.md
+index ceb50ce1115..c58b1a269c3 100644
+--- a/Documentation/docs/advanced/build_wasm_emscripten.md
++++ b/Documentation/docs/advanced/build_wasm_emscripten.md
+@@ -54,6 +54,16 @@ For this guide, you will need the following:
+ These instructions use a specific convention for the source, build and install directories that is appropriate when building VTK for wasm inside
+ a docker container. Please replace these _root-directory_ paths if VTK is being built outside a docker container.
+ 
++### Install emscripten ports (IMPORTANT!)
++Emscripten uses SDL2 to connect user input events to the browser event subsystem. The SDL2 port
++will need to be built if this is the first time you downloaded the EMSDK. The `embuilder` script
++will be on the path if you installed and activated EMSDK as described in the prerequisites.
++```bash
++$ embuilder build sdl2
++```
++
++### Build VTK
++
+ 1. Configure the project with CMake. `emcmake` tells CMake to use the `emscripten` toolchain for cross compilation.
+ 
+ ```bash
+diff --git a/Documentation/release/dev/update-dawn-webgpu.md b/Documentation/release/dev/update-dawn-webgpu.md
+new file mode 100644
+index 00000000000..faa8f53bbbe
+--- /dev/null
++++ b/Documentation/release/dev/update-dawn-webgpu.md
+@@ -0,0 +1,6 @@
++# Update Dawn/WebGPU API in the WebGPU backend
++
++- `WGPUShaderModuleWGSLDescriptor::source` has now been renamed to `WGPUShaderModuleWGSLDescriptor::code`.
++- `SetDeviceLostCallback`(deprecated by webgpu) has been removed in favor of `WGPUDeviceDescriptor::deviceLostCallback` member.
++- `dawn::native::GetAdapter` (deprecated by dawn) has now been renamed to `dawn::native::EnumerateAdapters`.
++- `wgpu::RenderBundleEncoder::colorFormatsCount` (deprecated by webgpu) has now been renamed to `colorFormatCount`. However, emscripten still uses the version of webgpu which shipped with `colorFormatsCount`, so in webassembly, `colorFormatsCount` continues to be used. We will change this after emscripten updates it's webgpu headers.
+diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+index 2cd04c9755b..167e63efd41 100644
+--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
++++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+@@ -31,6 +31,14 @@
+ // The BSDs use stat().
+ #define VTK_STAT_STRUCT struct stat
+ #define VTK_STAT_FUNC stat
++#elif defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
++#define VTK_STAT_STRUCT struct stat64
++#define VTK_STAT_FUNC stat64
++#else
++#define VTK_STAT_STRUCT struct stat
++#define VTK_STAT_FUNC stat
++#endif
+ #else
+ // here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+ // us on POSIX without resorting to using stat64.
+diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+index e3c81bd5e8c..c374f9879bf 100644
+--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
++++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+@@ -37,6 +37,14 @@
+ // The BSDs use stat().
+ #define VTK_STAT_STRUCT struct stat
+ #define VTK_STAT_FUNC stat
++#elif defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
++#define VTK_STAT_STRUCT struct stat64
++#define VTK_STAT_FUNC stat64
++#else
++#define VTK_STAT_STRUCT struct stat
++#define VTK_STAT_FUNC stat
++#endif
+ #else
+ // here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+ // us on POSIX without resorting to using stat64.
+diff --git a/IO/ExportGL2PS/vtk.module b/IO/ExportGL2PS/vtk.module
+index d72b75b482e..97038c7fb17 100644
+--- a/IO/ExportGL2PS/vtk.module
++++ b/IO/ExportGL2PS/vtk.module
+@@ -3,7 +3,7 @@ NAME
+ LIBRARY_NAME
+   vtkIOExportGL2PS
+ CONDITION
+-  NOT ANDROID AND NOT APPLE_IOS AND NOT VTK_OPENGL_USE_GLES
++  NOT ANDROID AND NOT APPLE_IOS AND NOT EMSCRIPTEN AND NOT VTK_OPENGL_USE_GLES
+ IMPLEMENTABLE
+ IMPLEMENTS
+   VTK::IOExportGL2PS
+diff --git a/IO/LSDyna/LSDynaFamily.cxx b/IO/LSDyna/LSDynaFamily.cxx
+index 15755d06840..fdb914ab6fa 100644
+--- a/IO/LSDyna/LSDynaFamily.cxx
++++ b/IO/LSDyna/LSDynaFamily.cxx
+@@ -24,8 +24,16 @@ namespace
+ #if (VTK_SIZEOF_ID_TYPE == 8) && !defined(_DARWIN_FEATURE_64_BIT_INODE) &&                         \
+   !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+ #ifndef _WIN32
++#if defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
+ #define USE_STAT_64
+ #else
++#define USE_STAT
++#endif
++#else
++#define USE_STAT_64
++#endif
++#else
+ #define USE_WIN_STAT_64
+ #endif
+ #else
+diff --git a/Rendering/WebGPU/vtkWGPUContext.cxx b/Rendering/WebGPU/vtkWGPUContext.cxx
+index d0400786707..b280022873a 100644
+--- a/Rendering/WebGPU/vtkWGPUContext.cxx
++++ b/Rendering/WebGPU/vtkWGPUContext.cxx
+@@ -73,7 +73,7 @@ static void WaitABit()
+ 
+ }
+ namespace vtkWGPUImpl = vtkWGPUEmscriptenImpl;
+-#elif VTK_USE_DAWN_NATIVE
++#elif VTK_USE_DAWN_WEBGPU
+ #include <cstring>
+ #include <dawn/dawn_proc.h>
+ #include <dawn/native/DawnNative.h>
+@@ -88,11 +88,11 @@ static struct
+   struct
+   {
+     DawnProcTable ProcTable;
+-    std::unique_ptr<dawn_native::Instance> Instance = nullptr;
++    std::unique_ptr<dawn::native::Instance> Instance = nullptr;
+   } DawnNativeEntryPoint;
+   struct
+   {
+-    dawn_native::Adapter Handle;
++    dawn::native::Adapter Handle;
+     wgpu::BackendType DawnBackendType;
+     struct
+     {
+@@ -113,10 +113,10 @@ static void Initialize()
+   }
+ 
+   // Set up the native procs for the global proctable
+-  GPUContext.DawnNativeEntryPoint.ProcTable = dawn_native::GetProcs();
++  GPUContext.DawnNativeEntryPoint.ProcTable = dawn::native::GetProcs();
+   dawnProcSetProcs(&GPUContext.DawnNativeEntryPoint.ProcTable);
+   GPUContext.DawnNativeEntryPoint.Instance =
+-    std::unique_ptr<dawn_native::Instance>(new dawn_native::Instance());
++    std::unique_ptr<dawn::native::Instance>(new dawn::native::Instance());
+   GPUContext.DawnNativeEntryPoint.Instance->DiscoverDefaultAdapters();
+   GPUContext.DawnNativeEntryPoint.Instance->EnableBackendValidation(true);
+ 
+@@ -125,16 +125,12 @@ static void Initialize()
+   // are the preferred on their respective platforms, and Vulkan is preferred to
+   // OpenGL
+   GPUContext.Adapter.DawnBackendType =
+-#if defined(VTK_DAWN_ENABLE_BACKEND_D3D12)
++#if defined(_WIN32)
+     wgpu::BackendType::D3D12;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_METAL)
++#elif defined(__APPLE__)
+     wgpu::BackendType::Metal;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_VULKAN)
+-    wgpu::BackendType::Vulkan;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_OPENGL)
+-    wgpu::BackendType::OpenGL;
+ #else
+-#error
++    wgpu::BackendType::Vulkan;
+ #endif
+   GPUContext.Adapter.Handle = nullptr;
+   GPUContext.Initialized = true;
+@@ -159,48 +155,19 @@ static wgpu::Adapter RequestAdapter(const wgpu::RequestAdapterOptions& options)
+ {
+   Initialize();
+ 
+-  // Search available adapters for a good match, in the
+-  // following priority order
+-  std::vector<wgpu::AdapterType> typePriority;
+-  if (options.powerPreference == wgpu::PowerPreference::LowPower)
+-  {
+-    // low power
+-    typePriority = std::vector<wgpu::AdapterType>{
+-      wgpu::AdapterType::IntegratedGPU,
+-      wgpu::AdapterType::DiscreteGPU,
+-      wgpu::AdapterType::CPU,
+-    };
+-  }
+-  else if (options.powerPreference == wgpu::PowerPreference::HighPerformance)
+-  {
+-    // high performance
+-    typePriority = std::vector<wgpu::AdapterType>{
+-      wgpu::AdapterType::DiscreteGPU,
+-      wgpu::AdapterType::IntegratedGPU,
+-      wgpu::AdapterType::CPU,
+-    };
+-  }
+-
+-  std::vector<dawn_native::Adapter> adapters =
+-    GPUContext.DawnNativeEntryPoint.Instance->GetAdapters();
+-  for (auto reqType : typePriority)
++  std::vector<dawn::native::Adapter> adapters =
++    GPUContext.DawnNativeEntryPoint.Instance->EnumerateAdapters(&options);
++  for (const dawn::native::Adapter& adapter : adapters)
+   {
+-    for (const dawn_native::Adapter& adapter : adapters)
+-    {
+-      wgpu::AdapterProperties ap;
+-      adapter.GetProperties(&ap);
+-      if (ap.adapterType == reqType &&
+-        (reqType == wgpu::AdapterType::CPU || ap.backendType == GPUContext.Adapter.DawnBackendType))
+-      {
+-        GPUContext.Adapter.Handle = adapter;
+-        SetAdapterInfo(ap);
+-        std::string msg = vtkfmt::format(
+-          "Selected adapter {0} (device={1:#x} vendor={2:#x} type={3}/{4})", ap.name, ap.deviceID,
+-          ap.vendorID, GPUContext.Adapter.Info.TypeName, GPUContext.Adapter.Info.BackendName);
+-        vtkWGPUContextLog(msg);
+-        return wgpu::Adapter(GPUContext.Adapter.Handle.Get());
+-      }
+-    }
++    GPUContext.Adapter.Handle = adapter;
++    wgpu::AdapterProperties ap;
++    adapter.GetProperties(&ap);
++    SetAdapterInfo(ap);
++    std::string msg = vtkfmt::format(
++      "Selected adapter {0} (device={1:#x} vendor={2:#x} type={3}/{4})", ap.name, ap.deviceID,
++      ap.vendorID, GPUContext.Adapter.Info.TypeName, GPUContext.Adapter.Info.BackendName);
++    vtkWGPUContextLog(msg);
++    return wgpu::Adapter(GPUContext.Adapter.Handle.Get());
+   }
+ 
+   return nullptr;
+@@ -234,7 +201,7 @@ static void LogAvailableAdapters()
+ 
+   std::stringstream msg;
+   msg << "Available adapters:\n";
+-  for (auto&& a : GPUContext.DawnNativeEntryPoint.Instance->GetAdapters())
++  for (auto&& a : GPUContext.DawnNativeEntryPoint.Instance->EnumerateAdapters())
+   {
+     wgpu::AdapterProperties p;
+     a.GetProperties(&p);
+@@ -297,7 +264,7 @@ static const char* AdapterTypeName(wgpu::AdapterType t)
+ }
+ }
+ namespace vtkWGPUImpl = vtkWGPUDawnImpl;
+-#endif // VTK_USE_DAWN_NATIVE
++#endif // VTK_USE_DAWN_WEBGPU
+ 
+ //------------------------------------------------------------------------------
+ void vtkWGPUContext::LogAvailableAdapters()
+diff --git a/Rendering/WebGPU/vtkWebGPUActor.cxx b/Rendering/WebGPU/vtkWebGPUActor.cxx
+index 4121547120e..63aa4d5ede1 100644
+--- a/Rendering/WebGPU/vtkWebGPUActor.cxx
++++ b/Rendering/WebGPU/vtkWebGPUActor.cxx
+@@ -79,7 +79,12 @@ wgpu::RenderBundle vtkWebGPUActor::RenderToBundle(vtkRenderer* ren, vtkMapper* m
+     const int sampleCount = wgpuRenWin->GetMultiSamples() ? wgpuRenWin->GetMultiSamples() : 1;
+ 
+     wgpu::RenderBundleEncoderDescriptor bundleEncDesc;
++#if __EMSCRIPTEN__
++    // FIXME: Update this after emscripten webgpu updates to colorFormatCount
+     bundleEncDesc.colorFormatsCount = 1;
++#else
++    bundleEncDesc.colorFormatCount = 1;
++#endif
+     bundleEncDesc.colorFormats = &colorFormat;
+     bundleEncDesc.depthStencilFormat = wgpuRenWin->GetDepthStencilFormat();
+     bundleEncDesc.sampleCount = sampleCount;
+diff --git a/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx b/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
+index 2d0731ac253..705fb9b59ac 100644
+--- a/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
++++ b/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
+@@ -8,7 +8,7 @@ wgpu::ShaderModule vtkWebGPUInternalsShaderModule::CreateFromWGSL(
+   const wgpu::Device& device, const std::string& source)
+ {
+   wgpu::ShaderModuleWGSLDescriptor wgslDesc;
+-  wgslDesc.source = source.c_str();
++  wgslDesc.code = source.c_str();
+ 
+   wgpu::ShaderModuleDescriptor descriptor;
+   descriptor.nextInChain = &wgslDesc;
+diff --git a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
+index f0e824f0e54..95a7d7fd605 100644
+--- a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
++++ b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
+@@ -61,8 +61,9 @@ void device_lost_callback(WGPUDeviceLostReason reason, char const* message, void
+     default:
+       reason_type_lbl = "Unknown";
+   }
+-  vtkErrorWithObjectMacro(reinterpret_cast<vtkObject*>(self),
+-    << "Device lost! Reason : " << message << " Reason Type: " << reason_type_lbl);
++  auto renWin = vtkRenderWindow::SafeDownCast(reinterpret_cast<vtkObject*>(self));
++  vtkWarningWithObjectMacro(
++    renWin, << "Device lost! Reason : " << message << " Reason Type: " << reason_type_lbl);
+ }
+ 
+ struct PixelReadDescriptor
+@@ -136,6 +137,8 @@ bool vtkWebGPURenderWindow::WGPUInit()
+   this->Adapter = vtkWGPUContext::RequestAdapter(options);
+   wgpu::DeviceDescriptor deviceDescriptor = {};
+   deviceDescriptor.label = "vtkWebGPURenderWindow::WGPUInit";
++  deviceDescriptor.deviceLostCallback = &device_lost_callback;
++  deviceDescriptor.deviceLostUserdata = this;
+   ///@{ TODO: Populate feature requests
+   // ...
+   ///@}
+@@ -150,7 +153,6 @@ bool vtkWebGPURenderWindow::WGPUInit()
+   }
+   // install error handler
+   this->Device.SetUncapturedErrorCallback(&::print_wgpu_error, this);
+-  this->Device.SetDeviceLostCallback(&::device_lost_callback, this);
+   ///@}
+   return true;
+ }
+@@ -161,7 +163,6 @@ void vtkWebGPURenderWindow::WGPUFinalize()
+   vtkDebugMacro(<< __func__ << " WGPUInitialized=" << this->WGPUInitialized);
+   this->DestroyDepthStencilTexture();
+   this->DestroySwapChain();
+-  this->Device.SetDeviceLostCallback(nullptr, nullptr);
+   this->Device = nullptr;
+ }
+ 
+@@ -586,18 +587,35 @@ void vtkWebGPURenderWindow::ReadPixels()
+   this->BufferMapReadContext.src = this->ColorAttachment.OffscreenBuffer;
+   this->BufferMapReadContext.size = this->ColorAttachment.OffscreenBuffer.GetSize();
+   this->BufferMapReadContext.dst = this->CachedPixelBytes;
++  this->BufferMapReadContext.window = this;
+ 
+   auto onBufferMapped = [](WGPUBufferMapAsyncStatus status, void* userdata) {
+     auto ctx = reinterpret_cast<MappingContext*>(userdata);
+     switch (status)
+     {
+-      case WGPUBufferMapAsyncStatus_DestroyedBeforeCallback:
++      case WGPUBufferMapAsyncStatus_ValidationError:
++        vtkErrorWithObjectMacro(ctx->window, << "Validation error occurred");
++        break;
++      case WGPUBufferMapAsyncStatus_Unknown:
++        vtkErrorWithObjectMacro(ctx->window, << "Unknown error occurred");
++        break;
+       case WGPUBufferMapAsyncStatus_DeviceLost:
+-      case WGPUBufferMapAsyncStatus_Error:
++        vtkErrorWithObjectMacro(ctx->window, << "Device lost!");
++        break;
++      case WGPUBufferMapAsyncStatus_DestroyedBeforeCallback:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer destroyed before callback");
++        break;
+       case WGPUBufferMapAsyncStatus_UnmappedBeforeCallback:
+-      case WGPUBufferMapAsyncStatus_Unknown:
+-      default:
+-        assert(false);
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer unmapped before callback");
++        break;
++      case WGPUBufferMapAsyncStatus_MappingAlreadyPending:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer already has a mapping pending completion");
++        break;
++      case WGPUBufferMapAsyncStatus_OffsetOutOfRange:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer offset out of range");
++        break;
++      case WGPUBufferMapAsyncStatus_SizeOutOfRange:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer size out of range");
+         break;
+       case WGPUBufferMapAsyncStatus_Success:
+       {
+@@ -611,6 +629,8 @@ void vtkWebGPURenderWindow::ReadPixels()
+         std::copy(mapped, mapped + ctx->size, ctx->dst->GetPointer(0));
+       }
+       break;
++      default:
++        break;
+     }
+     ctx->src.Unmap();
+   };
+-- 
+GitLab
+
diff --git a/srcpkgs/vtk/patches/0002-stat64.patch b/srcpkgs/vtk/patches/0002-stat64.patch
new file mode 100644
index 00000000000000..01da6d55b01c56
--- /dev/null
+++ b/srcpkgs/vtk/patches/0002-stat64.patch
@@ -0,0 +1,170 @@
+From 0f4635e876560d00df58c809526435180d0b1912 Mon Sep 17 00:00:00 2001
+From: David Gobbi <david.gobbi@gmail.com>
+Date: Sun, 18 Aug 2024 09:24:26 -0600
+Subject: [PATCH] Prefer SystemTools::Stat over system stat/stat64
+
+This keeps all of the stat() calls in VTK centralized (except the
+ones implemented in ThirdParty).  Note that kwsys no longer defines
+any LSF support macros since 2019, so this might impact the ability
+to use large files on some 32-bit platforms, but hopefully any
+platforms where this is a concern will honor _FILE_OFFSET_BITS=64
+like 32-bit glibc does.
+---
+ IO/EnSight/vtkEnSight6BinaryReader.cxx    | 28 ++-----------
+ IO/EnSight/vtkEnSightGoldBinaryReader.cxx | 25 +-----------
+ IO/LSDyna/LSDynaFamily.cxx                | 48 +----------------------
+ 3 files changed, 8 insertions(+), 93 deletions(-)
+
+diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+index 167e63efd41..1f26a171c26 100644
+--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
++++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+@@ -18,33 +18,13 @@
+ #include "vtkUnstructuredGrid.h"
+ #include "vtksys/Encoding.hxx"
+ #include "vtksys/FStream.hxx"
++#include "vtksys/SystemTools.hxx"
+ 
+ #include <cctype>
+ #include <string>
+-#include <sys/stat.h>
+-
+-#if defined(_WIN32)
+-#define VTK_STAT_STRUCT struct _stat64
+-#define VTK_STAT_FUNC _stat64
+-#elif defined _DARWIN_FEATURE_64_BIT_INODE || defined __FreeBSD__ || defined __NetBSD__ ||         \
+-  defined __OpenBSD__
+-// The BSDs use stat().
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#elif defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#else
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#endif
+-#else
+-// here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+-// us on POSIX without resorting to using stat64.
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#endif
++
++#define VTK_STAT_STRUCT vtksys::SystemTools::Stat_t
++#define VTK_STAT_FUNC vtksys::SystemTools::Stat
+ 
+ VTK_ABI_NAMESPACE_BEGIN
+ vtkStandardNewMacro(vtkEnSight6BinaryReader);
+diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+index ff8cad7bd46..75c126a2b0c 100644
+--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
++++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+@@ -26,31 +26,10 @@
+ #include <map>
+ #include <numeric>
+ #include <string>
+-#include <sys/stat.h>
+ #include <vector>
+ 
+-#if defined(_WIN32)
+-#define VTK_STAT_STRUCT struct _stat64
+-#define VTK_STAT_FUNC _stat64
+-#elif defined _DARWIN_FEATURE_64_BIT_INODE || defined __FreeBSD__ || defined __NetBSD__ ||         \
+-  defined __OpenBSD__
+-// The BSDs use stat().
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#elif defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#else
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#endif
+-#else
+-// here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+-// us on POSIX without resorting to using stat64.
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#endif
++#define VTK_STAT_STRUCT vtksys::SystemTools::Stat_t
++#define VTK_STAT_FUNC vtksys::SystemTools::Stat
+ 
+ VTK_ABI_NAMESPACE_BEGIN
+ class vtkEnSightGoldBinaryReader::vtkUtilities
+diff --git a/IO/LSDyna/LSDynaFamily.cxx b/IO/LSDyna/LSDynaFamily.cxx
+index fdb914ab6fa..1574d97b281 100644
+--- a/IO/LSDyna/LSDynaFamily.cxx
++++ b/IO/LSDyna/LSDynaFamily.cxx
+@@ -18,44 +18,6 @@
+ VTK_ABI_NAMESPACE_BEGIN
+ namespace
+ {
+-// Decide which of 3 stat varieties to use: stat, stat64, __stat64
+-// Usually stat uses 32 bit fields, and stat64 (with underscores in Windows) uses 64 bit fields.
+-// But on the BSDs, stat uses 64 bit fields these days.
+-#if (VTK_SIZEOF_ID_TYPE == 8) && !defined(_DARWIN_FEATURE_64_BIT_INODE) &&                         \
+-  !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+-#ifndef _WIN32
+-#if defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define USE_STAT_64
+-#else
+-#define USE_STAT
+-#endif
+-#else
+-#define USE_STAT_64
+-#endif
+-#else
+-#define USE_WIN_STAT_64
+-#endif
+-#else
+-#define USE_STAT
+-#endif
+-
+-#if defined(USE_STAT_64)
+-int LS_DYNA_STAT(const char* fname, struct stat64& s)
+-{
+-  return stat64(fname, &s);
+-}
+-#elif defined(USE_WIN_STAT_64)
+-int LS_DYNA_STAT(const char* fname, struct __stat64& s)
+-{
+-  return __stat64(fname, &s);
+-}
+-#elif defined(USE_STAT)
+-int LS_DYNA_STAT(const char* fname, struct stat& s)
+-{
+-  return stat(fname, &s);
+-}
+-#endif
+ 
+ vtkLSDynaFile_t VTK_LSDYNA_OPENFILE(const char* fname)
+ {
+@@ -205,18 +167,12 @@ int LSDynaFamily::ScanDatabaseDirectory()
+   int adaptLevel = 0;
+   int tryAdapt = 0; // don't try an adaptive step unless we have one good file at the current level.
+   bool adapted = true; // true when advancing over a mesh adaptation.
+-#if defined(USE_WIN_STAT_64)
+-  struct __stat64 st;
+-#elif defined(USE_STAT_64)
+-  struct stat64 st;
+-#elif defined(USE_STAT)
+-  struct stat st;
+-#endif
++  vtksys::SystemTools::Stat_t st;
+   while (tryAdapt >= 0)
+   {
+     tmpFile = vtkLSGetFamilyFileName(
+       this->DatabaseDirectory.c_str(), this->DatabaseBaseName, adaptLevel, filenum);
+-    if (LS_DYNA_STAT(tmpFile.c_str(), st) == 0)
++    if (vtksys::SystemTools::Stat(tmpFile.c_str(), &st) == 0)
+     {
+       if (adapted)
+       {
+-- 
+GitLab
+
diff --git a/srcpkgs/vtk/patches/gcc13.patch b/srcpkgs/vtk/patches/gcc13.patch
deleted file mode 100644
index d0ba2017b70ca0..00000000000000
--- a/srcpkgs/vtk/patches/gcc13.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Source: https://src.fedoraproject.org/rpms/vtk/blob/1a12f28665b2f24537b98fcf4b3fb3a176fa7fba/f/vtk-include.patch
-
-diff -up VTK-9.2.5/IO/Image/vtkSEPReader.h.include VTK-9.2.5/IO/Image/vtkSEPReader.h
---- VTK-9.2.5/IO/Image/vtkSEPReader.h.include	2023-01-05 08:51:35.000000000 -0700
-+++ VTK-9.2.5/IO/Image/vtkSEPReader.h	2023-01-17 07:43:41.988095734 -0700
-@@ -26,6 +26,7 @@
- #include "vtkNew.h" // for ivars
- 
- #include <array>  // for std::array
-+#include <cstdint> // for std::uint8_t
- #include <string> // for std::string
- 
- namespace details
diff --git a/srcpkgs/vtk/patches/vtkioss-unistd.patch b/srcpkgs/vtk/patches/vtkioss-unistd.patch
index df43a1fe5bba9c..d07abb59fe5edd 100644
--- a/srcpkgs/vtk/patches/vtkioss-unistd.patch
+++ b/srcpkgs/vtk/patches/vtkioss-unistd.patch
@@ -11,9 +11,9 @@ index ca5f15de..99c2bbdd 100644
  #else
 -#include <sys/unistd.h>
 +#include <unistd.h>
- #endif
- 
- #ifdef SEACAS_HAVE_MPI
+ #if defined(__APPLE__) && defined(__MACH__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
 @@ -35,9 +35,6 @@
  
  #include <cstdio>
diff --git a/srcpkgs/vtk/template b/srcpkgs/vtk/template
index 189591d55725a7..5d87abde765f37 100644
--- a/srcpkgs/vtk/template
+++ b/srcpkgs/vtk/template
@@ -1,7 +1,7 @@
 # Template file for 'vtk'
 pkgname=vtk
-version=9.2.6
-revision=3
+version=9.3.1
+revision=1
 build_style=cmake
 # vtk can be huge, especially with -DVTK_BUILD_ALL_MODULES=ON"
 # Build only the core modules plus python bindings for now
@@ -14,6 +14,7 @@ configure_args="-DBUILD_SHARED_LIBS=ON -DVTK_FORBID_DOWNLOADS=ON
  -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_cgns=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
  -DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3"
 # vtk forks libharu, bumps to v2.4.0, and requires libharu>=2.4.0
 makedepends="zlib-devel freetype-devel liblz4-devel expat-devel MesaLib-devel
@@ -26,7 +27,7 @@ maintainer="Piraty <mail@piraty.dev>"
 license="BSD-3-Clause"
 homepage="https://www.vtk.org"
 distfiles="https://www.vtk.org/files/release/${version:0:3}/VTK-${version}.tar.gz"
-checksum=06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12
+checksum=8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8
 
 if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 	makedepends+=" libexecinfo-devel"

From 2c44a6649e34faddcd60a33155a4accbf1a0683d Mon Sep 17 00:00:00 2001
From: Daniel Martinez <danielmartinez@cock.li>
Date: Mon, 30 Sep 2024 21:27:52 -0400
Subject: [PATCH 2/2] freecad: rebuild for vtk-9.3.1.

---
 srcpkgs/freecad/patches/vtk.patch | 32 +++++++++++++++++++++++++++++++
 srcpkgs/freecad/template          |  2 +-
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/freecad/patches/vtk.patch

diff --git a/srcpkgs/freecad/patches/vtk.patch b/srcpkgs/freecad/patches/vtk.patch
new file mode 100644
index 00000000000000..bcaf68d0855e65
--- /dev/null
+++ b/srcpkgs/freecad/patches/vtk.patch
@@ -0,0 +1,32 @@
+diff --git a/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx b/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
+index 7f89573efd..47a52fe585 100644
+--- a/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
++++ b/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
+@@ -39,10 +39,6 @@
+  #define SMDS_EXPORT
+ #endif
+ 
+-#ifdef VTK_HAS_MTIME_TYPE
+ #define VTK_MTIME_TYPE vtkMTimeType
+-#else
+-#define VTK_MTIME_TYPE unsigned long
+-#endif
+ 
+ #endif
+diff --git a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
+index 7e3de0070a..e9895d6157 100644
+--- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
++++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
+@@ -1026,7 +1026,12 @@ void SMDS_UnstructuredGrid::BuildLinks()
+   GetLinks()->Allocate(this->GetNumberOfPoints());
+   GetLinks()->Register(this);
+ //FIXME: vtk9
++  #if VTK_VERSION_NUMBER < VTK_VERSION_CHECK(9,3,0)
+   GetLinks()->BuildLinks(this);
++  #else
++  GetLinks()->SetDataSet(this);
++  GetLinks()->BuildLinks();
++  #endif
+   GetLinks()->Delete();
+ #else
+   this->Links = SMDS_CellLinks::New();
diff --git a/srcpkgs/freecad/template b/srcpkgs/freecad/template
index 2c0e80315116fd..3d5e31790bb62b 100644
--- a/srcpkgs/freecad/template
+++ b/srcpkgs/freecad/template
@@ -1,7 +1,7 @@
 # Template file for 'freecad'
 pkgname=freecad
 version=0.21.2
-revision=1
+revision=2
 build_wrksrc="FreeCAD-${version}"
 build_style=cmake
 pycompile_dirs="usr/lib/${pkgname}/Mod"

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Updated] vtk: update to 9.3.1.
  2024-09-30 22:52 [PR PATCH] vtk: update to 9.3.1 Calandracas606
  2024-10-01  1:28 ` [PR PATCH] [Updated] " Calandracas606
@ 2024-10-01  1:30 ` Calandracas606
  2024-10-01 13:15 ` [PR PATCH] [Merged]: " abenson
  2 siblings, 0 replies; 4+ messages in thread
From: Calandracas606 @ 2024-10-01  1:30 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1256 bytes --]

There is an updated pull request by Calandracas606 against master on the void-packages repository

https://github.com/Calandracas606/void-packages vtk
https://github.com/void-linux/void-packages/pull/52432

vtk: update to 9.3.1.
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **briefly**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->

#### Local build testing
- I built this PR locally for my native architecture, aarch64-musl
- I built this PR locally for these architectures:
  - x86_64
  - x86_64-musl
  - aarch64

nocross since depends on hdf5 which is nocross


A patch file from https://github.com/void-linux/void-packages/pull/52432.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-vtk-52432.patch --]
[-- Type: text/x-diff, Size: 37735 bytes --]

From 9aaf45bd26d12dd4f7698d0ff7029bfb162b3d08 Mon Sep 17 00:00:00 2001
From: Daniel Martinez <danielmartinez@cock.li>
Date: Mon, 30 Sep 2024 18:42:57 -0400
Subject: [PATCH 1/2] vtk: update to 9.3.1.

---
 common/shlibs                            | 220 ++++++-------
 srcpkgs/vtk/patches/0001-stat64.patch    | 390 +++++++++++++++++++++++
 srcpkgs/vtk/patches/0002-stat64.patch    | 170 ++++++++++
 srcpkgs/vtk/patches/gcc13.patch          |  13 -
 srcpkgs/vtk/patches/vtkioss-unistd.patch |   6 +-
 srcpkgs/vtk/template                     |   7 +-
 6 files changed, 677 insertions(+), 129 deletions(-)
 create mode 100644 srcpkgs/vtk/patches/0001-stat64.patch
 create mode 100644 srcpkgs/vtk/patches/0002-stat64.patch
 delete mode 100644 srcpkgs/vtk/patches/gcc13.patch

diff --git a/common/shlibs b/common/shlibs
index e03048c75bc428..222ce710d934b9 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3343,116 +3343,116 @@ libgnuradio-pdu.so.3.10.10 gnuradio-3.10.10.0_1
 libgnuradio-osmosdr.so.0.2.0 gnuradio-osmosdr-0.2.0_1
 libflann_cpp.so.1.9 flann-1.9.1_1
 libflann.so.1.9 flann-1.9.1_1
-libvtkCommonCore-9.2.so.1 vtk-9.2.2_1
-libvtksys-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMisc-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkCommonTransforms-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMath-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLOD-9.2.so.1 vtk-9.2.2_1
-libvtkViewsInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkIOIOSS-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLabel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersPoints-9.2.so.1 vtk-9.2.2_1
-libvtkCommonExecutionModel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingHyperTreeGrid-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkCommonDataModel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTopology-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSources-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolumeOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOOggTheora-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportGL2PS-9.2.so.1 vtk-9.2.2_1
-libvtkIOAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOCesium3DTiles-9.2.so.1 vtk-9.2.2_1
-libvtkIOSegY-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVtkJS-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTexture-9.2.so.1 vtk-9.2.2_1
-libvtkIOVideo-9.2.so.1 vtk-9.2.2_1
-libvtkImagingSources-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStencil-9.2.so.1 vtk-9.2.2_1
-libvtkIOCGNSReader-9.2.so.1 vtk-9.2.2_1
-libvtkCommonComputationalGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkIOVeraOut-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionImage-9.2.so.1 vtk-9.2.2_1
-libvtkChartsCore-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkImagingHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkGeovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionWidgets-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersImaging-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersVerdict-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSMP-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingUI-9.2.so.1 vtk-9.2.2_1
-libvtkIOHDF-9.2.so.1 vtk-9.2.2_1
-libvtkCommonSystem-9.2.so.1 vtk-9.2.2_1
-libvtkImagingColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingSceneGraph-9.2.so.1 vtk-9.2.2_1
-libvtkParallelCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkImagingFourier-9.2.so.1 vtk-9.2.2_1
-libvtkCommonColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingAnnotation-9.2.so.1 vtk-9.2.2_1
-libvtkIOSQL-9.2.so.1 vtk-9.2.2_1
-libvtkIOImage-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersExtraction-9.2.so.1 vtk-9.2.2_1
-libvtkIOGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersFlowPaths-9.2.so.1 vtk-9.2.2_1
-libvtkIOMovie-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolume-9.2.so.1 vtk-9.2.2_1
-libvtkIOEnSight-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistryOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSelection-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersModeling-9.2.so.1 vtk-9.2.2_1
-libvtkViewsCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOMotionFX-9.2.so.1 vtk-9.2.2_1
-libvtkIOLSDyna-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContextOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingImage-9.2.so.1 vtk-9.2.2_1
-libvtkIOXMLParser-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMorphological-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallel-9.2.so.1 vtk-9.2.2_1
-libvtkViewsContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkIOImport-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLICOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkIOAsynchronous-9.2.so.1 vtk-9.2.2_1
-libvtkIOTecplotTable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCityGML-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMath-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallelXML-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingGL2PSOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneric-9.2.so.1 vtk-9.2.2_1
-libvtkIONetCDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisLayout-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHyperTree-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportPDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkIOXML-9.2.so.1 vtk-9.2.2_1
-libvtkIOChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionStyle-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOMINC-9.2.so.1 vtk-9.2.2_1
-libvtkTestingRendering-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallelImaging-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkIOExport-9.2.so.1 vtk-9.2.2_1
-libvtkIOCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersProgrammable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCONVERGECFD-9.2.so.1 vtk-9.2.2_1
-libvtkIOLegacy-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingFreeType-9.2.so.1 vtk-9.2.2_1
-libvtkIOPLY-9.2.so.1 vtk-9.2.2_1
-libvtkIOExodus-9.2.so.1 vtk-9.2.2_1
-libvtkkissfft-9.2.so.1 vtk-9.2.2_1
+libvtkCommonCore-9.3.so.1 vtk-9.3.0_1
+libvtksys-9.3.so.1 vtk-9.3.0_1
+libvtkCommonMisc-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingContext2D-9.3.so.1 vtk-9.3.0_1
+libvtkCommonTransforms-9.3.so.1 vtk-9.3.0_1
+libvtkCommonMath-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingLOD-9.3.so.1 vtk-9.3.0_1
+libvtkViewsInfovis-9.3.so.1 vtk-9.3.0_1
+libvtkIOIOSS-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingLabel-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersPoints-9.3.so.1 vtk-9.3.0_1
+libvtkCommonExecutionModel-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingHyperTreeGrid-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersGeometry-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersGeneral-9.3.so.1 vtk-9.3.0_1
+libvtkCommonDataModel-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersTopology-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersSources-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingVolumeOpenGL2-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingCore-9.3.so.1 vtk-9.3.0_1
+libvtkIOOggTheora-9.3.so.1 vtk-9.3.0_1
+libvtkIOExportGL2PS-9.3.so.1 vtk-9.3.0_1
+libvtkIOAMR-9.3.so.1 vtk-9.3.0_1
+libvtkIOCesium3DTiles-9.3.so.1 vtk-9.3.0_1
+libvtkIOSegY-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingVtkJS-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersTexture-9.3.so.1 vtk-9.3.0_1
+libvtkIOVideo-9.3.so.1 vtk-9.3.0_1
+libvtkImagingSources-9.3.so.1 vtk-9.3.0_1
+libvtkImagingStencil-9.3.so.1 vtk-9.3.0_1
+libvtkIOCGNSReader-9.3.so.1 vtk-9.3.0_1
+libvtkCommonComputationalGeometry-9.3.so.1 vtk-9.3.0_1
+libvtkIOVeraOut-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersHybrid-9.3.so.1 vtk-9.3.0_1
+libvtkInteractionImage-9.3.so.1 vtk-9.3.0_1
+libvtkChartsCore-9.3.so.1 vtk-9.3.0_1
+libvtkImagingStatistics-9.3.so.1 vtk-9.3.0_1
+libvtkImagingHybrid-9.3.so.1 vtk-9.3.0_1
+libvtkGeovisCore-9.3.so.1 vtk-9.3.0_1
+libvtkInteractionWidgets-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersImaging-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersVerdict-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersSMP-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingUI-9.3.so.1 vtk-9.3.0_1
+libvtkIOHDF-9.3.so.1 vtk-9.3.0_1
+libvtkCommonSystem-9.3.so.1 vtk-9.3.0_1
+libvtkImagingColor-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingSceneGraph-9.3.so.1 vtk-9.3.0_1
+libvtkParallelCore-9.3.so.1 vtk-9.3.0_1
+libvtkIOInfovis-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingOpenGL2-9.3.so.1 vtk-9.3.0_1
+libvtkImagingFourier-9.3.so.1 vtk-9.3.0_1
+libvtkCommonColor-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingAnnotation-9.3.so.1 vtk-9.3.0_1
+libvtkIOSQL-9.3.so.1 vtk-9.3.0_1
+libvtkIOImage-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersCore-9.3.so.1 vtk-9.3.0_1
+libvtkInfovisCore-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersExtraction-9.3.so.1 vtk-9.3.0_1
+libvtkIOGeometry-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersFlowPaths-9.3.so.1 vtk-9.3.0_1
+libvtkIOMovie-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingVolume-9.3.so.1 vtk-9.3.0_1
+libvtkIOEnSight-9.3.so.1 vtk-9.3.0_1
+libvtkDomainsChemistryOpenGL2-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersStatistics-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersSelection-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersModeling-9.3.so.1 vtk-9.3.0_1
+libvtkViewsCore-9.3.so.1 vtk-9.3.0_1
+libvtkIOMotionFX-9.3.so.1 vtk-9.3.0_1
+libvtkIOLSDyna-9.3.so.1 vtk-9.3.0_1
+libvtkIOParallel-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingContextOpenGL2-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingImage-9.3.so.1 vtk-9.3.0_1
+libvtkIOXMLParser-9.3.so.1 vtk-9.3.0_1
+libvtkImagingMorphological-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersParallel-9.3.so.1 vtk-9.3.0_1
+libvtkViewsContext2D-9.3.so.1 vtk-9.3.0_1
+libvtkIOImport-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingLICOpenGL2-9.3.so.1 vtk-9.3.0_1
+libvtkIOAsynchronous-9.3.so.1 vtk-9.3.0_1
+libvtkIOTecplotTable-9.3.so.1 vtk-9.3.0_1
+libvtkIOCityGML-9.3.so.1 vtk-9.3.0_1
+libvtkImagingMath-9.3.so.1 vtk-9.3.0_1
+libvtkIOParallelXML-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingGL2PSOpenGL2-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersGeneric-9.3.so.1 vtk-9.3.0_1
+libvtkIONetCDF-9.3.so.1 vtk-9.3.0_1
+libvtkImagingCore-9.3.so.1 vtk-9.3.0_1
+libvtkInfovisLayout-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersHyperTree-9.3.so.1 vtk-9.3.0_1
+libvtkIOExportPDF-9.3.so.1 vtk-9.3.0_1
+libvtkImagingGeneral-9.3.so.1 vtk-9.3.0_1
+libvtkIOXML-9.3.so.1 vtk-9.3.0_1
+libvtkIOChemistry-9.3.so.1 vtk-9.3.0_1
+libvtkInteractionStyle-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersAMR-9.3.so.1 vtk-9.3.0_1
+libvtkIOMINC-9.3.so.1 vtk-9.3.0_1
+libvtkTestingRendering-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersParallelImaging-9.3.so.1 vtk-9.3.0_1
+libvtkDomainsChemistry-9.3.so.1 vtk-9.3.0_1
+libvtkIOExport-9.3.so.1 vtk-9.3.0_1
+libvtkIOCore-9.3.so.1 vtk-9.3.0_1
+libvtkFiltersProgrammable-9.3.so.1 vtk-9.3.0_1
+libvtkIOCONVERGECFD-9.3.so.1 vtk-9.3.0_1
+libvtkIOLegacy-9.3.so.1 vtk-9.3.0_1
+libvtkRenderingFreeType-9.3.so.1 vtk-9.3.0_1
+libvtkIOPLY-9.3.so.1 vtk-9.3.0_1
+libvtkIOExodus-9.3.so.1 vtk-9.3.0_1
+libvtkkissfft-9.3.so.1 vtk-9.3.0_1
 libvolume_key.so.1 volume_key-0.3.9_1
 librand48_r.so.0 rand48_r-0.1_1
 libxxhash.so.0 libxxHash-0.6.5_2
diff --git a/srcpkgs/vtk/patches/0001-stat64.patch b/srcpkgs/vtk/patches/0001-stat64.patch
new file mode 100644
index 00000000000000..aa673d2b6e9266
--- /dev/null
+++ b/srcpkgs/vtk/patches/0001-stat64.patch
@@ -0,0 +1,390 @@
+From 748572894e96b1eab4089da912441ae1b588b2aa Mon Sep 17 00:00:00 2001
+From: Jaswant Panchumarti <jaswant.panchumarti@kitware.com>
+Date: Wed, 30 Aug 2023 15:24:16 -0400
+Subject: [PATCH] emsdk 3.1.45: get code to compile
+
+- closes vtk/vtk#19060.
+- disable IOExportGL2PS for WebAssembly.
+- handle stat64 vs stat for emscripten in LSDyna and Ensight readers.
+---
+ .../docs/advanced/build_wasm_emscripten.md    | 10 +++
+ .../release/dev/update-dawn-webgpu.md         |  6 ++
+ IO/EnSight/vtkEnSight6BinaryReader.cxx        |  8 ++
+ IO/EnSight/vtkEnSightGoldBinaryReader.cxx     |  8 ++
+ IO/ExportGL2PS/vtk.module                     |  2 +-
+ IO/LSDyna/LSDynaFamily.cxx                    |  8 ++
+ Rendering/WebGPU/vtkWGPUContext.cxx           | 77 ++++++-------------
+ Rendering/WebGPU/vtkWebGPUActor.cxx           |  5 ++
+ .../WebGPU/vtkWebGPUInternalsShaderModule.cxx |  2 +-
+ Rendering/WebGPU/vtkWebGPURenderWindow.cxx    | 38 ++++++---
+ 10 files changed, 98 insertions(+), 66 deletions(-)
+ create mode 100644 Documentation/release/dev/update-dawn-webgpu.md
+
+diff --git a/Documentation/docs/advanced/build_wasm_emscripten.md b/Documentation/docs/advanced/build_wasm_emscripten.md
+index ceb50ce1115..c58b1a269c3 100644
+--- a/Documentation/docs/advanced/build_wasm_emscripten.md
++++ b/Documentation/docs/advanced/build_wasm_emscripten.md
+@@ -54,6 +54,16 @@ For this guide, you will need the following:
+ These instructions use a specific convention for the source, build and install directories that is appropriate when building VTK for wasm inside
+ a docker container. Please replace these _root-directory_ paths if VTK is being built outside a docker container.
+ 
++### Install emscripten ports (IMPORTANT!)
++Emscripten uses SDL2 to connect user input events to the browser event subsystem. The SDL2 port
++will need to be built if this is the first time you downloaded the EMSDK. The `embuilder` script
++will be on the path if you installed and activated EMSDK as described in the prerequisites.
++```bash
++$ embuilder build sdl2
++```
++
++### Build VTK
++
+ 1. Configure the project with CMake. `emcmake` tells CMake to use the `emscripten` toolchain for cross compilation.
+ 
+ ```bash
+diff --git a/Documentation/release/dev/update-dawn-webgpu.md b/Documentation/release/dev/update-dawn-webgpu.md
+new file mode 100644
+index 00000000000..faa8f53bbbe
+--- /dev/null
++++ b/Documentation/release/dev/update-dawn-webgpu.md
+@@ -0,0 +1,6 @@
++# Update Dawn/WebGPU API in the WebGPU backend
++
++- `WGPUShaderModuleWGSLDescriptor::source` has now been renamed to `WGPUShaderModuleWGSLDescriptor::code`.
++- `SetDeviceLostCallback`(deprecated by webgpu) has been removed in favor of `WGPUDeviceDescriptor::deviceLostCallback` member.
++- `dawn::native::GetAdapter` (deprecated by dawn) has now been renamed to `dawn::native::EnumerateAdapters`.
++- `wgpu::RenderBundleEncoder::colorFormatsCount` (deprecated by webgpu) has now been renamed to `colorFormatCount`. However, emscripten still uses the version of webgpu which shipped with `colorFormatsCount`, so in webassembly, `colorFormatsCount` continues to be used. We will change this after emscripten updates it's webgpu headers.
+diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+index 2cd04c9755b..167e63efd41 100644
+--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
++++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+@@ -31,6 +31,14 @@
+ // The BSDs use stat().
+ #define VTK_STAT_STRUCT struct stat
+ #define VTK_STAT_FUNC stat
++#elif defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
++#define VTK_STAT_STRUCT struct stat64
++#define VTK_STAT_FUNC stat64
++#else
++#define VTK_STAT_STRUCT struct stat
++#define VTK_STAT_FUNC stat
++#endif
+ #else
+ // here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+ // us on POSIX without resorting to using stat64.
+diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+index e3c81bd5e8c..c374f9879bf 100644
+--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
++++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+@@ -37,6 +37,14 @@
+ // The BSDs use stat().
+ #define VTK_STAT_STRUCT struct stat
+ #define VTK_STAT_FUNC stat
++#elif defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
++#define VTK_STAT_STRUCT struct stat64
++#define VTK_STAT_FUNC stat64
++#else
++#define VTK_STAT_STRUCT struct stat
++#define VTK_STAT_FUNC stat
++#endif
+ #else
+ // here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+ // us on POSIX without resorting to using stat64.
+diff --git a/IO/ExportGL2PS/vtk.module b/IO/ExportGL2PS/vtk.module
+index d72b75b482e..97038c7fb17 100644
+--- a/IO/ExportGL2PS/vtk.module
++++ b/IO/ExportGL2PS/vtk.module
+@@ -3,7 +3,7 @@ NAME
+ LIBRARY_NAME
+   vtkIOExportGL2PS
+ CONDITION
+-  NOT ANDROID AND NOT APPLE_IOS AND NOT VTK_OPENGL_USE_GLES
++  NOT ANDROID AND NOT APPLE_IOS AND NOT EMSCRIPTEN AND NOT VTK_OPENGL_USE_GLES
+ IMPLEMENTABLE
+ IMPLEMENTS
+   VTK::IOExportGL2PS
+diff --git a/IO/LSDyna/LSDynaFamily.cxx b/IO/LSDyna/LSDynaFamily.cxx
+index 15755d06840..fdb914ab6fa 100644
+--- a/IO/LSDyna/LSDynaFamily.cxx
++++ b/IO/LSDyna/LSDynaFamily.cxx
+@@ -24,8 +24,16 @@ namespace
+ #if (VTK_SIZEOF_ID_TYPE == 8) && !defined(_DARWIN_FEATURE_64_BIT_INODE) &&                         \
+   !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+ #ifndef _WIN32
++#if defined __EMSCRIPTEN__
++#if defined _LARGEFILE64_SOURCE
+ #define USE_STAT_64
+ #else
++#define USE_STAT
++#endif
++#else
++#define USE_STAT_64
++#endif
++#else
+ #define USE_WIN_STAT_64
+ #endif
+ #else
+diff --git a/Rendering/WebGPU/vtkWGPUContext.cxx b/Rendering/WebGPU/vtkWGPUContext.cxx
+index d0400786707..b280022873a 100644
+--- a/Rendering/WebGPU/vtkWGPUContext.cxx
++++ b/Rendering/WebGPU/vtkWGPUContext.cxx
+@@ -73,7 +73,7 @@ static void WaitABit()
+ 
+ }
+ namespace vtkWGPUImpl = vtkWGPUEmscriptenImpl;
+-#elif VTK_USE_DAWN_NATIVE
++#elif VTK_USE_DAWN_WEBGPU
+ #include <cstring>
+ #include <dawn/dawn_proc.h>
+ #include <dawn/native/DawnNative.h>
+@@ -88,11 +88,11 @@ static struct
+   struct
+   {
+     DawnProcTable ProcTable;
+-    std::unique_ptr<dawn_native::Instance> Instance = nullptr;
++    std::unique_ptr<dawn::native::Instance> Instance = nullptr;
+   } DawnNativeEntryPoint;
+   struct
+   {
+-    dawn_native::Adapter Handle;
++    dawn::native::Adapter Handle;
+     wgpu::BackendType DawnBackendType;
+     struct
+     {
+@@ -113,10 +113,10 @@ static void Initialize()
+   }
+ 
+   // Set up the native procs for the global proctable
+-  GPUContext.DawnNativeEntryPoint.ProcTable = dawn_native::GetProcs();
++  GPUContext.DawnNativeEntryPoint.ProcTable = dawn::native::GetProcs();
+   dawnProcSetProcs(&GPUContext.DawnNativeEntryPoint.ProcTable);
+   GPUContext.DawnNativeEntryPoint.Instance =
+-    std::unique_ptr<dawn_native::Instance>(new dawn_native::Instance());
++    std::unique_ptr<dawn::native::Instance>(new dawn::native::Instance());
+   GPUContext.DawnNativeEntryPoint.Instance->DiscoverDefaultAdapters();
+   GPUContext.DawnNativeEntryPoint.Instance->EnableBackendValidation(true);
+ 
+@@ -125,16 +125,12 @@ static void Initialize()
+   // are the preferred on their respective platforms, and Vulkan is preferred to
+   // OpenGL
+   GPUContext.Adapter.DawnBackendType =
+-#if defined(VTK_DAWN_ENABLE_BACKEND_D3D12)
++#if defined(_WIN32)
+     wgpu::BackendType::D3D12;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_METAL)
++#elif defined(__APPLE__)
+     wgpu::BackendType::Metal;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_VULKAN)
+-    wgpu::BackendType::Vulkan;
+-#elif defined(VTK_DAWN_ENABLE_BACKEND_OPENGL)
+-    wgpu::BackendType::OpenGL;
+ #else
+-#error
++    wgpu::BackendType::Vulkan;
+ #endif
+   GPUContext.Adapter.Handle = nullptr;
+   GPUContext.Initialized = true;
+@@ -159,48 +155,19 @@ static wgpu::Adapter RequestAdapter(const wgpu::RequestAdapterOptions& options)
+ {
+   Initialize();
+ 
+-  // Search available adapters for a good match, in the
+-  // following priority order
+-  std::vector<wgpu::AdapterType> typePriority;
+-  if (options.powerPreference == wgpu::PowerPreference::LowPower)
+-  {
+-    // low power
+-    typePriority = std::vector<wgpu::AdapterType>{
+-      wgpu::AdapterType::IntegratedGPU,
+-      wgpu::AdapterType::DiscreteGPU,
+-      wgpu::AdapterType::CPU,
+-    };
+-  }
+-  else if (options.powerPreference == wgpu::PowerPreference::HighPerformance)
+-  {
+-    // high performance
+-    typePriority = std::vector<wgpu::AdapterType>{
+-      wgpu::AdapterType::DiscreteGPU,
+-      wgpu::AdapterType::IntegratedGPU,
+-      wgpu::AdapterType::CPU,
+-    };
+-  }
+-
+-  std::vector<dawn_native::Adapter> adapters =
+-    GPUContext.DawnNativeEntryPoint.Instance->GetAdapters();
+-  for (auto reqType : typePriority)
++  std::vector<dawn::native::Adapter> adapters =
++    GPUContext.DawnNativeEntryPoint.Instance->EnumerateAdapters(&options);
++  for (const dawn::native::Adapter& adapter : adapters)
+   {
+-    for (const dawn_native::Adapter& adapter : adapters)
+-    {
+-      wgpu::AdapterProperties ap;
+-      adapter.GetProperties(&ap);
+-      if (ap.adapterType == reqType &&
+-        (reqType == wgpu::AdapterType::CPU || ap.backendType == GPUContext.Adapter.DawnBackendType))
+-      {
+-        GPUContext.Adapter.Handle = adapter;
+-        SetAdapterInfo(ap);
+-        std::string msg = vtkfmt::format(
+-          "Selected adapter {0} (device={1:#x} vendor={2:#x} type={3}/{4})", ap.name, ap.deviceID,
+-          ap.vendorID, GPUContext.Adapter.Info.TypeName, GPUContext.Adapter.Info.BackendName);
+-        vtkWGPUContextLog(msg);
+-        return wgpu::Adapter(GPUContext.Adapter.Handle.Get());
+-      }
+-    }
++    GPUContext.Adapter.Handle = adapter;
++    wgpu::AdapterProperties ap;
++    adapter.GetProperties(&ap);
++    SetAdapterInfo(ap);
++    std::string msg = vtkfmt::format(
++      "Selected adapter {0} (device={1:#x} vendor={2:#x} type={3}/{4})", ap.name, ap.deviceID,
++      ap.vendorID, GPUContext.Adapter.Info.TypeName, GPUContext.Adapter.Info.BackendName);
++    vtkWGPUContextLog(msg);
++    return wgpu::Adapter(GPUContext.Adapter.Handle.Get());
+   }
+ 
+   return nullptr;
+@@ -234,7 +201,7 @@ static void LogAvailableAdapters()
+ 
+   std::stringstream msg;
+   msg << "Available adapters:\n";
+-  for (auto&& a : GPUContext.DawnNativeEntryPoint.Instance->GetAdapters())
++  for (auto&& a : GPUContext.DawnNativeEntryPoint.Instance->EnumerateAdapters())
+   {
+     wgpu::AdapterProperties p;
+     a.GetProperties(&p);
+@@ -297,7 +264,7 @@ static const char* AdapterTypeName(wgpu::AdapterType t)
+ }
+ }
+ namespace vtkWGPUImpl = vtkWGPUDawnImpl;
+-#endif // VTK_USE_DAWN_NATIVE
++#endif // VTK_USE_DAWN_WEBGPU
+ 
+ //------------------------------------------------------------------------------
+ void vtkWGPUContext::LogAvailableAdapters()
+diff --git a/Rendering/WebGPU/vtkWebGPUActor.cxx b/Rendering/WebGPU/vtkWebGPUActor.cxx
+index 4121547120e..63aa4d5ede1 100644
+--- a/Rendering/WebGPU/vtkWebGPUActor.cxx
++++ b/Rendering/WebGPU/vtkWebGPUActor.cxx
+@@ -79,7 +79,12 @@ wgpu::RenderBundle vtkWebGPUActor::RenderToBundle(vtkRenderer* ren, vtkMapper* m
+     const int sampleCount = wgpuRenWin->GetMultiSamples() ? wgpuRenWin->GetMultiSamples() : 1;
+ 
+     wgpu::RenderBundleEncoderDescriptor bundleEncDesc;
++#if __EMSCRIPTEN__
++    // FIXME: Update this after emscripten webgpu updates to colorFormatCount
+     bundleEncDesc.colorFormatsCount = 1;
++#else
++    bundleEncDesc.colorFormatCount = 1;
++#endif
+     bundleEncDesc.colorFormats = &colorFormat;
+     bundleEncDesc.depthStencilFormat = wgpuRenWin->GetDepthStencilFormat();
+     bundleEncDesc.sampleCount = sampleCount;
+diff --git a/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx b/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
+index 2d0731ac253..705fb9b59ac 100644
+--- a/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
++++ b/Rendering/WebGPU/vtkWebGPUInternalsShaderModule.cxx
+@@ -8,7 +8,7 @@ wgpu::ShaderModule vtkWebGPUInternalsShaderModule::CreateFromWGSL(
+   const wgpu::Device& device, const std::string& source)
+ {
+   wgpu::ShaderModuleWGSLDescriptor wgslDesc;
+-  wgslDesc.source = source.c_str();
++  wgslDesc.code = source.c_str();
+ 
+   wgpu::ShaderModuleDescriptor descriptor;
+   descriptor.nextInChain = &wgslDesc;
+diff --git a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
+index f0e824f0e54..95a7d7fd605 100644
+--- a/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
++++ b/Rendering/WebGPU/vtkWebGPURenderWindow.cxx
+@@ -61,8 +61,9 @@ void device_lost_callback(WGPUDeviceLostReason reason, char const* message, void
+     default:
+       reason_type_lbl = "Unknown";
+   }
+-  vtkErrorWithObjectMacro(reinterpret_cast<vtkObject*>(self),
+-    << "Device lost! Reason : " << message << " Reason Type: " << reason_type_lbl);
++  auto renWin = vtkRenderWindow::SafeDownCast(reinterpret_cast<vtkObject*>(self));
++  vtkWarningWithObjectMacro(
++    renWin, << "Device lost! Reason : " << message << " Reason Type: " << reason_type_lbl);
+ }
+ 
+ struct PixelReadDescriptor
+@@ -136,6 +137,8 @@ bool vtkWebGPURenderWindow::WGPUInit()
+   this->Adapter = vtkWGPUContext::RequestAdapter(options);
+   wgpu::DeviceDescriptor deviceDescriptor = {};
+   deviceDescriptor.label = "vtkWebGPURenderWindow::WGPUInit";
++  deviceDescriptor.deviceLostCallback = &device_lost_callback;
++  deviceDescriptor.deviceLostUserdata = this;
+   ///@{ TODO: Populate feature requests
+   // ...
+   ///@}
+@@ -150,7 +153,6 @@ bool vtkWebGPURenderWindow::WGPUInit()
+   }
+   // install error handler
+   this->Device.SetUncapturedErrorCallback(&::print_wgpu_error, this);
+-  this->Device.SetDeviceLostCallback(&::device_lost_callback, this);
+   ///@}
+   return true;
+ }
+@@ -161,7 +163,6 @@ void vtkWebGPURenderWindow::WGPUFinalize()
+   vtkDebugMacro(<< __func__ << " WGPUInitialized=" << this->WGPUInitialized);
+   this->DestroyDepthStencilTexture();
+   this->DestroySwapChain();
+-  this->Device.SetDeviceLostCallback(nullptr, nullptr);
+   this->Device = nullptr;
+ }
+ 
+@@ -586,18 +587,35 @@ void vtkWebGPURenderWindow::ReadPixels()
+   this->BufferMapReadContext.src = this->ColorAttachment.OffscreenBuffer;
+   this->BufferMapReadContext.size = this->ColorAttachment.OffscreenBuffer.GetSize();
+   this->BufferMapReadContext.dst = this->CachedPixelBytes;
++  this->BufferMapReadContext.window = this;
+ 
+   auto onBufferMapped = [](WGPUBufferMapAsyncStatus status, void* userdata) {
+     auto ctx = reinterpret_cast<MappingContext*>(userdata);
+     switch (status)
+     {
+-      case WGPUBufferMapAsyncStatus_DestroyedBeforeCallback:
++      case WGPUBufferMapAsyncStatus_ValidationError:
++        vtkErrorWithObjectMacro(ctx->window, << "Validation error occurred");
++        break;
++      case WGPUBufferMapAsyncStatus_Unknown:
++        vtkErrorWithObjectMacro(ctx->window, << "Unknown error occurred");
++        break;
+       case WGPUBufferMapAsyncStatus_DeviceLost:
+-      case WGPUBufferMapAsyncStatus_Error:
++        vtkErrorWithObjectMacro(ctx->window, << "Device lost!");
++        break;
++      case WGPUBufferMapAsyncStatus_DestroyedBeforeCallback:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer destroyed before callback");
++        break;
+       case WGPUBufferMapAsyncStatus_UnmappedBeforeCallback:
+-      case WGPUBufferMapAsyncStatus_Unknown:
+-      default:
+-        assert(false);
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer unmapped before callback");
++        break;
++      case WGPUBufferMapAsyncStatus_MappingAlreadyPending:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer already has a mapping pending completion");
++        break;
++      case WGPUBufferMapAsyncStatus_OffsetOutOfRange:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer offset out of range");
++        break;
++      case WGPUBufferMapAsyncStatus_SizeOutOfRange:
++        vtkErrorWithObjectMacro(ctx->window, << "Buffer size out of range");
+         break;
+       case WGPUBufferMapAsyncStatus_Success:
+       {
+@@ -611,6 +629,8 @@ void vtkWebGPURenderWindow::ReadPixels()
+         std::copy(mapped, mapped + ctx->size, ctx->dst->GetPointer(0));
+       }
+       break;
++      default:
++        break;
+     }
+     ctx->src.Unmap();
+   };
+-- 
+GitLab
+
diff --git a/srcpkgs/vtk/patches/0002-stat64.patch b/srcpkgs/vtk/patches/0002-stat64.patch
new file mode 100644
index 00000000000000..01da6d55b01c56
--- /dev/null
+++ b/srcpkgs/vtk/patches/0002-stat64.patch
@@ -0,0 +1,170 @@
+From 0f4635e876560d00df58c809526435180d0b1912 Mon Sep 17 00:00:00 2001
+From: David Gobbi <david.gobbi@gmail.com>
+Date: Sun, 18 Aug 2024 09:24:26 -0600
+Subject: [PATCH] Prefer SystemTools::Stat over system stat/stat64
+
+This keeps all of the stat() calls in VTK centralized (except the
+ones implemented in ThirdParty).  Note that kwsys no longer defines
+any LSF support macros since 2019, so this might impact the ability
+to use large files on some 32-bit platforms, but hopefully any
+platforms where this is a concern will honor _FILE_OFFSET_BITS=64
+like 32-bit glibc does.
+---
+ IO/EnSight/vtkEnSight6BinaryReader.cxx    | 28 ++-----------
+ IO/EnSight/vtkEnSightGoldBinaryReader.cxx | 25 +-----------
+ IO/LSDyna/LSDynaFamily.cxx                | 48 +----------------------
+ 3 files changed, 8 insertions(+), 93 deletions(-)
+
+diff --git a/IO/EnSight/vtkEnSight6BinaryReader.cxx b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+index 167e63efd41..1f26a171c26 100644
+--- a/IO/EnSight/vtkEnSight6BinaryReader.cxx
++++ b/IO/EnSight/vtkEnSight6BinaryReader.cxx
+@@ -18,33 +18,13 @@
+ #include "vtkUnstructuredGrid.h"
+ #include "vtksys/Encoding.hxx"
+ #include "vtksys/FStream.hxx"
++#include "vtksys/SystemTools.hxx"
+ 
+ #include <cctype>
+ #include <string>
+-#include <sys/stat.h>
+-
+-#if defined(_WIN32)
+-#define VTK_STAT_STRUCT struct _stat64
+-#define VTK_STAT_FUNC _stat64
+-#elif defined _DARWIN_FEATURE_64_BIT_INODE || defined __FreeBSD__ || defined __NetBSD__ ||         \
+-  defined __OpenBSD__
+-// The BSDs use stat().
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#elif defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#else
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#endif
+-#else
+-// here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+-// us on POSIX without resorting to using stat64.
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#endif
++
++#define VTK_STAT_STRUCT vtksys::SystemTools::Stat_t
++#define VTK_STAT_FUNC vtksys::SystemTools::Stat
+ 
+ VTK_ABI_NAMESPACE_BEGIN
+ vtkStandardNewMacro(vtkEnSight6BinaryReader);
+diff --git a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+index ff8cad7bd46..75c126a2b0c 100644
+--- a/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
++++ b/IO/EnSight/vtkEnSightGoldBinaryReader.cxx
+@@ -26,31 +26,10 @@
+ #include <map>
+ #include <numeric>
+ #include <string>
+-#include <sys/stat.h>
+ #include <vector>
+ 
+-#if defined(_WIN32)
+-#define VTK_STAT_STRUCT struct _stat64
+-#define VTK_STAT_FUNC _stat64
+-#elif defined _DARWIN_FEATURE_64_BIT_INODE || defined __FreeBSD__ || defined __NetBSD__ ||         \
+-  defined __OpenBSD__
+-// The BSDs use stat().
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#elif defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#else
+-#define VTK_STAT_STRUCT struct stat
+-#define VTK_STAT_FUNC stat
+-#endif
+-#else
+-// here, we're relying on _FILE_OFFSET_BITS defined in vtkWin32Header.h to help
+-// us on POSIX without resorting to using stat64.
+-#define VTK_STAT_STRUCT struct stat64
+-#define VTK_STAT_FUNC stat64
+-#endif
++#define VTK_STAT_STRUCT vtksys::SystemTools::Stat_t
++#define VTK_STAT_FUNC vtksys::SystemTools::Stat
+ 
+ VTK_ABI_NAMESPACE_BEGIN
+ class vtkEnSightGoldBinaryReader::vtkUtilities
+diff --git a/IO/LSDyna/LSDynaFamily.cxx b/IO/LSDyna/LSDynaFamily.cxx
+index fdb914ab6fa..1574d97b281 100644
+--- a/IO/LSDyna/LSDynaFamily.cxx
++++ b/IO/LSDyna/LSDynaFamily.cxx
+@@ -18,44 +18,6 @@
+ VTK_ABI_NAMESPACE_BEGIN
+ namespace
+ {
+-// Decide which of 3 stat varieties to use: stat, stat64, __stat64
+-// Usually stat uses 32 bit fields, and stat64 (with underscores in Windows) uses 64 bit fields.
+-// But on the BSDs, stat uses 64 bit fields these days.
+-#if (VTK_SIZEOF_ID_TYPE == 8) && !defined(_DARWIN_FEATURE_64_BIT_INODE) &&                         \
+-  !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+-#ifndef _WIN32
+-#if defined __EMSCRIPTEN__
+-#if defined _LARGEFILE64_SOURCE
+-#define USE_STAT_64
+-#else
+-#define USE_STAT
+-#endif
+-#else
+-#define USE_STAT_64
+-#endif
+-#else
+-#define USE_WIN_STAT_64
+-#endif
+-#else
+-#define USE_STAT
+-#endif
+-
+-#if defined(USE_STAT_64)
+-int LS_DYNA_STAT(const char* fname, struct stat64& s)
+-{
+-  return stat64(fname, &s);
+-}
+-#elif defined(USE_WIN_STAT_64)
+-int LS_DYNA_STAT(const char* fname, struct __stat64& s)
+-{
+-  return __stat64(fname, &s);
+-}
+-#elif defined(USE_STAT)
+-int LS_DYNA_STAT(const char* fname, struct stat& s)
+-{
+-  return stat(fname, &s);
+-}
+-#endif
+ 
+ vtkLSDynaFile_t VTK_LSDYNA_OPENFILE(const char* fname)
+ {
+@@ -205,18 +167,12 @@ int LSDynaFamily::ScanDatabaseDirectory()
+   int adaptLevel = 0;
+   int tryAdapt = 0; // don't try an adaptive step unless we have one good file at the current level.
+   bool adapted = true; // true when advancing over a mesh adaptation.
+-#if defined(USE_WIN_STAT_64)
+-  struct __stat64 st;
+-#elif defined(USE_STAT_64)
+-  struct stat64 st;
+-#elif defined(USE_STAT)
+-  struct stat st;
+-#endif
++  vtksys::SystemTools::Stat_t st;
+   while (tryAdapt >= 0)
+   {
+     tmpFile = vtkLSGetFamilyFileName(
+       this->DatabaseDirectory.c_str(), this->DatabaseBaseName, adaptLevel, filenum);
+-    if (LS_DYNA_STAT(tmpFile.c_str(), st) == 0)
++    if (vtksys::SystemTools::Stat(tmpFile.c_str(), &st) == 0)
+     {
+       if (adapted)
+       {
+-- 
+GitLab
+
diff --git a/srcpkgs/vtk/patches/gcc13.patch b/srcpkgs/vtk/patches/gcc13.patch
deleted file mode 100644
index d0ba2017b70ca0..00000000000000
--- a/srcpkgs/vtk/patches/gcc13.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Source: https://src.fedoraproject.org/rpms/vtk/blob/1a12f28665b2f24537b98fcf4b3fb3a176fa7fba/f/vtk-include.patch
-
-diff -up VTK-9.2.5/IO/Image/vtkSEPReader.h.include VTK-9.2.5/IO/Image/vtkSEPReader.h
---- VTK-9.2.5/IO/Image/vtkSEPReader.h.include	2023-01-05 08:51:35.000000000 -0700
-+++ VTK-9.2.5/IO/Image/vtkSEPReader.h	2023-01-17 07:43:41.988095734 -0700
-@@ -26,6 +26,7 @@
- #include "vtkNew.h" // for ivars
- 
- #include <array>  // for std::array
-+#include <cstdint> // for std::uint8_t
- #include <string> // for std::string
- 
- namespace details
diff --git a/srcpkgs/vtk/patches/vtkioss-unistd.patch b/srcpkgs/vtk/patches/vtkioss-unistd.patch
index df43a1fe5bba9c..d07abb59fe5edd 100644
--- a/srcpkgs/vtk/patches/vtkioss-unistd.patch
+++ b/srcpkgs/vtk/patches/vtkioss-unistd.patch
@@ -11,9 +11,9 @@ index ca5f15de..99c2bbdd 100644
  #else
 -#include <sys/unistd.h>
 +#include <unistd.h>
- #endif
- 
- #ifdef SEACAS_HAVE_MPI
+ #if defined(__APPLE__) && defined(__MACH__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
 @@ -35,9 +35,6 @@
  
  #include <cstdio>
diff --git a/srcpkgs/vtk/template b/srcpkgs/vtk/template
index 189591d55725a7..5d87abde765f37 100644
--- a/srcpkgs/vtk/template
+++ b/srcpkgs/vtk/template
@@ -1,7 +1,7 @@
 # Template file for 'vtk'
 pkgname=vtk
-version=9.2.6
-revision=3
+version=9.3.1
+revision=1
 build_style=cmake
 # vtk can be huge, especially with -DVTK_BUILD_ALL_MODULES=ON"
 # Build only the core modules plus python bindings for now
@@ -14,6 +14,7 @@ configure_args="-DBUILD_SHARED_LIBS=ON -DVTK_FORBID_DOWNLOADS=ON
  -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_cgns=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
  -DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3"
 # vtk forks libharu, bumps to v2.4.0, and requires libharu>=2.4.0
 makedepends="zlib-devel freetype-devel liblz4-devel expat-devel MesaLib-devel
@@ -26,7 +27,7 @@ maintainer="Piraty <mail@piraty.dev>"
 license="BSD-3-Clause"
 homepage="https://www.vtk.org"
 distfiles="https://www.vtk.org/files/release/${version:0:3}/VTK-${version}.tar.gz"
-checksum=06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12
+checksum=8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8
 
 if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 	makedepends+=" libexecinfo-devel"

From 161eafe72000a2b812e20ae3fec796d38e845d7d Mon Sep 17 00:00:00 2001
From: Daniel Martinez <danielmartinez@cock.li>
Date: Mon, 30 Sep 2024 21:27:52 -0400
Subject: [PATCH 2/2] freecad: rebuild for vtk-9.3.1.

---
 srcpkgs/freecad/patches/vtk.patch | 32 +++++++++++++++++++++++++++++++
 srcpkgs/freecad/template          |  2 +-
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/freecad/patches/vtk.patch

diff --git a/srcpkgs/freecad/patches/vtk.patch b/srcpkgs/freecad/patches/vtk.patch
new file mode 100644
index 00000000000000..bcaf68d0855e65
--- /dev/null
+++ b/srcpkgs/freecad/patches/vtk.patch
@@ -0,0 +1,32 @@
+diff --git a/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx b/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
+index 7f89573efd..47a52fe585 100644
+--- a/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
++++ b/src/3rdParty/salomesmesh/inc/SMESH_SMDS.hxx
+@@ -39,10 +39,6 @@
+  #define SMDS_EXPORT
+ #endif
+ 
+-#ifdef VTK_HAS_MTIME_TYPE
+ #define VTK_MTIME_TYPE vtkMTimeType
+-#else
+-#define VTK_MTIME_TYPE unsigned long
+-#endif
+ 
+ #endif
+diff --git a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
+index 7e3de0070a..e9895d6157 100644
+--- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
++++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp
+@@ -1026,7 +1026,12 @@ void SMDS_UnstructuredGrid::BuildLinks()
+   GetLinks()->Allocate(this->GetNumberOfPoints());
+   GetLinks()->Register(this);
+ //FIXME: vtk9
++  #if VTK_VERSION_NUMBER < VTK_VERSION_CHECK(9,3,0)
+   GetLinks()->BuildLinks(this);
++  #else
++  GetLinks()->SetDataSet(this);
++  GetLinks()->BuildLinks();
++  #endif
+   GetLinks()->Delete();
+ #else
+   this->Links = SMDS_CellLinks::New();
diff --git a/srcpkgs/freecad/template b/srcpkgs/freecad/template
index 2c0e80315116fd..3d5e31790bb62b 100644
--- a/srcpkgs/freecad/template
+++ b/srcpkgs/freecad/template
@@ -1,7 +1,7 @@
 # Template file for 'freecad'
 pkgname=freecad
 version=0.21.2
-revision=1
+revision=2
 build_wrksrc="FreeCAD-${version}"
 build_style=cmake
 pycompile_dirs="usr/lib/${pkgname}/Mod"

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PR PATCH] [Merged]: vtk: update to 9.3.1.
  2024-09-30 22:52 [PR PATCH] vtk: update to 9.3.1 Calandracas606
  2024-10-01  1:28 ` [PR PATCH] [Updated] " Calandracas606
  2024-10-01  1:30 ` Calandracas606
@ 2024-10-01 13:15 ` abenson
  2 siblings, 0 replies; 4+ messages in thread
From: abenson @ 2024-10-01 13:15 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1090 bytes --]

There's a merged pull request on the void-packages repository

vtk: update to 9.3.1.
https://github.com/void-linux/void-packages/pull/52432

Description:
<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **briefly**

<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->

#### Local build testing
- I built this PR locally for my native architecture, aarch64-musl
- I built this PR locally for these architectures:
  - x86_64
  - x86_64-musl
  - aarch64

nocross since depends on hdf5 which is nocross


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-10-01 13:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-30 22:52 [PR PATCH] vtk: update to 9.3.1 Calandracas606
2024-10-01  1:28 ` [PR PATCH] [Updated] " Calandracas606
2024-10-01  1:30 ` Calandracas606
2024-10-01 13:15 ` [PR PATCH] [Merged]: " abenson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).