Hi!

Time to have a look at the first few test cases. I am not 100% sure that the test cases really reflect yum's behavior for all corner cases. If you have the feeling that some results are out of scale or simply wrong please speak up.

The current test cases all involve the same small set of packages which are available in i368, x86_64 and noarch:
 * Installed packages: zsh-1-1.arch - iarch
 * Update packages: zsh-2-1.arch - uarch

Additional there is
* Package requiring update package (requires: zsh=2-1): zsh-utils-2-1.noarch - ru

Each test calls runOperation with 3 parameters:
 * Command list
 * Packages installed in the rpmdb
 * Packages available in the repository

After this call there is a list with the result. If the result looked suspicious I added my own first guess as a comment.

There are serveral combinations of installed and available archs for the same package. Each combination is tested as a regular update and as an update needed to satisfy a requirement by ru (aka zsh-utils aka "Requires Update").


testUpdatei386ToMultilib # works
    runOperation(['update'], [ii386], [ui386, ux86_64])
    ui386
testUpdatei386ToMultilibForDependency
    runOperation(['install', 'zsh-utils'], [ii386], [ui386, ux86_64, ru])
    ii386, ux86_64, ru
    #ui386, ru
# this doesn't really do an update. If this really works (md5 file conflicts will make that break in most real world cases) we'll end up with [ui386, ux86_64, ru] installed after running "yum update".

testUpdatex86_64ToMultilib # works
    runOperation(['update'], [ix86_64], [ui386, ux86_64])
    ux86_64
testUpdatex86_64ToMultilibForDependency # works - because default behavior matches the need
    runOperation(['install', 'zsh-utils'], [ix86_64], [ui386, ux86_64, ru])
    ux86_64, ru

testUpdateMultilibToMultilib # works
    runOperation(['update'], [ii386, ix86_64], [ui386, ux86_64])
    ui386, ux86_64
testUpdateMultilibToMultilibForDependency
runOperation(['install', 'zsh-utils'], [ii386, ix86_64], [ui386, ux86_64, ru])
    #ui386, ux86_64,  ru
    ii386, ux86_64,  ru
#similar problem as testUpdatei386ToMultilibForDependency

testUpdatei386Tonoarch # works
    runOperation(['update'], [ii386], [unoarch])
    unoarch
testUpdatei386TonoarchForDependency
    runOperation(['install', 'zsh-utils'], [ii386], [unoarch, ru])
    #unoarch, ru
    ii386, unoarch, ru
#similar problem as testUpdatei386ToMultilibForDependency

testUpdateMultilibTonoarch
    runOperation(['update'], [ii386, ix86_64], [unoarch])
    #unoarch
    unoarch, ix86_64
# autch, is this really true? need to try with an real system...
testUpdateMultilibTonoarchForDependency
    runOperation(['install', 'zsh-utils'], [ii386, ix86_64], [unoarch, ru])
    #unoarch, ru
    ii386, ix86_64, unoarch, ru
# how are those outdated pkgs ever suposed to go away?

testUpdatenoarchToMultilib
    runOperation(['update'], [inoarch], [ui386, ux86_64])
    ui386, ux86_64 # ux86_64 only would be an alternative policy
testUpdatenoarchToMultilibForDependency
    runOperation(['install', 'zsh-utils'], [inoarch], [ui386, ux86_64, ru])
    # ui386, ux86_64, ru
    # ux86_64, ru
    inoarch, ux86_64, ru
# after "yum update" (remember md5 file conflicts) we'd end up with [ui386, ux86_64, ru] - which is ok

For me it looks like the problem is that the update for requirement needs to be more like the regular update - like taking the pkgs already installed into account. Any other opinions?

Florian
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to