Работа с патчами start
Создание патча
Чтобы создать патч для проекта у вас должно быть следующее.
Перед созданием изменений для патча скопируйте папку с проектом и обзовите ее другим именем.
Например, наш проект /home/user/sysmontask.
Копируем ее в /home/user/sysmontask_patch
Совершаем изменения в папке /home/user/sysmontask_patch.
Теперь, чтобы создать патч, выполняем в консоли следующую команду:
$ diff -urN '/home/user/sysmontask' '/home/user/sysmontask_patch' > /home/user/mypatch.patch
Все изменения в файлах будут записаны в этот файл патча.
Применение патча при сборке пакета
Расположение файлов
Чтобы использовать патчи при сборке пакета нужно сделать следующее:
В каталоге для сборки пакета создайте произвольный каталог, например altlinux:
home └──hello <- каталог проекта ├── altlinux <- создаем каталог для патчей ├── hello ├── hello.spec ├── .gear └── .git
В нем расположите файл патча.
home └──hello <- каталог проекта ├── altlinux | └── mypatch.patch <- кидаем в каталог патчи ├── hello ├── hello.spec ├── .gear └── .git
Правка .gear/rules
В .gear/rules добавляем правило на добавление файлов патчей.
hello$ cd .gear .gear$ mcedit rules
Добавляем строки:
copy: altlinux/*.patch copy: altlinux/*.diff
Данные параметры при сборке пакета скопируют файлы патчей из папки altlinux в каталог для сборки.
Наш каталог:
home └── hello ├── .gear <- Мы сейчас здесь │ └── rules <- Мы отредактировали этот файл └── .git
Правка spec
В моменте правки спека, после строк вида:
Source: %name-%version.tar.gz # explicitly added texinfo for info files BuildRequires: texinfo
добавляем строки
Patch1: mypatch.patch
И т.д. с нужными, как нам нужно, номерами, добавляем список патчей которые мы прописали в gear/rules. При сборке патчи будут скопированы в общую папку для сборки и поэтому их использование будет "прозрачно", без указания пути на файловой системе.
После этого в разделе %prep, после setup, добавляем строку/строки:
%patch1 -p1
где
- %patch1 - патч прописанный в спеке ранее
- параметр -p1 - ...
Записав изменения в git и начав собирать hasher-ом вы примените изменения в код без правки кода в апстриме.