commit:     fc430dd5f1c6d6d91f8527413a00f82b2c514cc7
Author:     Robert Siebeck <gentoo.2019 <AT> r123 <DOT> de>
AuthorDate: Wed Mar 11 19:06:52 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Mar 14 19:00:06 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fc430dd5

media-gfx/superslicer: add 2.7.61.10

Closes: https://bugs.gentoo.org/940498
Signed-off-by: Robert Siebeck <gentoo.2019 <AT> r123.de>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/300
Merges: https://codeberg.org/gentoo/gentoo/pulls/300
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-gfx/superslicer/Manifest                     |   2 +
 ...icer-2.7.61.10-fix-bonjour-deadline-timer.patch |  11 ++
 .../files/superslicer-2.7.61.10-fix-boost.patch    | 118 +++++++++++++++++++++
 .../superslicer-2.7.61.10-fix-cutsurface.patch     |  83 +++++++++++++++
 .../files/superslicer-2.7.61.10-fix-libexpat.patch |  13 +++
 .../superslicer-2.7.61.10-fix-seam-placer.patch    |   9 ++
 media-gfx/superslicer/superslicer-2.7.61.10.ebuild |  96 +++++++++++++++++
 7 files changed, 332 insertions(+)

diff --git a/media-gfx/superslicer/Manifest b/media-gfx/superslicer/Manifest
index 6e67eb151ca2..9c08a92260a9 100644
--- a/media-gfx/superslicer/Manifest
+++ b/media-gfx/superslicer/Manifest
@@ -1,2 +1,4 @@
 DIST superslicer-2.5.59.10-profiles.tar.gz 17933533 BLAKE2B 
d11e8660a9c04221ece8352695a78b302d0d934fca4cc26c17b44ba74d99271aa2f0088de4f36f718827f22073f5bdd90d1163c44d0fe0139b73e55929019ec8
 SHA512 
43dfe882fb52840abdcbc6c3c4441f7a02b2f21bfa986594e2c6399823508433a29d7372cdf28dab442ae831c0b89d1792e349944e797c899aaffeaf6b738ad6
 DIST superslicer-2.5.59.10.tar.gz 46034708 BLAKE2B 
7d30b7e365d336725606f298b0b8ecbf56170e822c8d00a323d45bdf93ae399fb0a312e542ebde51642b7404820604338bd3606add60aad5c3e492e73ef5a28f
 SHA512 
44f46a739f8e1769dd1883dd8ff88c6b3f0efbea2abcf9281cca22e48693ca8643a911c24325f0b8df7c66e3d32ad2e51854f09a67a4f2738ce0673c19485f1b
+DIST superslicer-2.7.61.10-profiles.tar.gz 24683364 BLAKE2B 
e10da181122885f8a09270d54382f130622e7bdcc1576846089a86587ddaf75447b0ba22d8539c2dbab57dbbbd214da158108c0f76733e5047e01f3d986c533d
 SHA512 
88d04ba9825b70fa93525916292f7fda3744ad90431e533b5a5b06a167ae7922d4b148a18ec698c96d131f9b685978e82c97d24d4e1208eaed59164658822104
+DIST superslicer-2.7.61.10.tar.gz 50223296 BLAKE2B 
50e12113c978309cbda17b582d14181b1eec5a5f5743f2d99b548d85ae1eea36a61ba59c53a40199fde340bbee2089cd0bf797bb6aa2c38fbaa3f1297cc9f117
 SHA512 
f7a74145b2ca254b84db968b5e7984af36f2874a9188e05de7d638558e1ce305fddd3604a1b3a93942b6942dcfe8321b4d5ba1d387b8b9f769e724eaaf501259

diff --git 
a/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-bonjour-deadline-timer.patch
 
