Как применить патч к файлу в корневой файловой системе в рецепте Yocto - PullRequest
0 голосов
/ 15 мая 2018

Я хочу применить патч к файлу в / etc в rootfs.Поэтому я создаю рецепты Yocto

├── test_1.0.bb
└── files
    └── sshd.patch

, и я начал создавать файл .bb, который выглядит следующим образом:

DESCRIPTION = "Patch files"
SECTION = "Patch"
LICENSE = "MIT"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI = " \
    file://sshd.patch \
"
  • На данный момент я не понял, что мне нужно использовать do_install или do_patch метод?
  • Как мне указать путь к файлу, который будет исправлен?(например, файл sshd для исправления находится в / etc / ssh)

Я пробовал разные «конфигурации» с do_install (), но они не работали.(Когда я делаю «bitbake core-image-base», проблем нет, но тогда в rootfs патч не применяется)

* Английский не мой родной язык;прошу прощения за любые ошибки с моей стороны.

1 Ответ

0 голосов
/ 15 мая 2018

Если вы хотите исправить существующий файл рецепта, вам нужно создать файл openssh_%.bbappend вместо test_1.0.bb и поместить все файлы для замены в SRC_URI (то есть file://sshd_config) вместо sshd.patch.

Тогда, поскольку эти файлы уже существуют, вам не нужно изменять do_install по сравнению с оригинальным рецептом.В противном случае вам нужно добавить

do_install_append(){
    install -Dm 0644 ${S}/myfile ${D}${sysconfdir}/example/myfile 
}

# and modify FILES_${PN} if file is added in unusual place

. Кстати, рецепт не может переопределить другой файл рецепта, не находясь в конфликте, поэтому другое решение - это исправить его при создании rootfs с помощью ROOTFS_POSTPROCESS_COMMAND .(Вот почему вы не можете использовать test_0.1.bb для этого).

В противном случае файлы исправлений применяются автоматически, поэтому вам не нужно изменять ни do_patch, ни do_install.

Если вы добавите рецепт,не забудьте добавить его к изображению с IMAGE_INSTALL_append = " test" в local.conf в вашем случае.

...