Рецепт битбейка не использует патч как положено

У меня есть tarball src.tar.gz, содержимое которого распаковывается в src /, и патч из этих источников, сгенерированный этой командой:

$ diff -Nurp src/ src_mod/ > my.patch

Заголовок патча начинается с этих трех строк:

 diff -Nurp src/path/to/file src_PATCHED/path/to/file
 --- src/path/to/file  2012-10-22 05:52:59.000000000 +0200
 +++ src_PATCHED/path/to/file  2016-03-14 12:27:52.892802283 +0100

Мой рецепт bitbake ссылается как на путь, так и на файлы tarball, используя этот SRC_URI:

SRC_URI = " \
    file://my.patch \
    file://src.tar.gz \
"

Задачи do_fetch и do_unpack работают должным образом, оставляя my.patch и src / в каталоге $ {S}, то есть:

${S}/my.path
${S}/src.tar.gz

Но задача do_patch терпит неудачу с этим сообщением об ОШИБКЕ:

ERROR: Command Error: exit status: 1  Output:
Applying patch my.patch
can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?

Я протестировал разные варианты, например, установив атрибут «patchdir», как показано ниже:

SRC_URI = " \
    file://my.patch;patchdir=${S}/src \
    file://src.tar.gz \
"

Я ожидал, что «patchdir» будет таким же, как и «patch -d dir». Но он не работает должным образом, он всегда возвращает одно и то же сообщение об ошибке.

Что я делаю не так?

Ответы на вопрос(2)

Ваш ответ на вопрос