Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NDK 23 + Gradle 7 support #2550

Merged
merged 5 commits into from
Apr 8, 2022
Merged

NDK 23 + Gradle 7 support #2550

merged 5 commits into from
Apr 8, 2022

Conversation

misl6
Copy link
Member

@misl6 misl6 commented Feb 5, 2022

This PR adds support for NDK 23 and updates the Gradle version to 7.
These are the first steps needed in order to support Apple Silicon M1 without the aid of Rosetta.

Is a WIP and needs some more (upcoming) love.

Copy link
Member

@AndreMiras AndreMiras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like a good start, thanks for picking this up 💪
Ping us when you need the final review

@misl6 misl6 force-pushed the feat/support-ndk-23 branch 4 times, most recently from e9dd48f to cd99583 Compare February 12, 2022 11:06
@misl6 misl6 force-pushed the feat/support-ndk-23 branch 3 times, most recently from ab0fdda to 95d82cd Compare February 16, 2022 22:12
@misl6 misl6 force-pushed the feat/support-ndk-23 branch 2 times, most recently from 653e7a5 to 9d4bef7 Compare February 22, 2022 18:17
@misl6 misl6 force-pushed the feat/support-ndk-23 branch from 9d4bef7 to 5a941aa Compare March 27, 2022 08:18
@misl6
Copy link
Member Author

misl6 commented Apr 6, 2022

Some updates (and maybe we can consider that ready to be reviewed):

  • NDK r23b is not yet completely ready for Apple Silicon support, full support landed recently in non-LTS versions, (r24, ...) but it should be less painful for us to support the next NDK releases.

  • NDK r23b completely removes the GNU Binutils ( excluding the GNU Assembler (GAS) ) and platforms/android-* folders have been removed in NDK >=r22. As a downside, a lot of recipes needed some changes, and not everything has been tested on runtime.

  • lapack recipe needs a toolchain with fortran support to build and generate code. LLVM now has included support for flang https://github.com/llvm/llvm-project/tree/main/flang, so I tried to build the whole android-toolchain (which is based on LLVM) with flang support, and seems that worked, but flang-new is still not able to provide code-generation, so gfortran (or another fortran compiler) is needed for that step. (Maybe @mzakharo could help us in the process to migrate it to a newer NDK version ?)

  • Previously NDKPLATFORM env var was set to arch.ndk_platform. Now that platforms/android-* folders have been removed, NDKPLATFORM still needs to be populated with a dummy value cause we're using that var as a switch into our projects setup scripts ( kivy, pyjnius, audiostream ...). Maybe we can change it to something more explicit in the future like KIVY_PLATFORM=android or KIVY_PLATFORM=ios ?.

  • As said before, even if I tried to cover everything that looked to fail on the CI, some recipes will likely need some more love, but IMHO, the only effective way that we currently have to discover them is to merge this PR and wait for some feedback from the community.

@misl6 misl6 changed the title [WIP] NDK 23 + Gradle 7 support NDK 23 + Gradle 7 support Apr 6, 2022
AndreMiras
AndreMiras previously approved these changes Apr 6, 2022
Copy link
Member

@AndreMiras AndreMiras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for the huge effort.
I think you're right, if you think this is ready for a merge to develop, let's bite the bullet and see what feedback comes back in the coming weeks

@misl6 misl6 linked an issue Apr 6, 2022 that may be closed by this pull request
@kengoon
Copy link
Contributor

kengoon commented Apr 6, 2022

@misl6 @AndreMiras Don't merge yet, give me a day to run a full test on all the recipes locally on my local machine. (I can't dream of encountering any bug while compiling to apk in the future)

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

@misl6 the compilation crashes at downloading NDK r23b. I made some checks on the download page and saw that x86_64 has been removed from the download name url

still testing ............

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

Building libffi crashed

