Cogitatio materialis est

Не накладывается patch на rpm пакет - неверный код возврата

25th Apr 2013 Tags: #patch #troubles

Если Ваш патч ну никак не хочет накладываться, и вывод примерно следующий (я пытался наложить патч на rpm пакет):

...
Patch #777 (util.patch):
+ /bin/cat /home/user/rpmbuild/SOURCES/util.patch
+ /usr/bin/patch -s -p1 -b --suffix .util-ngpatch --fuzz=0
3 out of 5 hunks FAILED -- saving rejects to file util/util.c.rej
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.UdiqLh (%prep)

Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.UdiqLh (%prep)

То, очевидно, с патчем что-то не так, и накладывается он криво (а точнее, ну совсем не накладывается).
Причин тому может быть несколько:

  • Патч в принципе кривой :)
  • Вы пытались модифицировтаь патч в сыром виде, и теперь он не накладывается из-за неправильного смещения строк и т.п.
  • Если Вы перегенирировали патч самостоятельно, то, очевидно, криво :)

При прочих равных, у начинающих разработчиков чаще всего случается как раз последняя ситуация из-за извечной проблемы с табами и пробелами.

Т.е., например, в исходном файле используются табы или смешанное форматирование (табы + пробелы), а ваш редактор (или же Вы сами) заменил все табы на пробелы. Или  же наоборот.
В итоге получается монструозный патч на весь файл, который и не хочет накладываться.

Для решения проблемы, удостоверьтесь, что форматирование (indent style) исходного файла и изменённого совпадают, и только после этого формируйте и накладывайте патч

P.s. Лично у меня ушло довольно продолжительное время, чтобы понять в чём проблема, а затем правильно настроить свой редактор :)


На мысль навёл вот этот топик.