diff options
author | 2010-12-08 19:50:41 +0000 | |
---|---|---|
committer | 2010-12-08 20:33:47 +0000 | |
commit | 1bb75d1a67d4a857a15f4fdb140cabade672214c (patch) | |
tree | ad0f3703b09e6d8e62566b10db46a36147fdce7c /paludis/repositories/e/do_install_action.cc | |
parent | b403744d94299bf5dc4c5a1a7650a76d70d2d72c (diff) | |
download | paludis-1bb75d1a67d4a857a15f4fdb140cabade672214c.tar.gz paludis-1bb75d1a67d4a857a15f4fdb140cabade672214c.tar.xz |
Support replacing for pbin merges
Diffstat (limited to 'paludis/repositories/e/do_install_action.cc')
-rw-r--r-- | paludis/repositories/e/do_install_action.cc | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/paludis/repositories/e/do_install_action.cc b/paludis/repositories/e/do_install_action.cc index c009a445b..35cd931c3 100644 --- a/paludis/repositories/e/do_install_action.cc +++ b/paludis/repositories/e/do_install_action.cc @@ -412,27 +412,29 @@ paludis::erepository::do_install_action( } } - for (PackageIDSequence::ConstIterator i(install_action.options.replacing()->begin()), i_end(install_action.options.replacing()->end()) ; - i != i_end ; ++i) - { - Context local_context("When cleaning '" + stringify(**i) + "':"); - if ((*i)->name() == id->name() && (*i)->version() == id->version()) - continue; - - if (id->eapi()->supported()->ebuild_phases()->ebuild_new_upgrade_phase_order()) - if ((*i)->name() == id->name() && slot_is_same(*i, id)) + /* replacing for pbins is done during the merge */ + if (install_action.options.destination()->installed_root_key()) + for (PackageIDSequence::ConstIterator i(install_action.options.replacing()->begin()), i_end(install_action.options.replacing()->end()) ; + i != i_end ; ++i) + { + Context local_context("When cleaning '" + stringify(**i) + "':"); + if ((*i)->name() == id->name() && (*i)->version() == id->version()) continue; - UninstallActionOptions uo(make_named_values<UninstallActionOptions>( - n::config_protect() = used_config_protect, - n::if_for_install_id() = id, - n::ignore_for_unmerge() = std::bind(&ignore_merged, merged_entries, + if (id->eapi()->supported()->ebuild_phases()->ebuild_new_upgrade_phase_order()) + if ((*i)->name() == id->name() && slot_is_same(*i, id)) + continue; + + UninstallActionOptions uo(make_named_values<UninstallActionOptions>( + n::config_protect() = used_config_protect, + n::if_for_install_id() = id, + n::ignore_for_unmerge() = std::bind(&ignore_merged, merged_entries, std::placeholders::_1), - n::is_overwrite() = false, - n::make_output_manager() = std::bind(&this_output_manager, output_manager, std::placeholders::_1) - )); - install_action.options.perform_uninstall()(*i, uo); - } + n::is_overwrite() = false, + n::make_output_manager() = std::bind(&this_output_manager, output_manager, std::placeholders::_1) + )); + install_action.options.perform_uninstall()(*i, uo); + } output_manager->succeeded(); } |