Не могу применить патч

Я распаковал исходный код efivar-0.23.tar.gz и пытаюсь применить следующий патч: http://patchwork.openembedded.org/patch/117073/ чтобы иметь возможность его скомпилировать.

Я вошел в распакованный каталог и выдал следующую команду: patch -Np1 ../efivar.patch, но ничего не происходит. Он просто ждет (как будто он что-то делает, но ничего не происходит).

Как можно применить этот патч? Я просматривал различные статьи в сети, но результат, кажется, тот же самый..

2 ответа

Решение

patch Команда ожидает патч в stdin, Так что либо передайте патч в команду:

patch -Np1 < ../efivar.patch

или укажите входной файл с -i аргумент.

patch -Np1 -i ../efivar.patch

Как вы можете видеть, первый diff из файла a/meta-oe/recipes-extended/efivar/efivar/0001-efivar-fix-for-cross-compile.patch, Давайте предположим, что фактический путь к релятивному файлу efivar/0001-efivar-fix-for-cross-compile.patch из вашего текущего рабочего каталога. Тогда ты должен сказать patch игнорировать первые 4 уровня каталогов, чтобы он мог найти файлы для исправления. Вы делаете это, говоря p4 вместо p1,

Кроме того, поскольку данный патч был создан с помощью Git, вы можете использовать Git для его применения:

curl patchwork.openembedded.org/patch/117073/mbox/ | git am

Или же:

curl patchwork.openembedded.org/patch/117073/raw/ | git apply

Как работают патчи в Git?

Другие вопросы по тегам