From 0f9ea102bd75ddc923677aa29e2284103b9f0ffe Mon Sep 17 00:00:00 2001 From: Maxim Samsonov Date: Sat, 9 Mar 2024 12:17:18 +0300 Subject: [PATCH] Fixing MinGW port --- CMakeLists.txt | 27 +++++++++++++++++---------- src/dwarfsck_main.cpp | 21 ++++++++++++++++----- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5410807a..59cb7a550 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,14 +195,18 @@ if("${OSTYPE_TXT}" MATCHES "^linux-musl.*") add_compile_definitions(__musl__) include(${TOOLS}/cmake-scripts/setup-libutfcpp.cmake) add_dependencies(_LIBARCHIVE ${LIBUTFCPP_PRJ}) - set(PATCH_FOLLY ON) + if (NOT NO_PATCH) + set(PATCH_FOLLY ON) + endif(NOT NO_PATCH) endif() if ("${OSTYPE_TXT}" MATCHES "^darwin*") include(${TOOLS}/cmake-scripts/macos-environment.cmake) include(${TOOLS}/cmake-scripts/setup-libutfcpp.cmake) add_dependencies(_LIBARCHIVE ${LIBUTFCPP_PRJ}) - set(PATCH_FOLLY ON) + if (NOT NO_PATCH) + set(PATCH_FOLLY ON) + endif(NOT NO_PATCH) endif() if ("${OSTYPE_TXT}" MATCHES "msys") @@ -213,8 +217,10 @@ if ("${OSTYPE_TXT}" MATCHES "msys") # This is because of some new features of glog 0.7.0 add_definitions(-DGLOG_USE_GLOG_EXPORT) - set(PATCH_FOLLY ON) - set(PATCH_FBTHRIFT ON) + if (NOT NO_PATCH) + set(PATCH_FOLLY ON) + set(PATCH_FBTHRIFT ON) + endif(NOT NO_PATCH) endif() if (${PATCH_FOLLY}) @@ -251,9 +257,9 @@ if (${PATCH_FBTHRIFT}) ) if(PATCH_FBTHRIFT_RES EQUAL 0) - message(STATUS "Patched fbthrift at '${FOLLY_FBTHRIFT}'") + message(STATUS "Patched fbthrift at '${FBTHRIFT_ROOT}'") else(PATCH_FBTHRIFT_RES EQUAL 0) - message(FATAL_ERROR "Failed to patch fbthrift at '${FOLLY_FBTHRIFT}': ${PATCH_FBTHRIFT_TXT}") + message(FATAL_ERROR "Failed to patch fbthrift at '${FBTHRIFT_ROOT}': ${PATCH_FBTHRIFT_TXT}") endif(PATCH_FBTHRIFT_RES EQUAL 0) endif(${PATCH_FBTHRIFT}) @@ -616,7 +622,7 @@ if("${TEBAKO_BUILD_SCOPE}" STREQUAL "ALL") add_library(dwarfsextract_main src/dwarfsextract_main.cpp) target_link_libraries(dwarfsck_main folly) - target_link_libraries(dwarfsbench_main folly ) + target_link_libraries(dwarfsbench_main folly) target_link_libraries(dwarfsextract_main folly) add_executable(dwarfsck src/dwarfsck.cpp) @@ -624,11 +630,11 @@ if("${TEBAKO_BUILD_SCOPE}" STREQUAL "ALL") add_executable(dwarfsextract src/dwarfsextract.cpp) add_executable(dwarfsuniversal src/universal.cpp) - target_link_libraries(dwarfsck dwarfsck_main ws2_32 wsock32) + target_link_libraries(dwarfsck dwarfsck_main) target_link_libraries(dwarfsbench dwarfsbench_main) target_link_libraries(dwarfsextract dwarfsextract_main) target_link_libraries(dwarfsuniversal mkdwarfs_main dwarfsck_main - dwarfsextract_main ws2_32 wsock32) + dwarfsextract_main) set_target_properties(dwarfsuniversal PROPERTIES RUNTIME_OUTPUT_DIRECTORY universal OUTPUT_NAME dwarfs-universal) @@ -995,7 +1001,8 @@ target_link_libraries( thrift_light folly fsst - ${Boost_LIBRARIES}) + ${Boost_LIBRARIES} + ) if(LIBLZ4_FOUND) target_link_libraries(dwarfs PkgConfig::LIBLZ4) diff --git a/src/dwarfsck_main.cpp b/src/dwarfsck_main.cpp index 9cad1a383..477252f56 100644 --- a/src/dwarfsck_main.cpp +++ b/src/dwarfsck_main.cpp @@ -27,8 +27,13 @@ #include -#include -#include +// [maxirmx] +// Re: tebako patch +// folly::Files refers WinSocks that I am trying to avoid +// #include +// #include + +#include #include #include #include @@ -132,13 +137,18 @@ int dwarfsck_main(int argc, sys_char** argv) { auto mm = std::make_shared(input); if (!export_metadata.empty()) { - auto of = folly::File(export_metadata, O_RDWR | O_CREAT | O_TRUNC); +// [maxirmx] +// Re: tebako patch +// auto of = folly::File(export_metadata, O_RDWR | O_CREAT | O_TRUNC); + int fd = ::open(export_metadata.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0666); filesystem_v2 fs(lgr, mm, fsopts); auto json = fs.serialize_metadata_as_json(false); - if (folly::writeFull(of.fd(), json.data(), json.size()) < 0) { +// if (folly::writeFull(of.fd(), json.data(), json.size()) < 0) { + if (folly::fileutil_detail::wrapFull(::write, fd, json.data(), json.size()) < 0) { LOG_ERROR << "failed to export metadata"; } - of.close(); +// of.close(); + ::close(fd); } else if (json) { filesystem_v2 fs(lgr, mm, fsopts); std::cout << folly::toPrettyJson(fs.metadata_as_dynamic()) << "\n"; @@ -161,6 +171,7 @@ int dwarfsck_main(int argc, sys_char** argv) { return 1; } } + } catch (system_error const& e) { std::cerr << folly::exceptionStr(e) << "\n"; return 1;