superslicer-prerelease 2.7.61.0

This commit is contained in:
Dominic 2025-03-28 23:35:09 +01:00
parent 5355a535ef
commit 0a122b64d3
Signed by: msrd0
GPG key ID: AAF7C8430CA3345D
14 changed files with 429 additions and 263 deletions

View file

@ -1,54 +1,66 @@
pkgbase = superslicer-prerelease
pkgdesc = G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
pkgver = 2.5.60.0
pkgrel = 2
pkgver = 2.7.61.0
pkgrel = 1
epoch = 1
url = https://github.com/supermerill/SuperSlicer
arch = x86_64
license = AGPL3
makedepends = boost>=1.73.0
makedepends = boost
makedepends = cereal>=1.3.0
makedepends = cmake
makedepends = eigen
makedepends = libigl
makedepends = ninja
makedepends = openvdb
makedepends = samurai
depends = boost-libs>=1.73.0
depends = boost-libs
depends = cgal
depends = glew
depends = imath
depends = heatshrink
depends = libspnav
depends = nanosvg
depends = nlopt
depends = openvdb
depends = qhull>=2020.2-4
depends = slicer-udev
depends = wxwidgets-gtk3
optdepends = superslicer-profiles: Predefined printer profiles
provides = superslicer=1:2.5.60.0
provides = superslicer=1:2.7.61.0
conflicts = superslicer
conflicts = superslicer-git
options = !emptydirs
source = https://github.com/supermerill/SuperSlicer/archive/2.5.60.0.tar.gz
source = 0001-boost1.79.patch
source = 0002-fix-cereal.patch
source = https://github.com/supermerill/SuperSlicer/archive/2.7.61.0.tar.gz
source = https://github.com/prusa3d/libbgcode/archive/6f43cb004ef3d3bda37dde49f6235e24d2717629.tar.gz
source = prusaslicer-2.8.1-boost-1.87.0-asio.patch::https://bugs.gentoo.org/attachment.cgi?id=914594
source = prusaslicer-2.8.1-cgal-6.0.patch
source = 0001-libbgcode-binarize-public-deps.patch
source = 0001-findwxwidgets.patch
source = 0002-addlib-expat.patch
source = 0003-openexr3.patch
source = 0004-fix-opencascade-version-check.patch
source = 0005-fix-opencascade-libs.patch
source = 0006-fix-non-const-lvalue.patch
source = 0007-boost1.84.patch
source = 0008-boost1.85.patch
source = 0009-fix-multiple-choice.patch
source = 0010-occtwrapper-install-dir.patch
sha512sums = a53f4cc9b5a20f3f60d38553d47bfd19ce8bd739a8a16493bbcf64f75825fa760b8c107d7f927d49d967f7d067fac8c428c8f6e67219e74b0970d9ab7aa5b9e6
sha512sums = fc18e8edf516f9479c3b0e201d1c74b42289f15ef8a64ff3a88c2bb14613978a9dcf7be50ff8b79faf054c7721a095a70715b0fb0747be48757f9502ba0eb859
sha512sums = 58467732161eb0abe58cfb1e64e080f64f9f2221032b0d6176739fc81a61fe7838fa6479e9aac7fa0ee9805898f9293081c5e35a146df103830199b46354b97e
source = 0011-fix-constructible-svgfile.patch
source = 0012-boost1.87.patch
source = 0013-fix-missing-template-args.patch
sha512sums = 0d72bf61adcafe8eef2ed860449dc25ca295ba0732d956bff8c0ae50b381387b803fd88241ab855a9b38daf8f5eaa4c41d17241b8c15c66d63576874179aa1c0
sha512sums = 04cb7cb69d887e1fa5ced5c0219b0ee6cab81f09d1bc1226ebd26563e2ce60b85fb6e5aef11a36dffd3e00779849906fc5c19ad2cdd22d45360226912b6af31b
sha512sums = 3466fbbb00a4b9295c4c6a8fc5a983b5c5a78c7f091cd4502137301e10d0087abb50d5994ceba717a435693d8e4b6f5e4b084bd950b82ec91a33b1981d13226b
sha512sums = 188a5efa0128f848c6b3d882c2e472b3fbdd9db8c130735083b3410095197bc69dea855f4622d1011c8540cdfbfc25dc4a14e81fd28f2510067293ae5de15fce
sha512sums = ecbe9bdec72a372dfdc25b32dee382a9937c544567fa2da42a30467ddff2594495bf244a773401f655930301a2debc94636a362383239fa08808d0e51bc687a4
sha512sums = d910cf1fc07219b6c776240eae0f203813368e69b6a0215bcdcabba385531744093b6214b21d0dffbafa8992d3549c96bbdb02e939c52a4e81dbce98389397f9
sha512sums = 93a943eb9be52085a811d7cc8379dc5a3942befdc3d19eecf6310f8dfcfdef72bfa15dfcb85ac1f4f9d7731c973b9815a532ae444e3fe275f8f624825fe8e98b
sha512sums = 840e51b8feb3568ff46d309ece063f7188018fcaa43d19ec50ede408fdf2c237a3b7eaa11ba24409d8c3f7d6f5fb270181508cc56e0b2b0fef68b766130ef1eb
sha512sums = 4efb6dd48c8184f47b838228cf624a74429f35d133fb85316ddcde9d78bd462d64009ec9fe0b3f34232ddf4971f81ea03385ed661c771de9f0fd5bffcbe2a74c
sha512sums = 8512ace14c71b04eb98532e71592447475cf7feccf1c85f376487615c8a95f6afa645e4581f577ee26d91532c57f389eac7534a875d5a24e871f3ef593af33c9
sha512sums = a01abf748f82bc423f2c012ac430f78cfd5e56dede1d5999376e780267d0302d9a2a80c3eb15226c2f82102dda4c567c721ff99ab1fdeef504cbf9d9cb63ca53
sha512sums = aca3a028eaab63baf83dd80d82615394435c97b9b45c99764ca84995d246096e3e5c2b564ed29e194652c8e221a80cf6abdc165cb3009fd20af586b0432b2bc9
sha512sums = a92af974cb62901aab5a5c8c34672e9a7c90ea7246bbd7423421a9b7ee12a7b17073d90a6f36f994328c7dc9c2d0a6e4fd18c980a71863bc530d873ebaa80433
sha512sums = ca9f407d87d8dd0181077bc2da5a8e2f8995eed88a4787b73ee6c62ef6d2380fd1394fe5412cdc34276d4182bce6f272173e9ccb653d1e28978e16f379114002
sha512sums = 6d7ab93042a75f04e1c3c8f294d19dd39abaf22aa75caf996c6a0cf753f6472134a3d4fa443b73924800b2d3a710416a931745c168911c0df3709fb71ec00570
sha512sums = 92929ba1cb6ee104a10f34a649eba3789ca02f1725104a57412279ff68c46614b1812b13e7dcdf0d235618b9f2a868b4798b1404d9e712d9f1efd46e6c71fcb5
sha512sums = 6b677b68ebc7eda67d2f378c4d1cb5aca0a92fcecb04f685ae04aa4975655c36a606887526c4ff34b7e0b0ae2627eaf759fdeda896dffa0e0925132be36881ca
sha512sums = 559b52ed83f4032b00e2daaf22e2f86c66ce016bd4f1368f216cffed38fd5436ae12ddea427655d39c969e7de35cdcec06a0be317e58cf3d8ba1388a29664164
sha512sums = 2141359af03193ef8afe7e5cd38b03e8888dadabe58be8c9625e24572062167a10a3bf990728f16ab765cae776e834eaab88ff9c7e6a96f909a7c6ae807a1e82
pkgname = superslicer-prerelease

