LINUX.ORG.RU

Сборка CyanogenMod - не создалась zip-ка

 


0

2

Сборка завершилась успешно, но zip не создалась. Собирал так, положил в device/DEXP/M350 дерево своего устройства и тупо выполнил: source build/envsetup.sh && brunch M350

Вот последние строки сборочного процесса:

Package target files: /home/dim/CyanogenMod/out/target/product/M350/obj/PACKAGING/target_files_intermediates/cm_M350-target_files-9db6a8eb42.zip
using prebuilt recovery.img from BOOTABLE_IMAGES...
using prebuilt boot.img from BOOTABLE_IMAGES...
Traceback (most recent call last):
  File "./build/tools/releasetools/make_recovery_patch", line 53, in <module>
    main(sys.argv[1:])
  File "./build/tools/releasetools/make_recovery_patch", line 49, in main
    common.MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img)
  File "/home/dim/CyanogenMod/build/tools/releasetools/common.py", line 1289, in MakeRecoveryPatch
    td_pair = GetTypeAndDevice("/boot", info_dict)
  File "/home/dim/CyanogenMod/build/tools/releasetools/common.py", line 1240, in GetTypeAndDevice
    return PARTITION_TYPES[fstab[mount_point].fs_type], fstab[mount_point].device
KeyError: '/boot'
make: *** [/home/dim/CyanogenMod/out/target/product/M350/obj/PACKAGING/target_files_intermediates/cm_M350-target_files-9db6a8eb42.zip] Ошибка 1
make: Выход из каталога `/home/dim/CyanogenMod'

#### make failed to build some targets (04:47:09 (hh:mm:ss)) ####



Как бы мне все же получить zip для прошивки?

Ответ на: комментарий от yacuken

Посмотрел BoardConfig.mk нашел там только recovery.fstab: TARGET_RECOVERY_FSTAB := $(LOCAL_PATH)/rootdir/recovery.fstab

Я правильно понимаю, что мне нужно добавить по аналогии? TARGET_FSTAB := $(LOCAL_PATH)/rootdir/fstab.mt6735

Если да, то что дальше? С нуля на чистых исходниках собирать или могу там же где и раньше тупо повторить brunch?

nadim
() автор топика
Ответ на: комментарий от yacuken

В инит аналогичная строка имеется: https://github.com/hyperion70/device_Ixion_M350_mt6735/blob/master/rootdir/in...

А вот в rootdir никаких make-файлов нет, есть в корне дерева практически пустой mk: https://github.com/hyperion70/device_Ixion_M350_mt6735/blob/master/AndroidBoa...

Вот только я слабо представляю каким должен выглядеть блок «# boot.img parts» для моего дерева. Можете помочь? Я попытаюсь изобразить, поправьте меня если можете:

# boot.img parts
include $(CLEAR_VARS)
LOCAL_MODULE       := fstab.mt6735
LOCAL_MODULE_TAGS  := optional eng
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES    := /fstab.mt6735
LOCAL_MODULE_PATH  := $(TARGET_ROOT_OUT)
include $(BUILD_PREBUILT)

Что имеется в виду под строками CLASS и PATH? И надо ли последнюю строку вообще оставлять?

nadim
() автор топика
Ответ на: комментарий от yacuken

Запустил сборку со всеми изменениями, что произвел по твоим советам. Посмотрим что получится, отпишусь вечером или уже ночью.

nadim
() автор топика
Ответ на: комментарий от nadim

Я не за компьютером.

Проверь создаётся ли fstab в out/target/product/M350/root/

LOCAL_MODULE_CLASS определяет, где будут создаваться файлы, нужные для сборки того или иного модуля.
Идут они по пути out/target/product/D350/obj и далее по этим классам. Например библиотеки в SHARED_LIBRARIES/STATIC_LIBRARIES. Конфиги в ETC (обычно так).

LOCAL_MODULE_PATH определяет, куда отправится уже готовый модуль. TARGET_ROOT_OUT в твоём случае тот, который я в втором абзаце записал. Т.е. $(PRODUCT_OUT)/root/

yacuken ★★★★
()
Ответ на: комментарий от yacuken

Опять то же самое, использовал ту «boot.img parts» что указал выше. В каталоге продукта в root0-директории фстаб не было, положил вручную пока сборка не закончилась, увы, не прокатило.

Ошибка все та же. Указывает на 53, 49, 1289, 1240 строки релизтулс файлов, но мне эти строки ничего не говорят.

nadim
() автор топика
Ответ на: комментарий от yacuken

Похоже слона то я не приметил. Только сейчас заметил файл create_prebuilt_files_mk.sh: https://github.com/hyperion70/device_Ixion_M350_mt6735/blob/master/create_pre...

Я правильно понимаю, что его надо было запустить перед сборкой? При том, находясь в каталоге, где этот скрипт и лежит.

nadim
() автор топика
Ответ на: комментарий от nadim

Нет. Запускай из конря андроида. На вывод даст вроде такого https://github.com/hyperion70/device_Ixion_M350_mt6735/blob/master/device.mk#L54
Но для вендорских блобов.

Зы. Хотя не. Он вызывается из того же device.mk

yacuken ★★★★
()
Последнее исправление: yacuken (всего исправлений: 1)
Ответ на: комментарий от nadim

Тут кстати ошибка. В LOCAL_SRC_FILES.

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE       := fstab.mt6735
LOCAL_MODULE_TAGS  := optional eng
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES    := fstab.mt6735
LOCAL_MODULE_PATH  := $(TARGET_ROOT_OUT)
include $(BUILD_PREBUILT)
запиши это в Android.mk и положи в rootdir. И попробуй вызвать mka fstab.mt6735

Зы. И fstab там же в device.mk указан

yacuken ★★★★
()
Последнее исправление: yacuken (всего исправлений: 1)
Ответ на: комментарий от yacuken

Поправил все, запустил сборку с нуля. Посмотрим что с утра выдаст, но тьфу-тьфу, пусть будет все хорошо)

nadim
() автор топика
Ответ на: комментарий от yacuken

А не надо? Удаляю out и запускаю, а поначалу и вовсе каждый раз исходники распаковывал. Что поделать, нуб я, мой максимум сборка пакетов и то порой уходит пару дней на борьбу с ошибками.

nadim
() автор топика
Ответ на: комментарий от yacuken

Заработало!) Обе ошибки ушли в прошлое. Fstab теперь собирается, recovery тоже больше не вылезает.

Но, возникал новая ошибка, одна единственная и я не могу понять, что за bacon?

make: *** Нет правила для сборки цели `bacon'.  Останов.