Error Log
[INFO]:    Building libffi for armeabi-v7a
[INFO]:    -> directory context /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi
[DEBUG]:   -> running autoreconf -vif
[DEBUG]:        autoreconf: Entering directory `.'
[DEBUG]:        autoreconf: configure.ac: not using Gettext
[DEBUG]:        autoreconf: running: aclocal --force -I m4
[DEBUG]:        autoreconf: configure.ac: tracing
[DEBUG]:        autoreconf: running: libtoolize --copy --force
[DEBUG]:        libtoolize: putting auxiliary files in '.'.
[DEBUG]:        libtoolize: copying file './ltmain.sh'
[DEBUG]:        libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
[DEBUG]:        libtoolize: copying file 'm4/libtool.m4'
[DEBUG]:        libtoolize: copying file 'm4/ltoptions.m4'
[DEBUG]:        libtoolize: copying file 'm4/ltsugar.m4'
[DEBUG]:        libtoolize: copying file 'm4/ltversion.m4'
[DEBUG]:        libtoolize: copying file 'm4/lt~obsolete.m4'
[DEBUG]:        autoreconf: running: /usr/bin/autoconf --force
[DEBUG]:        autoreconf: running: /usr/bin/autoheader --force
[DEBUG]:        autoreconf: running: automake --add-missing --copy --force-missing
[DEBUG]:        configure.ac:31: installing './compile'
[DEBUG]:        configure.ac:19: installing './missing'
[DEBUG]:        Makefile.am: installing './depcomp'
[DEBUG]:        autoreconf: Leaving directory `.'
[DEBUG]:   -> running configure --host=arm-linux-androideabi --prefix=/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi --disable-builddir --enable-shared
[DEBUG]:        checking build system type... x86_64-pc-linux-gnu
[DEBUG]:        checking host system type... arm-unknown-linux-androideabi
[DEBUG]:        checking target system type... arm-unknown-linux-androideabi
[DEBUG]:        checking for gsed... sed
[DEBUG]:        checking for a BSD-compatible install... /usr/bin/install -c
[DEBUG]:        checking whether build environment is sane... yes
[DEBUG]:        checking for arm-linux-androideabi-strip... /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded
[DEBUG]:        checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
[DEBUG]:        checking for gawk... gawk
[DEBUG]:        checking whether make -j4 sets $(MAKE)... yes
[DEBUG]:        checking whether make -j4 supports nested variables... yes
[DEBUG]:        checking for arm-linux-androideabi-gcc... /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC
[DEBUG]:        checking whether the C compiler works... no
[DEBUG]:        configure: error: in `/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi':
[DEBUG]:        configure: error: C compiler cannot create executables
[DEBUG]:        See `config.log' for more details
Exception in thread background thread for pid 27686:
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 1683, in wrap
    fn(*rgs, **kwargs)
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 2662, in background_thread
    handle_exit_code(exit_code)
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 2349, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 905, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_77:

  RAN: /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure --host=arm-linux-androideabi --prefix=/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi --disable-builddir --enable-shared

  STDOUT:
