как удалить определенные пакеты из окончательного образа rootfs, созданного Bitbake

Я пытаюсь удалить некоторые пакеты с открытым исходным кодом, к которым прикреплена лицензия GPLv3, и которые мы не можем распространять как часть окончательного производственного образа. Хотя эти пакеты можно удалить, используя «INCOMPATIBLE_LICENSE=GPLv3» в local.conf, но он удаляет все пакеты с тегом GPLv3. Я использовал PREFERRED_VERSION_recipename=(GPLv2 recipe_version) и понизил уровень всех пакетов GPLv3 до GPLv2, которые мы хотим включить в окончательный образ. Но есть несколько пакетов GPLv3, которые мы хотим сохранить как часть отладочного образа, например M4, make, gdb, bison. Эти пакеты не обязательно должны быть в окончательном рабочем образе, но их нельзя полностью удалить из сборки, поскольку они необходимы во время сборки/отладки.

Итак, как мне удалить эти пакеты/рецепт из окончательного образа rootfs, позволяя им быть частью процесса сборки и позволять им собираться. Другими словами, я хочу, чтобы bitbake собирал их из исходников GPLv3, но не включал их в окончательный образ rootfs.

Я посмотрел на функцию создания poky/lib/oe/manifest.py и rootfs.py ==>, где создается окончательный манифест rootfs, но не смог понять, что именно нужно установить из битбака. Нужно ли перезаписывать do_rootfs. если да, то какие переменные необходимо установить для переопределения окончательного манифеста.


person Srinivas Pulukuru    schedule 06.12.2015    source источник


Ответы (2)


Не существует единого способа делать то, что вы хотите. Один из способов состоит в том, чтобы ваш производственный образ состоял из того, что вам нужно доставить, а затем пусть ваш dev-образ require production-image.bb. Таким образом, вы можете легко расширить образ разработчика дополнительными пакетами.

У меня похожая проблема, так как я хочу, чтобы gdbserver был в моем dev-образе. (Пока что в моем образе разработки ничего другого из того, что является GPLv3, не требуется/желательно). Что я сделал, так это установил INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0" INCOMPATIBLE_LICENSE_pn-gdb = ""

Это в основном позволяет собирать gdb, но ничего другого, что лицензируется GPLv3. Затем мои изображения наследуют company-image.bbclass вместо прямого наследования image.bbclass. В company-image.bbclass у меня есть такая функция:

python () {
    for p in d.getVar('IMAGE_INSTALL', True).split():
        if p in ['gdb', 'gdbserver'] and not d.getVar('IMAGE_BASENAME', True) == 'company-dev-image':
            bb.fatal("gdb/gdbserver is not allowed in this image!")
}

Это гарантирует, что gdb и gdbserver могут быть установлены только в company-dev-image; таким образом, нет риска их распространения в рабочем образе.

person Anders    schedule 07.12.2015

Я хотел бы привести пример: если мы хотим удалить пакет «openssh» из сборки, необходимо обновить файл «local.conf», как указано ниже.

Пожалуйста, добавьте следующую строку в файл BUILDFOLDER/conf/local.conf PACKAGECONFIG_remove = "openssh"

person kumar V    schedule 11.04.2017