Skip to content

Commit fd418f7

Browse files
committed
vtk@9.5.2_py313 9.5.2 (new formula)
* checkin new formula for vtk@9.5.2 using py313 * vtk@9.5.2_py313: update formula to work with new version of hdf5 ✅ * vtk@9.5.2_py313: set build type to be RelWithDebInfo * vtk@9.5.2_py313: attempt to resolve missing dep for linux Closes #762. Co-authored-by: chris jones @ipatch <chris.r.jones.1983@gmail.com> Signed-off-by: Chris <chris.r.jones.1983@gmail.com>
1 parent 58ff136 commit fd418f7

File tree

1 file changed

+168
-0
lines changed

1 file changed

+168
-0
lines changed

Formula/vtk@9.5.2_py313.rb

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
class VtkAT952Py313 < Formula
2+
desc "Toolkit for 3D computer graphics, image processing, and visualization"
3+
homepage "https://www.vtk.org/"
4+
url "https://www.vtk.org/files/release/9.5/VTK-9.5.2.tar.gz"
5+
sha256 "cee64b98d270ff7302daf1ef13458dff5d5ac1ecb45d47723835f7f7d562c989"
6+
license "BSD-3-Clause"
7+
head "https://gitlab.kitware.com/vtk/vtk.git", branch: "master"
8+
9+
keg_only :versioned_formula
10+
11+
depends_on "cmake" => [:build, :test]
12+
depends_on "boost"
13+
depends_on "cgns"
14+
depends_on "double-conversion"
15+
depends_on "eigen"
16+
depends_on "fontconfig"
17+
depends_on "freetype"
18+
depends_on "hdf5"
19+
depends_on "jpeg-turbo"
20+
depends_on "jsoncpp"
21+
depends_on "libharu"
22+
depends_on "libogg"
23+
depends_on "libpng"
24+
depends_on "libtiff"
25+
depends_on "lz4"
26+
depends_on "netcdf"
27+
depends_on "nlohmann-json"
28+
depends_on "proj"
29+
depends_on "pugixml"
30+
depends_on "pyqt"
31+
depends_on "python@3.13"
32+
depends_on "qtbase"
33+
depends_on "qtdeclarative"
34+
depends_on "sqlite"
35+
depends_on "theora"
36+
depends_on "utf8cpp"
37+
depends_on "xz"
38+
39+
uses_from_macos "expat"
40+
uses_from_macos "libxml2"
41+
uses_from_macos "zlib"
42+
43+
on_linux do
44+
depends_on "gl2ps"
45+
depends_on "libx11"
46+
depends_on "libxcursor"
47+
depends_on "mesa"
48+
depends_on "zlib-ng-compat"
49+
end
50+
51+
def install
52+
# Work around superenv to avoid mixing `expat` usage in libraries across dependency tree.
53+
# Brew `expat` usage in Python has low impact as it isn't loaded unless pyexpat is used.
54+
# TODO: Consider adding a DSL for this or change how we handle Python's `expat` dependency
55+
if OS.mac? && MacOS.version < :sequoia
56+
env_vars = %w[CMAKE_PREFIX_PATH HOMEBREW_INCLUDE_PATHS HOMEBREW_LIBRARY_PATHS PATH PKG_CONFIG_PATH]
57+
ENV.remove env_vars, /(^|:)#{Regexp.escape(Formula["expat"].opt_prefix)}[^:]*/
58+
ENV.remove "HOMEBREW_DEPENDENCIES", "expat"
59+
end
60+
61+
python = "python3.13"
62+
qml_plugin_dir = lib/"qml/VTK.#{version.major_minor}"
63+
vtkmodules_dir = prefix/Language::Python.site_packages(python)/"vtkmodules"
64+
rpaths = [rpath, rpath(source: qml_plugin_dir), rpath(source: vtkmodules_dir)]
65+
66+
args = %W[
67+
-DBUILD_SHARED_LIBS:BOOL=ON
68+
-DCMAKE_INSTALL_RPATH:STRING=#{rpaths.join(";")}
69+
-DCMAKE_DISABLE_FIND_PACKAGE_ICU:BOOL=ON
70+
-DCMAKE_CXX_STANDARD=14
71+
-DVTK_IGNORE_CMAKE_CXX11_CHECKS=ON
72+
-DVTK_WRAP_PYTHON:BOOL=ON
73+
-DVTK_PYTHON_VERSION:STRING=3
74+
-DVTK_LEGACY_REMOVE:BOOL=ON
75+
-DVTK_MODULE_ENABLE_VTK_InfovisBoost:STRING=YES
76+
-DVTK_MODULE_ENABLE_VTK_InfovisBoostGraphAlgorithms:STRING=YES
77+
-DVTK_MODULE_ENABLE_VTK_RenderingFreeTypeFontConfig:STRING=YES
78+
-DVTK_MODULE_USE_EXTERNAL_VTK_cgns:BOOL=ON
79+
-DVTK_MODULE_USE_EXTERNAL_VTK_doubleconversion:BOOL=ON
80+
-DVTK_MODULE_USE_EXTERNAL_VTK_eigen:BOOL=ON
81+
-DVTK_MODULE_USE_EXTERNAL_VTK_expat:BOOL=ON
82+
-DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON
83+
-DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON
84+
-DVTK_MODULE_USE_EXTERNAL_VTK_jpeg:BOOL=ON
85+
-DVTK_MODULE_USE_EXTERNAL_VTK_jsoncpp:BOOL=ON
86+
-DVTK_MODULE_USE_EXTERNAL_VTK_libharu:BOOL=ON
87+
-DVTK_MODULE_USE_EXTERNAL_VTK_libproj:BOOL=ON
88+
-DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON
89+
-DVTK_MODULE_USE_EXTERNAL_VTK_lz4:BOOL=ON
90+
-DVTK_MODULE_USE_EXTERNAL_VTK_lzma:BOOL=ON
91+
-DVTK_MODULE_USE_EXTERNAL_VTK_netcdf:BOOL=ON
92+
-DVTK_MODULE_USE_EXTERNAL_VTK_nlohmannjson:BOOL=ON
93+
-DVTK_MODULE_USE_EXTERNAL_VTK_ogg:BOOL=ON
94+
-DVTK_MODULE_USE_EXTERNAL_VTK_png:BOOL=ON
95+
-DVTK_MODULE_USE_EXTERNAL_VTK_pugixml:BOOL=ON
96+
-DVTK_MODULE_USE_EXTERNAL_VTK_sqlite:BOOL=ON
97+
-DVTK_MODULE_USE_EXTERNAL_VTK_theora:BOOL=ON
98+
-DVTK_MODULE_USE_EXTERNAL_VTK_tiff:BOOL=ON
99+
-DVTK_MODULE_USE_EXTERNAL_VTK_utf8:BOOL=ON
100+
-DVTK_MODULE_USE_EXTERNAL_VTK_zlib:BOOL=ON
101+
-DPython3_EXECUTABLE:FILEPATH=#{which(python)}
102+
-DVTK_GROUP_ENABLE_Qt:STRING=YES
103+
-DVTK_QT_VERSION:STRING=6
104+
-DHDF5_IS_PARALLEL:BOOL=OFF
105+
-DCMAKE_BUILD_TYPE=RelWithDebInfo
106+
]
107+
# External gl2ps causes failure linking to macOS OpenGL.framework
108+
args << "-DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=ON" unless OS.mac?
109+
110+
system "cmake", "-S", ".", "-B", "build", *args, *std_cmake_args
111+
system "cmake", "--build", "build"
112+
system "cmake", "--install", "build"
113+
end
114+
115+
def post_install
116+
# explicitly set python version
117+
python_version = "3.13"
118+
119+
# Unlink the existing .pth file to avoid reinstall issues
120+
pth_file = lib/"python#{python_version}/vtk_py313.pth"
121+
pth_file.unlink if pth_file.exist?
122+
123+
ohai "Creating .pth file for vtk module"
124+
# write the .pth file to the site-packages directory
125+
(lib/"python#{python_version}/vtk_py313.pth").write <<~EOS
126+
import site; site.addsitedir('#{lib}/python#{python_version}/site-packages/')
127+
EOS
128+
end
129+
130+
test do
131+
vtk_dir = lib/"cmake/vtk-#{version.major_minor}"
132+
vtk_cmake_module = vtk_dir/"VTK-vtk-module-find-packages.cmake"
133+
assert_match Formula["boost"].version.major_minor_patch.to_s, vtk_cmake_module.read,
134+
"VTK needs to be rebuilt against Boost!"
135+
136+
(testpath/"CMakeLists.txt").write <<~CMAKE
137+
cmake_minimum_required(VERSION 4.0 FATAL_ERROR)
138+
project(Distance2BetweenPoints LANGUAGES CXX)
139+
find_package(VTK REQUIRED COMPONENTS vtkCommonCore CONFIG)
140+
add_executable(Distance2BetweenPoints Distance2BetweenPoints.cxx)
141+
target_link_libraries(Distance2BetweenPoints PRIVATE ${VTK_LIBRARIES})
142+
CMAKE
143+
144+
(testpath/"Distance2BetweenPoints.cxx").write <<~CPP
145+
#include <cassert>
146+
#include <vtkMath.h>
147+
int main() {
148+
double p0[3] = {0.0, 0.0, 0.0};
149+
double p1[3] = {1.0, 1.0, 1.0};
150+
assert(vtkMath::Distance2BetweenPoints(p0, p1) == 3.0);
151+
return 0;
152+
}
153+
CPP
154+
155+
system "cmake", ".", "-DCMAKE_BUILD_TYPE=RelWithDebInfo", "-DCMAKE_VERBOSE_MAKEFILE=ON", "-DVTK_DIR=#{vtk_dir}"
156+
system "make"
157+
system "./Distance2BetweenPoints"
158+
159+
(testpath/"Distance2BetweenPoints.py").write <<~PYTHON
160+
import vtk
161+
p0 = (0, 0, 0)
162+
p1 = (1, 1, 1)
163+
assert vtk.vtkMath.Distance2BetweenPoints(p0, p1) == 3
164+
PYTHON
165+
166+
system bin/"vtkpython", "Distance2BetweenPoints.py"
167+
end
168+
end

0 commit comments

Comments
 (0)