Skip to content
Snippets Groups Projects
Forked from APT Developers / apt
Source project has a limited visibility.
  • Julian Andres Klode's avatar
    89dd48bd
    dist-upgrade: Revert phased updates using keeps only · 89dd48bd
    Julian Andres Klode authored
    In the bug, mutter was kept back due to phasing and the new gnome-shell
    depended on that, and was therefore kept back as well, however,
    gnome-shell-common was not broken, and apt decided to continue upgrading
    it by removing gnome-shell and the ubuntu desktop meta packages.
    
    This is potentially a regression of LP#1990586 where we added keep
    back calls to the start of the dist-upgrade to ensure that we do not
    mark stuff for upgrade in the first place that depends on phasing
    updates, however it was generally allowed by the resolver to also
    do those removals.
    
    To fix this, we need to resolve the update normally and then use
    ResolveByKeepInternal to keep back any changes broken by held back
    packages.
    
    However, doing so breaks test-bug-591882-conkeror because ResolveByKeep
    keeps back packages for broken Recommends as well, which is not
    something we generally want to do in a dist-upgrade after we already
    decided to upgrade it.
    
    To circumvent that issue, extend the pkgProblemResolver to allow
    a package to be policy broken, and mark all packages that already
    were already going to be policy broken to be allowed to be that,
    such that we don't try to undo their installs.
    
    LP: #2025462
    89dd48bd
    History
    dist-upgrade: Revert phased updates using keeps only
    Julian Andres Klode authored
    In the bug, mutter was kept back due to phasing and the new gnome-shell
    depended on that, and was therefore kept back as well, however,
    gnome-shell-common was not broken, and apt decided to continue upgrading
    it by removing gnome-shell and the ubuntu desktop meta packages.
    
    This is potentially a regression of LP#1990586 where we added keep
    back calls to the start of the dist-upgrade to ensure that we do not
    mark stuff for upgrade in the first place that depends on phasing
    updates, however it was generally allowed by the resolver to also
    do those removals.
    
    To fix this, we need to resolve the update normally and then use
    ResolveByKeepInternal to keep back any changes broken by held back
    packages.
    
    However, doing so breaks test-bug-591882-conkeror because ResolveByKeep
    keeps back packages for broken Recommends as well, which is not
    something we generally want to do in a dist-upgrade after we already
    decided to upgrade it.
    
    To circumvent that issue, extend the pkgProblemResolver to allow
    a package to be policy broken, and mark all packages that already
    were already going to be policy broken to be allowed to be that,
    such that we don't try to undo their installs.
    
    LP: #2025462