Полный вывод:
make: Вход в каталог `/home/dim/CyanogenMod'
build/core/binary.mk:745: цель `/home/dim/CyanogenMod/out/target/product/M350/obj_arm/STATIC_LIBRARIES/libc_bionic_intermediates/arch-arm/bionic/memcmp.o' указана несколько раз в одном правиле
"ebtables is disabled on this build"
external/speex/Android.mk:55: TODOArm64: enable neon in libspeex
TODOArm64: frameworks/compile/libbcc/Android.mk Add Arm64 define to LOCAL_CFLAGS
TODOArm64: frameworks/compile/libbcc/bcinfo/Android.mk Enable build of libbcinfo device shared library
TODOArm64: frameworks/compile/libbcc/lib/Core/Android.mk Add Arm64 define to LOCAL_CFLAGS
TODOArm64: frameworks/compile/libbcc/lib/ExecutionEngine/Android.mk Add Arm64 define to LOCAL_CFLAGS
TODOArm64: frameworks/compile/libbcc/lib/Renderscript/Android.mk Add Arm64 define to LOCAL_CFLAGS
TODOArm64: frameworks/compile/libbcc/lib/Support/Android.mk Add Arm64 define to LOCAL_CFLAGS
TODOArm64: frameworks/compile/libbcc/tools/bcc/Android.mk Add Arm64 define to LOCAL_CFLAGS
find: `dummy': Нет такого файла или каталога
find: `../../../../../../external/hamcrest/src': Нет такого файла или каталога
find: `../../../../../../external/junit/src/org': Нет такого файла или каталога
find: `../../../../../../external/hamcrest/src': Нет такого файла или каталога
build/core/Makefile:46: предупреждение: переопределение команд для цели `/home/dim/CyanogenMod/out/target/product/M350/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/base_rules.mk:550: предупреждение: старые команды для цели `/home/dim/CyanogenMod/out/target/product/M350/system/etc/permissions/android.software.live_wallpaper.xml' игнорируются
build/core/tasks/kernel.mk:121: ***************************************************************
build/core/tasks/kernel.mk:122: * Using prebuilt kernel binary instead of source              *
build/core/tasks/kernel.mk:123: * THIS IS DEPRECATED, AND WILL BE DISCONTINUED                *
build/core/tasks/kernel.mk:124: * Please configure your device to download the kernel         *
build/core/tasks/kernel.mk:125: * source repository to kernel/DEXP/M350
build/core/tasks/kernel.mk:126: * See http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building
build/core/tasks/kernel.mk:127: * for more information                                        *
build/core/tasks/kernel.mk:128: ***************************************************************
make: *** Нет правила для сборки цели `bacon'.  Останов.
make: Выход из каталога `/home/dim/CyanogenMod'

