Re: Auto-generated dependencies for builds against rawhide glibc snapshots

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

 



On Sun, Jun 27, 2021 at 08:54:20PM +0200, Florian Weimer wrote:
> I've pushed a new glibc build to rawhide (glibc-2.33.9000-29.fc35) that
> auto-generates versioned dependencies on glibc if symbols within the
> under-development symbol version are used, where the ELF-derived RPM
> dependencies are inaccurate.  Given the change to the startup code, this
> affects all programs in this release cycle, and the libdl and libpthread
> changes mean that most shared objects trigger the versioned dependency
> as well.

I noticed this change has affected the build of a C library that I did
just now:

https://koji.fedoraproject.org/koji/buildinfo?buildID=1777714

  $ rpm -qR libnbd-1.9.2-1.fc35
  glibc >= 2.33.9000-36.fc35
  ...

This means of course that the library can't be installed without
upgrading to bleeding-edge glibc.  I understand that it's Rawhide, but
still that seems a bit excessive?!  (For context we often install
hand-picked Rawhide packages in older Fedora in order to gain specific
new features - in this case optimized nbdcopy.)

> The dependencies are conservative in the sense that you might a
> dependency on a more recent glibc version than that is actually
> required by the symbols used.

Is there a way to find out if the dependency is real or conservative?

According to nm -D we're using these symbols from future glibc:

                 U pthread_getspecific@@GLIBC_2.34
                 U pthread_key_create@@GLIBC_2.34
                 U pthread_key_delete@@GLIBC_2.34
                 U pthread_setspecific@@GLIBC_2.34

Obviously these symbols are nothing new, but I suppose this might be
related to -lpthread no longer being a separate library?

> For the technical background, here's what I put into a comment within
> the dependency generator itself:
> 
> # A glibc development snapshot (say version 2.33.9000) may define
> # symbols in its under-development symbol version (GLIBC_2.34).  RPM

This seems applicable.

> # automatically derives RPM dependencies such as
> # libc.so.6(GLIBC_2.34)(64bit) from that.  While the GLIBC_2.34
> # version is under development, these dependencies may be inaccurate
> # and could be satisfied by glibc RPM package versions that lack the
> # symbols because they were created from an earlier development
> # snapshot that had some other GLIBC_2.34 symbols.  Therefore, if the
> # latest, under-development ELF symbol version is detected, this
> # dependency generator adds an explicit RPM dependencies on the glibc
> # packaging version against which an RPM package is built.

This explains what happened in this case (I guess?) but still leaves
me wondering why pthread_* APIs could be affected by this.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/
_______________________________________________
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 on the list, report it: https://pagure.io/fedora-infrastructure




[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