#kivy #protocol-buffers #grpc #buildozer #python-for-android
Вопрос:
Я пытаюсь создать рецепт python для Android для пакета grpc.
В качестве основы я использую существующий рецепт из https://github.com/hpsaturn/p4a_grpc_recipe/blob/master/init.py. Рецепт там был встроен в контейнер docker, и все зависимости также были установлены отдельно. Вместо этого в моей вилке https://github.com/Splato/p4a_grpc_recipe/edit/master/init.py Я устанавливаю все зависимости как «модули» (строки кода 129-133), за исключением пакета openssl (grpc устанавливает BoringSSL, который выходит из строя в p4a). Однако после компиляции 60% рецепта я получаю следующую ошибку:
[ 60%] Linking CXX shared library libgrpc_plugin_support.so
CMakeFiles/grpc_plugin_support.dir/src/compiler/python_generator.cc.o: In function `PythonGrpcGenerator':
~/.buildozer/android/platform/build-arm64-v8a/build/other_builds/grpcio/arm64-v8a__ndk_target_21/grpcio/grpc/src/compiler/python_generator.cc:829: undefined reference to `google::protobuf::compiler::CodeGenerator::~CodeGenerator()'
clang : error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/grpc_plugin_support.dir/build.make:175: libgrpc_plugin_support.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:894: CMakeFiles/grpc_plugin_support.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
После этого я также попытался включить protobuf в качестве зависимостей в рецепт grpc (рецепт protobuf_cpp из https://github.com/kivy/python-for-android/blob/master/pythonforandroid/recipes/protobuf_cpp/init.py). Здесь я изменил протобуф на «пакет» (129) и путь к библиотекам и исполняемым файлам в cmake (строки 112-115). Однако я получил еще одну ошибку:
-- Looking for __system_property_get - found
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:469 (file):
file STRINGS file "/opt/install/include/google/protobuf/stubs/common.h"
cannot be read.
Call Stack (most recent call first):
cmake/protobuf.cmake:58 (find_package)
CMakeLists.txt:261 (include)
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:475 (math):
math cannot parse the expression: " / 1000000": syntax error, unexpected
exp_DIVIDE (2).
Call Stack (most recent call first):
cmake/protobuf.cmake:58 (find_package)
CMakeLists.txt:261 (include)
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:476 (math):
math cannot parse the expression: " / 1000 % 1000": syntax error,
unexpected exp_DIVIDE (2).
Call Stack (most recent call first):
cmake/protobuf.cmake:58 (find_package)
CMakeLists.txt:261 (include)
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:477 (math):
math cannot parse the expression: " % 1000": syntax error, unexpected
exp_MOD (2).
Call Stack (most recent call first):
cmake/protobuf.cmake:58 (find_package)
CMakeLists.txt:261 (include)
-- Found Protobuf: /opt/install/lib/libprotobuf.a (found version "ERROR.ERROR.ERROR")
-- Found OpenSSL: ~/.buildozer/android/platform/build-arm64-v8a/build/other_builds/openssl/arm64-v8a__ndk_target_21/openssl1.1/libcrypto.so (found version "1.1.1k")
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - done
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Renaming
-- ~/.buildozer/android/platform/build-arm64-v8a/build/other_builds/grpcio/arm64-v8a__ndk_target_21/grpcio/grpc/third_party/zlib/zconf.h
-- to 'zconf.h.included' because this file is included with zlib
-- but CMake generates it automatically in the build directory.
-- Configuring incomplete, errors occurred!
See also "~/.buildozer/android/platform/build-arm64-v8a/build/other_builds/grpcio/arm64-v8a__ndk_target_21/grpcio/grpc/build/CMakeFiles/CMakeOutput.log".
See also "~/.buildozer/android/platform/build-arm64-v8a/build/other_builds/grpcio/arm64-v8a__ndk_target_21/grpcio/grpc/build/CMakeFiles/CMakeError.log".
Поэтому я думаю, что на данный момент мне нужна помощь в настройке установки/конфигурации protobuf. Заранее спасибо.