2015-12-06 2 views
2

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

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

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

ответ

4

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

У меня есть аналогичная проблема, так как я хочу gdbserver в своем dev-изображении. (Sofar, ничто другое, что GPLv3 не требуется/не требуется в моем изображении dev). То, что я сделал, это установить 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; таким образом, нет риска распространения их на образ производства.

0

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

Пожалуйста оных следующую строку в BUILDFOLDER/CONF/local.conf файл PACKAGECONFIG_remove = "OpenSSH"

 Смежные вопросы

  • Нет связанных вопросов^_^