openSUSE / libsolv

Library for solving packages and reading repositories
http://en.opensuse.org/openSUSE:Libzypp_satsolver
Other
509 stars 151 forks source link

Prefer latest versions of newly pulled in dependencies over smaller transaction #549

Open kontura opened 6 months ago

kontura commented 6 months ago

Following the pointer from https://github.com/openSUSE/libsolv/issues/536 we are trying the SOLVER_FLAG_FOCUS_BEST but it seems it is too strong for dnf.

To test it out we did set it as a default for all dnf5 commands and perhaps unsurprisingly it caused issues.

I believe that the desired behavior for dnf is to: prefer latest versions of newly pulled in dependencies over smaller transaction.

Is this something libsolv is already trying to achieve and when it doesn't happen can we consider that a bug (like https://github.com/openSUSE/libsolv/issues/514)? Or would a new flag be needed for that?

kontura commented 1 week ago

Any update here?

kontura commented 5 days ago

To clarify on the testcase from https://github.com/openSUSE/libsolv/issues/536

For:

repo @System 0 testtags <inline>
#>=Pkg: krb5-libs 1.18.2 22.el8_7 x86_64
#>=Prv: krb5-libs(x86-64) = 1.18.2-22.el8_7

repo available 0 testtags <inline>
#>=Pkg: ipa-client 4.9.11 5.el8 x86_64
#>=Req: krb5-pkinit-openssl
#>
#>=Pkg: krb5-libs 1.18.2 25.el8_8 x86_64
#>=Prv: krb5-libs(x86-64) = 1.18.2-25.el8_8
#>
#>=Pkg: krb5-pkinit 1.18.2 25.el8_8 x86_64
#>=Req: krb5-libs(x86-64) = 1.18.2-25.el8_8
#>=Prv: krb5-pkinit-openssl = 1.18.2-25.el8_8
#>
#>=Pkg: krb5-pkinit 1.18.2 22.el8_7 x86_64
#>=Req: krb5-libs(x86-64) = 1.18.2-22.el8_7
#>=Prv: krb5-pkinit-openssl = 1.18.2-22.el8_7

system x86_64 rpm @System

job install oneof ipa-client-4.9.11-5.el8.x86_64@available

We would like the result (just like with focusbest):

result transaction,problems <inline>
#>install ipa-client-4.9.11-5.el8.x86_64@available
#>install krb5-pkinit-1.18.2-25.el8_8.x86_64@available
#>upgrade krb5-libs-1.18.2-22.el8_7.x86_64@@System krb5-libs-1.18.2-25.el8_8.x86_64@available

However if the upgrade of krb5-libs isn't needed:

repo @System 0 testtags <inline>
#>=Pkg: krb5-libs 1.18.2 22.el8_7 x86_64
#>=Prv: krb5-libs(x86-64) = 1.18.2-22.el8_7

repo available 0 testtags <inline>
#>=Pkg: ipa-client 4.9.11 5.el8 x86_64
#>=Req: krb5-pkinit-openssl
#>
#>=Pkg: krb5-libs 1.18.2 25.el8_8 x86_64
#>=Prv: krb5-libs(x86-64) = 1.18.2-25.el8_8
#>
#>=Pkg: krb5-pkinit 1.18.2 25.el8_8 x86_64
#>=Req: krb5-libs(x86-64)
#>=Prv: krb5-pkinit-openssl = 1.18.2-25.el8_8
#>
#>=Pkg: krb5-pkinit 1.18.2 22.el8_7 x86_64
#>=Req: krb5-libs(x86-64)
#>=Prv: krb5-pkinit-openssl = 1.18.2-22.el8_7

system x86_64 rpm @System

job install oneof ipa-client-4.9.11-5.el8.x86_64@available

It should be like without focusbest:

result transaction,problems <inline>
#>install ipa-client-4.9.11-5.el8.x86_64@available
#>install krb5-pkinit-1.18.2-25.el8_8.x86_64@available
mlschroe commented 13 hours ago

Actually it's not hard to do. I just need to find a name for that mode. FOCUS_UPDATE?

mlschroe commented 13 hours ago

FOCUS_BETTER ;-)