checking build system type... x86_64-pc-linux-gnu
checking host system type... arm-unknown-linux-androideabi
checking target system type... arm-unknown-linux-androideabi
checking for gsed... sed
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-linux-androideabi-strip... /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make -j4 sets $(MAKE)... yes
checking whether make -j4 supports nested variables... yes
checking for arm-linux-androideabi-gcc... /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC
checking whether the C compiler works... no
configure: error: in `/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi':
configure: error: C compiler cannot create executables
See `config.log' for more details


  STDERR:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 1294, in <module>
    main()
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/entrypoints.py", line 18, in main
    ToolchainCL()
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 728, in __init__
    getattr(self, command)(args)
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 151, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/toolchain.py", line 210, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx,
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/build.py", line 524, in build_recipes
    recipe.build_arch(arch)
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/recipes/libffi/__init__.py", line 30, in build_arch
    shprint(sh.Command('./configure'),
  File "/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/python-for-android/pythonforandroid/logger.py", line 167, in shprint
    for line in output:
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 953, in next
    self.wait()
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 879, in wait
    self.handle_command_exit_code(exit_code)
  File "/home/kengo/.local/lib/python3.8/site-packages/sh.py", line 905, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_77:

  RAN: /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure --host=arm-linux-androideabi --prefix=/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi --disable-builddir --enable-shared

  STDOUT:
checking build system type... x86_64-pc-linux-gnu
checking host system type... arm-unknown-linux-androideabi
checking target system type... arm-unknown-linux-androideabi
checking for gsed... sed
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-linux-androideabi-strip... /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make -j4 sets $(MAKE)... yes
checking whether make -j4 supports nested variables... yes
checking for arm-linux-androideabi-gcc... /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC
checking whether the C compiler works... no
configure: error: in `/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi':
configure: error: C compiler cannot create executables
See `config.log' for more details


  STDERR:

btw compiling with WSL

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

Content of config.log
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by libffi configure 3.3, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure --host=arm-linux-androideabi --prefix=/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi --disable-builddir --enable-shared

## --------- ##
## Platform. ##
## --------- ##

hostname = DESKTOP-LU7R794
uname -m = x86_64
uname -r = 5.10.102.1-microsoft-standard-WSL2
uname -s = Linux
uname -v = #1 SMP Wed Mar 2 00:30:59 UTC 2022

/usr/bin/uname -p = x86_64
/bin/uname -X     = unknown

/bin/arch              = x86_64
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin
PATH: /home/kengo/.buildozer/android/platform/android-ndk-r23b
PATH: /home/kengo/.buildozer/android/platform/android-sdk/tools
PATH: /home/kengo/.buildozer/android/platform/apache-ant-1.9.4/bin
PATH: /home/kengo/.local/bin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/games
PATH: /usr/local/games
PATH: /usr/lib/wsl/lib
PATH: /mnt/c/Perl64/bin
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Roaming/ActiveState/bin
PATH: /mnt/c/Program Files/ImageMagick-7.1.0-Q16-HDRI
PATH: /mnt/c/Program Files/Common Files/Oracle/Java/javapath
PATH: /mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
PATH: /mnt/c/WINDOWS/system32
PATH: /mnt/c/WINDOWS
PATH: /mnt/c/WINDOWS/System32/Wbem
PATH: /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/
PATH: /mnt/c/TDM-GCC-64/bin
PATH: /mnt/c/WINDOWS/System32/OpenSSH/
PATH: /mnt/c/ProgramData/chocolatey/bin
PATH: /mnt/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static
PATH: /mnt/c/Program Files/OpenJDK/openjdk-8u312-b07-jre/bin
PATH: /mnt/c/Program Files/usbipd-win/
PATH: /mnt/c/Program Files (x86)/WinSCP/
PATH: /mnt/c/Program Files/PuTTY/
PATH: /mnt/c/Program Files/Git/cmd
PATH: /mnt/c/Program Files/dotnet/
PATH: /mnt/c/Strawberry/c/bin
PATH: /mnt/c/Strawberry/perl/site/bin
PATH: /mnt/c/Strawberry/perl/bin
PATH: /mnt/c/Program Files/PowerShell/7/
PATH: /mnt/c/Users/Akubue Kenechukwu/scoop/shims
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Local/Programs/Python/Python38/Scripts/
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Local/Programs/Python/Python38/
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Local/Microsoft/WindowsApps
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Local/GitHubDesktop/bin
PATH: /mnt/c/Program Files/JetBrains/PyCharm Community Edition 2021.2.3/bin
PATH: /mnt/c/tools/dart-sdk/bin
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Roaming/Pub/Cache/bin
PATH: /mnt/c/Program Files/JetBrains/PyCharm 2021.3.1/bin
PATH: /mnt/c/Users/Akubue Kenechukwu/AppData/Local/Programs/Microsoft VS Code/bin
PATH: /snap/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2700: checking build system type
configure:2714: result: x86_64-pc-linux-gnu
configure:2734: checking host system type
configure:2747: result: arm-unknown-linux-androideabi
configure:2767: checking target system type
configure:2780: result: arm-unknown-linux-androideabi
configure:2877: checking for gsed
configure:2908: result: sed
configure:2936: checking for a BSD-compatible install
configure:3004: result: /usr/bin/install -c
configure:3015: checking whether build environment is sane
configure:3070: result: yes
configure:3124: checking for arm-linux-androideabi-strip
configure:3151: result: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded
configure:3216: checking for a thread-safe mkdir -p
configure:3255: result: /usr/bin/mkdir -p
configure:3262: checking for gawk
configure:3278: found /usr/bin/gawk
configure:3289: result: gawk
configure:3300: checking whether make -j4 sets $(MAKE)
configure:3322: result: yes
configure:3351: checking whether make -j4 supports nested variables
configure:3368: result: yes
configure:3513: checking for arm-linux-androideabi-gcc
configure:3540: result: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC
configure:3809: checking for C compiler version
configure:3818: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC --version >&5
/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure: line 3820: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: Permission denied
configure:3829: $? = 126
configure:3818: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC -v >&5
/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure: line 3820: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: Permission denied
configure:3829: $? = 126
configure:3818: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC -V >&5
/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure: line 3820: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: Permission denied
configure:3829: $? = 126
configure:3818: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC -qversion >&5
/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure: line 3820: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: Permission denied
configure:3829: $? = 126
configure:3849: checking whether the C compiler works
configure:3871: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC -DANDROID -I/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/armeabi-v7a/include/python3.8   -L/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/libs_collections/myapp/armeabi-v7a conftest.c  >&5
/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/configure: line 3873: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: Permission denied
configure:3875: $? = 126
configure:3913: result: no
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "libffi"
| #define PACKAGE_TARNAME "libffi"
| #define PACKAGE_VERSION "3.3"
| #define PACKAGE_STRING "libffi 3.3"
| #define PACKAGE_BUGREPORT "http://github.com/libffi/libffi/issues"
| #define PACKAGE_URL ""
| #define PACKAGE "libffi"
| #define VERSION "3.3"
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:3918: error: in `/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi':
configure:3920: error: C compiler cannot create executables
See `config.log' for more details

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-pc-linux-gnu
ac_cv_env_CCASFLAGS_set=
ac_cv_env_CCASFLAGS_value=
ac_cv_env_CCAS_set=
ac_cv_env_CCAS_value=
ac_cv_env_CPPFLAGS_set=set
ac_cv_env_CPPFLAGS_value='-DANDROID -I/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/armeabi-v7a/include/python3.8'
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_LT_SYS_LIBRARY_PATH_set=
ac_cv_env_LT_SYS_LIBRARY_PATH_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=arm-linux-androideabi
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_host=arm-unknown-linux-androideabi
ac_cv_path_ax_enable_builddir_sed=sed
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/usr/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_CC='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC'
ac_cv_prog_STRIP='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded'
ac_cv_prog_make_make_set=yes
ac_cv_target=arm-unknown-linux-androideabi
am_cv_make_support_nested_variables=yes

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/missing aclocal-1.16'
ALLOCA=''
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='1'
AM_LTLDFLAGS=''
AM_RUNTESTFLAGS=''
AM_V='$(V)'
AR='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar'
AUTOCONF='${SHELL} /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/missing autoconf'
AUTOHEADER='${SHELL} /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/missing autoheader'
AUTOMAKE='${SHELL} /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/missing automake-1.16'
AWK='gawk'
BUILD_DOCS_FALSE=''
BUILD_DOCS_TRUE=''
CC='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC'
CCAS=''
CCASDEPMODE=''
CCASFLAGS=''
CCDEPMODE=''
CFLAGS='-target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC'
CPP=''
CPPFLAGS='-DANDROID -I/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/armeabi-v7a/include/python3.8'
CXX='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC'
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS='-target armv7a-linux-androideabi21 -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC'
CYGPATH_W='echo'
DEFS=''
DEPDIR=''
DLLTOOL=''
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
FFI_DEBUG_FALSE=''
FFI_DEBUG_TRUE=''
FFI_EXEC_TRAMPOLINE_TABLE=''
FFI_EXEC_TRAMPOLINE_TABLE_FALSE=''
FFI_EXEC_TRAMPOLINE_TABLE_TRUE=''
FGREP=''
GREP=''
HAVE_LONG_DOUBLE=''
HAVE_LONG_DOUBLE_VARIANT=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
LD=''
LDFLAGS='  -L/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/libs_collections/myapp/armeabi-v7a'
LIBFFI_BUILD_VERSIONED_SHLIB_FALSE=''
LIBFFI_BUILD_VERSIONED_SHLIB_GNU_FALSE=''
LIBFFI_BUILD_VERSIONED_SHLIB_GNU_TRUE=''
LIBFFI_BUILD_VERSIONED_SHLIB_SUN_FALSE=''
LIBFFI_BUILD_VERSIONED_SHLIB_SUN_TRUE=''
LIBFFI_BUILD_VERSIONED_SHLIB_TRUE=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LIPO=''
LN_S=''
LTLIBOBJS=''
LT_SYS_LIBRARY_PATH=''
MAINT=''
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE=''
MAKEINFO='${SHELL} /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/missing makeinfo'
MANIFEST_TOOL=''
MKDIR_P='/usr/bin/mkdir -p'
NM=''
NMEDIT=''
OBJDUMP=''
OBJEXT=''
OPT_LDFLAGS=''
OTOOL64=''
OTOOL=''
PACKAGE='libffi'
PACKAGE_BUGREPORT='http://github.com/libffi/libffi/issues'
PACKAGE_NAME='libffi'
PACKAGE_STRING='libffi 3.3'
PACKAGE_TARNAME='libffi'
PACKAGE_URL=''
PACKAGE_VERSION='3.3'
PATH_SEPARATOR=':'
PRTDIAG=''
RANLIB='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib'
SECTION_LDFLAGS=''
SED=''
SET_MAKE=''
SHELL='/bin/bash'
STRIP='/home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded'
TARGET='arm-unknown-linux-androideabi'
TARGETDIR=''
TARGET_OBJ=''
TESTSUBDIR_FALSE=''
TESTSUBDIR_TRUE=''
VERSION='3.3'
ac_ct_AR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_DUMPBIN=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE=''
am__fastdepCCAS_FALSE=''
am__fastdepCCAS_TRUE=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE=''
am__include=''
am__isrc=''
am__leading_dot='.'
am__nodep=''
am__quote=''
am__tar='$${TAR-tar} chof - "$$tardir"'
am__untar='$${TAR-tar} xf -'
ax_enable_builddir_sed='sed'
bindir='${exec_prefix}/bin'
build='x86_64-pc-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='pc'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
host='arm-unknown-linux-androideabi'
host_alias='arm-linux-androideabi'
host_cpu='arm'
host_os='linux-androideabi'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='$(MKDIR_P)'
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='/home/kengo/PyAndroidProjects/GenricNDKBuildRecipeTest/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/other_builds/libffi/armeabi-v7a__ndk_target_21/libffi'
program_transform_name='s,x,x,'
psdir='${docdir}'
runstatedir='${localstatedir}/run'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sys_symbol_underscore=''
sysconfdir='${prefix}/etc'
target='arm-unknown-linux-androideabi'
target_alias='arm-linux-androideabi'
target_cpu='arm'
target_os='linux-androideabi'
target_vendor='unknown'
toolexecdir=''
toolexeclibdir=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "libffi"
#define PACKAGE_TARNAME "libffi"
#define PACKAGE_VERSION "3.3"
#define PACKAGE_STRING "libffi 3.3"
#define PACKAGE_BUGREPORT "http://github.com/libffi/libffi/issues"
#define PACKAGE_URL ""
#define PACKAGE "libffi"
#define VERSION "3.3"

configure: exit 77

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

I can't further the test because I am entirely stuck at libffi, will be waiting for a fix or a reply

@misl6
Copy link
Member Author

misl6 commented Apr 7, 2022

@kengoon, thank you for testing it!

  • About the NDK download, I guess that is broken on buildozer? (That was expected and buildozer will need a PR for that)
  • libffi --> Will look at it in the next few hours.
  • Testing on other recipes: I may have an idea of a CI implementation that could help us in the process. I guess you're testing it on your subset of recipes for a specific need?

@misl6
Copy link
Member Author

misl6 commented Apr 7, 2022

Update:
Considering that libffi is a dependency of python3 and seems to build on both CI and local tests, can you share your buildozer.spec, so I can see if there's a specific config that you did that makes it incompatible?

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

@kengoon, thank you for testing it!

  • Testing on other recipes: I may have an idea of a CI implementation that could help us in the process. I guess you're testing it on your subset of recipes for a specific need?

Not quite testing for specific need, just testing it generally (don't mind the project name)

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

@misl6

Content of Buildozer.spec file
[app]

# (str) Title of your application
title = My Application

# (str) Package name
package.name = myapp

# (str) Package domain (needed for android/ios packaging)
package.domain = org.test

# (str) Source code where the main.py live
source.dir = .

# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas

# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png

# (list) Source files to exclude (let empty to not exclude anything)
#source.exclude_exts = spec

# (list) List of directory to exclude (let empty to not exclude anything)
#source.exclude_dirs = tests, bin, venv

# (list) List of exclusions using pattern matching
# Do not prefix with './'
#source.exclude_patterns = license,images/*/*.jpg

# (str) Application versioning (method 1)
version = 0.1

# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,flask,kivy

# (str) Custom source folders for requirements
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy

# (str) Presplash of the application
#presplash.filename = %(source.dir)s/data/presplash.png

# (str) Icon of the application
#icon.filename = %(source.dir)s/data/icon.png

# (str) Supported orientation (one of landscape, sensorLandscape, portrait or all)
orientation = portrait

# (list) List of service to declare
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY

#
# OSX Specific
#

#
# author = © Copyright Info

# change the major version of python used by the app
osx.python_version = 3

# Kivy version to use
osx.kivy_version = 1.9.1

#
# Android specific
#

# (bool) Indicate if the application should be fullscreen or not
fullscreen = 0

# (string) Presplash background color (for android toolchain)
# Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
# red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
# darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
# olive, purple, silver, teal.
android.presplash_color = #FFFFFF

# (string) Presplash animation using Lottie format.
# see https://lottiefiles.com/ for examples and https://airbnb.design/lottie/
# for general documentation.
# Lottie files can be created using various tools, like Adobe After Effect or Synfig.
#android.presplash_lottie = "path/to/lottie/file.json"

# (str) Adaptive icon of the application (used if Android API level is 26+ at runtime)
#icon.adaptive_foreground.filename = %(source.dir)s/data/icon_fg.png
#icon.adaptive_background.filename = %(source.dir)s/data/icon_bg.png

# (list) Permissions
android.permissions = INTERNET

# (list) features (adds uses-feature -tags to manifest)
#android.features = android.hardware.usb.host

# (int) Target Android API, should be as high as possible.
android.api = 31

# (int) Minimum API your APK / AAB will support.
#android.minapi = 21

# (int) Android SDK version to use
#android.sdk = 20

# (str) Android NDK version to use
android.ndk = 23b

# (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi.
#android.ndk_api = 21

# (bool) Use --private data storage (True) or --dir public storage (False)
#android.private_storage = True

# (str) Android NDK directory (if empty, it will be automatically downloaded.)
#android.ndk_path =

# (str) Android SDK directory (if empty, it will be automatically downloaded.)
#android.sdk_path =

# (str) ANT directory (if empty, it will be automatically downloaded.)
#android.ant_path =

# (bool) If True, then skip trying to update the Android sdk
# This can be useful to avoid excess Internet downloads or save time
# when an update is due and you just want to test/build your package
# android.skip_update = False

# (bool) If True, then automatically accept SDK license
# agreements. This is intended for automation only. If set to False,
# the default, you will be shown the license when first running
# buildozer.
android.accept_sdk_license = True

# (str) Android entry point, default is ok for Kivy-based app
#android.entrypoint = org.kivy.android.PythonActivity

# (str) Full name including package path of the Java class that implements Android Activity
# use that parameter together with android.entrypoint to set custom Java class instead of PythonActivity
#android.activity_class_name = org.kivy.android.PythonActivity

# (str) Extra xml to write directly inside the <manifest> element of AndroidManifest.xml
# use that parameter to provide a filename from where to load your custom XML code
#android.extra_manifest_xml = ./src/android/extra_manifest.xml

# (str) Extra xml to write directly inside the <manifest><application> tag of AndroidManifest.xml
# use that parameter to provide a filename from where to load your custom XML arguments:
#android.extra_manifest_application_arguments = ./src/android/extra_manifest_application_arguments.xml

# (str) Full name including package path of the Java class that implements Python Service
# use that parameter to set custom Java class instead of PythonService
#android.service_class_name = org.kivy.android.PythonService

# (str) Android app theme, default is ok for Kivy-based app
# android.apptheme = "@android:style/Theme.NoTitleBar"

# (list) Pattern to whitelist for the whole project
#android.whitelist =

# (str) Path to a custom whitelist file
#android.whitelist_src =

# (str) Path to a custom blacklist file
#android.blacklist_src =

# (list) List of Java .jar files to add to the libs so that pyjnius can access
# their classes. Don't add jars that you do not need, since extra jars can slow
# down the build process. Allows wildcards matching, for example:
# OUYA-ODK/libs/*.jar
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar

# (list) List of Java files to add to the android project (can be java or a
# directory containing the files)
#android.add_src =

# (list) Android AAR archives to add
#android.add_aars =

# (list) Put these files or directories in the apk assets directory.
# Either form may be used, and assets need not be in 'source.include_exts'.
# 1) android.add_assets = source_asset_relative_path
# 2) android.add_assets = source_asset_path:destination_asset_relative_path
#android.add_assets =

# (list) Gradle dependencies to add
#android.gradle_dependencies =

# (bool) Enable AndroidX support. Enable when 'android.gradle_dependencies'
# contains an 'androidx' package, or any package from Kotlin source.
# android.enable_androidx requires android.api >= 28
android.enable_androidx = True

# (list) add java compile options
# this can for example be necessary when importing certain java libraries using the 'android.gradle_dependencies' option
# see https://developer.android.com/studio/write/java8-support for further information
# android.add_compile_options = "sourceCompatibility = 1.8", "targetCompatibility = 1.8"

# (list) Gradle repositories to add {can be necessary for some android.gradle_dependencies}
# please enclose in double quotes 
# e.g. android.gradle_repositories = "maven { url 'https://kotlin.bintray.com/ktor' }"
#android.add_gradle_repositories =

# (list) packaging options to add 
# see https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
# can be necessary to solve conflicts in gradle_dependencies
# please enclose in double quotes 
# e.g. android.add_packaging_options = "exclude 'META-INF/common.kotlin_module'", "exclude 'META-INF/*.kotlin_module'"
#android.add_packaging_options =

# (list) Java classes to add as activities to the manifest.
#android.add_activities = com.example.ExampleActivity

# (str) OUYA Console category. Should be one of GAME or APP
# If you leave this blank, OUYA support will not be enabled
#android.ouya.category = GAME

# (str) Filename of OUYA Console icon. It must be a 732x412 png image.
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png

# (str) XML file to include as an intent filters in <activity> tag
#android.manifest.intent_filters =

# (str) launchMode to set for the main activity
#android.manifest.launch_mode = standard

# (list) Android additional libraries to copy into libs/armeabi
#android.add_libs_armeabi = libs/android/*.so
#android.add_libs_armeabi_v7a = libs/android-v7/*.so
#android.add_libs_arm64_v8a = libs/android-v8/*.so
#android.add_libs_x86 = libs/android-x86/*.so
#android.add_libs_mips = libs/android-mips/*.so

# (bool) Indicate whether the screen should stay on
# Don't forget to add the WAKE_LOCK permission if you set this to True
#android.wakelock = False

# (list) Android application meta-data to set (key=value format)
#android.meta_data =

# (list) Android library project to add (will be added in the
# project.properties automatically.)
#android.library_references =

# (list) Android shared libraries which will be added to AndroidManifest.xml using <uses-library> tag
#android.uses_library =

# (str) Android logcat filters to use
android.logcat_filters = *:S python:D

# (bool) Android logcat only display log for activity's pid
#android.logcat_pid_only = False

# (str) Android additional adb arguments
#android.adb_args = -H host.docker.internal

# (bool) Copy library instead of making a libpymodules.so
#android.copy_libs = 1

# (list) The Android archs to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64
# In past, was `android.arch` as we weren't supporting builds for multiple archs at the same time.
android.archs = arm64-v8a, armeabi-v7a

# (int) overrides automatic versionCode computation (used in build.gradle)
# this is not the same as app version and should only be edited if you know what you're doing
# android.numeric_version = 1

# (bool) enables Android auto backup feature (Android API >=23)
android.allow_backup = True

# (str) XML file for custom backup rules (see official auto backup documentation)
# android.backup_rules =

# (str) If you need to insert variables into your AndroidManifest.xml file,
# you can do so with the manifestPlaceholders property.
# This property takes a map of key-value pairs. (via a string)
# Usage example : android.manifest_placeholders = [myCustomUrl:\"org.kivy.customurl\"]
# android.manifest_placeholders = [:]

# (bool) disables the compilation of py to pyc/pyo files when packaging
# android.no-compile-pyo = True

# (str) The format used to package the app for release mode (aab or apk).
# android.release_artifact = aab

#
# Python for android (p4a) specific
#

# (str) python-for-android URL to use for checkout
p4a.url = https://github.com/misl6/python-for-android.git

# (str) python-for-android fork to use in case if p4a.url is not specified, defaults to upstream (kivy)
#p4a.fork = kivy

# (str) python-for-android branch to use, defaults to master
p4a.branch = feat/support-ndk-23

# (str) python-for-android specific commit to use, defaults to HEAD, must be within p4a.branch
#p4a.commit = HEAD

# (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
#p4a.source_dir =

# (str) The directory in which python-for-android should look for your own build recipes (if any)
#p4a.local_recipes =

# (str) Filename to the hook for p4a
#p4a.hook =

# (str) Bootstrap to use for android builds
p4a.bootstrap = sdl2

# (int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask)
#p4a.port = 8000

# Control passing the --use-setup-py vs --ignore-setup-py to p4a
# "in the future" --use-setup-py is going to be the default behaviour in p4a, right now it is not
# Setting this to false will pass --ignore-setup-py, true will pass --use-setup-py
# NOTE: this is general setuptools integration, having pyproject.toml is enough, no need to generate
# setup.py if you're using Poetry, but you need to add "toml" to source.include_exts.
#p4a.setup_py = false

# (str) extra command line arguments to pass when invoking pythonforandroid.toolchain
#p4a.extra_args =


#
# iOS specific
#

# (str) Path to a custom kivy-ios folder
#ios.kivy_ios_dir = ../kivy-ios
# Alternately, specify the URL and branch of a git checkout:
ios.kivy_ios_url = https://github.com/kivy/kivy-ios
ios.kivy_ios_branch = master

# Another platform dependency: ios-deploy
# Uncomment to use a custom checkout
#ios.ios_deploy_dir = ../ios_deploy
# Or specify URL and branch
ios.ios_deploy_url = https://github.com/phonegap/ios-deploy
ios.ios_deploy_branch = 1.10.0

# (bool) Whether or not to sign the code
ios.codesign.allowed = false

# (str) Name of the certificate to use for signing the debug version
# Get a list of available identities: buildozer ios list_identities
#ios.codesign.debug = "iPhone Developer: <lastname> <firstname> (<hexstring>)"

# (str) The development team to use for signing the debug version
#ios.codesign.development_team.debug = <hexstring>

# (str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios.codesign.debug)s

# (str) The development team to use for signing the release version
#ios.codesign.development_team.release = <hexstring>

# (str) URL pointing to .ipa file to be installed
# This option should be defined along with `display_image_url` and `full_size_image_url` options.
#ios.manifest.app_url =

# (str) URL pointing to an icon (57x57px) to be displayed during download
# This option should be defined along with `app_url` and `full_size_image_url` options.
#ios.manifest.display_image_url =

# (str) URL pointing to a large icon (512x512px) to be used by iTunes
# This option should be defined along with `app_url` and `display_image_url` options.
#ios.manifest.full_size_image_url =


[buildozer]

# (int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
log_level = 2

# (int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1

# (str) Path to build artifact storage, absolute or relative to spec file
# build_dir = ./.buildozer

# (str) Path to build output (i.e. .apk, .aab, .ipa) storage
# bin_dir = ./bin

#    -----------------------------------------------------------------------------
#    List as sections
#
#    You can define all the "list" as [section:key].
#    Each line will be considered as a option to the list.
#    Let's take [app] / source.exclude_patterns.
#    Instead of doing:
#
#[app]
#source.exclude_patterns = license,data/audio/*.wav,data/images/original/*
#
#    This can be translated into:
#
#[app:source.exclude_patterns]
#license
#data/audio/*.wav
#data/images/original/*
#


#    -----------------------------------------------------------------------------
#    Profiles
#
#    You can extend section / key with a profile
#    For example, you want to deploy a demo version of your application without
#    HD content. You could first change the title to add "(demo)" in the name
#    and extend the excluded directories to remove the HD content.
#
#[app@demo]
#title = My Application (demo)
#
#[app:source.exclude_patterns@demo]
#images/hd/*
#
#    Then, invoke the command line with the "demo" profile:
#
#buildozer --profile demo android debug

@misl6
Copy link
Member Author

misl6 commented Apr 7, 2022

Has your .buildozer folder been cleaned before doing a new build?

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

ya

so you know, I built in WSL

@misl6
Copy link
Member Author

misl6 commented Apr 7, 2022

ya

so you know, I built in WSL

From your config.log I see: /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang: Permission denied.

Have WSL access to that file?
What file /home/kengo/.buildozer/android/platform/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang says?

I think that I'm going for a final check (documentation related?) and then a merge just after, so we can work on fixes incrementally, by targeting specific issues and recipes when issues show up, as discussed with @AndreMiras.

But, don't worry, that doesn't mean that I'm not going to provide some PRs and love for eventually broken recipes, but that everything will be addressed on a separate PR and issue.

Also, considering that we had a python-for-android release 3 weeks ago, users will be encouraged to use the latest stable version for the next weeks, unless they need something specific that only works on NDK 23 + Gradle 7, cause as you noticed, buildozer should be updated in order to fully support the latest NDK.

FYI: Feel free to ping me on https://chat.kivy.org if you need some help with the tests on your WSL config. 😃

@kengoon
Copy link
Contributor

kengoon commented Apr 7, 2022

Oh I see, I manually downloaded the ndk r23b and forgot to pass execution permission.

No issues you can move ahead with the merge, I will Keep testing and open an issue when I encounter any bug

@misl6 misl6 merged commit f7f8cea into kivy:develop Apr 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

p4a is not compatible with ndk >= 22
3 participants