From 0b9e1a113f834824b89ecdadf6ecef29ab31689e Mon Sep 17 00:00:00 2001 From: Alessandro Barbieri Date: Wed, 28 Apr 2021 23:06:34 +0200 Subject: [PATCH] sys-fs/dwarfs: unbundling WIP doesn't build but it's a start hope I didn't mess up while rebasing Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Alessandro Barbieri --- sys-fs/dwarfs/dwarfs-0.5.4-r3.ebuild | 106 ++++++++++++ .../files/unbundle-folly-fbthrift.patch | 153 ++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 sys-fs/dwarfs/dwarfs-0.5.4-r3.ebuild create mode 100644 sys-fs/dwarfs/files/unbundle-folly-fbthrift.patch diff --git a/sys-fs/dwarfs/dwarfs-0.5.4-r3.ebuild b/sys-fs/dwarfs/dwarfs-0.5.4-r3.ebuild new file mode 100644 index 0000000000..f45a47b0b9 --- /dev/null +++ b/sys-fs/dwarfs/dwarfs-0.5.4-r3.ebuild @@ -0,0 +1,106 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{7,8,9} ) + +inherit check-reqs cmake flag-o-matic python-single-r1 + +DESCRIPTION="A fast very high compression read-only FUSE file system" +HOMEPAGE="https://github.com/mhx/dwarfs" + +SRC_URI="https://github.com/mhx/dwarfs/releases/download/v${PV}/${P}.tar.bz2" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="" + +IUSE="python +jemalloc test" +RESTRICT="!test? ( test )" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +PATCHES=( "${WORKDIR}/unbundle-folly-fbthrift.patch" ) + +RDEPEND=" + ${PYTHON_DEPS} + app-arch/libarchive + app-arch/lz4 + app-arch/snappy + app-arch/xz-utils + app-arch/zstd + dev-cpp/fbthrift:= + dev-cpp/folly:= + dev-cpp/gflags + dev-cpp/glog[gflags] + dev-cpp/sparsehash + dev-libs/boost[context,threads,python?] + dev-libs/double-conversion + dev-libs/libevent + dev-libs/libfmt + dev-libs/xxhash + sys-fs/fuse:3 + sys-libs/binutils-libs + sys-libs/libunwind + sys-libs/zlib + + jemalloc? ( >=dev-libs/jemalloc-5.2.1 ) +" +DEPEND=" + ${RDEPEND} + sys-devel/flex +" +BDEPEND=" + app-text/ronn + sys-devel/bison + virtual/pkgconfig + + test? ( dev-cpp/gtest ) +" +>>>>>>> f29f4045 (sys-fs/dwarfs: unbundling WIP):sys-fs/dwarfs/dwarfs-0.5.4-r1.ebuild + +CHECKREQS_DISK_BUILD="1300M" + +DOCS=( "README.md" "CHANGES.md" "TODO" ) + +CMAKE_IN_SOURCE_BUILD=1 +CMAKE_WARN_UNUSED_CLI=0 + +src_prepare(){ + cmake_src_prepare + einfo "setting library path to $(get_libdir)" + sed "s/DESTINATION lib/DESTINATION $(get_libdir)/" -i CMakeLists.txt || die +} + +src_configure(){ + append-cxxflag "-I/usr/include/folly" + + einfo "setting configuration flags to:" + mycmakeargs=( + -DUSE_JEMALLOC=$(usex jemalloc ON OFF) + -DWITH_PYTHON=$(usex python ON OFF) + -DWITH_TESTS=$(usex test ON OFF) + -DPREFER_SYSTEM_ZSTD=1 + -DPREFER_SYSTEM_XXHASH=1 + -DPREFER_SYSTEM_GTEST=1 + -DWITH_LEGACY_FUSE=0 + ) + if use python; then mycmakeargs+=( -DWITH_PYTHON_VERSION=${EPYTHON#python} ); fi + einfo ${mycmakeargs} + cmake_src_configure +} + +src_install(){ + cmake_src_install + #TODO: unbundle libfsst + dolib.so libdwarfs.so libfsst.so +} + +pkg_postinst(){ + elog "Suggest to enable USE 'threads' globally if you have multicore machine" + elog "Since version 0.4.1 GGC builds has been fixed. Now both Clang and GCC are working very well" + elog "You may find more information in the" + elog "${HOMEPAGE}" + elog "About creating: ${HOMEPAGE}/blob/main/doc/mkdwarfs.md" + elog "About mounting: ${HOMEPAGE}/blob/main/doc/dwarfs.md" +} diff --git a/sys-fs/dwarfs/files/unbundle-folly-fbthrift.patch b/sys-fs/dwarfs/files/unbundle-folly-fbthrift.patch new file mode 100644 index 0000000000..62f4ee1f90 --- /dev/null +++ b/sys-fs/dwarfs/files/unbundle-folly-fbthrift.patch @@ -0,0 +1,153 @@ +--- CMakeLists.txt 2021-04-28 16:56:24.432666631 +0200 ++++ CMakeLists.txt2 2021-04-28 17:00:04.622812742 +0200 +@@ -298,7 +298,7 @@ + if(WITH_TESTS OR WITH_BENCHMARKS) + add_library(test_helpers test/test_helpers.cpp test/test_strings.cpp + test/loremipsum.cpp) +- target_link_libraries(test_helpers dwarfs folly) ++ target_link_libraries(test_helpers dwarfs) + set_property(TARGET test_helpers PROPERTY CXX_STANDARD 17) + endif() + +@@ -364,70 +364,7 @@ + + list( + APPEND +- FROZEN_THRIFT_SRC +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_data.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_data.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types.tcc +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types_custom_protocol.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_constants.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_constants.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_metadata.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_metadata.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_visitation.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_for_each_field.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_visit_union.h) +- +-list( +- APPEND +- METADATA_THRIFT_SRC +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_constants.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_constants.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_data.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_data.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_for_each_field.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_layouts.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_layouts.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_metadata.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_metadata.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_types.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_types.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_types.tcc +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_types_custom_protocol.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_visit_union.h +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_visitation.h) +- +-add_custom_command( +- OUTPUT ${FROZEN_THRIFT_SRC} +- COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift +- COMMAND +- cp ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/thrift/frozen.thrift +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/ +- COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift && +- ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1 --gen mstch_cpp2 frozen.thrift +- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1 +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/thrift/frozen.thrift) +- +-add_custom_command( +- OUTPUT ${METADATA_THRIFT_SRC} +- COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs +- COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/thrift/metadata.thrift +- thrift/dwarfs/metadata.thrift +- COMMAND +- cd ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs && +- ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1 --gen mstch_cpp2:frozen2 +- metadata.thrift +- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1 +- ${CMAKE_CURRENT_SOURCE_DIR}/thrift/metadata.thrift) +- +-list( +- APPEND + INCLUDE_DIRS +- ${CMAKE_CURRENT_BINARY_DIR}/folly +- ${CMAKE_CURRENT_BINARY_DIR}/thrift +- ${CMAKE_CURRENT_SOURCE_DIR}/folly +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift + ${CMAKE_CURRENT_BINARY_DIR}) + + if(NOT (ZSTD_FOUND AND PREFER_SYSTEM_ZSTD)) +@@ -445,39 +382,6 @@ + list(APPEND INCLUDE_DIRS ${Jemalloc_INCLUDE_DIRS}) + endif() + +-add_library( +- thrift_light +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/FieldRef.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/protocol/CompactProtocol.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/protocol/BinaryProtocol.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/protocol/DebugProtocol.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/protocol/JSONProtocolCommon.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/protocol/JSONProtocol.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp/protocol/TProtocolException.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp/util/VarintUtils.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/gen/module_types_cpp.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/frozen/Frozen.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/frozen/FrozenUtil.cpp +- ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/cpp2/frozen/schema/MemorySchema.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_data.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types.cpp) +- +-set_property(TARGET thrift_light PROPERTY CXX_STANDARD 17) +- +-target_include_directories(thrift_light PRIVATE ${INCLUDE_DIRS}) +- +-add_library( +- metadata_thrift +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_layouts.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_types.cpp +- ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/gen-cpp2/metadata_data.cpp) +- +-set_property(TARGET metadata_thrift PROPERTY CXX_STANDARD 17) +- +-target_include_directories(metadata_thrift PRIVATE ${INCLUDE_DIRS}) +- +-add_dependencies(metadata_thrift thrift_light) +- + foreach(tgt dwarfs ${BINARY_TARGETS}) + target_include_directories( + ${tgt} SYSTEM +@@ -501,8 +405,6 @@ + set_property(TARGET ${tgt} PROPERTY CXX_STANDARD_REQUIRED ON) + set_property(TARGET ${tgt} PROPERTY CXX_EXTENSIONS OFF) + +- add_dependencies(${tgt} metadata_thrift) +- + if(ENABLE_ASAN) + target_compile_options(${tgt} PRIVATE -fsanitize=address + -fno-omit-frame-pointer) +@@ -550,9 +452,6 @@ + + target_link_libraries( + dwarfs +- metadata_thrift +- thrift_light +- folly + fsst + ${Boost_LIBRARIES} + PkgConfig::LIBARCHIVE +@@ -582,11 +481,6 @@ + if(USE_JEMALLOC) + target_link_libraries(${tgt} ${Jemalloc_LIBRARIES}) + endif() +- if(TARGET folly_exception_tracer) +- target_link_libraries( +- ${tgt} -Wl,--whole-archive folly_exception_tracer_base +- folly_exception_tracer -Wl,--no-whole-archive) +- endif() + endforeach() + + if(STATIC_BUILD_DO_NOT_USE)