From c29c40a271f9e9f244b8a0f1c16e7a1c351d9dfb Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Mon, 14 Dec 2020 17:30:16 +0100 Subject: [PATCH] Allow FUSE2 with static builds --- CMakeLists.txt | 18 ++++++++++++++---- src/dwarfs.cpp | 7 ++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d1d0eae..ad581b1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,12 @@ endif() find_package(PkgConfig REQUIRED) -pkg_check_modules(FUSE3 REQUIRED IMPORTED_TARGET fuse3>=3.4.1) +if(STATIC_BUILD_DO_NOT_USE) + pkg_check_modules(FUSE REQUIRED IMPORTED_TARGET fuse>=2.9.9) +else() + pkg_check_modules(FUSE3 REQUIRED IMPORTED_TARGET fuse3>=3.4.1) +endif() + pkg_check_modules(LIBLZ4 IMPORTED_TARGET liblz4>=1.8.3) pkg_check_modules(LIBLZMA IMPORTED_TARGET liblzma>=5.2.4) @@ -350,8 +355,13 @@ foreach(tgt dwarfs ${BINARY_TARGETS}) add_dependencies(${tgt} metadata_thrift) endforeach() -target_compile_definitions(dwarfs-bin PRIVATE FUSE_USE_VERSION=35 - _FILE_OFFSET_BITS=64) +target_compile_definitions(dwarfs-bin PRIVATE _FILE_OFFSET_BITS=64) + +if(STATIC_BUILD_DO_NOT_USE) + target_compile_definitions(dwarfs-bin PRIVATE FUSE_USE_VERSION=29) +else() + target_compile_definitions(dwarfs-bin PRIVATE FUSE_USE_VERSION=35) +endif() target_link_libraries( dwarfs @@ -390,7 +400,7 @@ add_custom_target(mount.dwarfs ALL COMMAND ${CMAKE_COMMAND} -E create_symlink if(STATIC_BUILD_DO_NOT_USE) # This is a proper mess, but it does work somehow... set(CMAKE_CXX_LINK_EXECUTABLE - "g++ -static -static-libgcc -static-libstdc++ -o -Wl,-allow-multiple-definition libdwarfs.a -Wl,-Bstatic /usr/lib/x86_64-linux-gnu/libfuse3.a libmetadata_thrift.a libthrift_light.a folly/libfolly.a /usr/lib/x86_64-linux-gnu/libfmt.a /usr/lib/x86_64-linux-gnu/libboost_context.a /usr/lib/x86_64-linux-gnu/libboost_regex.a /usr/lib/x86_64-linux-gnu/libboost_thread.a /usr/lib/x86_64-linux-gnu/libboost_atomic.a /usr/lib/x86_64-linux-gnu/libdouble-conversion.a /usr/lib/x86_64-linux-gnu/libgflags.a /usr/lib/x86_64-linux-gnu/libglog.a /usr/lib/x86_64-linux-gnu/libevent.a /usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libssl.a /usr/lib/x86_64-linux-gnu/libcrypto.a /usr/lib/x86_64-linux-gnu/libiberty.a /usr/lib/x86_64-linux-gnu/libiberty.a /usr/lib/x86_64-linux-gnu/libunwind.a /usr/lib/gcc/x86_64-linux-gnu/10/libatomic.a /usr/lib/x86_64-linux-gnu/libboost_date_time.a /usr/lib/x86_64-linux-gnu/libboost_filesystem.a /usr/lib/x86_64-linux-gnu/libboost_program_options.a /usr/lib/x86_64-linux-gnu/libboost_system.a zstd/build/cmake/lib/libzstd.a /usr/lib/x86_64-linux-gnu/liblz4.a /usr/lib/x86_64-linux-gnu/liblzma.a /usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libpthread.a /usr/lib/x86_64-linux-gnu/libdl.a /usr/lib/x86_64-linux-gnu/libc.a /usr/lib/x86_64-linux-gnu/libm.a /usr/lib/x86_64-linux-gnu/librt.a" + "g++ -static -static-libgcc -static-libstdc++ -o -Wl,-allow-multiple-definition libdwarfs.a -Wl,-Bstatic /usr/lib/x86_64-linux-gnu/libfuse.a libmetadata_thrift.a libthrift_light.a folly/libfolly.a /usr/lib/x86_64-linux-gnu/libfmt.a /usr/lib/x86_64-linux-gnu/libboost_context.a /usr/lib/x86_64-linux-gnu/libboost_regex.a /usr/lib/x86_64-linux-gnu/libboost_thread.a /usr/lib/x86_64-linux-gnu/libboost_atomic.a /usr/lib/x86_64-linux-gnu/libdouble-conversion.a /usr/lib/x86_64-linux-gnu/libgflags.a /usr/lib/x86_64-linux-gnu/libglog.a /usr/lib/x86_64-linux-gnu/libevent.a /usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libssl.a /usr/lib/x86_64-linux-gnu/libcrypto.a /usr/lib/x86_64-linux-gnu/libiberty.a /usr/lib/x86_64-linux-gnu/libiberty.a /usr/lib/x86_64-linux-gnu/libunwind.a /usr/lib/gcc/x86_64-linux-gnu/10/libatomic.a /usr/lib/x86_64-linux-gnu/libboost_date_time.a /usr/lib/x86_64-linux-gnu/libboost_filesystem.a /usr/lib/x86_64-linux-gnu/libboost_program_options.a /usr/lib/x86_64-linux-gnu/libboost_system.a zstd/build/cmake/lib/libzstd.a /usr/lib/x86_64-linux-gnu/liblz4.a /usr/lib/x86_64-linux-gnu/liblzma.a /usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libpthread.a /usr/lib/x86_64-linux-gnu/libdl.a /usr/lib/x86_64-linux-gnu/libc.a /usr/lib/x86_64-linux-gnu/libm.a /usr/lib/x86_64-linux-gnu/librt.a" ) else() target_link_libraries(dwarfs-bin PkgConfig::FUSE3) diff --git a/src/dwarfs.cpp b/src/dwarfs.cpp index 88e0307d..5545ee3a 100644 --- a/src/dwarfs.cpp +++ b/src/dwarfs.cpp @@ -30,7 +30,11 @@ #include #include +#if DWARFS_STATIC_BUILD +#include +#else #include +#endif #include "dwarfs/error.h" #include "dwarfs/filesystem_v2.h" @@ -569,7 +573,8 @@ int main(int argc, char* argv[]) { ? folly::to(s_opts.decompress_ratio_str) : 0.8; - LOG_INFO << "dwarfs (" << DWARFS_VERSION << ")"; + LOG_INFO << "dwarfs (" << DWARFS_VERSION << ", fuse version " + << FUSE_USE_VERSION << ")"; if (!s_opts.seen_mountpoint) { usage(s_opts.progname);