Table of Contents

Psi+ on OpenSUSE Linux

ВНИМАНИЕ: инструкция ниже протухла в связи с переездом на git. вы всегда можете попробовать общую инструкцию по линуксу.

Вступление

Сборка Psi+ на OpenSUSE “с нуля” (на голой системе).

Что может понадобиться и как собирать?

В вашей системе может не быть QtCrypto и QtDev >=4.4.2. В случае отсутствия – их необходимо установить до начала сборки.

Установка пакетов для сборки Psi+. Устанавливаются один раз при первой сборке.

zypper in git-core gcc libqt4-devel qt4-x11-tools qdevelop patch make

Удаляем предыдущую сборку для сборки “начисто”:

cd ~
rm psi -r

Скачиваем исходники Psi и субмодули из git:

cd ~
git clone git://git.psi-im.org/psi.git
cd psi
git submodule init
git submodule update

Полученную директорию можете сохранить, и потом, выполнив в ней комманды, получите актуальную версию Psi.

git pull
git submodule update

Скачаем все патчи и устанавливаем их:

cd ~
svn co http://psi-dev.googlecode.com/svn/trunk/patches/ psi
cd psi
cat *.diff|patch -p1

Скачиваем иконпаки, необходимые для сборки и прописываем актуальную ревизию в версию Psi+:

cd ~/psi
svn export --force http://psi-dev.googlecode.com/svn/trunk/iconsets/system/default iconsets/system/default
svn export --force http://psi-dev.googlecode.com/svn/trunk/iconsets/roster/default iconsets/roster/default
rev=`svnversion`
sed "s/\(xxx\)/${rev}/" -i src/applicationinfo.cpp

Cобираем Psi+ и устанавливаем:

cd ~/psi
qconf && ./configure --enable-plugins && make && make install

Примечание! Если не установлен qconf, то необходимо сделать это самому.

Если по команде ./configure получаем ошибку qtcore, то пишем:

qmake --version

Смотрим путь и запускаем ./configure с пареметром:

./configure --qtdir=<path>

Скорее всего это будет:

./configure --qtdir=/usr/lib

Дополнения

Если необходимо установить дополнительные смайлы, иконки настроений, или русскую локализацию, то делаем следующее:

Смайлы

cd /usr/local/share/psi/iconsets/emoticons
wget http://psi-dev.googlecode.com/svn/trunk/iconsets/emoticons/lk_35x35x138_tasha.jisp
wget http://psi-dev.googlecode.com/svn/trunk/iconsets/emoticons/tasha_18x18x93.jisp

Настроения

cd /usr/local/share/psi/iconsets
mkdir moods
cd moods
wget http://psi-dev.googlecode.com/svn/trunk/iconsets/moods/silk.jisp

Русская локализация

cd /usr/local/share/psi
wget http://psi-ru.googlecode.com/svn/branches/psi-plus/psi_ru.qm

Сборка rpm-пакета

Собираем исходные коды и патчи

#!/bin/sh
#
#переменные:
#$USER - имя пользователя в системе
home=/home/$USER
psi=/home/$USER/psi_dev
#примечание: для архитектуры x86_64 заменить app_info на $(ls /home/$USER/psi_dev/psi/ | grep application-info.diff)
app_info=ls /home/$USER/psi_dev/psi/ | grep application-info.diff
build_root=/usr/src/packages/
#примечание: для архитектуры x86_64 заменить rev на $(svnversion "$/home/$USER/psi_dev/patches")
rev=`svnversion "$/home/$USER/psi_dev/patches"`
cd ${home}
mkdir psi_dev
cd ${psi}
git clone git://git.psi-im.org/psi.git
cd psi
git submodule init
git submodule update
cd ${psi}
svn co http://psi-dev.googlecode.com/svn/trunk/patches/
cp ${psi}/patches/*diff ${psi}/psi
cd ${psi}/psi
sed "s/\(xxx Beta\)/${rev} Beta/" -i "${app_info}"
for f in *diff; do patch -p1 -i "${f}"; done
sed 's/<!--\(.*plugins.*\)-->/\1/' -i psi.qc
cd ${psi}
mv psi psi-0.15_dev
tar -pczf psi-0.15_dev.tar.gz psi-0.15_dev
rm -r ${build_root}/SOURCES/
cp psi-0.15_dev.tar.gz ${build_root}/SOURCES
chown -R $USER:users ${psi}
exit 0

Примечание: данный скрипт сам собирает исходные коды и подготавливает их к сброке в rpm-пакет (необходимо запускать с правами root).

Для сборки rpm-пакета необходим spec-файл

Summary: Client application for the XMPP network      
Name: psi                                               
Version: 0.15_dev                                       
Release: %{dist}                                        
License: GPL                                            
Group: Applications/Internet                            
URL: http://code.google.com/p/psi-dev/                  
Source0: %{name}-%{version}.tar.gz                      


BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root


BuildRequires: openssl-devel, gcc-c++, zlib-devel
%{!?_without_freedesktop:BuildRequires: desktop-file-utils}


%description
Psi is the premiere Instant Messaging application designed for Microsoft Windows, 
Apple Mac OS X and GNU/Linux. Built upon an open protocol named XMPP,           
si is a fast and lightweight messaging client that utilises the best in open      
source technologies. The goal of the Psi project is to create a powerful, yet     
easy-to-use XMPP client that tries to strictly adhere to the XMPP drafts.  
and XMPP JEPs. This means that in most cases, Psi will not implement a feature  
unless there is an accepted standard for it in the XMPP community. Doing so     
ensures that Psi will be compatible, stable, and predictable, both from an end-user 
and developer standpoint.                                                           


%prep
%setup


%build
qconf
#для сборки без webkit'a нужно удалить флаг *--enable-qtwebkit*
./configure --prefix="%{_prefix}" --bindir="%{_bindir}" --datadir="%{_datadir}" --qtdir=$QTDIR --enable-plugins --enable-qtwebkit --no-separate-debug-info
%{__make} %{?_smp_mflags}                                                                                                               


%install
%{__rm} -rf %{buildroot}


%{__make} install INSTALL_ROOT="%{buildroot}"


# Install the pixmap for the menu entry
%{__install} -Dp -m0644 iconsets/system/default/logo_128.png}} \
    %{buildroot}%{_datadir}/pixmaps/psi.png}} ||:               


%post
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :


%postun
touch --no-create %{_datadir}/icons/hicolor || :
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :


%clean
%{__rm} -rf %{buildroot}


%files
%defattr(-, root, root, 0755)
%doc COPYING README TODO
%{_bindir}/psi
%{_datadir}/psi/
%{_datadir}/pixmaps/psi.png
%{_datadir}/applications/psi.desktop
%{_datadir}/icons/hicolor/*/apps/psi.png
%exclude %{_datadir}/psi/COPYING
%exclude %{_datadir}/psi/README

Примечание: spec-файл нужно сохранить в /usr/src/packages/SPECS/psi.spec

Сборка rpm-пакета

cd /usr/src/packages/SPECS/
rpmbuild -bb psi.spec

Примечание: Флаг -bb указывает программе на сборку бинарного пакета. После удачной сборки пакет можно забрать из директории /usr/src/packages/RPMS/$архитектура-процессора.

И установить командой:

rpm -ihv psi-0.15_dev.rpm

В заключении

Наслаждаемся ;-)