On Sun, Aug 02 2026, Johannes Thyssen Tishman wrote:
> 2026-07-26T16:08:35-0700 Renato Aguiar <[email protected]>:
>> Diff updating cad/prusaslicer to 2.9.6.
>
> Hi Renato. Thanks for the update.
>
> I built this without issues and all tests are passing, but I have a few
> comments:
>
> - The 'Program Name' section in the pkg/README seems unnecessary to me,
> and I would personally leave it out.
Keeping it as suggested by Ian.
>
> - I noticed that the build uses the bundled IGL library, because it fails
> to find one in the system. This is fine, but I would explicitly
> disable looking for it during configure time to avoid picking it up in
> case it is ported (potentially causing a build failure):
>
> -DCMAKE_DISABLE_FIND_PACKAGE_libigl=ON
Done.
>
> - I removed the .{cache,local/share}/prusa-slicer and
> .config/PrusaSlicer directories to test runtime as if had just
> installed prusaslicer and after finishing the setup wizard I got the
> following error:
>
> > PrusaSlicer has encountered an error. It was likely caused by running
> > out of memory. If you are sure you have enough RAM on your system,
> > this may also be a bug and we would be glad if you reported it.
>
> > The application will now terminate.
>
> > std::bad_alloc
>
> My system should have enough RAM, 64Gb, and my user has the staff
> login class. I tried getting a backtrace from the core file (after
> installing debug-prusaslicer), but egdb crashes too with 'Recursive
> internal problem. Abort trap (core dumped)'. Oh well...
>
> After restarting prusaslicer, I don't get the setup
> wizard anymore and it seems to work (tested importing a model and
> slicing it).
>
Thanks for reporting that. It seems to be an issue even before this
update. I added a section to the README about bumping datasize memory
limits.
Updated diff:
diff --git a/cad/prusaslicer/Makefile b/cad/prusaslicer/Makefile
index bf393651319..a04f689a693 100644
--- a/cad/prusaslicer/Makefile
+++ b/cad/prusaslicer/Makefile
@@ -2,8 +2,7 @@ COMMENT = g-code generator for 3D printers
ONLY_FOR_ARCHS = ${LP64_ARCHS}
DPB_PROPERTIES = parallel
-V = 2.9.4
-REVISION = 3
+V = 2.9.6
PKGNAME = prusaslicer-${V}
GH_ACCOUNT = prusa3d
@@ -74,6 +73,7 @@ LIB_DEPENDS = cad/opencascade \
x11/wxWidgets,-webview
CONFIGURE_ARGS += -DCMAKE_MODULE_PATH=${PREFIX}/lib/cmake/OpenVDB \
+ -DCMAKE_DISABLE_FIND_PACKAGE_libigl=ON \
-DSLIC3R_FHS=1 \
-DSLIC3R_GTK=3 \
-DSLIC3R_PCH=OFF
diff --git a/cad/prusaslicer/distinfo b/cad/prusaslicer/distinfo
index 819d0d35454..f29c0fbf660 100644
--- a/cad/prusaslicer/distinfo
+++ b/cad/prusaslicer/distinfo
@@ -1,2 +1,2 @@
-SHA256 (PrusaSlicer-version_2.9.4.tar.gz) =
Ty2NMFYQR6gvY+wj61MPmWsI1ZnA2ey66660SqShyEk=
-SIZE (PrusaSlicer-version_2.9.4.tar.gz) = 79411287
+SHA256 (PrusaSlicer-version_2.9.6.tar.gz) =
j59A2Tg4uRK9ntNeWYwLfqvQgCTLGKpiDGqp+dSdC1c=
+SIZE (PrusaSlicer-version_2.9.6.tar.gz) = 82103739
diff --git a/cad/prusaslicer/patches/patch-src_slic3r_Utils_FontConfigHelp_hpp
b/cad/prusaslicer/patches/patch-src_slic3r_Utils_FontConfigHelp_hpp
new file mode 100644
index 00000000000..80936b715c7
--- /dev/null
+++ b/cad/prusaslicer/patches/patch-src_slic3r_Utils_FontConfigHelp_hpp
@@ -0,0 +1,12 @@
+Index: src/slic3r/Utils/FontConfigHelp.hpp
+--- src/slic3r/Utils/FontConfigHelp.hpp.orig
++++ src/slic3r/Utils/FontConfigHelp.hpp
+@@ -6,7 +6,7 @@
+ #define slic3r_FontConfigHelp_hpp_
+
+ #include <string>
+-#ifdef __linux__
++#if defined(__linux__) || defined(__OpenBSD__)
+ #define EXIST_FONT_CONFIG_INCLUDE
+ #endif
+
diff --git a/cad/prusaslicer/patches/patch-src_slic3r_Utils_WxFontUtils_cpp
b/cad/prusaslicer/patches/patch-src_slic3r_Utils_WxFontUtils_cpp
new file mode 100644
index 00000000000..da4ddd81f78
--- /dev/null
+++ b/cad/prusaslicer/patches/patch-src_slic3r_Utils_WxFontUtils_cpp
@@ -0,0 +1,39 @@
+Index: src/slic3r/Utils/WxFontUtils.cpp
+--- src/slic3r/Utils/WxFontUtils.cpp.orig
++++ src/slic3r/Utils/WxFontUtils.cpp
+@@ -19,7 +19,7 @@
+ #include <wx/uri.h>
+ #include <wx/fontutil.h> // wxNativeFontInfo
+ #include <wx/osx/core/cfdictionary.h>
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__OpenBSD__)
+ #include "slic3r/Utils/FontConfigHelp.hpp"
+ #endif
+
+@@ -83,7 +83,7 @@ bool WxFontUtils::can_load(const wxFont &font)
+ #elif defined(__APPLE__)
+ return true;
+ //return is_valid_ttf(get_file_path(font));
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__OpenBSD__)
+ return true;
+ // font config check file path take about 4000ms for chech them all
+ //std::string font_path = Slic3r::GUI::get_font_path(font);
+@@ -104,7 +104,7 @@ std::unique_ptr<Emboss::FontFile> WxFontUtils::create_
+ return nullptr;
+ }
+ return Emboss::create_font_file(file_path.c_str());
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__OpenBSD__)
+ std::string font_path = Slic3r::GUI::get_font_path(font);
+ if (font_path.empty()){
+ BOOST_LOG_TRIVIAL(error) << "Can not read font('" <<
get_human_readable_name(font) << "'), "
+@@ -125,7 +125,7 @@ EmbossStyle::Type WxFontUtils::get_current_type()
+ return EmbossStyle::Type::wx_win_font_descr;
+ #elif defined(__APPLE__)
+ return EmbossStyle::Type::wx_mac_font_descr;
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__OpenBSD__)
+ return EmbossStyle::Type::wx_lin_font_descr;
+ #else
+ return EmbossStyle::Type::undefined;
diff --git a/cad/prusaslicer/pkg/PLIST b/cad/prusaslicer/pkg/PLIST
index e0caac6b081..a67a679b810 100644
--- a/cad/prusaslicer/pkg/PLIST
+++ b/cad/prusaslicer/pkg/PLIST
@@ -9,6 +9,7 @@ share/PrusaSlicer/data/printer_gantries/
share/PrusaSlicer/data/printer_gantries/geometries.json
share/PrusaSlicer/data/printer_gantries/prusa3d_coreoneL_gantry.stl
share/PrusaSlicer/data/printer_gantries/prusa3d_coreone_gantry.stl
+share/PrusaSlicer/data/printer_gantries/prusa3d_coreone_indx_gantry.stl
share/PrusaSlicer/data/printer_gantries/prusa3d_ht90_actuator.stl
share/PrusaSlicer/data/printer_gantries/prusa3d_mini_gantry.stl
share/PrusaSlicer/data/printer_gantries/prusa3d_mk3s_gantry.stl
@@ -254,6 +255,7 @@ share/PrusaSlicer/icons/printer_placeholder.png
share/PrusaSlicer/icons/printer_white.svg
share/PrusaSlicer/icons/question.svg
share/PrusaSlicer/icons/re_slice.svg
+share/PrusaSlicer/icons/recipe_add.svg
share/PrusaSlicer/icons/redo.svg
share/PrusaSlicer/icons/redo_menu.svg
share/PrusaSlicer/icons/redo_toolbar.svg
@@ -329,6 +331,7 @@ share/PrusaSlicer/icons/toggle_on.svg
share/PrusaSlicer/icons/toolbar_arrow.svg
share/PrusaSlicer/icons/toolbar_arrow_2.svg
share/PrusaSlicer/icons/toolbar_background.png
+share/PrusaSlicer/icons/trash.svg
share/PrusaSlicer/icons/undo.svg
share/PrusaSlicer/icons/undo_f.svg
share/PrusaSlicer/icons/undo_menu.svg
@@ -787,8 +790,12 @@ share/PrusaSlicer/profiles/Print4Taste/MC2.0_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/
share/PrusaSlicer/profiles/PrusaResearch.idx
share/PrusaSlicer/profiles/PrusaResearch.ini
+share/PrusaSlicer/profiles/PrusaResearch/C1INDX_4T_thumbnail.png
+share/PrusaSlicer/profiles/PrusaResearch/C1INDX_8T_thumbnail.png
+share/PrusaSlicer/profiles/PrusaResearch/COREONELMMU3_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/COREONEL_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/COREONEMMU3_thumbnail.png
+share/PrusaSlicer/profiles/PrusaResearch/COREONEOAK_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/COREONE_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/MINIIS_ALPHA_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/MINIIS_BETA_thumbnail.png
@@ -831,8 +838,11 @@ share/PrusaSlicer/profiles/PrusaResearch/XLIS_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/XL_thumbnail.png
share/PrusaSlicer/profiles/PrusaResearch/coreone.svg
share/PrusaSlicer/profiles/PrusaResearch/coreone_bed.stl
+share/PrusaSlicer/profiles/PrusaResearch/coreone_indx.stl
+share/PrusaSlicer/profiles/PrusaResearch/coreone_indx.svg
share/PrusaSlicer/profiles/PrusaResearch/coreonel.svg
share/PrusaSlicer/profiles/PrusaResearch/coreonel_bed.stl
+share/PrusaSlicer/profiles/PrusaResearch/coreoneoak.svg
share/PrusaSlicer/profiles/PrusaResearch/mini.svg
share/PrusaSlicer/profiles/PrusaResearch/miniIS.svg
share/PrusaSlicer/profiles/PrusaResearch/miniISbeta.svg
@@ -1034,6 +1044,11 @@
share/PrusaSlicer/profiles/Voron/Voron_v2_300_afterburner_thumbnail.png
share/PrusaSlicer/profiles/Voron/Voron_v2_300_thumbnail.png
share/PrusaSlicer/profiles/Voron/Voron_v2_350_afterburner_thumbnail.png
share/PrusaSlicer/profiles/Voron/Voron_v2_350_thumbnail.png
+share/PrusaSlicer/profiles/Voron/bedmodel_120x120.stl
+share/PrusaSlicer/profiles/Voron/bedmodel_250x250.stl
+share/PrusaSlicer/profiles/Voron/bedmodel_252x241.stl
+share/PrusaSlicer/profiles/Voron/bedmodel_300x300.stl
+share/PrusaSlicer/profiles/Voron/bedmodel_350x350.stl
share/PrusaSlicer/profiles/Voron/bedtexture-SW-250x210.png
share/PrusaSlicer/profiles/Voron/bedtexture-v0-120.png
share/PrusaSlicer/profiles/Voron/bedtexture-v1-250.png
@@ -1041,6 +1056,11 @@ share/PrusaSlicer/profiles/Voron/bedtexture-v1-300.png
share/PrusaSlicer/profiles/Voron/bedtexture-v2-250.png
share/PrusaSlicer/profiles/Voron/bedtexture-v2-300.png
share/PrusaSlicer/profiles/Voron/bedtexture-v2-350.png
+share/PrusaSlicer/profiles/Voron/bedtexture_120x120-dark.png
+share/PrusaSlicer/profiles/Voron/bedtexture_250x250-dark.png
+share/PrusaSlicer/profiles/Voron/bedtexture_252x241-dark.png
+share/PrusaSlicer/profiles/Voron/bedtexture_300x300-dark.png
+share/PrusaSlicer/profiles/Voron/bedtexture_350x350-dark.png
share/PrusaSlicer/profiles/Voron/printbed-SW-MK52.stl
share/PrusaSlicer/profiles/Voron/printbed-v0-120.stl
share/PrusaSlicer/profiles/Voron/printbed-v1-250.stl
@@ -1049,6 +1069,14 @@ share/PrusaSlicer/profiles/Voron/printbed-v1-350.stl
share/PrusaSlicer/profiles/Voron/printbed-v2-250.stl
share/PrusaSlicer/profiles/Voron/printbed-v2-300.stl
share/PrusaSlicer/profiles/Voron/printbed-v2-350.stl
+share/PrusaSlicer/profiles/Voron/thumbnail_v0.png
+share/PrusaSlicer/profiles/Voron/thumbnail_v0_miniab.png
+share/PrusaSlicer/profiles/Voron/thumbnail_v2.png
+share/PrusaSlicer/profiles/Voron/thumbnail_v2_afterburner.png
+share/PrusaSlicer/profiles/Voron/thumbnail_vs.png
+share/PrusaSlicer/profiles/Voron/thumbnail_vs_afterburner.png
+share/PrusaSlicer/profiles/Voron/thumbnail_vt.png
+share/PrusaSlicer/profiles/Voron/thumbnail_vt_afterburner.png
share/PrusaSlicer/profiles/Zonestar/
share/PrusaSlicer/profiles/Zonestar.idx
share/PrusaSlicer/profiles/Zonestar.ini
@@ -1217,8 +1245,11 @@ share/PrusaSlicer/web/connect_loading.html
share/PrusaSlicer/web/error_no_reload.html
share/PrusaSlicer/web/other_error.html
share/PrusaSlicer/web/other_loading.html
+share/PrusaSlicer/workflows/
+share/PrusaSlicer/workflows/workflows.json
share/applications/PrusaGcodeviewer.desktop
share/applications/PrusaSlicer.desktop
+share/doc/pkg-readmes/${PKGSTEM}
share/icons/hicolor/128x128/apps/PrusaSlicer-gcodeviewer.png
share/icons/hicolor/128x128/apps/PrusaSlicer.png
share/icons/hicolor/192x192/apps/PrusaSlicer-gcodeviewer.png
diff --git a/cad/prusaslicer/pkg/README b/cad/prusaslicer/pkg/README
new file mode 100644
index 00000000000..44cbe63d8fd
--- /dev/null
+++ b/cad/prusaslicer/pkg/README
@@ -0,0 +1,31 @@
++-------------------------------------------------------------------------------
+| Running ${PKGSTEM} on OpenBSD
++-------------------------------------------------------------------------------
+
+Program Name
+============
+
+The program's name is PrusaSlicer, but for historical reasons the binary is
+named prusa-slicer. The desktop file appears under Graphics because cad is not
+an available option on some window managers.
+
+Memory limits
+=============
+
+The initial setup wizard is known to use more memory than the limits set by the
+user's default login class, causing PrusaSlicer to crash with a
'std::bad_alloc'
+error. To avoid this, increase datasize memory limits in
+${SYSCONFDIR}/login.conf or make sure your user is in the 'staff' class, and
+bump the limits with 'ulimit'. Setting the datasize to 2048M (ulimit -d
2097152)
+should be enough when using default options with all standard printers, but you
+may need to bump it up even further depending your configuration.
+
+Font issues - Fixed in 2.9.6
+============================
+
+Before version 2.9.6, the mechanism for adding text to an object didn't work,
+e.g. the "Add Object->Text" or "Add Negative Space->Text" context-menu items.
+This release contains a fix for font selection. If you are upgrading from an
+older version and fonts are not loading properly, e.g., the Add...Text item
+pop-up neither shows, nor lets you choose, a font name, try deleting
+"~/.config/PrusaSlicer/cache/fonts.cereal" and restarting PrusaSlicer.