не удалось создать цели для AOSIP: использование необъявленного идентификатора «PAGE_SIZE» в системе/ядре/базе/cmsg.cpp:36:21:

Я использую Mac OS Catalina версии 10.15.7. Я пытаюсь скомпилировать образ для десятой ветки AOSIP для OnePlus 7T и не могу завершить сборку с помощью команды make api-stubs-docs-update-current-api< /эм>

У меня было несколько модулей, о которых сообщалось, что они отсутствуют, и, следуя совету @TheHardGamer, я зашел на страницу Git AOSIP и скачал десятую ветку для следующих модулей.

libsquashfs_util -> placed into systems/extras/squashfs_utils
fec & verity -> placed into systems/extras/verity
libtestUtil -> placed into test/vts-testcase/kernel/testUtil
simpleperf-inferno -> The systems/extras/simpleperf/scripts was not present so i copied the entire scripts folder from Git
libc++_darwin -> I did git clone https://android.googlesource.com/platform/prebuilts/clang/host/darwin-x86 -b android-10.0.0_r40 on the prebuilts/clang/host folder

Затем я столкнулся со следующей ошибкой:

internal error: Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13" "10.14"]
internal error: Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13" "10.14"]

Поэтому я последовал совету Не удалось найти поддерживаемый SDK для Mac: [10.10 10.11 10.12 10.13]

отредактировал следующий файл /Volumes/android/build/soong/cc/config/x86_darwin_host.go

добавил 11.1 в следующий фрагмент в файле

darwinSupportedSdkVersions = []string{
    "10.10",
    "10.11",
    "10.12",
    "10.13",
    "10.14",
    "11.1",
}

Затем возникла следующая ошибка

error: system/extras/simpleperf/Android.bp:72:1: module "libsimpleperf_elf_read" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/read_apk.cpp" does not exist
error: system/extras/simpleperf/Android.bp:72:1: module "libsimpleperf_elf_read" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/read_elf.cpp" does not exist
error: system/extras/simpleperf/Android.bp:72:1: module "libsimpleperf_elf_read" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/utils.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/dso.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/event_attr.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/event_type.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/perf_regs.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/read_apk.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/read_elf.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/record.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/record_file_reader.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/report_sample.proto" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/thread_tree.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/tracing.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/utils.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/nonlinux_support/nonlinux_support.cpp" does not exist
error: system/extras/simpleperf/Android.bp:310:1: module "libsimpleperf" variant "darwin_x86_64_static": module source path "system/extras/simpleperf/nonlinux_support/include" does not exist

Затем я скопировал всю папку simpleperf из десятой ветки поверх моей папки simpleperf.

Затем я столкнулся со следующей ошибкой

art/build/Android.common.mk:51: warning: unsupported HOST_ARCH=x86_64
[ 24% 116/481] including device_oneplus_hotdogb/overlay/packages/apps/overlays/NoCutoutOverlay/Android.mk ...
FAILED: 
build/make/core/base_rules.mk:324: error: device_oneplus_hotdogb/overlay/packages/apps/overlays/NoCutoutOverlay: MODULE.TARGET.APPS.NoCutoutOverlay already defined by device/oneplus/hotdogb/overlay/packages/apps/overlays/NoCutoutOverlay.
10:15:54 ckati failed with: exit status 1

Я удалил папку device_oneplus_hotdogb.

После этого я столкнулся с этой ошибкой.

FAILED: out/soong/.intermediates/system/core/base/libbase/darwin_x86_64_static/obj/system/core/base/cmsg.o
 prebuilts/clang/host/darwin-x86/clang-r353983c1/bin/clang++ -c -Isystem/core/base  -fPIC -funwind-tables -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk -mmacosx-version-min=10.8 -DMACOSX_DEPLOYMENT_TARGET=10.8 -m64 -integrated-as -fstack-protector-strong -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -no-canonical-prefixes -DNDEBUG -UDEBUG -fno-exceptions -Wno-multichar -O2 -g -fno-strict-aliasing -D__compiler_offsetof=__builtin_offsetof -faddrsig -Wimplicit-fallthrough -Werror=int-conversion -Wno-reserved-id-macro -Wno-format-pedantic -Wno-unused-command-line-argument -fcolor-diagnostics -Wno-zero-as-null-pointer-constant -Wno-sign-compare -Wno-defaulted-function-deleted -Wno-inconsistent-missing-override   -Isystem/core/base/include -Iexternal/libcxx/include -Iexternal/libcxxabi/include -Isystem/core/liblog/include -Isystem/core/include -Isystem/media/audio/include -Ihardware/libhardware/include -Ihardware/libhardware_legacy/include -Ihardware/ril/include -Iframeworks/native/include -Iframeworks/native/opengl/include -Iframeworks/av/include  -Ilibnativehelper/include_jni -Wall -Werror -Wextra -D_FILE_OFFSET_BITS=64 -target x86_64-apple-darwin -B/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin -DANDROID_STRICT -fPIC -D_USING_LIBCXX -std=gnu++17 -Wsign-promo -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -Wno-thread-safety-negative -Wno-gnu-include-next  -Wexit-time-destructors  -D_LIBCPP_DISABLE_AVAILABILITY -nostdinc++ -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=address-of-temporary -Werror=return-type -Wno-tautological-constant-compare -Wno-tautological-type-limit-compare -Wno-tautological-unsigned-enum-zero-compare -Wno-tautological-unsigned-zero-compare -Wno-c++98-compat-extra-semi -Wno-return-std-move-in-c++11 -MD -MF out/soong/.intermediates/system/core/base/libbase/darwin_x86_64_static/obj/system/core/base/cmsg.o.d -o out/soong/.intermediates/system/core/base/libbase/darwin_x86_64_static/obj/system/core/base/cmsg.o system/core/base/cmsg.cpp
