mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-09 20:41:04 -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_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)
|
||||||
|
|
||||||
|
@ -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
|
@ -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
|
@ -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,8 +1335,8 @@ 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,
|
||||||
sf_config);
|
sf_config);
|
||||||
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user