mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-09 12:28:13 -04:00
refactor: move rewrite_filesystem to its own library
This commit is contained in:
parent
c1fbaf7789
commit
9f60f91b60
@ -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)
|
||||
|
||||
|
@ -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
|
@ -29,12 +29,15 @@
|
||||
#include <dwarfs/writer/internal/block_data.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,
|
||||
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<internal::block_data>(hist.serialize()));
|
||||
writer.write_history(std::make_shared<block_data>(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
|
@ -74,6 +74,7 @@
|
||||
#include <dwarfs/tool/program_options_helpers.h>
|
||||
#include <dwarfs/tool/tool.h>
|
||||
#include <dwarfs/util.h>
|
||||
#include <dwarfs/utility/rewrite_filesystem.h>
|
||||
#include <dwarfs/writer/categorizer.h>
|
||||
#include <dwarfs/writer/category_parser.h>
|
||||
#include <dwarfs/writer/chmod_entry_transformer.h>
|
||||
@ -83,7 +84,6 @@
|
||||
#include <dwarfs/writer/filesystem_writer.h>
|
||||
#include <dwarfs/writer/filter_debug.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/scanner.h>
|
||||
#include <dwarfs/writer/segmenter_factory.h>
|
||||
@ -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);
|
||||
|
@ -44,10 +44,10 @@
|
||||
#include <dwarfs/options.h>
|
||||
#include <dwarfs/reader/filesystem_v2.h>
|
||||
#include <dwarfs/thread_pool.h>
|
||||
#include <dwarfs/utility/rewrite_filesystem.h>
|
||||
#include <dwarfs/vfs_stat.h>
|
||||
#include <dwarfs/writer/filesystem_block_category_resolver.h>
|
||||
#include <dwarfs/writer/filesystem_writer.h>
|
||||
#include <dwarfs/writer/rewrite_filesystem.h>
|
||||
#include <dwarfs/writer/writer_progress.h>
|
||||
|
||||
#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);
|
||||
};
|
||||
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user