[mythtv] Problem with 32-bit android version

Peter Bennett pb.mythtv at gmail.com
Sun Oct 9 00:10:29 UTC 2022


On 10/8/22 19:33, Mark Spieth wrote:
> On 9/10/2022 5:40 am, Peter Bennett wrote:
>>
>> On 10/8/22 13:58, Mark Spieth wrote:
>>>
>>> On 9 October 2022 2:36:49 am AEDT, Peter Bennett 
>>> <pb.mythtv at gmail.com> wrote:
>>>> Hi Mark
>>>>
>>>> Using your new android packaging changes, I renamed the packaging 
>>>> directory and cloned it fresh from github to make sure nothing was 
>>>> left over. I also installed the 21.4.7075529 NDK, which the config 
>>>> files call for. I built libs and apk using the profile you set up 
>>>> for firetv-max
>>>>
>>>> Installing on a firetv-4k works, but running mythfrontend crashes 
>>>> after the splash screen shows.
>>>>
>>> I tested on my firetv max and it worked fine. Which is why I pushed.
>>> I also installed 64bit on my s20 which I used via Windows connect 
>>> and cast and tgat worked but could not update the database which I 
>>> assumed was a backend schema mismatch but not sure. Or its qt 5.15.6
>>>
>>>> This is from logcat
>>>>
>>>> 10-08 11:11:29.909 18168 18193 I Qt      : qt started
>>>> 10-08 11:11:29.924 18168 18193 E AndroidRuntime: FATAL EXCEPTION: 
>>>> qtMainLoopThread
>>>> 10-08 11:11:29.924 18168 18193 E AndroidRuntime: Process: 
>>>> org.mythtv.mythfrontend, PID: 18168
>>>> 10-08 11:11:29.924 18168 18193 E AndroidRuntime: 
>>>> java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol 
>>>> "iconv_open" referenced by 
>>>> "/data/app/org.mythtv.mythfrontend-1/lib/arm/libexiv2.14.so"...
>>>>
>>>> The exact same build using the shield profile runs fine on the shield.
>>>>
>>>> Looking at the libs build for libexiv shows this (for both the 
>>>> firetv-max and shield libs):
>>>>
>>>> -- Performing Test Iconv_IS_BUILT_IN
>>>> -- Performing Test Iconv_IS_BUILT_IN - Success
>>>> -- Found Iconv: 
>>>> /home/peter/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc.a
>>>> -- ICONV_INCLUDE_DIR :
>>>> -- ICONV_LIBRARIES : 
>>>> /home/peter/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc.a
>>>>
>>>> If iconv is built into libc, then why is it trying to use dlopen to 
>>>> open a library for it?
>>>>
>>>> The apk file does include /lib/armeabi-v7a/libiconv.so (And the 
>>>> shield apk also contains it).
>>>>
>>>> Even if it does not want to use the built-in iconv, it should still 
>>>> find the libiconv.so.
>>>>
>>>> On my linux system the only iconv.so in lib are in /php/20210902 
>>>> and in perl where it is capitalized as Iconv.so. This indicates 
>>>> that maybe it is built-in these days and we can dispense with 
>>>> building iconv in the libs. Would this solve the problem?
>>>>
>>>> Also there is in the exiv2 source a cmake file called 
>>>> FindIconv.cmake. That is what comes up with the message 
>>>> Iconv_IS_BUILT_IN. Perhaps some change is needed.
>>>>
>>>> Do you have any ideas?
>>> There may be some leak of the host env into the isolated build env. 
>>> Perhaps in pkgconfig. May need a pkconfig path erase but I think 
>>> that is already done.
>>>
>>> I think I should add config dump to the console on loading so you 
>>> can tell in the log file though to make life easier. Config 
>>> overrides anything in buildrc and setenv anyway.
>>>
>>> My 32 bit build log does not show any BUILTIN lines for either libs 
>>> or myth parts.
>>>
>>> Ill have to think about this a bit more.
>>>
>>> Mark
>>>
>> Hi Mark
>>
>> Thanks. I have uploaded my firetv-max build so you can try it on your 
>> fire stick, to determine if the problem lies in my build or in my 
>> fire stick.
>>
>> https://dl.orangedox.com/pCBmBm   in "Trial Versions"
>
> I tested the above and it works fine. DB access works too (can save 
> bookmarks and last played pos).
>
> This surprised me. I expected it to fail. firetv-max must be different 
> enough from the firetv4k.
>
> It should build the same way as always for you so I dont understand 
> what is different now.
>
> exiv2 is still the git version as before.
>
> Try this one 
> https://digivation.com.au/debian/mythfrontend-20221002-arm-v33.0~master.20220521.4e1e81967d-0ubuntu0.apk
>
>
> Try adding this near the top of makelibs.sh after INSTALLROOT is 
> defined of course. say line 319 or around there.
>
> export PKG_CONFIG_DIR=
> export 
> PKG_CONFIG_LIBDIR=$INSTALLROOT/lib/pkgconfig:$INSTALLROOT/share/pkgconfig:$QTINSTALLROOT/lib/pkgconfig
> export PKG_CONFIG_SYSROOT_DIR=$INSTALLROOT
> export PKG_CONFIG_SYSROOT_DIR=
>
> That should eliminate any PKGCONFIG leakage from your env (I hope)
>
> also check your /usr/lib/pkgconfig dir to see if iconv exists there. 
> and any other place pkgconfig might find things.
>
> HTH
>
> Mark
>
>
>
I installed your package (after uninstalling mine). I get the same error 
when launching mythfrontend

10-08 19:59:39.596  7187  7208 E AndroidRuntime: FATAL EXCEPTION: 
qtMainLoopThread
10-08 19:59:39.596  7187  7208 E AndroidRuntime: Process: 
org.mythtv.mythfrontend, PID: 7187
10-08 19:59:39.596  7187  7208 E AndroidRuntime: 
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol 
"iconv_open" referenced by 
"/data/app/org.mythtv.mythfrontend-1/lib/arm/libexiv2.14.so"...

I also tried it on another fire stick 4k with the same result.

Very strange ...

Peter





More information about the mythtv-dev mailing list