public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user] Why doesn't revdep-rebuild catch undefined symbol errors?
@ 2018-10-25  6:30 Nikos Chantziaras
  2018-10-28 10:36 ` Andrew Savchenko
  0 siblings, 1 reply; 3+ messages in thread
From: Nikos Chantziaras @ 2018-10-25  6:30 UTC (permalink / raw
  To: gentoo-user

Trying to rebuild media-sound/pavucontrol or any other package that uses 
dev-cpp/cairomm (like pulseeffects) will fail with:

/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: 
/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib64/libcairomm-1.0.so: 
undefined reference to `cairo_script_create'

and a bunch of other "undefined reference" errors in libcairomm-1.0.so. 
I don't know what broke cairomm. But I thought revdep-rebuild would 
catch this. It doesn't.

Now this is a rebuild of pavucontrol, so if I run:

   ldd -r /usr/bin/pavucontrol

I will get:

   undefined symbol: cairo_script_create_for_stream 
(/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_set_mode (/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_surface_create 
(/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_from_recording_surface 
(/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_create   (/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_surface_create_for_target 
(/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_get_mode (/usr/lib64/libcairomm-1.0.so.1)
   undefined symbol: cairo_script_write_comment 
(/usr/lib64/libcairomm-1.0.so.1)

If I rebuild dev-cpp/cairomm manually (emerge -1 dev-cpp/cairomm), the 
error goes away, and the affected packages can now be emerged successfully.

Shouldn't revdep-rebuild catch this problem? Shouldn't it check 
installed binaries for "undefined symbol" errors?



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [gentoo-user] Why doesn't revdep-rebuild catch undefined symbol errors?
  2018-10-25  6:30 [gentoo-user] Why doesn't revdep-rebuild catch undefined symbol errors? Nikos Chantziaras
@ 2018-10-28 10:36 ` Andrew Savchenko
  2018-10-28 11:54   ` [gentoo-user] " Nikos Chantziaras
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Savchenko @ 2018-10-28 10:36 UTC (permalink / raw
  To: gentoo-user

[-- Attachment #1: Type: text/plain, Size: 2064 bytes --]

On Thu, 25 Oct 2018 09:30:00 +0300 Nikos Chantziaras wrote:
> Trying to rebuild media-sound/pavucontrol or any other package that uses 
> dev-cpp/cairomm (like pulseeffects) will fail with:
> 
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: 
> /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib64/libcairomm-1.0.so: 
> undefined reference to `cairo_script_create'
> 
> and a bunch of other "undefined reference" errors in libcairomm-1.0.so. 
> I don't know what broke cairomm. But I thought revdep-rebuild would 
> catch this. It doesn't.
> 
> Now this is a rebuild of pavucontrol, so if I run:
> 
>    ldd -r /usr/bin/pavucontrol
> 
> I will get:
> 
>    undefined symbol: cairo_script_create_for_stream 
> (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_set_mode (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_surface_create 
> (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_from_recording_surface 
> (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_create   (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_surface_create_for_target 
> (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_get_mode (/usr/lib64/libcairomm-1.0.so.1)
>    undefined symbol: cairo_script_write_comment 
> (/usr/lib64/libcairomm-1.0.so.1)
> 
> If I rebuild dev-cpp/cairomm manually (emerge -1 dev-cpp/cairomm), the 
> error goes away, and the affected packages can now be emerged successfully.
> 
> Shouldn't revdep-rebuild catch this problem? Shouldn't it check 
> installed binaries for "undefined symbol" errors?

revdep-rebuild catches libraries from removed packages (including
removed older versions) still in use by other packages. Though with
proper subslot dependencies revdep-rebuild is rarely needed.

If for some reason library containing required symbol was
forcefully removed, revdep-rebuild cannot magically recreate that
symbol.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [gentoo-user] Re: Why doesn't revdep-rebuild catch undefined symbol errors?
  2018-10-28 10:36 ` Andrew Savchenko
@ 2018-10-28 11:54   ` Nikos Chantziaras
  0 siblings, 0 replies; 3+ messages in thread
From: Nikos Chantziaras @ 2018-10-28 11:54 UTC (permalink / raw
  To: gentoo-user

On 28/10/2018 12:36, Andrew Savchenko wrote:
> revdep-rebuild catches libraries from removed packages (including
> removed older versions) still in use by other packages. Though with
> proper subslot dependencies revdep-rebuild is rarely needed.
> 
> If for some reason library containing required symbol was
> forcefully removed, revdep-rebuild cannot magically recreate that
> symbol.

Ah, alright. I was thinking of this tool as a detector for things that 
need to be rebuild.

So it seems the issue I ran across has no tool to detect it (even though 
it seems it's easy to detect.)



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-10-28 11:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-25  6:30 [gentoo-user] Why doesn't revdep-rebuild catch undefined symbol errors? Nikos Chantziaras
2018-10-28 10:36 ` Andrew Savchenko
2018-10-28 11:54   ` [gentoo-user] " Nikos Chantziaras

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox