From 9f60f91b6026c05fcb1e4ae208679fa6f75a1ca6 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 4 Aug 2024 18:39:10 +0200 Subject: [PATCH] refactor: move rewrite_filesystem to its own library --- CMakeLists.txt | 12 +++++++++--- .../{writer => utility}/rewrite_filesystem.h | 11 ++++++++--- .../{writer => utility}/rewrite_filesystem.cpp | 14 ++++++++------ src/mkdwarfs_main.cpp | 6 +++--- test/compat_test.cpp | 4 ++-- 5 files changed, 30 insertions(+), 17 deletions(-) rename include/dwarfs/{writer => utility}/rewrite_filesystem.h (86%) rename src/dwarfs/{writer => utility}/rewrite_filesystem.cpp (94%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bfd3570..e339cd06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -665,7 +665,6 @@ list(APPEND src/dwarfs/writer/fragment_category.cpp src/dwarfs/writer/fragment_order_parser.cpp src/dwarfs/writer/inode_fragments.cpp - src/dwarfs/writer/rewrite_filesystem.cpp src/dwarfs/writer/rule_based_entry_filter.cpp src/dwarfs/writer/scanner.cpp src/dwarfs/writer/segmenter.cpp @@ -689,6 +688,10 @@ list(APPEND src/dwarfs/writer/internal/similarity_ordering.cpp ) +list(APPEND LIBDWARFS_REWRITE_SRC + src/dwarfs/utility/rewrite_filesystem.cpp +) + list(APPEND LIBDWARFS_EXTRACTOR_SRC src/dwarfs/filesystem_extractor.cpp ) @@ -781,12 +784,14 @@ add_library(dwarfs_common ${LIBDWARFS_COMMON_SRC} ${LIBDWARFS_COMPRESSION_SRC}) add_library(dwarfs_reader ${LIBDWARFS_READER_SRC}) add_library(dwarfs_writer ${LIBDWARFS_WRITER_SRC} ${LIBDWARFS_CATEGORIZER_SRC}) add_library(dwarfs_extractor ${LIBDWARFS_EXTRACTOR_SRC}) +add_library(dwarfs_rewrite ${LIBDWARFS_REWRITE_SRC}) add_library(dwarfs_tool OBJECT ${LIBDWARFS_TOOL_SRC}) target_link_libraries(dwarfs_common PRIVATE dwarfs_folly_lite PkgConfig::LIBCRYPTO xxHash::xxhash phmap range-v3::range-v3) target_link_libraries(dwarfs_reader PUBLIC dwarfs_common PRIVATE range-v3::range-v3) target_link_libraries(dwarfs_writer PUBLIC dwarfs_common PRIVATE phmap range-v3::range-v3) target_link_libraries(dwarfs_extractor PUBLIC dwarfs_reader) +target_link_libraries(dwarfs_rewrite PUBLIC dwarfs_reader dwarfs_writer) target_link_libraries(dwarfs_tool PUBLIC dwarfs_common) if(DWARFS_GIT_BUILD) @@ -1227,7 +1232,7 @@ foreach(tgt ${MAIN_TARGETS} ${BINARY_TARGETS} ${TEST_TARGETS}) target_link_libraries(${tgt} PRIVATE dwarfs_tool) endforeach() -target_link_libraries(mkdwarfs_main PRIVATE dwarfs_reader dwarfs_writer) +target_link_libraries(mkdwarfs_main PRIVATE dwarfs_reader dwarfs_writer dwarfs_rewrite) target_link_libraries(dwarfsck_main PRIVATE dwarfs_reader) target_link_libraries(dwarfsextract_main PRIVATE dwarfs_extractor) @@ -1255,7 +1260,7 @@ if(TARGET segmenter_benchmark) endif() foreach(tgt ${TEST_TARGETS}) - target_link_libraries(${tgt} PRIVATE dwarfs_writer dwarfs_extractor) + target_link_libraries(${tgt} PRIVATE dwarfs_writer dwarfs_rewrite dwarfs_extractor) endforeach() if(STATIC_BUILD_DO_NOT_USE) @@ -1396,6 +1401,7 @@ if(NOT STATIC_BUILD_DO_NOT_USE) dwarfs_reader dwarfs_writer dwarfs_extractor + dwarfs_rewrite LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/include/dwarfs/writer/rewrite_filesystem.h b/include/dwarfs/utility/rewrite_filesystem.h similarity index 86% rename from include/dwarfs/writer/rewrite_filesystem.h rename to include/dwarfs/utility/rewrite_filesystem.h index 044ea0b7..c4ce6534 100644 --- a/include/dwarfs/writer/rewrite_filesystem.h +++ b/include/dwarfs/utility/rewrite_filesystem.h @@ -39,10 +39,15 @@ namespace writer { class category_resolver; class filesystem_writer; +} // namespace writer + +namespace utility { + void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs, - filesystem_writer& writer, - category_resolver const& cat_resolver, + dwarfs::writer::filesystem_writer& writer, + dwarfs::writer::category_resolver const& cat_resolver, rewrite_options const& opts); -} // namespace writer +} // namespace utility + } // namespace dwarfs diff --git a/src/dwarfs/writer/rewrite_filesystem.cpp b/src/dwarfs/utility/rewrite_filesystem.cpp similarity index 94% rename from src/dwarfs/writer/rewrite_filesystem.cpp rename to src/dwarfs/utility/rewrite_filesystem.cpp index 2892893e..b0aad799 100644 --- a/src/dwarfs/writer/rewrite_filesystem.cpp +++ b/src/dwarfs/utility/rewrite_filesystem.cpp @@ -29,12 +29,15 @@ #include #include -namespace dwarfs::writer { +namespace dwarfs::utility { void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs, - filesystem_writer& fs_writer, - category_resolver const& cat_resolver, + dwarfs::writer::filesystem_writer& fs_writer, + dwarfs::writer::category_resolver const& cat_resolver, rewrite_options const& opts) { + using dwarfs::writer::fragment_category; + using dwarfs::writer::internal::block_data; + LOG_PROXY(debug_logger_policy, lgr); auto parser = fs.get_parser(); @@ -178,8 +181,7 @@ void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs, << "), compressing using '" << writer.get_compressor(s->type()).describe() << "'"; - writer.write_history( - std::make_shared(hist.serialize())); + writer.write_history(std::make_shared(hist.serialize())); } else { LOG_VERBOSE << "removing " << get_section_name(s->type()); } @@ -199,4 +201,4 @@ void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs, writer.flush(); } -} // namespace dwarfs::writer +} // namespace dwarfs::utility diff --git a/src/mkdwarfs_main.cpp b/src/mkdwarfs_main.cpp index dd57cb82..13f1d406 100644 --- a/src/mkdwarfs_main.cpp +++ b/src/mkdwarfs_main.cpp @@ -74,6 +74,7 @@ #include #include #include +#include #include #include #include @@ -83,7 +84,6 @@ #include #include #include -#include #include #include #include @@ -1335,8 +1335,8 @@ int mkdwarfs_main(int argc, sys_char** argv, iolayer const& iol) { try { if (recompress) { - writer::rewrite_filesystem(lgr, *input_filesystem, *fsw, *cat_resolver, - rw_opts); + utility::rewrite_filesystem(lgr, *input_filesystem, *fsw, *cat_resolver, + rw_opts); } else { writer::segmenter_factory sf(lgr, prog, options.inode.categorizer_mgr, sf_config); diff --git a/test/compat_test.cpp b/test/compat_test.cpp index 0ee12f96..226cde01 100644 --- a/test/compat_test.cpp +++ b/test/compat_test.cpp @@ -44,10 +44,10 @@ #include #include #include +#include #include #include #include -#include #include #include "mmap_mock.h" @@ -1127,7 +1127,7 @@ TEST_P(rewrite, filesystem_rewrite) { reader::filesystem_v2 fs(lgr, os, mm, fsopts); writer::filesystem_block_category_resolver resolver( fs.get_all_block_categories()); - writer::rewrite_filesystem(lgr, fs, fsw, resolver, opts); + utility::rewrite_filesystem(lgr, fs, fsw, resolver, opts); }; {