Hi!

Same test environment, same packages, same variations, new game: Obsoletes

Packages available in i368, x86_64 and noarch:
 * Installed packages: zsh-1-1.arch - iarch
 * Obsoleting packages (obsoletes: zsh): zsh-ng-0.3-1.arch - oarch

Additional there is
* A package requiring obsoleting package(s) (requires: zsh-ng): superzippy-3.5-3.noarch - ro

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

There is always one "yum update" test case that should handle the obsoletes and then we have one test cases where the obsoleting package(s) are required by the to be installed package ro (aka superzippy aka "Requires Obsolete").

testObsoletenoarchToMultiarch - works
    runOperation(['update'], [inoarch], [oi386, ox86_64])
    oi386, ox86_64 # ox86_64 only would be an alternative policy
testObsoletenoarchToMultiarchForDependency
runOperation(['install', 'superzippy'], [inoarch], [p.oi386, p.ox86_64, p.ro])
    #ox86_64, ro
    inoarch, ox86_64, ro
# likely to run into file conflicts, additional test case indicates that "yum update" doesn't fix that problem as the obsolete is already installed - yes, this is the "right behavior"

testObsoletei386ToMultiarch - works
    runOperation(['update'], [ii386], [oi386, ox86_64])
    oi386
testObsoletei386ToMultiarchForDependency
    runOperation(['install', 'superzippy'], [ii386], [oi386, ox86_64, ro])
    #ox86_64, ro
    ii386, ox86_64, ro
    # similar to the case above - see below
testObsoletei386ToMultiarchForDependencyFix # try if it goes away with "yum update"
    runOperation(['update'], [ii386, ox86_64, ro], [oi386, ox86_64])
    ii386, ox86_64, ro
# yes, the obsolete is already installed - not removing ii386 is the right thing here - but that doesn't help us...

testObsoletex86_64ToMultiarch - works
    runOperation(['update'], [ix86_64], [oi386, ox86_64])
    ox86_64
testObsoletex86_64ToMultiarchForDependency
    runOperation(['install', 'superzippy'], [ix86_64], [oi386, ox86_64, ro])
    #ox86_64, ro
    ix86_64, ox86_64, ro
    # ...

testObsoleteMultiarchToMultiarch - works
    runOperation(['update'], [ii386, ix86_64], [oi386, ox86_64])
    oi386, ox86_64
testObsoleteMultiarchToMultiarchForDependency
runOperation(['install', 'superzippy'], [ii386, ix86_64], [oi386, ox86_64, ro])
    #oi386, ox86_64, ro
    ii386, ix86_64, ox86_64, ro
    # ...

testObsoleteMultiarchTonoarch - works
    runOperation(['update'], [ii386, ix86_64], [onoarch])
    onoarch
testObsoleteMultiarchTonoarchForDependency
    runOperation(['install', 'superzippy'], [ii386, ix86_64], [onoarch, ro])
    #onoarch, ro
    ii386, ix86_64, onoarch, ro
    # ...

Looks like packages added for dependency are not checked as possible obsoletes. This explains all of the problems seen above. Normal obsoletes seam to work quite well. Unfortunately the (correctly implemented!) obsoletes semantic doesn't clean up the problems created by the installs for dependencies.

Opinions?

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

Reply via email to