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 <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2021-04-28 23:06:34 +02:00
parent fedfd617e9
commit 0b9e1a113f
2 changed files with 259 additions and 0 deletions

View File

@@ -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"
}

View File

@@ -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)