refactor: move rewrite_filesystem to its own library

This commit is contained in:
Marcus Holland-Moritz 2024-08-04 18:39:10 +02:00
parent c1fbaf7789
commit 9f60f91b60
5 changed files with 30 additions and 17 deletions

View File

@ -665,7 +665,6 @@ list(APPEND
src/dwarfs/writer/fragment_category.cpp src/dwarfs/writer/fragment_category.cpp
src/dwarfs/writer/fragment_order_parser.cpp src/dwarfs/writer/fragment_order_parser.cpp
src/dwarfs/writer/inode_fragments.cpp src/dwarfs/writer/inode_fragments.cpp
src/dwarfs/writer/rewrite_filesystem.cpp
src/dwarfs/writer/rule_based_entry_filter.cpp src/dwarfs/writer/rule_based_entry_filter.cpp
src/dwarfs/writer/scanner.cpp src/dwarfs/writer/scanner.cpp
src/dwarfs/writer/segmenter.cpp src/dwarfs/writer/segmenter.cpp
@ -689,6 +688,10 @@ list(APPEND
src/dwarfs/writer/internal/similarity_ordering.cpp src/dwarfs/writer/internal/similarity_ordering.cpp
) )
list(APPEND LIBDWARFS_REWRITE_SRC
src/dwarfs/utility/rewrite_filesystem.cpp
)
list(APPEND LIBDWARFS_EXTRACTOR_SRC list(APPEND LIBDWARFS_EXTRACTOR_SRC
src/dwarfs/filesystem_extractor.cpp 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_reader ${LIBDWARFS_READER_SRC})
add_library(dwarfs_writer ${LIBDWARFS_WRITER_SRC} ${LIBDWARFS_CATEGORIZER_SRC}) add_library(dwarfs_writer ${LIBDWARFS_WRITER_SRC} ${LIBDWARFS_CATEGORIZER_SRC})
add_library(dwarfs_extractor ${LIBDWARFS_EXTRACTOR_SRC}) add_library(dwarfs_extractor ${LIBDWARFS_EXTRACTOR_SRC})
add_library(dwarfs_rewrite ${LIBDWARFS_REWRITE_SRC})
add_library(dwarfs_tool OBJECT ${LIBDWARFS_TOOL_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_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_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_writer PUBLIC dwarfs_common PRIVATE phmap range-v3::range-v3)
target_link_libraries(dwarfs_extractor PUBLIC dwarfs_reader) 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) target_link_libraries(dwarfs_tool PUBLIC dwarfs_common)
if(DWARFS_GIT_BUILD) if(DWARFS_GIT_BUILD)
@ -1227,7 +1232,7 @@ foreach(tgt ${MAIN_TARGETS} ${BINARY_TARGETS} ${TEST_TARGETS})
target_link_libraries(${tgt} PRIVATE dwarfs_tool) target_link_libraries(${tgt} PRIVATE dwarfs_tool)
endforeach() 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(dwarfsck_main PRIVATE dwarfs_reader)
target_link_libraries(dwarfsextract_main PRIVATE dwarfs_extractor) target_link_libraries(dwarfsextract_main PRIVATE dwarfs_extractor)
@ -1255,7 +1260,7 @@ if(TARGET segmenter_benchmark)
endif() endif()
foreach(tgt ${TEST_TARGETS}) 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() endforeach()
if(STATIC_BUILD_DO_NOT_USE) if(STATIC_BUILD_DO_NOT_USE)
@ -1396,6 +1401,7 @@ if(NOT STATIC_BUILD_DO_NOT_USE)
dwarfs_reader dwarfs_reader
dwarfs_writer dwarfs_writer
dwarfs_extractor dwarfs_extractor
dwarfs_rewrite
LIBRARY DESTINATION lib LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib) ARCHIVE DESTINATION lib)

View File

@ -39,10 +39,15 @@ namespace writer {
class category_resolver; class category_resolver;
class filesystem_writer; class filesystem_writer;
} // namespace writer
namespace utility {
void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs, void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs,
filesystem_writer& writer, dwarfs::writer::filesystem_writer& writer,
category_resolver const& cat_resolver, dwarfs::writer::category_resolver const& cat_resolver,
rewrite_options const& opts); rewrite_options const& opts);
} // namespace writer } // namespace utility
} // namespace dwarfs } // namespace dwarfs

View File

