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-18 15:53, Fabio Valentini wrote:
I see a big hole in that problem (assuming that I understand Things correctly): What happens to packages where this .so.x.y.z pattern does not match their actual version?

In this implementation, there is no relationship between the version of the shared object and the package version.

libnghttp2-1.51.0-1.fc37, for example, will "Provides: libnghttp2.so.14()(64bit) = 14.24.1", and any package that is linked to that shared object will "Requires: libnghttp2.so.14()(64bit) >= 14.24.1"

I have seen many packages that don't follow this pattern, for example, some keep .so.0.0.0 forever and just bump the library name instead of the soname (looking at you, mutter).

That will continue to work more or less as it does today. Mutter will provide "libmutter-11.so.0()(64bit) = 0.0.0" and linked packages will require "libmutter-11.so.0()(64bit) >= 0.0.0". If Mutter bumps the library name, that's a breaking change just like the status quo.

Others bump their soname very rarely, so the library itself might have version 2.3.4 but the soname is still at libfoo.so.1.0.0.

That's also fine, although if they are making any kind of changes to their public interface, then they are failing to indicate that, and we end up in the same situation we're in today. Which is to say that if that library adds new interfaces and later package builds use those interfaces, then there's no information about that dependency and rpm might install software that doesn't actually work.

However, today we deal with that (as curl does) by checking package versions during the build and more or less manually doing what this proposed change would do automatically. In the future, we might deal with that by pushing the upstream developers to actually provide information about their interface versions. If not through versioned symbols, then *at least* through giving libtool a version number.

The opposite also happens, with packages bumping soname basically with every release, so libfoo 0.11.2 can provide libfoo.so.143.0.0 ...

If they're incrementing from libfoo.so.142.0.0 (and, consequently, libfoo.so.142) to libfoo.so.143.0.0 (libfoo.so.143), then that's a breaking change both today and in the proposed system.
_______________________________________________
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