View file

@ -1,81 +0,0 @@
From 408e56f0390f20aaf793e0aa0c70c4d9544401d4 Mon Sep 17 00:00:00 2001
From: Vojtech Bubnik <bubnikv@gmail.com>
Date: Mon, 25 Apr 2022 08:33:48 +0200
Subject: [PATCH] Fix of Boost 1.79 deprecated boost::filesystem::ofstream
#8238 Replacing boost::filesystem::fstream with boost::nowide::fstream
variants with the unfortunate cost of string path conversion on Windows from
16 bits to UTF8 and back to 16 bits.
Unfortunately we cannot use std::filesystem yet as it is missing
on older MACs and because the interface is crooked minefield on Windows
see https://github.com/microsoft/STL/issues/909
---
src/hints/HintsToPot.cpp | 2 +-
src/libslic3r/Preset.cpp | 2 +-
src/slic3r/GUI/HintNotification.cpp | 8 +++++---
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/hints/HintsToPot.cpp b/src/hints/HintsToPot.cpp
index 7c8029cdeb..4791f0612f 100644
--- a/src/hints/HintsToPot.cpp
+++ b/src/hints/HintsToPot.cpp
@@ -9,7 +9,7 @@
bool write_to_pot(boost::filesystem::path path, const std::vector<std::pair<std::string, std::string>>& data)
{
- boost::filesystem::ofstream file(std::move(path), std::ios_base::app);
+ boost::nowide::ofstream file(path.string(), std::ios_base::app);
for (const auto& element : data)
{
//Example of .pot element
diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp
index f3a1c15b3e..f171cb14dd 100644
--- a/src/libslic3r/Preset.cpp
+++ b/src/libslic3r/Preset.cpp
@@ -84,7 +84,7 @@ ConfigFileType guess_config_file_type(const ptree &tree)
VendorProfile VendorProfile::from_ini(const boost::filesystem::path &path, bool load_all)
{
ptree tree;
- boost::filesystem::ifstream ifs(path);
+ boost::nowide::ifstream ifs(path.string());
boost::property_tree::read_ini(ifs, tree);
return VendorProfile::from_ini(tree, path, load_all);
}
diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp
index 93e0fb3259..820b74eedb 100644
--- a/src/slic3r/GUI/HintNotification.cpp
+++ b/src/slic3r/GUI/HintNotification.cpp
@@ -14,12 +14,14 @@
#include "libslic3r/Config.hpp"
#include "libslic3r/PrintConfig.hpp"
+#include <map>
+
#include <boost/algorithm/string/replace.hpp>
#include <boost/filesystem.hpp>
#include <boost/nowide/fstream.hpp>
#include <boost/log/trivial.hpp>
#include <boost/property_tree/ini_parser.hpp>
-#include <map>
+
#include <cereal/archives/binary.hpp>
#include <cereal/types/string.hpp>
#include <cereal/types/vector.hpp>
@@ -65,7 +67,7 @@ inline void push_style_color(ImGuiCol idx, const ImVec4& col, bool fading_out, f
void write_used_binary(const std::vector<std::string>& ids)
{
- boost::filesystem::ofstream file((boost::filesystem::path(data_dir()) / "cache" / "hints.cereal"), std::ios::binary);
+ boost::nowide::ofstream file((boost::filesystem::path(data_dir()) / "cache" / "hints.cereal").string(), std::ios::binary);
cereal::BinaryOutputArchive archive(file);
HintsCerealData cd { ids };
try
@@ -84,7 +86,7 @@ void read_used_binary(std::vector<std::string>& ids)
BOOST_LOG_TRIVIAL(warning) << "Failed to load to hints.cereal. File does not exists. " << path.string();
return;
}
- boost::filesystem::ifstream file(path);
+ boost::nowide::ifstream file(path.string());
cereal::BinaryInputArchive archive(file);
HintsCerealData cd;
try

34
0001-findwxwidgets.patch Normal file
View file

@ -0,0 +1,34 @@
diff --git a/cmake/modules/FindwxWidgets.cmake b/cmake/modules/FindwxWidgets.cmake
index e1f93a6a26..88c5f2487d 100644
--- a/cmake/modules/FindwxWidgets.cmake
+++ b/cmake/modules/FindwxWidgets.cmake
@@ -183,12 +183,12 @@ This module defines the following :prop_tgt:`IMPORTED` targets:
# Helper macro to control the debugging output globally. There are
# two versions for controlling how verbose your output should be.
macro(DBG_MSG _MSG)
-# message(STATUS
-# "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
+ message(STATUS
+ "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
endmacro()
macro(DBG_MSG_V _MSG)
-# message(STATUS
-# "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
+ message(STATUS
+ "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
endmacro()
# Clear return values in case the module is loaded more than once.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aee1aaf100..e6db66b00d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -57,7 +57,7 @@ if (SLIC3R_GUI)
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
set (wxWidgets_CONFIG_OPTIONS "--toolkit=gtk${SLIC3R_GTK}")
endif ()
- find_package(wxWidgets 3.2 MODULE REQUIRED COMPONENTS base core adv html gl stc scintilla)
+ find_package(wxWidgets 3.2 MODULE REQUIRED COMPONENTS base core adv html gl stc)
include(${wxWidgets_USE_FILE})

View file

@ -0,0 +1,13 @@
diff --git a/src/LibBGCode/binarize/CMakeLists.txt b/src/LibBGCode/binarize/CMakeLists.txt
index 71bf85c..af0f9b5 100644
--- a/src/LibBGCode/binarize/CMakeLists.txt
+++ b/src/LibBGCode/binarize/CMakeLists.txt
@@ -36,7 +36,7 @@ target_include_directories(${_libname}_binarize
$<INSTALL_INTERFACE:include>
)
-target_link_libraries(${_libname}_binarize PRIVATE heatshrink::heatshrink_dynalloc ZLIB::ZLIB)
+target_link_libraries(${_libname}_binarize PUBLIC heatshrink::heatshrink_dynalloc ZLIB::ZLIB)
target_link_libraries(${_libname}_binarize PUBLIC ${_libname}_core)
set(Binarize_DOWNSTREAM_DEPS ${Binarize_DOWNSTREAM_DEPS} PARENT_SCOPE)

13
0002-addlib-expat.patch Normal file
View file

@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 34fe44a2ef..c0792f5476 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -485,8 +485,6 @@ include_directories(BEFORE SYSTEM ${EIGEN3_INCLUDE_DIR})
# no matter what.
find_package(EXPAT REQUIRED)
-add_library(libexpat INTERFACE)
-
if (TARGET EXPAT::EXPAT )
target_link_libraries(libexpat INTERFACE EXPAT::EXPAT)
elseif(TARGET expat::expat)

View file

@ -1,71 +0,0 @@
diff --git a/cmake/modules/Findcereal.cmake b/cmake/modules/Findcereal.cmake
deleted file mode 100644
index b4829757e..000000000
--- a/cmake/modules/Findcereal.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-set(_q "")
-if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
- set(_q QUIET)
- set(_quietly TRUE)
-endif()
-find_package(${CMAKE_FIND_PACKAGE_NAME} ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} CONFIG ${_q})
-
-if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FOUND)
- # Fall-back solution to find the Cereal serialization library header file
- include(CheckIncludeFileCXX)
- add_library(cereal INTERFACE)
- target_include_directories(cereal INTERFACE include)
-
- if (_quietly)
- set(CMAKE_REQUIRED_QUIET ON)
- endif()
- CHECK_INCLUDE_FILE_CXX("cereal/cereal.hpp" HAVE_CEREAL_H)
-
- if (NOT HAVE_CEREAL_H)
- if (${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
- message(FATAL_ERROR "Cereal library not found. Please install the dependency.")
- elseif(NOT _quietly)
- message(WARNING "Cereal library not found.")
- endif()
- endif ()
-endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 01ef37905..98dbafa01 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -139,8 +139,8 @@ if (NOT WIN32)
set_target_properties(Slic3r PROPERTIES OUTPUT_NAME "${SLIC3R_APP_CMD}")
endif ()
-target_link_libraries(Slic3r libslic3r cereal)
+target_link_libraries(Slic3r libslic3r)
if (APPLE)
# add_compile_options(-stdlib=libc++)
# add_definitions(-DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE)
diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt
index 7048fb60c..95c5ed9e2 100644
--- a/src/libslic3r/CMakeLists.txt
+++ b/src/libslic3r/CMakeLists.txt
@@ -356,7 +356,6 @@ target_include_directories(libslic3r PUBLIC ${EXPAT_INCLUDE_DIRS})
target_link_libraries(libslic3r
libnest2d
admesh
- cereal
libigl
miniz
boost_libs
diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt
index fe3d15425..24be67592 100644
--- a/src/slic3r/CMakeLists.txt
+++ b/src/slic3r/CMakeLists.txt
@@ -291,7 +291,7 @@ target_compile_definitions(libslic3r_gui PRIVATE $<$<BOOL:${SLIC3R_ALPHA}>:SLIC3
encoding_check(libslic3r_gui)
-target_link_libraries(libslic3r_gui libslic3r avrdude cereal imgui GLEW::GLEW OpenGL::GL hidapi exif angelscript libcurl ${wxWidgets_LIBRARIES})
+target_link_libraries(libslic3r_gui libslic3r avrdude imgui GLEW::GLEW OpenGL::GL hidapi exif angelscript libcurl ${wxWidgets_LIBRARIES})
if (MSVC)
target_link_libraries(libslic3r_gui Setupapi.lib)

View file

@ -1,7 +1,7 @@
https://github.com/supermerill/SuperSlicer/issues/3912#issuecomment-1675135988
--- src/occt_wrapper/CMakeLists.txt.bak 2024-11-20 13:23:45.624527309 +0100
+++ src/occt_wrapper/CMakeLists.txt 2024-11-20 13:23:56.347478724 +0100
--- a/src/occt_wrapper/CMakeLists.txt 2024-11-20 13:23:45.624527309 +0100
+++ b/src/occt_wrapper/CMakeLists.txt 2024-11-20 13:23:56.347478724 +0100
@@ -19,7 +19,12 @@
generate_export_header(OCCTWrapper)

View file

@ -1,19 +0,0 @@
diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp
index 31fdc35de5..6e5e48e0f7 100644
--- a/src/libslic3r/MeshBoolean.cpp
+++ b/src/libslic3r/MeshBoolean.cpp
@@ -147,12 +147,12 @@ template<class _Mesh> TriangleMesh cgal_to_triangle_mesh(const _Mesh &cgalmesh)
const auto &vertices = cgalmesh.vertices();
int vsize = int(vertices.size());
- for (auto &vi : vertices) {
+ for (const auto &vi : vertices) {
auto &v = cgalmesh.point(vi); // Don't ask...
its.vertices.emplace_back(to_vec3f(v));
}
- for (auto &face : faces) {
+ for (const auto &face : faces) {
auto vtc = cgalmesh.vertices_around_face(cgalmesh.halfedge(face));
int i = 0;

View file

@ -1,34 +0,0 @@
diff --git a/src/slic3r/GUI/ScriptExecutor.cpp b/src/slic3r/GUI/ScriptExecutor.cpp
index 3e10680e46..3dcbf9643f 100644
--- a/src/slic3r/GUI/ScriptExecutor.cpp
+++ b/src/slic3r/GUI/ScriptExecutor.cpp
@@ -827,6 +827,20 @@ void as_back_custom_initial_value(int preset_type, std::string& key) {
/////// main script fucntions //////
+// stolen from https://www.boost.org/doc/libs/1_79_0/boost/filesystem/string_file.hpp
+static inline void load_string_file(boost::filesystem::path const& p, std::string& str)
+{
+ boost::filesystem::ifstream file;
+ file.exceptions(std::ios_base::failbit | std::ios_base::badbit);
+ file.open(p, std::ios_base::binary);
+ const boost::uintmax_t sz = boost::filesystem::file_size(p);
+ if (BOOST_UNLIKELY(sz > static_cast< boost::uintmax_t >((std::numeric_limits< std::streamsize >::max)())))
+ BOOST_FILESYSTEM_THROW(std::length_error("File size exceeds max read size"));
+ str.resize(static_cast< std::size_t >(sz), '\0');
+ if (sz > 0u)
+ file.read(&str[0], static_cast< std::streamsize >(sz));
+}
+
//TODO: add "unset" function, that revert to last value (befoer a scripted set) if a set has been made since last not-scripted change.
void ScriptContainer::init(const std::string& tab_key, Tab* tab)
{
@@ -960,7 +974,7 @@ void ScriptContainer::init(const std::string& tab_key, Tab* tab)
//res = builder.AddSectionFromFile(ui_script_file.string().c_str()); //seems to be problematic on cyrillic locale
{
std::string all_file;
- boost::filesystem::load_string_file(ui_script_file, all_file);
+ load_string_file(ui_script_file, all_file);
res = builder.AddSectionFromMemory(ui_script_file.string().c_str(), all_file.c_str(), (unsigned int)(all_file.length()), 0);
}
if (res < 0) throw CompileErrorException("Error, can't build the script for tab " + tab_key);

View file

@ -0,0 +1,17 @@
diff --git a/src/libslic3r/EmbossShape.hpp b/src/libslic3r/EmbossShape.hpp
index 3e4a950037..22e5d3aee1 100644
--- a/src/libslic3r/EmbossShape.hpp
+++ b/src/libslic3r/EmbossShape.hpp
@@ -101,6 +101,12 @@ struct EmbossShape
// Loaded string data from file
std::shared_ptr<std::string> file_data = nullptr;
+ SvgFile() {}
+
+ SvgFile(const std::string &path) : path(path) {}
+
+ SvgFile(const std::string &path, const std::string &path_in_3mf) : path(path), path_in_3mf(path_in_3mf) {}
+
template<class Archive> void save(Archive &ar) const {
// Note: image is only cache it is not neccessary to store

15
0012-boost1.87.patch Normal file
View file

@ -0,0 +1,15 @@
This patch is an addition to https://bugs.gentoo.org/attachment.cgi?id=914594
diff --git a/src/slic3r/GUI/FreeCADDialog.cpp b/src/slic3r/GUI/FreeCADDialog.cpp
index 822bc4e2d9..dfbb037ed0 100644
--- a/src/slic3r/GUI/FreeCADDialog.cpp
+++ b/src/slic3r/GUI/FreeCADDialog.cpp
@@ -64,7 +64,7 @@ namespace GUI {
class ExecVar {
public:
boost::process::opstream pyin;
- boost::asio::io_service ios;
+ boost::asio::io_context ios;
std::future<std::string> data_out;
std::future<std::string> data_err;
std::unique_ptr<boost::process::child> process;

View file

@ -0,0 +1,13 @@
diff --git a/src/libslic3r/Arrange/Core/DataStoreTraits.hpp b/src/libslic3r/Arrange/Core/DataStoreTraits.hpp
index ba932d57a8..624569d3f4 100644
--- a/src/libslic3r/Arrange/Core/DataStoreTraits.hpp
+++ b/src/libslic3r/Arrange/Core/DataStoreTraits.hpp
@@ -71,7 +71,7 @@ template<class T, class TT = T> using WritableDataStoreOnly = std::enable_if_t<I
template<class T, class ArrItem>
void set_data(ArrItem &itm, const std::string &key, T &&data)
{
- WritableDataStoreTraits<ArrItem>::template set(itm, key, std::forward<T>(data));
+ WritableDataStoreTraits<ArrItem>::template set<T>(itm, key, std::forward<T>(data));
}
template<class T> constexpr bool IsReadWritableDataStore = IsDataStore<T> && IsWritableDataStore<T>;

142
PKGBUILD
View file

@ -3,74 +3,140 @@
# Maintainer: Lukas1818 aur at lukas1818 dot de
pkgname=superslicer-prerelease
pkgver=2.5.60.0
pkgver=2.7.61.0
_pkgtag=$pkgver
pkgrel=2
# https://github.com/supermerill/SuperSlicer/blob/2.7.61.0/deps/%2BLibBGCode/LibBGCode.cmake
_libbgcode=6f43cb004ef3d3bda37dde49f6235e24d2717629
pkgrel=1
epoch=1
pkgdesc="G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)"
arch=("$CARCH")
url="https://github.com/supermerill/SuperSlicer"
license=('AGPL3')
options=(!emptydirs)
depends=('boost-libs>=1.73.0' 'cgal' 'glew' 'imath' 'libspnav' 'nlopt' 'openvdb' 'qhull>=2020.2-4' 'slicer-udev' 'wxwidgets-gtk3')
makedepends=('boost>=1.73.0' 'cereal>=1.3.0' 'cmake' 'eigen' 'libigl' 'openvdb' 'samurai')
depends=(
'boost-libs'
'cgal'
'glew'
'imath'
'heatshrink'
'libspnav'
'nanosvg'
'nlopt'
'openvdb'
'qhull>=2020.2-4'
'slicer-udev'
'wxwidgets-gtk3'
)
makedepends=(
'boost'
'cereal>=1.3.0'
'cmake'
'eigen'
'libigl'
'ninja'
'openvdb'
)
optdepends=('superslicer-profiles: Predefined printer profiles')
provides=("superslicer=$epoch:$pkgver")
conflicts=('superslicer' 'superslicer-git')
source=("https://github.com/supermerill/SuperSlicer/archive/$_pkgtag.tar.gz"
"0001-boost1.79.patch"
"0002-fix-cereal.patch"
"https://github.com/prusa3d/libbgcode/archive/$_libbgcode.tar.gz"
"prusaslicer-2.8.1-boost-1.87.0-asio.patch::https://bugs.gentoo.org/attachment.cgi?id=914594"
"prusaslicer-2.8.1-cgal-6.0.patch"
"0001-libbgcode-binarize-public-deps.patch"
"0001-findwxwidgets.patch"
"0002-addlib-expat.patch"
"0003-openexr3.patch"
"0004-fix-opencascade-version-check.patch"
"0005-fix-opencascade-libs.patch"
"0006-fix-non-const-lvalue.patch"
"0007-boost1.84.patch"
"0008-boost1.85.patch"
"0009-fix-multiple-choice.patch"
"0010-occtwrapper-install-dir.patch")
sha512sums=('a53f4cc9b5a20f3f60d38553d47bfd19ce8bd739a8a16493bbcf64f75825fa760b8c107d7f927d49d967f7d067fac8c428c8f6e67219e74b0970d9ab7aa5b9e6'
'fc18e8edf516f9479c3b0e201d1c74b42289f15ef8a64ff3a88c2bb14613978a9dcf7be50ff8b79faf054c7721a095a70715b0fb0747be48757f9502ba0eb859'
'58467732161eb0abe58cfb1e64e080f64f9f2221032b0d6176739fc81a61fe7838fa6479e9aac7fa0ee9805898f9293081c5e35a146df103830199b46354b97e'
"0010-occtwrapper-install-dir.patch"
"0011-fix-constructible-svgfile.patch"
"0012-boost1.87.patch"
"0013-fix-missing-template-args.patch")
sha512sums=('0d72bf61adcafe8eef2ed860449dc25ca295ba0732d956bff8c0ae50b381387b803fd88241ab855a9b38daf8f5eaa4c41d17241b8c15c66d63576874179aa1c0'
'04cb7cb69d887e1fa5ced5c0219b0ee6cab81f09d1bc1226ebd26563e2ce60b85fb6e5aef11a36dffd3e00779849906fc5c19ad2cdd22d45360226912b6af31b'
'3466fbbb00a4b9295c4c6a8fc5a983b5c5a78c7f091cd4502137301e10d0087abb50d5994ceba717a435693d8e4b6f5e4b084bd950b82ec91a33b1981d13226b'
'188a5efa0128f848c6b3d882c2e472b3fbdd9db8c130735083b3410095197bc69dea855f4622d1011c8540cdfbfc25dc4a14e81fd28f2510067293ae5de15fce'
'ecbe9bdec72a372dfdc25b32dee382a9937c544567fa2da42a30467ddff2594495bf244a773401f655930301a2debc94636a362383239fa08808d0e51bc687a4'
'd910cf1fc07219b6c776240eae0f203813368e69b6a0215bcdcabba385531744093b6214b21d0dffbafa8992d3549c96bbdb02e939c52a4e81dbce98389397f9'
'93a943eb9be52085a811d7cc8379dc5a3942befdc3d19eecf6310f8dfcfdef72bfa15dfcb85ac1f4f9d7731c973b9815a532ae444e3fe275f8f624825fe8e98b'
'840e51b8feb3568ff46d309ece063f7188018fcaa43d19ec50ede408fdf2c237a3b7eaa11ba24409d8c3f7d6f5fb270181508cc56e0b2b0fef68b766130ef1eb'
'4efb6dd48c8184f47b838228cf624a74429f35d133fb85316ddcde9d78bd462d64009ec9fe0b3f34232ddf4971f81ea03385ed661c771de9f0fd5bffcbe2a74c'
'8512ace14c71b04eb98532e71592447475cf7feccf1c85f376487615c8a95f6afa645e4581f577ee26d91532c57f389eac7534a875d5a24e871f3ef593af33c9'
'a01abf748f82bc423f2c012ac430f78cfd5e56dede1d5999376e780267d0302d9a2a80c3eb15226c2f82102dda4c567c721ff99ab1fdeef504cbf9d9cb63ca53'
'aca3a028eaab63baf83dd80d82615394435c97b9b45c99764ca84995d246096e3e5c2b564ed29e194652c8e221a80cf6abdc165cb3009fd20af586b0432b2bc9'
'a92af974cb62901aab5a5c8c34672e9a7c90ea7246bbd7423421a9b7ee12a7b17073d90a6f36f994328c7dc9c2d0a6e4fd18c980a71863bc530d873ebaa80433'
'ca9f407d87d8dd0181077bc2da5a8e2f8995eed88a4787b73ee6c62ef6d2380fd1394fe5412cdc34276d4182bce6f272173e9ccb653d1e28978e16f379114002'
'6d7ab93042a75f04e1c3c8f294d19dd39abaf22aa75caf996c6a0cf753f6472134a3d4fa443b73924800b2d3a710416a931745c168911c0df3709fb71ec00570'
'92929ba1cb6ee104a10f34a649eba3789ca02f1725104a57412279ff68c46614b1812b13e7dcdf0d235618b9f2a868b4798b1404d9e712d9f1efd46e6c71fcb5')
'92929ba1cb6ee104a10f34a649eba3789ca02f1725104a57412279ff68c46614b1812b13e7dcdf0d235618b9f2a868b4798b1404d9e712d9f1efd46e6c71fcb5'
'6b677b68ebc7eda67d2f378c4d1cb5aca0a92fcecb04f685ae04aa4975655c36a606887526c4ff34b7e0b0ae2627eaf759fdeda896dffa0e0925132be36881ca'
'559b52ed83f4032b00e2daaf22e2f86c66ce016bd4f1368f216cffed38fd5436ae12ddea427655d39c969e7de35cdcec06a0be317e58cf3d8ba1388a29664164'
'2141359af03193ef8afe7e5cd38b03e8888dadabe58be8c9625e24572062167a10a3bf990728f16ab765cae776e834eaab88ff9c7e6a96f909a7c6ae807a1e82')
_apply_patches() {
for patch in "${@}"
do
msg2 "Applying patch $patch"
patch -Np1 -i "$patch"
done
}
prepare() {
cd "$srcdir/libbgcode-$_libbgcode"
rm -rf build
mkdir -p build
_apply_patches \
"$srcdir/0001-libbgcode-binarize-public-deps.patch"
prepare()
{
cd "$srcdir/SuperSlicer-$_pkgtag"
[ ! -f build/Makefile ] || rm -rf build
rm -rf build # build does fail everytime if it is not clean build ?
rm -rf build # build fails everytime if it isn't a clean build?!?
mkdir -p build
# disabling tests is not enough, we need to remove them explicitly
sed -i 's,add_subdirectory(test),,g' src/CMakeLists.txt
# apply patches
patch -Np1 -i "$srcdir/0001-boost1.79.patch"
patch -Np1 -i "$srcdir/0002-fix-cereal.patch"
patch -Np1 -i "$srcdir/0003-openexr3.patch"
patch -Np0 -i "$srcdir/0004-fix-opencascade-version-check.patch"
patch -Np1 -i "$srcdir/0005-fix-opencascade-libs.patch"
patch -Np1 -i "$srcdir/0006-fix-non-const-lvalue.patch"
patch -Np1 -i "$srcdir/0007-boost1.84.patch"
patch -Np1 -i "$srcdir/0008-boost1.85.patch"
patch -Np1 -i "$srcdir/0009-fix-multiple-choice.patch"
patch -Np1 -i "$srcdir/0010-occtwrapper-install-dir.patch"
# apply patches for superslicer
_apply_patches \
"$srcdir/prusaslicer-2.8.1-boost-1.87.0-asio.patch" \
"$srcdir/prusaslicer-2.8.1-cgal-6.0.patch" \
"$srcdir/0001-findwxwidgets.patch" \
"$srcdir/0002-addlib-expat.patch" \
"$srcdir/0003-openexr3.patch" \
"$srcdir/0004-fix-opencascade-version-check.patch" \
"$srcdir/0005-fix-opencascade-libs.patch" \
"$srcdir/0008-boost1.85.patch" \
"$srcdir/0009-fix-multiple-choice.patch" \
"$srcdir/0010-occtwrapper-install-dir.patch" \
"$srcdir/0011-fix-constructible-svgfile.patch" \
"$srcdir/0012-boost1.87.patch" \
"$srcdir/0013-fix-missing-template-args.patch"
}
build()
{
cd "$srcdir/SuperSlicer-$_pkgtag"
build() {
msg2 "Building libbgcode"
cd "$srcdir/libbgcode-$_libbgcode"
cd build
cmake .. \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX= \
-DLibBGCode_BUILD_CMD_TOOL=OFF \
-DLibBGCode_BUILD_TESTS=OFF \
-Wno-dev
ninja
mkdir destdir
DESTDIR=destdir ninja install
export "CMAKE_PREFIX_PATH=$PWD/destdir:$CMAKE_PREFIX_PATH"
msg2 "Building SuperSlicer"
cd "$srcdir/SuperSlicer-$_pkgtag"
cd build
cmake .. -DCMAKE_MESSAGE_LOG_LEVEL=DEBUG \
-G Ninja \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DOpenGL_GL_PREFERENCE=GLVND \
-DSLIC3R_FHS=ON \
@ -80,12 +146,10 @@ build()
-DSLIC3R_BUILD_TESTS=OFF \
-DSLIC3R_ALPHA=ON \
-Wno-dev
samu
ninja
}
package()
{
package() {
cd "$srcdir/SuperSlicer-$_pkgtag/build"
DESTDIR="$pkgdir" samu install

View file

@ -0,0 +1,190 @@
From a9283c62cec2b802aa2133c92b7ff5bf320c0bb6 Mon Sep 17 00:00:00 2001
From: Laurent Rineau <laurent.rineau@cgal.org>
Date: Sat, 13 Jul 2024 01:19:21 +0200
Subject: [PATCH] compatibility with CGAL-6.0 (and 5.6.x)
updated for 2.8.1
updated for SuperSlicer
--- a/src/libslic3r/CutSurface.cpp
+++ b/src/libslic3r/CutSurface.cpp
@@ -4,6 +4,14 @@
///|/
#include "CutSurface.hpp"
+template <typename T>
+auto access_pmap(std::optional<T> opt) -> T {
+ return opt.value();
+}
+
+template <typename Pair>
+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,4 +39,5 @@ using namespace Slic3r;
#include <CGAL/Exact_integer.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/Cartesian_converter.h>
+#include <CGAL/AABB_traits.h>
#include <tbb/parallel_for.h>
@@ -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<EI, IntersectingElement>(edge_shape_map_name).first;
- FaceShapeMap face_shape_map = result.add_property_map<FI, IntersectingElement>(face_shape_map_name).first;
+ EdgeShapeMap edge_shape_map = access_pmap((result.add_property_map<EI, IntersectingElement>(edge_shape_map_name)));
+ FaceShapeMap face_shape_map = access_pmap((result.add_property_map<FI, IntersectingElement>(face_shape_map_name)));
std::vector<VI> 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<VI, const IntersectingElement*>(vert_shape_map_name, nullptr).first;
+ VertexShapeMap vert_shape_map = access_pmap((cgal_model.add_property_map<VI, const IntersectingElement*>(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<EI, IntersectingElement>(edge_shape_map_name).first;
- const FaceShapeMap& face_shape_map = cgal_shape.property_map<FI, IntersectingElement>(face_shape_map_name).first;
+ const EdgeShapeMap& edge_shape_map = access_pmap((cgal_shape.property_map<EI, IntersectingElement>(edge_shape_map_name)));
+ const FaceShapeMap& face_shape_map = access_pmap((cgal_shape.property_map<FI, IntersectingElement>(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<EI, bool>(is_constrained_edge_name, false).first;
+ EdgeBoolMap ecm = access_pmap((cgal_model.add_property_map<EI, bool>(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<FI, FaceType>(face_type_map_name, FaceType::not_constrained).first;
+ FaceTypeMap face_type_map = access_pmap((cgal_model.add_property_map<FI, FaceType>(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<FI> &process,
void priv::create_reduce_map(ReductionMap &reduction_map, const CutMesh &mesh)
{
- const VertexShapeMap &vert_shape_map = mesh.property_map<VI, const IntersectingElement*>(vert_shape_map_name).first;
- const EdgeBoolMap &ecm = mesh.property_map<EI, bool>(is_constrained_edge_name).first;
+ const VertexShapeMap &vert_shape_map = access_pmap((mesh.property_map<VI, const IntersectingElement*>(vert_shape_map_name)));
+ const EdgeBoolMap &ecm = access_pmap((mesh.property_map<EI, bool>(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<VI, const IntersectingElement *>(vert_shape_map_name).first;
+ access_pmap((models[patch.model_id].property_map<VI, const IntersectingElement *>(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<VI, VI>(patch_source_name).first;
+ const CvtVI2VI& cvt = access_pmap((patch.mesh.property_map<VI, VI>(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<FI> &fis,
/* const */ CutMesh &mesh,
const ReductionMap *rmap)
{
- auto is_counted = mesh.add_property_map<VI, bool>("v:is_counted").first;
+ auto is_counted = access_pmap((mesh.add_property_map<VI, bool>("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<FI> &fis,
cm.reserve(count_vertices, count_edges, count_faces);
// vertex conversion function from mesh VI to result VI
- CvtVI2VI mesh2result = mesh.add_property_map<VI,VI>("v:mesh2result").first;
+ CvtVI2VI mesh2result = access_pmap((mesh.add_property_map<VI,VI>("v:mesh2result")));
if (rmap == nullptr) {
for (FI fi : fis) {
@@ -2748,7 +2757,7 @@ priv::SurfacePatch priv::create_surface_patch(const std::vector<FI> &fis,
assert(count_edges >= cm.edges().size());
// convert VI from this patch to source VI, when exist
- CvtVI2VI cvt = cm.add_property_map<VI, VI>(patch_source_name).first;
+ CvtVI2VI cvt = access_pmap((cm.add_property_map<VI, VI>(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<VI, const IntersectingElement *>(vert_shape_map_name).first;
+ const VertexShapeMap &vert_shape_map = access_pmap((model.property_map<VI, const IntersectingElement *>(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<FI>& fis,
patch_new.model_id = patch.model_id;
patch_new.shape_id = patch.shape_id;
// fix cvt
- CvtVI2VI cvt = patch_new.mesh.property_map<VI, VI>(patch_source_name).first;
+ CvtVI2VI cvt = access_pmap((patch_new.mesh.property_map<VI, VI>(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<FI,bool> is_processed = cm.add_property_map<FI, bool>(patch_number_name, false).first;
+ CutMesh::Property_map<FI,bool> is_processed = access_pmap((cm.add_property_map<FI, bool>(patch_number_name, false)));
- const CvtVI2VI& cvt_from = patch.mesh.property_map<VI, VI>(patch_source_name).first;
+ const CvtVI2VI& cvt_from = access_pmap((patch.mesh.property_map<VI, VI>(patch_source_name)));
std::vector<FI> 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<VI, VI>(vertex_reduction_map_name).first;
+ ReductionMap vertex_reduction_map = access_pmap((cut_model_.add_property_map<VI, VI>(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<VI, const IntersectingElement*>(vert_shape_map_name).first;
+ const VertexShapeMap &vert_shape_map = access_pmap((mesh.property_map<VI, const IntersectingElement*>(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<CutMesh &>(mesh);
- auto face_colors = mesh_.add_property_map<priv::FI, CGAL::Color>("f:color").first;
+ auto face_colors = access_pmap((mesh_.add_property_map<priv::FI, CGAL::Color>("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<CutMesh &>(mesh);
- auto vertex_colors = mesh_.add_property_map<priv::VI, CGAL::Color>("v:color").first;
+ auto vertex_colors = access_pmap((mesh_.add_property_map<priv::VI, CGAL::Color>("v:color")));
// initialize to gray color
for (VI vi: mesh.vertices())
vertex_colors[vi] = CGAL::Color{127, 127, 127};