Re: Feedback wanted for a proposed improvement to RPM's ELF dependency generator

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-02-20 10:01, Richard W.M. Jones wrote:
Does it have to be something which looks so much like it might be a
version number?  For example it could be helpful for debugging if the
generated requires was something like:

   Requires: libnghttp2.so.14()(64bit) >= soname.14.24.1
or:
   Requires: libnghttp2.so.14()(64bit)(soname) >= 14.24.1


I don't have a *reason* to dislike the first option, but my gut reaction is that it's messy to encode both a feature and a version into a single field.  Let's withhold judgement on that one for a moment to consider the other.

Unless I'm missing something, the second option wouldn't be compatible with any existing packages unless it were an addition instead of a change.  If it were an addition, we have the option of making the system more compatible with existing packages than the current proposal by using a rich dependency.  Assuming the generator is allowed to emit rich deps (which I have not verified), the generator could emit:

  Provides: libnghttp2.so.14()(64bit)(soname) >= 14.24.1

and:

  Requires: (libnghttp2.so.14()(64bit)(soname) >= 14.24.1 if libnghttp2.so.14()(64bit)(soname))

And in that arrangement, the deployment can be completed faster because packages only require a versioned library "provide" if the providing package has the versioned library feature, which also improves compatibility with third party repos that don't adopt the feature (assuming that users want those packages to provide something that a Fedora package requires, which seems very uncommon).

But that compatibility upside is a reliability down side. Imagine a system that has libfoo 1.2.3 which "Provides: libfoo.so.1()(64bit)(soname) = 1.2.3" + "Provides: libfoo.so.1()(64bit)", and the maintainer updates to a git version with libfoo.so.1.3.0git.  That will only "Provides: libfoo.so.1()(64bit)".  If they also rebuild an associated program, it might require new interfaces from libfoo, but only "Requires: libfoo.so.1()(64bit)", (and any versioned requirements stop working) so installing the application wouldn't trigger an update of the library, which is the intent of this feature.

That might be worth further thought... at the moment I dislike the way it degrades.
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux