Compare commits

..

No commits in common. "rawhide" and "f31" have entirely different histories.
rawhide ... f31

15 changed files with 161 additions and 581 deletions

View File

@ -0,0 +1,25 @@
From 94212fa2a92b5d01be5da8235f02423249dd7b2a Mon Sep 17 00:00:00 2001
From: bubnikv <bubnikv@gmail.com>
Date: Thu, 19 Sep 2019 08:56:47 +0200
Subject: [PATCH] Another fix of admesh on big endian architectures, fixes
#2879
---
src/admesh/stl_io.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/admesh/stl_io.cpp b/src/admesh/stl_io.cpp
index af9bb4f98..ddf377c78 100644
--- a/src/admesh/stl_io.cpp
+++ b/src/admesh/stl_io.cpp
@@ -151,8 +151,8 @@ bool stl_write_binary(stl_file *stl, const char *file, const char *label)
memcpy(buffer, &stl->stats.number_of_facets, 4);
stl_internal_reverse_quads(buffer, 4);
fwrite(buffer, 4, 1, fp);
- for (size_t i = 0; i < stl->stats.number_of_facets; ++ i) {
- memcpy(buffer, stl->facet_start + i, 50);
+ for (const stl_facet &facet : stl->facet_start) {
+ memcpy(buffer, &facet, 50);
// Convert to little endian.
stl_internal_reverse_quads(buffer, 48);
fwrite(buffer, SIZEOF_STL_FACET, 1, fp);

View File

@ -1,21 +0,0 @@
From 62592cab48cfb6a20d84041b1992aecc6a2b659c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hejl?= <hejl.lukas@gmail.com>
Date: Sat, 1 May 2021 22:33:59 +0200
Subject: [PATCH] Added missing include (GCC 11.1)
---
src/libslic3r/Optimize/Optimizer.hpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/libslic3r/Optimize/Optimizer.hpp b/src/libslic3r/Optimize/Optimizer.hpp
index 05191eba26..8ae55c61c5 100644
--- a/src/libslic3r/Optimize/Optimizer.hpp
+++ b/src/libslic3r/Optimize/Optimizer.hpp
@@ -8,6 +8,7 @@
#include <functional>
#include <limits>
#include <cassert>
+#include <optional>
namespace Slic3r { namespace opt {

26
patch-endianness Normal file
View File

@ -0,0 +1,26 @@
diff --git a/src/admesh/stlinit.cpp b/src/admesh/stlinit.cpp
index 693aad0..390fe56 100644
--- a/src/admesh/stlinit.cpp
+++ b/src/admesh/stlinit.cpp
@@ -36,6 +36,10 @@
#error "SEEK_SET not defined"
#endif
+#ifndef BOOST_LITTLE_ENDIAN
+extern void stl_internal_reverse_quads(char *buf, size_t cnt);
+#endif /* BOOST_LITTLE_ENDIAN */
+
static FILE* stl_open_count_facets(stl_file *stl, const char *file)
{
// Open the file in binary mode first.
@@ -238,10 +242,6 @@ bool stl_open(stl_file *stl, const char *file)
return result;
}
-#ifndef BOOST_LITTLE_ENDIAN
-extern void stl_internal_reverse_quads(char *buf, size_t cnt);
-#endif /* BOOST_LITTLE_ENDIAN */
-
void stl_allocate(stl_file *stl)
{
// Allocate memory for the entire .STL file.

View File

@ -1,31 +0,0 @@
From 926ae0471800abd1e5335e251a5934570eb8f6ff Mon Sep 17 00:00:00 2001
From: Vojtech Bubnik <bubnikv@gmail.com>
Date: Mon, 25 Apr 2022 11:32:03 +0200
Subject: [PATCH] Follow-up to 408e56f0390f20aaf793e0aa0c70c4d9544401d4 Fixing
compilation of tests on latest GCC/boost
---
tests/fff_print/test_data.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/fff_print/test_data.cpp b/tests/fff_print/test_data.cpp
index 32e31c264c..f7077007db 100644
--- a/tests/fff_print/test_data.cpp
+++ b/tests/fff_print/test_data.cpp
@@ -11,6 +11,7 @@
#include <string>
#include <boost/nowide/cstdio.hpp>
+#include <boost/nowide/fstream.hpp>
#include <boost/filesystem.hpp>
#include <libslic3r/ModelArrange.hpp>
@@ -286,7 +287,7 @@ std::string gcode(Print & print)
print.set_status_silent();
print.process();
print.export_gcode(temp.string(), nullptr, nullptr);
- std::ifstream t(temp.string());
+ boost::nowide::ifstream t(temp.string());
std::string str((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
boost::nowide::remove(temp.string().c_str());
return str;

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

View File

@ -1,26 +0,0 @@
Author: Thomas Viehmann <tv@beamnet.de>
Date: Thu, 8 Dec 2022 12:23:15 +0800
Subject: Fix segfault due to uninitialized imgui in wxwidgets3.2
Bug-Debian: https://bugs.debian.org/1022234
From: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1022234#15
Forwarded: no
---
src/slic3r/GUI/HintNotification.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp
index e88947d..1ca52e0 100644
--- a/src/slic3r/GUI/HintNotification.cpp
+++ b/src/slic3r/GUI/HintNotification.cpp
@@ -560,7 +560,9 @@ void HintDatabase::clear_used()
void NotificationManager::HintNotification::count_spaces()
{
- //determine line width
+ ImGuiWrapper& imgui = *wxGetApp().imgui();
+ imgui.new_frame();
+ //determine line width
m_line_height = ImGui::CalcTextSize("A").y;

View File

@ -1,32 +0,0 @@
From: Chow Loong Jin <hyperair@debian.org>
Date: Tue, 11 Oct 2022 10:42:05 +0800
Subject: Fix segfault due to WxTranslations::Get() returning nullptr
Bug-Debian: https://bugs.debian.org/1020702
Bug: https://github.com/prusa3d/PrusaSlicer/issues/9024
Origin: https://github.com/prusa3d/PrusaSlicer/issues/8299#issuecomment-1236874810
Author: Lukas Matena <lukasmatena@seznam.cz>
---
src/slic3r/GUI/GUI_App.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index 0aeebc7..fd22f2c 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -2075,6 +2075,15 @@ bool GUI_App::load_language(wxString language, bool initial)
{
// Allocating a temporary locale will switch the default wxTranslations to its internal wxTranslations instance.
wxLocale temp_locale;
+#ifdef __WXOSX__
+ // ysFIXME - temporary workaround till it isn't fixed in wxWidgets:
+ // Use English as an initial language, because of under OSX it try to load "inappropriate" language for wxLANGUAGE_DEFAULT.
+ // For example in our case it's trying to load "en_CZ" and as a result PrusaSlicer catch warning message.
+ // But wxWidgets guys work on it.
+ temp_locale.Init(wxLANGUAGE_ENGLISH);
+#else
+ temp_locale.Init();
+#endif // __WXOSX__
// Set the current translation's language to default, otherwise GetBestTranslation() may not work (see the wxWidgets source code).
wxTranslations::Get()->SetLanguage(wxLANGUAGE_DEFAULT);
// Let the wxFileTranslationsLoader enumerate all translation dictionaries for PrusaSlicer

View File

@ -1,11 +0,0 @@
diff -up PrusaSlicer-version_2.4.2/src/libslic3r/PNGReadWrite.hpp.gcc13 PrusaSlicer-version_2.4.2/src/libslic3r/PNGReadWrite.hpp
--- PrusaSlicer-version_2.4.2/src/libslic3r/PNGReadWrite.hpp.gcc13 2022-04-22 07:01:19.000000000 -0400
+++ PrusaSlicer-version_2.4.2/src/libslic3r/PNGReadWrite.hpp 2023-01-26 20:47:42.311148005 -0500
@@ -4,6 +4,7 @@
#include <vector>
#include <string>
#include <istream>
+#include <cstdint>
namespace Slic3r { namespace png {

View File

@ -1,35 +0,0 @@
diff -up PrusaSlicer-version_2.4.0/src/libslic3r/CMakeLists.txt.no-cereal-lib PrusaSlicer-version_2.4.0/src/libslic3r/CMakeLists.txt
--- PrusaSlicer-version_2.4.0/src/libslic3r/CMakeLists.txt.no-cereal-lib 2022-02-11 20:07:36.399806933 +0000
+++ PrusaSlicer-version_2.4.0/src/libslic3r/CMakeLists.txt 2022-02-11 20:14:53.806895641 +0000
@@ -335,7 +335,6 @@ target_include_directories(libslic3r PUB
target_link_libraries(libslic3r
libnest2d
admesh
- cereal
libigl
miniz
boost_libs
diff -up PrusaSlicer-version_2.4.0/src/CMakeLists.txt.no-cereal-lib PrusaSlicer-version_2.4.0/src/CMakeLists.txt
--- PrusaSlicer-version_2.4.0/src/CMakeLists.txt.no-cereal-lib 2022-02-11 20:31:04.581810442 +0000
+++ PrusaSlicer-version_2.4.0/src/CMakeLists.txt 2022-02-11 20:31:15.726430666 +0000
@@ -125,7 +125,7 @@ if (NOT WIN32 AND NOT APPLE)
set_target_properties(PrusaSlicer PROPERTIES OUTPUT_NAME "prusa-slicer")
endif ()
-target_link_libraries(PrusaSlicer libslic3r cereal)
+target_link_libraries(PrusaSlicer 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 -up PrusaSlicer-version_2.4.0/src/slic3r/CMakeLists.txt.no-cereal-lib PrusaSlicer-version_2.4.0/src/slic3r/CMakeLists.txt
--- PrusaSlicer-version_2.4.0/src/slic3r/CMakeLists.txt.no-cereal-lib 2022-02-11 20:30:36.653762157 +0000
+++ PrusaSlicer-version_2.4.0/src/slic3r/CMakeLists.txt 2022-02-11 20:30:47.604388990 +0000
@@ -260,7 +260,7 @@ add_library(libslic3r_gui STATIC ${SLIC3
encoding_check(libslic3r_gui)
-target_link_libraries(libslic3r_gui libslic3r avrdude cereal imgui GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES})
+target_link_libraries(libslic3r_gui libslic3r avrdude imgui GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES})
if (MSVC)
target_link_libraries(libslic3r_gui Setupapi.lib)

View File

@ -1,76 +0,0 @@
diff -up PrusaSlicer-version_2.4.0/cmake/modules/FindOpenVDB.cmake.openexr3 PrusaSlicer-version_2.4.0/cmake/modules/FindOpenVDB.cmake
--- PrusaSlicer-version_2.4.0/cmake/modules/FindOpenVDB.cmake.openexr3 2021-12-21 15:57:35.000000000 +0000
+++ PrusaSlicer-version_2.4.0/cmake/modules/FindOpenVDB.cmake 2022-02-11 19:27:12.105404186 +0000
@@ -347,28 +347,10 @@ macro(just_fail msg)
return()
endmacro()
-find_package(IlmBase QUIET)
-if(NOT IlmBase_FOUND)
- pkg_check_modules(IlmBase QUIET IlmBase)
-endif()
-if (IlmBase_FOUND AND NOT TARGET IlmBase::Half)
- message(STATUS "Falling back to IlmBase found by pkg-config...")
-
- find_library(IlmHalf_LIBRARY NAMES Half)
- if(IlmHalf_LIBRARY-NOTFOUND OR NOT IlmBase_INCLUDE_DIRS)
- just_fail("IlmBase::Half can not be found!")
- endif()
-
- add_library(IlmBase::Half UNKNOWN IMPORTED)
- set_target_properties(IlmBase::Half PROPERTIES
- IMPORTED_LOCATION "${IlmHalf_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES "${IlmBase_INCLUDE_DIRS}")
-elseif(NOT IlmBase_FOUND)
- just_fail("IlmBase::Half can not be found!")
-endif()
find_package(TBB ${_quiet} ${_required} COMPONENTS tbb)
find_package(ZLIB ${_quiet} ${_required})
find_package(Boost ${_quiet} ${_required} COMPONENTS iostreams system )
+find_package(Imath CONFIG)
# Use GetPrerequisites to see which libraries this OpenVDB lib has linked to
# which we can query for optional deps. This basically runs ldd/otoll/objdump
@@ -419,7 +401,7 @@ foreach(PREREQUISITE ${_OPENVDB_PREREQUI
set(OpenVDB_USES_LOG4CPLUS ON)
endif()
- string(FIND ${PREREQUISITE} "IlmImf" _HAS_DEP)
+ string(FIND ${PREREQUISITE} "OpenEXR" _HAS_DEP)
if(NOT ${_HAS_DEP} EQUAL -1)
set(OpenVDB_USES_ILM ON)
endif()
@@ -450,11 +432,7 @@ if(OpenVDB_USES_LOG4CPLUS)
find_package(Log4cplus ${_quiet} ${_required})
endif()
-if(OpenVDB_USES_ILM)
- find_package(IlmBase ${_quiet} ${_required})
-endif()
-
-if(OpenVDB_USES_EXR)
+if(OpenVDB_USES_ILM OR OpenVDB_USES_EXR)
find_package(OpenEXR ${_quiet} ${_required})
endif()
@@ -471,7 +449,7 @@ endif()
set(_OPENVDB_VISIBLE_DEPENDENCIES
Boost::iostreams
Boost::system
- IlmBase::Half
+ Imath::Imath
)
set(_OPENVDB_DEFINITIONS)
@@ -481,10 +459,7 @@ endif()
if(OpenVDB_USES_EXR)
list(APPEND _OPENVDB_VISIBLE_DEPENDENCIES
- IlmBase::IlmThread
- IlmBase::Iex
- IlmBase::Imath
- OpenEXR::IlmImf
+ OpenEXR::OpenEXR
)
list(APPEND _OPENVDB_DEFINITIONS "-DOPENVDB_TOOLS_RAYTRACER_USE_EXR")
endif()

View File

@ -1,43 +0,0 @@
From f9f8e811526dbf41c4987400924b1028c2dadd1a Mon Sep 17 00:00:00 2001
From: KARBOWSKI Piotr <piotr.karbowski@gmail.com>
Date: Mon, 9 May 2022 10:35:50 +0200
Subject: [PATCH] Fix building with new Boost 1.79.0.
Fixes #8302
---
src/slic3r/GUI/DesktopIntegrationDialog.cpp | 3 ++-
src/slic3r/GUI/GUI_App.cpp | 1 +
src/slic3r/Utils/AppUpdater.cpp | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/slic3r/GUI/DesktopIntegrationDialog.cpp b/src/slic3r/GUI/DesktopIntegrationDialog.cpp
index 81c681bc3a..7f99a505c6 100644
--- a/src/slic3r/GUI/DesktopIntegrationDialog.cpp
+++ b/src/slic3r/GUI/DesktopIntegrationDialog.cpp
@@ -10,6 +10,7 @@
#include "libslic3r/Platform.hpp"
#include "libslic3r/Config.hpp"
+#include <boost/nowide/fstream.hpp>
#include <boost/filesystem.hpp>
#include <boost/log/trivial.hpp>
#include <boost/dll/runtime_symbol_info.hpp>
@@ -503,4 +504,4 @@ DesktopIntegrationDialog::~DesktopIntegrationDialog()
} // namespace GUI
} // namespace Slic3r
-#endif // __linux__
\ No newline at end of file
+#endif // __linux__
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index 8533854f4d..4435f836b3 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -13,6 +13,7 @@
#include <cstdlib>
#include <regex>
#include <string_view>
+#include <boost/nowide/fstream.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/format.hpp>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<application> <application>
<id type="desktop">PrusaSlicer.desktop</id> <id type="desktop">prusa-slicer.desktop</id>
<metadata_license>0BSD</metadata_license> <metadata_license>0BSD</metadata_license>
<project_licence>AGPLv3</project_licence> <project_licence>AGPLv3</project_licence>
<summary>3D printing slicer optimized for Prusa printers</summary> <summary>3D printing slicer optimized for Prusa printers</summary>

12
prusa-slicer.desktop Normal file
View File

@ -0,0 +1,12 @@
[Desktop Entry]
Name=PrusaSlicer
GenericName=3D Printing Software
Icon=prusa-slicer
Exec=prusa-slicer %F
Terminal=false
Type=Application
MimeType=model/stl;model/x-wavefront-obj;model/3mf;model/x-geomview-off;application/x-amf;
Categories=Graphics;3DGraphics;Engineering;
Keywords=3D;Printing;Slicer;slice;3D;printer;convert;gcode;stl;obj;amf;SLA
StartupNotify=false
StartupWMClass=prusa-slicer

View File

@ -1,14 +1,9 @@
# Currently all of the test suite requires the old Perl infrastructure to run. # Currently all of the test suite requires the old Perl infrastructure to run.
# When building flatpak, tests have to be disabled by default due to some missing dependencies.
%if 0%{?flatpak}
%bcond_with perltests
%else
%bcond_without perltests %bcond_without perltests
%endif
Name: prusa-slicer Name: prusa-slicer
Version: 2.4.2 Version: 2.1.1
Release: 9%{?dist} Release: 1%{?dist}
Summary: 3D printing slicer optimized for Prusa printers Summary: 3D printing slicer optimized for Prusa printers
# The main PrusaSlicer code and resources are AGPLv3, with small parts as # The main PrusaSlicer code and resources are AGPLv3, with small parts as
@ -22,48 +17,26 @@ Summary: 3D printing slicer optimized for Prusa printers
License: AGPLv3 License: AGPLv3
URL: https://github.com/prusa3d/PrusaSlicer/ URL: https://github.com/prusa3d/PrusaSlicer/
Source0: https://github.com/prusa3d/PrusaSlicer/archive/version_%version.tar.gz Source0: https://github.com/prusa3d/PrusaSlicer/archive/version_%version.tar.gz
Source1: %name.desktop
Source2: %name.appdata.xml Source2: %name.appdata.xml
Patch1: prusa-slicer-no-cereal-lib.patch # Fix building on s390x
# https://github.com/prusa3d/PrusaSlicer/issues/2879
Patch0: https://github.com/prusa3d/PrusaSlicer/commit/94212fa2a92b5d01be5da8235f02423249dd7b2a.patch
# Add missing include, needed for GCC13 # Try to fix more endian-related compilation errors
# Proposed upstream: https://github.com/prusa3d/PrusaSlicer/pull/9434 # https://github.com/prusa3d/PrusaSlicer/issues/2879
Patch2: prusa-slicer-gcc13.patch # https://github.com/prusa3d/PrusaSlicer/pull/2981
Patch1: patch-endianness
# Fix a couple of segfaults that happen with wxWidgets 3.2 (from Debian)
Patch3: prusa-slicer-fix-wxtranslations-segfault.patch
Patch4: prusa-slicer-fix-uninitialized-imgui-segfault.patch
# Beware!
# Patches >= 340 are only applied on Fedora 34+
# Patches >= 350 are only applied on Fedora 35+
# ...
# OpenEXR 3 fixes
Patch351: https://github.com/archlinux/svntogit-community/blob/1dea61c0b5/trunk/prusa-slicer-openexr3.patch
# Boost 1.79 fixes
# https://github.com/prusa3d/PrusaSlicer/pull/8304
Patch391: prusa-slicer-pr8304-boost-1_79-fix.patch
# https://github.com/prusa3d/PrusaSlicer/commit/408e56f0390f20aaf793e0aa0c70c4d9544401d4
Patch392: prusa-slicer-boost_filesystem_ofstream-deprecation-1_79.patch
# https://github.com/prusa3d/PrusaSlicer/commit/926ae0471800abd1e5335e251a5934570eb8f6ff
Patch393: prusa-slicer-boost_filesystem_ofstream-deprecation-1_79-followup.patch
# Highly-parallel uild can run out of memory on PPC64le # Highly-parallel uild can run out of memory on PPC64le
%ifarch ppc64le %ifarch ppc64le
%global _smp_ncpus_max 8 %global _smp_ncpus_max 8
%endif %endif
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
%if 0%{?fedora} >= 37 || 0%{?rhel} >= 10
ExcludeArch: %{ix86}
%endif
BuildRequires: boost-devel BuildRequires: boost-devel
BuildRequires: cmake BuildRequires: cmake
BuildRequires: cereal-devel BuildRequires: cereal-devel
BuildRequires: CGAL-devel
BuildRequires: curl-devel BuildRequires: curl-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: eigen3-devel BuildRequires: eigen3-devel
@ -73,17 +46,15 @@ BuildRequires: gettext
BuildRequires: git-core BuildRequires: git-core
BuildRequires: glew-devel BuildRequires: glew-devel
BuildRequires: gtest-devel BuildRequires: gtest-devel
BuildRequires: ilmbase-devel
BuildRequires: ImageMagick BuildRequires: ImageMagick
BuildRequires: libgudev BuildRequires: miniz-devel
# Upstream miniz is no longer compatible, gotta use the fork.
# BuildRequires: miniz-devel
BuildRequires: NLopt-devel BuildRequires: NLopt-devel
BuildRequires: openvdb
BuildRequires: openvdb-devel
BuildRequires: systemd-devel
BuildRequires: tbb-devel BuildRequires: tbb-devel
BuildRequires: wxGTK-devel BuildRequires: wxBase3-devel
BuildRequires: wxGTK3-devel
# Upstream says this is obsolete, but still needed to compile
BuildRequires: poly2tri-devel
# Things we wish we could unbundle # Things we wish we could unbundle
#BuildRequires: admesh-devel >= 0.98.1 #BuildRequires: admesh-devel >= 0.98.1
@ -91,38 +62,42 @@ BuildRequires: wxGTK-devel
#BuildRequires: boost-nowide-devel #BuildRequires: boost-nowide-devel
#BuildRequires: qhull-devel #BuildRequires: qhull-devel
# For the %%_udevrulesdir macro
BuildRequires: systemd
%if %{with perltests} %if %{with perltests}
# All of the old Perl dependencies needed to run the test suite # All of the old Perl dependencies needed to run the test suite
BuildRequires: perl-devel BuildRequires: perl-devel
BuildRequires: perl-generators BuildRequires: perl-generators
BuildRequires: perl(Class::XSAccessor) BuildRequires: perl(Class::XSAccessor)
BuildRequires: perl(Devel::CheckLib) BuildRequires: perl(Devel::CheckLib)
BuildRequires: perl(ExtUtils::CppGuess) BuildRequires: perl(Encode::Locale)
BuildRequires: perl(ExtUtils::Embed) BuildRequires: perl(ExtUtils::Embed)
BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: perl(ExtUtils::MakeMaker)
BuildRequires: perl(ExtUtils::ParseXS) BuildRequires: perl(ExtUtils::ParseXS)
BuildRequires: perl(ExtUtils::Typemaps::Default)
BuildRequires: perl(ExtUtils::Typemaps) BuildRequires: perl(ExtUtils::Typemaps)
BuildRequires: perl(ExtUtils::Typemaps::Basic)
BuildRequires: perl(ExtUtils::XSpp)
BuildRequires: perl(ExtUtils::XSpp::Cmd)
BuildRequires: perl(File::Basename) BuildRequires: perl(File::Basename)
BuildRequires: perl(File::Spec) BuildRequires: perl(File::Spec)
BuildRequires: perl(Getopt::Long) BuildRequires: perl(Getopt::Long)
BuildRequires: perl(Growl::GNTP)
BuildRequires: perl(IO::Scalar) BuildRequires: perl(IO::Scalar)
BuildRequires: perl(List::Util) BuildRequires: perl(List::Util)
BuildRequires: perl(local::lib) BuildRequires: perl(local::lib)
BuildRequires: perl(Math::PlanePath)
BuildRequires: perl(Module::Build::WithXSpp) BuildRequires: perl(Module::Build::WithXSpp)
BuildRequires: perl(Moo) BuildRequires: perl(Moo)
BuildRequires: perl(parent) BuildRequires: perl(parent)
BuildRequires: perl(POSIX) BuildRequires: perl(POSIX)
BuildRequires: perl(Scalar::Util) BuildRequires: perl(Scalar::Util)
BuildRequires: perl(Storable)
BuildRequires: perl(SVG)
BuildRequires: perl(Test::Harness) BuildRequires: perl(Test::Harness)
BuildRequires: perl(Test::More) BuildRequires: perl(Test::More)
BuildRequires: perl(Thread::Semaphore)
BuildRequires: perl(threads)
BuildRequires: perl(Time::HiRes) BuildRequires: perl(Time::HiRes)
BuildRequires: perl(Unicode::Normalize)
BuildRequires: perl(Wx) BuildRequires: perl(Wx)
BuildRequires: perl(XML::SAX)
BuildRequires: perl(XML::SAX::ExpatXS)
%endif %endif
Requires: hicolor-icon-theme Requires: hicolor-icon-theme
@ -170,13 +145,15 @@ Provides: bundled(imgui) = 1.66
# License: MIT # License: MIT
Provides: bundled(mesa-libGLU) Provides: bundled(mesa-libGLU)
# PrusaResearch added functions to the upstream miniz. Yay. %if %{?fedora <= 30}
# See https://github.com/prusa3d/PrusaSlicer/issues/7080 # For <= F30, the system miniz is too old to be used. The bundled library is a
# License: MIT # fork from somewhere around 2.0.6, with various C++ source files added.
Provides: bundled(miniz) = 2.1.0prusa # License: MIT and Unlicense
Provides: bundled(miniz) = 2.0.6
%endif
# A header-only library, developed by one of the authors of PrusaSlicer. # A header-only library, developed by one of the authors of PrusaSlicer. Not
# Packaged in Fedora, but have not yet attempted unbundling. # packaged in Fedora, but could be (for little benefit).
# None of the source files carry licensing information, but a file LICENSE.txt # None of the source files carry licensing information, but a file LICENSE.txt
# exists and contains the AGPL text. # exists and contains the AGPL text.
# License: AGPLv3 # License: AGPLv3
@ -230,16 +207,11 @@ Provides: bundled(shinyprofiler) = 2.6~rc1
# In case someone tries to install the upstream name # In case someone tries to install the upstream name
Provides: PrusaSlicer = %version-%release Provides: PrusaSlicer = %version-%release
# The package was renamed after version 2 # Because the old profiles are not compatible, don't replace slic3r-prusa3d
# until F31. Both packages can be installed and used in parallel
%if %{?fedora} >= 31
Obsoletes: slic3r-prusa3d < 1.41.3-2 Obsoletes: slic3r-prusa3d < 1.41.3-2
Provides: slic3r-prusa3d = %version-%release Provides: slic3r-prusa3d = %version-%release
# Get Fedora 33++ behavior on anything older
%undefine __cmake_in_source_build
# i686 arm build fails with lto
%ifarch %ix86 %arm
%define _lto_cflags %{nil}
%endif %endif
%description %description
@ -254,9 +226,7 @@ community.
%prep %prep
%autosetup -S git -n PrusaSlicer-version_%version -N %autosetup -S git -n PrusaSlicer-version_%version
# Apply patches, but only apply 340+ on Fedora 34, 350+ on Fedora 35, etc...
%autopatch -M %[%{?fedora} * 10 + 9]
commit () { git commit -q -a -m "$1" --author "%{__scm_author}"; } commit () { git commit -q -a -m "$1" --author "%{__scm_author}"; }
@ -264,6 +234,12 @@ commit () { git commit -q -a -m "$1" --author "%{__scm_author}"; }
sed -i 's/UNKNOWN/Fedora/' version.inc sed -i 's/UNKNOWN/Fedora/' version.inc
commit "Fix version string" commit "Fix version string"
# F29 has the nlopt library under a different name
%if %{?fedora} < 30
sed -ri 's/^(.*_NLopt_LIB_NAMES "nlopt)(".*)$/\1_cxx\2/' src/libnest2d/cmake_modules/FindNLopt.cmake
commit "Fix name of nlopt library"
%endif
# Copy out specific license files so we can reference them later. # Copy out specific license files so we can reference them later.
license () { mv src/$1/$2 $2-$1; git add $2-$1; echo %%license $2-$1 >> license-files; } license () { mv src/$1/$2 $2-$1; git add $2-$1; echo %%license $2-$1 >> license-files; }
license agg copying license agg copying
@ -288,31 +264,57 @@ unbundle eigen
unbundle expat unbundle expat
unbundle glew unbundle glew
# Upstream says this is obsolete, but it's still needed for compilation.
# The Fedora version appears to work fine for that purpose so we'll use it.
unbundle poly2tri
# The miniz in F30 is too old to unbundle.
# The sed could be a patch, but conditionally applying patches is problematic
# and this will be fixed upstream in the next release.
%if %{?fedora} >= 31
unbundle miniz
#sed -i 's/^#include.*miniz.*/#include <miniz.h>/' \
# src/libslic3r/Format/{3mf.cpp,AMF.cpp,PRUS.cpp} \
# src/libslic3r/Zipper.cpp
#commit "Fix miniz includes"
%endif
# These tests were fixed but the fixes were undone upsteam with commit ac6969c # These tests were fixed but the fixes were undone upsteam with commit ac6969c
# https://github.com/prusa3d/PrusaSlicer/issues/2288 # https://github.com/prusa3d/PrusaSlicer/issues/2288
# Just remove them for now # Just remove them for now
rm -f t/combineinfill.t t/custom_gcode.t t/fill.t t/multi.t t/retraction.t t/skirt_brim.t rm -f t/combineinfill.t t/custom_gcode.t t/fill.t t/multi.t t/retraction.t t/skirt_brim.t
commit "Remove xfail tests." commit "Remove xfail tests."
# compiling test_voronoi.cpp seems to hang...
# Fixed with binutils-2.38-6.fc37 (bug 2059646)
%if 0%{?fedora} < 37
sed -i tests/libslic3r/CMakeLists.txt -e '\@test_voronoi.cpp@d'
commit "Disable voronoi test"
%endif
%build %build
mkdir Build
pushd Build
# -DSLIC3R_PCH=0 - Disable precompiled headers, which break cmake for some reason # -DSLIC3R_PCH=0 - Disable precompiled headers, which break cmake for some reason
# -DSLIC3R_FHS=1 - Enable FHS layout instead of installing things into the resources directory # -DSLIC3R_FHS=1 - Enable FHS layout instead of installing things into the resources directory
# -DSLIC3R_WX_STABLE=1 - Allow use of wxGTK version 3.0 instead of 3.1. # -DSLIC3R_WX_STABLE=1 - Allow use of wxGTK version 3.0 instead of 3.1.
%cmake -DSLIC3R_PCH=0 -DSLIC3R_FHS=1 -DSLIC3R_WX_STABLE=1 -DSLIC3R_GTK=3 \ %cmake .. -DSLIC3R_PCH=0 -DSLIC3R_FHS=1 -DSLIC3R_WX_STABLE=1 -DSLIC3R_GTK=3 \
-DSLIC3R_BUILD_TESTS=1 -DCMAKE_BUILD_TYPE=Release \ -DSLIC3R_BUILD_TESTS=1 -DCMAKE_BUILD_TYPE=Release \
%if %{with perltests} %if %{with perltests}
-DSLIC3R_PERL_XS=1 -DSLIC3R_PERL_XS=1
%endif %endif
%cmake_build %make_build
popd
# Extract multiple sizes of PNG from the included .ico file. The order of
# extracted files can change, so a bit of magic is required to get stable
# filenames.
mkdir hicolor
pushd hicolor
convert -set filename:dim '%%wx%%h' ../resources/icons/PrusaSlicer.ico %name-%%[filename:dim].png
for res in 16 32 48 64 128 256; do
mkdir -p ${res}x${res}/apps
cp %name-${res}x${res}.png ${res}x${res}/apps/%name.png
done
rm %name-*.png
popd
# To avoid "iCCP: Not recognized known sRGB profile that has been edited" # To avoid "iCCP: Not recognized known sRGB profile that has been edited"
pushd resources/icons pushd resources/icons
find . -type f -name "*.png" -exec convert {} -strip {} \; find . -type f -name "*.png" -exec convert {} -strip {} \;
@ -320,7 +322,9 @@ popd
%install %install
%cmake_install pushd Build
%make_install
popd
# Since the binary segfaults under Wayland, we have to wrap it. # Since the binary segfaults under Wayland, we have to wrap it.
mv %buildroot%_bindir/prusa-slicer %buildroot%_bindir/prusa-slicer.wrapped mv %buildroot%_bindir/prusa-slicer %buildroot%_bindir/prusa-slicer.wrapped
@ -331,18 +335,20 @@ exec %_bindir/prusa-slicer.wrapped "$@"
END END
chmod 755 %buildroot%_bindir/prusa-slicer chmod 755 %buildroot%_bindir/prusa-slicer
mkdir -p %buildroot%_datadir/icons/hicolor/
cp -r hicolor/* %buildroot%_datadir/icons/hicolor/
mkdir -p %buildroot%_datadir/appdata mkdir -p %buildroot%_datadir/appdata
install -m 644 %SOURCE2 %buildroot%_datadir/appdata/%name.appdata.xml install -m 644 %SOURCE2 %buildroot%_datadir/appdata/%name.appdata.xml
desktop-file-install --dir=%buildroot%_datadir/applications %SOURCE1
# For now, delete the Perl module that gets installed. It only exists because # For now, delete the Perl module that gets installed. It only exists because
# we want the test suite to run. It could be placed into a subpackage, but # we want the test suite to run. It could be placed into a subpackage, but
# nothing needs it currently and it would conflict with the other slic3r # nothing needs it currently and it would conflict with the other slic3r
# package. # package.
# rm -rf %buildroot/%perl_vendorarch
# The %%perl_vendorarch and %%perl_vendorlib can be undefined, rm -rf %buildroot/%perl_vendorlib
# which would cause deleting of the whole buildroot.
%{?perl_vendorarch:rm -rf %buildroot/%perl_vendorarch}
%{?perl_vendorlib:rm -rf %buildroot/%perl_vendorlib}
# Upstream installs the translation source files when they probably shouldn't # Upstream installs the translation source files when they probably shouldn't
ls -lR %buildroot%_datadir/PrusaSlicer/localization ls -lR %buildroot%_datadir/PrusaSlicer/localization
@ -372,161 +378,28 @@ find %buildroot%_datadir/PrusaSlicer/localization -type d | sed '
s:\(.*\):%dir \1: s:\(.*\):%dir \1:
' >> lang-files ' >> lang-files
%if 0%{?flatpak}
# Remove udev rules that aren't needed for flatpak builds
rm -f %buildroot%_prefix/lib/udev/rules.d/90-3dconnexion.rules
%endif
%check %check
desktop-file-validate %buildroot%_datadir/applications/PrusaGcodeviewer.desktop
# Some tests are Perl but there is a framework for other tests even though # Some tests are Perl but there is a framework for other tests even though
# currently the only thing that uses them is one of the bundled libraries. # currently the only thing that uses them is one of the bundled libraries.
# There's no reason not to run as much as we can. # There's no reason not to run as much as we can.
%cmake_build -- test ARGS=-V pushd Build
make test ARGS=-V
%files -f license-files -f lang-files %files -f license-files -f lang-files
%license LICENSE %license LICENSE
%doc README.md %doc README.md
%_bindir/%name %_bindir/%name
%_bindir/prusa-gcodeviewer
%_bindir/%name.wrapped %_bindir/%name.wrapped
%_datadir/icons/hicolor/*/apps/PrusaSlicer*.png %_datadir/icons/hicolor/*/apps/%name.png
%_datadir/applications/PrusaGcodeviewer.desktop %_datadir/applications/%name.desktop
%_datadir/applications/PrusaSlicer.desktop
%_datadir/appdata/%name.appdata.xml %_datadir/appdata/%name.appdata.xml
%dir %_datadir/PrusaSlicer %dir %_datadir/PrusaSlicer
%_datadir/PrusaSlicer/{icons,models,profiles,shaders,shapes,udev,applications,data}/ %_datadir/PrusaSlicer/{icons,models,profiles,shaders}/
%if !0%{?flatpak}
%_udevrulesdir/90-3dconnexion.rules
%endif
%changelog %changelog
* Mon Feb 27 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.4.2-9
- Backport upstream fix for build with Boost 1.79+
* Mon Feb 20 2023 Jonathan Wakely <jwakely@redhat.com> - 2.4.2-8
- Rebuilt for Boost 1.81
* Fri Jan 27 2023 Scott Talbert <swt@techie.net> - 2.4.2-7
- Rebuild with wxWidgets 3.2 (again) with additional fixes
* Fri Jan 27 2023 Scott Talbert <swt@techie.net> - 2.4.2-6
- Fix FTBFS with GCC 13
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Dec 31 2022 Miro Hrončok <mhroncok@redhat.com> - 2.4.2-4
- Rebuilt for openvdb 10.0
* Tue Oct 25 2022 Kalev Lember <klember@redhat.com> - 2.4.2-3
- Switch back to wxWidgets 3.0 (#2131615)
* Thu Aug 04 2022 Scott Talbert <swt@techie.net> - 2.4.2-2
- Rebuild with wxWidgets 3.2
* Fri Jul 22 2022 Jan Staněk <jstanek@redhat.com> - 2.4.2-1
- Update to 2.4.2
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 27 2022 Miro Hrončok <mhroncok@redhat.com> - 2.4.0-5
- Rebuilt for openvdb 9.1
- Fixes: rhbz#2098784
* Wed May 04 2022 Thomas Rodgers <trodgers@redhat.com> - 2.4.0-4
- Rebuilt for Boost 1.78
* Thu Mar 17 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.4.0-3
- Remove the previous voronoi workaround for fixed binutils
* Wed Mar 2 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.4.0-2
- %%ix86 %%arm: kill LTO for now
- kill test_voronoi.cpp, compilation (as) hangs (bug 2059646)
* Mon Feb 14 2022 Tom Callaway <spot@fedoraproject.org> - 2.4.0-1
- update to 2.4.0
* Thu Feb 10 2022 Orion Poplawski <orion@nwra.com> - 2.3.3-5
- Rebuild for glew 2.2
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Nov 30 2021 Miro Hrončok <mhroncok@redhat.com> - 2.3.3-3
- Disable GLIBCXX_ASSERTIONS
- Fixes rhbz#2023345
* Sun Nov 28 2021 Richard Shaw <hobbes1069@gmail.com> - 2.3.3-2
- Rebuild for OpenVDB 9.
* Mon Nov 08 2021 Dennis Gilmore <dennis@ausil.us> - 2.3.3-1
- update to 2.3.3
- remove upstreamed gcc patch
* Sat Aug 07 2021 Jonathan Wakely <jwakely@redhat.com> - 2.3.1-5
- Rebuilt for Boost 1.76
* Mon Aug 02 2021 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-4
- Rebuilt for OpenEXR 3
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jun 23 2021 Miro Hrončok <mhroncok@redhat.com> - 2.3.1-2
- Rebuilt for openvdb 8.1
- Fixes rhbz#1972120
* Sat May 15 2021 Dennis Gilmore <dennis@ausil.us> - 2.3.1-1
- update to 2.3.1
- include upstream patch fixing build with gcc 11
* Mon May 10 2021 Jonathan Wakely <jwakely@redhat.com> - 2.2.0-12
- Rebuilt for removed libstdc++ symbols (#1937698)
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Jan 22 2021 Jonathan Wakely <jwakely@redhat.com> - 2.2.0-10
- Rebuilt for Boost 1.75
* Thu Jan 14 2021 Miro Hrončok <mhroncok@redhat.com> - 2.2.0-9
- Trim perl build dependencies
* Mon Jan 04 2021 Miro Hrončok <mhroncok@redhat.com> - 2.2.0-8
- Rebuilt for openvdb 8.0
- Fixes: rhbz#1912499
* Fri Jan 01 2021 Richard Shaw <hobbes1069@gmail.com> - 2.2.0-7
- Rebuild for OpenEXR 2.5.3.
* Wed Aug 26 2020 Jan Beran <jaberan@redhat.com> - 2.2.0-6
- Add fixes for the flatpak build:
disable perltests by default when building flatpak
don't remove Perl modules when building without perltests
* Mon Aug 24 2020 Miro Hrončok <mhroncok@redhat.com> - 2.2.0-5
- Rebuilt for openvdb 7.1
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-4
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jun 02 2020 Miro Hrončok <mhroncok@redhat.com> - 2.2.0-2
- Rebuilt and fix for Boost 1.73.0 (#1842011)
* Tue Mar 31 2020 Alexander Jacocks <alexander@redhat.com> - 2.2.0-1
- Update to 2.2.0.
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 02 2020 Jason L Tibbitts III <tibbs@math.uh.edu> - 2.1.1-1 * Thu Jan 02 2020 Jason L Tibbitts III <tibbs@math.uh.edu> - 2.1.1-1
- Update to 2.1.1. - Update to 2.1.1.

View File

@ -1 +1 @@
SHA512 (version_2.4.2.tar.gz) = d480c608eadb58b53ee220317a749c0363db580759322ed7a9aebe2ea5c1acc30dbd3bdf9ed9849c23ba5c125ee6f923de6ac01987bf85abf7aeb3f91c2ae23f SHA512 (version_2.1.1.tar.gz) = 30c00e6fc0dbd97ec2307d83a777f53039ed0eb8c4c26c9f4e581567025225ca1937032fe23fd09216d55b2703fa3c0d20a7f1efd713ba6c9ae5e32a6a088d6a