@ -29,12 +29,15 @@
#include <dwarfs/writer/internal/block_data.h> #include <dwarfs/writer/internal/block_data.h>
#include <dwarfs/writer/internal/filesystem_writer_detail.h> #include <dwarfs/writer/internal/filesystem_writer_detail.h>
namespace dwarfs::writer { namespace dwarfs::utility {
void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs, void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs,
filesystem_writer& fs_writer, dwarfs::writer::filesystem_writer& fs_writer,
category_resolver const& cat_resolver, dwarfs::writer::category_resolver const& cat_resolver,
rewrite_options const& opts) { rewrite_options const& opts) {
using dwarfs::writer::fragment_category;
using dwarfs::writer::internal::block_data;
LOG_PROXY(debug_logger_policy, lgr); LOG_PROXY(debug_logger_policy, lgr);
auto parser = fs.get_parser(); auto parser = fs.get_parser();
@ -178,8 +181,7 @@ void rewrite_filesystem(logger& lgr, dwarfs::reader::filesystem_v2 const& fs,
<< "), compressing using '" << "), compressing using '"
<< writer.get_compressor(s->type()).describe() << "'"; << writer.get_compressor(s->type()).describe() << "'";
writer.write_history( writer.write_history(std::make_shared<block_data>(hist.serialize()));
std::make_shared<internal::block_data>(hist.serialize()));
} else { } else {
LOG_VERBOSE << "removing " << get_section_name(s->type()); 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(); writer.flush();
} }
} // namespace dwarfs::writer } // namespace dwarfs::utility

View File

@ -74,6 +74,7 @@
#include <dwarfs/tool/program_options_helpers.h> #include <dwarfs/tool/program_options_helpers.h>
#include <dwarfs/tool/tool.h> #include <dwarfs/tool/tool.h>
#include <dwarfs/util.h> #include <dwarfs/util.h>
#include <dwarfs/utility/rewrite_filesystem.h>
#include <dwarfs/writer/categorizer.h> #include <dwarfs/writer/categorizer.h>
#include <dwarfs/writer/category_parser.h> #include <dwarfs/writer/category_parser.h>
#include <dwarfs/writer/chmod_entry_transformer.h> #include <dwarfs/writer/chmod_entry_transformer.h>
@ -83,7 +84,6 @@
#include <dwarfs/writer/filesystem_writer.h> #include <dwarfs/writer/filesystem_writer.h>
#include <dwarfs/writer/filter_debug.h> #include <dwarfs/writer/filter_debug.h>
#include <dwarfs/writer/fragment_order_parser.h> #include <dwarfs/writer/fragment_order_parser.h>
#include <dwarfs/writer/rewrite_filesystem.h>
#include <dwarfs/writer/rule_based_entry_filter.h> #include <dwarfs/writer/rule_based_entry_filter.h>
#include <dwarfs/writer/scanner.h> #include <dwarfs/writer/scanner.h>
#include <dwarfs/writer/segmenter_factory.h> #include <dwarfs/writer/segmenter_factory.h>
@ -1335,7 +1335,7 @@ int mkdwarfs_main(int argc, sys_char** argv, iolayer const& iol) {
try { try {
if (recompress) { if (recompress) {
writer::rewrite_filesystem(lgr, *input_filesystem, *fsw, *cat_resolver, utility::rewrite_filesystem(lgr, *input_filesystem, *fsw, *cat_resolver,
rw_opts); rw_opts);
} else { } else {
writer::segmenter_factory sf(lgr, prog, options.inode.categorizer_mgr, writer::segmenter_factory sf(lgr, prog, options.inode.categorizer_mgr,

View File

@ -44,10 +44,10 @@
#include <dwarfs/options.h> #include <dwarfs/options.h>
#include <dwarfs/reader/filesystem_v2.h> #include <dwarfs/reader/filesystem_v2.h>
#include <dwarfs/thread_pool.h> #include <dwarfs/thread_pool.h>
#include <dwarfs/utility/rewrite_filesystem.h>
#include <dwarfs/vfs_stat.h> #include <dwarfs/vfs_stat.h>
#include <dwarfs/writer/filesystem_block_category_resolver.h> #include <dwarfs/writer/filesystem_block_category_resolver.h>
#include <dwarfs/writer/filesystem_writer.h> #include <dwarfs/writer/filesystem_writer.h>
#include <dwarfs/writer/rewrite_filesystem.h>
#include <dwarfs/writer/writer_progress.h> #include <dwarfs/writer/writer_progress.h>
#include "mmap_mock.h" #include "mmap_mock.h"
@ -1127,7 +1127,7 @@ TEST_P(rewrite, filesystem_rewrite) {
reader::filesystem_v2 fs(lgr, os, mm, fsopts); reader::filesystem_v2 fs(lgr, os, mm, fsopts);
writer::filesystem_block_category_resolver resolver( writer::filesystem_block_category_resolver resolver(
fs.get_all_block_categories()); fs.get_all_block_categories());
writer::rewrite_filesystem(lgr, fs, fsw, resolver, opts); utility::rewrite_filesystem(lgr, fs, fsw, resolver, opts);
}; };
{ {