Friday, November 28, 2025

Re: [UPDATE] cad/openscad to 2025.10.14

At the bottom is the patch with (I think) all the suggestions folks have
made except the one question below. I was able to build DEBUG_PACKAGES
so not sure if adjusting the CMAKE_INSTALL_BINDIR helped or if I had not
updated the PLIST.

In any case, I should have time this weekend to import the deps and the
Blender patch.

You can see all the changes on my cvsweb

https://cvs.afresh1.com/cgi-bin/cvsweb/mystuff-openscad/

It's available via anoncvs as well:

cvs -d anoncvs@cvs.afresh1.com:/cvs co mystuff-openscad


On Fri, Nov 28, 2025 at 03:59:12PM +0000, Stuart Henderson wrote:
> On 2025/11/28 15:43, Johannes Thyssen Tishman wrote:
> > +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}
>
> i have some nits with these bits and associated in post-extract, but
> they can be handled after the update is in

Since the release port is working, should I import this as
openscad-nightly? It seems fairly easy to configure it to append
`-nightly` to the binary and script.


> > -BUILD_DEPENDS = devel/bison \
> > +# Match devel/boost
> > +COMPILER = base-clang ports-gcc
>
> missing COMPILER_LANGS

I'm not sure what it needs to be.


> > +BUILD_DEPENDS = cad/clipper2 \
>
> this is in both BUILD_DEPENDS and LIB_DEPENDS, should just be the latter
>
> > +TEST_DEPENDS = graphics/ImageMagick
> > +
> > +# A test requires this
> > +TEST_DEPENDS += shells/bash
>
> both of those are already in BUILD_DEPENDS, and you can't get to
> testing if you didn't build

I think I added them to BUILD_DEPENDS later and forgot to remove these.
Thanks.


> > +# The openscad script wrapper breaks debug packages
> > +#DEBUG_PACKAGES = ${BUILD_PACKAGES}
>
> what's up here? there's no reason for a script to break debug packages.

If I recall, it tried to do something with bin/openscad which I had had
mv libexec. I will try a better tactic and see if that helps.


> > +# We don't have Pillow
> > +CONFIGURE_ARGS += -DUSE_IMAGE_COMPARE_PY=OFF
>
> we do, graphics/py-Pillow if it's useful for something

It's just this that it uses for tests instead of ImageMagick.

https://github.com/openscad/openscad/blob/master/tests/image_compare.py

I don't know why one vs the other, but will see if the test are any
happier with it.


> > + #find ${WRKSRC} -type f -exec sed -i '1s,^#!/bin/sh,#!${PREFIX}/bin/bash,' {} +
>
> commented-out; either remove or if it's needed somewhere then should
> be targetted, running sed -i on all of extracted source isn't ideal

Oops, forgot about that cruft. There was something that didn't work right,
but I don't remember what and it apparently got fixed differently.


> > +# 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.
>
> (not related to the port, but it's such a pain that we don't have this,
> it is widely expected by many things in ports these days)

I do hope for a better solution someday :-)


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 29 Nov 2025 01:58:55 -0000
@@ -1,69 +1,115 @@
-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
+
+# Match devel/boost
+COMPILER = base-clang ports-gcc

BUILD_DEPENDS = 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
+
+TEST_DEPENDS = graphics/py-Pillow

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
+BUILD_DEPENDS += ${RUN_DEPENDS}
+
+DEBUG_PACKAGES = ${BUILD_PACKAGES}
+
+# Make about say the "right" thing
+CONFIGURE_ARGS += -DOPENSCAD_VERSION=${V}
+
+# 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.
+# In post-install we add a shell script shim to provide the full path.
+CONFIGURE_ARGS += -DCMAKE_INSTALL_BINDIR=${PREFIX}/libexec
+
+# 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
+
+# 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

post-install:
+ ${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 29 Nov 2025 01:58:55 -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 29 Nov 2025 01:58:55 -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 29 Nov 2025 01:58:55 -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 29 Nov 2025 01:58:55 -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
-
-

No comments:

Post a Comment