Патчи [РЕШЕНО]

А вот вопрос: можно ли в Calculate с помощью Portage ставить патчи, например на wine, krusader и т.п.? И как это корректно делать?

Я так понял первый вариант - положить патч в /usr/portage/app-emulation/wine/files (это на примере wine) и править ebuild. Затем - как обычно при установке пакета. Но писать ebuild-ы я не умею и как туда всобачить патчи не знаю. (((

Второй вариант - установка вручную (взято вот отсюда: http://www.calculate-linux.ru/main/ru/using_ebuild):

  1. Извлечение исходных кодов и проверка контрольных сумм

    ebuild путь/к/файлу-ebuild fetch
    

2. Распаковка исходных кодов в /var/tmp/portage

   ebuild путь/к/файлу-ebuild unpack

Пы.Сы. У меня распаковался не в /var/tmp/portage, а в /var/calculate/tmp/portage

3. Вот тут и надо накладывать патчи (я так думаю):
Переходим в распакованный каталог

   cd /var/calculate/tmp/portage/app-emulation/wine-1.3.24/work/wine-1.3.24

(опять на примере wine), и применяем патч

   patch -p1 < /path/to/the/patch/mypatch.patch

4. Компиляция исходных кодов

   ebuild путь/к/файлу-ebuild compile

5. Установка файлов во временное место:

   ebuild путь/к/файлу-ebuild install

6. Помещение файлов в рабочую файловую систему

   ebuild путь/к/файлу-ebuild qmerge

7. Очистка временного каталога

   ebuild путь/к/файлу-ebuild clean

Так вот это правильно? И насколько корректно?

Нашел, как вписывать патчи в .ebuild:
В разделе src_unpack() в конце добавляем

   epatch "${FILESDIR}"/mypatch.patch || die

(Все это лучше делать в локальном оверлее /usr/local/portage и добавлять патчи тоже туда - положить патч в /usr/local/portage/app-emulation/wine/files)

В Calculate есть свой механизм накладывания патчей без правки ebuild-файлов.

Поместите свой файл с патчем по следующему пути:

/var/lib/layman/calculate/profiles/patches/${CATEGORY}/${PN}-${PV}-${название патча}.patch

Патч будет применен к исходному коду пакета перед его компиляцией.

  • CATEGORY - категория пакета
  • PN - название пакета
  • PV - версия пакета

Пример:

* Патч для пакета net-p2p/bittorrent-5.2.2:

/var/lib/layman/calculate/profiles/patches/net-p2p/bittorrent-5.2.2-unicode.patch

* Патч для пакета net-p2p/bittorrent с версиями 5.2.x:

/var/lib/layman/calculate/profiles/patches/net-p2p/bittorrent-5.2-unicode.patch

* Патч для пакета net-p2p/bittorrent с версиями 5.2.2, 5.2.3 и 5.2.4:

/var/lib/layman/calculate/profiles/patches/net-p2p/bittorrent-5.2.2-4-unicode.patch

Круто!
Спасибо!
То-есть если поместить по этому пути патч, он будет автоматически накладываться при установке/переустановке пакета?
А если у патча расширение другое, например mypatch.diff?
А если патчей несколько, как можно настроить очередность их применения?
Можно ли в названии патча использовать тире, например так: wine-1.3-my-patch.patch?

Можно ли в названии патча использовать тире, например так: wine-1.3-my-patch.patch?

Лучше использовать подчеркивание wine-1.3-my_patch.patch.

А если патчей несколько, как можно настроить очередность их применения?

Порядок можно организовать следующим образом
# wine-1.3-00_my_patch.patch
# wine-1.3-01_my_patch.patch
# wine-1.3-02_my_patch.patch

То-есть если поместить по этому пути патч, он будет автоматически накладываться при установке/переустановке пакета?

Да. Во время установки вы увидите строчку Trying to apply <название патча>, справа отобразится наложился патч или будет пропущен (ок или !!).

А если у патча расширение другое, например mypatch.diff?

Расширение должно быть "patch", "diff" или "sh". В случае использования "sh", будет выполнен bash-скрипт. Только прежде, чем поместить скрипт, просмотрите в каталоге /var/lib/layman/calculate/profiles/patches примеры sh-патчей. Дело в том, что sh скрипты запускаются не только один раз, поэтому в них важно указывать проверку ${EBUILD_PHASE}.

Спасибо!

Собираю астериск с поддержкой карты yeastar. На сайте производителя лежит патч ystdm-dahdi-2.4.1.patch.tar.gz
Следуя советам, кладу его по адресу

/var/lib/layman/calculate/profiles/patches/net-misc/dahdi-2.4.1-ystdm.patch

запускаю

ebuild dahdi-2.4.1.ebuild prepare

и ничего не вижу про применение патча. Или я что-то не так делаю?

P.S.
точнее, упоминание-то я вижу, а вот применение, что-то нет.

ну не знаю насчет ‘prepare’, а у меня после пересборки вайна патчи наложились, смотрел лог с помощью elogv