Перезапись йо-классов через мета-слой - PullRequest
0 голосов
/ 23 июня 2018

Спасибо за ваше время и поддержку

Я планирую использовать swupdate для обновлений. Итак, мне нужно создать дополнительный раздел, в котором мне нужно сохранить раздел восстановления.

poky/meta/classes/image-live.bbclass

- это класс, который создает разделы и очищает корневую файловую систему. Я обновил указанный выше файл, чтобы создать еще один раздел и сохранить корневую файловую систему swupdate.

Как я могу переопределить этот класс в своем собственном слое BSP, я не хочу касаться неудобного исходного кода ..

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

Это было объявлено в 2012 году на почтовой группе Yocto: https://lists.yoctoproject.org/pipermail/yocto/2012-January/004379.html

Только создавая тот же класс и переупорядочивая слои, как написал astor555. Что ваш слой BSP будет проанализирован / использован первым.

0 голосов
/ 03 ноября 2018

Другой вариант - скопировать оригинал image-live.bbclass в свой существующий слой и переименовать его во что-то значимое (my-image-live.bbclass), а затем просто наследовать его там, где вам нужно, как inherit my-image-live

0 голосов
/ 26 июня 2018

Обычно в Yocto нет способа переопределить файлы .bbclass , например, с файлами .bb (с использованием .bbappend ),чтобы заархивировать, что необходимо скопировать весь файл класса и переместить на другой слой, я смог управлять этим с помощью этой конфигурации:

структура слоя:

$ tree ../meta-test/
../meta-test/
├── classes
│   └── image-live.bbclass
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
└── recipes-example
    └── example.bb

3 directories, 5 files

содержимое example.bb recipe:

$ cat ../meta-test/recipes-example/example/example.bb 
LICENSE = "CLOSED"
inherit image-live

и наконец действительно важная вещь *, файл конфигурации conf / bblayers.conf должен быть настроен с этимпорядок мета-тест / выше мета / слой:

$ tail -n6 conf/bblayers.conf 
BBLAYERS ?= " \
  /home/user/poky/meta-test \
  /home/user/poky/meta \
  /home/user/poky/meta-poky \
  /home/user/poky/meta-yocto-bsp \
  "

$ bitbake -e example -D | grep ^DEBUG:\\sInheriting\\s.*image-live.bbclass\\s\(from
DEBUG: Inheriting /home/user/poky/meta-test/classes/image-live.bbclass (from /home/user/poky/meta-test/recipes-example/example/example.bb:3)

* Я не знаю, почему битбейк приоритет слоя неработать здесь, только изменяя порядок слоев в conf / bblayers.conf позволяет мне достичь главной цели:

$ bitbake-layers show-layers
NOTE: Starting bitbake server...
layer                 path                                      priority
==========================================================================
meta                  /home/user/poky/meta        5
meta-test             /home/user/poky/meta-test   10
meta-poky             /home/user/poky/meta-poky   5
meta-yocto-bsp        /home/user/poky/meta-yocto-bsp  5

слой мета-тест / ниже meta / in conf / bblayers.conf :

$ tail -n6 conf/bblayers.conf 
BBLAYERS ?= " \
  /home/user/poky/meta \
  /home/user/poky/meta-test \
  /home/user/poky/meta-poky \
  /home/user/poky/meta-yocto-bsp \
  "    

$ bitbake -e example -D | grep ^DEBUG:\\sInheriting\\s.*image-live.bbclass\\s\(from
DEBUG: Inheriting /home/user/poky/meta/classes/image-live.bbclass (from /home/user/poky/meta-test/recipes-example/example/example.bb:3)
...