Download raw body.
[UPDATE] cad/openscad to 2025.10.14
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.
On Wed, Oct 01, 2025 at 08:22:20PM -0700, Andrew Hewus Fresh wrote:
> This updates OpenSCAD to a relatively recent "nightly". This is the one
> I have been testing, but should be relatively easy to watch for good
> places to pull in in he future.
>
> I haven't done significant work in it yet, but the few things I have
> tried have worked great and the new manifold renderer is _so_ much
> faster.
>
> It does use a shell script shim to make sure it gets executed with the
> full path so the application and resource paths get set up correctly.
>
> I removed the "unlink" patch, I am not sure if that is a vestigial
> script that is no longer used, but it doesn't seem to be a problem when
> building. I also removed "the" from the comment, due to portcheck(1),
> but can put it back.
>
> It still wasn't building right on my sparc64, but not a SIGILL, just
> weird compile problems. I did not get it working on any platforms other
> than amd64, but might try sparc64 again and even try my macppc.
>
> You an also see it on my cvsweb or anoncvs checkout:
>
> https://cvs.afresh1.com/cgi-bin/cvsweb/mystuff-openscad/
>
> $ cvs -d anoncvs@cvs.afresh1.com:/cvs co mystuff-openscad
>
> Comments, OK? (once the four new dependencies get imported)
Index: Makefile
===================================================================
RCS file: /cvs/ports/cad/openscad/Makefile,v
diff -u -p -r1.56 Makefile
--- Makefile 28 Apr 2025 07:19:19 -0000 1.56
+++ Makefile 7 Nov 2025 18:46:03 -0000
@@ -1,70 +1,121 @@
-BROKEN = update to git snapshot to build with 1.87
-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 = 12
CATEGORIES = cad
HOMEPAGE = https://www.openscad.org/
+TEST_IS_INTERACTIVE = X11
-# 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
+
+# Match devel/boost
+COMPILER = base-clang ports-gcc
-BUILD_DEPENDS = devel/bison \
+BUILD_DEPENDS = cad/clipper2 \
+ devel/bison \
devel/gettext,-tools \
+ devel/sanitizers-cmake \
+ graphics/glslang \
+ graphics/vulkan-tools \
math/cgal \
- math/eigen3
+ math/eigen3 \
+ shells/bash
LIB_DEPENDS = archivers/libzip \
+ cad/clipper2 \
+ cad/manifold \
devel/boost \
+ devel/gettext \
+ devel/glib2 \
devel/gmp \
- devel/harfbuzz \
+ devel/gmp,-cxx \
+ devel/lib3mf \
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
-NO_TEST = Yes
+# I don't know how link in comms/libhidapi
+CONFIGURE_ARGS += -DENABLE_HIDAPI=OFF
-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} /dev/null ${PREFIX}/bin/openscad
+ printf "%s\n%s\n" \
+ '#!/bin/sh' \
+ 'exec ${TRUEPREFIX}/libexec/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 7 Nov 2025 18:46:03 -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: 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 7 Nov 2025 18:46:03 -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 7 Nov 2025 18:46:03 -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_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 7 Nov 2025 18:46:03 -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 7 Nov 2025 18:46:03 -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 7 Nov 2025 18:46:03 -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 7 Nov 2025 18:46:03 -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