diff options
-rw-r--r-- | paludis/fs_merger.cc | 29 | ||||
-rw-r--r-- | paludis/fs_merger.hh | 3 | ||||
-rw-r--r-- | paludis/fs_merger_TEST.cc | 3 | ||||
-rw-r--r-- | paludis/merger.cc | 26 | ||||
-rw-r--r-- | paludis/merger.hh | 3 | ||||
-rw-r--r-- | paludis/ndbam_merger.cc | 1 | ||||
-rw-r--r-- | paludis/repositories/e/pbin_merger.cc | 1 | ||||
-rw-r--r-- | paludis/repositories/e/vdb_merger.cc | 1 | ||||
-rw-r--r-- | paludis/tar_merger.cc | 1 | ||||
-rw-r--r-- | paludis/tar_merger.hh | 2 | ||||
-rw-r--r-- | paludis/tar_merger_TEST.cc | 2 |
11 files changed, 45 insertions, 27 deletions
diff --git a/paludis/fs_merger.cc b/paludis/fs_merger.cc index 426a2723e..6770b76ff 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 a3553cd7d..52f3935f8 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 bb54e4fbc..9af9fe329 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 88a2971b6..1aa872618 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 702094005..38ad13c74 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 2b5796d8d..fa4957a7d 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 9d7e9fca0..0dceaf214 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 6ec3bbf87..1bcf3e939 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 ee7110264..24c6b42a0 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 474abbd96..ec290bac9 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 41eed1cb5..cb41cafe5 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(), |