aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2010-08-12 15:21:55 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2010-08-12 18:26:26 +0100
commite398520f7027130da8aae1b296c57d666caa6d89 (patch)
tree309b71a99ef15c025e90151a8823149a7b138aff
parente60c58deb05398a2539ef630521f7f7880315891 (diff)
downloadpaludis-e398520f7027130da8aae1b296c57d666caa6d89.tar.gz
paludis-e398520f7027130da8aae1b296c57d666caa6d89.tar.xz
Use output managers for merger hooks
-rw-r--r--paludis/fs_merger.cc29
-rw-r--r--paludis/fs_merger.hh3
-rw-r--r--paludis/fs_merger_TEST.cc3
-rw-r--r--paludis/merger.cc26
-rw-r--r--paludis/merger.hh3
-rw-r--r--paludis/ndbam_merger.cc1
-rw-r--r--paludis/repositories/e/pbin_merger.cc1
-rw-r--r--paludis/repositories/e/vdb_merger.cc1
-rw-r--r--paludis/tar_merger.cc1
-rw-r--r--paludis/tar_merger.hh2
-rw-r--r--paludis/tar_merger_TEST.cc2
11 files changed, 45 insertions, 27 deletions
diff --git a/paludis/fs_merger.cc b/paludis/fs_merger.cc
index 426a272..6770b76 100644
--- a/paludis/fs_merger.cc
+++ b/paludis/fs_merger.cc
@@ -83,6 +83,7 @@ FSMerger::FSMerger(const FSMergerParams & p) :
n::get_new_ids_or_minus_one() = p.get_new_ids_or_minus_one(),
n::image() = p.image(),
n::install_under() = p.install_under(),
+ n::maybe_output_manager() = p.maybe_output_manager(),
n::merged_entries() = p.merged_entries(),
n::no_chown() = p.no_chown(),
n::options() = p.options(),
@@ -310,7 +311,7 @@ FSMerger::install_file(const FSEntry & src, const FSEntry & dst_dir, const std::
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst_dir / src.basename()))
("REAL_DESTINATION", stringify(dst_real))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.file.pre_hooks.failure", ll_warning, lc_context) <<
"Merge of '" << src << "' to '" << dst_dir << "' pre hooks returned non-zero";
@@ -419,7 +420,7 @@ FSMerger::install_file(const FSEntry & src, const FSEntry & dst_dir, const std::
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst_dir / src.basename()))
("REAL_DESTINATION", stringify(dst_real))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.file.post_hooks.failed", ll_warning, lc_context) <<
"Merge of '" << src << "' to '" << dst_dir << "' post hooks returned non-zero";
@@ -500,7 +501,7 @@ FSMerger::install_dir(const FSEntry & src, const FSEntry & dst_dir)
Hook("merger_install_dir_pre")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst_dir / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.dir.pre_hooks.failure", ll_warning, lc_context)
<< "Merge of '" << src << "' to '" << dst_dir << "' pre hooks returned non-zero";
@@ -557,7 +558,7 @@ FSMerger::install_dir(const FSEntry & src, const FSEntry & dst_dir)
Hook("merger_install_dir_post")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst_dir / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.dir.post_hooks.failure", ll_warning, lc_context)
<< "Merge of '" << src << "' to '" << dst_dir << "' post hooks returned non-zero";
@@ -577,7 +578,7 @@ FSMerger::install_sym(const FSEntry & src, const FSEntry & dst_dir)
Hook("merger_install_sym_pre")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.sym.pre_hooks.failure", ll_warning, lc_context)
<< "Merge of '" << src << "' to '" << dst_dir << "' pre hooks returned non-zero";
@@ -621,7 +622,7 @@ FSMerger::install_sym(const FSEntry & src, const FSEntry & dst_dir)
Hook("merger_install_sym_post")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.sym.post_hooks.failure", ll_warning, lc_context) <<
"Merge of '" << src << "' to '" << dst_dir << "' post hooks returned non-zero";
@@ -634,7 +635,7 @@ FSMerger::unlink_file(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_file_pre")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_file.pre_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' pre hooks returned non-zero";
@@ -644,7 +645,7 @@ FSMerger::unlink_file(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_file_post")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_file.post_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' post hooks returned non-zero";
}
@@ -655,7 +656,7 @@ FSMerger::unlink_sym(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_sym_pre")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_sym.pre_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' pre hooks returned non-zero";
@@ -664,7 +665,7 @@ FSMerger::unlink_sym(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_sym_post")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_sym.post_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' post hooks returned non-zero";
}
@@ -675,7 +676,7 @@ FSMerger::unlink_dir(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_dir_pre")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_dir.pre_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' pre hooks returned non-zero";
@@ -684,7 +685,7 @@ FSMerger::unlink_dir(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_dir_post")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_dir.post_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' post hooks returned non-zero";
}
@@ -695,7 +696,7 @@ FSMerger::unlink_misc(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_misc_pre")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_misc.pre_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' pre hooks returned non-zero";
@@ -704,7 +705,7 @@ FSMerger::unlink_misc(FSEntry d)
if (0 != _imp->params.environment()->perform_hook(extend_hook(
Hook("merger_unlink_misc_post")
("UNLINK_TARGET", stringify(d))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.unlink_misc.post_hooks.failure", ll_warning, lc_context) <<
"Unmerge of '" << d << "' post hooks returned non-zero";
}
diff --git a/paludis/fs_merger.hh b/paludis/fs_merger.hh
index a3553cd..52f3935 100644
--- a/paludis/fs_merger.hh
+++ b/paludis/fs_merger.hh
@@ -54,6 +54,7 @@ namespace paludis
typedef Name<struct get_new_ids_or_minus_one_name> get_new_ids_or_minus_one;
typedef Name<struct image_name> image;
typedef Name<struct install_under_name> install_under;
+ typedef Name<struct maybe_output_manager_name> maybe_output_manager;
typedef Name<struct merged_entries_name> merged_entries;
typedef Name<struct no_chown_name> no_chown;
typedef Name<struct options_name> options;
@@ -85,6 +86,8 @@ namespace paludis
NamedValue<n::image, FSEntry> image;
NamedValue<n::install_under, FSEntry> install_under;
+ NamedValue<n::maybe_output_manager, std::shared_ptr<OutputManager> > maybe_output_manager;
+
/**
* We record things we merged here.
*
diff --git a/paludis/fs_merger_TEST.cc b/paludis/fs_merger_TEST.cc
index bb54e4f..9af9fe3 100644
--- a/paludis/fs_merger_TEST.cc
+++ b/paludis/fs_merger_TEST.cc
@@ -26,6 +26,7 @@
#include <paludis/util/safe_ifstream.hh>
#include <paludis/util/set.hh>
#include <paludis/util/timestamp.hh>
+#include <paludis/util/make_null_shared_ptr.hh>
#include <paludis/hook.hh>
#include <test/test_framework.hh>
#include <test/test_runner.hh>
@@ -179,6 +180,7 @@ namespace
n::get_new_ids_or_minus_one() = &get_new_ids_or_minus_one,
n::image() = image_dir,
n::install_under() = FSEntry("/"),
+ n::maybe_output_manager() = make_null_shared_ptr(),
n::merged_entries() = std::make_shared<FSEntrySet>(),
n::no_chown() = true,
n::options() = MergerOptions() + mo_rewrite_symlinks + mo_allow_empty_dirs,
@@ -200,6 +202,7 @@ namespace
n::get_new_ids_or_minus_one() = &get_new_ids_or_minus_one,
n::image() = image_dir,
n::install_under() = FSEntry("/"),
+ n::maybe_output_manager() = make_null_shared_ptr(),
n::merged_entries() = std::make_shared<FSEntrySet>(),
n::no_chown() = true,
n::options() = o,
diff --git a/paludis/merger.cc b/paludis/merger.cc
index 88a2971..1aa8726 100644
--- a/paludis/merger.cc
+++ b/paludis/merger.cc
@@ -84,7 +84,7 @@ Merger::check()
Hook("merger_check_pre")
("INSTALL_SOURCE", stringify(_imp->params.image()))
("INSTALL_DESTINATION", stringify(_imp->params.root()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
do_dir_recursive(true, _imp->params.image(), _imp->params.root() / _imp->params.install_under());
@@ -93,7 +93,7 @@ Merger::check()
Hook("merger_check_post")
("INSTALL_SOURCE", stringify(_imp->params.image()))
("INSTALL_DESTINATION", stringify(_imp->params.root()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
return _imp->result;
@@ -109,7 +109,7 @@ Merger::merge()
Hook("merger_install_pre")
("INSTALL_SOURCE", stringify(_imp->params.image()))
("INSTALL_DESTINATION", stringify(_imp->params.root()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.pre_hooks.failure", ll_warning, lc_context) <<
"Merge of '" << _imp->params.image() << "' to '" << _imp->params.root() << "' pre hooks returned non-zero";
@@ -125,7 +125,7 @@ Merger::merge()
Hook("merger_install_post")
("INSTALL_SOURCE", stringify(_imp->params.image()))
("INSTALL_DESTINATION", stringify(_imp->params.root()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
Log::get_instance()->message("merger.post_hooks.failure", ll_warning, lc_context) <<
"Merge of '" << _imp->params.image() << "' to '" << _imp->params.root() << "' post hooks returned non-zero";
}
@@ -239,7 +239,7 @@ Merger::on_file(bool is_check, const FSEntry & src, const FSEntry & dst)
Hook("merger_check_file_pre")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
if (! is_check)
@@ -249,7 +249,7 @@ Merger::on_file(bool is_check, const FSEntry & src, const FSEntry & dst)
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))
.grab_output(Hook::AllowedOutputValues()("skip"))),
- make_null_shared_ptr()));
+ _imp->params.maybe_output_manager()));
if (hr.max_exit_status() != 0)
Log::get_instance()->message("merger.file.skip_hooks.failure", ll_warning, lc_context) << "Merge of '"
@@ -272,7 +272,7 @@ Merger::on_file(bool is_check, const FSEntry & src, const FSEntry & dst)
Hook("merger_check_file_post")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
}
@@ -286,7 +286,7 @@ Merger::on_dir(bool is_check, const FSEntry & src, const FSEntry & dst)
Hook("merger_check_dir_pre")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
if (! is_check)
@@ -296,7 +296,7 @@ Merger::on_dir(bool is_check, const FSEntry & src, const FSEntry & dst)
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))
.grab_output(Hook::AllowedOutputValues()("skip"))),
- make_null_shared_ptr()));
+ _imp->params.maybe_output_manager()));
if (hr.max_exit_status() != 0)
Log::get_instance()->message("merger.dir.skip_hooks.failure", ll_warning, lc_context) << "Merge of '"
@@ -317,7 +317,7 @@ Merger::on_dir(bool is_check, const FSEntry & src, const FSEntry & dst)
Hook("merger_check_dir_post")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
}
@@ -331,7 +331,7 @@ Merger::on_sym(bool is_check, const FSEntry & src, const FSEntry & dst)
Hook("merger_check_sym_pre")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
if (! is_check)
@@ -341,7 +341,7 @@ Merger::on_sym(bool is_check, const FSEntry & src, const FSEntry & dst)
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))
.grab_output(Hook::AllowedOutputValues()("skip"))),
- make_null_shared_ptr()));
+ _imp->params.maybe_output_manager()));
if (hr.max_exit_status() != 0)
Log::get_instance()->message("merger.sym.skip_hooks.failure", ll_warning, lc_context) << "Merge of '"
@@ -370,7 +370,7 @@ Merger::on_sym(bool is_check, const FSEntry & src, const FSEntry & dst)
Hook("merger_check_sym_post")
("INSTALL_SOURCE", stringify(src))
("INSTALL_DESTINATION", stringify(dst / src.basename()))),
- make_null_shared_ptr()).max_exit_status())
+ _imp->params.maybe_output_manager()).max_exit_status())
make_check_fail();
}
diff --git a/paludis/merger.hh b/paludis/merger.hh
index 7020940..38ad13c 100644
--- a/paludis/merger.hh
+++ b/paludis/merger.hh
@@ -28,6 +28,7 @@
#include <paludis/hook-fwd.hh>
#include <paludis/environment-fwd.hh>
#include <paludis/merger_entry_type.hh>
+#include <paludis/output_manager-fwd.hh>
namespace paludis
{
@@ -38,6 +39,7 @@ namespace paludis
typedef Name<struct get_new_ids_or_minus_one_name> get_new_ids_or_minus_one;
typedef Name<struct image_name> image;
typedef Name<struct install_under_name> install_under;
+ typedef Name<struct maybe_output_manager_name> maybe_output_manager;
typedef Name<struct merged_entries_name> merged_entries;
typedef Name<struct no_chown_name> no_chown;
typedef Name<struct options_name> options;
@@ -59,6 +61,7 @@ namespace paludis
NamedValue<n::get_new_ids_or_minus_one, std::function<std::pair<uid_t, gid_t> (const FSEntry &)> > get_new_ids_or_minus_one;
NamedValue<n::image, FSEntry> image;
NamedValue<n::install_under, FSEntry> install_under;
+ NamedValue<n::maybe_output_manager, std::shared_ptr<OutputManager> > maybe_output_manager;
NamedValue<n::merged_entries, std::shared_ptr<FSEntrySet> > merged_entries;
NamedValue<n::no_chown, bool> no_chown;
NamedValue<n::options, MergerOptions> options;
diff --git a/paludis/ndbam_merger.cc b/paludis/ndbam_merger.cc
index 2b5796d..fa4957a 100644
--- a/paludis/ndbam_merger.cc
+++ b/paludis/ndbam_merger.cc
@@ -74,6 +74,7 @@ NDBAMMerger::NDBAMMerger(const NDBAMMergerParams & p) :
n::get_new_ids_or_minus_one() = p.get_new_ids_or_minus_one(),
n::image() = p.image(),
n::install_under() = p.install_under(),
+ n::maybe_output_manager() = p.output_manager(),
n::merged_entries() = p.merged_entries(),
n::no_chown() = ! getenv_with_default("PALUDIS_NO_CHOWN", "").empty(),
n::options() = p.options(),
diff --git a/paludis/repositories/e/pbin_merger.cc b/paludis/repositories/e/pbin_merger.cc
index 9d7e9fc..0dceaf2 100644
--- a/paludis/repositories/e/pbin_merger.cc
+++ b/paludis/repositories/e/pbin_merger.cc
@@ -69,6 +69,7 @@ PbinMerger::PbinMerger(const PbinMergerParams & p) :
n::get_new_ids_or_minus_one() = std::bind(&get_new_ids_or_minus_one, p.environment(), std::placeholders::_1),
n::image() = p.image(),
n::install_under() = FSEntry("/"),
+ n::maybe_output_manager() = p.output_manager(),
n::merged_entries() = p.merged_entries(),
n::no_chown() = ! getenv_with_default("PALUDIS_NO_CHOWN", "").empty(),
n::options() = p.options(),
diff --git a/paludis/repositories/e/vdb_merger.cc b/paludis/repositories/e/vdb_merger.cc
index 6ec3bbf..1bcf3e9 100644
--- a/paludis/repositories/e/vdb_merger.cc
+++ b/paludis/repositories/e/vdb_merger.cc
@@ -86,6 +86,7 @@ VDBMerger::VDBMerger(const VDBMergerParams & p) :
n::get_new_ids_or_minus_one() = std::bind(&get_new_ids_or_minus_one, p.environment(), std::placeholders::_1),
n::image() = p.image(),
n::install_under() = FSEntry("/"),
+ n::maybe_output_manager() = p.output_manager(),
n::merged_entries() = p.merged_entries(),
n::no_chown() = ! getenv_with_default("PALUDIS_NO_CHOWN", "").empty(),
n::options() = p.options(),
diff --git a/paludis/tar_merger.cc b/paludis/tar_merger.cc
index ee71102..24c6b42 100644
--- a/paludis/tar_merger.cc
+++ b/paludis/tar_merger.cc
@@ -114,6 +114,7 @@ TarMerger::TarMerger(const TarMergerParams & p) :
n::get_new_ids_or_minus_one() = p.get_new_ids_or_minus_one(),
n::image() = p.image(),
n::install_under() = FSEntry("/"),
+ n::maybe_output_manager() = p.maybe_output_manager(),
n::merged_entries() = p.merged_entries(),
n::no_chown() = p.no_chown(),
n::options() = p.options(),
diff --git a/paludis/tar_merger.hh b/paludis/tar_merger.hh
index 474abbd..ec290ba 100644
--- a/paludis/tar_merger.hh
+++ b/paludis/tar_merger.hh
@@ -34,6 +34,7 @@ namespace paludis
typedef Name<struct get_new_ids_or_minus_one_name> get_new_ids_or_minus_one;
typedef Name<struct image_name> image;
typedef Name<struct install_under_name> install_under;
+ typedef Name<struct maybe_output_manager_name> maybe_output_manager;
typedef Name<struct merged_entries_name> merged_entries;
typedef Name<struct no_chown_name> no_chown;
typedef Name<struct options_name> options;
@@ -57,6 +58,7 @@ namespace paludis
NamedValue<n::get_new_ids_or_minus_one, std::function<std::pair<uid_t, gid_t> (const FSEntry &)> > get_new_ids_or_minus_one;
NamedValue<n::image, FSEntry> image;
NamedValue<n::install_under, FSEntry> install_under;
+ NamedValue<n::maybe_output_manager, std::shared_ptr<OutputManager> > maybe_output_manager;
NamedValue<n::merged_entries, std::shared_ptr<FSEntrySet> > merged_entries;
NamedValue<n::no_chown, bool> no_chown;
NamedValue<n::options, MergerOptions> options;
diff --git a/paludis/tar_merger_TEST.cc b/paludis/tar_merger_TEST.cc
index 41eed1c..cb41caf 100644
--- a/paludis/tar_merger_TEST.cc
+++ b/paludis/tar_merger_TEST.cc
@@ -26,6 +26,7 @@
#include <paludis/util/set.hh>
#include <paludis/util/system.hh>
#include <paludis/util/stringify.hh>
+#include <paludis/util/make_null_shared_ptr.hh>
#include <paludis/hook.hh>
#include <test/test_framework.hh>
#include <test/test_runner.hh>
@@ -105,6 +106,7 @@ namespace test_cases
n::get_new_ids_or_minus_one() = &get_new_ids_or_minus_one,
n::image() = FSEntry("tar_merger_TEST_dir") / "simple",
n::install_under() = FSEntry("/"),
+ n::maybe_output_manager() = make_null_shared_ptr(),
n::merged_entries() = std::make_shared<FSEntrySet>(),
n::no_chown() = true,
n::options() = MergerOptions(),