RU:Патчи

From PsiWiki


Патчи предназначены для изменения исходного кода программы с целью изменения его функциональной нагрузки. Другими словами патчи изменяют (в частности — дополняют) возможности программы.

Contents

Патчинг

Патчи — не единственный путь скоростного конструктора для манипулирования кодом Psi с целью изменения функционала. Psi имеет также API для плагинов (англ.).

Где найти

Для дополнения Psi новыми возможностями существует множество патчей:

Готовенькое

Скомпиллированые билды Psi с наложенными патчами:

  • Билд и либы Qt 4.4 для Windows (Если при запуске Psi матерится на ненайденную точку входа — обновите библиотеки Qt в папке с psi.exe)
  • Ebuild для Gentoo
  • Deb-пакеты для Debian и Ubuntu Linux (скомпилленно на Qt 4.3.2)


Скрипты автоматизации

Чтобы не гемороиться с консолью, предлагаем Вам следующие скрипты, готовые предоставить быстрое конфигурирование, накладывание патчей и, собственно, компилляцию.

Флаконы "всё в одном" предоставлены для Windows и Linux.

*Nix

TODO: FIXME

Скрипт для компилляции с патчами. Запускать из trunk/

! НЕ ПРОВЕРЕНО !

#!/bin/sh

# Патч для компилляции Psi с патчами (май 2008)
# Советую разобраться в том что он делает.
# Теоретически должен работать как минимум на Ubuntu Linux.
# Скрипт убог, поэтому фиксы писать мне или править тут.
# //mag2000

# Инициализация переменных...
# Установка каталога с патчами. Не забудь '/' в конце!
ppath=`/PATH_TO_PATCHES/` &&
# ...завершение инициализации


# Очистка от патчей
cd src &&
rm -f *.orig *.rej mucreasonseditor.* groupchattopicdlg.* entitytimetask.* timeserver.* options/opt_iconset_mood.ui &&
cd .. &&
printf "Cleared.\n" &&

svn revert -R ./ &&
svn update &&
./configure &&
make &&

# Накладывание патчей
patch -p1 < ${ppath}psi-muc-kickban-reasons.diff &&
patch -p1 < ${ppath}psi-vcard-save.diff &&
patch -p0 < ${ppath}psi-muc-topic.diff &&
patch -p1 < ${ppath}psi/psi-muc-nickclick.diff &&

patch -p0 < ${ppath}psi-replies-for-message-receipts.diff &&
patch -p0 < ${ppath}psi-muc-user-count.diff &&
patch -p0 < ${ppath}psi-machekku-avatars_in_tooltip.diff &&
patch -p1 < ${ppath}psi-machekku-entity_time-0.1.2.diff &&

patch -p0 < ${ppath}psi-mood-icons.diff &&
patch -p0 < ${ppath}psi-muc-change-affiliation.diff &&
patch -p0 < ${ppath}psi-muc-nickclick-chat.diff &&
patch -p0 < ${ppath}psi-send-button-arrow.diff &&

patch -p1 < ${ppath}psi-bookmarkskip.diff &&
patch -p1 < ${ppath}psi-notify_muc_highlight.diff &&

printf "\n\nPatched.\n\n" &&

# Установка версии в исходники
svn revert src/applicationinfo.cpp > /dev/null &&
rev=`svnversion` &&
time=`date +'%d.%m.2k8'` &&
sed -i "s/\"0\.12-\(dev\|RC[0-9]\)\"/\"0.12-\1-r${rev}-${time}\"/" "src/applicationinfo.cpp" &&
printf "\nRevision changed.\n" &&

make &&
printf "\n-----------------\nMake complete. Enjoy!\n"

Windows

TODO: Похакать сервера Ивана и Зета на наличие скриптов


См. также