File psi+.spec of Package psi+
#
# spec file for package psi+
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%if 0%{?suse_version} > 1320
%define with_qt5 1
%endif
%define version_unconverted 20160727
Name: psi+
Url: https://github.com/psi-plus
Version: 20160727
Release: 0
Summary: Jabber client using Qt
License: GPL-2.0+
Group: Productivity/Networking/Talk/Clients
Source0: psi+-%{version}.tar.xz
Source1: psi-plus-l10n-1.tar.xz
# PATCH-FIX-UPSTREAM psi+-appdata-desktop-reference.patch dimstar@opensuse.org -- Fix the reference to the .desktop file in appdata.xml: upstream installs psi.desktop as psi-plus.desktop, psi.appdata.xml as psi-plus.appdata.xml. The reference inside the appdata.xml has to match in order for the linking between appdata file and .desktop file to work
Patch0: psi+-appdata-desktop-reference.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: aspell-devel
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: gdb
BuildRequires: libidn-devel
BuildRequires: libotr-devel
BuildRequires: libproxy-devel
%if 0%{?with_qt5}
BuildRequires: libqt5-linguist
BuildRequires: pkgconfig(Qt5Concurrent)
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Gui)
BuildRequires: pkgconfig(Qt5Multimedia)
BuildRequires: pkgconfig(Qt5PrintSupport)
BuildRequires: pkgconfig(Qt5Svg)
BuildRequires: pkgconfig(Qt5WebKit)
BuildRequires: pkgconfig(Qt5WebKitWidgets)
BuildRequires: pkgconfig(Qt5X11Extras)
BuildRequires: pkgconfig(Qt5Xml)
BuildRequires: pkgconfig(qca2-qt5)
%else
BuildRequires: libQtWebKit-devel
BuildRequires: libqca2-devel
BuildRequires: libqt4-devel >= 4.7.0
%endif
BuildRequires: libXScrnSaver-devel
BuildRequires: libtidy-devel
BuildRequires: openssl-devel
BuildRequires: update-desktop-files
BuildRequires: xz
BuildRequires: zlib-devel
Recommends: %{name}-lang = %{version}
Requires: %{name}-icons = %{version}
Requires: %{name}-sounds = %{version}
Requires: %{name}-themes = %{version}
Obsoletes: psi
%define iconspath %{_datadir}/psi-plus/iconsets
%define pluginspath %{_libdir}/psi-plus/plugins
%description
Psi is the premiere Instant Messaging application designed for
GNU/Linux, Microsoft Windows, Apple Mac OS X. Built upon an open
protocol named Jabber, Psi is a fast and lightweight messaging client
that utilises the best in open source technologies. Psi contains all
the features necessary to chat, with no bloated extras that slow your
computer down.
%package icons
Summary: Icons for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
BuildArch: noarch
%description icons
Icons for Psi.
%package lang
Summary: Translations for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
BuildArch: noarch
%description lang
Translations for Psi.
%package sounds
Summary: Icons for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
BuildArch: noarch
%description sounds
Sounds for Psi.
%package themes
Summary: Themes for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
BuildArch: noarch
%description themes
Themes for Psi.
%package plugins-devel
Summary: Headers for Psi plugins
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
%description plugins-devel
Headers and qmake project include files for developing Psi+ plugins.
%package plugins-juickplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-juickplugin
This plugin is designed to work efficiently and comfortably with the Juick
microblogging service.
%package plugins-autoreplyplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-autoreplyplugin
This plugin acts as an auto-answering machine.
%package plugins-translateplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-translateplugin
This plugin allows you to convert selected text into another language.
%package plugins-imageplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-imageplugin
This plugin is designed to send images to roster contacts.
%package plugins-jabberdiskplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-jabberdiskplugin
This plugin adds support for remote jabber disks into Psi+.
%package plugins-birthdayreminderplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-birthdayreminderplugin
This plugin is designed to show reminders of upcoming birthdays.
%package plugins-gmailserviceplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-gmailserviceplugin
Shows notifications of new messages in your Gmailbox.
%package plugins-gnupgplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-gnupgplugin
Plugin to support GnuPG end-to-end encryption.
%package plugins-gomokugameplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-gomokugameplugin
Plugin to add Gomoku game to Psi+.
%package plugins-gnome3supportplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-gnome3supportplugin
This plugin is designed to add support of GNOME 3 presence status changes.
%package plugins-screenshotplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-screenshotplugin
This plugin allows you to make screenshots and save them to your hard drive or
upload them to an FTP or HTTP server.
%package plugins-stopspamplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-stopspamplugin
This plugin is designed to block spam messages and other unwanted information
from Psi+ users.
%package plugins-conferenceloggerplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-conferenceloggerplugin
This plugin is designed to save conference logs in which the Psi+ user sits.
%package plugins-cleanerplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-cleanerplugin
This plugin is designed to clear the avatar cache, saved local copies of vCards
and history logs.
%package plugins-clientswitcherplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-clientswitcherplugin
This plugin allows Psi+ to provide a different identification. For example a
user can set Psi+ to tell others that the user is running Miranda on Windows
instead of Psi+ on Linux.
%package plugins-enummessagesplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-enummessagesplugin
The plugin is designed to enumerate messages, adding the messages numbers in
chat logs and notification of missed messages.
Supports per contact on / off message enumeration via the buttons on the chats
toolbar.
%package plugins-icqdieplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-icqdieplugin
This plugin is designed to help you transfer as many contacts as possible from
ICQ to Jabber.
%package plugins-messagefilterplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-messagefilterplugin
A Psi plugin for filtering messages.
%package plugins-watcherplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-watcherplugin
This plugin is designed to monitor the status of specific roster contacts, as
well as for substitution of standard sounds of incoming messages.
%package plugins-attentionplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-attentionplugin
This plugin is designed to send and receive special messages such as Attentions.
%package plugins-extendedmenuplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-extendedmenuplugin
This plugin adds more options to contact's menus.
%package plugins-extendedoptionsplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-extendedoptionsplugin
This plugin is designed to allow easy configuration of some advanced options in
Psi+.
%package plugins-storagenotesplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-storagenotesplugin
This plugin is an implementation of XEP-0049: Private XML Storage.
%package plugins-historykeeperplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-historykeeperplugin
This plugin is designed to remove the history of selected contacts when the Psi+
is closed.
%package plugins-chessplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-chessplugin
This plugin adds the chess game into Psi+.
%package plugins-otrplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-otrplugin
Off-the-Record (OTR) Messaging allows you to have private conversations over
instant messaging.
%package plugins-pepchangenotifyplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-pepchangenotifyplugin
This plugin shows popup notifications when users from your roster changes
their mood, tune or activity.
%package plugins-skinsplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-skinsplugin
This plugin is designed to create, store and apply skins to Psi+.
%package plugins-qipxstatusesplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-qipxstatusesplugin
This plugin is designed to display x-statuses of contacts using the QIP Infium
jabber client.
%package plugins-videostatusplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-videostatusplugin
This plugin is designed to set the custom status when you see the video in
selected video player.
%package plugins-captchaformsplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-captchaformsplugin
This plugin is designed to pass of captcha directly from the Psi+.
%package plugins-contentdownloaderplugin
Summary: Plugin for Psi
Group: Productivity/Networking/Talk/Clients
Requires: %{name} = %{version}
%description plugins-contentdownloaderplugin
This plugin is designed to make it easy to download and install iconsets and
other resources for Psi+.
%prep
%setup -q -b 1
%patch0 -p1
%if 0%{?with_qt5}
sed -i 's@\<lrelease\>@&-qt5@' ../psi-plus-l10n-1/update-translations.sh
%endif
# generic/antievil does not build (yet)
# generic/consoledump does not build (yet)
# generic/chess is a standalone app for chessplugin
# generic/echo does not build (yet)
# generic/noughtsandcrosses does not build (needs old Qt3 support)
# generic/null is a nop
# generic/python does not build (needs old python 2 and has invalid -I)
# generic/urlwatcher does not build (yet)
GENERIC_PLUGINS="attentionplugin autoreplyplugin birthdayreminderplugin
captchaformsplugin cleanerplugin clientswitcherplugin
conferenceloggerplugin contentdownloaderplugin enummessagesplugin
extendedmenuplugin
extendedoptionsplugin gmailserviceplugin gnupgplugin gomokugameplugin
historykeeperplugin chessplugin icqdieplugin imageplugin
jabberdiskplugin juickplugin messagefilterplugin otrplugin
pepchangenotifyplugin
qipxstatusesplugin screenshotplugin skinsplugin stopspamplugin
storagenotesplugin translateplugin videostatusplugin watcherplugin"
UNIX_PLUGINS="gnome3supportplugin"
PLUGINS="`echo -n $GENERIC_PLUGINS | sed 's@\<@generic/@g'`"
PLUGINS="$PLUGINS `echo -n $UNIX_PLUGINS | sed 's@\<@unix/@g'`"
%if 0%{?with_qt5}
QMAKE=qmake-qt5
%else
QMAKE=qmake
%endif
# generate Makefile for plugins
cat >src/plugins/Makefile <<EOF
SUBDIRS=$PLUGINS
PLUGINS_PATH=/usr/lib64/
INSTALL=install
all: \$(SUBDIRS)
install:
\$(INSTALL) -d \$(PLUGINS_PATH)
for DIR in \$(SUBDIRS); do \
PLUGIN="lib\`basename \$\$DIR\`.so"; \
\$(INSTALL) -m 755 \$\$DIR/\$\$PLUGIN \$(PLUGINS_PATH); \
done
\$(SUBDIRS)::
cd \$@; $QMAKE
\$(MAKE) -C \$@ \$(MAKECMDGOALS)
EOF
%build
# do not use %%configure - not real configure script
export QMAKE_CXXFLAGS="%{optflags}"
./configure --prefix=%{_prefix} --libdir=%{_libdir} \
--enable-plugins \
--enable-webkit \
--enable-whiteboarding \
%if 0%{?with_qt5}
--with-qca-inc=/usr/include/qt5/Qca-qt5/ \
--with-qca-lib=/usr/lib64 \
%endif
--debug --no-separate-debug-info
make %{?_smp_mflags}
make -C src/plugins %{?_smp_mflags}
cd %{_builddir}/psi-plus-l10n-1/
./update-translations.sh make
%install
make INSTALL_ROOT=%{buildroot} install
rm -f %{buildroot}%{_datadir}/psi-plus/{COPYING,README}
rm -f %{buildroot}%{_datadir}/psi-plus/iconsets/emoticons/utils/smiles_conv.zip
%suse_update_desktop_file psi-plus
# plugins
make -C src/plugins %{?_smp_mflags} install \
PLUGINS_PATH="%{buildroot}%{pluginspath}"
# translations
install -m 0644 -t %{buildroot}%{_datadir}/psi-plus ../psi-plus-l10n-1/out/*.qm
%fdupes $RPM_BUILD_ROOT/%{_datadir}
%files plugins-juickplugin
%defattr(-,root,root)
%{pluginspath}/libjuickplugin.so
%files plugins-autoreplyplugin
%defattr(-,root,root)
%{pluginspath}/libautoreplyplugin.so
%files plugins-captchaformsplugin
%defattr(-,root,root)
%{pluginspath}/libcaptchaformsplugin.so
%files plugins-contentdownloaderplugin
%defattr(-,root,root)
%{pluginspath}/libcontentdownloaderplugin.so
%files plugins-translateplugin
%defattr(-,root,root)
%{pluginspath}/libtranslateplugin.so
%files plugins-screenshotplugin
%defattr(-,root,root)
%{pluginspath}/libscreenshotplugin.so
%files plugins-birthdayreminderplugin
%defattr(-,root,root)
%{pluginspath}/libbirthdayreminderplugin.so
%files plugins-stopspamplugin
%defattr(-,root,root)
%{pluginspath}/libstopspamplugin.so
%files plugins-conferenceloggerplugin
%defattr(-,root,root)
%{pluginspath}/libconferenceloggerplugin.so
%files plugins-gmailserviceplugin
%defattr(-,root,root)
%{pluginspath}/libgmailserviceplugin.so
%files plugins-gnupgplugin
%defattr(-,root,root)
%{pluginspath}/libgnupgplugin.so
%files plugins-gomokugameplugin
%defattr(-,root,root)
%{pluginspath}/libgomokugameplugin.so
%files plugins-gnome3supportplugin
%defattr(-,root,root)
%{pluginspath}/libgnome3supportplugin.so
%files plugins-imageplugin
%defattr(-,root,root)
%{pluginspath}/libimageplugin.so
%files plugins-jabberdiskplugin
%defattr(-,root,root)
%{pluginspath}/libjabberdiskplugin.so
%files plugins-icqdieplugin
%defattr(-,root,root)
%{pluginspath}/libicqdieplugin.so
%files plugins-cleanerplugin
%defattr(-,root,root)
%{pluginspath}/libcleanerplugin.so
%files plugins-clientswitcherplugin
%defattr(-,root,root)
%{pluginspath}/libclientswitcherplugin.so
%files plugins-enummessagesplugin
%defattr(-,root,root)
%{pluginspath}/libenummessagesplugin.so
%files plugins-messagefilterplugin
%defattr(-,root,root)
%{pluginspath}/libmessagefilterplugin.so
%files plugins-watcherplugin
%defattr(-,root,root)
%{pluginspath}/libwatcherplugin.so
%files plugins-attentionplugin
%defattr(-,root,root)
%{pluginspath}/libattentionplugin.so
%files plugins-extendedmenuplugin
%defattr(-,root,root)
%{pluginspath}/libextendedmenuplugin.so
%files plugins-extendedoptionsplugin
%defattr(-,root,root)
%{pluginspath}/libextendedoptionsplugin.so
%files plugins-storagenotesplugin
%defattr(-,root,root)
%{pluginspath}/libstoragenotesplugin.so
%files plugins-historykeeperplugin
%defattr(-,root,root)
%{pluginspath}/libhistorykeeperplugin.so
%files plugins-chessplugin
%defattr(-,root,root)
%{pluginspath}/libchessplugin.so
%files plugins-otrplugin
%defattr(-,root,root)
%{pluginspath}/libotrplugin.so
%files plugins-pepchangenotifyplugin
%defattr(-,root,root)
%{pluginspath}/libpepchangenotifyplugin.so
%files plugins-qipxstatusesplugin
%defattr(-,root,root)
%{pluginspath}/libqipxstatusesplugin.so
%files plugins-skinsplugin
%defattr(-,root,root)
%{pluginspath}/libskinsplugin.so
%files plugins-videostatusplugin
%defattr(-,root,root)
%{pluginspath}/libvideostatusplugin.so
%files
%defattr(-,root,root)
%doc ChangeLog COPYING README TODO
%{_bindir}/psi-plus
%dir %{_datadir}/appdata
%{_datadir}/appdata/psi-plus.appdata.xml
%{_datadir}/applications/psi-plus.desktop
%dir %{_datadir}/icons/hicolor/
%dir %{_datadir}/icons/hicolor/16x16
%dir %{_datadir}/icons/hicolor/16x16/apps
%dir %{_datadir}/icons/hicolor/32x32
%dir %{_datadir}/icons/hicolor/32x32/apps
%dir %{_datadir}/icons/hicolor/48x48
%dir %{_datadir}/icons/hicolor/48x48/apps
%dir %{_datadir}/icons/hicolor/64x64
%dir %{_datadir}/icons/hicolor/64x64/apps
%dir %{_datadir}/icons/hicolor/128x128
%dir %{_datadir}/icons/hicolor/128x128/apps
%{_datadir}/icons/hicolor/*/apps/psi-plus.png
%dir %{_datadir}/psi-plus/
%{_datadir}/psi-plus/certs
%dir %{_libdir}/psi-plus
%dir %{_libdir}/psi-plus/plugins
%files lang
%defattr(-,root,root)
%{_datadir}/psi-plus/*.qm
%files icons
%defattr(-,root,root)
%dir %{iconspath}/
%dir %{iconspath}/activities
%{iconspath}/activities/default
%dir %{iconspath}/affiliations
%{iconspath}/affiliations/default
%dir %{iconspath}/moods
%{iconspath}/moods/default
%dir %{iconspath}/roster
%{iconspath}/roster/default
%{iconspath}/roster/crystal-aim.jisp
%{iconspath}/roster/crystal-gadu.jisp
%{iconspath}/roster/crystal-icq.jisp
%{iconspath}/roster/crystal-msn.jisp
%{iconspath}/roster/crystal-roster.jisp
%{iconspath}/roster/crystal-service.jisp
%{iconspath}/roster/crystal-sms.jisp
%{iconspath}/roster/crystal-yahoo.jisp
%{iconspath}/roster/stellar-1.jisp
%{iconspath}/roster/README
%dir %{iconspath}/system
%{iconspath}/system/default
%{iconspath}/system/README
%dir %{iconspath}/emoticons
%{iconspath}/emoticons/default
%{_datadir}/psi-plus/client_icons.txt
%files sounds
%defattr(-,root,root)
%{_datadir}/psi-plus/sound
%files themes
%defattr(-,root,root)
%{_datadir}/psi-plus/themes
%files plugins-devel
%defattr(-,root,root)
%dir %{_datadir}/psi-plus/plugins/
%{_datadir}/psi-plus/plugins/include/
%{_datadir}/psi-plus/plugins/*.pri
%changelog