Download raw body.
[UPDATE] cad/openscad to 2025.10.14
2025-11-07T10:59:10-0800 Andrew Hewus Fresh <andrew@afresh1.com>:
> I got this to work with QT6 as suggested and put back the `unlink` patch
> because I actually did hit it.
>
> Once we solve the manifold and clipper2 being picked up by blender
> questions, I'll ask for an OK.
>
> For now, here's the current patch for testing, unless someone wants to
> OK contingent on the dependencies going in.
I just build this update on my laptop and on a clean chroot without
issues. I noticed, however, that there a few dependencies picked up at
configure time that are not listed in the Makefile. I've added them just
for safety.
Other than that, I made the follwoing tweaks on top of your last diff:
1. Manually disable SpNav to avoid picking it up in case it get's
ported.
2. Move TEST_IS_INTERACTIVE under CONFIGURE_ARGS as in the
Makefile template.
3. Use ${FILESDIR} for startup script. This is just preference. Please
ignore if you disagree.
4. Remove patches/patch-src_filemodule_cc. This file was moved to
src/core/SourceFile.cc upstream since our last update to the port and
now includes our changes.
The diff below shows the changes made on top of your last diff for
convenience and to ease reviewing. A diff with both our changes that
should apply cleanly on the recent cad/openscad revision by ian@ is
attached.
Many tests are not passing when I run them as follows (using
PORTS_PRIVSEP=Yes):
$ xhost +si:localuser:_pbuild; make test; xhost -si:localuser:_pbuild
Most of them fail with the following error which I don't have time to
debug right now:
GL context provider 'glx' not found
Can't create OffscreenView: Unable to obtain GL Context
I found this[0] which may help.
[0] https://github.com/pythonscad/pythonscad/issues/14
Once again, thank you for your work on this afresh1@ :)
diff -rNup /tmp/openscad/Makefile /usr/ports/cad/openscad/Makefile
--- /tmp/openscad/Makefile Wed Nov 26 11:21:48 2025
+++ /usr/ports/cad/openscad/Makefile Wed Nov 26 11:12:40 2025
@@ -6,7 +6,6 @@ DISTNAME = openscad-${V}
CATEGORIES = cad
HOMEPAGE = https://www.openscad.org/
-TEST_IS_INTERACTIVE = X11
# AGPL-3.0
PERMIT_PACKAGE = Yes
@@ -37,23 +36,30 @@ COMPILER = base-clang ports-gcc
BUILD_DEPENDS = cad/clipper2 \
devel/bison \
+ devel/harfbuzz,-main \
devel/gettext,-tools \
devel/sanitizers-cmake \
+ graphics/cairo \
graphics/glslang \
+ graphics/ImageMagick \
+ graphics/shaderc \
graphics/vulkan-tools \
math/cgal \
+ math/double-conversion \
math/eigen3 \
- shells/bash
+ shells/bash \
+ textproc/libxml \
+ x11/xkbcommon
LIB_DEPENDS = archivers/libzip \
cad/clipper2 \
+ cad/lib3mf \
cad/manifold \
devel/boost \
devel/gettext \
devel/glib2 \
devel/gmp \
devel/gmp,-cxx \
- devel/lib3mf \
devel/mpfr \
devel/tbb \
editors/qscintilla,qt6 \
@@ -100,6 +106,11 @@ CONFIGURE_ARGS += -DUSE_IMAGE_COMPARE_PY=OFF
# I don't know how link in comms/libhidapi
CONFIGURE_ARGS += -DENABLE_HIDAPI=OFF
+# We don't have SpNav. Disable in case it get's ported.
+CONFIGURE_ARGS += -DCMAKE_DISABLE_FIND_PACKAGE_SpNav=ON
+
+TEST_IS_INTERACTIVE = X11
+
post-extract:
rmdir ${WRKSRC}/libraries/MCAD
cp -a ${WRKDIR}/MCAD-${MCAD_COMMIT} ${WRKSRC}/libraries/MCAD
@@ -111,11 +122,7 @@ post-extract:
# to be absolute so our patch works.
post-install:
mv ${PREFIX}/bin/openscad ${PREFIX}/libexec/openscad
- ${INSTALL_SCRIPT} /dev/null ${PREFIX}/bin/openscad
- printf "%s\n%s\n" \
- '#!/bin/sh' \
- 'exec ${TRUEPREFIX}/libexec/openscad "$$@"' \
- > ${PREFIX}/bin/openscad
+ ${INSTALL_SCRIPT} ${FILESDIR}/openscad ${PREFIX}/bin/openscad
${MODPY_COMPILEALL} ${PREFIX}/share/openscad/libraries/MCAD/
.include <bsd.port.mk>
diff -rNup /tmp/openscad/files/openscad /usr/ports/cad/openscad/files/openscad
--- /tmp/openscad/files/openscad Thu Jan 1 01:00:00 1970
+++ /usr/ports/cad/openscad/files/openscad Tue Nov 25 15:00:14 2025
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /usr/local/libexec/openscad "$@"
diff -rNup /tmp/openscad/patches/patch-src_filemodule_cc /usr/ports/cad/openscad/patches/patch-src_filemodule_cc
--- /tmp/openscad/patches/patch-src_filemodule_cc Wed Nov 26 10:20:14 2025
+++ /usr/ports/cad/openscad/patches/patch-src_filemodule_cc Thu Jan 1 01:00:00 1970
@@ -1,12 +0,0 @@
-Index: src/filemodule.cc
---- src/FileModule.cc.orig Fri Nov 21 10:07:49 2025
-+++ src/FileModule.cc Fri Nov 21 10:09:46 2025
-@@ -65,7 +65,7 @@
- auto ext = fs::path(path).extension().generic_string();
-
- if (boost::iequals(ext, ".otf") || boost::iequals(ext, ".ttf")) {
-- if (fs::is_regular(path)) {
-+ if (fs::is_regular_file(path)) {
- FontCache::instance()->register_font_file(path);
- } else {
- LOG(message_group::Error,Location::NONE,"","Can't read font with path '%1$s'",path);
Index: Makefile
===================================================================
RCS file: /cvs/ports/cad/openscad/Makefile,v
diff -u -p -u -p -r1.57 Makefile
--- Makefile 22 Nov 2025 01:49:32 -0000 1.57
+++ Makefile 26 Nov 2025 10:12:44 -0000
@@ -1,69 +1,128 @@
-COMMENT = the programmer's solid 3D CAD modeller
-BROKEN-sparc64= SIGILL on src/cgalutils.cc with CGAL-4.6.3
+COMMENT = programmers solid 3D CAD modeller
-V = 2021.01
+V = 2025.10.14
DISTNAME = openscad-${V}
-REVISION = 13
CATEGORIES = cad
HOMEPAGE = https://www.openscad.org/
-# GPLv2+ with CGAL exception
+# AGPL-3.0
PERMIT_PACKAGE = Yes
-WANTLIB += ${COMPILER_LIBCXX} GL GLEW GLU Qt5Concurrent Qt5Core
-WANTLIB += Qt5DBus Qt5Gamepad Qt5Gui Qt5Multimedia Qt5Network
-WANTLIB += Qt5PrintSupport Qt5Widgets X11 boost_filesystem-mt
-WANTLIB += boost_program_options-mt boost_regex-mt boost_system-mt
-WANTLIB += boost_thread-mt c cairo double-conversion fontconfig
-WANTLIB += freetype glib-2.0 gmp harfbuzz intl m mpfr opencsg
-WANTLIB += qscintilla2_qt5 xml2 zip
+GH_ACCOUNT = openscad
+GH_PROJECT = openscad
+GH_COMMIT = b0f18e9b4d61288b2cd6c659135f7e77def179e0
-SITES = https://files.openscad.org/
-EXTRACT_SUFX = .src.tar.gz
+MCAD_COMMIT = 1ea402208c3127ffb443931e9bb1681c191dacca
+SITES.mcad = https://github.com/${GH_ACCOUNT}/MCAD/archive/
-MODULES = devel/qmake \
+DISTFILES.mcad = MCAD-${MCAD_COMMIT:C/(........).*/\1/}{${MCAD_COMMIT}}${EXTRACT_SUFX}
+
+MODULES = devel/cmake \
lang/python \
- x11/qt5
+ x11/qt6
-BUILD_DEPENDS = devel/bison \
+WANTLIB += ${COMPILER_LIBCXX} 3mf Clipper2 EGL GL GLEW GLU Qt6Concurrent
+WANTLIB += Qt6Core Qt6Core5Compat Qt6DBus Qt6Gui Qt6Multimedia
+WANTLIB += Qt6Network Qt6OpenGL Qt6OpenGLWidgets Qt6Svg Qt6Widgets
+WANTLIB += boost_atomic-mt boost_filesystem-mt boost_program_options-mt
+WANTLIB += boost_regex-mt boost_system-mt c cairo double-conversion
+WANTLIB += fontconfig freetype glib-2.0 gmp gmpxx harfbuzz intl
+WANTLIB += m manifold mpfr opencsg qscintilla2_qt6 tbb xml2 zip
+
+# Match devel/boost
+COMPILER = base-clang ports-gcc
+
+BUILD_DEPENDS = cad/clipper2 \
+ devel/bison \
+ devel/harfbuzz,-main \
devel/gettext,-tools \
+ devel/sanitizers-cmake \
+ graphics/cairo \
+ graphics/glslang \
+ graphics/ImageMagick \
+ graphics/shaderc \
+ graphics/vulkan-tools \
math/cgal \
- math/eigen3
+ math/double-conversion \
+ math/eigen3 \
+ shells/bash \
+ textproc/libxml \
+ x11/xkbcommon
LIB_DEPENDS = archivers/libzip \
+ cad/clipper2 \
+ cad/lib3mf \
+ cad/manifold \
devel/boost \
+ devel/gettext \
+ devel/glib2 \
devel/gmp \
- devel/harfbuzz \
+ devel/gmp,-cxx \
devel/mpfr \
- editors/qscintilla \
+ devel/tbb \
+ editors/qscintilla,qt6 \
graphics/glew \
graphics/opencsg \
- math/double-conversion \
- x11/qt5/qtgamepad \
- x11/qt5/qtmultimedia
+ x11/qt6/qt5compat \
+ x11/qt6/qtbase \
+ x11/qt6/qtmultimedia \
+ x11/qt6/qtsvg
RUN_DEPENDS = devel/desktop-file-utils \
- fonts/liberation-fonts \
misc/shared-mime-info \
+ net/curl \
x11/gtk+4,-guic
-# virtual memory exhausted: Cannot allocate memory
-.if ${MACHINE_ARCH:Malpha}
-COPTS += -O1
-CXXOPTS += -O1
-.endif
-MODQMAKE_ARGS = VERSION=${V}
-SEPARATE_BUILD = No
+# I didn't test fully, but it does complain
+BUILD_DEPENDS += ${RUN_DEPENDS}
+
+TEST_DEPENDS = graphics/ImageMagick
+
+# A test requires this
+TEST_DEPENDS += shells/bash
+
+# The openscad script wrapper breaks debug packages
+#DEBUG_PACKAGES = ${BUILD_PACKAGES}
+
+# Make about say the "right" thing
+CONFIGURE_ARGS += -DOPENSCAD_VERSION=${V}
+
+# Don't use the included stuff, use ours
+CONFIGURE_ARGS += -DUSE_BUILTIN_CLIPPER2=OFF \
+ -DUSE_BUILTIN_MANIFOLD=OFF
+
+# Our QT6 port is more stable
+CONFIGURE_ARGS += -DUSE_QT6=ON
+
+# It might be faster, but at what cost?
+CONFIGURE_ARGS += -DUSE_MIMALLOC=OFF
+
+# We don't have Pillow
+CONFIGURE_ARGS += -DUSE_IMAGE_COMPARE_PY=OFF
+
+# I don't know how link in comms/libhidapi
+CONFIGURE_ARGS += -DENABLE_HIDAPI=OFF
+
+# We don't have SpNav. Disable in case it get's ported.
+CONFIGURE_ARGS += -DCMAKE_DISABLE_FIND_PACKAGE_SpNav=ON
-NO_TEST = Yes
+TEST_IS_INTERACTIVE = X11
-pre-configure:
- ln -sf ${LOCALBASE}/bin/bison ${WRKDIR}/bin/yacc
+post-extract:
+ rmdir ${WRKSRC}/libraries/MCAD
+ cp -a ${WRKDIR}/MCAD-${MCAD_COMMIT} ${WRKSRC}/libraries/MCAD
+ #find ${WRKSRC} -type f -exec sed -i '1s,^#!/bin/sh,#!${PREFIX}/bin/bash,' {} +
+# OpenSCAD uses the program_location (see patch-src_openscad_cc) to
+# figure out resource paths, but on OpenBSD that doesn't work when
+# launched from the PATH So, add a shell script shim to fix up argv[0]
+# to be absolute so our patch works.
post-install:
+ mv ${PREFIX}/bin/openscad ${PREFIX}/libexec/openscad
+ ${INSTALL_SCRIPT} ${FILESDIR}/openscad ${PREFIX}/bin/openscad
${MODPY_COMPILEALL} ${PREFIX}/share/openscad/libraries/MCAD/
.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/cad/openscad/distinfo,v
diff -u -p -u -p -r1.7 distinfo
--- distinfo 14 Feb 2021 16:14:54 -0000 1.7
+++ distinfo 26 Nov 2025 10:12:44 -0000
@@ -1,2 +1,4 @@
-SHA256 (openscad-2021.01.src.tar.gz) = 2TjCl+fl9l26sUYcrEcvxg3+qkmZ6iwZsxpBhPLXA1k=
-SIZE (openscad-2021.01.src.tar.gz) = 15817555
+SHA256 (MCAD-1ea40220.tar.gz) = PQQHfTaYFGOMPwGP7MOUOQEaR/VFAm9DwaRlvOF3P1c=
+SHA256 (openscad-2025.10.14-b0f18e9b.tar.gz) = T5Tn5sOZNDDWuWYX+4NTWRIMa16d6nGnaqcptHLEvEg=
+SIZE (MCAD-1ea40220.tar.gz) = 56943
+SIZE (openscad-2025.10.14-b0f18e9b.tar.gz) = 24859679
Index: files/openscad
===================================================================
RCS file: files/openscad
diff -N files/openscad
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/openscad 26 Nov 2025 10:12:44 -0000
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /usr/local/libexec/openscad "$@"
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: patches/patch-CMakeLists_txt
diff -N patches/patch-CMakeLists_txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-CMakeLists_txt 26 Nov 2025 10:12:44 -0000
@@ -0,0 +1,42 @@
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -396,7 +396,7 @@ else()
+ target_link_libraries(OpenSCAD PRIVATE Eigen3::Eigen)
+ message(STATUS "Eigen: ${Eigen3_VERSION}")
+
+- find_package(Boost 1.70 REQUIRED QUIET COMPONENTS regex program_options)
++ find_package(Boost 1.70 REQUIRED QUIET COMPONENTS filesystem regex program_options)
+ message(STATUS "Boost: ${Boost_VERSION}")
+ target_include_directories(OpenSCAD SYSTEM PRIVATE ${Boost_INCLUDE_DIRS})
+ target_link_libraries(OpenSCAD PRIVATE ${Boost_LIBRARIES})
+@@ -559,7 +559,7 @@ if(ENABLE_CAIRO STREQUAL "AUTO")
+ if(CAIRO_VERSION OR CAIRO_FOUND)
+ message(STATUS "Cairo: ${CAIRO_VERSION}")
+ target_include_directories(OpenSCAD SYSTEM PRIVATE ${CAIRO_INCLUDE_DIRS})
+- target_link_libraries(OpenSCAD PRIVATE ${CAIRO_LIBRARIES})
++ target_link_libraries(OpenSCAD PRIVATE ${CAIRO_LINK_LIBRARIES})
+ target_compile_definitions(OpenSCAD PRIVATE ENABLE_CAIRO)
+ else()
+ message(STATUS "Cairo: disabled (not found)")
+@@ -806,7 +806,7 @@ elseif(UNIX)
+ if (NOT USE_GLAD)
+ target_compile_definitions(OpenSCAD PRIVATE GLEW_EGL)
+ endif()
+- target_link_libraries(OpenSCAD PRIVATE OpenGL::EGL)
++ target_link_libraries(OpenSCAD PRIVATE ${OPENGL_egl_LIBRARY})
+ endif()
+ if(ENABLE_GLX AND OpenGL_GLX_FOUND)
+ target_compile_definitions(OpenSCAD PRIVATE ENABLE_GLX)
+@@ -1121,11 +1121,6 @@ else()
+ ${GLEW_SOURCES})
+ endif()
+
+-
+-if(UNIX AND (NOT APPLE) AND (NOT HEADLESS))
+- set(PLATFORM_INPUT_DRIVER_SOURCES src/gui/input/JoystickInputDriver.cc)
+- target_compile_definitions(OpenSCAD PRIVATE ENABLE_JOYSTICK)
+-endif()
+
+ set(INPUT_DRIVER_SOURCES
+ ${PLATFORM_INPUT_DRIVER_SOURCES}
Index: patches/patch-features_boost_prf
===================================================================
RCS file: patches/patch-features_boost_prf
diff -N patches/patch-features_boost_prf
--- patches/patch-features_boost_prf 11 Mar 2022 18:24:31 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: features/boost.prf
---- features/boost.prf.orig
-+++ features/boost.prf
-@@ -71,7 +71,7 @@ isEmpty(BOOST_LINK_FLAGS) {
-
- isEmpty(BOOST_LINK_FLAGS) {
- unix|macx {
-- BOOST_LINK_FLAGS = -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lboost_regex
-+ BOOST_LINK_FLAGS = -lboost_thread-mt -lboost_program_options-mt -lboost_filesystem-mt -lboost_system-mt -lboost_regex-mt
- }
- }
-
Index: patches/patch-openscad_pro
===================================================================
RCS file: patches/patch-openscad_pro
diff -N patches/patch-openscad_pro
--- patches/patch-openscad_pro 11 Mar 2022 18:24:31 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,45 +0,0 @@
-- remove unsupported compiler flag (that is NOT ignored)
-- don't use bundled Liberation fonts, use RDEP on fonts/liberation-fonts instead
-- fix manpage installation dir
-- disable hidapi support, it doesn't compile
-
-Index: openscad.pro
---- openscad.pro.orig
-+++ openscad.pro
-@@ -150,7 +150,6 @@ netbsd* {
- # See Dec 2011 OpenSCAD mailing list, re: CGAL/GCC bugs.
- *g++* {
- QMAKE_CXXFLAGS *= -fno-strict-aliasing
-- QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedefs # ignored before 4.8
-
- # Disable attributes warnings on MSYS/MXE due to gcc bug spamming the logs: Issue #2771
- win* | CONFIG(mingw-cross-env)|CONFIG(mingw-cross-env-shared) {
-@@ -193,7 +192,7 @@ CONFIG += lib3mf
- CONFIG += gettext
- CONFIG += libxml2
- CONFIG += libzip
--CONFIG += hidapi
-+#CONFIG += hidapi
- CONFIG += spnav
- CONFIG += double-conversion
- CONFIG += cairo
-@@ -721,10 +720,6 @@ libraries.path = "$$PREFIX/share/$${FULLNAME}/librarie
- libraries.files = libraries/*
- INSTALLS += libraries
-
--fonts.path = "$$PREFIX/share/$${FULLNAME}/fonts/"
--fonts.files = fonts/*
--INSTALLS += fonts
--
- colorschemes.path = "$$PREFIX/share/$${FULLNAME}/color-schemes/"
- colorschemes.files = color-schemes/*
- INSTALLS += colorschemes
-@@ -757,7 +752,7 @@ icon512.path = $$PREFIX/share/icons/hicolor/512x512/ap
- icon512.extra = test -f icons/$${FULLNAME}-512.png && cp -f icons/$${FULLNAME}-512.png \"\$(INSTALL_ROOT)$${icon512.path}/$${FULLNAME}.png\" || cp -f icons/openscad-512.png \"\$(INSTALL_ROOT)$${icon512.path}/$${FULLNAME}.png\"
- INSTALLS += icon48 icon64 icon128 icon256 icon512
-
--man.path = $$PREFIX/share/man/man1
-+man.path = $$PREFIX/man/man1
- man.extra = cp -f doc/openscad.1 \"\$(INSTALL_ROOT)$${man.path}/$${FULLNAME}.1\"
- INSTALLS += man
-
Index: patches/patch-scripts_translation-update_sh
===================================================================
RCS file: /cvs/ports/cad/openscad/patches/patch-scripts_translation-update_sh,v
diff -u -p -u -p -r1.2 patch-scripts_translation-update_sh
--- patches/patch-scripts_translation-update_sh 11 Mar 2022 18:24:31 -0000 1.2
+++ patches/patch-scripts_translation-update_sh 26 Nov 2025 10:12:44 -0000
@@ -1,14 +1,12 @@
-OpenBSD does not have unlink in base
-
Index: scripts/translation-update.sh
--- scripts/translation-update.sh.orig
+++ scripts/translation-update.sh
-@@ -100,7 +100,7 @@ updatemo()
+@@ -101,7 +101,7 @@ updatemo()
- # clean the mess
- for LANGCODE in `cat locale/LINGUAS | grep -v "#"`; do
-- unlink ./locale/$LANGCODE/LC_MESSAGES/$LANGCODE.mo
-+ rm ./locale/$LANGCODE/LC_MESSAGES/$LANGCODE.mo
- done
- else
- if [ x"$(uname -s)" = x"Linux" ]; then
+ # clean the mess
+ for LANGCODE in `cat locale/LINGUAS | grep -v "#"`; do
+- unlink ./locale/$LANGCODE/LC_MESSAGES/$LANGCODE.mo
++ rm -f ./locale/$LANGCODE/LC_MESSAGES/$LANGCODE.mo
+ done
+ else
+ if [ x"$(uname -s)" = x"Linux" ]; then
Index: patches/patch-src_cgalutils-polyhedron_cc
===================================================================
RCS file: patches/patch-src_cgalutils-polyhedron_cc
diff -N patches/patch-src_cgalutils-polyhedron_cc
--- patches/patch-src_cgalutils-polyhedron_cc 31 Oct 2023 23:33:26 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-Backport from upstream
-Commit: cc49ad8dac24309f5452d5dea9abd406615a52d9
-
-Index: src/cgalutils-polyhedron.cc
---- src/cgalutils-polyhedron.cc.orig
-+++ src/cgalutils-polyhedron.cc
-@@ -337,19 +337,6 @@ namespace CGALUtils {
- }
- };
-
-- template <typename Polyhedron>
-- std::string printPolyhedron(const Polyhedron &p) {
-- std::ostringstream sstream;
-- sstream.precision(20);
--
-- Polyhedron_writer writer;
-- generic_print_polyhedron(sstream, p, writer);
--
-- return sstream.str();
-- }
--
-- template std::string printPolyhedron(const CGAL_Polyhedron &p);
--
- }; // namespace CGALUtils
-
- #endif /* ENABLE_CGAL */
Index: patches/patch-src_cgalutils-tess_cc
===================================================================
RCS file: patches/patch-src_cgalutils-tess_cc
diff -N patches/patch-src_cgalutils-tess_cc
--- patches/patch-src_cgalutils-tess_cc 31 Oct 2023 23:33:26 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,29 +0,0 @@
-Backport from upstream
-Commit: d559fa838ea919e664661bfcf1d3274c83743d61
-
-Index: src/cgalutils-tess.cc
---- src/cgalutils-tess.cc.orig
-+++ src/cgalutils-tess.cc
-@@ -6,10 +6,12 @@
- #pragma push_macro("NDEBUG")
- #undef NDEBUG
- #include <CGAL/Constrained_Delaunay_triangulation_2.h>
--#if CGAL_VERSION_NR >= CGAL_VERSION_NUMBER(4,11,0)
-+#if CGAL_VERSION_NR < 1050401000
- #include <CGAL/Triangulation_2_projection_traits_3.h>
-+ typedef CGAL::Triangulation_2_filtered_projection_traits_3<K> Projection;
- #else
-- #include <CGAL/Triangulation_2_filtered_projection_traits_3.h>
-+ #include <CGAL/Projection_traits_3.h>
-+ typedef CGAL::Filtered_projection_traits_3<K> Projection;
- #endif
- #include <CGAL/Triangulation_face_base_with_info_2.h>
- #pragma pop_macro("NDEBUG")
-@@ -19,7 +21,6 @@ struct FaceInfo {
- bool in_domain() { return nesting_level%2 == 1; }
- };
-
--typedef CGAL::Triangulation_2_filtered_projection_traits_3<K> Projection;
- typedef CGAL::Triangulation_face_base_with_info_2<FaceInfo, K> Fbb;
- typedef CGAL::Triangulation_data_structure_2<
- CGAL::Triangulation_vertex_base_2<Projection>,
Index: patches/patch-src_cgalutils_h
===================================================================
RCS file: patches/patch-src_cgalutils_h
diff -N patches/patch-src_cgalutils_h
--- patches/patch-src_cgalutils_h 31 Oct 2023 23:33:26 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-Backport from upstream
-Commit: cc49ad8dac24309f5452d5dea9abd406615a52d9
-
-Index: src/cgalutils.h
---- src/cgalutils.h.orig
-+++ src/cgalutils.h
-@@ -45,7 +45,6 @@ namespace CGALUtils {
- bool is_approximately_convex(const PolySet &ps);
- Geometry const* applyMinkowski(const Geometry::Geometries &children);
-
-- template <typename Polyhedron> std::string printPolyhedron(const Polyhedron &p);
- template <typename Polyhedron> bool createPolySetFromPolyhedron(const Polyhedron &p, PolySet &ps);
- template <typename Polyhedron> bool createPolyhedronFromPolySet(const PolySet &ps, Polyhedron &p);
- template <class Polyhedron_A, class Polyhedron_B>
Index: patches/patch-src_filemodule_cc
===================================================================
RCS file: patches/patch-src_filemodule_cc
diff -N patches/patch-src_filemodule_cc
--- patches/patch-src_filemodule_cc 22 Nov 2025 01:49:32 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-Index: src/filemodule.cc
---- src/FileModule.cc.orig Fri Nov 21 10:07:49 2025
-+++ src/FileModule.cc Fri Nov 21 10:09:46 2025
-@@ -65,7 +65,7 @@
- auto ext = fs::path(path).extension().generic_string();
-
- if (boost::iequals(ext, ".otf") || boost::iequals(ext, ".ttf")) {
-- if (fs::is_regular(path)) {
-+ if (fs::is_regular_file(path)) {
- FontCache::instance()->register_font_file(path);
- } else {
- LOG(message_group::Error,Location::NONE,"","Can't read font with path '%1$s'",path);
Index: patches/patch-src_openscad_cc
===================================================================
RCS file: /cvs/ports/cad/openscad/patches/patch-src_openscad_cc,v
diff -u -p -u -p -r1.1 patch-src_openscad_cc
--- patches/patch-src_openscad_cc 31 Oct 2023 23:33:26 -0000 1.1
+++ patches/patch-src_openscad_cc 26 Nov 2025 10:12:44 -0000
@@ -1,55 +1,20 @@
-Backport from upstream
-Commit: d559fa838ea919e664661bfcf1d3274c83743d61
-
-Index: src/openscad.cc
+IZZndex: src/openscad.cc
--- src/openscad.cc.orig
+++ src/openscad.cc
-@@ -65,7 +65,6 @@
- #include <chrono>
- #include <boost/algorithm/string.hpp>
+@@ -60,6 +60,7 @@
+ #include <boost/algorithm/string/predicate.hpp>
#include <boost/algorithm/string/split.hpp>
--#include <boost/algorithm/string/join.hpp>
- #include <boost/range/adaptor/transformed.hpp>
- #include <boost/program_options.hpp>
- #include <boost/filesystem.hpp>
-@@ -307,7 +306,7 @@ void set_render_color_scheme(const std::string color_s
- }
+ #include <boost/dll/runtime_symbol_info.hpp>
++#include <boost/filesystem/operations.hpp>
+ #include <boost/lexical_cast.hpp>
+ #include <boost/lexical_cast/bad_lexical_cast.hpp>
+ #include <boost/optional/optional.hpp>
+@@ -814,7 +815,7 @@ int main(int argc, char **argv)
- if (exit_if_not_found) {
-- LOG(message_group::None,Location::NONE,"",(boost::join(ColorMap::inst()->colorSchemeNames(), "\n")));
-+ LOG(message_group::None,Location::NONE,"",(boost::algorithm::join(ColorMap::inst()->colorSchemeNames(), "\n")));
-
- exit(1);
- } else {
-@@ -885,7 +884,7 @@ struct CommaSeparatedVector
- };
-
- template <class Seq, typename ToString>
--std::string join(const Seq &seq, const std::string &sep, const ToString &toString)
-+std::string str_join(const Seq &seq, const std::string &sep, const ToString &toString)
- {
- return boost::algorithm::join(boost::adaptors::transform(seq, toString), sep);
- }
-@@ -947,7 +946,7 @@ int main(int argc, char **argv)
- ("P,P", po::value<string>(), "customizer parameter set")
- #ifdef ENABLE_EXPERIMENTAL
- ("enable", po::value<vector<string>>(), ("enable experimental features: " +
-- join(boost::make_iterator_range(Feature::begin(), Feature::end()), " | ",
-+ str_join(boost::make_iterator_range(Feature::begin(), Feature::end()), " | ",
- [](const Feature *feature) {
- return feature->get_name();
- }) +
-@@ -964,11 +963,11 @@ int main(int argc, char **argv)
- ("render", po::value<string>()->implicit_value(""), "for full geometry evaluation when exporting png")
- ("preview", po::value<string>()->implicit_value(""), "[=throwntogether] -for ThrownTogether preview png")
- ("animate", po::value<unsigned>(), "export N animated frames")
-- ("view", po::value<CommaSeparatedVector>(), ("=view options: " + boost::join(viewOptions.names(), " | ")).c_str())
-+ ("view", po::value<CommaSeparatedVector>(), ("=view options: " + boost::algorithm::join(viewOptions.names(), " | ")).c_str())
- ("projection", po::value<string>(), "=(o)rtho or (p)erspective when exporting png")
- ("csglimit", po::value<unsigned int>(), "=n -stop rendering at n CSG elements when exporting png")
- ("colorscheme", po::value<string>(), ("=colorscheme: " +
-- join(ColorMap::inst()->colorSchemeNames(), " | ",
-+ str_join(ColorMap::inst()->colorSchemeNames(), " | ",
- [](const std::string& colorScheme) {
- return (colorScheme == ColorMap::inst()->defaultColorSchemeName() ? "*" : "") + colorScheme;
- }) +
+ #ifndef __EMSCRIPTEN__
+ const auto applicationPath =
+- weakly_canonical(boost::dll::program_location()).parent_path().generic_string();
++ boost::filesystem::system_complete(argv[0]).parent_path().generic_string();
+ #else
+ const auto applicationPath = boost::dll::fs::current_path();
+ #endif
Index: patches/patch-tests_virtualfb_sh
===================================================================
RCS file: patches/patch-tests_virtualfb_sh
diff -N patches/patch-tests_virtualfb_sh
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-tests_virtualfb_sh 26 Nov 2025 10:12:44 -0000
@@ -0,0 +1,9 @@
+Index: tests/virtualfb.sh
+--- tests/virtualfb.sh.orig
++++ tests/virtualfb.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/usr/local/bin/bash
+
+ # Toggle the Virtual Framebuffer
+ # If started, stop. If stopped, start.
Index: pkg/DESCR
===================================================================
RCS file: /cvs/ports/cad/openscad/pkg/DESCR,v
diff -u -p -u -p -r1.1.1.1 DESCR
--- pkg/DESCR 29 Apr 2011 18:55:37 -0000 1.1.1.1
+++ pkg/DESCR 26 Nov 2025 10:12:44 -0000
@@ -1,13 +1,23 @@
-OpenSCAD is a software for creating 3D CAD objects.
+OpenSCAD is software for creating solid 3D CAD models. It is free
+software and available for Linux/UNIX, Windows and Mac OS X. Unlike
+most free software for creating 3D models (such as Blender) it does
+not focus on the artistic aspects of 3D modelling but instead on
+the CAD aspects. Thus it might be the application you are looking
+for when you are planning to create 3D models of machine parts but
+pretty sure is not what you are looking for when you are more
+interested in creating computer-animated movies.
-Unlike most free software for creating 3D models, it does not focus on
-the artistic aspects of 3D modelling but instead on the CAD aspects.
-Thus it is more suitable for creating 3D models of machine parts but
-perhaps not when creating computer-animated movies.
+OpenSCAD is not an interactive modeller. Instead it is something
+like a 3D-compiler that reads in a script file that describes the
+object and renders the 3D model from this script file. This gives
+you (the designer) full control over the modelling process and
+enables you to easily change any step in the modelling process or
+make designs that are defined by configurable parameters.
-OpenSCAD is not an interactive modeller. Instead it is something like
-a 3D-compiler that reads in a script file that describes the object
-and renders the 3D model from this script file. This gives designers
-full control over the modelling process and enables them to easily
-change any step in the modelling process or make designes that are
-defined by configurable parameters.
+OpenSCAD provides two main modelling techniques: First there is
+constructive solid geometry (aka CSG) and second there is extrusion
+of 2D outlines. Autocad DXF files can be used as the data exchange
+format for such 2D outlines. In addition to 2D paths for extrusion
+it is also possible to read design parameters from DXF files. Besides
+DXF files OpenSCAD can read and create 3D models in the STL and OFF
+file formats.
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/cad/openscad/pkg/PLIST,v
diff -u -p -u -p -r1.14 PLIST
--- pkg/PLIST 23 Oct 2025 13:19:03 -0000 1.14
+++ pkg/PLIST 26 Nov 2025 10:12:44 -0000
@@ -1,4 +1,5 @@
-@bin bin/openscad
+bin/openscad
+@bin libexec/openscad
@man man/man1/openscad.1
share/applications/openscad.desktop
share/icons/hicolor/128x128/apps/openscad.png
@@ -13,6 +14,8 @@ share/openscad/
share/openscad/color-schemes/
share/openscad/color-schemes/editor/
share/openscad/color-schemes/editor/dark-background.json
+share/openscad/color-schemes/editor/high-contrast-dark.json
+share/openscad/color-schemes/editor/high-contrast-light.json
share/openscad/color-schemes/editor/light-background.json
share/openscad/color-schemes/editor/monokai.json
share/openscad/color-schemes/editor/solarized-dark.json
@@ -20,13 +23,17 @@ share/openscad/color-schemes/editor/sola
share/openscad/color-schemes/editor/tomorrow-night.json
share/openscad/color-schemes/editor/tomorrow.json
share/openscad/color-schemes/editor/visualstudio.json
+share/openscad/color-schemes/editor/xcode.json
share/openscad/color-schemes/readme.txt
share/openscad/color-schemes/render/
share/openscad/color-schemes/render/beforedawn.json
+share/openscad/color-schemes/render/clearsky.json
+share/openscad/color-schemes/render/daylight-gem.json
share/openscad/color-schemes/render/deepocean.json
share/openscad/color-schemes/render/metallic.json
share/openscad/color-schemes/render/monotone.json
share/openscad/color-schemes/render/nature.json
+share/openscad/color-schemes/render/nocturnal-gem.json
share/openscad/color-schemes/render/solarized.json
share/openscad/color-schemes/render/starnight.json
share/openscad/color-schemes/render/sunset.json
@@ -39,6 +46,7 @@ share/openscad/examples/Advanced/animati
share/openscad/examples/Advanced/assert.scad
share/openscad/examples/Advanced/children.scad
share/openscad/examples/Advanced/children_indexed.scad
+share/openscad/examples/Advanced/example-dir.json
share/openscad/examples/Advanced/module_recursion.scad
share/openscad/examples/Advanced/offset.scad
share/openscad/examples/Advanced/surface_image.png
@@ -47,16 +55,20 @@ share/openscad/examples/Basics/
share/openscad/examples/Basics/CSG-modules.scad
share/openscad/examples/Basics/CSG.scad
share/openscad/examples/Basics/LetterBlock.scad
+share/openscad/examples/Basics/example-dir.json
+share/openscad/examples/Basics/hull.scad
share/openscad/examples/Basics/linear_extrude.scad
share/openscad/examples/Basics/logo.scad
share/openscad/examples/Basics/logo_and_text.scad
share/openscad/examples/Basics/projection.scad
share/openscad/examples/Basics/projection.stl
+share/openscad/examples/Basics/roof.scad
share/openscad/examples/Basics/rotate_extrude.scad
share/openscad/examples/Basics/text_on_cube.scad
share/openscad/examples/COPYING-CC0.txt
share/openscad/examples/Functions/
share/openscad/examples/Functions/echo.scad
+share/openscad/examples/Functions/example-dir.json
share/openscad/examples/Functions/functions.scad
share/openscad/examples/Functions/list_comprehensions.scad
share/openscad/examples/Functions/polygon_areas.scad
@@ -96,12 +108,33 @@ share/openscad/examples/Old/example024.s
share/openscad/examples/Parametric/
share/openscad/examples/Parametric/candleStand.json
share/openscad/examples/Parametric/candleStand.scad
+share/openscad/examples/Parametric/example-dir.json
share/openscad/examples/Parametric/sign.json
share/openscad/examples/Parametric/sign.scad
-share/openscad/examples/examples.json
+share/openscad/fonts/
+share/openscad/fonts/05-osx-fonts.conf
+share/openscad/fonts/10-liberation.conf
+share/openscad/fonts/Liberation-2.00.1/
+share/openscad/fonts/Liberation-2.00.1/AUTHORS
+share/openscad/fonts/Liberation-2.00.1/ChangeLog
+share/openscad/fonts/Liberation-2.00.1/LICENSE
+share/openscad/fonts/Liberation-2.00.1/README
+share/openscad/fonts/Liberation-2.00.1/TODO
+share/openscad/fonts/Liberation-2.00.1/ttf/
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationMono-Bold.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationMono-BoldItalic.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationMono-Italic.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationMono-Regular.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSans-Bold.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSans-BoldItalic.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSans-Italic.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSans-Regular.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSerif-Bold.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSerif-BoldItalic.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSerif-Italic.ttf
+share/openscad/fonts/Liberation-2.00.1/ttf/LiberationSerif-Regular.ttf
share/openscad/libraries/
share/openscad/libraries/MCAD/
-share/openscad/libraries/MCAD/.gitignore
share/openscad/libraries/MCAD/2Dshapes.scad
share/openscad/libraries/MCAD/3d_triangle.scad
share/openscad/libraries/MCAD/README.markdown
@@ -118,6 +151,7 @@ share/openscad/libraries/MCAD/${MODPY_PY
share/openscad/libraries/MCAD/${MODPY_PYCACHE}test_docs.${MODPY_PYC_MAGIC_TAG}pyc
share/openscad/libraries/MCAD/${MODPY_PYCACHE}test_mcad.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
share/openscad/libraries/MCAD/${MODPY_PYCACHE}test_mcad.${MODPY_PYC_MAGIC_TAG}pyc
+share/openscad/libraries/MCAD/array.scad
share/openscad/libraries/MCAD/bearing.scad
share/openscad/libraries/MCAD/bitmap/
share/openscad/libraries/MCAD/bitmap/README
@@ -126,6 +160,7 @@ share/openscad/libraries/MCAD/bitmap/bit
share/openscad/libraries/MCAD/bitmap/height_map.scad
share/openscad/libraries/MCAD/bitmap/letter_necklace.scad
share/openscad/libraries/MCAD/bitmap/name_tag.scad
+share/openscad/libraries/MCAD/bitmap/test_name_tag.scad
share/openscad/libraries/MCAD/boxes.scad
share/openscad/libraries/MCAD/constants.scad
share/openscad/libraries/MCAD/curves.scad
@@ -138,6 +173,7 @@ share/openscad/libraries/MCAD/layouts.sc
share/openscad/libraries/MCAD/lego_compatibility.scad
share/openscad/libraries/MCAD/lgpl-2.1.txt
share/openscad/libraries/MCAD/libtriangles.scad
+share/openscad/libraries/MCAD/linear_bearing.scad
share/openscad/libraries/MCAD/materials.scad
share/openscad/libraries/MCAD/math.scad
share/openscad/libraries/MCAD/metric_fastners.scad
@@ -147,6 +183,7 @@ share/openscad/libraries/MCAD/nuts_and_b
share/openscad/libraries/MCAD/openscad_testing.py
share/openscad/libraries/MCAD/openscad_utils.py
share/openscad/libraries/MCAD/polyholes.scad
+share/openscad/libraries/MCAD/profiles.scad
share/openscad/libraries/MCAD/regular_shapes.scad
share/openscad/libraries/MCAD/screw.scad
share/openscad/libraries/MCAD/servos.scad
@@ -177,28 +214,47 @@ share/openscad/locale/fr/LC_MESSAGES/ope
share/openscad/locale/hy/
share/openscad/locale/hy/LC_MESSAGES/
share/openscad/locale/hy/LC_MESSAGES/openscad.mo
+share/openscad/locale/it/
+share/openscad/locale/it/LC_MESSAGES/
+share/openscad/locale/it/LC_MESSAGES/openscad.mo
+share/openscad/locale/ka/
+share/openscad/locale/ka/LC_MESSAGES/
+share/openscad/locale/ka/LC_MESSAGES/openscad.mo
share/openscad/locale/pl/
share/openscad/locale/pl/LC_MESSAGES/
share/openscad/locale/pl/LC_MESSAGES/openscad.mo
+share/openscad/locale/pt_BR/
+share/openscad/locale/pt_BR/LC_MESSAGES/
+share/openscad/locale/pt_BR/LC_MESSAGES/openscad.mo
share/openscad/locale/ru/
share/openscad/locale/ru/LC_MESSAGES/
share/openscad/locale/ru/LC_MESSAGES/openscad.mo
+share/openscad/locale/tr/
+share/openscad/locale/tr/LC_MESSAGES/
+share/openscad/locale/tr/LC_MESSAGES/openscad.mo
share/openscad/locale/uk/
share/openscad/locale/uk/LC_MESSAGES/
share/openscad/locale/uk/LC_MESSAGES/openscad.mo
-@tag update-desktop-database
-@tag update-mime-database
share/openscad/locale/zh_CN/
share/openscad/locale/zh_CN/LC_MESSAGES/
share/openscad/locale/zh_CN/LC_MESSAGES/openscad.mo
share/openscad/locale/zh_TW/
share/openscad/locale/zh_TW/LC_MESSAGES/
share/openscad/locale/zh_TW/LC_MESSAGES/openscad.mo
+share/openscad/shaders/
+share/openscad/shaders/MouseSelector.frag
+share/openscad/shaders/MouseSelector.vert
+share/openscad/shaders/OpenCSG.vert
+share/openscad/shaders/ViewEdges.frag
+share/openscad/shaders/ViewEdges.vert
share/openscad/templates/
+share/openscad/templates/CC0.json
share/openscad/templates/difference.json
share/openscad/templates/for.json
share/openscad/templates/function.json
share/openscad/templates/module.json
share/openscad/templates/rotate.json
share/openscad/templates/translate.json
+@tag update-mime-database
+@tag update-desktop-database
@tag gtk-update-icon-cache %D/share/icons/hicolor
[UPDATE] cad/openscad to 2025.10.14