[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