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 Sun, Feb 19, 2023 at 1:22 AM Gordon Messmer <gordon.messmer@xxxxxxxxx> wrote:
>
> 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.

I see, thanks for the clarification! I assumed that you're going to
use the RPM version since you're shoving this data inside RPM's
standard "<name> <operator> <epoch-version-release>" syntax for
Provides / Requires, but if you're using the soversion instead, then
the discrepancy between project version and library version doesn't
matter.

Fabio
_______________________________________________
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