From 3f45d2cbd8775be352929c169c7ae2e5d77ca404 Mon Sep 17 00:00:00 2001 From: Andrew Pan Date: Thu, 14 Aug 2025 00:27:46 -0400 Subject: [PATCH 1/3] opencascade-occt: add optional vtk dependency --- pkgs/by-name/op/opencascade-occt/package.nix | 28 ++++++++++++++++--- .../vtk-draw-conditional-glx.patch | 14 ++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 pkgs/by-name/op/opencascade-occt/vtk-draw-conditional-glx.patch diff --git a/pkgs/by-name/op/opencascade-occt/package.nix b/pkgs/by-name/op/opencascade-occt/package.nix index 6295a0c98e38..a542df3d95d4 100644 --- a/pkgs/by-name/op/opencascade-occt/package.nix +++ b/pkgs/by-name/op/opencascade-occt/package.nix @@ -13,8 +13,12 @@ libXext, libXmu, libXi, -}: + vtk, + withVtk ? false, + # used in passthru.tests + opencascade-occt, +}: stdenv.mkDerivation rec { pname = "opencascade-occt"; version = "7.8.1"; @@ -33,6 +37,10 @@ stdenv.mkDerivation rec { url = "https://github.com/Open-Cascade-SAS/OCCT/commit/7236e83dcc1e7284e66dc61e612154617ef715d6.diff"; hash = "sha256-NoC2mE3DG78Y0c9UWonx1vmXoU4g5XxFUT3eVXqLU60="; }) + + # patch does not apply against 7.9+, it was submitted upstream for future + # inclusion: https://github.com/Open-Cascade-SAS/OCCT/pull/683 + ./vtk-draw-conditional-glx.patch ]; nativeBuildInputs = [ @@ -49,10 +57,23 @@ stdenv.mkDerivation rec { libXmu libXi rapidjson - ]; + ] + ++ lib.optional withVtk vtk; NIX_CFLAGS_COMPILE = [ "-fpermissive" ]; - cmakeFlags = [ "-DUSE_RAPIDJSON=ON" ]; + cmakeFlags = [ + "-DUSE_RAPIDJSON=ON" + ] + ++ lib.optionals withVtk [ + (lib.cmakeBool "USE_VTK" true) + (lib.cmakeFeature "3RDPARTY_VTK_INCLUDE_DIR" "${lib.getDev vtk}/include/vtk") + ]; + + passthru = { + tests = { + withVtk = opencascade-occt.override ({ withVtk = true; }); + }; + }; meta = with lib; { description = "Open CASCADE Technology, libraries for 3D modeling and numerical simulation"; @@ -63,5 +84,4 @@ stdenv.mkDerivation rec { maintainers = with maintainers; [ amiloradovsky ]; platforms = platforms.all; }; - } diff --git a/pkgs/by-name/op/opencascade-occt/vtk-draw-conditional-glx.patch b/pkgs/by-name/op/opencascade-occt/vtk-draw-conditional-glx.patch new file mode 100644 index 000000000000..76993ae6046f --- /dev/null +++ b/pkgs/by-name/op/opencascade-occt/vtk-draw-conditional-glx.patch @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 86905287dc..19214e8f2d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -623,5 +623,9 @@ if (USE_VTK) + add_definitions (-DHAVE_VTK) + set (OCCT_VTK_USED_TARGETS "" CACHE INTERNAL "" FORCE) + OCCT_INCLUDE_CMAKE_FILE ("adm/cmake/vtk") ++ if (DEFINED VTK_USE_X AND NOT VTK_USE_X) ++ message (STATUS "Info: TKIVtkDraw toolkits excluded due to VTK has no glx support") ++ list (REMOVE_ITEM BUILD_TOOLKITS TKIVtkDraw) ++ endif() + else() + OCCT_CHECK_AND_UNSET_GROUP ("3RDPARTY_VTK") From 6b353e084d1999f2dfcecf3e1367111b562f536f Mon Sep 17 00:00:00 2001 From: Andrew Pan Date: Mon, 1 Sep 2025 23:41:06 -0400 Subject: [PATCH 2/3] opencascade-occt: enable exceptions --- pkgs/by-name/op/opencascade-occt/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/op/opencascade-occt/package.nix b/pkgs/by-name/op/opencascade-occt/package.nix index a542df3d95d4..6314c6bb4105 100644 --- a/pkgs/by-name/op/opencascade-occt/package.nix +++ b/pkgs/by-name/op/opencascade-occt/package.nix @@ -63,6 +63,8 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = [ "-fpermissive" ]; cmakeFlags = [ "-DUSE_RAPIDJSON=ON" + # Enable exception handling for release builds. + (lib.cmakeBool "BUILD_RELEASE_DISABLE_EXCEPTIONS" false) ] ++ lib.optionals withVtk [ (lib.cmakeBool "USE_VTK" true) From 205d89f72385833f9b4312babbdac9b8b4fd0a31 Mon Sep 17 00:00:00 2001 From: Andrew Pan Date: Mon, 1 Sep 2025 23:41:34 -0400 Subject: [PATCH 3/3] opencascade-occt: use cmakeBool for all bool flags --- pkgs/by-name/op/opencascade-occt/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/op/opencascade-occt/package.nix b/pkgs/by-name/op/opencascade-occt/package.nix index 6314c6bb4105..5e0edc8a9ade 100644 --- a/pkgs/by-name/op/opencascade-occt/package.nix +++ b/pkgs/by-name/op/opencascade-occt/package.nix @@ -62,7 +62,7 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = [ "-fpermissive" ]; cmakeFlags = [ - "-DUSE_RAPIDJSON=ON" + (lib.cmakeBool "USE_RAPIDJSON" true) # Enable exception handling for release builds. (lib.cmakeBool "BUILD_RELEASE_DISABLE_EXCEPTIONS" false) ]