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
Touch seeded packages, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/2098140

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

Status in apt package in Ubuntu:
  Triaged
Status in update-manager package in Ubuntu:
  New
Status in update-manager source package in Focal:
  New
Status in apt source package in Jammy:
  New
Status in update-manager source package in Jammy:
  Won't Fix
Status in apt source package in Noble:
  New
Status in update-manager source package in Noble:
  Won't Fix
Status in apt source package in Oracular:
  New
Status in update-manager source package in Oracular:
  Won't Fix
Status in apt source package in Plucky:
  Triaged
Status in update-manager source package in Plucky:
  Won't Fix

Bug description:
  [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.

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


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to