#### make failed to build some targets (02:27 (mm:ss)) ####
nadim
() автор топика
Ответ на: комментарий от Solonix

Два файла: /CyanogenMod/build/core/Makefile /CyanogenMod/build/envsetup.sh

В обеих содержатся команды на сборку bacon. Как определить, какой mk-файл в дереве прослужил первоисточником? Вплоть до строки, что бы тупо выдрать ее.

nadim
() автор топика
Ответ на: комментарий от Solonix

В любом случае, спасибо за наводку. Без тебя я бы еще не скоро нашел это: http://4pda.ru/forum/index.php?showtopic=209610&st=4260#entry35484144

Короче, я изначально неправильную команду для сборки использовал. Bacon нифига не название oneplus, а очень даже конкретная команда, которая некорректно была воспринята.

Цитата:

Что же тогда такое «mka bacon»? А в этой команде и спрятана вся соль. Это функция, содержащая следующую команду:

schedtool -B -n 1 -e ionice -n 1 \ make -j `cat /proc/cpuinfo | \ grep «^processor» | wc -l` «$@» Она переключает планировщик процессора в режим SCHED_BATCH и повышает приоритет текущей задачи, так что ей отдается больше времени на исполнение, а также устанавливает максимальный приоритет на ввод-вывод для текущей задачи и запускает make, распараллеливая его на все процессоры. За счет этого сборка CM проходит быстрее, но при этом пользоваться компом во время сборки становится нереально.

nadim
() автор топика
Ответ на: комментарий от nadim

Не совсем. Конкретно тут с процессором манипуляции проводит mka. А bacon синоним для otapackage.
Попробуй сделать source build/envsetup.sh из корневой (для исходников) директории.

yacuken ★★★★
()

тебе на четырепда, бдлжад! и вдоль!

anonymous
()
Ответ на: комментарий от yacuken

И так всегда его выполняю перед сборкой. Попробую все же при помощи lunch и mka собрать. А еще все же попробую локальный репозитарий с деревьями через манифест положить, вдруг это важно. Ближе к вечеру отпишусь.

nadim
() автор топика
Ответ на: комментарий от yacuken

Удалось запустить сборку так: breakfast M350 && mka

Уже обрадовался было, но вылезла очередная ошибка:
Import includes file: /home/dim/CyanogenMod/out/target/product/M350/obj/EXECUTABLES/panorama_bench_intermediates/import_includes
Export includes file: development/perftests/panorama/Android.mk -- /home/dim/CyanogenMod/out/target/product/M350/obj/EXECUTABLES/panorama_bench_intermediates/export_includes
make: *** Нет правила для сборки цели `/home/dim/CyanogenMod/out/target/common/obj/JAVA_LIBRARIES/librobotium4_intermediates/javalib.jar', требуемой для `/home/dim/CyanogenMod/out/target/common/obj/APPS/YGPSTests_intermediates/classes-full-debug.jar'.  Останов.


