On Tue, Feb 8, 2022 at 1:56 PM Kevin Kofler via devel < devel@lists.fedoraproject.org> wrote:
> Jaroslav Mracek wrote: > > I am really sorry but this suggestion is incorrect. Basically we have 3 > > major misunderstandings - what is rich deps and how it is evaluated, what > > DNF stores in the history database and how SAT solver in libsolv works. > > Rich deps are very complex things with multiple operators (and, or, if > > unless, with, without) and can have multiple conditions. See examples > > below from > > > https://rpm-software-management.github.io/rpm/manual/boolean_dependencies.html > . > > They are arbitrarily complicated boolean expressions, but they are still > always boolean expressions. They evaluate to either true or false > depending > on the contents of the RPM database. > Not exactly, the second part is in metada of repository. The rest correct - the evaluation is boolean, but complicated due to complex data (reldeps) and in combination with version we have a lot of fun. See `(foo if (bas > 4 with ham > 2))`. And we are still unable to do it correctly but solver can, but only in transaction. > > > Also rich dependencies contain not names and versions of packages but > > dependencies satisfied by provides. It is true that we have a history > > database but it contains only the name of packagase but not what they > > provided. > > Sorry, but this confuses me: What do you need the history for? I would > expect the only thing that matters to be: Is the rich dependency > *currently* > met (true) or unmet (false)? "Currently" as in: at the time where the > dependencies are computed, where no part of the transaction has actually > run > yet. That information is present at least in the RPM database. It ought to > be present also in the databases DNF and/or libsolv use. > I was only answering to previous reference that all information required are in the DNF database. I understand that as history > Rich dependencies are dynamic and they change from release to release > > (version macros, ...) > > That is a different issue, and also happens for non-rich dependencies. I > think we agreed back when the Change was submitted that a dependency that > changed in any way (such as a version bump) shall always be treated as a > new > dependency, did we not? > No we didn't and it will make the feature less usable - see reported issues during testing in original request ( https://bugzilla.redhat.com/show_bug.cgi?id=1699672#c74). > > > I am sorry I can provide a long list of additional information to support > > my statement but I hope it is not necessary. I also hope that it is not > > necessary to share with you my experience in the development of DNF, > > especially the part related to libsolv (DNF solver). > > I would be interested in knowing the exact technical difficulties, because > logically, it should be possible. > We will be happy to help you with the code improvement. Most of the logic is in libdnf (https://github.com/rpm-software-management/libdnf/) and libsolv (https://github.com/openSUSE/libsolv/). Even testing would be very helpful. Jaroslav > > Kevin Kofler > _______________________________________________ > devel mailing list -- devel@lists.fedoraproject.org > To unsubscribe send an email to devel-le...@lists.fedoraproject.org > Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: > https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org > Do not reply to spam on the list, report it: > https://pagure.io/fedora-infrastructure >
_______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure