Lines 1872-1877
class depgraph:
Link Here
|
1872 |
if self._dynamic_config._allow_backtracking: |
1872 |
if self._dynamic_config._allow_backtracking: |
1873 |
self._slot_operator_trigger_reinstalls() |
1873 |
self._slot_operator_trigger_reinstalls() |
1874 |
|
1874 |
|
|
|
1875 |
# When there needs to be additional slot operator rebuilds, |
1876 |
# _solve_non_slot_operator_slot_conflicts is not aware of them, |
1877 |
# so it ends up pulling in subslot dependencies according to the |
1878 |
# installed subslots. This causes "slot conflict" entries to be added |
1879 |
# to backtrack infos, and portage would backtrack by masking each |
1880 |
# version. This is not ideal because portage now have to do multiple |
1881 |
# backtracks, for each version masked. It also implies that portage |
1882 |
# is attempting to pull in those versions, and this may cause issues |
1883 |
# during subslot rebuild pruning. Instead of that, let portage solve |
1884 |
# slot operator rebuilds first, then backtrack on slot conflicts, if |
1885 |
# they are truly necessary after slot operator rebuilds are considered. |
1886 |
if self._dynamic_config._backtrack_infos.setdefault("config", {}).get( |
1887 |
"slot_operator_replace_installed", set() |
1888 |
): |
1889 |
if "slot conflict" in self._dynamic_config._backtrack_infos: |
1890 |
del self._dynamic_config._backtrack_infos["slot conflict"] |
1891 |
return |
1892 |
|
1875 |
def _process_slot_conflict(self, conflict): |
1893 |
def _process_slot_conflict(self, conflict): |
1876 |
""" |
1894 |
""" |
1877 |
Process slot conflict data to identify specific atoms which |
1895 |
Process slot conflict data to identify specific atoms which |