From 980771880d6e80f6929bca922cb44db693e3d096 Mon Sep 17 00:00:00 2001 From: Dominic Date: Tue, 25 Mar 2025 09:23:22 +0100 Subject: [PATCH] dirty commit: start updating to 2.7 --- 0001-boost1.79.patch | 81 ----------------- 0002-fix-cereal.patch | 71 --------------- 0004-fix-opencascade-version-check.patch | 4 +- 0006-fix-non-const-lvalue.patch | 19 ---- 0007-boost1.84.patch | 34 ------- PKGBUILD | 111 +++++++++++++++-------- 6 files changed, 76 insertions(+), 244 deletions(-) delete mode 100644 0001-boost1.79.patch delete mode 100644 0002-fix-cereal.patch delete mode 100644 0006-fix-non-const-lvalue.patch delete mode 100644 0007-boost1.84.patch diff --git a/0001-boost1.79.patch b/0001-boost1.79.patch deleted file mode 100644 index f3ad855..0000000 --- a/0001-boost1.79.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 408e56f0390f20aaf793e0aa0c70c4d9544401d4 Mon Sep 17 00:00:00 2001 -From: Vojtech Bubnik -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>& 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 -+ - #include - #include - #include - #include - #include --#include -+ - #include - #include - #include -@@ -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& 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& 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 diff --git a/0002-fix-cereal.patch b/0002-fix-cereal.patch deleted file mode 100644 index f3d52a0..0000000 --- a/0002-fix-cereal.patch +++ /dev/null @@ -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 $<$: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) diff --git a/0004-fix-opencascade-version-check.patch b/0004-fix-opencascade-version-check.patch index 2fa784a..c41b050 100644 --- a/0004-fix-opencascade-version-check.patch +++ b/0004-fix-opencascade-version-check.patch @@ -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) diff --git a/0006-fix-non-const-lvalue.patch b/0006-fix-non-const-lvalue.patch deleted file mode 100644 index 0ccd25c..0000000 --- a/0006-fix-non-const-lvalue.patch +++ /dev/null @@ -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 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; diff --git a/0007-boost1.84.patch b/0007-boost1.84.patch deleted file mode 100644 index 4ac2dfc..0000000 --- a/0007-boost1.84.patch +++ /dev/null @@ -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); diff --git a/PKGBUILD b/PKGBUILD index c22e8f5..f15b71e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,74 +3,113 @@ # 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>=1.85.0' + 'cgal' + 'glew' + 'imath' + 'heatshrink' + 'libspnav' + 'nlopt' + 'openvdb' + 'qhull>=2020.2-4' + 'slicer-udev' + 'wxwidgets-gtk3' +) +makedepends=( + 'boost>=1.85.0' + '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" "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' +sha512sums=('0d72bf61adcafe8eef2ed860449dc25ca295ba0732d956bff8c0ae50b381387b803fd88241ab855a9b38daf8f5eaa4c41d17241b8c15c66d63576874179aa1c0' + '04cb7cb69d887e1fa5ced5c0219b0ee6cab81f09d1bc1226ebd26563e2ce60b85fb6e5aef11a36dffd3e00779849906fc5c19ad2cdd22d45360226912b6af31b' '840e51b8feb3568ff46d309ece063f7188018fcaa43d19ec50ede408fdf2c237a3b7eaa11ba24409d8c3f7d6f5fb270181508cc56e0b2b0fef68b766130ef1eb' - '4efb6dd48c8184f47b838228cf624a74429f35d133fb85316ddcde9d78bd462d64009ec9fe0b3f34232ddf4971f81ea03385ed661c771de9f0fd5bffcbe2a74c' + '8512ace14c71b04eb98532e71592447475cf7feccf1c85f376487615c8a95f6afa645e4581f577ee26d91532c57f389eac7534a875d5a24e871f3ef593af33c9' 'a01abf748f82bc423f2c012ac430f78cfd5e56dede1d5999376e780267d0302d9a2a80c3eb15226c2f82102dda4c567c721ff99ab1fdeef504cbf9d9cb63ca53' - 'aca3a028eaab63baf83dd80d82615394435c97b9b45c99764ca84995d246096e3e5c2b564ed29e194652c8e221a80cf6abdc165cb3009fd20af586b0432b2bc9' - 'a92af974cb62901aab5a5c8c34672e9a7c90ea7246bbd7423421a9b7ee12a7b17073d90a6f36f994328c7dc9c2d0a6e4fd18c980a71863bc530d873ebaa80433' 'ca9f407d87d8dd0181077bc2da5a8e2f8995eed88a4787b73ee6c62ef6d2380fd1394fe5412cdc34276d4182bce6f272173e9ccb653d1e28978e16f379114002' '6d7ab93042a75f04e1c3c8f294d19dd39abaf22aa75caf996c6a0cf753f6472134a3d4fa443b73924800b2d3a710416a931745c168911c0df3709fb71ec00570' '92929ba1cb6ee104a10f34a649eba3789ca02f1725104a57412279ff68c46614b1812b13e7dcdf0d235618b9f2a868b4798b1404d9e712d9f1efd46e6c71fcb5') -prepare() -{ +_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 + 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/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" } -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 +119,10 @@ build() -DSLIC3R_BUILD_TESTS=OFF \ -DSLIC3R_ALPHA=ON \ -Wno-dev - - samu + ninja } -package() -{ +package() { cd "$srcdir/SuperSlicer-$_pkgtag/build" DESTDIR="$pkgdir" samu install