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
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