File psi-plus.spec of Package psi-plus
Name: psi-plus
Summary: Cross-platform XMPP ("jabber") client
License: GPL-2.0-or-later
URL: https://github.com/psi-plus
Version: 1.5.2132
Release: 3%{?dist}
Group: Productivity/Networking/Instant Messenger
Provides: psi+ = %{version}-%{release}
Source0: %{name}-%{version}.tar.gz
BuildRequires: binutils
BuildRequires: ccache
BuildRequires: gcc-c++
BuildRequires: hicolor-icon-theme
BuildRequires: make
BuildRequires: pkgconfig
BuildRequires: aspell-devel
BuildRequires: enchant-devel
BuildRequires: gstreamer-devel
BuildRequires: gstreamer-plugins-bad-devel
BuildRequires: gstreamer-plugins-base-devel
BuildRequires: http-parser-devel
BuildRequires: hunspell-devel
BuildRequires: qca-qt5-devel
BuildRequires: qtkeychain-qt5-devel
BuildRequires: libgpg-error-devel
BuildRequires: libhttp_parser2_9
BuildRequires: libidn-devel
BuildRequires: libidn2-devel
BuildRequires: libomemo-c-devel
BuildRequires: libopenssl-3-devel
BuildRequires: libopenssl-devel
BuildRequires: libotr-devel
BuildRequires: libproxy-devel
BuildRequires: libQt5Concurrent-devel
BuildRequires: libQt5Core-devel
BuildRequires: libQt5DBus-devel
BuildRequires: libQt5Gui-devel
BuildRequires: libQt5PrintSupport-devel
BuildRequires: libQt5Sql-devel
BuildRequires: libQt5Xml-devel
BuildRequires: libqt5-linguist-devel
BuildRequires: libqt5-qtbase-devel
BuildRequires: libqt5-qtmultimedia-devel
BuildRequires: libqt5-qtsvg-devel
BuildRequires: libqt5-qtwebengine-devel
BuildRequires: libqt5-qtx11extras-devel
BuildRequires: libSM-devel
BuildRequires: libtidy-devel
BuildRequires: libX11-devel
BuildRequires: libxkbcommon-x11-devel
BuildRequires: libXss-devel
BuildRequires: minizip-devel
BuildRequires: omemo-utils
BuildRequires: usrsctp-devel
BuildRequires: xorg-x11-util-devel
BuildRequires: xscreensaver
BuildRequires: xscreensaver-data-extra
BuildRequires: zlib-devel
Requires: %{name}-common = %{version}-%{release}
Recommends: %{name}-plugin-omemo = %{version}-%{release}
Recommends: %{name}-plugin-openpgp = %{version}-%{release}
Recommends: %{name}-plugin-otr = %{version}-%{release}
Suggests: %{name}-plugins = %{version}-%{release}
Suggests: %{name}-plugin-attention = %{version}-%{release}
Suggests: %{name}-plugin-autoreply = %{version}-%{release}
Suggests: %{name}-plugin-birthdayreminder = %{version}-%{release}
Suggests: %{name}-plugin-chess = %{version}-%{release}
Suggests: %{name}-plugin-cleaner = %{version}-%{release}
Suggests: %{name}-plugin-clientswitcher = %{version}-%{release}
Suggests: %{name}-plugin-conferencelogger = %{version}-%{release}
Suggests: %{name}-plugin-contentdownloader = %{version}-%{release}
Suggests: %{name}-plugin-enummessage = %{version}-%{release}
Suggests: %{name}-plugin-extendedmenu = %{version}-%{release}
Suggests: %{name}-plugin-extendedoptions = %{version}-%{release}
Suggests: %{name}-plugin-gomokugame = %{version}-%{release}
Suggests: %{name}-plugin-historykeeper = %{version}-%{release}
Suggests: %{name}-plugin-image = %{version}-%{release}
Suggests: %{name}-plugin-imagepreview = %{version}-%{release}
Suggests: %{name}-plugin-jabberdisk = %{version}-%{release}
Suggests: %{name}-plugin-juick = %{version}-%{release}
Suggests: %{name}-plugin-media = %{version}-%{release}
Suggests: %{name}-plugin-messagefilter = %{version}-%{release}
Suggests: %{name}-plugin-omemo = %{version}-%{release}
Suggests: %{name}-plugin-openpgp = %{version}-%{release}
Suggests: %{name}-plugin-otr = %{version}-%{release}
Suggests: %{name}-plugin-pepchangenotify = %{version}-%{release}
Suggests: %{name}-plugin-qipxstatuses = %{version}-%{release}
Suggests: %{name}-plugin-skins = %{version}-%{release}
Suggests: %{name}-plugin-stopspam = %{version}-%{release}
Suggests: %{name}-plugin-storagenotes = %{version}-%{release}
Suggests: %{name}-plugin-translate = %{version}-%{release}
Suggests: %{name}-plugin-videostatus = %{version}-%{release}
Suggests: %{name}-plugin-watcher = %{version}-%{release}
%package common
Summary: Common files for %{name}
BuildArch: noarch
Provides: psi+-common = %{version}-%{release}
%package devel
Summary: Development headers for %{name}
Suggests: %{name} = %{version}-%{release}
Provides: psi+-devel = %{version}-%{release}
%package plugins
Summary: Meta-package to install all plugins for %{name}
Provides: psi+-pluins = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-plugin-attention = %{version}-%{release}
Requires: %{name}-plugin-autoreply = %{version}-%{release}
Requires: %{name}-plugin-birthdayreminder = %{version}-%{release}
Requires: %{name}-plugin-chess = %{version}-%{release}
Requires: %{name}-plugin-cleaner = %{version}-%{release}
Requires: %{name}-plugin-clientswitcher = %{version}-%{release}
Requires: %{name}-plugin-conferencelogger = %{version}-%{release}
Requires: %{name}-plugin-contentdownloader = %{version}-%{release}
Requires: %{name}-plugin-enummessage = %{version}-%{release}
Requires: %{name}-plugin-extendedmenu = %{version}-%{release}
Requires: %{name}-plugin-extendedoptions = %{version}-%{release}
Requires: %{name}-plugin-gomokugame = %{version}-%{release}
Requires: %{name}-plugin-historykeeper = %{version}-%{release}
Requires: %{name}-plugin-image = %{version}-%{release}
Requires: %{name}-plugin-imagepreview = %{version}-%{release}
Requires: %{name}-plugin-jabberdisk = %{version}-%{release}
Requires: %{name}-plugin-juick = %{version}-%{release}
Requires: %{name}-plugin-media = %{version}-%{release}
Requires: %{name}-plugin-messagefilter = %{version}-%{release}
Requires: %{name}-plugin-omemo = %{version}-%{release}
Requires: %{name}-plugin-openpgp = %{version}-%{release}
Requires: %{name}-plugin-otr = %{version}-%{release}
Requires: %{name}-plugin-pepchangenotify = %{version}-%{release}
Requires: %{name}-plugin-qipxstatuses = %{version}-%{release}
Requires: %{name}-plugin-skins = %{version}-%{release}
Requires: %{name}-plugin-stopspam = %{version}-%{release}
Requires: %{name}-plugin-storagenotes = %{version}-%{release}
Requires: %{name}-plugin-translate = %{version}-%{release}
Requires: %{name}-plugin-videostatus = %{version}-%{release}
Requires: %{name}-plugin-watcher = %{version}-%{release}
%package plugin-attention
Summary: Attention plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-attention = %{version}-%{release}
%package plugin-autoreply
Summary: Auto-reply plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-autoreply = %{version}-%{release}
%package plugin-birthdayreminder
Summary: Birthday reminder plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-birthdayreminder = %{version}-%{release}
%package plugin-chess
Summary: Chess plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-chess = %{version}-%{release}
%package plugin-cleaner
Summary: Cleaner plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-cleaner = %{version}-%{release}
%package plugin-clientswitcher
Summary: Client switcher plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-clientswitcher = %{version}-%{release}
%package plugin-conferencelogger
Summary: Conference logger plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-conferencelogger = %{version}-%{release}
%package plugin-contentdownloader
Summary: Attention plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin- = %{version}-%{release}
%package plugin-enummessage
Summary: Enumerate message plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-enummessage = %{version}-%{release}
%package plugin-extendedmenu
Summary: Extended menu plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-extendedmenu = %{version}-%{release}
%package plugin-extendedoptions
Summary: Extended options plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-extendedoptions = %{version}-%{release}
%package plugin-gomokugame
Summary: Gomokugame plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-gomokugame = %{version}-%{release}
%package plugin-historykeeper
Summary: History keeper plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-historykeeper = %{version}-%{release}
%package plugin-image
Summary: image plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-image = %{version}-%{release}
%package plugin-imagepreview
Summary: Image preview plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-preview = %{version}-%{release}
%package plugin-jabberdisk
Summary: Jabber disk plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-jabberdisk = %{version}-%{release}
%package plugin-juick
Summary: Juick plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-juick = %{version}-%{release}
%package plugin-media
Summary: Media plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-media = %{version}-%{release}
%package plugin-messagefilter
Summary: Message filter plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-messagefilter = %{version}-%{release}
%package plugin-omemo
Summary: OMEMO end-to-end encryption plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-omemo = %{version}-%{release}
%package plugin-openpgp
Summary: OpenPGP end-to-end encryption plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-openpgp = %{version}-%{release}
%package plugin-otr
Summary: OTR (Off The Record) end-to-end encryption plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-otr = %{version}-%{release}
%package plugin-pepchangenotify
Summary: PEP change notification plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-pepchangenotify = %{version}-%{release}
%package plugin-qipxstatuses
Summary: QIP X-Statuses plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-qipxstatuses = %{version}-%{release}
%package plugin-skins
Summary: Skins plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-skins = %{version}-%{release}
%package plugin-stopspam
Summary: Stop spam plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-stopspam = %{version}-%{release}
%package plugin-storagenotes
Summary: Storage notes plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-storagenotes = %{version}-%{release}
%package plugin-translate
Summary: Translate plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-translate = %{version}-%{release}
%package plugin-videostatus
Summary: Video status plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-videostatus = %{version}-%{release}
%package plugin-watcher
Summary: Watcher plugin for %{name}
Requires: %{name} = %{version}-%{release}
Provides: psi+-plugin-watcher = %{version}-%{release}
%description
Psi is a cross-platform instant messaging client for XMPP (a.k.a. "jabber")
intended for experienced uses. It is designed with a customizable UI and
supports file sharing and audio/video calls. It is designed with security in
mind, supported both client-to-server encryption (using TLS) and client-to-
client encryption (via the OpenPGP, OTR, and OMEMO plugins).
This packages provides Psi+, which is the development branch of the Psi IM
client.
%description common
Files that are common for all installations of %{name}.
%description devel
Development headers for %{name}
%description plugins
Meta-package to install all plugins for %{name}
%description plugin-attention
Attention plugin for %{name}
%description plugin-autoreply
Auto-reply plugin for %{name}
%description plugin-birthdayreminder
Birthday reminder plugin for %{name}
%description plugin-chess
Chess plugin for %{name}
%description plugin-cleaner
Cleaner plugin for %{name}
%description plugin-clientswitcher
Client switcher plugin for %{name}
%description plugin-conferencelogger
Conference logger plugin for %{name}
%description plugin-contentdownloader
Attention plugin for %{name}
%description plugin-enummessage
Enumerate message plugin for %{name}
%description plugin-extendedmenu
Extended menu plugin for %{name}
%description plugin-extendedoptions
Extended options plugin for %{name}
%description plugin-gomokugame
Gomokugame plugin for %{name}
%description plugin-historykeeper
History keeper plugin for %{name}
%description plugin-image
image plugin for %{name}
%description plugin-imagepreview
Image preview plugin for %{name}
%description plugin-jabberdisk
Jabber disk plugin for %{name}
%description plugin-juick
Juick plugin for %{name}
%description plugin-media
Media plugin for %{name}
%description plugin-messagefilter
Message filter plugin for %{name}
%description plugin-omemo
OMEMO end-to-end encryption plugin for %{name}
%description plugin-openpgp
OpenPGP end-to-end encryption plugin for %{name}
%description plugin-otr
OTR (Off The Record) end-to-end encryption plugin for %{name}
%description plugin-pepchangenotify
PEP change notification plugin for %{name}
%description plugin-qipxstatuses
QIP X-Statuses plugin for %{name}
%description plugin-skins
Skins plugin for %{name}
%description plugin-stopspam
Stop spam plugin for %{name}
%description plugin-storagenotes
Storage notes plugin for %{name}
%description plugin-translate
Translate plugin for %{name}
%description plugin-videostatus
Video status plugin for %{name}
%description plugin-watcher
Watcher plugin for %{name}
%prep
%setup -q -n %{name}-snapshots-%{version}
%build
%cmake \
-DPSI_PLUS=ON \
-DENABLE_PLUGINS=ON \
-DBUILD_PSIMEDIA=ON \
-DUSE_HUNSPELL=OFF \
-DUSE_ENCHANT=ON \
-DUSE_CCACHE=ON \
-DUSE_KEYCHAIN=ON \
-DINSTALL_EXTRA_FILES=ON \
-DINSTALL_PLUGINS_SDK=ON \
-DUSE_TASKBARNOTIFIER=ON
%make_build
%install
cd build
%make_install
%check
cd build
#make check
# No make target for check
%files
#license COPYING
#doc
%{_bindir}/*
%dir %{_libdir}/%{name}/
%dir %{_libdir}/%{name}/plugins
%files plugins
%files plugin-attention
%{_libdir}/psi-plus/plugins/libattentionplugin.so
%files plugin-autoreply
%{_libdir}/psi-plus/plugins/libautoreplyplugin.so
%files plugin-birthdayreminder
%{_libdir}/psi-plus/plugins/libbirthdayreminderplugin.so
%files plugin-chess
%{_libdir}/psi-plus/plugins/libchessplugin.so
%files plugin-cleaner
%{_libdir}/psi-plus/plugins/libcleanerplugin.so
%files plugin-clientswitcher
%{_libdir}/psi-plus/plugins/libclientswitcherplugin.so
%files plugin-conferencelogger
%{_libdir}/psi-plus/plugins/libconferenceloggerplugin.so
%files plugin-contentdownloader
%{_libdir}/psi-plus/plugins/libcontentdownloaderplugin.so
%files plugin-enummessage
%{_libdir}/psi-plus/plugins/libenummessagesplugin.so
%files plugin-extendedmenu
%{_libdir}/psi-plus/plugins/libextendedmenuplugin.so
%files plugin-extendedoptions
%{_libdir}/psi-plus/plugins/libextendedoptionsplugin.so
%files plugin-gomokugame
%{_libdir}/psi-plus/plugins/libgomokugameplugin.so
%files plugin-historykeeper
%{_libdir}/psi-plus/plugins/libhistorykeeperplugin.so
%files plugin-image
%{_libdir}/psi-plus/plugins/libimageplugin.so
%files plugin-imagepreview
%{_libdir}/psi-plus/plugins/libimagepreviewplugin.so
%files plugin-jabberdisk
%{_libdir}/psi-plus/plugins/libjabberdiskplugin.so
%files plugin-juick
%{_libdir}/psi-plus/plugins/libjuickplugin.so
%files plugin-media
%{_libdir}/psi-plus/plugins/libmediaplugin.so
%files plugin-messagefilter
%{_libdir}/psi-plus/plugins/libmessagefilterplugin.so
%files plugin-omemo
%{_libdir}/psi-plus/plugins/libomemoplugin.so
%files plugin-openpgp
%{_libdir}/psi-plus/plugins/libopenpgpplugin.so
%files plugin-otr
%{_libdir}/psi-plus/plugins/libotrplugin.so
%files plugin-pepchangenotify
%{_libdir}/psi-plus/plugins/libpepchangenotifyplugin.so
%files plugin-qipxstatuses
%{_libdir}/psi-plus/plugins/libqipxstatusesplugin.so
%files plugin-skins
%{_libdir}/psi-plus/plugins/libskinsplugin.so
%dir %{_datadir}/%{name}/skins/
%{_datadir}/%{name}/skins/*.png
%{_datadir}/%{name}/skins/*.skn
%dir %{_datadir}/%{name}/skins/mac/
%dir %{_datadir}/%{name}/skins/mac/brushed_metal/
%{_datadir}/%{name}/skins/mac/brushed_metal/*.png
%{_datadir}/%{name}/skins/mac/brushed_metal/*.skn
%dir %{_datadir}/%{name}/skins/mac/brushed_metal/images/
%{_datadir}/%{name}/skins/mac/brushed_metal/images/*.png
%dir %{_datadir}/%{name}/skins/mac/native_mac/
%{_datadir}/%{name}/skins/mac/native_mac/*.png
%{_datadir}/%{name}/skins/mac/native_mac/*.skn
%dir %{_datadir}/%{name}/skins/mac/native_mac/images/
%{_datadir}/%{name}/skins/mac/native_mac/images/*.png
%dir %{_datadir}/%{name}/skins/mac/native_mac/images/c_toolbutton/
%{_datadir}/%{name}/skins/mac/native_mac/images/c_toolbutton/*.png
%dir %{_datadir}/%{name}/skins/mac/native_mac/images/g_toolbutton/
%{_datadir}/%{name}/skins/mac/native_mac/images/g_toolbutton/*.png
%dir %{_datadir}/%{name}/skins/universal/
%dir %{_datadir}/%{name}/skins/universal/LunnaCat/
%{_datadir}/%{name}/skins/universal/LunnaCat/*.png
%{_datadir}/%{name}/skins/universal/LunnaCat/*.skn
%dir %{_datadir}/%{name}/skins/universal/LunnaCat/images/
%{_datadir}/%{name}/skins/universal/LunnaCat/images/*.png
%dir %{_datadir}/%{name}/skins/universal/black/
%{_datadir}/%{name}/skins/universal/black/*.png
%{_datadir}/%{name}/skins/universal/black/*.skn
%dir %{_datadir}/%{name}/skins/universal/blue/
%{_datadir}/%{name}/skins/universal/blue/*.png
%{_datadir}/%{name}/skins/universal/blue/*.skn
%dir %{_datadir}/%{name}/skins/universal/breath_dark/
%{_datadir}/%{name}/skins/universal/breath_dark/*.png
%{_datadir}/%{name}/skins/universal/breath_dark/*.skn
%dir %{_datadir}/%{name}/skins/universal/dark/
%{_datadir}/%{name}/skins/universal/dark/*.png
%{_datadir}/%{name}/skins/universal/dark/*.skn
%dir %{_datadir}/%{name}/skins/universal/night/
%dir %{_datadir}/%{name}/skins/universal/night/images/
%{_datadir}/%{name}/skins/universal/night/images/*.png
%{_datadir}/%{name}/skins/universal/night/*.png
%{_datadir}/%{name}/skins/universal/night/*.skn
%dir %{_datadir}/%{name}/skins/universal/orange/
%dir %{_datadir}/%{name}/skins/universal/orange/images/
%{_datadir}/%{name}/skins/universal/orange/images/*.png
%{_datadir}/%{name}/skins/universal/orange/*.png
%{_datadir}/%{name}/skins/universal/orange/*.skn
%dir %{_datadir}/%{name}/skins/universal/qip_infium/
%{_datadir}/%{name}/skins/universal/qip_infium/*.png
%{_datadir}/%{name}/skins/universal/qip_infium/*.skn
%dir %{_datadir}/%{name}/skins/universal/sky/
%{_datadir}/%{name}/skins/universal/sky/*.png
%{_datadir}/%{name}/skins/universal/sky/*.skn
%dir %{_datadir}/%{name}/skins/universal/tkabber/
%{_datadir}/%{name}/skins/universal/tkabber/*.png
%{_datadir}/%{name}/skins/universal/tkabber/*.skn
%files plugin-stopspam
%{_libdir}/psi-plus/plugins/libstopspamplugin.so
%files plugin-storagenotes
%{_libdir}/psi-plus/plugins/libstoragenotesplugin.so
%files plugin-translate
%{_libdir}/psi-plus/plugins/libtranslateplugin.so
%files plugin-videostatus
%{_libdir}/psi-plus/plugins/libvideostatusplugin.so
%files plugin-watcher
%{_libdir}/psi-plus/plugins/libwatcherplugin.so
%files common
%{_datadir}/applications/*
%{_datadir}/cmake/Modules/*
%{_datadir}/icons/hicolor/128x128/apps/*
%{_datadir}/icons/hicolor/16x16/apps/*
%{_datadir}/icons/hicolor/32x32/apps/*
%{_datadir}/icons/hicolor/48x48/apps/*
%{_datadir}/icons/hicolor/64x64/apps/*
%{_datadir}/metainfo/*
%{_datadir}/pixmaps/*
%dir %{_datadir}/%{name}/
%{_datadir}/%{name}/COPYING
%{_datadir}/%{name}/README.html
%{_datadir}/%{name}/client_icons.txt
%dir %{_datadir}/%{name}/certs/
%{_datadir}/%{name}/certs/*
%dir %{_datadir}/%{name}/iconsets/
%dir %{_datadir}/%{name}/iconsets/roster/
%{_datadir}/%{name}/iconsets/roster/*
%dir %{_datadir}/%{name}/plugins/
%{_datadir}/%{name}/plugins/*
%dir %{_datadir}/%{name}/sound/
%{_datadir}/%{name}/sound/*
%files devel
%dir %{_includedir}/psi-plus/
%dir %{_includedir}/psi-plus/plugins/
%{_includedir}/psi-plus/plugins/*
%changelog
* Tue Jan 27 2026 Kristopher Gamrat <gamrat.kristopher@protonmail.com 1.5.2132-1
- Correct Group
* Mon Jan 26 2026 Kristopher Gamrat <gamrat.kristopher@protonmail.com 1.5.2132-2
- Several packaging fixes
* Mon Jan 26 2026 Kristopher Gamrat <gamrat.kristopher@protonmail.com 1.5.2132-1
- Initial Release