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