Wednesday, January 21, 2026

Re: [update] cad/opencascade

On Sun, Jan 18, 2026 at 12:47:52PM +0000, Johannes Thyssen Tishman wrote:
> 2026-01-17T18:26:12-0600 james@jamesjerkinscomputer.com:
> > Update cad/opencascade from 7.8.1 -> 7.9.3
> >
> > Tested with kicad 9.0.6 on amd64
>
> Hi James,
>
> Thanks for the update. I've actually had a very similar diff to yours
> for a while now (with a few additions to allow running tests), but I
> just couldn't find the time/motivation to finish it. I find this port to
> be quite messy and complicated, and every time I work on it I really
> need to spend a few hours trying to understand it. I'm sorry if this
> caused duplicate work.
>
> Anyways, below is a slightly modified version of your diff, with a
> couple additions to allow running tests. Tests are still running as I'm
> writting this email (there are 21082 tests :/), but I'll report back
> once they are done.
>
> On another note, we (or I as maintainer) still need to test the other
> consumers of the port:
>
> $ show-reverse-deps cad/opencascade
> cad/freecad
> cad/horizon-eda
> cad/kicad
> cad/netgen-mesher
> cad/prusaslicer

I have _lightly_ tested freecad and prusaslicer with the previous diff
and haven't had any issues yet.