Нет мыслей где и как это лечить? Поиск по ключевым словам на 4pda особо ничего и не дал.
nadim
() автор топика
Ответ на: комментарий от yacuken
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=5.1.1
CM_VERSION=12.1-20160405-UNOFFICIAL-M350
TARGET_PRODUCT=cm_M350
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv7-a-neon
TARGET_2ND_CPU_VARIANT=cortex-a7
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.19.0-56-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=LMY49J
OUT_DIR=/home/dim/CyanogenMod/out
============================================
nadim
() автор топика
Ответ на: комментарий от yacuken

Если собирать через brunch это аналогично команде breakfast DEVICE && mka bacon

И пофиг что bacon это опция, mka этого не видит почему-то. С otapackage видимо такая же фигня. Существуют ли еще способы сборки?

nadim
() автор топика
Ответ на: комментарий от nadim

Тогда хз, что там. А ты исходники от циганомодного гита скачивал? Или с патчами васяна? Потому, как otapackage в build/core/Makefile присутствует

yacuken ★★★★
()
Ответ на: комментарий от yacuken

Похоже нашел корень всех бед. Почитал старые посты, везде пишут, что для корректной работы mka bacon или mka otapackage(что одно и то же оказывается), нужно сначала выбрать свое устройство вызывав lunch и только после этого все будет работать. Вот только моего устройства нет в lunch. Как я понял, надо в манифесте прописать гитхаб репозитарий с деревом, что бы он там отображался, а у меня с этим с самого начала проблемы были.

Придется сейчас регатся на гитхабе, заливать дерево и экспериментировать с манифестом. Надеюсь все получится.

nadim
() автор топика
Ответ на: комментарий от nadim

Что бы он появился в lunch меню в дерево исходников для твоего девайса добавь vendorsetup.sh:

add_lunch_combo cm_M350-userdebug

yacuken ★★★★
()
Ответ на: комментарий от yacuken

Помогло, вот оно как хитро. И ведь что интересно, ни в одном из читанных мной гайдов это не описано было.

nadim
() автор топика
Ответ на: комментарий от yacuken

Увы, все так же. Bacon не работает, значит что-то не то с деревом, раз у всех работает, а у меня нет. Подскажи, а вот тут строка про ядро: https://github.com/hyperion70/device_Ixion_M350_mt6735/blob/master/BoardConfi...

Что оно значит? Я на что обратил внимание, каталога kernel в древе и в помине нет. Не может ли это быть ошибкой? Тем более проблемы с bacon и otapackage вылезают сразу после обработки kernel.

nadim
() автор топика
Ответ на: комментарий от nadim

Это не каталог. Это файл с скомпилированных ядром. А в BoardConfig.mk указано использовать это ядро вместо сборки из исходников.

yacuken ★★★★
()
Ответ на: комментарий от yacuken

А лог точно такой же получился. Единственное отличие:

make: Цель `bootimage' не требует выполнения команд.



Вот ведь в чем парадокс. Если собирать с тем деревом, что на гите, все успешно собирается и толкье в самом конце на попытке создания zip-а спотыкается. А вот если с теми изменениями, что предотвращают проблему с recovery и fstab, тогда уже otapackage не отрабатывает.

Похоже будто правки делают только хуже.
nadim
() автор топика
Ответ на: комментарий от yacuken

Связался с автором дерева, попробую на днях в 4pda поднять тему для всех заинтересованных, что бы всем миром попытаться допилить дерево.

Огромное спасибо за помощь, если все же удастся допилить дерево до рабочего состояния, обязательно упомяну тебя.

nadim
() автор топика
Ответ на: комментарий от yacuken

Тем не менее, любой вклад ценен. Ты потратил время на меня, если все в итоге заработает, будет неправильно не указать тех, благодаря кому удалось преодолеть все эти баги и ошибки.

nadim
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.