LINUX.ORG.RU

Yocto. Bitbake. TL; DR

 , ,


0

2

Всем привет.

Вкратце может ли мне кто-нибудь поведать, как с yocto/bitbake работать? Положим, я хочу подправить убут под свои нужды.

1) В какой директории мне искать сырцы, которые bitbake будет компилировать?

2) Как bitbake сказать не тащить все снова из инета, а скомпилировать то, что уже есть на компе в определенной директории?

3) Где оно появится?

Как мне говорили в институте «На простой вопрос должен быть простой ответ», а если верить манам, то ответ ни разу не простой...

★★

Ответ ни разу не простой. Если кратко - находишь в той помойке убут который тебе нужен, подсовываешь ему патч. Или делаешь пакет со своим убутом, что проще.

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

Пошагово - в документацию. Я это делал давно и деталей не помню.

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

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

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

find . -name "*.bb" помимо рецептов там есть ещё packagegroup

UVV ★★★★★
()

2) Как bitbake сказать не тащить все снова из инета, а скомпилировать то, что уже есть на компе в определенной директории?

Я не настолько хорошо знаю bitbake.. Знаю только, что у нас на build-server'e есть уже собранные частоиспользуемые пакеты (типа кэш), чтобы всё не пересобирать. А вот чтобы не тянуть с инета.. как-то не представляю, поскольку путь/ссылка указан в самом рецепте.

3) Где оно появится?

<your_project>/build

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

пытаюсь делать по мануалам. дает вот такую ошибку на самом начале:

$ source oe-init-build-env
Error: The bitbake directory (/home/keystone/arago/oe-layersetup/sources/oe-core/bitbake) does not exist!  Please ensure a copy of bitbake exists at this location

Символьную ссылку тоже не дает создать - слишком много уровней символьных ссылок.

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

да в любой. Хоть в этой: /home/keystone/arago/oe-layersetup/sources/oe-core, хоть в этой: /home/keystone/arago/oe-layersetup/sources/bitbake/bin. Во второй лежит bitbake, в первой лежит oe-init-build-env

aido ★★
() автор топика

Создай bbappend файл для u-boot'a.

1) В какой директории мне искать сырцы, которые bitbake будет компилировать?

work/tmp или как-то так.

2) Как bitbake сказать не тащить все снова из инета, а скомпилировать то, что уже есть на компе в определенной директории?

в bbappend переопределить SRC_URI переменную.

zl0y
()
Ответ на: комментарий от I-Love-Microsoft

краткое (!) интро во внутренности этого кошмара где-нибудь есть? Желательно, с картинками.

Например, структура каталогов, за что отвечает каждая директория, каким образом для нее выбирается имя?

Для остальных вопросов мне нужно время. Как минимум, чтобы прочитать те ссылки выше.

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

work/tmp или как-то так.

поиск по этим директориям не выявил убута.

добавил в bbappend следующую строку SRC_URI = "file:///home/uboot/keystone". Теперь на -c clean ругается так:

NOTE: Error during finalise of /home/keystone/arago/oe-layersetup/sources/meta-ti/recipes-bsp/u-boot/u-boot-ti-staging_2013.01.01.bb                                                                                         | ETA:  --:--:--
ERROR: ExpansionError during parsing /home/keystone/arago/oe-layersetup/sources/meta-ti/recipes-bsp/u-boot/u-boot-ti-staging_2013.01.01.bb: Failure expanding variable S: ExpansionError: Failure expanding variable SRCPV, expression was ${@bb.fetch2.get_srcrev(d)} which triggered exception FetchError: Fetcher failure: SRCREV was used yet no valid SCM was found in SRC_URI
aido ★★
() автор топика
Ответ на: комментарий от UVV

я же говорю - в /home/keystone/arago/oe-layersetup/sources/bitbake/bin

А там у тебя что?

корневая директория arago

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

Yocto/OpenEmbedded - давняя проблема с документацией, ввиду быстрого развития, но последнее время что-то стабилизировалось. И теперь есть это: https://www.yoctoproject.org/documentation

Да, нормально освоить OE/Yocto по такой документации нельзя, однако ввиду того что есть осилившие - с их помощью ты можешь освоить это быстро. Дергай меня всегда по этой теме, с удовольствием подскажу.

