Public bug reported:

[Impact]
If two intertwined updates are being released, call them "breaks-phased-dep" 
and "phased-dep", version 2; both are installed in version 1; and 
"breaks-phased-dep" is available to install (e.g. fully phased), then `apt 
full-upgrade/dist-upgrade` will remove "phased-dep" to install 
"breaks-phased-dep".

The expected behavior is that "breaks-phased-dep" is kept back as the
new version of the dependency is not yet ready.

[Test plan]
Regression test suite, with the addition of new test:

# Test case breaks-phased-dep: A released update breaks installed version of 
phased-dep
insertinstalledpackage 'phased-dep' 'all' '1'
insertinstalledpackage 'breaks-phased-dep' 'all' '1'
insertpackage 'unstable-updates' 'breaks-phased-dep' 'all' '3' 'Breaks: 
phased-dep (<< 3)'
insertpackage 'unstable-updates' 'phased-dep' 'all' '3' 
'Phased-Update-Percentage: 0'
setupaptarchive

testsuccessequal "Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages have been kept back:
  breaks-phased-dep
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." aptget 
dist-upgrade

[Where problems could occur]
here be dragons

[Details]
This should also affect the original implementation in update-manager. 
Basically both implementations work by first calculating the full upgrade, and 
then reverting any upgrades to phased packages using MarkKeep.

However; in case of a Breaks, the phased package at this point is marked
"remove" and not "upgrade", so the keep back logic does not trigger.

** Affects: apt (Ubuntu)
     Importance: Medium
         Status: Triaged

** Affects: update-manager (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: update-manager (Ubuntu Focal)
     Importance: Undecided
         Status: New

** Affects: apt (Ubuntu Jammy)
     Importance: Undecided
         Status: New

** Affects: update-manager (Ubuntu Jammy)
     Importance: Undecided
         Status: Won't Fix

** Affects: apt (Ubuntu Noble)
     Importance: Undecided
         Status: New

** Affects: update-manager (Ubuntu Noble)
     Importance: Undecided
         Status: Won't Fix

** Affects: apt (Ubuntu Oracular)
     Importance: Undecided
         Status: New

** Affects: update-manager (Ubuntu Oracular)
     Importance: Undecided
         Status: Won't Fix

** Affects: apt (Ubuntu Plucky)
     Importance: Medium
         Status: Triaged

** Affects: update-manager (Ubuntu Plucky)
     Importance: Undecided
         Status: Won't Fix

** Changed in: apt (Ubuntu)
       Status: New => Triaged

** Changed in: apt (Ubuntu)
   Importance: Undecided => Medium

** Description changed:

  [Impact]
  If two intertwined updates are being released, call them "breaks-phased-dep" 
and "phased-dep", version 2; both are installed in version 1; and 
"breaks-phased-dep" is available to install (e.g. fully phased), then `apt 
full-upgrade/dist-upgrade` will remove "phased-dep" to install 
"breaks-phased-dep".
  
  The expected behavior is that "breaks-phased-dep" is kept back as the
  new version of the dependency is not yet ready.
  
  [Test plan]
  Regression test suite, with the addition of new test:
  
  # Test case breaks-phased-dep: A released update breaks installed version of 
phased-dep
  insertinstalledpackage 'phased-dep' 'all' '1'
  insertinstalledpackage 'breaks-phased-dep' 'all' '1'
  insertpackage 'unstable-updates' 'breaks-phased-dep' 'all' '3' 'Breaks: 
phased-dep (<< 3)'
  insertpackage 'unstable-updates' 'phased-dep' 'all' '3' 
'Phased-Update-Percentage: 0'
  setupaptarchive
  
  testsuccessequal "Reading package lists...
  Building dependency tree...
  Calculating upgrade...
  The following packages have been kept back:
-   breaks-phased-dep
+   breaks-phased-dep
  0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." aptget 
dist-upgrade
  
  [Where problems could occur]
  here be dragons
+ 
+ [Details]
+ This should also affect the original implementation in update-manager. 
Basically both implementations work by first calculating the full upgrade, and 
then reverting any upgrades to phased packages using MarkKeep.
+ 
+ However; in case of a Breaks, the phased package at this point is marked
+ "remove" and not "upgrade", so the keep back logic does not trigger.

** Also affects: update-manager (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Also affects: update-manager (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Plucky)
   Importance: Medium
       Status: Triaged

** Also affects: update-manager (Ubuntu Plucky)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: update-manager (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Oracular)
   Importance: Undecided
       Status: New

** Also affects: update-manager (Ubuntu Oracular)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Noble)
   Importance: Undecided
       Status: New

** Also affects: update-manager (Ubuntu Noble)
   Importance: Undecided
       Status: New

** No longer affects: apt (Ubuntu Focal)

** Changed in: update-manager (Ubuntu Jammy)
       Status: New => Won't Fix

** Changed in: update-manager (Ubuntu Noble)
       Status: New => Won't Fix

** Changed in: update-manager (Ubuntu Oracular)
       Status: New => Won't Fix

** Changed in: update-manager (Ubuntu Plucky)
       Status: New => Won't Fix

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2098140

Title:
  Breaks: phased-dep (<< phasing version) removes phased-dep

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/2098140/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to