b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-bonjour-deadline-timer.patch
new file mode 100644
index 000000000000..3b6965d6526a
--- /dev/null
+++ 
b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-bonjour-deadline-timer.patch
@@ -0,0 +1,11 @@
+diff --git a/src/slic3r/Utils/Bonjour.hpp b/src/slic3r/Utils/Bonjour.hpp
+--- a/src/slic3r/Utils/Bonjour.hpp
++++ b/src/slic3r/Utils/Bonjour.hpp
+@@ -16,6 +16,7 @@
+ #include <boost/asio.hpp>
+ #include <boost/asio/ip/address.hpp>
+ #include <boost/system/error_code.hpp>
++#include <boost/asio/deadline_timer.hpp>
+ #include <boost/shared_ptr.hpp>
+
+ namespace Slic3r {

diff --git a/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-boost.patch 
b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-boost.patch
new file mode 100644
index 000000000000..4119a51a84eb
--- /dev/null
+++ b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-boost.patch
@@ -0,0 +1,118 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -384,7 +384,7 @@
+ # boost::process was introduced first in version 1.64.0,
+ # boost::beast::detail::base64 was introduced first in version 1.66.0
+ set(MINIMUM_BOOST_VERSION "1.66.0")
+-set(_boost_components 
"system;filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams")
++set(_boost_components 
"filesystem;thread;log;locale;regex;chrono;atomic;date_time;iostreams;process")
+ find_package(Boost ${MINIMUM_BOOST_VERSION} REQUIRED COMPONENTS 
${_boost_components})
+ # boost compile only in release & debug. We have to force the release version 
for RELWITHDEBINFO compilation
+ if (MSVC)
+diff --git a/src/libslic3r/GCode/PostProcessor.cpp 
b/src/libslic3r/GCode/PostProcessor.cpp
+--- a/src/libslic3r/GCode/PostProcessor.cpp
++++ b/src/libslic3r/GCode/PostProcessor.cpp
+@@ -29,6 +29,8 @@
+ // POSIX
+ #include <sstream>
+ #include <boost/process.hpp>
++#include <boost/process/v1/child.hpp>
++#include <boost/process/v1/io.hpp>
+ #include <unistd.h>     //readlink
+ #endif
+
+@@ -228,8 +230,8 @@
+     command_line.push_back('\'');
+
+     BOOST_LOG_TRIVIAL(trace) << boost::format("Executing script, shell: %1%, 
command: %2%") % shell % command_line;
+-    process::ipstream istd_err;
+-    process::child child(shell, "-c", command_line, process::std_err > 
istd_err);
++    boost::process::v1::ipstream istd_err;
++    boost::process::v1::child child(shell, "-c", command_line, 
boost::process::v1::std_err > istd_err);
+
+     std_err.clear();
+     std::string line;
+diff --git a/src/slic3r/GUI/FreeCADDialog.cpp 
b/src/slic3r/GUI/FreeCADDialog.cpp
+--- a/src/slic3r/GUI/FreeCADDialog.cpp
++++ b/src/slic3r/GUI/FreeCADDialog.cpp
+@@ -45,6 +45,11 @@
+ // note: don't put it in a header, as it can create problems. Here it's safe 
enough to be used, as it's just applied for the process.hpp file and this 
source code.
+ #define pid_t pid_t
+ #include <boost/process.hpp>
++#include <boost/process/v1/child.hpp>
++#include <boost/process/v1/io.hpp>
++#include <boost/process/v1/pipe.hpp>
++#include <boost/process/v1/async.hpp>
++
+
+ #include <cstdlib>   // getenv()
+
+@@ -63,11 +68,12 @@
+     //now that we have process.hpp, we can define the ExecVar
+     class ExecVar {
+     public:
+-        boost::process::opstream pyin;
++        boost::process::v1::opstream pyin;
++#include <boost/process/v1/io.hpp>
+         boost::asio::io_context ios;
+         std::future<std::string> data_out;
+         std::future<std::string> data_err;
+-        std::unique_ptr<boost::process::child> process;
++        std::unique_ptr<boost::process::v1::child> process;
+ };
+
+     //TODO: auto tab
+@@ -843,8 +849,8 @@
+         
get_string_from_web_async("https://api.github.com/repos/supermerill/FreePySCAD/commits/master";,
 this, &FreeCADDialog::test_update_script_file);
+     }
+
+-    exec_var->process.reset(new boost::process::child(pythonpath.string() + " 
-u -i", boost::process::std_in < exec_var->pyin,
+-        boost::process::std_out > exec_var->data_out, boost::process::std_err 
> exec_var->data_err, exec_var->ios));
++    exec_var->process.reset(new boost::process::v1::child(pythonpath.string() 
+ " -u -i", boost::process::v1::std_in < exec_var->pyin,
++        boost::process::v1::std_out > exec_var->data_out, 
boost::process::v1::std_err > exec_var->data_err, exec_var->ios));
+     exec_var->pyin << "import sys" << std::endl;
+     // add freecad lib path if not already done
+     exec_var->pyin << "sys.path.append('" << (freecadpath / "lib").string() 
<< "')" << std::endl;
+diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp 
b/src/slic3r/GUI/RemovableDriveManager.cpp
+--- a/src/slic3r/GUI/RemovableDriveManager.cpp
++++ b/src/slic3r/GUI/RemovableDriveManager.cpp
+@@ -36,6 +36,9 @@
+ #include <boost/filesystem.hpp>
+ #include <boost/system/error_code.hpp>
+ #include <boost/process.hpp>
++#include <boost/process/v1/child.hpp>
++#include <boost/process/v1/io.hpp>
++#include <boost/process/v1/search_path.hpp>
+ #endif
+
+ namespace Slic3r {
+@@ -859,15 +862,15 @@
+               // but neither triggers "succesful safe removal messege"
+               
+               BOOST_LOG_TRIVIAL(info) << "Ejecting started";
+-              boost::process::ipstream istd_err;
+-      boost::process::child child(
++              boost::process::v1::ipstream istd_err;
++      boost::process::v1::child child(
+ #if __APPLE__         
+-                      boost::process::search_path("diskutil"), "eject", 
correct_path.c_str(), (boost::process::std_out & boost::process::std_err) > 
istd_err);
++                      boost::process::v1::search_path("diskutil"), "eject", 
correct_path.c_str(), (boost::process::v1::std_out & 
boost::process::v1::std_err) > istd_err);
+               //Another option how to eject at mac. Currently not working.
+               //used insted of system() command;
+               //this->eject_device(correct_path);
+ #else
+-              boost::process::search_path("umount"), correct_path.c_str(), 
(boost::process::std_out & boost::process::std_err) > istd_err);
++              boost::process::v1::search_path("umount"), 
correct_path.c_str(), (boost::process::v1::std_out & 
boost::process::v1::std_err) > istd_err);
+ #endif
+               std::string line;
+               while (child.running() && std::getline(istd_err, line)) {
+@@ -881,7 +884,7 @@
+             // The wait call can fail, as it did in 
https://github.com/prusa3d/PrusaSlicer/issues/5507
+             // It can happen even in cases where the eject is sucessful, but 
better report it as failed.
+             // We did not find a way to reliably retrieve the exit code of 
the process.
+-                      BOOST_LOG_TRIVIAL(error) << 
"boost::process::child::wait() failed during Ejection. State of Ejection is 
unknown. Error code: " << ec.value();
++                      BOOST_LOG_TRIVIAL(error) << 
"boost::process::v1::child::wait() failed during Ejection. State of Ejection is 
unknown. Error code: " << ec.value();
+               } else {
+                       int err = child.exit_code();
+               if (err) {

diff --git 
a/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-cutsurface.patch 
b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-cutsurface.patch
new file mode 100644
index 000000000000..5cb7d10c55e8
--- /dev/null
+++ b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-cutsurface.patch
@@ -0,0 +1,83 @@
+diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp
+index c229ff246b..89d3955b29 100644
+--- a/src/libslic3r/CutSurface.cpp
++++ b/src/libslic3r/CutSurface.cpp
+@@ -3,6 +3,7 @@
+ ///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
+ ///|/
+ #include "CutSurface.hpp"
++#include <CGAL/AABB_traits.h>
+ 
+ /// models_input.obj - Check transormation of model to each others
+ /// projection_center.obj - circle representing center of projection with 
correct distance
+@@ -1429,8 +1430,8 @@ priv::CutAOIs priv::cut_from_model(CutMesh               
 &cgal_model,
+     // detect anomalities in visitor.
+     bool is_valid = true;
+     // NOTE: map are created when convert shapes to cgal model
+-    const EdgeShapeMap& edge_shape_map = cgal_shape.property_map<EI, 
IntersectingElement>(edge_shape_map_name).first;
+-    const FaceShapeMap& face_shape_map = cgal_shape.property_map<FI, 
IntersectingElement>(face_shape_map_name).first;
++    const EdgeShapeMap& edge_shape_map = cgal_shape.property_map<EI, 
IntersectingElement>(edge_shape_map_name).value();
++    const FaceShapeMap& face_shape_map = cgal_shape.property_map<FI, 
IntersectingElement>(face_shape_map_name).value();
+     Visitor visitor{cgal_model, cgal_shape, edge_shape_map, face_shape_map, 
vert_shape_map, &is_valid};
+ 
+     // a property map containing the constrained-or-not status of each edge
+@@ -1579,8 +1580,8 @@ void priv::collect_surface_data(std::queue<FI>  &process,
+ 
+ void priv::create_reduce_map(ReductionMap &reduction_map, const CutMesh &mesh)
+ {
+-    const VertexShapeMap &vert_shape_map = mesh.property_map<VI, const 
IntersectingElement*>(vert_shape_map_name).first;
+-    const EdgeBoolMap &ecm = mesh.property_map<EI, 
bool>(is_constrained_edge_name).first;
++    const VertexShapeMap &vert_shape_map = mesh.property_map<VI, const 
IntersectingElement*>(vert_shape_map_name).value();
++    const EdgeBoolMap &ecm = mesh.property_map<EI, 
bool>(is_constrained_edge_name).value();
+ 
+     // check if vertex was made by edge_2 which is diagonal of quad
+     auto is_reducible_vertex = [&vert_shape_map](VI reduction_from) -> bool {
+@@ -1765,10 +1766,10 @@ priv::VDistances priv::calc_distances(const 
SurfacePatches &patches,
+     for (const SurfacePatch &patch : patches) {
+         // map is created during intersection by corefine visitor
+         const VertexShapeMap &vert_shape_map = 
+-            models[patch.model_id].property_map<VI, const IntersectingElement 
*>(vert_shape_map_name).first;
++            models[patch.model_id].property_map<VI, const IntersectingElement 
*>(vert_shape_map_name).value();
+         uint32_t patch_index = &patch - &patches.front();
+         // map is created during patch creation / dividing
+-        const CvtVI2VI& cvt = patch.mesh.property_map<VI, 
VI>(patch_source_name).first;
++        const CvtVI2VI& cvt = patch.mesh.property_map<VI, 
VI>(patch_source_name).value();
+         // for each point on outline
+         for (const Loop &loop : patch.loops) 
+         for (const VI &vi_patch : loop) {
+@@ -2929,7 +2930,7 @@ bool priv::is_patch_inside_of_model(const SurfacePatch 
&patch,
+ uint32_t priv::get_shape_point_index(const CutAOI &cut, const CutMesh &model)
+ {
+     // map is created during intersection by corefine visitor
+-    const VertexShapeMap &vert_shape_map = model.property_map<VI, const 
IntersectingElement *>(vert_shape_map_name).first;
++    const VertexShapeMap &vert_shape_map = model.property_map<VI, const 
IntersectingElement *>(vert_shape_map_name).value();
+     // for each half edge of outline
+     for (HI hi : cut.second) {
+         VI vi = model.source(hi);
+@@ -2954,7 +2955,7 @@ priv::SurfacePatch priv::separate_patch(const 
std::vector<FI>& fis,
+     patch_new.model_id     = patch.model_id;
+     patch_new.shape_id     = patch.shape_id;
+     // fix cvt
+-    CvtVI2VI cvt = patch_new.mesh.property_map<VI, 
VI>(patch_source_name).first;
++    CvtVI2VI cvt = patch_new.mesh.property_map<VI, 
VI>(patch_source_name).value();
+     for (VI &vi : cvt) {
+         if (!vi.is_valid()) continue;
+         vi = cvt_from[vi];
+@@ -2974,7 +2975,7 @@ void priv::divide_patch(size_t i, SurfacePatchesEx 
&patches)
+     std::string patch_number_name = "f:patch_number";
+     CutMesh::Property_map<FI,bool> is_processed = 
access_pmap(cm.add_property_map<FI, bool>(patch_number_name, false));
+     
+-    const CvtVI2VI& cvt_from = patch.mesh.property_map<VI, 
VI>(patch_source_name).first;
++    const CvtVI2VI& cvt_from = patch.mesh.property_map<VI, 
VI>(patch_source_name).value();
+ 
+     std::vector<FI> fis;
+     fis.reserve(cm.faces().size());
+@@ -3161,7 +3162,7 @@ bool priv::is_over_whole_expoly(const CutAOI    &cutAOI,
+                                 const CutMesh   &mesh)
+ {
+     // NonInterupted contour is without other point and contain all from 
shape    
+-    const VertexShapeMap &vert_shape_map = mesh.property_map<VI, const 
IntersectingElement*>(vert_shape_map_name).first;
++    const VertexShapeMap &vert_shape_map = mesh.property_map<VI, const 
IntersectingElement*>(vert_shape_map_name).value();
+     for (HI hi : cutAOI.second) { 
+         const IntersectingElement *ie_s = vert_shape_map[mesh.source(hi)];
+         const IntersectingElement *ie_t = vert_shape_map[mesh.target(hi)];

diff --git 
a/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-libexpat.patch 
b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-libexpat.patch
new file mode 100644
index 000000000000..60b2c33bbbf5
--- /dev/null
+++ b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-libexpat.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 34fe44a2ef..01c874dcfd 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -485,7 +485,7 @@ include_directories(BEFORE SYSTEM ${EIGEN3_INCLUDE_DIR})
+ # no matter what.
+ find_package(EXPAT REQUIRED)
+ 
+-add_library(libexpat INTERFACE)
++#add_library(libexpat INTERFACE)
+ 
+ if (TARGET EXPAT::EXPAT )
+     target_link_libraries(libexpat INTERFACE EXPAT::EXPAT)

diff --git 
a/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-seam-placer.patch 
b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-seam-placer.patch
new file mode 100644
index 000000000000..3c5602fd672d
--- /dev/null
+++ b/media-gfx/superslicer/files/superslicer-2.7.61.10-fix-seam-placer.patch
@@ -0,0 +1,9 @@
+diff --git a/src/libslic3r/GCode/SeamPlacer.hpp 
b/src/libslic3r/GCode/SeamPlacer.hpp
+--- a/src/libslic3r/GCode/SeamPlacer.hpp
++++ b/src/libslic3r/GCode/SeamPlacer.hpp
+@@ -17,6 +17,7 @@
+ #include "libslic3r/BoundingBox.hpp"
+ #include "libslic3r/AABBTreeIndirect.hpp"
+ #include "libslic3r/KDTreeIndirect.hpp"
++#include "libslic3r/TriangleMesh.hpp"
+

diff --git a/media-gfx/superslicer/superslicer-2.7.61.10.ebuild 
b/media-gfx/superslicer/superslicer-2.7.61.10.ebuild
new file mode 100644
index 000000000000..0f5496cc1a02
--- /dev/null
+++ b/media-gfx/superslicer/superslicer-2.7.61.10.ebuild
@@ -0,0 +1,96 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+WX_GTK_VER="3.2-gtk3"
+MY_PN="SuperSlicer"
+SLICER_PROFILES_COMMIT="c3fc5fd5948c74c51dd6d49d1521b6059eb82f7d"
+
+inherit cmake wxwidgets xdg
+
+DESCRIPTION="A mesh slicer to generate G-code for fused-filament-fabrication 
(3D printers)"
+HOMEPAGE="https://github.com/supermerill/SuperSlicer/";
+SRC_URI="
+       
https://github.com/supermerill/SuperSlicer/archive/refs/tags/${PV}.tar.gz -> 
${P}.tar.gz
+       
https://github.com/slic3r/slic3r-profiles/archive/${SLICER_PROFILES_COMMIT}.tar.gz
 -> ${P}-profiles.tar.gz
+"
+
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+LICENSE="AGPL-3 Boost-1.0 GPL-2 LGPL-3 MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+RESTRICT="test"
+
+RDEPEND="
+       dev-cpp/eigen:3
+       dev-cpp/tbb:=
+       dev-libs/boost:=[nls]
+       dev-libs/cereal
+       dev-libs/expat
+       dev-libs/glib:2
+       dev-libs/gmp:=
+       dev-libs/mpfr:=
+       media-gfx/openvdb:=
+       media-gfx/libbgcode
+       media-libs/fontconfig
+       net-misc/curl[adns]
+       media-libs/glew:0=
+       media-libs/libjpeg-turbo:=
+       media-libs/libpng:0=
+       media-libs/nanosvg
+       sci-libs/libigl
+       sci-libs/nlopt
+       sci-libs/opencascade:=
+       sci-mathematics/cgal:=
+       sys-apps/dbus
+       virtual/opengl
+       x11-libs/gtk+:3
+       x11-libs/wxGTK:${WX_GTK_VER}=[X,opengl]
+"
+DEPEND="${RDEPEND}
+       media-libs/qhull[static-libs]
+"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-${PV}-fix-boost.patch"
+       "${FILESDIR}/${PN}-${PV}-fix-libexpat.patch"
+       "${FILESDIR}/${PN}-${PV}-fix-cutsurface.patch"
+       "${FILESDIR}/${PN}-${PV}-fix-seam-placer.patch"
+       "${FILESDIR}/${PN}-${PV}-fix-bonjour-deadline-timer.patch"
+)
+
+src_unpack() {
+       default
+
+       mv slic3r-profiles-*/* "${S}"/resources/profiles/ || die
+}
+
+src_configure() {
+       CMAKE_BUILD_TYPE="Release"
+
+       setup-wxwidgets
+
+       local mycmakeargs=(
+               -DOPENVDB_FIND_MODULE_PATH="/usr/$(get_libdir)/cmake/OpenVDB"
+
+               -DSLIC3R_BUILD_TESTS=$(usex test)
+               -DSLIC3R_FHS=ON
+               -DSLIC3R_GTK=3
+               -DSLIC3R_GUI=ON
+               -DSLIC3R_PCH=OFF
+               -DSLIC3R_STATIC=OFF
+               -DSLIC3R_WX_STABLE=ON
+               -Wno-dev
+       )
+
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+
+       rm "${ED}/usr/lib/udev/rules.d/90-3dconnexion.rules" || die
+}

Reply via email to