> This will probably take me some time, but I'll report back once I've
> done it.
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/cad/opencascade/Makefile,v
> diff -u -p -r1.6 Makefile
> --- Makefile 4 Mar 2025 22:53:55 -0000 1.6
> +++ Makefile 18 Jan 2026 12:23:09 -0000
> @@ -1,9 +1,12 @@
> COMMENT = platform for 3D CAD, CAM, and CAE
> DPB_PROPERTIES = parallel
>
> -V = 7.8.1
> -DISTNAME = opencascade-${V}
> -REVISION = 1
> +V = 7.9.3
> +PKGNAME = opencascade-${V}
> +
> +GH_ACCOUNT = Open-Cascade-SAS
> +GH_PROJECT = OCCT
> +GH_TAGNAME = V${V:S/./_/g}
>
> .for LIB in TKBO TKBRep TKBin TKBinL TKBinTObj TKBinXCAF TKBool TKCAF TKCDF \
> TKDCAF TKDE TKDECascade TKDEGLTF TKDEIGES TKDEOBJ TKDEPLY TKDESTEP \
> @@ -28,12 +31,6 @@ PERMIT_PACKAGE = Yes
> WANTLIB += ${MODTK_WANTLIB} ${COMPILER_LIBCXX} GL X11 c execinfo fontconfig
> WANTLIB += freetype m
>
> -# See https://dev.opencascade.org/content/packaging-again-debian
> -SITES = https://git.dev.opencascade.org/gitweb/
> -DISTQUERY = ?p=occt.git;a=snapshot;h=refs/tags/V${V:S/./_/g};sf=tgz
> -DISTFILES = ${DISTNAME}${EXTRACT_SUFX}{${DISTQUERY}}
> -WRKDIST = ${WRKDIR}/occt-V${V:S/./_/g}
> -
> COMPILER = base-clang ports-gcc
> MODULES = devel/cmake \
> x11/tk
> @@ -44,8 +41,9 @@ LIB_DEPENDS = ${MODTK_LIB_DEPENDS}
> RUN_DEPENDS = ${MODTK_RUN_DEPENDS} \
> shells/bash
>
> -CONFIGURE_ARGS += -DINSTALL_DIR_RESOURCE:STRING="share/opencascade/src" \
> - -DUSE_TK=ON \
> +TEST_DEPENDS = ${FULLPKGNAME}:${BUILD_PKGPATH}
> +
> +CONFIGURE_ARGS += -DUSE_TK=ON \
> -DUSE_FREETYPE=ON \
> -DUSE_OPENGL=ON \
> -DUSE_TBB=OFF \
> @@ -57,6 +55,7 @@ CONFIGURE_ARGS += -DINSTALL_DIR_RESOURCE
> -DUSE_RAPIDJSON=OFF \
> -DUSE_DRACO=OFF \
> -DBUILD_SAMPLES_QT=OFF \
> + -DINSTALL_DIR_RESOURCE="share/opencascade/src" \
> -DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=ON
>
> CXXFLAGS += -I${X11BASE}/include
> @@ -76,16 +75,20 @@ COMP=gcc
>
> SUBST_VARS += BITS COMP V
>
> +# Some tests require an active X11 display to work. When using
> +# PORTS_PRIVSEP=Yes, the following can be used:
> +# xhost +si:localuser:_pbuild; make test; xhost -si:localuser:_pbuild
> +TEST_IS_INTERACTIVE = X11
> +TEST_DIR = ${WRKDIR}/tests_openbsd
> +
> +PORTHOME = ${WRKDIR}
> +
> # fix bash and make installed script names less generic
> pre-configure:
> sed -i "s,env\.sh,occt_env\.sh,g" \
> ${WRKSRC}/adm/templates/*.sh*
> sed -i "s,custom\.sh,occt_custom\.sh,g" \
> ${WRKSRC}/adm/templates/*.sh*
> - sed -i "s,env\.sh,occt_env\.sh,g" \
> - ${WRKSRC}/gen*
> - sed -i "s,custom\.sh,occt_custom\.sh,g" \
> - ${WRKSRC}/gen*
> sed -i "s,env\.,occt_env\.,g" \
> ${WRKSRC}/CMakeLists.txt
> sed -i "s,custom\.,occt_custom\.,g" \
> @@ -99,5 +102,13 @@ pre-configure:
> for i in ${WRKSRC}/adm/templates/{custom,draw,env}*.sh*; do \
> mv $$i ${WRKSRC}/adm/templates/occt_$${i##*/}; \
> done
> +
> +do-test:
> + rm -rf ${TEST_DIR}
> + mkdir ${TEST_DIR}
> + ${LOCALBASE}/bin/bash -c " \
> + source ${LOCALBASE}/bin/occt_env.sh && \
> + CSF_TestScriptsPath=${WRKSRC}/tests \
> + ${LOCALBASE}/bin/DRAWEXE -b -c 'pload ALL; testgrid -outdir ${TEST_DIR}; exit'"
>
> .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/cad/opencascade/distinfo,v
> diff -u -p -r1.3 distinfo
> --- distinfo 18 Apr 2024 14:43:37 -0000 1.3
> +++ distinfo 18 Jan 2026 12:23:09 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (opencascade-7.8.1.tar.gz) = M/K9tn4/auRp8/qBbPujRSmiOpy3Nr+YoysgPYUxxSM=
> -SIZE (opencascade-7.8.1.tar.gz) = 48427425
> +SHA256 (OCCT-7_9_3.tar.gz) = Xs8JTsaxLVQT37hR2MNZDDVAWK7lVuMuQIvfv4w1fVc=
> +SIZE (OCCT-7_9_3.tar.gz) = 48586815
> Index: patches/patch-CMakeLists_txt
> ===================================================================
> RCS file: /cvs/ports/cad/opencascade/patches/patch-CMakeLists_txt,v
> diff -u -p -r1.2 patch-CMakeLists_txt
> --- patches/patch-CMakeLists_txt 10 Feb 2024 15:39:40 -0000 1.2
> +++ patches/patch-CMakeLists_txt 18 Jan 2026 12:23:09 -0000
> @@ -1,19 +1,14 @@
> Index: CMakeLists.txt
> --- CMakeLists.txt.orig
> +++ CMakeLists.txt
> -@@ -1031,12 +1031,12 @@ else()
> +@@ -1101,8 +1101,8 @@ else()
> endif()
>
> - # change custom.bat/sh
> --if (EXISTS "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
> + # validating custom.bat/sh for changes
> +-if (EXISTS "${CMAKE_BINARY_DIR}/custom.${SCRIPT_EXT}" AND EXISTS "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
> - file (READ "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" CUSTOM_CONTENT)
> -+if (EXISTS "${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
> ++if (EXISTS "${CMAKE_BINARY_DIR}/custom.${SCRIPT_EXT}" AND EXISTS "${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}")
> + file (READ "${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" CUSTOM_CONTENT)
> -
> - set (CUSTOM_CONTENT "${CUSTOM_CONTENT} ${ADDITIONAL_CUSTOM_CONTENT}")
> -
> -- file (WRITE "${INSTALL_DIR}/${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" "${CUSTOM_CONTENT}")
> -+ file (WRITE "${INSTALL_DIR_SCRIPT}/custom.${SCRIPT_EXT}" "${CUSTOM_CONTENT}")
> - else()
> - OCCT_CONFIGURE_AND_INSTALL ("adm/templates/custom.${SCRIPT_EXT}.main" "custom.${SCRIPT_EXT}" "custom.${SCRIPT_EXT}" "${INSTALL_DIR_SCRIPT}")
> - endif()
> + string(FIND "${CUSTOM_CONTENT}" "${ADDITIONAL_CUSTOM_CONTENT}" pos)
> + if (pos EQUAL -1)
> + set (CUSTOM_CONTENT "${CUSTOM_CONTENT} ${ADDITIONAL_CUSTOM_CONTENT}")
> Index: patches/patch-adm_cmake_occt_csf_cmake
> ===================================================================
> RCS file: /cvs/ports/cad/opencascade/patches/patch-adm_cmake_occt_csf_cmake,v
> diff -u -p -r1.1.1.1 patch-adm_cmake_occt_csf_cmake
> --- patches/patch-adm_cmake_occt_csf_cmake 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ patches/patch-adm_cmake_occt_csf_cmake 18 Jan 2026 12:23:09 -0000
> @@ -1,7 +1,7 @@
> Index: adm/cmake/occt_csf.cmake
> --- adm/cmake/occt_csf.cmake.orig
> +++ adm/cmake/occt_csf.cmake
> -@@ -134,7 +134,7 @@ else()
> +@@ -153,7 +153,7 @@ else()
> set (CSF_OpenGlesLibs "EGL GLESv2")
> set (CSF_androidlog "log")
> elseif (UNIX)
> @@ -10,7 +10,7 @@ Index: adm/cmake/occt_csf.cmake
> if (USE_XLIB)
> set (CSF_OpenGlLibs "GL")
> set (CSF_XwLibs "X11")
> -@@ -142,7 +142,6 @@ else()
> +@@ -161,7 +161,6 @@ else()
> set (CSF_OpenGlLibs "GL EGL")
> endif()
> set (CSF_OpenGlesLibs "EGL GLESv2")
> Index: patches/patch-adm_cmake_occt_macros_cmake
> ===================================================================
> RCS file: patches/patch-adm_cmake_occt_macros_cmake
> diff -N patches/patch-adm_cmake_occt_macros_cmake
> --- patches/patch-adm_cmake_occt_macros_cmake 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: adm/cmake/occt_macros.cmake
> ---- adm/cmake/occt_macros.cmake.orig
> -+++ adm/cmake/occt_macros.cmake
> -@@ -592,7 +592,7 @@ macro (OCCT_UPDATE_TARGET_FILE)
> -
> - install (CODE
> - "string (TOLOWER \"\${CMAKE_INSTALL_CONFIG_NAME}\" CMAKE_INSTALL_CONFIG_NAME_LOWERCASE)
> -- file (GLOB ALL_OCCT_TARGET_FILES \"${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\")
> -+ file (GLOB ALL_OCCT_TARGET_FILES \"\$ENV{DESTDIR}${INSTALL_DIR}/${INSTALL_DIR_CMAKE}/OpenCASCADE*Targets-\${CMAKE_INSTALL_CONFIG_NAME_LOWERCASE}.cmake\")
> - foreach(TARGET_FILENAME \${ALL_OCCT_TARGET_FILES})
> - file (STRINGS \"\${TARGET_FILENAME}\" TARGET_FILE_CONTENT)
> - file (REMOVE \"\${TARGET_FILENAME}\")
> Index: patches/patch-adm_cmake_occt_toolkit_cmake
> ===================================================================
> RCS file: /cvs/ports/cad/opencascade/patches/patch-adm_cmake_occt_toolkit_cmake,v
> diff -u -p -r1.1.1.1 patch-adm_cmake_occt_toolkit_cmake
> --- patches/patch-adm_cmake_occt_toolkit_cmake 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ patches/patch-adm_cmake_occt_toolkit_cmake 18 Jan 2026 12:23:09 -0000
> @@ -1,13 +1,13 @@
> Index: adm/cmake/occt_toolkit.cmake
> --- adm/cmake/occt_toolkit.cmake.orig
> +++ adm/cmake/occt_toolkit.cmake
> -@@ -450,6 +450,11 @@ if (APPLE)
> +@@ -251,6 +251,11 @@ if (APPLE)
> endif()
> endif()
>
> +if (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
> + find_package (Backtrace REQUIRED)
> -+ target_link_libraries (${PROJECT_NAME} ${Backtrace_LIBRARIES})
> ++ target_link_libraries (${PROJECT_NAME} PUBLIC ${Backtrace_LIBRARIES})
> +endif()
> +
> # Update list of used VTK libraries if OpenGL2 Rendering BackEnd is used.
> Index: patches/patch-adm_genproj_tcl
> ===================================================================
> RCS file: patches/patch-adm_genproj_tcl
> diff -N patches/patch-adm_genproj_tcl
> --- patches/patch-adm_genproj_tcl 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: adm/genproj.tcl
> ---- adm/genproj.tcl.orig
> -+++ adm/genproj.tcl
> -@@ -1516,7 +1516,7 @@ proc osutils:csfList { theOS theCsfLibsMap theCsfFrmsM
> - if { "$theOS" == "qnx" } {
> - # CSF_ThreadLibs - pthread API is part of libc on QNX
> - } else {
> -- set aLibsMap(CSF_ThreadLibs) "pthread rt"
> -+ set aLibsMap(CSF_ThreadLibs) "pthread"
> - if { "$::HAVE_TK" == "true" } {
> - set aLibsMap(CSF_TclTkLibs) "tk8.6"
> - }
> Index: patches/patch-adm_qmake_OccToolkit_pri
> ===================================================================
> RCS file: patches/patch-adm_qmake_OccToolkit_pri
> diff -N patches/patch-adm_qmake_OccToolkit_pri
> --- patches/patch-adm_qmake_OccToolkit_pri 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: adm/qmake/OccToolkit.pri
> ---- adm/qmake/OccToolkit.pri.orig
> -+++ adm/qmake/OccToolkit.pri
> -@@ -59,7 +59,7 @@ win32 {
> - CSF_TclTkLibs = -framework Tk
> - } else {
> - CSF_dl = -ldl
> -- CSF_ThreadLibs = -lpthread -lrt
> -+ CSF_ThreadLibs = -lpthread
> - CSF_OpenGlesLibs = -lEGL -lGLESv2
> - CSF_TclTkLibs = -ltk8.6
> - HAVE_XLIB {
> Index: patches/patch-adm_templates_env_install_sh_in
> ===================================================================
> RCS file: patches/patch-adm_templates_env_install_sh_in
> diff -N patches/patch-adm_templates_env_install_sh_in
> --- patches/patch-adm_templates_env_install_sh_in 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: adm/templates/env.install.sh.in
> ---- adm/templates/env.install.sh.in.orig
> -+++ adm/templates/env.install.sh.in
> -@@ -4,7 +4,7 @@ aScriptPath=${BASH_SOURCE%/*}; if [ -d "${aScriptPath}
> -
> - # ----- For compatibility with external application using CASROOT -----
> - if [ "${CASROOT}" == "" ]; then
> -- export CASROOT="@INSTALL_DIR@"
> -+ export CASROOT="@INSTALL_DIR@/share/opencascade"
> - fi
> -
> - # ----- Define path to 3rdparty products -----
> Index: patches/patch-src_BRepMesh_delabella_cpp
> ===================================================================
> RCS file: /cvs/ports/cad/opencascade/patches/patch-src_BRepMesh_delabella_cpp,v
> diff -u -p -r1.1.1.1 patch-src_BRepMesh_delabella_cpp
> --- patches/patch-src_BRepMesh_delabella_cpp 21 Oct 2023 13:41:45 -0000 1.1.1.1
> +++ patches/patch-src_BRepMesh_delabella_cpp 18 Jan 2026 12:23:09 -0000
> @@ -3,9 +3,9 @@ Index: src/BRepMesh/delabella.cpp
> +++ src/BRepMesh/delabella.cpp
> @@ -36,7 +36,9 @@ SOFTWARE.
> #if (defined(__APPLE__))
> - #include <malloc/malloc.h>
> + #include <malloc/malloc.h>
> #else
> --#include <malloc.h>
> +- #include <malloc.h>
> + #ifndef __OpenBSD__
> + #include <malloc.h>
> +

No comments:

Post a Comment