[mythtv] Problem with 32-bit android version

Mark Spieth mark at digivation.com.au
Sat Oct 8 23:33:02 UTC 2022


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




More information about the mythtv-dev mailing list