File 0005-boost-process-includes.patch of Package SuperSlicer
diff --git a/src/libslic3r/GCode/PostProcessor.cpp b/src/libslic3r/GCode/PostProcessor.cpp
index 8e0304ae95..33a6c3b283 100644
--- a/src/libslic3r/GCode/PostProcessor.cpp
+++ b/src/libslic3r/GCode/PostProcessor.cpp
@@ -28,7 +28,9 @@
#else
// POSIX
#include <sstream>
-#include <boost/process.hpp>
+#include <boost/process/v1/child.hpp>
+#include <boost/process/v1/io.hpp>
+#include <boost/process/v1/pipe.hpp>
#include <unistd.h> //readlink
#endif
@@ -175,7 +177,7 @@ static int run_script(const std::string &script, const std::string &gcode, std::
#else
-namespace process = boost::process;
+namespace process = boost::process::v1;
static int run_script(const std::string &script, const std::string &gcode, std::string &std_err)
{
diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp
index 96b0b754a6..cef2ac896d 100644
--- a/src/libslic3r/utils.cpp
+++ b/src/libslic3r/utils.cpp
@@ -89,7 +89,6 @@
#else
// POSIX
#include <sstream>
-#include <boost/process.hpp>
#include <unistd.h> //readlink
#endif
diff --git a/src/slic3r/GUI/FreeCADDialog.cpp b/src/slic3r/GUI/FreeCADDialog.cpp
index 9b7213b557..dfe803a2a7 100644
--- a/src/slic3r/GUI/FreeCADDialog.cpp
+++ b/src/slic3r/GUI/FreeCADDialog.cpp
@@ -44,7 +44,12 @@
// and so boost/process has a line 'typedef int int'instead of 'typedef int pid_t' that makes it crash
// note: don't put it in a header, as it can create problems. Here it's safe enough to be used, as it's just applied for the process.hpp file and this source code.
#define pid_t pid_t
-#include <boost/process.hpp>
+#include <boost/process/v1/async.hpp>
+#include <boost/process/v1/child.hpp>
+#include <boost/process/v1/io.hpp>
+#include <boost/process/v1/pipe.hpp>
+
+namespace process = boost::process::v1;
#include <cstdlib> // getenv()
@@ -63,11 +68,11 @@ namespace GUI {
//now that we have process.hpp, we can define the ExecVar
class ExecVar {
public:
- boost::process::opstream pyin;
+ process::opstream pyin;
boost::asio::io_context ios;
std::future<std::string> data_out;
std::future<std::string> data_err;
- std::unique_ptr<boost::process::child> process;
+ std::unique_ptr<process::child> process;
};
//TODO: auto tab
@@ -843,8 +848,8 @@ bool FreeCADDialog::init_start_python() {
get_string_from_web_async("https://api.github.com/repos/supermerill/FreePySCAD/commits/master", this, &FreeCADDialog::test_update_script_file);
}
- exec_var->process.reset(new boost::process::child(pythonpath.string() + " -u -i", boost::process::std_in < exec_var->pyin,
- boost::process::std_out > exec_var->data_out, boost::process::std_err > exec_var->data_err, exec_var->ios));
+ exec_var->process.reset(new process::child(pythonpath.string() + " -u -i", process::std_in < exec_var->pyin,
+ process::std_out > exec_var->data_out, process::std_err > exec_var->data_err, exec_var->ios));
exec_var->pyin << "import sys" << std::endl;
// add freecad lib path if not already done
exec_var->pyin << "sys.path.append('" << (freecadpath / "lib").string() << "')" << std::endl;
@@ -887,8 +892,8 @@ void FreeCADDialog::create_geometry(wxCommandEvent& event_args) {
}
//create synchronous pipe streams
- //boost::process::ipstream pyout;
- //boost::process::ipstream pyerr;
+ //process::ipstream pyout;
+ //process::ipstream pyerr;
if (!init_start_python()) return;
diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp
index dfbd7c9faa..85dc84de4e 100644
--- a/src/slic3r/GUI/RemovableDriveManager.cpp
+++ b/src/slic3r/GUI/RemovableDriveManager.cpp
@@ -35,7 +35,11 @@
#include <pwd.h>
#include <boost/filesystem.hpp>
#include <boost/system/error_code.hpp>
-#include <boost/process.hpp>
+#include <boost/process/v1/child.hpp>
+#include <boost/process/v1/io.hpp>
+#include <boost/process/v1/pipe.hpp>
+#include <boost/process/v1/search_path.hpp>
+namespace process = boost::process::v1;
#endif
namespace Slic3r {
@@ -859,15 +863,15 @@ void RemovableDriveManager::eject_drive()
// but neither triggers "succesful safe removal messege"
BOOST_LOG_TRIVIAL(info) << "Ejecting started";
- boost::process::ipstream istd_err;
- boost::process::child child(
+ process::ipstream istd_err;
+ process::child child(
#if __APPLE__
- boost::process::search_path("diskutil"), "eject", correct_path.c_str(), (boost::process::std_out & boost::process::std_err) > istd_err);
+ process::search_path("diskutil"), "eject", correct_path.c_str(), (process::std_out & process::std_err) > istd_err);
//Another option how to eject at mac. Currently not working.
//used insted of system() command;
//this->eject_device(correct_path);
#else
- boost::process::search_path("umount"), correct_path.c_str(), (boost::process::std_out & boost::process::std_err) > istd_err);
+ process::search_path("umount"), correct_path.c_str(), (process::std_out & process::std_err) > istd_err);
#endif
std::string line;
while (child.running() && std::getline(istd_err, line)) {
@@ -881,7 +885,7 @@ void RemovableDriveManager::eject_drive()
// The wait call can fail, as it did in https://github.com/prusa3d/PrusaSlicer/issues/5507
// It can happen even in cases where the eject is sucessful, but better report it as failed.
// We did not find a way to reliably retrieve the exit code of the process.
- BOOST_LOG_TRIVIAL(error) << "boost::process::child::wait() failed during Ejection. State of Ejection is unknown. Error code: " << ec.value();
+ BOOST_LOG_TRIVIAL(error) << "process::child::wait() failed during Ejection. State of Ejection is unknown. Error code: " << ec.value();
} else {
int err = child.exit_code();
if (err) {