From a622d89f9c852775b6f71bcacc61adacb4ea5160 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Mon, 7 Apr 2025 21:02:38 +0200 Subject: [PATCH] fix: compatibility with boost process v2 --- src/os_access_generic.cpp | 16 +++++++++------- test/tools_test.cpp | 9 +++++++++ tools/src/dwarfs_main.cpp | 20 +++----------------- tools/src/tool/pager.cpp | 8 ++++++++ 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/os_access_generic.cpp b/src/os_access_generic.cpp index e3a168f2..8fbe0aac 100644 --- a/src/os_access_generic.cpp +++ b/src/os_access_generic.cpp @@ -32,12 +32,14 @@ #include #include -#if __has_include() +#if __has_include() && defined(DWARFS_HAVE_CLOSE_RANGE) +#define BOOST_PROCESS_VERSION 2 +#include +#elif __has_include() +#define BOOST_PROCESS_VERSION 1 #include -#define DWARFS_BOOST_PROCESS_SEARCH_PATH_V1 1 #else #include -#define DWARFS_BOOST_PROCESS_SEARCH_PATH_V1 0 #endif #ifdef __APPLE__ @@ -233,12 +235,12 @@ os_access_generic::thread_get_cpu_time(std::thread::id tid, std::filesystem::path os_access_generic::find_executable(std::filesystem::path const& name) const { -#if DWARFS_BOOST_PROCESS_SEARCH_PATH_V1 - using boost::process::v1::search_path; +#if BOOST_PROCESS_VERSION == 2 + return boost::process::v2::environment::find_executable(name.wstring()) + .wstring(); #else - using boost::process::search_path; + return boost::process::search_path(name.wstring()).wstring(); #endif - return search_path(name.wstring()).wstring(); } } // namespace dwarfs diff --git a/test/tools_test.cpp b/test/tools_test.cpp index ecab6997..287a0bdd 100644 --- a/test/tools_test.cpp +++ b/test/tools_test.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -49,7 +50,15 @@ #endif #include +#if __has_include() +#define BOOST_PROCESS_VERSION 1 +#include +#include +#include +#include +#else #include +#endif #include #if FMT_VERSION >= 110000 diff --git a/tools/src/dwarfs_main.cpp b/tools/src/dwarfs_main.cpp index 668df3df..710458b8 100644 --- a/tools/src/dwarfs_main.cpp +++ b/tools/src/dwarfs_main.cpp @@ -44,16 +44,6 @@ #include -#ifndef _WIN32 -#if __has_include() && defined(DWARFS_HAVE_CLOSE_RANGE) -#define BOOST_PROCESS_VERSION 2 -#include -#else -#define BOOST_PROCESS_VERSION 1 -#include -#endif -#endif - #include #include @@ -99,7 +89,7 @@ #include #include #include -#include +#include #include #include #include @@ -435,14 +425,10 @@ void check_fusermount(dwarfs_userdata& userdata) { static constexpr std::string_view const fuse_pkg = "fuse/fuse2"; #endif -#if BOOST_PROCESS_VERSION == 2 auto fusermount = - boost::process::v2::environment::find_executable(fusermount_name); -#else - auto fusermount = boost::process::search_path(std::string(fusermount_name)); -#endif + dwarfs::os_access_generic().find_executable(fusermount_name); - if (fusermount.empty() || !boost::filesystem::exists(fusermount)) { + if (fusermount.empty() || !std::filesystem::exists(fusermount)) { LOG_PROXY(prod_logger_policy, userdata.lgr); LOG_ERROR << "Could not find `" << fusermount_name << "' in PATH"; LOG_WARN << "Do you need to install the `" << fuse_pkg << "' package?"; diff --git a/tools/src/tool/pager.cpp b/tools/src/tool/pager.cpp index 576a2243..7654420c 100644 --- a/tools/src/tool/pager.cpp +++ b/tools/src/tool/pager.cpp @@ -31,7 +31,15 @@ #include #include +#if __has_include() +#define BOOST_PROCESS_VERSION 1 +#include +#include +#include +#include +#else #include +#endif #include #include