diff options
author | Miroslav Šulc <fordfrog@gentoo.org> | 2024-09-13 12:58:22 +0200 |
---|---|---|
committer | Miroslav Šulc <fordfrog@gentoo.org> | 2024-09-13 12:58:34 +0200 |
commit | 1866dd34bc4caf98b06e25d177f9cbc1b062e097 (patch) | |
tree | c21eca0a4f6fc084af233520046ccc9cdd139ad2 /media-gfx | |
parent | media-sound/SmarTagger: treeclean (diff) | |
download | gentoo-1866dd34bc4caf98b06e25d177f9cbc1b062e097.tar.gz gentoo-1866dd34bc4caf98b06e25d177f9cbc1b062e097.tar.bz2 gentoo-1866dd34bc4caf98b06e25d177f9cbc1b062e097.zip |
media-gfx/prusaslicer: fixed live ebuild
Signed-off-by: Miroslav Šulc <fordfrog@gentoo.org>
Diffstat (limited to 'media-gfx')
6 files changed, 279 insertions, 23 deletions
diff --git a/media-gfx/prusaslicer/files/prusaslicer-2.8.0-cgal-6.0.patch b/media-gfx/prusaslicer/files/prusaslicer-2.8.0-cgal-6.0.patch index 31c98bd75580..52013146b1c3 100644 --- a/media-gfx/prusaslicer/files/prusaslicer-2.8.0-cgal-6.0.patch +++ b/media-gfx/prusaslicer/files/prusaslicer-2.8.0-cgal-6.0.patch @@ -3,12 +3,6 @@ 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) ---- - 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 b2cf3d96596..5e66d41a8f1 100644 --- a/src/libslic3r/CutSurface.cpp +++ b/src/libslic3r/CutSurface.cpp @@ -4,6 +4,14 @@ diff --git a/media-gfx/prusaslicer/files/prusaslicer-2.8.1-cgal-6.0.patch b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-cgal-6.0.patch new file mode 100644 index 000000000000..3aac479197bb --- /dev/null +++ b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-cgal-6.0.patch @@ -0,0 +1,191 @@ +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 + +--- 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,6 +39,7 @@ using namespace Slic3r; + #include <CGAL/Exact_integer.h> + #include <CGAL/Surface_mesh.h> + #include <CGAL/Cartesian_converter.h> ++#include <CGAL/AABB_traits.h> + #include <oneapi/tbb/blocked_range.h> + #include <oneapi/tbb/parallel_for.h> + #include <boost/property_map/property_map.hpp> +@@ -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}; diff --git a/media-gfx/prusaslicer/files/prusaslicer-2.8.1-eigen3.patch b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-eigen3.patch deleted file mode 100644 index e215125b1486..000000000000 --- a/media-gfx/prusaslicer/files/prusaslicer-2.8.1-eigen3.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/libslic3r/CMakeLists.txt -+++ b/src/libslic3r/CMakeLists.txt -@@ -629,7 +629,7 @@ target_link_libraries(libslic3r PRIVATE - int128 - ) - target_link_libraries(libslic3r PUBLIC -- Eigen3::Eigen -+ Eigen3 - semver - admesh - localesutils diff --git a/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fixed-linking.patch b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fixed-linking.patch index 2c7ab74a4c87..b7fc95554591 100644 --- a/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fixed-linking.patch +++ b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fixed-linking.patch @@ -1,6 +1,31 @@ +--- a/bundled_deps/admesh/CMakeLists.txt ++++ b/bundled_deps/admesh/CMakeLists.txt +@@ -13,4 +13,3 @@ add_library(admesh STATIC + + target_include_directories(admesh PUBLIC .) + target_link_libraries(admesh PRIVATE boost_headeronly localesutils) +-target_link_libraries(admesh PUBLIC Eigen3::Eigen) +--- a/src/clipper/CMakeLists.txt ++++ b/src/clipper/CMakeLists.txt +@@ -10,5 +10,4 @@ add_library(clipper STATIC + ) + + target_link_libraries(clipper PRIVATE TBB::tbb TBB::tbbmalloc int128) +-target_link_libraries(clipper PUBLIC Eigen3::Eigen) + target_include_directories(clipper PUBLIC .) +--- a/src/libslic3r/CMakeLists.txt ++++ b/src/libslic3r/CMakeLists.txt +@@ -629,7 +629,6 @@ target_link_libraries(libslic3r PRIVATE + int128 + ) + target_link_libraries(libslic3r PUBLIC +- Eigen3::Eigen + semver + admesh + localesutils --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt -@@ -376,6 +376,7 @@ set(SLIC3R_GUI_SOURCES +@@ -383,6 +383,7 @@ set(SLIC3R_GUI_SOURCES ) find_package(NanoSVG REQUIRED) @@ -8,3 +33,13 @@ if (APPLE) list(APPEND SLIC3R_GUI_SOURCES +@@ -438,6 +439,9 @@ target_link_libraries( + NanoSVG::nanosvgrast + stb_dxt + fastfloat ++ OpenSSL::SSL ++ OpenSSL::Crypto ++ Boost::log + ) + + if (MSVC) diff --git a/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fstream.patch b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fstream.patch new file mode 100644 index 000000000000..b4a92de67ab6 --- /dev/null +++ b/media-gfx/prusaslicer/files/prusaslicer-2.8.1-fstream.patch @@ -0,0 +1,49 @@ +--- a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp ++++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp +@@ -1595,7 +1595,7 @@ void GLGizmoSVG::draw_filename(){ + if (dlg.ShowModal() == wxID_OK ){ + last_used_directory = dlg.GetDirectory(); + std::string out_path_str(into_u8(dlg.GetPath())); +- boost::nowide::ofstream stream(out_path_str); ++ std::ofstream stream(out_path_str); + if (stream.is_open()){ + stream << *svg.file_data; + +--- a/src/slic3r/GUI/PresetArchiveDatabase.cpp ++++ b/src/slic3r/GUI/PresetArchiveDatabase.cpp +@@ -514,7 +514,7 @@ void PresetArchiveDatabase::load_app_manifest_json() + if (!fs::exists(path, ec) || ec) { + copy_initial_manifest(); + } +- boost::nowide::ifstream file(path.string()); ++ std::ifstream file(path.string()); + std::string data; + if (file.is_open()) { + std::string line; +@@ -681,7 +681,7 @@ void PresetArchiveDatabase::save_app_manifest_json() const + data += "]"; + + std::string path = get_stored_manifest_path().string(); +- boost::nowide::ofstream file(path); ++ std::ofstream file(path); + if (file.is_open()) { + file << data; + file.close(); +@@ -916,4 +916,4 @@ void PresetArchiveDatabase::sync_blocking() + read_server_manifest(std::move(manifest)); + } + +-}} // Slic3r::GUI +\ No newline at end of file ++}} // Slic3r::GUI +--- a/src/slic3r/Utils/Http.cpp ++++ b/src/slic3r/Utils/Http.cpp +@@ -301,7 +301,7 @@ void Http::priv::form_add_file(const char *name, const fs::path &path, const cha + //FIXME may throw! Is the caller aware of it? + void Http::priv::set_post_body(const fs::path &path) + { +- boost::nowide::ifstream file(path.string()); ++ std::ifstream file(path.string()); + std::string file_content { std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>() }; + postfields = std::move(file_content); + } diff --git a/media-gfx/prusaslicer/prusaslicer-9999.ebuild b/media-gfx/prusaslicer/prusaslicer-9999.ebuild index 69208dbb54d1..fbf13e9d7d66 100644 --- a/media-gfx/prusaslicer/prusaslicer-9999.ebuild +++ b/media-gfx/prusaslicer/prusaslicer-9999.ebuild @@ -63,9 +63,9 @@ PATCHES=( "${FILESDIR}/${PN}-2.6.0-dont-force-link-to-wayland-and-x11.patch" "${FILESDIR}/${PN}-2.8.0-missing-includes.patch" "${FILESDIR}/${PN}-2.8.0-wxwidgets-3.2.4.patch" - "${FILESDIR}/${PN}-2.8.0-cgal-6.0.patch" "${FILESDIR}/${PN}-2.8.1-fixed-linking.patch" - "${FILESDIR}/${PN}-2.8.1-eigen3.patch" + "${FILESDIR}/${PN}-2.8.1-cgal-6.0.patch" + "${FILESDIR}/${PN}-2.8.1-fstream.patch" ) src_prepare() { @@ -79,9 +79,7 @@ src_prepare() { src/occt_wrapper/CMakeLists.txt || die find . -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) -exec \ - sed -i 's|#include <Eigen/|#include <eigen3/Eigen/|g' {} + || die - find . -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) -exec \ - sed -i 's|#include <unsupported/Eigen/|#include <eigen3/unsupported/Eigen/|g' {} + || die + sed -i 's|#include <Eigen/|#include <eigen3/Eigen/|g; s|#include <unsupported/Eigen/|#include <eigen3/unsupported/Eigen/|g' {} + || die cmake_src_prepare } |