Re: [gentoo-user] kodi reports symbol lookup error

2019-12-12 Thread Adam Carter
>
> If you're not on the live ebuild, you'll probably have to mask
>  >libfmt-6.1.0. I noticed I had build issues with the live ebuild and
> just masked it assuming it would eventually be fixed (which it appears
> to be now)
>

Thanks for that. I'm using ~arch.

FWIW I needed >=dev-libs/libfmt-6.1.0 to push me down to 6.0.0 to get it to
work again.


Re: [gentoo-user] kodi reports symbol lookup error

2019-12-12 Thread Adam Carter
On Thu, Dec 12, 2019 at 4:49 PM David Haller  wrote:

> First of all, decode that C++ symbol with c++filt:
>
> $ echo
> _ZN3fmt2v68internal14sprintf_formatIeEEPcT_RNS1_6bufferIcEENS1_13sprintf_specsE
> | c++filt
> char* fmt::v6::internal::sprintf_format(long double,
> fmt::v6::internal::buffer&, fmt::v6::internal::sprintf_specs)
>
> Now, with a bit of guesswork and tabbing,
> $ grep -r sprintf_format /usr/include/fmt/
> /usr/include/fmt/format.h:void sprintf_format(Double, internal::buffer &,
> core_format_specs);
> /usr/include/fmt/format.h:internal::sprintf_format(value, buffer,
> normalized_spec);
> /usr/include/fmt/format-inl.h:void sprintf_format(Double value,
> internal::buffer ,
>

With libfmt-6.1.1 there's no matches to that grep. With a looser match;
$ grep -r sprintf /usr/include/fmt/*
/usr/include/fmt/printf.h:inline std::basic_string vsprintf(
/usr/include/fmt/printf.h:std::string message = fmt::sprintf("The
answer is %d", 42);
/usr/include/fmt/printf.h:inline std::basic_string sprintf(const S&
format, const Args&... args) {
/usr/include/fmt/printf.h:  return vsprintf(to_string_view(format),
{make_format_args(args...)});

The format.h file is there, however.

libfmt-6.1.0 is also missing internal::sprintf_format but its there in
6.0.0. Kodi runs now with 6.0.0 and didn't require a rebuild. Thanks!

Before I posted I had already rebuilt kodi, and run revdep-rebuild, which
didnt find anything.


Re: [gentoo-user] kodi reports symbol lookup error

2019-12-11 Thread Michael Cook

On 12/11/19 11:39 PM, Adam Carter wrote:

Kodi has been dead for a while;
/usr/lib64/kodi/kodi-x11: symbol lookup error: /usr/lib64/kodi/kodi-x11: 
undefined symbol: 
_ZN3fmt2v68internal14sprintf_formatIeEEPcT_RNS1_6bufferIcEENS1_13sprintf_specsE


How do i go about troubleshooting this?


If you're not on the live ebuild, you'll probably have to mask 
>libfmt-6.1.0. I noticed I had build issues with the live ebuild and 
just masked it assuming it would eventually be fixed (which it appears 
to be now)


I never got around to testing if older version worked or not, so didn't 
report that it needs to be masked for them.




Re: [gentoo-user] kodi reports symbol lookup error

2019-12-11 Thread David Haller
Hello,

On Thu, 12 Dec 2019, Adam Carter wrote:
>Kodi has been dead for a while;
>/usr/lib64/kodi/kodi-x11: symbol lookup error: /usr/lib64/kodi/kodi-x11:
>undefined symbol:
>_ZN3fmt2v68internal14sprintf_formatIeEEPcT_RNS1_6bufferIcEENS1_13sprintf_specsE
>
>How do i go about troubleshooting this?

First of all, decode that C++ symbol with c++filt:

$ echo 
_ZN3fmt2v68internal14sprintf_formatIeEEPcT_RNS1_6bufferIcEENS1_13sprintf_specsE 
| c++filt 
char* fmt::v6::internal::sprintf_format(long double, 
fmt::v6::internal::buffer&, fmt::v6::internal::sprintf_specs)

Now, with a bit of guesswork and tabbing, 
$ grep -r sprintf_format /usr/include/fmt/
/usr/include/fmt/format.h:void sprintf_format(Double, internal::buffer &, 
core_format_specs);
/usr/include/fmt/format.h:internal::sprintf_format(value, buffer, 
normalized_spec);
/usr/include/fmt/format-inl.h:void sprintf_format(Double value, 
internal::buffer ,

It looks like the middle one, from /usr/include/fmt/format.h, i.e.
internal::sprintf_format is the culprit. And

$ qfile  /usr/include/fmt/format.h
dev-libs/libfmt: /usr/include/fmt/format.h

gives us the package it belongs to. Guessing from the symbol name,
kodi wants v6 of that library. I've got dev-libs/libfmt-5.3.0:0/5
installed, and on a hunch, running "symgrep"[1] (or nm | grep) on the lib
itself gives:

$ symgrep internal::sprintf_format /usr/lib64/libfmt.so
   275: 000108a0   283 FUNCWEAK   DEFAULT   11 void 
fmt::v5::internal::sprintf_format(double, 
fmt::v5::internal::basic_buffer&, fmt::v5::core_format_specs)
   305: 000109c0   291 FUNCWEAK   DEFAULT   11 void 
fmt::v5::internal::sprintf_format(long double, 
fmt::v5::internal::basic_buffer&, fmt::v5::core_format_specs)
   238: 000108a0   283 FUNCWEAK   DEFAULT   11 void 
fmt::v5::internal::sprintf_format(double, 
fmt::v5::internal::basic_buffer&, fmt::v5::core_format_specs)
   244: 000109c0   291 FUNCWEAK   DEFAULT   11 void 
fmt::v5::internal::sprintf_format(long double, 
fmt::v5::internal::basic_buffer&, fmt::v5::core_format_specs)

$ nm /usr/lib64/libfmt.so | c++filt | grep sprintf_format
000108a0 W void fmt::v5::internal::sprintf_format(double, 
fmt::v5::internal::basic_buffer&, fmt::v5::core_format_specs)
000109c0 W void fmt::v5::internal::sprintf_format(long 
double, fmt::v5::internal::basic_buffer&, fmt::v5::core_format_specs)

Ahhaa, we've got fmt::v5::* and not fmt::v6::*! And yes, on this box it's:

$ ls -l /usr/lib64/libfmt.so* 
lrwxrwxrwx 1 [..] /usr/lib64/libfmt.so -> libfmt.so.5
lrwxrwxrwx 1 [..] /usr/lib64/libfmt.so.5 -> libfmt.so.5.3.0
-rwxr-xr-x 1 [..] /usr/lib64/libfmt.so.5.3.0

So, you should rebuild kodi. So it gets linked to your installed
libfmt. And/or update your libfmt to v6.

Oh, and BTW, if you don't have the depended on package installed,
searching for the missing symbol online usually gives some hints of
where it comes from.

BTW: what do revdep-rebuild and 'emerge @preserved-rebuild' make of the
situation?

HTH,
-dnh

[1] 
 /usr/local/bin/symgrep 
#!/bin/sh
exec readelf -sW "$2" | c++filt | grep "$1"



-- 
> You know, if we're gonna make this whole Christian society thingie,
> shouldn't we at least wait until all the Christians agree?   -- cdr
I'd suggest waiting until Hell freezes over. It'll be a shorter wait.
 -- S. Lamble



[gentoo-user] kodi reports symbol lookup error

2019-12-11 Thread Adam Carter
Kodi has been dead for a while;
/usr/lib64/kodi/kodi-x11: symbol lookup error: /usr/lib64/kodi/kodi-x11:
undefined symbol:
_ZN3fmt2v68internal14sprintf_formatIeEEPcT_RNS1_6bufferIcEENS1_13sprintf_specsE

How do i go about troubleshooting this?