Entware-ng - новая система сборки пакетов Entware

Форум программистов
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 24 янв 2018, 00:26

kaztost писал(а):Источник цитаты Как и где пофиксить?

Скорее всего это я в очередной раз это сломал. Найдите архив в инете и закиньте в папку dl.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 25 янв 2018, 20:08

Посоветуйте какой-нибудь мануал (eng,rus - все равно), как нормально патчить пакеты, включая glibc. А то я там по сути разархивировал исходники, изменил их, запаковал все обратно, потом пропатчил (wtf) некоторые патчи, чтобы они по-прежнему успешно применялись при сборке toolchain/glibc.

Мануал желательно более подробный, чем этот.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 25 янв 2018, 22:21

Я все делаю одной командой `diff -u старый.файл новый.файл > новый.patch`. Вместо > может быть >>, если в папке нужно пропатчить несколько файлов. Потом в текстовом редакторе меняю пару первых строк. Иногда добавляю параметры к `diff -u`.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 25 янв 2018, 23:26

Zyxmon писал(а):Источник цитаты Я все делаю одной командой `diff -u старый.файл новый.файл > новый.patch`

Ну сначала же надо к старым файлам применить имеющиеся патчи, а затем получать новый патч, иначе какой-нибудь патч не сможет примениться. Я просто пока не вижу на каком этапе можно скормить сборке измененные распакованные исходники. В качестве примера приведу сиcтему сборки в alpine linux. Там можно сначала выполнять команды abuild fetch; abuild unpack; abuild prepare. Последняя команда применяет имеющиеся патчи. После этого можно спокойно редактировать исходники и, если надо, получать патчи diff-ом (если перед редактированием забекапиться, а diff можно и на всю директорию натравить). После этого можно уже выполнять abuild build. В процессе отладки своих изменений можно обойтись и без оформления новых патчей. Вот как-то похожим образом в Entware-ng (3x) можно действовать?

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

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 25 янв 2018, 23:43

kaztost писал(а):Источник цитаты Ну сначала же надо к старым файлам применить имеющиеся патчи

`make package/имя/{clean,prepare}` или похожим способом для toolchain/target и т.д.
kaztost писал(а):Источник цитаты В процессе отладки своих изменений можно обойтись и без оформления новых патчей.

После `make ..../prepare` отредактировать файлы и собирать дальше.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 25 янв 2018, 23:50

Zyxmon писал(а):Источник цитаты После `make ..../prepare` отредактировать файлы и собирать дальше.

Ок, попробую. А то у меня обычно получалось, что после моих правок, архивы с исходниками опять распаковывались, к ним применялись стандартные патчи и, в результате, мои правки исчезали.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 26 янв 2018, 17:22

Zyxmon писал(а):Источник цитаты diff -u старый.файл новый.файл > новый.patch

Вроде бы для создания совместимых со сборкой патчей надо, чтобы патчи начинались с

Код: Выделить всё

--- a/<file>
+++ b/<file>

У меня же там стоят пути к реальным файлам (измененный и оригинальный). Как эти a и b получить? Плюс еще в самом начале есть строка, содержащую вызыванную команду diff с параметрами. Это все вручную надо изменять?

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 26 янв 2018, 18:24

kaztost писал(а):Источник цитаты Как эти a и b получить?

Я делаю в текстовом редакторе.
kaztost писал(а):Источник цитаты Плюс еще в самом начале есть строка, содержащую вызыванную команду diff с параметрами.

В начале может быть любой текст, комментарий к патчу. Например - https://github.com/Entware-ng/Entware-n ... ault.patch
Часто в таком комментарии приводится переписка по проблеме и ее решению.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 26 янв 2018, 20:12

Zyxmon писал(а):Источник цитаты Я делаю в текстовом редакторе.

Ой, я ведь руки сломаю оформить свои патчи для libc. Там ведь я по сути глобально заменил /etc на /opt/etc в куче файлов.

В любом случае, спасибо за ответ.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 26 янв 2018, 22:31

kaztost писал(а):Источник цитаты Там ведь я по сути глобально заменил /etc на /opt/etc в куче файлов.

Тогда две папки - в одной пропатченная, в другой непропатченная либа. Обе "рядом". После этого `diff -Naur старая_папка новая_папка > lib.patch`


Вернуться в «Собираем софт сами (пакеты, прошивки)»

Кто сейчас на конференции

Всего 0 посетителей :: 0 зарегистрированных, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей