From 6e1e0d048c6b6e196f6c4788a1896ae076b87019 Mon Sep 17 00:00:00 2001 From: Ciaran McCreesh Date: Fri, 14 Sep 2012 22:46:48 +0100 Subject: Fix properly --- paludis/repositories/e/fix_locked_dependencies.cc | 29 ++++++++--------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/paludis/repositories/e/fix_locked_dependencies.cc b/paludis/repositories/e/fix_locked_dependencies.cc index 36f71ffb6..e92edfbf1 100644 --- a/paludis/repositories/e/fix_locked_dependencies.cc +++ b/paludis/repositories/e/fix_locked_dependencies.cc @@ -75,7 +75,7 @@ namespace return make_null_shared_ptr(); } - std::shared_ptr visit(const SlotAnyPartialLockedRequirement &) const + std::shared_ptr rewrite() const { std::shared_ptr matches((*env)[selection::AllVersionsSorted( generator::Matches(*spec, id, { }) | filter::InstalledAtRoot(env->system_root_key()->parse_value()))]); @@ -85,32 +85,23 @@ namespace if ((*matches->last())->slot_key()) { auto ss((*matches->last())->slot_key()->parse_value()); - if (ss.match_values().first == ss.match_values().second) - return std::make_shared(ss.match_values().first, spec->slot_requirement_ptr()); - else + if (eapi.supported()->ebuild_options()->has_subslots()) return std::make_shared(ss.match_values(), spec->slot_requirement_ptr()); + else + return std::make_shared(ss.match_values().first, spec->slot_requirement_ptr()); } else return make_null_shared_ptr(); } - std::shared_ptr visit(const SlotAnyAtAllLockedRequirement &) const + std::shared_ptr visit(const SlotAnyPartialLockedRequirement &) const { - std::shared_ptr matches((*env)[selection::AllVersionsSorted( - generator::Matches(*spec, id, { }) | filter::InstalledAtRoot(env->system_root_key()->parse_value()))]); - if (matches->empty()) - return make_null_shared_ptr(); + return rewrite(); + } - if ((*matches->last())->slot_key()) - { - auto ss((*matches->last())->slot_key()->parse_value()); - if (eapi.supported()->ebuild_options()->has_subslots()) - return std::make_shared(ss.match_values(), spec->slot_requirement_ptr()); - else - return std::make_shared(ss.match_values().first, spec->slot_requirement_ptr()); - } - else - return make_null_shared_ptr(); + std::shared_ptr visit(const SlotAnyAtAllLockedRequirement &) const + { + return rewrite(); } }; -- cgit v1.2.3