2026-05-22T08:50:53+0000 Johannes Thyssen Tishman <[email protected]>:
> Please find below an update for cad/solvespace to version 3.2.
>
> Changelog:
> https://github.com/solvespace/solvespace/blob/master/CHANGELOG.md#changelog
>
> Notes about this update:
> 1. Test results (turns out they are not broken hehe):
> Success! 255 test cases (0 skipped), 884 checks, 3.163s
> 2. Major bump due to dynamic export removal
While here, I'd like to clean up the port a bit to address the
following:
- Consistent usage of tabs and spaces
- Order of variables to match Makefile.template
- Grouping and alignment of variables (preference of mine)
The diff below includes both the update as well as the clean-up (sent
separately to make review of update-only changes easier).
Index: Makefile
===================================================================
RCS file: /cvs/ports/cad/solvespace/Makefile,v
retrieving revision 1.6
diff -u -p -r1.6 Makefile
--- Makefile 13 Feb 2026 12:02:14 -0000 1.6
+++ Makefile 22 May 2026 08:53:54 -0000
@@ -1,22 +1,16 @@
-COMMENT = parametric 2D/3D CAD program
-V = 3.1
-DISTNAME = solvespace-${V}
-CATEGORIES = cad
-REVISION = 1
+COMMENT = parametric 2D/3D CAD program
-SHARED_LIBS += slvs 0.0
+V = 3.2
+DISTNAME = solvespace-${V}
-HOMEPAGE = https://solvespace.com/
+SHARED_LIBS += slvs 1.0
-MAINTAINER = Johannes Thyssen Tishman <[email protected]>
-
-SITES =
https://github.com/solvespace/solvespace/releases/download/v${V}/
-EXTRACT_SUFX = .tar.xz
+CATEGORIES = cad
+HOMEPAGE = https://solvespace.com/
+MAINTAINER = Johannes Thyssen Tishman <[email protected]>
# GPLv3+
-PERMIT_PACKAGE = Yes
-
-COMPILER = base-clang
+PERMIT_PACKAGE = Yes
WANTLIB += ${COMPILER_LIBCXX} GL GLU X11 atk-1.0 atkmm-1.6 c cairo
WANTLIB += cairo-gobject cairomm-1.0 execinfo fontconfig freetype
@@ -25,41 +19,35 @@ WANTLIB += glibmm-2.4 gobject-2.0 gtk-3
WANTLIB += json-c m pango-1.0 pangocairo-1.0 pangomm-1.4 png sigc-2.0
WANTLIB += z
-BUILD_DEPENDS = devel/gettext,-runtime \
- math/eigen3
+SITES =
https://github.com/solvespace/solvespace/releases/download/v${V}/
+EXTRACT_SUFX = .tar.xz
+
+COMPILER = base-clang
+MODULES = devel/cmake
+
+BUILD_DEPENDS = devel/gettext,-runtime \
+ math/eigen3
-LIB_DEPENDS = devel/json-c \
- x11/gtk3mm
+LIB_DEPENDS = devel/json-c \
+ graphics/cairo \
+ graphics/png \
+ x11/gtk3mm
+
+RUN_DEPENDS = devel/desktop-file-utils \
+ misc/shared-mime-info \
+ math/eigen3 \
+ x11/gtk+4,-guic
+
+CONFIGURE_ARGS+= -DENABLE_GUI=ON \
+ -DENABLE_CLI=ON \
+ -DFORCE_VENDORED_Eigen3=OFF \
+ -DENABLE_LTO=OFF \
+ -DENABLE_COVERAGE=OFF \
+ -DENABLE_TESTS=ON \
+ -DENABLE_OPENMP=OFF \
+ -DENABLE_SANITIZERS=OFF
-RUN_DEPENDS = devel/desktop-file-utils \
- misc/shared-mime-info \
- math/eigen3 \
- x11/gtk+4,-guic
-
-MODULES = devel/cmake
-
-CONFIGURE_ARGS+= -DENABLE_GUI=ON \
- -DENABLE_CLI=ON \
- -DFORCE_VENDORED_Eigen3=OFF \
- -DENABLE_LTO=OFF \
- -DENABLE_COVERAGE=OFF \
- -DENABLE_TESTS=OFF \
- -DENABLE_OPENMP=OFF \
- -DENABLE_SANITIZERS=OFF \
- -DMI_SECURE=ON \
- -DMI_LIBATOMIC=OFF \
- -DMI_BUILD_TESTS=OFF \
- -DMI_OVERRIDE=OFF \
- -DMI_BUILD_SHARED=OFF \
- -DMI_BUILD_OBJECT=OFF
-
-MODCMAKE_POLICY_VERSION_OVERRIDE = Yes
-
-# testsuite broken as is
-NO_TEST = YES
-
-# add FindCairo.cmake
-post-extract:
- cp ${FILESDIR}/FindCairo.cmake ${WRKSRC}/cmake/
+do-test:
+ cd ${WRKSRC} && ${WRKBUILD}/bin/solvespace-testsuite
.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/cad/solvespace/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 distinfo
--- distinfo 3 Jul 2023 13:43:48 -0000 1.1.1.1
+++ distinfo 22 May 2026 08:53:54 -0000
@@ -1,2 +1,2 @@
-SHA256 (solvespace-3.1.tar.xz) = NKJzzmQtDHe48QFGNzDtTq3n2Qz6v+SG8+fL9JT/Eyo=
-SIZE (solvespace-3.1.tar.xz) = 46083984
+SHA256 (solvespace-3.2.tar.xz) = 2T6BZme2xvBfq8Pzy214P60qOAXEbSTijy69kbw23nY=
+SIZE (solvespace-3.2.tar.xz) = 53579228
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: /cvs/ports/cad/solvespace/patches/patch-CMakeLists_txt,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-CMakeLists_txt
--- patches/patch-CMakeLists_txt 3 Jul 2023 13:43:48 -0000 1.1.1.1
+++ patches/patch-CMakeLists_txt 22 May 2026 08:53:54 -0000
@@ -1,32 +1,11 @@
Index: CMakeLists.txt
--- CMakeLists.txt.orig
+++ CMakeLists.txt
-@@ -34,9 +34,9 @@ endif()
- # NOTE TO PACKAGERS: The embedded git commit hash is critical for rapid bug
triage when the builds
- # can come from a variety of sources. If you are mirroring the sources or
otherwise build when
- # the .git directory is not present, please comment the following line:
--include(GetGitCommitHash)
-+#include(GetGitCommitHash)
- # and instead uncomment the following, adding the complete git hash of the
checkout you are using:
--# set(GIT_COMMIT_HASH 0000000000000000000000000000000000000000)
-+set(GIT_COMMIT_HASH 70bde63cb32a7f049fa56cbdf924e2695fcb2916)
-
- string(SUBSTRING "${GIT_COMMIT_HASH}" 0 8 solvespace_GIT_HASH)
- project(solvespace
-@@ -269,7 +269,7 @@ else()
- find_package(ZLIB REQUIRED)
- find_package(PNG REQUIRED)
- find_package(Freetype REQUIRED)
-- pkg_check_modules(CAIRO REQUIRED cairo)
-+ find_package(Cairo REQUIRED)
- endif()
-
- # GUI dependencies
-@@ -305,7 +305,6 @@ if(ENABLE_GUI)
- find_library(APPKIT_LIBRARY AppKit REQUIRED)
+@@ -381,7 +381,6 @@ if(ENABLE_GUI)
+ # Everything is built in
else()
find_package(OpenGL REQUIRED)
- find_package(SpaceWare)
pkg_check_modules(FONTCONFIG REQUIRED fontconfig)
- pkg_check_modules(JSONC REQUIRED json-c)
- pkg_check_modules(GTKMM REQUIRED gtkmm-3.0>=3.18 pangomm-1.4 x11)
+ if (NOT USE_QT_GUI)
+ pkg_check_modules(JSONC REQUIRED json-c)
Index: patches/patch-src_platform_guigtk_cpp
===================================================================
RCS file: /cvs/ports/cad/solvespace/patches/patch-src_platform_guigtk_cpp,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-src_platform_guigtk_cpp
--- patches/patch-src_platform_guigtk_cpp 3 Jul 2023 13:43:48 -0000
1.1.1.1
+++ patches/patch-src_platform_guigtk_cpp 22 May 2026 08:53:54 -0000
@@ -3,7 +3,7 @@ don't exit the program for Glib charset
Index: src/platform/guigtk.cpp
--- src/platform/guigtk.cpp.orig
+++ src/platform/guigtk.cpp
-@@ -1505,10 +1505,7 @@ std::vector<std::string> InitGui(int argc, char **argv
+@@ -1626,10 +1626,7 @@ std::vector<std::string> InitGui(int argc, char **argv
// character set; otherwise it thinks it is always ANSI_X3.4-1968.
// We set it back to C after all so that printf() and friends behave in a
consistent way.
setlocale(LC_ALL, "");
@@ -13,5 +13,5 @@ Index: src/platform/guigtk.cpp
- }
+ Glib::get_charset();
setlocale(LC_ALL, "C");
-
+
// Let GTK parse arguments and update argc/argv. (They're passed by
reference.)
Index: patches/patch-src_resource_cpp
===================================================================
RCS file: patches/patch-src_resource_cpp
diff -N patches/patch-src_resource_cpp
--- patches/patch-src_resource_cpp 3 Jul 2023 13:43:48 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,34 +0,0 @@
-avoid console spamming
-
-Index: src/resource.cpp
---- src/resource.cpp.orig
-+++ src/resource.cpp
-@@ -1456,12 +1456,10 @@ Translation Translation::From(const std::string &poDat
- const std::string &Translation::Translate(const TranslationKey &key) {
- auto it = messages.find(key);
- if(it == messages.end()) {
-- dbp("Missing (absent) translation for %s'%s'", key.context.c_str(),
key.ident.c_str());
- messages[key].emplace_back(key.ident);
- it = messages.find(key);
- }
- if(it->second[0].empty()) {
-- dbp("Missing (empty) translation for %s'%s'", key.context.c_str(),
key.ident.c_str());
- it->second[0] = key.ident;
- }
- if(it->second.size() != 1) {
-@@ -1476,15 +1474,12 @@ const std::string &Translation::TranslatePlural(const
-
- auto it = messages.find(key);
- if(it == messages.end()) {
-- dbp("Missing (absent) translation for %s'%s'", key.context.c_str(),
key.ident.c_str());
- for(unsigned i = 0; i < pluralCount; i++) {
- messages[key].emplace_back(key.ident);
- }
- it = messages.find(key);
- }
- if(it->second[pluralForm].empty()) {
-- dbp("Missing (empty) translation for %s'%s'[%d]",
-- key.context.c_str(), key.ident.c_str(), pluralForm);
- it->second[pluralForm] = key.ident;
- }
- return it->second[pluralForm];
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/cad/solvespace/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 PLIST
--- pkg/PLIST 3 Jul 2023 13:43:48 -0000 1.1.1.1
+++ pkg/PLIST 22 May 2026 08:53:54 -0000
@@ -70,6 +70,8 @@ share/solvespace/icons/graphics-window/t
share/solvespace/icons/graphics-window/trim.png
share/solvespace/icons/graphics-window/vert.png
share/solvespace/icons/text-window/
+share/solvespace/icons/text-window/constraint-dimo.png
+share/solvespace/icons/text-window/constraint-wo.png
share/solvespace/icons/text-window/constraint.png
share/solvespace/icons/text-window/construction.png
share/solvespace/icons/text-window/edges.png
@@ -85,10 +87,12 @@ share/solvespace/icons/text-window/shade
share/solvespace/icons/text-window/workplane.png
share/solvespace/locales/
share/solvespace/locales.txt
+share/solvespace/locales/cs_CZ.po
share/solvespace/locales/de_DE.po
share/solvespace/locales/en_US.po
share/solvespace/locales/es_AR.po
share/solvespace/locales/fr_FR.po
+share/solvespace/locales/ja_JP.po
share/solvespace/locales/ru_RU.po
share/solvespace/locales/tr_TR.po
share/solvespace/locales/uk_UA.po
@@ -115,3 +119,4 @@ share/solvespace/threejs/three-r111.min.
@tag update-desktop-database
@tag gtk-update-icon-cache %D/share/icons/hicolor
@tag update-mime-database
+share/thumbnailers/solvespace.thumbnailer