• Timo Teräs's avatar
    state: rework changeset calculation algorithm · a23f6f4a
    Timo Teräs authored
    Calculate changesets directly by stabilizating the package graph instead of
    recalculating the whole graph and then diffing (similar approach as seen
    in 'smart' package manager). The algorithm is not complete: defferred
    search space forking is missing. So you don't always get a solution on
    complex graphs.
    
    Benefits:
    - usually the search state tree is smaller (less memory used)
    - speed relational to changeset size, not database size (usually faster)
    - touch only packages related to users request (can work on partitially
      broken state; upgrades only necessary packages, fixes #7)
    
    Also implemented:
    - command prompt to confirm operation if packages are deleted or downgraded
    - requesting deletion of package suggests removal of all packages depending
      on the package being removed (you'll get list of packages that also get
      removed if you want package X removed)
    - option --simulate to see what would have been done (mainly for testing)
    - an untested implementation of versioned dependencies and conflicts
    
    A lot has changed, so expect new bugs too.
    a23f6f4a
add.c 2.37 KB