system/core/base/cmsg.cpp:36:21: error: use of undeclared identifier 'PAGE_SIZE'
  if (cmsg_space >= PAGE_SIZE) {
                    ^
system/core/base/cmsg.cpp:78:21: error: use of undeclared identifier 'PAGE_SIZE'
  if (cmsg_space >= PAGE_SIZE) {
                    ^

Должен ли я попытаться определить page_size? если да, то как определиться с размером? или я где-то пропустил заголовочный файл?

Спасибо.


person Ying Tat Ng    schedule 02.01.2021    source источник


Ответы (3)


Я пытаюсь скомпилировать AOSP на M1 Mac и уже сталкивался с этой проблемой. Я решил это, добавив

#ifndef PAGE_SIZE
#define PAGE_SIZE (size_t)(sysconf(_SC_PAGESIZE))
#endif

в /system/core/base/cmsg.cpp

ОБНОВЛЕНИЕ: На случай, если кто-то еще попытается скомпилировать Android на Mac M1, это вполне возможно и не так уж сложно. Следующая проблема, с которой вы столкнетесь, похожа на эту:

external/python/cpython2/Modules/getpath.c:414:50: error: incompatible pointer types passing 'unsigned long *' to parameter of type 'uint32_t *' (aka 'unsigned int *') [-Werror,-Wincompatible-pointer-types]
     else if(0 == _NSGetExecutablePath(progpath, &nsexeclength) && progpath[0] == SEP)
                                                 ^~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/mach-o/dyld.h:98:54: note: passing argument to parameter 'bufsize' here
extern int _NSGetExecutablePath(char* buf, uint32_t* bufsize)                 __OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);
                                                     ^
1 error generated.
16:29:38 ninja failed with: exit status 1

Вы можете решить это в external/python/cpython2/Modules/getpath.c, найдя

#ifdef __APPLE__
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
    uint32_t nsexeclength = MAXPATHLEN;
#else
    unsigned long nsexeclength = MAXPATHLEN;
#endif
#endif

и изменив его на

#ifdef __APPLE__
    uint32_t nsexeclength = MAXPATHLEN;
#endif

Далее вы можете столкнуться с проблемой sed. Решение состоит в том, чтобы установить gsed из доморощенного, как описано здесь android-build">Как исправить sed: недопустимый параметр -- r в сборке macOS Sierra Android? .

Это неправильные решения, которые можно добавить в AOSP, но они будут работать для локальной компиляции. Используя эти изменения, мне удалось скомпилировать 2 варианта AOSP. Надеюсь это поможет :)

person Alexandru Ghitulescu    schedule 15.01.2021

Список поддерживаемых версий Mac SDK существует не просто так. Да, вы можете добавить свой в список и надеяться на лучшее, но вы, скорее всего, столкнетесь с проблемами, как и раньше.

Поскольку Google разрабатывает Android для Linux, лучше всего просто установить какой-нибудь дистрибутив Linux на виртуальную машину и просто скомпилировать его там. Не поймите меня неправильно, я не говорю, что это невозможно построить на Mac. Это просто напрашивается на неприятности (и это нормально, если вы эксперт).

person twasilczyk    schedule 17.01.2021

ОБНОВИТЕ ЭТОТ ОТВЕТ:

Заменить external/python/cpython2/Modules/getpath.c

#ifdef __APPLE__
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
    uint32_t nsexeclength = MAXPATHLEN;
#else
    unsigned long nsexeclength = MAXPATHLEN;
#endif
#endif

с

#ifdef __APPLE__
    uint32_t nsexeclength = MAXPATHLEN;
#endif

Сделайте то же самое в external/python/cpython3/Modules/getpath.c:

#ifdef __APPLE__
    char execpath[MAXPATHLEN + 1];
    uint32_t nsexeclength = Py_ARRAY_LENGTH(execpath) - 1;
#endif
person i_82    schedule 15.05.2021