On Sat, Feb 18, 2023, 18:20 Gordon Messmer <gordon.mess...@gmail.com> wrote:

> On  2023-02-18 04:40, Björn Persson wrote:
> > The Detailed Description describes the problem thoroughly, but fails to
> > describe the solution.
>
> Thanks.  I'll make sure that it does before formally proposing it,
> assuming that we proceed to that point.
>
> > Unanswered questions include:
> >
> > · What exactly will be added to the dependencies?
> > · How will the dependencies be generated?
> > · Will packages require the version of a library that was present when
> >    they were built, even if they don't use any new interfaces?
> > · Will they require that exact version, or that version or newer?
> > · Will this make it even harder to achieve the ideal of reproducible
> >    builds?
>

(snip)


> For shared libraries without versioned symbols, the provides will change
> from:
>
>    Provides: libnghttp2.so.14()(64bit)
>
> to:
>
>    Provides: libnghttp2.so.14()(64bit) >= 14.24.1
>
> ... while requirements on that package will change from:
>
>    Requires: libc.so.6(GLIBC_2.3.4)(64bit)
>    Requires: libnghttp2.so.14()(64bit)
>
> to:
>
>    Requires: libc.so.6(GLIBC_2.3.4)(64bit)
>    Requires: libnghttp2.so.14()(64bit) >= 14.24.1
>
> Note that dependencies that do have versioned symbols are not affected
> by this change.


> Dependencies are generated using dlmopen() to locate a required library
> named in an ELF header, and then resolving the symlink to a full path.
> If the full path ends in ".so.x.y.z", where "x.y.z" is a series of
> numbers separated by dots, then the numbers and dots suffix is treated
> as a version number for that library.
>

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? 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). 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. The opposite also happens, with
packages bumping soname basically with every release, so libfoo 0.11.2 can
provide libfoo.so.143.0.0 ...

While I don't think this proposal needs to take account all weird things
upstream projects do with their sonames and soname bumping policy (if they
have one), it needs to be taken into account by this proposal ... because
if I understand this "before" and "after" comparison correctly, the new
scheme will generate broken Requires on libraries that don't follow the "I
am version x.y.z and hence my major soversion is x" scheme (which is a lot
of libraries).

Fabio

PS: Sorry for possibly broken formatting. I am away from my Linux desktop
this weekend.


> Packages will require a version of their ELF dependencies equal to or
> greater than the version present in their build environment.
>
> This is not expected to make it more difficult to achieve reproducible
> builds, because reproducible builds require that the build environment
> have the same contents in order to have the same output.  If anything,
> this provides a strong hint as to what the build root looked like in
> cases where the information is present.
> _______________________________________________
> 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, report it:
> https://pagure.io/fedora-infrastructure/new_issue
>
_______________________________________________
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, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to