From cbf15b1100b08e909a2ab9fa15d0d0989f940256a0f191afe81d9b81824c7125 Mon Sep 17 00:00:00 2001 From: Benjamin Greiner Date: Wed, 26 Feb 2025 21:49:06 +0000 Subject: [PATCH] - Add prusaslicer-2.8.1-boost-1.87.0-asio.patch for new boost * gh#prusa3d/PrusaSlicer#13799 gentoo#946495 OBS-URL: https://build.opensuse.org/package/show/science/PrusaSlicer?expand=0&rev=99 --- .gitattributes | 23 + .gitignore | 1 + PrusaSlicer-2.6.0-octoprint-name-fix.patch | 13 + ...aSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch | 50 + PrusaSlicer-2.8.0-slic3r-includes.patch | 54 ++ ...Slicer-2.8.1-pr13761-fix-occtwrapper.patch | 121 +++ PrusaSlicer-2.9.0-pr13081-cgal6.0.patch | 370 +++++++ ...r-2.9.0-pr13885-printconfig-segfault.patch | 30 + PrusaSlicer-2.9.0-pr13896-static-libs.patch | 46 + PrusaSlicer-2.9.0-pr14010-fix-curl.patch | 40 + PrusaSlicer-version_2.7.4.tar.gz | 3 + PrusaSlicer-version_2.8.0.tar.gz | 3 + PrusaSlicer-version_2.9.0.tar.gz | 3 + PrusaSlicer.changes | 911 ++++++++++++++++++ PrusaSlicer.spec | 189 ++++ _constraints | 11 + prusaslicer-2.8.1-boost-1.87.0-asio.patch | 370 +++++++ up-occt-version.patch | 28 + 18 files changed, 2266 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 PrusaSlicer-2.6.0-octoprint-name-fix.patch create mode 100644 PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch create mode 100644 PrusaSlicer-2.8.0-slic3r-includes.patch create mode 100644 PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch create mode 100644 PrusaSlicer-2.9.0-pr13081-cgal6.0.patch create mode 100644 PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch create mode 100644 PrusaSlicer-2.9.0-pr13896-static-libs.patch create mode 100644 PrusaSlicer-2.9.0-pr14010-fix-curl.patch create mode 100644 PrusaSlicer-version_2.7.4.tar.gz create mode 100644 PrusaSlicer-version_2.8.0.tar.gz create mode 100644 PrusaSlicer-version_2.9.0.tar.gz create mode 100644 PrusaSlicer.changes create mode 100644 PrusaSlicer.spec create mode 100644 _constraints create mode 100644 prusaslicer-2.8.1-boost-1.87.0-asio.patch create mode 100644 up-occt-version.patch diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/PrusaSlicer-2.6.0-octoprint-name-fix.patch b/PrusaSlicer-2.6.0-octoprint-name-fix.patch new file mode 100644 index 0000000..09ebe2a --- /dev/null +++ b/PrusaSlicer-2.6.0-octoprint-name-fix.patch @@ -0,0 +1,13 @@ +Index: PrusaSlicer-version_2.6.1/src/slic3r/Utils/OctoPrint.cpp +=================================================================== +--- PrusaSlicer-version_2.6.1.orig/src/slic3r/Utils/OctoPrint.cpp ++++ PrusaSlicer-version_2.6.1/src/slic3r/Utils/OctoPrint.cpp +@@ -751,7 +751,7 @@ bool PrusaLink::get_storage(wxArrayStrin + if (path && (!available || *available)) { + StorageInfo si; + si.path = boost::nowide::widen(*path); +- si.name = name ? boost::nowide::widen(*name) : wxString(); ++ si.name = name ? wxString(boost::nowide::widen(*name)) : wxString(); + // If read_only is missing, assume it is NOT read only. + // si.read_only = read_only ? *read_only : false; // version without "ro" + si.read_only = (read_only ? *read_only : (ro ? *ro : false)); diff --git a/PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch b/PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch new file mode 100644 index 0000000..57fcd20 --- /dev/null +++ b/PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch @@ -0,0 +1,50 @@ +From f67a877d583eba5472003f0ea4df3f7420d70734 Mon Sep 17 00:00:00 2001 +From: Gregor Riepl +Date: Mon, 27 Nov 2023 13:01:55 +0100 +Subject: [PATCH] Make initializers explicit to avoid ambiguous wxArrayString + overloads + +--- + src/slic3r/GUI/PhysicalPrinterDialog.cpp | 2 +- + src/slic3r/GUI/Plater.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: PrusaSlicer-version_2.9.0/src/slic3r/GUI/PhysicalPrinterDialog.cpp +=================================================================== +--- PrusaSlicer-version_2.9.0.orig/src/slic3r/GUI/PhysicalPrinterDialog.cpp 2024-12-20 12:54:34.000000000 +0100 ++++ PrusaSlicer-version_2.9.0/src/slic3r/GUI/PhysicalPrinterDialog.cpp 2024-12-20 15:32:12.247773628 +0100 +@@ -607,7 +607,7 @@ void PhysicalPrinterDialog::build_printh + // Always fill in the "printhost_port" combo box from the config and select it. + { + Choice* choice = dynamic_cast(m_optgroup->get_field("printhost_port")); +- choice->set_values({ m_config->opt_string("printhost_port") }); ++ choice->set_values(std::vector({ m_config->opt_string("printhost_port") })); + choice->set_selection(); + } + +Index: PrusaSlicer-version_2.9.0/src/slic3r/GUI/Plater.cpp +=================================================================== +--- PrusaSlicer-version_2.9.0.orig/src/slic3r/GUI/Plater.cpp 2024-12-20 12:54:34.000000000 +0100 ++++ PrusaSlicer-version_2.9.0/src/slic3r/GUI/Plater.cpp 2024-12-20 15:32:12.251106999 +0100 +@@ -4420,7 +4420,7 @@ void Plater::load_project(const wxString + s_multiple_beds.set_loading_project_flag(true); + ScopeGuard guard([](){ s_multiple_beds.set_loading_project_flag(false);}); + +- if (! load_files({ into_path(filename) }).empty()) { ++ if (! load_files(std::vector({ into_path(filename) })).empty()) { + // At least one file was loaded. + p->set_project_filename(filename); + // Save the names of active presets and project specific config into ProjectDirtyStateManager. +Index: PrusaSlicer-version_2.9.0/src/slic3r/Utils/PrusaConnect.cpp +=================================================================== +--- PrusaSlicer-version_2.9.0.orig/src/slic3r/Utils/PrusaConnect.cpp 2024-12-20 12:54:34.000000000 +0100 ++++ PrusaSlicer-version_2.9.0/src/slic3r/Utils/PrusaConnect.cpp 2024-12-20 15:32:12.251106999 +0100 +@@ -256,7 +256,7 @@ bool PrusaConnectNew::get_storage(wxArra + if (path && (!available || *available)) { + StorageInfo si; + si.path = boost::nowide::widen(*path); +- si.name = name ? boost::nowide::widen(*name) : wxString(); ++ si.name = name ? boost::nowide::widen(*name) : std::wstring(); + // If read_only is missing, assume it is NOT read only. + // si.read_only = read_only ? *read_only : false; // version without "ro" + si.read_only = (read_only ? *read_only : (ro ? *ro : false)); diff --git a/PrusaSlicer-2.8.0-slic3r-includes.patch b/PrusaSlicer-2.8.0-slic3r-includes.patch new file mode 100644 index 0000000..a7a54a6 --- /dev/null +++ b/PrusaSlicer-2.8.0-slic3r-includes.patch @@ -0,0 +1,54 @@ +From ac3e07ee03b439932b9f7b00849ca202602f8901 Mon Sep 17 00:00:00 2001 +From: randomtechguy <50642148+Rose-David@users.noreply.github.com> +Date: Fri, 12 Jul 2024 17:24:16 -0400 +Subject: [PATCH 1/3] Update CMakeLists.txt to fix linux compile error + +--- + src/slic3r/CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: PrusaSlicer-version_2.8.0/src/slic3r/CMakeLists.txt +=================================================================== +--- PrusaSlicer-version_2.8.0.orig/src/slic3r/CMakeLists.txt ++++ PrusaSlicer-version_2.8.0/src/slic3r/CMakeLists.txt +@@ -376,6 +376,7 @@ set(SLIC3R_GUI_SOURCES + ) + + find_package(NanoSVG REQUIRED) ++find_package(OpenSSL REQUIRED) + + if (APPLE) + list(APPEND SLIC3R_GUI_SOURCES +@@ -404,7 +405,7 @@ endforeach() + + encoding_check(libslic3r_gui) + +-target_link_libraries(libslic3r_gui libslic3r avrdude libcereal imgui libvgcode GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES} NanoSVG::nanosvg NanoSVG::nanosvgrast) ++target_link_libraries(libslic3r_gui libslic3r avrdude libcereal imgui libvgcode GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES} NanoSVG::nanosvg NanoSVG::nanosvgrast OpenSSL::SSL OpenSSL::Crypto) + + if (MSVC) + target_link_libraries(libslic3r_gui Setupapi.lib) +Index: PrusaSlicer-version_2.8.0/src/slic3r/Config/Version.cpp +=================================================================== +--- PrusaSlicer-version_2.8.0.orig/src/slic3r/Config/Version.cpp ++++ PrusaSlicer-version_2.8.0/src/slic3r/Config/Version.cpp +@@ -7,6 +7,7 @@ + #include + + #include ++#include + #include + + #include "libslic3r/libslic3r.h" +Index: PrusaSlicer-version_2.8.0/src/slic3r/GUI/UserAccountCommunication.cpp +=================================================================== +--- PrusaSlicer-version_2.8.0.orig/src/slic3r/GUI/UserAccountCommunication.cpp ++++ PrusaSlicer-version_2.8.0/src/slic3r/GUI/UserAccountCommunication.cpp +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + #include + diff --git a/PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch b/PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch new file mode 100644 index 0000000..e0258e8 --- /dev/null +++ b/PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch @@ -0,0 +1,121 @@ +From db3232171448d68ed7a206c9683b5aa968181e22 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Sun, 15 Dec 2024 10:36:34 +0100 +Subject: [PATCH 1/2] Install OCCTWrapper into libdir on Linux + +The FHS says that libraries should be installed in the library +directory on Linux. +--- + src/libslic3r/Format/STEP.cpp | 6 +++--- + src/occt_wrapper/CMakeLists.txt | 7 +++++-- + 2 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp +index c2761e07c04..d6bf6c26dac 100644 +--- a/src/libslic3r/Format/STEP.cpp ++++ b/src/libslic3r/Format/STEP.cpp +@@ -39,8 +39,8 @@ LoadStepFn get_load_step_fn() + #endif + + if (!load_step_fn) { +- auto libpath = boost::dll::program_location().parent_path(); + #ifdef _WIN32 ++ auto libpath = boost::dll::program_location().parent_path(); + libpath /= "OCCTWrapper.dll"; + HMODULE module = LoadLibraryW(libpath.wstring().c_str()); + if (module == NULL) +@@ -61,8 +61,8 @@ LoadStepFn get_load_step_fn() + #elif __APPLE__ + load_step_fn = &load_step_internal; + #else +- libpath /= "OCCTWrapper.so"; +- void *plugin_ptr = dlopen(libpath.c_str(), RTLD_NOW | RTLD_GLOBAL); ++ // This is installed into /usr/lib(64)/ and dlopen will search there. ++ void *plugin_ptr = dlopen("OCCTWrapper.so", RTLD_NOW | RTLD_GLOBAL); + + if (plugin_ptr) { + load_step_fn = reinterpret_cast(dlsym(plugin_ptr, fn_name)); +diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt +index f6df6e7a605..f156516dd28 100644 +--- a/src/occt_wrapper/CMakeLists.txt ++++ b/src/occt_wrapper/CMakeLists.txt +@@ -59,5 +59,8 @@ target_link_libraries(OCCTWrapper libslic3r admesh) + + include(GNUInstallDirs) + +-install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_BINDIR}") +- ++if (WIN32 OR APPLE) ++ install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_BINDIR}") ++else() ++ install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_LIBDIR}") ++endif() + +From 4fa91caa73b66827c434e5d67e2f090d8bc71063 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Sun, 15 Dec 2024 10:49:43 +0100 +Subject: [PATCH 2/2] Bump OpenCASCADE requirement and implement version check + +This implements a saner version check. + +We only have to link against TKDESTEP. The target has all the needed +dependencies set. +--- + src/occt_wrapper/CMakeLists.txt | 42 ++++++++++++--------------------- + 1 file changed, 15 insertions(+), 27 deletions(-) + +diff --git a/src/occt_wrapper/CMakeLists.txt b/src/occt_wrapper/CMakeLists.txt +index f156516dd28..d10fd23407f 100644 +--- a/src/occt_wrapper/CMakeLists.txt ++++ b/src/occt_wrapper/CMakeLists.txt +@@ -19,35 +19,23 @@ include(GenerateExportHeader) + + generate_export_header(OCCTWrapper) + +-find_package(OpenCASCADE 7.6.1 REQUIRED) ++find_package(OpenCASCADE REQUIRED) ++# OpenCASCADE has an exact version match even if you don't specify the EXACT ++# keyword in the find_package(). So lets implement it on our own. ++set(OPENCASCADE_MODULE_VERSION ++ "${OpenCASCADE_MAJOR_VERSION}.${OpenCASCADE_MINOR_VERSION}.${OpenCASCADE_MAINTENANCE_VERSION}") ++set(OPENCASCADE_REQUIRED_VERSION "7.8.0") ++if (${OPENCASCADE_MODULE_VERSION} VERSION_LESS ${OPENCASCADE_REQUIRED_VERSION}) ++ message( ++ FATAL_ERROR ++ "Coun't find a compatible OpenCASCADE version - " ++ "required: ${OPENCASCADE_REQUIRED_VERSION}, found: " ++ "${OPENCASCADE_MODULE_VERSION}" ++ ) ++endif() + + set(OCCT_LIBS +- TKXDESTEP +- TKSTEP +- TKSTEP209 +- TKSTEPAttr +- TKSTEPBase +- TKXCAF +- TKXSBase +- TKVCAF +- TKCAF +- TKLCAF +- TKCDF +- TKV3d +- TKService +- TKMesh +- TKBO +- TKPrim +- TKHLR +- TKShHealing +- TKTopAlgo +- TKGeomAlgo +- TKBRep +- TKGeomBase +- TKG3d +- TKG2d +- TKMath +- TKernel ++ TKDESTEP + ) + + slic3r_remap_configs("${OCCT_LIBS}" RelWithDebInfo Release) diff --git a/PrusaSlicer-2.9.0-pr13081-cgal6.0.patch b/PrusaSlicer-2.9.0-pr13081-cgal6.0.patch new file mode 100644 index 0000000..9263d86 --- /dev/null +++ b/PrusaSlicer-2.9.0-pr13081-cgal6.0.patch @@ -0,0 +1,370 @@ +From 14060916576e62654be0db2f614bf8d36f4d2fa6 Mon Sep 17 00:00:00 2001 +From: Laurent Rineau +Date: Sat, 4 Jan 2025 12:27:00 +0100 +Subject: [PATCH 1/5] compatibility with CGAL-6.0 (and 5.6.x) + +--- + src/libslic3r/CutSurface.cpp | 53 +++++++++++++++++++++--------------- + 1 file changed, 31 insertions(+), 22 deletions(-) + +diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp +index 57dfb8560..e39ec9b64 100644 +--- a/src/libslic3r/CutSurface.cpp ++++ b/src/libslic3r/CutSurface.cpp +@@ -4,6 +4,14 @@ + ///|/ + #include "CutSurface.hpp" + ++template ++auto access_pmap(std::optional opt) -> T { ++ return opt.value(); ++} ++ ++template ++auto access_pmap(Pair pair) { return pair.first; } ++ + /// models_input.obj - Check transormation of model to each others + /// projection_center.obj - circle representing center of projection with correct distance + /// {M} .. model index +@@ -31,6 +39,7 @@ using namespace Slic3r; + #include + #include + #include ++#include + #include + #include + #include +@@ -1021,8 +1030,8 @@ priv::CutMesh priv::to_cgal(const ExPolygons &shapes, + if (shapes.empty()) return {}; + + CutMesh result; +- EdgeShapeMap edge_shape_map = result.add_property_map(edge_shape_map_name).first; +- FaceShapeMap face_shape_map = result.add_property_map(face_shape_map_name).first; ++ EdgeShapeMap edge_shape_map = access_pmap((result.add_property_map(edge_shape_map_name))); ++ FaceShapeMap face_shape_map = access_pmap((result.add_property_map(face_shape_map_name))); + + std::vector indices; + auto insert_contour = [&projection, &indices, &result, +@@ -1432,17 +1441,17 @@ priv::CutAOIs priv::cut_from_model(CutMesh &cgal_model, + const ExPolygonsIndices &s2i) + { + // pointer to edge or face shape_map +- VertexShapeMap vert_shape_map = cgal_model.add_property_map(vert_shape_map_name, nullptr).first; ++ VertexShapeMap vert_shape_map = access_pmap((cgal_model.add_property_map(vert_shape_map_name, nullptr))); + + // 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(edge_shape_map_name).first; +- const FaceShapeMap& face_shape_map = cgal_shape.property_map(face_shape_map_name).first; ++ const EdgeShapeMap& edge_shape_map = access_pmap((cgal_shape.property_map(edge_shape_map_name))); ++ const FaceShapeMap& face_shape_map = access_pmap((cgal_shape.property_map(face_shape_map_name))); + 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 +- EdgeBoolMap ecm = cgal_model.add_property_map(is_constrained_edge_name, false).first; ++ EdgeBoolMap ecm = access_pmap((cgal_model.add_property_map(is_constrained_edge_name, false))); + const auto &p = CGAL::parameters::visitor(visitor) + .edge_is_constrained_map(ecm) + .throw_on_self_intersection(false); +@@ -1451,7 +1460,7 @@ priv::CutAOIs priv::cut_from_model(CutMesh &cgal_model, + + if (!is_valid) return {}; + +- FaceTypeMap face_type_map = cgal_model.add_property_map(face_type_map_name, FaceType::not_constrained).first; ++ FaceTypeMap face_type_map = access_pmap((cgal_model.add_property_map(face_type_map_name, FaceType::not_constrained))); + + // Select inside and outside face in model + set_face_type(face_type_map, cgal_model, vert_shape_map, ecm, cgal_shape, s2i); +@@ -1587,8 +1596,8 @@ void priv::collect_surface_data(std::queue &process, + + void priv::create_reduce_map(ReductionMap &reduction_map, const CutMesh &mesh) + { +- const VertexShapeMap &vert_shape_map = mesh.property_map(vert_shape_map_name).first; +- const EdgeBoolMap &ecm = mesh.property_map(is_constrained_edge_name).first; ++ const VertexShapeMap &vert_shape_map = access_pmap((mesh.property_map(vert_shape_map_name))); ++ const EdgeBoolMap &ecm = access_pmap((mesh.property_map(is_constrained_edge_name))); + + // check if vertex was made by edge_2 which is diagonal of quad + auto is_reducible_vertex = [&vert_shape_map](VI reduction_from) -> bool { +@@ -1773,10 +1782,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(vert_shape_map_name).first; ++ access_pmap((models[patch.model_id].property_map(vert_shape_map_name))); + uint32_t patch_index = &patch - &patches.front(); + // map is created during patch creation / dividing +- const CvtVI2VI& cvt = patch.mesh.property_map(patch_source_name).first; ++ const CvtVI2VI& cvt = access_pmap((patch.mesh.property_map(patch_source_name))); + // for each point on outline + for (const Loop &loop : patch.loops) + for (const VI &vi_patch : loop) { +@@ -2666,7 +2675,7 @@ priv::SurfacePatch priv::create_surface_patch(const std::vector &fis, + /* const */ CutMesh &mesh, + const ReductionMap *rmap) + { +- auto is_counted = mesh.add_property_map("v:is_counted").first; ++ auto is_counted = access_pmap((mesh.add_property_map("v:is_counted"))); + uint32_t count_vertices = 0; + if (rmap == nullptr) { + for (FI fi : fis) +@@ -2696,7 +2705,7 @@ priv::SurfacePatch priv::create_surface_patch(const std::vector &fis, + cm.reserve(count_vertices, count_edges, count_faces); + + // vertex conversion function from mesh VI to result VI +- CvtVI2VI mesh2result = mesh.add_property_map("v:mesh2result").first; ++ CvtVI2VI mesh2result = access_pmap((mesh.add_property_map("v:mesh2result"))); + + if (rmap == nullptr) { + for (FI fi : fis) { +@@ -2748,7 +2757,7 @@ priv::SurfacePatch priv::create_surface_patch(const std::vector &fis, + assert(count_edges >= cm.edges().size()); + + // convert VI from this patch to source VI, when exist +- CvtVI2VI cvt = cm.add_property_map(patch_source_name).first; ++ CvtVI2VI cvt = access_pmap((cm.add_property_map(patch_source_name))); + // vi_s .. VertexIndex into mesh (source) + // vi_d .. new VertexIndex in cm (destination) + for (VI vi_s : mesh.vertices()) { +@@ -2939,7 +2948,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(vert_shape_map_name).first; ++ const VertexShapeMap &vert_shape_map = access_pmap((model.property_map(vert_shape_map_name))); + // for each half edge of outline + for (HI hi : cut.second) { + VI vi = model.source(hi); +@@ -2964,7 +2973,7 @@ priv::SurfacePatch priv::separate_patch(const std::vector& fis, + patch_new.model_id = patch.model_id; + patch_new.shape_id = patch.shape_id; + // fix cvt +- CvtVI2VI cvt = patch_new.mesh.property_map(patch_source_name).first; ++ CvtVI2VI cvt = access_pmap((patch_new.mesh.property_map(patch_source_name))); + for (VI &vi : cvt) { + if (!vi.is_valid()) continue; + vi = cvt_from[vi]; +@@ -2982,9 +2991,9 @@ void priv::divide_patch(size_t i, SurfacePatchesEx &patches) + CutMesh& cm = patch.mesh; + assert(!cm.faces().empty()); + std::string patch_number_name = "f:patch_number"; +- CutMesh::Property_map is_processed = cm.add_property_map(patch_number_name, false).first; ++ CutMesh::Property_map is_processed = access_pmap((cm.add_property_map(patch_number_name, false))); + +- const CvtVI2VI& cvt_from = patch.mesh.property_map(patch_source_name).first; ++ const CvtVI2VI& cvt_from = access_pmap((patch.mesh.property_map(patch_source_name))); + + std::vector fis; + fis.reserve(cm.faces().size()); +@@ -3085,7 +3094,7 @@ priv::SurfacePatches priv::diff_models(VCutAOIs &cuts, + CutAOIs &model_cuts = cuts[model_index]; + CutMesh &cut_model_ = cut_models[model_index]; + const CutMesh &cut_model = cut_model_; +- ReductionMap vertex_reduction_map = cut_model_.add_property_map(vertex_reduction_map_name).first; ++ ReductionMap vertex_reduction_map = access_pmap((cut_model_.add_property_map(vertex_reduction_map_name))); + create_reduce_map(vertex_reduction_map, cut_model); + + for (size_t cut_index = 0; cut_index < model_cuts.size(); ++cut_index, ++index) { +@@ -3171,7 +3180,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(vert_shape_map_name).first; ++ const VertexShapeMap &vert_shape_map = access_pmap((mesh.property_map(vert_shape_map_name))); + 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)]; +@@ -3708,7 +3717,7 @@ void priv::store(const CutMesh &mesh, const FaceTypeMap &face_type_map, const st + } + + CutMesh &mesh_ = const_cast(mesh); +- auto face_colors = mesh_.add_property_map("f:color").first; ++ auto face_colors = access_pmap((mesh_.add_property_map("f:color"))); + for (FI fi : mesh.faces()) { + auto &color = face_colors[fi]; + switch (face_type_map[fi]) { +@@ -3734,7 +3743,7 @@ void priv::store(const CutMesh &mesh, const ReductionMap &reduction_map, const s + std::string off_file = dir + "model" + std::to_string(reduction_order++) + ".off"; + + CutMesh &mesh_ = const_cast(mesh); +- auto vertex_colors = mesh_.add_property_map("v:color").first; ++ auto vertex_colors = access_pmap((mesh_.add_property_map("v:color"))); + // initialize to gray color + for (VI vi: mesh.vertices()) + vertex_colors[vi] = CGAL::Color{127, 127, 127}; +-- +2.48.1 + + +From 0073b6e72d56ab52d4c513917d2055d69cfc0383 Mon Sep 17 00:00:00 2001 +From: Laurent Rineau +Date: Sat, 13 Jul 2024 01:24:10 +0200 +Subject: [PATCH 2/5] missing include + +--- + src/libslic3r/CutSurface.cpp | 8 ++++++++ + src/slic3r/GUI/UserAccountCommunication.cpp | 1 + + 2 files changed, 9 insertions(+) + +diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp +index e39ec9b64..9e3b74293 100644 +--- a/src/libslic3r/CutSurface.cpp ++++ b/src/libslic3r/CutSurface.cpp +@@ -12,6 +12,14 @@ auto access_pmap(std::optional opt) -> T { + template + auto access_pmap(Pair pair) { return pair.first; } + ++template ++auto access_pmap(std::optional opt) -> T { ++ return opt.value(); ++} ++ ++template ++auto access_pmap(Pair pair) { return pair.first; } ++ + /// models_input.obj - Check transormation of model to each others + /// projection_center.obj - circle representing center of projection with correct distance + /// {M} .. model index +diff --git a/src/slic3r/GUI/UserAccountCommunication.cpp b/src/slic3r/GUI/UserAccountCommunication.cpp +index ba736891c..8f51f9f0c 100644 +--- a/src/slic3r/GUI/UserAccountCommunication.cpp ++++ b/src/slic3r/GUI/UserAccountCommunication.cpp +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.48.1 + + +From 4cc656a9841a672282bf423d8e85413b552d1ba2 Mon Sep 17 00:00:00 2001 +From: Laurent Rineau +Date: Mon, 30 Sep 2024 11:05:55 +0200 +Subject: [PATCH 3/5] Update src/libslic3r/CutSurface.cpp + +Co-authored-by: Gregor Riepl +--- + src/libslic3r/CutSurface.cpp | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp +index 9e3b74293..4bc183747 100644 +--- a/src/libslic3r/CutSurface.cpp ++++ b/src/libslic3r/CutSurface.cpp +@@ -12,13 +12,6 @@ auto access_pmap(std::optional opt) -> T { + template + auto access_pmap(Pair pair) { return pair.first; } + +-template +-auto access_pmap(std::optional opt) -> T { +- return opt.value(); +-} +- +-template +-auto access_pmap(Pair pair) { return pair.first; } + + /// models_input.obj - Check transormation of model to each others + /// projection_center.obj - circle representing center of projection with correct distance +-- +2.48.1 + + +From 25130451ca9466ffaac96032602d4f6bde5c6e6e Mon Sep 17 00:00:00 2001 +From: Laurent Rineau +Date: Sat, 4 Jan 2025 12:57:19 +0100 +Subject: [PATCH 4/5] use std::optional::value_or (according to review) + +--- + src/libslic3r/CutSurface.cpp | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/libslic3r/CutSurface.cpp b/src/libslic3r/CutSurface.cpp +index 4bc183747..b21ed0e0c 100644 +--- a/src/libslic3r/CutSurface.cpp ++++ b/src/libslic3r/CutSurface.cpp +@@ -6,13 +6,12 @@ + + template + auto access_pmap(std::optional opt) -> T { +- return opt.value(); ++ return opt.value_or(T{}); + } + + template + auto access_pmap(Pair pair) { return pair.first; } + +- + /// models_input.obj - Check transormation of model to each others + /// projection_center.obj - circle representing center of projection with correct distance + /// {M} .. model index +@@ -3719,7 +3718,7 @@ void priv::store(const CutMesh &mesh, const FaceTypeMap &face_type_map, const st + + CutMesh &mesh_ = const_cast(mesh); + auto face_colors = access_pmap((mesh_.add_property_map("f:color"))); +- for (FI fi : mesh.faces()) { ++ for (FI fi : mesh.faces()) { + auto &color = face_colors[fi]; + switch (face_type_map[fi]) { + case FaceType::inside: color = CGAL::Color{100, 250, 100}; break; // light green +-- +2.48.1 + + +From 9e8d79b990f06032b68d17d0aa4cd6111e47d273 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Thu, 6 Feb 2025 12:44:51 +0100 +Subject: [PATCH 5/5] Fix test_emboss with CGAL 6.0 + +--- + tests/libslic3r/test_emboss.cpp | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/tests/libslic3r/test_emboss.cpp b/tests/libslic3r/test_emboss.cpp +index 40f448f73..5b0750830 100644 +--- a/tests/libslic3r/test_emboss.cpp ++++ b/tests/libslic3r/test_emboss.cpp +@@ -9,6 +9,14 @@ + #include + using namespace Slic3r; + ++template ++auto access_pmap(std::optional opt) -> T { ++ return opt.value(); ++} ++ ++template ++auto access_pmap(Pair pair) { return pair.first; } ++ + namespace Private{ + + // calculate multiplication of ray dir to intersect - inspired by +@@ -906,8 +914,8 @@ TEST_CASE("Emboss extrude cut", "[Emboss-Cut]") + // identify glyph for intersected vertex + std::string vert_shape_map_name = "v:glyph_id"; + MyMesh cgal_object = MeshBoolean::cgal2::to_cgal(cube, face_map_name); +- auto face_map = cgal_object.property_map(face_map_name).first; +- auto vert_shape_map = cgal_object.add_property_map(vert_shape_map_name).first; ++ auto face_map = access_pmap(cgal_object.property_map(face_map_name)); ++ auto vert_shape_map = access_pmap(cgal_object.add_property_map(vert_shape_map_name)); + + std::string edge_shape_map_name = "e:glyph_id"; + std::string face_shape_map_name = "f:glyph_id"; +@@ -915,8 +923,8 @@ TEST_CASE("Emboss extrude cut", "[Emboss-Cut]") + + MyMesh cgal_shape = MeshBoolean::cgal2::to_cgal(shape, projection, 0, edge_shape_map_name, face_shape_map_name, glyph_contours); + +- auto edge_shape_map = cgal_shape.property_map(edge_shape_map_name).first; +- auto face_shape_map = cgal_shape.property_map(face_shape_map_name).first; ++ auto edge_shape_map = access_pmap(cgal_shape.property_map(edge_shape_map_name)); ++ auto face_shape_map = access_pmap(cgal_shape.property_map(face_shape_map_name)); + + // bool map for affected edge + using d_prop_bool = CGAL::dynamic_edge_property_t; +-- +2.48.1 + diff --git a/PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch b/PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch new file mode 100644 index 0000000..ebac94c --- /dev/null +++ b/PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch @@ -0,0 +1,30 @@ +From aaa7ab6ca2b593a4f20a08292a6fb44339029474 Mon Sep 17 00:00:00 2001 +From: Ryan Heule +Date: Wed, 1 Jan 2025 16:36:04 -0600 +Subject: [PATCH] Avoid null pointer dereference for partial configuration + settings + +--- + src/libslic3r/PrintConfig.cpp | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp +index 907fdfb02a..efa9be9760 100644 +--- a/src/libslic3r/PrintConfig.cpp ++++ b/src/libslic3r/PrintConfig.cpp +@@ -5130,7 +5130,14 @@ void DynamicPrintConfig::normalize_fdm() + } + } + +- if (this->has("wipe_tower_extruder")) { ++ // This method is called repeatedly while building configuration. We may ++ // not have enough info yet to determine whether the extruder is valid; ++ // wait until we do before checking. ++ // ++ // NOTE: other extruder validation (e.g. perimeter_extruder, infill_extruder) ++ // happens elsewhere, as those settings can be modified for specific print ++ // objects or sometimes even regions of objects. ++ if (this->has("wipe_tower_extruder") && this->has("nozzle_diameter")) { + // If invalid, replace with 0. + int extruder = this->opt("wipe_tower_extruder")->value; + int num_extruders = this->opt("nozzle_diameter")->size(); diff --git a/PrusaSlicer-2.9.0-pr13896-static-libs.patch b/PrusaSlicer-2.9.0-pr13896-static-libs.patch new file mode 100644 index 0000000..cd23fe6 --- /dev/null +++ b/PrusaSlicer-2.9.0-pr13896-static-libs.patch @@ -0,0 +1,46 @@ +From a7c15a3ae9877dcf7da8c8fd80de8b128251db2b Mon Sep 17 00:00:00 2001 +From: Yuri D'Elia +Date: Fri, 3 Jan 2025 00:07:50 +0100 +Subject: [PATCH] Build libslic3r-arrange/wrapper as static + +Fix build on linux without SLIC3R_STATIC (these are for internal use +only). + +- Avoids the need for installation (fixes + https://github.com/prusa3d/PrusaSlicer/pull/13812) +- Fixes build without PIC (fixes + https://github.com/prusa3d/PrusaSlicer/pull/13810, + https://github.com/prusa3d/PrusaSlicer/issues/13694), which would + still result in broken behavior (duplicate static initialization + crashing on startup). +--- + src/slic3r-arrange-wrapper/CMakeLists.txt | 2 +- + src/slic3r-arrange/CMakeLists.txt | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/slic3r-arrange-wrapper/CMakeLists.txt b/src/slic3r-arrange-wrapper/CMakeLists.txt +index 3f723e5aed1..34b64fc2969 100644 +--- a/src/slic3r-arrange-wrapper/CMakeLists.txt ++++ b/src/slic3r-arrange-wrapper/CMakeLists.txt +@@ -1,7 +1,7 @@ + project(slic3r-arrange-wrapper) + cmake_minimum_required(VERSION 3.13) + +-add_library(slic3r-arrange-wrapper ++add_library(slic3r-arrange-wrapper STATIC + include/arrange-wrapper/Arrange.hpp + include/arrange-wrapper/ArrangeSettingsDb_AppCfg.hpp + include/arrange-wrapper/ArrangeSettingsView.hpp +diff --git a/src/slic3r-arrange/CMakeLists.txt b/src/slic3r-arrange/CMakeLists.txt +index 98ab2470535..36a54ca5985 100644 +--- a/src/slic3r-arrange/CMakeLists.txt ++++ b/src/slic3r-arrange/CMakeLists.txt +@@ -1,7 +1,7 @@ + project(slic3r-arrange) + cmake_minimum_required(VERSION 3.13) + +-add_library(slic3r-arrange ++add_library(slic3r-arrange STATIC + include/arrange/Beds.hpp + include/arrange/ArrangeItemTraits.hpp + include/arrange/PackingContext.hpp diff --git a/PrusaSlicer-2.9.0-pr14010-fix-curl.patch b/PrusaSlicer-2.9.0-pr14010-fix-curl.patch new file mode 100644 index 0000000..54340c9 --- /dev/null +++ b/PrusaSlicer-2.9.0-pr14010-fix-curl.patch @@ -0,0 +1,40 @@ +From cdc3db58f9002778a0ca74517865527f50ade4c3 Mon Sep 17 00:00:00 2001 +From: Adam Dinwoodie +Date: Sat, 18 Jan 2025 15:28:30 +0000 +Subject: [PATCH] Handle libcurl v8+ + +The tests for curl versions in Http.cpp are intended to check if libcurl +is at least a given version, but they don't account for the fact that +the minor version will reset when the major version increments. + +Fix this by testing LIBCURL_VERSION_NUM, which encodes the full version +as a single three-byte number, with bytes corresponding to the major, +minor and patch numbers. + +Fixes #14009 +--- + src/slic3r/Utils/Http.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp +index 5b1ddfc7ec..de2785bc78 100644 +--- a/src/slic3r/Utils/Http.cpp ++++ b/src/slic3r/Utils/Http.cpp +@@ -200,7 +200,7 @@ bool Http::priv::ca_file_supported(::CURL *curl) + + if (curl == nullptr) { return res; } + +-#if LIBCURL_VERSION_MAJOR >= 7 && LIBCURL_VERSION_MINOR >= 48 ++#if LIBCURL_VERSION_NUM >= 0x073000 // equivalent to v7.48 or greater + ::curl_tlssessioninfo *tls; + if (::curl_easy_getinfo(curl, CURLINFO_TLS_SSL_PTR, &tls) == CURLE_OK) { + if (tls->backend == CURLSSLBACKEND_SCHANNEL || tls->backend == CURLSSLBACKEND_DARWINSSL) { +@@ -364,7 +364,7 @@ void Http::priv::http_perform(const HttpRetryOpt& retry_opts) + ::curl_easy_setopt(curl, CURLOPT_READFUNCTION, form_file_read_cb); + + ::curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); +-#if LIBCURL_VERSION_MAJOR >= 7 && LIBCURL_VERSION_MINOR >= 32 ++#if LIBCURL_VERSION_NUM >= 0x072000 // equivalent to v7.32 or higher + ::curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xfercb); + ::curl_easy_setopt(curl, CURLOPT_XFERINFODATA, static_cast(this)); + #ifndef _WIN32 diff --git a/PrusaSlicer-version_2.7.4.tar.gz b/PrusaSlicer-version_2.7.4.tar.gz new file mode 100644 index 0000000..1616775 --- /dev/null +++ b/PrusaSlicer-version_2.7.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6370a9593aeac5c56543e66d167ab5fd053df55b9376392c2d6184eb0bf65fc8 +size 65396083 diff --git a/PrusaSlicer-version_2.8.0.tar.gz b/PrusaSlicer-version_2.8.0.tar.gz new file mode 100644 index 0000000..7fc4d33 --- /dev/null +++ b/PrusaSlicer-version_2.8.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58d484f85b34d83026f8220bab983f855fbcd72767d0887f21f5cc382e5b19ab +size 69806919 diff --git a/PrusaSlicer-version_2.9.0.tar.gz b/PrusaSlicer-version_2.9.0.tar.gz new file mode 100644 index 0000000..300ae5f --- /dev/null +++ b/PrusaSlicer-version_2.9.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:515a41dea3bcd2fcadb713b22e4eccfd46fbb7a7ca8dad8440e7b5e29fbbc206 +size 70604482 diff --git a/PrusaSlicer.changes b/PrusaSlicer.changes new file mode 100644 index 0000000..d4dd67e --- /dev/null +++ b/PrusaSlicer.changes @@ -0,0 +1,911 @@ +------------------------------------------------------------------- +Wed Feb 26 21:18:52 UTC 2025 - Ben Greiner + +- Add prusaslicer-2.8.1-boost-1.87.0-asio.patch for new boost + * gh#prusa3d/PrusaSlicer#13799 gentoo#946495 + +------------------------------------------------------------------- +Sun Feb 9 09:37:07 UTC 2025 - Dmitry Roshchin + +- Fix app notification font + +------------------------------------------------------------------- +Thu Feb 6 10:50:53 UTC 2025 - Andreas Schneider + +- Fix building with CGAL 6.0+ +- Added PrusaSlicer-2.9.0-pr13081-cgal6.0.patch + gh#prusa3d/PrusaSlicer#13081 + +------------------------------------------------------------------- +Tue Jan 21 11:00:03 UTC 2025 - Andreas Schneider + +- Fixed printables.com integration +- Added PrusaSlicer-2.9.0-pr14010-fix-curl.patch + gh#prusa3d/PrusaSlicer#14010 + +------------------------------------------------------------------- +Wed Jan 8 08:18:03 UTC 2025 - Andreas Schneider + +- Remove obsolete qhull linking workaround + +------------------------------------------------------------------- +Fri Dec 20 18:27:35 UTC 2024 - Andreas Schneider + +- Update to version 2.9.0 + * This release introduces multiple beds, scarf seams, Printables integration, + improved support for multiple nozzle diameters, paint-on fuzzy skin and + many more improvements and bugfixes. + * See https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.9.0 +- Added PrusaSlicer-2.9.0-pr13896-static-libs.patch + gh#prusa3d/PrusaSlicer#13896 +- Added PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch + gh#prusa3d/PrusaSlicer#13885 +- Removed PrusaSlicer-2.8.1-pr13609-fix-build.patch + +------------------------------------------------------------------- +Sun Dec 15 11:12:17 UTC 2024 - Andreas Schneider + +- Fixed loading STEP files +- Added PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch +- Removed up-occt-version.patch + +------------------------------------------------------------------- +Sun Dec 8 16:40:40 UTC 2024 - Ben Greiner + +- Changelog for 2.8.1 + * When using the wipe tower with "No sparse layers" option + enabled, there would still be travels to the wipe tower + location even for the skipped layers. This is a regression + introduced in 2.8.1-rc1 (#13384). + * A warning about inconsistent color profiles in PNGs used as + Prusa Account avatar is now silently ignored (#12920). + ## Improvements with respect to 2.8.0 + * Based on the feedback received after 2.8.0 release, the menu + bar was reinstated and the menu no longer hides under a button. + Thanks everyone for the feedback, it was very helpful and it + will be taken into consideration during possible UI-related + decisions in the future. #12943 + * When logging-in with the PrusaAccount using third party + authorization (Google, Apple, Facebook), an external browser + window is opened so the user is not forced to enter their + credentials into windows created by PrusaSlicer. + * The built-in web engine no longer remembers the user after + logout. + * There are two new parameters: Filaments->Advanced->Abrasive + material and Printers->Extruder->High flow nozzle. Both flags + will be used to check whether a sliced G-code is compatible + with the given printer (abrasive material requires hardened + nozzle) and also to ensure that "Set as current" function in + PrusaSlicer-embedded Prusa Connect will select the suitable + profile for the given configuration. + * Note that this feature is supported since MINI/MK4/XL firmware + version 6.2.0-alpha1, and that the implementation in Prusa + Connect is not completely finished yet, meaning that the dialog + where printer is selected does not use this information - it + will later start working without the need to download a new + slicer version. + * Automatic orientation of bridges has been improved. Issues with + unanchored bridges caused by inconvenient choice of their angle + should now occur less frequently, although there is still a + large class of scenarios where the solution is suboptimal. + * The output of --query-printer-models command line option was + extended to contain bed shape and dimensions. Note that custom + bed shapes are currently not supported. + * The 'new version available' notification can now be used to + direct the user to our website, instead of just downloading the + executable. As of now, we release two different Linux + AppImages, so the user needs to be able to choose which one + they want to download. + * A new infill type called Zig-zag was created. It behaves the + same as Rectilinear, except that the pattern is aligned between + layers (Rectilinear is optimized for short travels, which leads + to inconsistencies). The new infill may thus take slightly + longer to print because of that, although the effect will be + negligible in most prints. It is possible that Rectilinear and + Zig-zag will be merged into a single infill type in one of the + upcoming releases. #12613 + ## Bugs fixed with respect to 2.8.0 + * General improvement of Prusa Connect / PrusaAccount session + stability. There were scenarios which led to uncommanded + logouts from PrusaAccount, some resulting in partially blank + Prusa Connect screen and requiring application restart to fix. + The problems occurred after being logged on for a long time, + after waking the PC up from sleep, or when internet connection + was unstable. + * Fixed missing G-code preview on setups using older GPUs + (#12908). + * Some settings were not applied when overridden per object + (#12916). + * Fixed adding SVGs as parts/modifiers. This was broken in 2.8.0 + (#12915). + * Fixed UI glitch resulting in disappearing text in edit boxes + after editing (#12932). + * Fixed incorrect capture of keyboard input, which led to some + keys being ignored (#13043). + * Physical printer configured to use username/password + authentication no longer asks the user for the credentials when + opening the Physical Printer page (#12921, #12933). + * Notification informing about the user having logged in into + PrusaAccount occasionally showed even when the user was in fact + logged in for a long time already (#12963, #13166). + * Object shells incorrectly stayed visible after switching from + FFF to SLA and back. + * Fixed rotation slider in SVG tool when "Use surface" option was + active (it incorrectly reverted to original position when + released). + * Changing Dynamic overhang speeds settings did not trigger + G-code regeneration as is should have. + * Fixed loading of specific OBJ files (#12157). + * Fixed a crash when scaling to fit in specific cases (circular + bed and objects with parts). + * Fixed an infinite loop during infill generation stage occurring + in rare cases (#11426). + * 'Export Plate as STL/OBJ Including Supports' no longer exports + non-printable objects. + * Fixed zero velocity G-code commands when the pressure equalizer + was combined with spiral vase mode. This bugfix was ported from + OrcaSlicer. Thanks to @Noisyfox, @SoftFever and everyone + involved. + * Fixed incorrect Color Changes placement after reslicing in + certain cases (#13008). + * Reduced number of emitted M106 G-codes when dynamic fan speed + on overhangs is enabled. Too many commands were generated even + when the fan speed barely changed or did not change at all. + #11981, #11856 + * Fixed missing update when adding Color Change with supports + enabled. + * Fixed crash when loading specific 3MFs containing Color Changes + (#13038). + * Adaptive layer height feature did not work when Z shrinkage + compensation was used. + * Fixed unexpected autoselection of SLA printer in Configuration + Wizard in certain cases (#13058). + * Fixed couple of usability issues with the vertical slider in + preview (hovered ticks selection and reaction to mouse wheel) + (#12944). + * Fixed unexpected deceleration on overhangs with dynamic + overhangs speed enabled. + * Line infill did not generate at all when maximum anchor length + was set to zero. + * When seam position was set to Random, the algorithm would + occasionally place the seam on a bridging perimeter. + * Fixed erratic placement of seams occassionally happening with + specific object geometry. + * Fixed a problem in STEP file loading, which resulted in errors + in the geometry of the loaded model (#12271, #12122). + * Using certain fonts for the text embossing led to project files + which PrusaSlicer was not able to open anymore (#13123). + * Custom G-codes are not allowed to contain certain keywords + which PrusaSlicer uses for internal purposes. The check that + these keywords are not present was not working in the previous + version. It is now fixed. + * Fixed artifacts sometimes appearing in the "Actual speed" + preview. The artifacts were a result of long-existing bug in + the G-code processor, the "Actual speed" preview just made them + visible. The bug could have led to incorrect time estimates for + specific G-codes. + * Fixed three distinct crashes in Configuration Wizard occurring + after a specific sequence of steps. + * Fixed a long-existing bug in the cooling logic, which resulted + in zero or possibly negative extrusion commands in very rare + cases. + * Downloading from Printables did not work when the download + folder contained non-ASCII characters. + * Fixed selection of print host type in Physical Printer dialog. + PrusaLink was missing in the list for several printers which + actually support it. This also caused several other glitches + (#13286). + * The Connect status dots in the Printer Settings dropdown did + not show for SLA printers. + * Custom printer profile created in Config Wizard could be saved + under a name clashing with a system profile name. + * "Rename preset" button was inadvertently not shown in the UI + when physical printer profile was selected. + * Number of toolchanges did not show in the "Sliced info" box + when wipe tower was disabled (#6832). +- Replace PrusaSlicer-2.8.1-fix-build.patch with + PrusaSlicer-2.8.1-pr13609-fix-build.patch and remove unstable + (because not merged yet) URL from Source tag. + gh#prusa3d/PrusaSlicer#13609 +- Remove update-desktop-files + +------------------------------------------------------------------- +Sun Dec 8 08:57:27 UTC 2024 - Andreas Schneider + +- Update to version 2.8.1 + https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.8.1 +- Removed PrusaSlicer-2.8.0-slic3r-includes.patch +- Added PrusaSlicer-2.8.1-fix-build.patch +- Updated up-occt-version.patch + +------------------------------------------------------------------- +Fri Sep 13 19:22:26 UTC 2024 - Ben Greiner + +- Remove quadmath workaround for gcc14 with boost error: + fixed by boost 1.86 (see boo#1225861) + +------------------------------------------------------------------- +Tue Sep 3 12:51:07 UTC 2024 - Guillaume GARDET + +- Do not require libquadmath-devel on aarch64 since it does not + exist on this arch + +------------------------------------------------------------------- +Thu Aug 29 16:20:17 UTC 2024 - Ben Greiner + +- Update to 2.8.0 + * Prusa Connect integration + * seam improvements + * updated UI + * new G-code Viewer + * improved profile updating system + * many more improvements and bugfixes +- Must move to wxGTK3: we have no wxWebView in wxWidgets. Unfortunately + this disables wayland support: + https://github.com/prusa3d/PrusaSlicer/blob/version_2.8.0/src/PrusaSlicer.cpp#L88-L93 +- Add PrusaSlicer-2.8.0-slic3r-includes.patch + * gh#prusa3d/PrusaSlicer#13080 + +------------------------------------------------------------------- +Fri Apr 26 07:16:48 UTC 2024 - Ben Greiner + +- Don't include stray filesystem/convenience.hpp removed in + boost 1.85 + +------------------------------------------------------------------- +Thu Apr 25 13:54:10 UTC 2024 - Ben Greiner + +- Update to 2.7.4 + * Objects from 3MFs generated by BambuStudio now retain + multimaterial painting when loaded. BambuStudio saves the data + under a changed name, but because both the location and meaning + are the same, PrusaSlicer now tries to load the data under the + new name when it fails to find the attribute that PrusaSlicer + has always used. #12502 + * Fix: Downloading files from Printables did not work correctly + (#12521). +- Fixes in 2.7.3 + ## Bug fixes with respect to 2.7.3-beta1 + * Removed negligible deretractions sometimes emitted into the + G-code after the recently introduced spiral vase mode + improvements. While they did not present actual issues with the + print, they were confusingly shown in the G-code preview. + ## Bug fixes with respect to 2.7.3-alpha1 + * The z offset configuration option was not correctly accounted + for when doing the last filament unload above the wipe tower. + * Fixed crash when importing a specific config bundle while in + SLA mode. + * Linux specific: When changing active profile using the dropdown + in the right panel, the dropdown would stay open when Unsaved + Changes dialog was shown. + * The improvements of spiral vase mode handling introduced in the + previous alpha did not work correctly with absolute extruder + addressing (#2841 (comment)). They are now only applied with + relative extruder addressing, otherwise it falls back to the + old behaviour. + * After performing a toolchange on the wipe tower, a G-code to + set layer z is now always emitted. This is to make sure that + the layer z is correct and that it was not changed in custom + toolchange G-code. While the user is expected to pass such + information in the custom G-code, the "z-ensuring" G-code was + present in previous versions and removing it in 2.7.2 was + therefore a needless breaking change (#12361). + * Fixed blobs on the first layer when using ramping travels with + absolute extruder addressing enabled. + * Fixed issues with 'avoid crossing perimeters' function + (#12432). This problem was actually fixed in 2.7.3-alpha1 + already. + ## Major improvements first seen in 2.7.3-alpha1 + * See + https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.7.3-alpha1 + for the full description + * Improvements of multi-material printing + * Purging volumes + * Spiral vase mode improvements + ## Other improvements with respect to 2.7.2 + * PrusaSlicer is now able to open 3MF files generated by + BambuStudio and load geometry from them. (#10718, PR #10808, + thanks to @cmguo). Please note that BambuStudio allows to save + a 3MF containing G-code only, which is not supported by + PrusaSlicer and loading of such 3MFs will fail. + * Metadata of binary G-code have a new item named objects_info, + which lists all the objects in the print and their boundary + polygons. The same info was added into the comments at the end + of ASCII G-codes. + ## Bugfixes with respect to 2.7.2 + * Pressure equalizer limits were not respected when Dynamic speed + on overhangs was used (#9485). This is now fixed. Pressure + equalizer is also not applied after long travels. Many thanks + to @MGunlogson for providing a fix in his pull request #9622. + * Fixed a bug resulting in inadequate anchoring of bridging + extrusions. This bug was introduced in PrusaSlicer 2.6.0. + #10231, #11500, #11633, #11173, #11117, #9999, #10313, #11150, + #10493 + * When using Cancel object feature, the marks denoting where one + object ends and another starts were placed incorrectly. As a + result, there was a missing deretraction after all travels to + objects which would normally be printed following the cancelled + object. The issue was even worse with sequential printing, + where the uncompensated retractions on the cancelled object + summed up and could result in filament being unloaded past the + driving gears. + * When arcs (G2 and G3 G-codes) were enabled, PrusaSlicer + generated toolpaths outside the print area in certain cases + (#12381). +- Increase memory and disk space for building constraints + +------------------------------------------------------------------- +Wed Mar 13 19:02:19 UTC 2024 - Frank Kunz + +- Update to 2.7.2 + ## Improvements with respect to 2.7.1 + * Multi-material segmentation improvements + * Color change (M600) improvements + * Ramping travel improvements + * SLA overrides + * Windows specific: The cut tool sometimes produces non-manifold + meshes. This situation is now detected and the user is advised + to use Windows repair algorithm on the resulting objects. + ## Bugs fixes with respect to 2.7.1 + * Fixed incorrect partial arrange in certain cases. + * Fixing arrange issues with aligning to unprintable objects when + doing Shift+A. + * Fixed arrange which sometimes put the wipe tower slightly out of + bed + * Fixed UI glitch when setting object dimensions to extremely high + values. + * Fixed a bug in generation of brim and skirt preview in the + preliminary G-code preview (#11821, thanks to @supermerill) + * Fixed an issue Ctrl+Shift+Tab shortcut, which incorrectly + collapsed sidebar. + * Fixed wiggling of Rotate gizmo when moving an object in certain + cases. + * Fixed missing updated when moving through dropdown items using + keyboard arrows. + * Improve filtering of special characters on Klipper + EXCLUDE_OBJECT labels (#11802, PR#11813 by @jschuh - thank + you). + * Fixed layer change color dialog opening off screen. + * Fixed occasional crash during thumbnail generation for SLA + printers. + * Fixed slicing issues such as missing infills and similar on + multi part models when sliced with object-specific settings. + * In SLA mode, it was not possible to use custom file extension + (configured in Output Settings). + * Fixed incorrect calculation of wipe length in certain cases, + leading to shorter wipes than configured. + * Fixed various issues and UI glitches in text/SVG embossing. + * Fixed missing update when a new printer was added while a + physical printer preset was selected. + * Scrolling of the window was incorrectly performed when using + mouse wheel over a dropdown. + * Windows specific: Drop down menus appeared outside of + PrusaSlicer and could not be opened again. + * When loading an object from a 3MF, the suggestion to rescale + the model is not shown, because 3MFs store the information + about the correct unit (unlike STL files). + * Fixed an incorrect check of supported OpenGL version, which led + to a hard crash when OpenGL 3.2 was not available. + * When loading a 3MF for MM printer, PrusaSlicer offers to load + individual models as parts of a single object. This dialog did + not show up for specific geometries. + * PrusaSlicer did not start on some Windows Server installations + due to a missing DLL (wlanapi.dll). The library is now loaded + in runtime and the respective features. + * Travels with standard lifts (non-ramping) were incorrectly + generated. + * With option "Retract on layer change" disabled, there was a + retraction missing before the first travel on each layer. + * Variable layer height limits were not applied correctly when + using multi-extruder printer with different values of min and + max layer height. + * When z travel speed was set to zero, it was incorrectly + exported into the G-code, effectively stopping the print. + Instead, regular travel speed should have been used for the z + travel. + * When Print / Filament / Printer profiles contained different + values for the same key (which should normally not happen, + providing the profiles are correct), the misplaced keys could + have been used instead of the correct ones. + * Fixed incorrectly applied retraction in vase mode when ramping + travels were enabled. + * When using the "No sparse layers" wipe tower, the print head + sometimes lowered before travelling to the wipe tower, digging + into an object and destroying the print. + * Fixed a crash when loading certain AMF files. + * When specific extruder was set for the wipe tower and z + position has changed in custom toolchange G-code, the z + position was not correctly accounted for. + +------------------------------------------------------------------- +Fri Dec 29 09:47:16 UTC 2023 - Ben Greiner + +- Add PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch + * Fixes a compilation error with wxWidgets 3.2.4 + * gh#prusa3d/PrusaSlicer#11769 + +------------------------------------------------------------------- +Mon Dec 25 13:59:05 UTC 2023 - Ben Greiner + +- Update to 2.7.1 + ## Improvements fixed with respect to 2.7.0 + * The option Export as binary G-code was removed from Print + Settings. Instead, there is a new option in Printer Settings + named Supports binary G-code so it can be set at printer level. + There is also a new global switch in Preferences->Other, which + controls whether binary G-code will be generated for printers + which support it. It is therefore easy to turn the feature on + or off without doing any changes in profiles (#11734, #11873). + * Wipe tower weight was added into G-code metadata so it can be + easily displayed in the print statistics on the printer's + display. + ## Bugs fixed with respect to 2.7.0 + * When ramping travels were enabled, sometimes a perimeter was + missing at the layer where the spiral starts. + * Fixed a crash when selecting embossed text while an SVG tool is + opened (#11759). + * Helical layer changes could result in out of bed moves + (#11754). + * Helical layer change was enabled even when there was no + retraction on layer change (#11709, #11761). +- Release 2.7.0 + * This is the stable release of PrusaSlicer 2.7.0, introducing + SVG emboss, binary G-codes, ramping travels, support for G2/G3 + G-codes, support for Cancel object function and much more. It + also fixes many bugs. + * Important note for Original Prusa MINI, MK4 and XL owners: The + new configuration update of our system profiles will enable + binary G-code and G2/G3 features. Users using older firmware + need to update to 5.1.0-alpha2 or later or manually turn these + features off. On older firmware, new binary G-code is not + visible or recognized and the G2/G3 G-codes may not work + perfectly. + * Travel moves improvements + * SVG embossing tool (#6916, #9373) + * G2 and G3 G-code support #4352 + * Binary G-code + * Improved user interface + * Custom G-code editor + * Cancel object (Marlin, RRF and Klipper) +- D PrusaSlicer-2.6.0-wxWidgets-CheckResizerFlags-assert-fix.patch + +------------------------------------------------------------------- +Fri Sep 15 19:03:08 UTC 2023 - Ben Greiner + +- Update to 2.6.1 + * When renaming a preset to a name containing non-ASCII + characters, the encoding was mangled. This is now fixed + (#11232). + * Supports are no longer shown when using the clipping plane in + SLA supports tool. + * Fixed a crash when displaying command line help (#11060). + * Two tooltips in the Cut tool dialog were shown with mangled + encoding in some languages (#11236). + * The Help menu in PrusaSlicer was extended with "Sample G-codes + and Models" item, which navigates the user to the respective + page on our website where these assets can be downloaded. + * The Help menu was extended with "Quick Start" item, which + navigates the user to the beginner's guide on our website. +- Drop PrusaSlicer-pr11154-fix-cgal-c++-error.patch +- Drop PrusaSlicer-drop-wx3.0.patch + +------------------------------------------------------------------- +Tue Aug 29 07:23:22 UTC 2023 - Ben Greiner + +- Add PrusaSlicer-pr11154-fix-cgal-c++-error.patch + * gh#prusa3d/PrusaSlicer#11154 + * Fixes error on CGAL 5.6 + +------------------------------------------------------------------- +Sun Aug 20 16:01:37 UTC 2023 - Ben Greiner + +- Limit to CGAL < 5.6 as it introduced breaking changes which + PrusaSlicer is not compatible yet +- Disable failing ix86 build + +------------------------------------------------------------------- +Fri Jul 21 10:32:11 UTC 2023 - Ben Greiner + +- Require wxWidgets >= 3.1.6 + * Add PrusaSlicer-drop-wx3.0.patch + * gh#prusa3d/PrusaSlicer#11026, gh#prusa3d/PrusaSlicer#11027 + +------------------------------------------------------------------- +Sun Jul 9 14:30:54 UTC 2023 - Ben Greiner + +- BuildRequire nanosvg-devel >= 2022.12.22 + * only the fltk fork has nsvgRasterizeXY() + +------------------------------------------------------------------- +Wed Jul 5 14:13:11 UTC 2023 - Hans-Peter Jansen + +- disable slic3r_jobs_tests.cpp, as it fails sometimes +- PrusaSlicer-2.6.0-wxWidgets-CheckResizerFlags-assert-fix.patch + applied + +------------------------------------------------------------------- +Tue Jul 4 17:16:14 UTC 2023 - Hans-Peter Jansen + +- Update to version 2.6.0 + * too many changes to list here, you may want to check: + https://github.com/prusa3d/PrusaSlicer/commits/version_2.6.0 + * PrusaSlicer-boost1.79.patch was applied upstream: removed + * PrusaSlicer-cereal.patch was applied upstream: removed + * gentoo-887055-boost-fix.patch was applied upstream: removed + * new dependencies: nanosvg (new package), glu and glew + * more sed fiddling required for system expat and qhull support + * PrusaSlicer-2.6.0-octoprint-name-fix.patch added to work around + compile error: cast lambda expressionn to same type + * wxWidgets 3.0 is not supported anymore (even project states + otherwise). Let's hope, it will work with 3.2 better now. + upstream is using a patched 3.1 version. + +------------------------------------------------------------------- +Fri Apr 21 15:04:55 UTC 2023 - Klaus Kämpf + +- Update to version 2.5.2 + * contains profiles for Original Prusa MK4 printer + +- Update to version 2.5.1 + * 'Monotonic lines' top/bottom fill pattern + * It is now possible to set acceleration separately for external + perimeters, solid infill and top solid infill (Print Settings-> + Speed->Acceleration control) + * Original Prusa XL specific: Arrangement into the corner + * Fixed a crash sometimes occurring when slicing very detailed models + * Added Original Prusa XL profiles + +------------------------------------------------------------------- +Tue Jan 31 18:34:16 UTC 2023 - Ben Greiner + +- Add gentoo-887055-boost-fix.patch + * Fix build error with boost-filesystem 1.81 + * gh#prusa3d/PrusaSlicer#9294 + * https://bugs.gentoo.org/887055 + +------------------------------------------------------------------- +Sun Jan 1 17:25:36 UTC 2023 - Ben Greiner + +- Update up-occt-version.patch + * Allow any version for openCASCADE + * Luckily, the package compiles with recently updated occt v7.7 + +------------------------------------------------------------------- +Sat Oct 29 11:35:55 UTC 2022 - Ben Greiner + +- Update to version 2.5.0 + * Arachne perimeter generator + * Lightning infill + * Pressure equalizer + * STEP file import + * various smaller features and bugfixes + * Big changelog since v2.4.2, most changes decribed in alpha and + beta release notes: + https://github.com/prusa3d/PrusaSlicer/releases +- Add up-occt-version.patch + +------------------------------------------------------------------- +Mon Sep 5 17:17:49 UTC 2022 - Hans-Peter Jansen + +- Quoting Lucas Matena (see gh#prusa3d/PrusaSlicer#8299, issue 2): + if you link PrusaSlicer 2.5.x with wxWidgets 3.2, you will most + likely break it: link against wxWidgets 3.0.5 + +------------------------------------------------------------------- +Mon Aug 1 15:42:40 UTC 2022 - Ben Greiner + +- Add PrusaSlicer-cereal.patch -- gh#prusa3d/PrusaSlicer#7809 + +------------------------------------------------------------------- +Tue May 31 19:04:00 UTC 2022 - Ben Greiner + +- Disable test_voronoi -- rh#2059646 + +------------------------------------------------------------------- +Sun May 8 10:03:57 UTC 2022 - Ben Greiner + +- Update to version 2.4.2 + * SLA mode incorrectly handled 3MFs from 3rd party software, + resulting in misplaced SLA support points and holes in some + cases (#6100, #7359, #7189, #7826, #7659). This is very old + issue. + * Vase mode preview did not show in cases when Custom Start + G-Code lacked moves in Z #8032 + * When loading a 3rd party 3MF using drag and drop. PrusaSlicer + no longer asks if the 3MF shall be loaded as a project (which + makes no sense since it contains no config) and loads the + geometry only + * Using the Layer Height Modifier with the wipe tower was + impossible with multiple objects. The wipe tower reported that + the layer height profile is different, even though it was in + fact set the same on all objects (#7711, #7903, #8044) + * Fixed a crash on "Convert from/to units" when several objects + were selected + * Automatic color change for logo crashed PrusaSlicer in certain + cases (when a one-layer object was present) #8156 + * Linux specific: Fixed a crash on opening projects in some cases + (#8078, #8097) + * Added Snapmaker bundle (Snapmaker A250, Snapmaker A350). Based + on https://github.com/nivekmai/snapmaker-prusa by @nivekmai, + @WilliamBosacker, @mrworf + * Added profiles for Zonestar printers (Z5, Z6, Z5X, Z8, Z9), + based on slic3r/slic3r-profiles#19 by @ZONESTAR3D + * Fixed a crash when Unsaved Changes dialog attempted to show a + modified config option which is not available in current mode + (e.g. Start G-Code in Simple mode). #7905 + * Fixed a bug that when the user was closing the application and + replied 'Yes' in the dialog asking about unsaved project while + also checking 'Remember my choice', it made it impossible to + close PrusaSlicer in the next runs when there were no objects + in the plater #8076, #8122 + * Loading of a G-Code in G-Code Viewer or loading config from + G-Code file sometimes failed because of a bug in parsing of the + configuration block at the end. + * Fixed incorrect rendering of some characters used in the + recently updated Simplified Chinese translation #8171 + * Fixed incorrect number of toolchanges reported in "Sliced Info" + box when wipe tower was used. The annotations of toolchanges in + G-Code were also numbered wrong #8186 + * Fixed a crash when using the "Import SL1 Archive" function and + either cancelling the dialog or confirming a non-existing file + #8175 + * Recycling symbols in Shape Gallery were mirrored so the user + does not have to flip them when using them as negative volumes + at the base of the print (which is the usual use case). Also, + PLA recycling symbol was added #7800 + +------------------------------------------------------------------- +Mon Apr 25 11:27:58 UTC 2022 - Ben Greiner + +- Refresh PrusaSlicer-boost1.79.patch with upstream's fix + * gh#prusa3d/PrusaSlicer#8238 + +------------------------------------------------------------------- +Sun Apr 24 09:26:22 UTC 2022 - Ben Greiner + +- Add PrusaSlicer-boost1.79.patch avoiding the deprecation + of boost::filesystem::ofstream in Boost 1.79 + * gh#prusa3d/PrusaSlicer#8238 + +------------------------------------------------------------------- +Tue Apr 12 12:59:51 UTC 2022 - Hans-Peter Jansen + +- Use gcc version 10 for anything but Tumbleweed + +------------------------------------------------------------------- +Tue Apr 12 06:41:47 UTC 2022 - Adrian Schröter + +- Use gcc version 10 + This allows the build on Leap 15.3/15.4 and in Factory using the same + compiler. +- Add buildignore to libglfw3-wayland to fix building for 15.3 + +------------------------------------------------------------------- +Fri Mar 18 11:44:17 UTC 2022 - Ben Greiner + +- Update to 2.4.1 + * Big changelog since v2.4.0, most changes decribed in alpha and + beta release notes: + https://github.com/prusa3d/PrusaSlicer/releases + * introducing G-Code Substitutions + * fixing bugs found in 2.4.0 release + +------------------------------------------------------------------- +Fri Dec 24 14:39:28 UTC 2021 - Ben Greiner + +- Update to 2.4.0 + * Big changelog since v2.3.3, most changes decribed in alpha and + beta release notes: + https://github.com/prusa3d/PrusaSlicer/releases + * Send system info: new dialog for telemetry. Opt-in. +- Drop patches + * PrusaSlicer-catch2upd.patch + * PrusaSlicer-issue6681-openvdb.patch + * PrusaSlicer-pr6590-updateTBB.patch + +------------------------------------------------------------------- +Tue Nov 23 11:21:48 UTC 2021 - Ben Greiner + +- Make compatible with TBB 2021 + * add FindTBB.cmake -- gh#prusa3d/PrusaSlicer#7332 + * add PrusaSlicer-pr6590-updateTBB.patch + gh#prusa3d/PrusaSlicer#6590 + +------------------------------------------------------------------- +Fri Sep 24 07:53:45 UTC 2021 - Ben Greiner + +- Add PrusaSlicer-catch2upd.patch + * gh#prusa3d/PrusaSlicer#6518 + * Update of Catch2 test framework from v2.13.3 to v2.13.6 + * Fixes build failure due to change of MINSIGSTKSZ in glibc 2.34 + +------------------------------------------------------------------- +Mon Aug 30 11:37:03 UTC 2021 - Ben Greiner + +- Add PrusaSlicer-issue6681-openvdb.patch + * gh#prusa3d/PrusaSlicer#6681 + * ilmbase-devel is now provided by openexr-devel + * OpenVDB's FindOpenVDB.cmake requires blosc-devel + +------------------------------------------------------------------- +Fri Jul 16 15:22:48 UTC 2021 - Ben Greiner + +- Update to v2.3.3 + * fix a bug in handling FDM multi-material project and + configuration files. + +------------------------------------------------------------------- +Fri Jul 9 16:08:39 UTC 2021 - Ben Greiner + +- Update to v2.3.2 + * Introducing support for the new Prusa SL1S SPEED masked + SLA printer, Prusa CW1S firmware updater, PrusaLink + host type for Prusa i3 MK3 printers, Monotonic infill + for all solid layers, better support for reading + configurations of newer PrusaSlicer releases, new 3rd + party printer profiles and a handful of bug fixes. +- Switch to bundled GLEW -- gh#prusa3d/PrusaSlicer#6396 + +------------------------------------------------------------------- +Tue Apr 20 10:50:45 UTC 2021 - Ben Greiner + +- Update to v2.3.1 + New 3rd party printer profiles + * Multiple Creality printers profiles were added (Ender-3 Max, + Ender-4, Ender-6, CR-5 Pro, CR-5 Pro H, CR-6 SE, CR-6 Max, + CR-10 Max, CR-200B, CR-8), thanks @pmjdebruijn. + * Added Artillery printer profiles (Sidewinder X1, Genius), + thanks @SzabolcsHornyak. + * Added INAT printer profiles, thanks @MarkINAT. + * Updated Anycubic Kossel bed texture (thanks @brunosso) and + Anycubic Kossel bed STL. + Vulnerability issues fixed + * The Talos Cisco Intelligence Group did a great job identifying + potential security issues in loading invalid and potentially + malicious AMF and 3MF files, see their vulnerability reports + TALOS-2020-1222 and TALOS-2020-1218. We fixed these two + potential security issues with this release of PrusaSlicer. + Bugs fixed with respect to PrusaSlicer 2.3.0 + * Reduced number of hits shown by the "Find config option" + dialog, fixed case insensitive search for non-Latin1 languages + #5202. + * Fixed G-code preview with coloring by a tool and visualization + of travels enabled #6095. + * Fixed opening of drop down menus at the bottom of the screen + on multi-monitor setups #2999 #5911 #5957. This issue has been + fixed by us in wxWidgets and accepted by the upstream. + +------------------------------------------------------------------- +Mon Jan 11 18:43:08 UTC 2021 - Benjamin Greiner + +- Update to v2.3.0 + * Introducing paint-on supports, ironing, monotonic + infill, seam painting, adaptive and support cubic + infill, print time per feature analysis, standalone + G-code viewer application, better auto-arrange with a + customizable gap and rotation, search function for the + settings, reworked "Avoid crossing perimeters" function, + physical printers (network settings), many new 3rd party + printer profiles and much, much more. +- Full Changelog entries for betas and release candidates: + https://github.com/prusa3d/PrusaSlicer/releases +- Drop PrusaSlicer-pr4340-boost-1-73.patch merged upstream + +------------------------------------------------------------------- +Sun Dec 20 20:12:40 UTC 2020 - Benjamin Greiner + +- Remove extra PrusaSlicer.desktop. Use upstream's desktop files. + Graphics;3DGraphics seems to be the consensus now. +- Remove wrapper gh#prusa3d/PrusaSlicer#4691 + +------------------------------------------------------------------- +Tue Sep 1 21:20:26 UTC 2020 - Benjamin Greiner + +- support boost >= 1.73 + * PrusaSlicer-pr4340-boost-1-73.patch gh#prusa3d/PrusaSlicer#4340 + * fixes gh#prusa3d/PrusaSlicer#4264 + +------------------------------------------------------------------- +Tue Sep 1 11:46:30 UTC 2020 - Benjamin Greiner + +- enforce GDK_BACKEND=x11 by indroducing the same wrapper as Fedora + gh#prusa3d/PrusaSlicer#4691 + +------------------------------------------------------------------- +Thu Aug 20 15:50:07 UTC 2020 - Benjamin Greiner + +- revert the memoryperjob change. The build process really acquires + that much memory per job and the workers cannot provide 3GB per + CPU core. Sadly, we are limited by memory not by CPU cores. +- require 11 GB of RAM. This allows us to run 3 jobs in parallel and + can be provided by all architectures + +------------------------------------------------------------------- +Thu Aug 20 09:03:33 UTC 2020 - Martin Liška + +- Use memoryperjob constraint instead of %limit_build macro. +- Use only 1GB for memoryperjob. + +------------------------------------------------------------------- +Mon Aug 10 08:12:10 UTC 2020 - Stefan Brüns + +- Use wxGTK3 instead of wxWidgets (GTK2), for better HiDPI and + Wayland support. + +------------------------------------------------------------------- +Tue Jun 16 12:09:13 UTC 2020 - Benjamin Greiner + +- This is mainly a cosmetic update so that the package gets rebuilt + in Factory. Rebuild is needed because of wxWidgets - boo#1172750 +- Add openvdb-tools package for better cmake reporting. +- Make the 32-bit floating point workaround more readable. + gh#prusa3d/PrusaSlicer#3781 + +------------------------------------------------------------------- +Fri Apr 24 07:24:26 UTC 2020 - Dominique Leuenberger + +- BuildRequire pkgconfig(libudev) instead of libudev-devel: allow + OBS to shortcut through -mini flavors. + +------------------------------------------------------------------- +Sat Mar 21 22:08:07 UTC 2020 - Benjamin Greiner + +- update to version 2.2.0 + introducing SLA hollowing and hole drilling, support for 3rd party + printer vendors, 3Dconnexion support, automatic variable layer height, + macOS dark mode support, greatly improved ColorPrint feature and much, + much more. + See https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.2.0 + and the changelogs for the release candidates, betas and alphas since + 2.1.1 for a complete list of changes. +- reactivate parallel builds, but need strong enough workers and reserve + 4G of memory per thread (memory-constraints, %limit_build) +- new build dependencies: cgal, ilmbase, more of boost, libudev, openvdb + + +------------------------------------------------------------------- +Wed Dec 11 10:24:01 UTC 2019 - Benjamin Greiner + +- update to version 2.1.1 + - integrating the Prusa Mini printer into the + installation wizard + - 3D scene thumbnails are newly generated and exported + into the G-code to be displayed on the Prusa Mini + printer's display +- use Graphics;3DGraphics for non Tumbleweed distros + +------------------------------------------------------------------- +Fri Sep 13 19:34:47 UTC 2019 - Benjamin Greiner + +- final 2.1.0 +- symlink icon files instead of duplicate copy + +------------------------------------------------------------------- +Sat Sep 7 15:00:17 UTC 2019 - Benjamin Greiner + +- new version 2.1.0-rc +- remove obsolete patch file +- tag localization files +- remove stray Noto font file, add as dependency +- outsource Desktop file creation +- move Desktop category to "Science;Construction" + +------------------------------------------------------------------- +Mon Jul 29 11:30:21 UTC 2019 - Benjamin Greiner + +- Clean up specfile according to declined submit request 718985 + - Remove non-devel BuildRequires + - Move icons to icons/hicolor +- build with -j1 as otherwise x64 build is stuck + +------------------------------------------------------------------- +Fri Jul 26 15:25:15 UTC 2019 - Benjamin Greiner + +- use new patch from upstream + (see https://github.com/prusa3d/PrusaSlicer/pull/2676) +- use Education;Construction as long as boo#1074711 is not resolved + +------------------------------------------------------------------- +Tue Jul 23 11:29:49 UTC 2019 - Benjamin Greiner + +- initial specfile diff --git a/PrusaSlicer.spec b/PrusaSlicer.spec new file mode 100644 index 0000000..be49f10 --- /dev/null +++ b/PrusaSlicer.spec @@ -0,0 +1,189 @@ +# +# spec file for package PrusaSlicer +# +# Copyright (c) 2025 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: PrusaSlicer +Version: 2.9.0 +Release: 0 +Summary: G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.) +License: AGPL-3.0-only +Group: Hardware/Printing +URL: https://www.prusa3d.com/prusaslicer/ +# SourceRepository: https://github.com/prusa3d/PrusaSlicer +Source0: https://github.com/prusa3d/PrusaSlicer/archive/version_%{version}.tar.gz#/%{name}-version_%{version}.tar.gz +# PATCH-FIX-UPSTREAM PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch gh#prusa3d/PrusaSlicer#11769 +Patch1: PrusaSlicer-2.7.1-slic3r-wxWidgets-3.2.4.patch +# PATCH-FIX-UPSTREAM prusaslicer-2.8.1-boost-1.87.0-asio.patch gh#prusa3d/PrusaSlicer#13799 gentoo#946495 +Patch2: prusaslicer-2.8.1-boost-1.87.0-asio.patch +# PATCH-FIX-OPENSUSE PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch gh#prusa3d/PrusaSlicer#13761 +Patch10: PrusaSlicer-2.8.1-pr13761-fix-occtwrapper.patch +# PATCH-FIX-OPENSUSE PrusaSlicer-2.6.0-octoprint-name-fix.patch -- cast lambda expression to same type +Patch11: PrusaSlicer-2.6.0-octoprint-name-fix.patch +# PATCH-FIX-OPENSUSE PrusaSlicer-2.9.0-pr13896-static-libs.patch gh#prusa3d/PrusaSlicer#13896 +Patch12: PrusaSlicer-2.9.0-pr13896-static-libs.patch +# PATCH-FIX-OPENSUSE PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch gh#prusa3d/PrusaSlicer#13885 +Patch13: PrusaSlicer-2.9.0-pr13885-printconfig-segfault.patch +# PATCH-FIX-OPENSUSE PrusaSlicer-2.9.0-pr14010-fix-curl.patch gh#prusa3d/PrusaSlicer#14010 +Patch14: PrusaSlicer-2.9.0-pr14010-fix-curl.patch +# PATCH-FIX-OPENSUSE PrusaSlicer-2.9.0-pr13081-cgal6.0.patch gh#prusa3d/PrusaSlicer#13081 +Patch15: PrusaSlicer-2.9.0-pr13081-cgal6.0.patch +BuildRequires: blosc-devel +BuildRequires: cereal-devel +BuildRequires: cgal-devel >= 5.6 +BuildRequires: cmake +BuildRequires: eigen3-devel >= 3 +BuildRequires: expat +BuildRequires: fdupes +# gcc v8 is required as least for charconv header. version 10 exists on 15.4 and tumbleweed +%if 0%{?suse_version} >= 1550 +%define gcc_ver %{gcc_version} +%else +%define gcc_ver 10 +%endif +BuildRequires: gcc%gcc_ver-c++ +BuildRequires: gtest >= 1.7 +BuildRequires: libboost_atomic-devel +BuildRequires: libboost_filesystem-devel +BuildRequires: libboost_iostreams-devel +BuildRequires: libboost_locale-devel +BuildRequires: libboost_log-devel +BuildRequires: libboost_nowide-devel +BuildRequires: libboost_regex-devel +BuildRequires: libboost_system-devel +BuildRequires: libboost_thread-devel +BuildRequires: libcurl-devel +BuildRequires: libexpat-devel +BuildRequires: libjpeg-devel +BuildRequires: memory-constraints +BuildRequires: nlopt-devel +BuildRequires: noto-sans-fonts +BuildRequires: occt-devel +BuildRequires: openexr-devel +BuildRequires: openssl-devel +BuildRequires: openvdb-devel >= 7.1 +BuildRequires: openvdb-tools +BuildRequires: pkgconfig +BuildRequires: tbb-devel +BuildRequires: wxGTK3-devel >= 3.2 +# need the fltk fork, see deps/NanoSVG/NanoSVG.cmake +BuildRequires: nanosvg-devel >= 2022.12.22 +BuildRequires: (cmake(Catch2) >= 2.9 with cmake(Catch2) < 3) +BuildRequires: cmake(LibBGCode) +BuildRequires: cmake(Qhull) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(glew) +BuildRequires: pkgconfig(glu) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(qhullcpp) +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(wayland-egl) +BuildRequires: pkgconfig(webkit2gtk-4.1) +Requires: noto-sans-fonts +# Cannot allocate memory to build +ExcludeArch: %{ix86} + +%description +PrusaSlicer takes 3D models (STL, OBJ, AMF) and converts them into G-code +instructions for FFF printers or PNG layers for mSLA 3D printers. It's +compatible with any modern printer based on the RepRap toolchain, including +all those based on the Marlin, Prusa, Sprinter and Repetier firmware. +It also works with Mach3, LinuxCNC and Machinekit controllers. + +%prep +%autosetup -p1 -n %{name}-version_%{version} +%if 0%{?suse_version} +sed -i 's/UNKNOWN/%{release}-%{?is_opensuse:open}SUSE-%{suse_version}/' version.inc +%endif +# this is not prusaslicer specific, space mouse users install it themselves +rm resources/udev/90-3dconnexion.rules +# adjust the qhull version requirement +sed -i "s|find_package(Qhull 7.2 REQUIRED)|find_package(Qhull 8.0.2 REQUIRED)|" src/CMakeLists.txt +# Disable slic3r_jobs_tests.cpp as the test fails sometimes +sed -i 's|slic3r_jobs_tests.cpp||' tests/slic3rutils/CMakeLists.txt + +%build +# The build process really acquires that much memory per job. We are +# limited by memory not by CPU cores. Using memoryperjob in _constraints cannot +# provide any workers on some architectures. This is still better than not using +# parallel building at all. +# https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.build_job_constraints.html +# https://en.opensuse.org/openSUSE:Specfile_guidelines#Parallel_make +%limit_build -m 3072 +export CC=gcc-%gcc_ver CXX=g++-%gcc_ver +%cmake \ + -DCMAKE_CXX_STANDARD=17 \ + -DSLIC3R_FHS=1 \ + -DSLIC3R_GTK=3 \ + -DOPENVDB_FIND_MODULE_PATH=%{_libdir}/cmake/OpenVDB +%cmake_build + +%install +%cmake_install + +#remove stray font file +rm -rf %{buildroot}%{_datadir}/%{name}/fonts/* +ln -s %{_datadir}/fonts/truetype/NotoSans-Regular.ttf %{buildroot}%{_datadir}/%{name}/fonts/NotoSans-Regular.ttf + +# Copied and adapted from Fedora package: +# https://src.fedoraproject.org/rpms/prusa-slicer +# Upstream installs the translation source files when they probably shouldn't +rm %{buildroot}%{_datadir}/%{name}/localization/{PrusaSlicer.pot,list.txt} +find %{buildroot}%{_datadir}/%{name}/localization/ -name \*.po -delete + +# Copied and adapted from Fedora package: +# https://src.fedoraproject.org/rpms/prusa-slicer +# Handle locale files. The find_lang macro doesn't work because it doesn't +# understand the directory structure. This copies part of the funtionality of +# find-lang.sh by: +# * Getting a listing of all files +# * removing the buildroot prefix +# * inserting the proper 'lang' tag +# * removing everything that doesn't have a lang tag +# * A list of lang-specific directories is also added +# The resulting file is included in the files list, where we must be careful to +# exclude that directory. +find %{buildroot}%{_datadir}/%{name}/localization -type f -o -type l | sed ' + s:'"%{buildroot}"':: + s:\(.*/%{name}/localization/\)\([^/_]\+\)\(.*\.mo$\):%%lang(\2) \1\2\3: + s:^\([^%].*\):: + s:%lang(C) :: + /^$/d +' > lang-files +find %{buildroot}%{_datadir}/%{name}/localization -type d | sed ' + s:'"%{buildroot}"':: + s:\(.*\):%dir \1: +' >> lang-files + +%fdupes %{buildroot}%{_datadir} + +%check +%ctest + +%files -f lang-files +%{_bindir}/prusa-slicer +%{_bindir}/prusa-gcodeviewer +%{_libdir}/OCCTWrapper.so +%dir %{_datadir}/%{name}/ +%{_datadir}/%{name}/{fonts,icons,models,profiles,shaders,udev,data,shapes,web}/ +%{_datadir}/icons/hicolor/*/apps/%{name}*.png +%{_datadir}/applications/PrusaSlicer.desktop +%{_datadir}/applications/PrusaGcodeviewer.desktop +%license LICENSE +%doc README.md doc/ + +%changelog diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..b3618eb --- /dev/null +++ b/_constraints @@ -0,0 +1,11 @@ + + + + + 20 + + + 16 + + + diff --git a/prusaslicer-2.8.1-boost-1.87.0-asio.patch b/prusaslicer-2.8.1-boost-1.87.0-asio.patch new file mode 100644 index 0000000..59e3975 --- /dev/null +++ b/prusaslicer-2.8.1-boost-1.87.0-asio.patch @@ -0,0 +1,370 @@ +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/libslic3r/GCodeSender.cpp PrusaSlicer-version_2.8.1-dwok/src/libslic3r/GCodeSender.cpp +--- PrusaSlicer-version_2.8.1-orig/src/libslic3r/GCodeSender.cpp 2024-12-21 11:52:03.612595066 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/libslic3r/GCodeSender.cpp 2024-12-21 12:34:03.859507724 +0100 +@@ -113,7 +113,7 @@ GCodeSender::connect(std::string devname + this->io.post(boost::bind(&GCodeSender::do_read, this)); + + // start reading in the background thread +- boost::thread t(boost::bind(&boost::asio::io_service::run, &this->io)); ++ boost::thread t(boost::bind(&boost::asio::io_context::run, &this->io)); + this->background_thread.swap(t); + + // always send a M105 to check for connection because firmware might be silent on connect +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/libslic3r/GCodeSender.hpp PrusaSlicer-version_2.8.1-dwok/src/libslic3r/GCodeSender.hpp +--- PrusaSlicer-version_2.8.1-orig/src/libslic3r/GCodeSender.hpp 2024-12-21 11:52:03.612595066 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/libslic3r/GCodeSender.hpp 2024-12-21 12:34:26.163427521 +0100 +@@ -40,7 +40,7 @@ class GCodeSender : private boost::nonco + void reset(); + + private: +- asio::io_service io; ++ asio::io_context io; + asio::serial_port serial; + boost::thread background_thread; + boost::asio::streambuf read_buffer, write_buffer; +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/slic3r/GUI/FirmwareDialog.cpp PrusaSlicer-version_2.8.1-dwok/src/slic3r/GUI/FirmwareDialog.cpp +--- PrusaSlicer-version_2.8.1-orig/src/slic3r/GUI/FirmwareDialog.cpp 2024-12-21 11:52:03.632594994 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/slic3r/GUI/FirmwareDialog.cpp 2024-12-21 12:33:40.507591681 +0100 +@@ -429,7 +429,7 @@ void FirmwareDialog::priv::avr109_wait_f + + void FirmwareDialog::priv::avr109_reboot(const SerialPortInfo &port) + { +- asio::io_service io; ++ asio::io_context io; + Serial serial(io, port.port, 1200); + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + } +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Bonjour.cpp PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Bonjour.cpp +--- PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Bonjour.cpp 2024-12-21 11:52:03.644594950 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Bonjour.cpp 2024-12-21 12:47:16.560667015 +0100 +@@ -624,11 +624,11 @@ UdpSession::UdpSession(Bonjour::ReplyFn + buffer.resize(DnsMessage::MAX_SIZE); + } + +-UdpSocket::UdpSocket( Bonjour::ReplyFn replyfn, const asio::ip::address& multicast_address, const asio::ip::address& interface_address, std::shared_ptr< boost::asio::io_service > io_service) ++UdpSocket::UdpSocket( Bonjour::ReplyFn replyfn, const asio::ip::address& multicast_address, const asio::ip::address& interface_address, std::shared_ptr< boost::asio::io_context > io_context) + : replyfn(replyfn) + , multicast_address(multicast_address) +- , socket(*io_service) +- , io_service(io_service) ++ , socket(*io_context) ++ , io_context(io_context) + { + try { + // open socket +@@ -658,11 +658,11 @@ UdpSocket::UdpSocket( Bonjour::ReplyFn r + } + + +-UdpSocket::UdpSocket( Bonjour::ReplyFn replyfn, const asio::ip::address& multicast_address, std::shared_ptr< boost::asio::io_service > io_service) ++UdpSocket::UdpSocket( Bonjour::ReplyFn replyfn, const asio::ip::address& multicast_address, std::shared_ptr< boost::asio::io_context > io_context) + : replyfn(replyfn) + , multicast_address(multicast_address) +- , socket(*io_service) +- , io_service(io_service) ++ , socket(*io_context) ++ , io_context(io_context) + { + try { + // open socket +@@ -714,7 +714,7 @@ void UdpSocket::receive_handler(SharedSe + // let io_service to handle the datagram on session + // from boost documentation io_service::post: + // The io_service guarantees that the handler will only be called in a thread in which the run(), run_one(), poll() or poll_one() member functions is currently being invoked. +- io_service->post(boost::bind(&UdpSession::handle_receive, session, error, bytes)); ++ boost::asio::post(*io_context, boost::bind(&UdpSession::handle_receive, session, error, bytes)); + // immediately accept new datagrams + async_receive(); + } +@@ -871,13 +871,13 @@ void Bonjour::priv::lookup_perform() + { + service_dn = (boost::format("_%1%._%2%.local") % service % protocol).str(); + +- std::shared_ptr< boost::asio::io_service > io_service(new boost::asio::io_service); ++ std::shared_ptr< boost::asio::io_context > io_context(new boost::asio::io_context); + + std::vector sockets; + + // resolve intefaces - from PR#6646 + std::vector interfaces; +- asio::ip::udp::resolver resolver(*io_service); ++ asio::ip::udp::resolver resolver(*io_context); + boost::system::error_code ec; + // ipv4 interfaces + auto results = resolver.resolve(udp::v4(), asio::ip::host_name(), "", ec); +@@ -890,12 +890,12 @@ void Bonjour::priv::lookup_perform() + // create ipv4 socket for each interface + // each will send to querry to for both ipv4 and ipv6 + for (const auto& intrfc : interfaces) +- sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP4, intrfc, io_service)); ++ sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP4, intrfc, io_context)); + } else { + BOOST_LOG_TRIVIAL(info) << "Failed to resolve ipv4 interfaces: " << ec.message(); + } + if (sockets.empty()) +- sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP4, io_service)); ++ sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP4, io_context)); + // ipv6 interfaces + interfaces.clear(); + //udp::resolver::query query(host, PORT, boost::asio::ip::resolver_query_base::numeric_service); +@@ -910,9 +910,9 @@ void Bonjour::priv::lookup_perform() + // create ipv6 socket for each interface + // each will send to querry to for both ipv4 and ipv6 + for (const auto& intrfc : interfaces) +- sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP6, intrfc, io_service)); ++ sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP6, intrfc, io_context)); + if (interfaces.empty()) +- sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP6, io_service)); ++ sockets.emplace_back(new LookupSocket(txt_keys, service, service_dn, protocol, replyfn, BonjourRequest::MCAST_IP6, io_context)); + } else { + BOOST_LOG_TRIVIAL(info)<< "Failed to resolve ipv6 interfaces: " << ec.message(); + } +@@ -923,13 +923,13 @@ void Bonjour::priv::lookup_perform() + socket->send(); + + // timer settings +- asio::deadline_timer timer(*io_service); ++ asio::deadline_timer timer(*io_context); + retries--; + std::function timer_handler = [&](const error_code& error) { + // end + if (retries == 0 || error) { + // is this correct ending? +- io_service->stop(); ++ io_context->stop(); + if (completefn) { + completefn(); + } +@@ -947,7 +947,7 @@ void Bonjour::priv::lookup_perform() + timer.expires_from_now(boost::posix_time::seconds(timeout)); + timer.async_wait(timer_handler); + // start io_service, it will run until it has something to do - so in this case until stop is called in timer +- io_service->run(); ++ io_context->run(); + } + catch (std::exception& e) { + BOOST_LOG_TRIVIAL(error) << e.what(); +@@ -966,12 +966,12 @@ void Bonjour::priv::resolve_perform() + rpls.push_back(reply); + }; + +- std::shared_ptr< boost::asio::io_service > io_service(new boost::asio::io_service); ++ std::shared_ptr< boost::asio::io_context > io_context(new boost::asio::io_context); + std::vector sockets; + + // resolve interfaces - from PR#6646 + std::vector interfaces; +- asio::ip::udp::resolver resolver(*io_service); ++ asio::ip::udp::resolver resolver(*io_context); + boost::system::error_code ec; + // ipv4 interfaces + auto results = resolver.resolve(udp::v4(), asio::ip::host_name(), "", ec); +@@ -984,12 +984,12 @@ void Bonjour::priv::resolve_perform() + // create ipv4 socket for each interface + // each will send to querry to for both ipv4 and ipv6 + for (const auto& intrfc : interfaces) +- sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP4, intrfc, io_service)); ++ sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP4, intrfc, io_context)); + } else { + BOOST_LOG_TRIVIAL(info) << "Failed to resolve ipv4 interfaces: " << ec.message(); + } + if (sockets.empty()) +- sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP4, io_service)); ++ sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP4, io_context)); + + // ipv6 interfaces + interfaces.clear(); +@@ -1003,9 +1003,9 @@ void Bonjour::priv::resolve_perform() + // create ipv6 socket for each interface + // each will send to querry to for both ipv4 and ipv6 + for (const auto& intrfc : interfaces) +- sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP6, intrfc, io_service)); ++ sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP6, intrfc, io_context)); + if (interfaces.empty()) +- sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP6, io_service)); ++ sockets.emplace_back(new ResolveSocket(hostname, reply_callback, BonjourRequest::MCAST_IP6, io_context)); + } else { + BOOST_LOG_TRIVIAL(info) << "Failed to resolve ipv6 interfaces: " << ec.message(); + } +@@ -1016,14 +1016,14 @@ void Bonjour::priv::resolve_perform() + socket->send(); + + // timer settings +- asio::deadline_timer timer(*io_service); ++ asio::deadline_timer timer(*io_context); + retries--; + std::function timer_handler = [&](const error_code& error) { + int replies_count = replies.size(); + // end + if (retries == 0 || error || replies_count > 0) { + // is this correct ending? +- io_service->stop(); ++ io_context->stop(); + if (replies_count > 0 && resolvefn) { + resolvefn(replies); + } +@@ -1041,7 +1041,7 @@ void Bonjour::priv::resolve_perform() + timer.expires_from_now(boost::posix_time::seconds(timeout)); + timer.async_wait(timer_handler); + // start io_service, it will run until it has something to do - so in this case until stop is called in timer +- io_service->run(); ++ io_context->run(); + } + catch (std::exception& e) { + BOOST_LOG_TRIVIAL(error) << e.what(); +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Bonjour.hpp PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Bonjour.hpp +--- PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Bonjour.hpp 2024-12-21 11:52:03.644594950 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Bonjour.hpp 2024-12-21 12:23:16.573836269 +0100 +@@ -155,11 +155,11 @@ public: + UdpSocket(Bonjour::ReplyFn replyfn + , const boost::asio::ip::address& multicast_address + , const boost::asio::ip::address& interface_address +- , std::shared_ptr< boost::asio::io_service > io_service); ++ , std::shared_ptr< boost::asio::io_context > io_context); + + UdpSocket(Bonjour::ReplyFn replyfn + , const boost::asio::ip::address& multicast_address +- , std::shared_ptr< boost::asio::io_service > io_service); ++ , std::shared_ptr< boost::asio::io_context > io_context); + + void send(); + void async_receive(); +@@ -172,7 +172,7 @@ protected: + boost::asio::ip::address multicast_address; + boost::asio::ip::udp::socket socket; + boost::asio::ip::udp::endpoint mcast_endpoint; +- std::shared_ptr< boost::asio::io_service > io_service; ++ std::shared_ptr< boost::asio::io_context > io_context; + std::vector requests; + }; + +@@ -186,8 +186,8 @@ public: + , Bonjour::ReplyFn replyfn + , const boost::asio::ip::address& multicast_address + , const boost::asio::ip::address& interface_address +- , std::shared_ptr< boost::asio::io_service > io_service) +- : UdpSocket(replyfn, multicast_address, interface_address, io_service) ++ , std::shared_ptr< boost::asio::io_context > io_context) ++ : UdpSocket(replyfn, multicast_address, interface_address, io_context) + , txt_keys(txt_keys) + , service(service) + , service_dn(service_dn) +@@ -203,8 +203,8 @@ public: + , std::string protocol + , Bonjour::ReplyFn replyfn + , const boost::asio::ip::address& multicast_address +- , std::shared_ptr< boost::asio::io_service > io_service) +- : UdpSocket(replyfn, multicast_address, io_service) ++ , std::shared_ptr< boost::asio::io_context > io_context) ++ : UdpSocket(replyfn, multicast_address, io_context) + , txt_keys(txt_keys) + , service(service) + , service_dn(service_dn) +@@ -241,8 +241,8 @@ public: + , Bonjour::ReplyFn replyfn + , const boost::asio::ip::address& multicast_address + , const boost::asio::ip::address& interface_address +- , std::shared_ptr< boost::asio::io_service > io_service) +- : UdpSocket(replyfn, multicast_address, interface_address, io_service) ++ , std::shared_ptr< boost::asio::io_context > io_context) ++ : UdpSocket(replyfn, multicast_address, interface_address, io_context) + , hostname(hostname) + + { +@@ -253,8 +253,8 @@ public: + ResolveSocket(const std::string& hostname + , Bonjour::ReplyFn replyfn + , const boost::asio::ip::address& multicast_address +- , std::shared_ptr< boost::asio::io_service > io_service) +- : UdpSocket(replyfn, multicast_address, io_service) ++ , std::shared_ptr< boost::asio::io_context > io_context) ++ : UdpSocket(replyfn, multicast_address, io_context) + , hostname(hostname) + + { +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Serial.cpp PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Serial.cpp +--- PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Serial.cpp 2024-12-21 11:52:03.644594950 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Serial.cpp 2024-12-21 11:59:40.018945840 +0100 +@@ -282,12 +282,12 @@ std::vector scan_serial_por + namespace asio = boost::asio; + using boost::system::error_code; + +-Serial::Serial(asio::io_service& io_service) : +- asio::serial_port(io_service) ++Serial::Serial(asio::io_context &io_context) : ++ asio::serial_port(io_context) + {} + +-Serial::Serial(asio::io_service& io_service, const std::string &name, unsigned baud_rate) : +- asio::serial_port(io_service, name) ++Serial::Serial(asio::io_context &io_context, const std::string &name, unsigned baud_rate) : ++ asio::serial_port(io_context, name) + { + set_baud_rate(baud_rate); + } +@@ -390,19 +390,19 @@ void Serial::reset_line_num() + + bool Serial::read_line(unsigned timeout, std::string &line, error_code &ec) + { +- auto& io_service = ++ auto& io_context = + #if BOOST_VERSION >= 107000 + //FIXME this is most certainly wrong! + (boost::asio::io_context&)this->get_executor().context(); + #else + this->get_io_service(); + #endif +- asio::deadline_timer timer(io_service); ++ asio::deadline_timer timer(io_context); + char c = 0; + bool fail = false; + + while (true) { +- io_service.reset(); ++ io_context.reset(); + + asio::async_read(*this, boost::asio::buffer(&c, 1), [&](const error_code &read_ec, size_t size) { + if (ec || size == 0) { +@@ -423,7 +423,7 @@ bool Serial::read_line(unsigned timeout, + }); + } + +- io_service.run(); ++ io_context.run(); + + if (fail) { + return false; +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Serial.hpp PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Serial.hpp +--- PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/Serial.hpp 2024-12-21 11:52:03.644594950 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/Serial.hpp 2024-12-21 11:55:33.283837413 +0100 +@@ -43,8 +43,8 @@ extern std::vector scan + class Serial : public boost::asio::serial_port + { + public: +- Serial(boost::asio::io_service &io_service); +- Serial(boost::asio::io_service &io_service, const std::string &name, unsigned baud_rate); ++ Serial(boost::asio::io_context &io_context); ++ Serial(boost::asio::io_context &io_context, const std::string &name, unsigned baud_rate); + Serial(const Serial &) = delete; + Serial &operator=(const Serial &) = delete; + ~Serial(); +diff '--color=auto' -urNp PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/TCPConsole.cpp PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/TCPConsole.cpp +--- PrusaSlicer-version_2.8.1-orig/src/slic3r/Utils/TCPConsole.cpp 2024-12-21 11:52:03.644594950 +0100 ++++ PrusaSlicer-version_2.8.1-dwok/src/slic3r/Utils/TCPConsole.cpp 2024-12-21 13:00:56.377754763 +0100 +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -161,7 +162,7 @@ bool TCPConsole::run_queue() + + auto endpoints = m_resolver.resolve(m_host_name, m_port_name); + +- m_socket.async_connect(endpoints->endpoint(), ++ boost::asio::async_connect(m_socket, endpoints, + boost::bind(&TCPConsole::handle_connect, this, boost::placeholders::_1) + ); + diff --git a/up-occt-version.patch b/up-occt-version.patch new file mode 100644 index 0000000..6204c7a --- /dev/null +++ b/up-occt-version.patch @@ -0,0 +1,28 @@ +Index: PrusaSlicer-version_2.8.1/src/occt_wrapper/CMakeLists.txt +=================================================================== +--- PrusaSlicer-version_2.8.1.orig/src/occt_wrapper/CMakeLists.txt 2024-09-18 15:39:04.000000000 +0200 ++++ PrusaSlicer-version_2.8.1/src/occt_wrapper/CMakeLists.txt 2024-12-08 10:38:01.245676008 +0100 +@@ -19,14 +19,10 @@ include(GenerateExportHeader) + + generate_export_header(OCCTWrapper) + +-find_package(OpenCASCADE 7.6.1 REQUIRED) ++find_package(OpenCASCADE REQUIRED) + + set(OCCT_LIBS +- TKXDESTEP +- TKSTEP +- TKSTEP209 +- TKSTEPAttr +- TKSTEPBase ++ TKDESTEP + TKXCAF + TKXSBase + TKVCAF +@@ -59,5 +55,5 @@ target_link_libraries(OCCTWrapper libsli + + include(GNUInstallDirs) + +-install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_BINDIR}") ++install(TARGETS OCCTWrapper DESTINATION "${CMAKE_INSTALL_LIBDIR}") +