Подскажите, как правильно создать патчи для исходников

Автор nihi1ist, 06 мая 2017, 08:04:55

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

nihi1ist

Здравствуйте.

Нашел репозиторий Github. Там есть патчи для Dante 1.4.1, подскажите как правильно создать патчи для 1.4.2? Насчет diff читал, даже пробовал исправить пару патчей. Но процесс сборки всё равно вываливается с ошибкой. До этого в тексте ошибки мне было понятно, какая часть патча не срабатывает, но после исправлений уже не могу разобраться. Точнее вижу, что скрипт не находит файл для применения патча, но почему он не может найти не пойму.

alsoijw

Форкаешь реп в гитхабе, клонируешь форк, меняешь исходники, заливаешь на гитхаб, шлёшь автору пул реквест, готово.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

nihi1ist

Цитата: alsoijw от 06 мая 2017, 22:02:44Форкаешь реп в гитхабе, клонируешь форк, меняешь исходники, заливаешь на гитхаб, шлёшь автору пул реквест, готово.
Я как бы совсем не про то, вы ошибку то посмотрите. Зачем посылать pull-request'ы, если патчи не работают? Надо сначала починить, а потом отсылать.

alsoijw

Цитата: nihi1ist от 06 мая 2017, 08:04:55Там есть патчи для Dante 1.4.1
Собирается? Или же проблема возникает после модификации?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

ZEN

#4
Бегло посмотрел на патчи. И результат следующей проверки показывает, что патч 01-rename-library.patch несовместим.

$ git clone https://github.com/notpeter/dante.git
$ cd dante
$ ls ../debian/patches/*.patch -1
01-rename-library.patch
02-rename-programs.patch
03-configure.patch
10-config-users.patch

$ git apply --check ../debian/patches/01-rename-library.patch
error: patch failed: dante/include/socks.h:471
error: dante/include/socks.h: patch does not apply
error: patch failed: dante/dlib/Makefile.in:406
error: dante/dlib/Makefile.in: patch does not apply
error: patch failed: dante/lib/Makefile.in:391
error: dante/lib/Makefile.in: patch does not apply

$ git apply --check ../debian/patches/02-rename-programs.patch
$ git apply --check ../debian/patches/03-configure.patch
$


Вопрос в том, нужен ли этот патч вообще. Если не нужен (например, правки из этого патча попали в ветку 1.4.2), то можно просто из файла debian/patches/series удалить строку "01-rename-library.patch" и попробовать собрать deb-пакет. В противном случае, нужно подгонять патч под основной код (по выводу выше видно, что мы не смогли пропатчить файлы dante/include/socks.h, dante/dlib/Makefile.in и dante/lib/Makefile.in) или создавать новый патч с нуля.
Crimea is Ukraine

nihi1ist

Цитата: ZEN от 07 мая 2017, 22:58:58Вопрос в том, нужен ли этот патч вообще. Если не нужен (например, правки из этого патча попали в ветку 1.4.2), то можно просто из файла debian/patches/series удалить строку "01-rename-library.patch" и попробовать собрать deb-пакет. В противном случае, нужно подгонять патч под основной код (по выводу выше видно, что мы не смогли пропатчить файлы dante/include/socks.h, dante/dlib/Makefile.in и dante/lib/Makefile.in) или создавать новый патч с нуля.
Эти патчи предназначены для переименования названий исполняемых и библиотек в стиле Debian. Я специально внес вручную изменения в один из файлов и на основе него сделал патч. Но патч всё равно не сработал.

nihi1ist

С работоспособностью патчей разобрался. Подскажите как создать патч для нескольких файлов?

nihi1ist

Согласно статье создал ключ и добавил его:
apt-key add keyring.asc
Ключ в списке ключей появился, но при сборке пакета все равно ругается на отсутствие закрытого ключа.
dpkg-genbuildinfo
dpkg-genchanges  >../dante_1.4.2+dfsg-1_amd64.changes
dpkg-genchanges: инфо: в закачку включён весь исходный код
dpkg-source --after-build dante-1.4.2
dpkg-buildpackage: инфо: закачка всего; родной пакет Debian (включены все пакеты исходного кода)
signfile dante_1.4.2+dfsg-1.dsc
gpg: starting migration from earlier GnuPG versions
gpg: porting secret keys from '/root/.gnupg/secring.gpg' to gpg-agent
gpg: migration succeeded
gpg: пропущено "Sabir Abdurakhmanov <nihi1ist@zhasulan.com>": Нет закрытого ключа
gpg: dpkg-sign.ly7y66Xn/dante_1.4.2+dfsg-1.dsc: clear-sign failed: Нет закрытого ключа


Знаю, что можно использовать ключи uc us. Но, ключ то есть. Что я делаю не так?