1) В какой директории мне искать сырцы, которые bitbake будет компилировать?

Есть каталог сборки, который ты можешь указать при вызове source ./oe-init-build-env - с этого начинается работа с OE. Сам bitbake ты должен выкачать внутрь oe-core чтобы было так: /path/../../oe-core/bitbake.

Для начала поработай без веток, а так - на ролинге. Но для серьезных применений лучше качать именно версии из одинаковых веток строго по таблице: https://wiki.yoctoproject.org/wiki/Stable_branch_maintenance

Так, в случае стабильной ветки, все репозитории должны быть именно ветки jethro а bitbake строго из ветки 1.28.

2) Как bitbake сказать не тащить все снова из инета, а скомпилировать то, что уже есть на компе в определенной директории?

Там есть кэш, который даже отключить нельзя, папка в которой собираешь содержит downloads для архивов пакетов и git реп.

3) Где оно появится?

/path/../../oe-yocto/your-build-dir/ *work* *tmp* - походи там, увидишь где и пакеты лежат, и мусор в процессе сборки, и где которые пакеты. deploy/images содержит образ ФС.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

кажись, я частично узнал, почему доки для Yocto у меня не работают. потому что работаю с оверлеем Arago.

aido ★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Но все равно, даже используя вот это, выходит та же ошибка:

NOTE: Error during finalise of /home/keystone/arago/oe-layersetup/sources/meta-ti/recipes-bsp/u-boot/u-boot-ti-staging_2013.01.01.bb                                                                                         | ETA:  --:--:--
ERROR: ExpansionError during parsing /home/keystone/arago/oe-layersetup/sources/meta-ti/recipes-bsp/u-boot/u-boot-ti-staging_2013.01.01.bb: Failure expanding variable S: ExpansionError: Failure expanding variable SRCPV, expression was ${@bb.fetch2.get_srcrev(d)} which triggered exception FetchError: Fetcher failure: SRCREV was used yet no valid SCM was found in SRC_URI

Вот код bbappend-a:

PR_append = "-arago4"

UBOOT_LOCALVERSION = "-g${@d.getVar('SRCPV', True).partition('+')[2][0:7]}"

SRC_URI = "file://home/uboot/keystone.tar.gz"

S = "${WORKDIR}/local"

сам рецепт не менял.

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

Ты уверен что оверлей совместим с твоими версиями? Нельзя просто взять произвольный левый оверлей чтобы он сразу заработал с основной веткой.

Просто возьми и сделай свой пакет, не пытайся прилепить неприлепляемое, особенно если только начинаешь работать с OE/Yocto.

Начни с простого пакета для простой программки. Затем до загрузчика доберешся.

Дай ссылку на то что ты пытаешься прилепить?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от aido

К тому же можно собрать загрузчик отдельно, а потом просто подсунуть его куда надо. Я так некоторые вещи делаю - распаковываю образ ФС и вручную меняю файлы некоторые, но в основном конечно средствами OE/Yocto справляюсь.

Все равно без скриптов сборки не обойтись, чтобы автоматизировать процесс. А если так - какая разница, будет ли скрипт в основной ветке работать по правилам Yocto или это будет самопал?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

пробовал еще начать с этого мануала, но там тоже с самого начала ошибки сборки лезут - тулчейн и openmp собрать не может во время сборки tisdk-server-rootfs-image, как минимум.

Проблема там в том, что mcsdk счас формат установщика несколько обновил и нифига не ясно, куда его распаковывать. я распаковал в корень oe-layersetup. Думаю, это не критично.

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

Просто собери для начала тупо x86 32-битный Yocto и запусти на своем компьютере, а уже после этого опыта - будешь осваивать такое, что даже я с трудом бы осилил...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от aido

Ну собери для x86, побалуйся с результатом в QEMU, сделай пакетики простые. Тебе придется потратить на это пару недель, Yocto - мощный инструмент, сразу не освоишь. А ты уже патчить полез... Проще сделать свой пакет, обильно заглядывая в оригинал.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от aido

Yocto - собирает просто образы ФС и иногда ядра и загрузчики. Но в основном для КФС. Загрузчик делай отдельно. Зато КФС от Yocto тебя порадует.

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