PatchHowto
Как делать патчи
lost@ обстоятельно ответил в community@
> Что лучше почитать перед тем как заниматься изготовлением > собственных патчей?
Краткая инструкция для "начинающих".
Распаковать апстримные сырцы. Допустим что они распакованы в папку name-1.0/
Далее надо зайти в эту директорию. Перед изменением каждого файла надо создать его копию с с расширением .orig
То есть например если собираешься менять Makefile.am - надо скопировать его как Makefile.am.orig Я обычно делаю это командой cp src/Makefile.am{,.orig} После чего надо внести во все файлы необходимые изменения. Можно даже собирать из этой директории, вносить дополнительные изменения по результатам пересборки, и т.д.
Когда изменения будут готовы - наступает самое тяжелое. Надо придумать имя для патча.
ALT Packaging policy (http://docs.altlinux.org/archive/2.4/master/alt-docs-devel/ch04.html#devel.sisyphus.conventions) рекомендует давать патчам имена, состоящие из имени пакета, версии, "происхождения" и причины патча.
Например, имя патча для нашего гипотетического пакета может быть name-1.0-alt-link-fixes.patch
Тогда надо выйти в "родительскую" директорию (где находится каталог с исходниками name-1.0/) и сказать gendiff name-1.0 .orig На экран будет выведен патч, сгенерированный как разница между сохраненными ранее файлами .orig и измененными файлами без .orig.
Если нравится что получилось - надо сохранить этот патч как отдельный файл.
gendiff name-1.0 .orig > ~/RPM/SOURCES/name-1.0-alt-link-fixes.patch
Затем в спеке надо будет подключить этот патч в двух местах.
Первое из них - это запись о патче. Рекомендую положить ее рядом с тегом Source. Перед патчем желательно поместить какой-нибудь комментарий типа для чего этот патч.
- Name's upsteam don't want my patch, so I place it here. This make
all plugins properly linked. Patch0: name-1.0-alt-link-fixes.patch
Вторая часть - это собственно, применение патча.
это надо делать в секции %prep после макроса %setup Желательно скопировать комментарий для патча из верхней части, чтобы было понятно что патч делает и было легко его отключать.
Для патча, созданного через gendiff - надо написать следующее:
- Name's upsteam don't want my patch, so I place it here. This make
all plugins properly linked. %patch0 -p1 Где номер 0 соответствует патчу номер 0.
Вот собственно и все. Если надо отключить патч, просто замените символ процента в %patch0 на символ решетки(#). Тогда он станет комментарием.
Надеюсь, это маленькое хауту поможет в благородном деле уменьшения количества обработанных напильником программ в вашем многострадальном /usr/local.