Download raw body.
[UPDATE] cad/openscad to 2025.10.14
2025-11-28T13:07:47+0000 Stuart Henderson <stu@spacehopper.org>:
> On 2025/11/26 13:11, Johannes Thyssen Tishman wrote:
> > 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.
>
> generally don't list things in BUILD_DEPENDS which there's a WANTLIB for.
> they should either not be listed (relying on them getting pulled in via
> other libraries in LIB_DEPENDS) or listed in LIB_DEPENDS themselves.
>
> > BUILD_DEPENDS = cad/clipper2 \
> > devel/bison \
> > + devel/harfbuzz,-main \
>
> (also, if we were listing this... don't include the subpackage i.e.
> ",-main" when it's the default; just use the base port name in these
> cases, i.e. just "devel/harfbuzz" here)
>
Thanks for the explanation sthen. Below is a diff that addresses your
comments on top of my previous diff. The dependencies that I removed
from BUILD_DEPENDS are pulled by other dependencies in LIB_DEPENDS. A
complete diff of the update including these changes is attached.
diff -rup /tmp/openscad/Makefile openscad/Makefile
--- /tmp/openscad/Makefile Fri Nov 28 14:56:07 2025
+++ openscad/Makefile Fri Nov 28 14:56:43 2025
@@ -35,20 +35,16 @@ WANTLIB += m manifold mpfr opencsg qscintilla2_qt6 tbb
COMPILER = base-clang ports-gcc
BUILD_DEPENDS = cad/clipper2 \
- devel/harfbuzz,-main \
devel/bison \
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 \
- textproc/libxml \
x11/xkbcommon
LIB_DEPENDS = archivers/libzip \
@@ -122,7 +118,7 @@ post-extract:
# to be absolute so our patch works.
post-install:
mv ${PREFIX}/bin/openscad ${PREFIX}/libexec/openscad
- ${INSTALL_SCRIPT} ${FILESDIR}/openscad ${PREFIX}/bin/openscad
+ ${SUBST_PROGRAM} ${FILESDIR}/openscad ${PREFIX}/bin/openscad
${MODPY_COMPILEALL} ${PREFIX}/share/openscad/libraries/MCAD/
.include <bsd.port.mk>
diff -rup /tmp/openscad/files/openscad openscad/files/openscad
--- /tmp/openscad/files/openscad Fri Nov 28 14:56:16 2025
+++ openscad/files/openscad Fri Nov 28 14:51:48 2025
@@ -1,3 +1,3 @@
#!/bin/sh
-exec /usr/local/libexec/openscad "$@"
+exec ${TRUEPREFIX}/libexec/openscad "$@"
Index: Makefile
===================================================================
RCS file: /cvs/ports/cad/openscad/Makefile,v
diff -u -p -r1.57 Makefile
--- Makefile 22 Nov 2025 01:49:32 -0000 1.57
+++ Makefile 28 Nov 2025 15:41:36 -0000
@@ -1,69 +1,124 @@
-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
+
+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
-BUILD_DEPENDS = devel/bison \
+# Match devel/boost
+COMPILER = base-clang ports-gcc
+
+BUILD_DEPENDS = cad/clipper2 \
+ devel/bison \
devel/gettext,-tools \
+ devel/sanitizers-cmake \
+ graphics/glslang \
+ graphics/ImageMagick \
+ graphics/shaderc \
+ graphics/vulkan-tools \
math/cgal \
- math/eigen3
+ math/eigen3 \
+ shells/bash \
+ 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
+ ${SUBST_PROGRAM} ${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 -r1.7 distinfo
--- distinfo 14 Feb 2021 16:14:54 -0000 1.7
+++ distinfo 28 Nov 2025 15:41:36 -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 28 Nov 2025 15:41:36 -0000
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec ${TRUEPREFIX}/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 28 Nov 2025 15:41:36 -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 -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 28 Nov 2025 15:41:36 -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 -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 28 Nov 2025 15:41:36 -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 28 Nov 2025 15:41:36 -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 -r1.1.1.1 DESCR
--- pkg/DESCR 29 Apr 2011 18:55:37 -0000 1.1.1.1
+++ pkg/DESCR 28 Nov 2025 15:41:36 -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 -r1.14 PLIST
--- pkg/PLIST 23 Oct 2025 13:19:03 -0000 1.14
+++ pkg/PLIST 28 Nov 2025 15:41:36 -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