conan-io / conan-center-index

Recipes for the ConanCenter repository
https://conan.io/center
MIT License
945 stars 1.72k forks source link

[package] qt5: error building for Android with NDK 24 due to missing ranlib #15552

Closed kambala-decapitator closed 1 year ago

kambala-decapitator commented 1 year ago

Description

Qt 5 tries to use aarch64-linux-android-ranlib but NDK 24 doesn't have it. Only toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ranlib exists which is a symlink to llvm-ar.

Qt 5 has been tested only against NDK 20b and 21, but would be good to fix it for more modern toolchains too.

Package and Environment Details

Conan profile

Configuration (profile_host): [settings] arch=armv8 build_type=Release compiler=clang compiler.libcxx=c++_shared compiler.version=14 os=Android os.api_level=21 [options] with_ffmpeg=False [build_requires] *: android-ndk/r24 [env] [conf] tools.cmake.cmaketoolchain:generator=Ninja tools.cmake.cmaketoolchain:system_processor=aarch64

Configuration (profile_build): [settings] arch=x86_64 arch_build=x86_64 build_type=Release compiler=apple-clang compiler.libcxx=libc++ compiler.version=14 os=Macos os_build=Macos [options] [build_requires] [env] [conf] tools.cmake.cmaketoolchain:generator=Ninja

Steps to reproduce

conan install qt/5.15.8@ \
  -o 'qt/*:openssl=True' \
  -o 'qt/*:opengl=es2' \
  -o 'qt/*:config=-android-sdk <path to SDK>' \
  -o 'qt/*:with_mysql=False' \
  -o 'qt/*:with_md4c=False' \
  -o 'qt/*:with_odbc=False' \
  -o 'qt/*:with_openal=False' \
  -o 'qt/*:with_pq=False'

Logs

Click to expand log ``` make[3]: /Users/kambala/dev/vcmi/conan-deps-android-64/.conan/data/android-ndk/r24/_/_/package/06d313f2ce6737a31e5d7ccd4d516d2ac742276a/bin/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ranlib: No such file or directory make[3]: *** [../../lib/libQt5OpenGLExtensions_arm64-v8a.a] Error 1 make[2]: *** [sub-openglextensions-make_first] Error 2 make[4]: /Users/kambala/dev/vcmi/conan-deps-android-64/.conan/data/android-ndk/r24/_/_/package/06d313f2ce6737a31e5d7ccd4d516d2ac742276a/bin/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ranlib: No such file or directory make[4]: *** [../../../lib/libQt5EdidSupport_arm64-v8a.a] Error 1 make[3]: *** [sub-edid-make_first] Error 2 make[4]: /Users/kambala/dev/vcmi/conan-deps-android-64/.conan/data/android-ndk/r24/_/_/package/06d313f2ce6737a31e5d7ccd4d516d2ac742276a/bin/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ranlib: No such file or directory make[4]: *** [../../../lib/libQt5DeviceDiscoverySupport_arm64-v8a.a] Error 1 make[3]: *** [sub-devicediscovery-make_first] Error 2 make[4]: /Users/kambala/dev/vcmi/conan-deps-android-64/.conan/data/android-ndk/r24/_/_/package/06d313f2ce6737a31e5d7ccd4d516d2ac742276a/bin/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ranlib: No such file or directory make[4]: *** [../../../lib/libQt5EventDispatcherSupport_arm64-v8a.a] Error 1 make[3]: *** [sub-eventdispatchers-make_first] Error 2 make[4]: /Users/kambala/dev/vcmi/conan-deps-android-64/.conan/data/android-ndk/r24/_/_/package/06d313f2ce6737a31e5d7ccd4d516d2ac742276a/bin/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ranlib: No such file or directory make[4]: *** [../../../lib/libQt5ThemeSupport_arm64-v8a.a] Error 1 make[3]: *** [sub-themes-make_first] Error 2 make[4]: /Users/kambala/dev/vcmi/conan-deps-android-64/.conan/data/android-ndk/r24/_/_/package/06d313f2ce6737a31e5d7ccd4d516d2ac742276a/bin/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android-ranlib: No such file or directory make[4]: *** [../../../lib/libQt5FbSupport_arm64-v8a.a] Error 1 make[3]: *** [sub-fbconvenience-make_first] Error 2 make[2]: *** [sub-platformsupport-make_first] Error 2 ```
ericLemanissier commented 1 year ago

Indeed, porting qt to an unsupported environment is a hard work. Please report this kind of issues to https://bugreports.qt.io/. They will probably rightfully advise you to switch to a more recent and maintained version (qt 6).

kambala-decapitator commented 1 year ago

https://www.qt.io/blog/qt-is-now-staying-up-to-date-with-new-android-ndk-versions says that this is fixed for Qt 5 (in commercial version I guess)

Since QTBUG-108662 was fixed, we now support building Qt 5 and applications for it with LLVM-based toolchains in newer NDKs. The bug was about a remaining dependency on ranlib, with the fix the qmake build correctly uses llvm-ar on LLVM toolchains.

Similarly to Qt 6, if Qt 5 or applications for it don't build with a shiny and new NDK, it's a bug, please report it.