# Derived from the epel9 branch of https://src.fedoraproject.org/rpms/quassel # # Core-only build for EL10. # # Why core-only: Quassel is Qt5-only even on upstream master (QT_MIN_VERSION # 5.5.0, find_package(Qt5 ... REQUIRED)); there is no Qt6 port. EL10 ships no # Qt5 in its own repos, but EPEL 10 provides qt5-qtbase 5.15.18. However EPEL 10 # has KF6, not KF5, and no phonon-qt5, dbusmenu-qt5 or qt5-qtwebkit. Every one of # those is a client-side dependency, so the client and monolithic binaries cannot # be built on EL10 while the core can. # # Requires EPEL 10 enabled at build time (for qt5-*, qca-qt5). # # Changes from the epel9 spec: # - Only the core subpackage is produced. Main (mono) and client are dropped, # as is -common, which held only client assets (notifyrc, icons, desktop). # - %%cmake_kf5 -> %%cmake. kf5-rpm-macros does not exist in EPEL 10, so # %%{_kf5_bindir}/%%{_kf5_datadir} are unavailable and become # %%{_bindir}/%%{_datadir}. # - WITH_KDE=OFF, so find_package(ECM) drops from REQUIRED to QUIET. ECM is # deliberately NOT BuildRequired: EPEL 10's is 6.25.0 (KF6 era) and there is # no reason to let it be found for a core-only build. # - Dropped USE_QT5: no such option exists in 0.14.0's CMakeLists any more. # - Dropped BRs: all kf5-*, kf5-rpm-macros, phonon-qt5-devel, dbusmenu-qt5-devel, # qt5-qtwebkit-devel (unavailable), plus qt5-qtmultimedia-devel and # qt5-qtscript-devel (client-only; core needs Qt5 Core/Network/Sql, all in # qtbase), desktop-file-utils, libappstream-glib and perl-generators # (no desktop file, appdata or perl in a core-only build). # - Dropped Requires: oxygen-icon-theme and Provides: quassel-gui (client-only). # - Dropped the %check: it validated client AppStream metadata we no longer ship. %global quassel_data_dir %{_var}/lib/quassel Name: quassel Summary: A modern distributed IRC system Version: 0.14.0 Release: 1%{?dist} License: GPL-2.0-only OR GPL-3.0-only URL: https://quassel-irc.org/ # The epel9 spec points at https://quassel-irc.org/pub/quassel-%%{version}.tar.bz2, # but that host was unreachable (connection timeout, including its root page) when # this was written, so COPR cannot fetch it. The GitHub release asset is the same # upstream tarball, xz-compressed, with the same quassel-%%{version}/ top directory. # sha256 of quassel-0.14.0.tar.xz: # 090777f37a6ae1057a046d5c2896ce5e4bef2382377e3ba52c63efe6b5fe4e10 Source0: https://github.com/quassel/quassel/releases/download/%{version}/quassel-%{version}.tar.xz # Taken unmodified from the epel9 branch of the Fedora package. # # These are full URLs rather than bare filenames on purpose. COPR's "upload a # spec file" build method has no way to obtain local sources, so bare filenames # fail at SRPM creation with the spec as the only input. If you build the SRPM # locally with all files in SOURCES instead, bare filenames would work equally # well and these URLs are still fetched harmlessly. %global epel9_src https://src.fedoraproject.org/rpms/quassel/raw/epel9/f Source1: %{epel9_src}/quasselcore.service Source2: %{epel9_src}/quassel.conf Source3: %{epel9_src}/quassel.sysusers BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: qt5-qtbase-devel BuildRequires: qt5-linguist BuildRequires: qca-qt5-devel BuildRequires: openssl-devel BuildRequires: openldap-devel BuildRequires: boost-devel # find_package(ZLIB REQUIRED) at CMakeLists.txt:403. The epel9 spec gets this # transitively via the kf5-*-devel packages, which are dropped here, so it has # to be explicit. Requiring the virtual name rather than zlib-ng-compat-devel: # EL10 satisfies it with zlib-ng-compat-devel (Provides: zlib-devel = 1.3.1). BuildRequires: zlib-devel BuildRequires: systemd BuildRequires: systemd-rpm-macros %description Quassel IRC is a modern, distributed IRC client, meaning that one (or multiple) client(s) can attach to and detach from a central core. This build provides the core (server) component only. Quassel is Qt5-based and its client requires KDE Frameworks 5, which is not available on EL10. %package core Summary: Quassel core component # Weak dependency on qt5 postgresql bindings. # We use a weak dependency here so they can be uninstalled if necessary. Recommends: qt5-qtbase-postgresql %description core The Quassel IRC Core maintains a connection with the server, and allows for multiple clients to connect to it. Connect with a Quassel client from another machine; no client is built on this platform. %prep %autosetup -p0 -n %{name}-%{version} %build # Plain %%cmake, not %%cmake_kf5: kf5-rpm-macros is unavailable on EL10. %cmake \ -DWANT_CORE=ON \ -DWANT_QTCLIENT=OFF \ -DWANT_MONO=OFF \ -DWITH_KDE=OFF \ -DWITH_WEBKIT=OFF \ -DWITH_WEBENGINE=OFF \ -DWITH_BUNDLED_ICONS=OFF \ -DHAVE_SSL=ON \ -DENABLE_SHARED=OFF %cmake_build %install %cmake_install # Install quassel.conf for the systemd unit install -Dp -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/%{name}.conf # Install systemd service file install -Dp -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/quasselcore.service # Install the systemd-sysusers config install -Dp -m 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/%{name}.conf # Home directory for the quassel user install -d -m 0750 %{buildroot}%{quassel_data_dir} # Belt and braces: with WANT_QTCLIENT/WANT_MONO off these should not exist, but # remove them rather than risk unpackaged-file build failures if cmake installs # shared assets anyway. rm -f %{buildroot}%{_datadir}/pixmaps/quassel.png rm -rf %{buildroot}%{_datadir}/applications rm -rf %{buildroot}%{_datadir}/icons rm -rf %{buildroot}%{_datadir}/knotifications5 rm -rf %{buildroot}%{_datadir}/metainfo %pre core %sysusers_create_compat %{SOURCE3} %post core %systemd_post quasselcore.service %preun core %systemd_preun quasselcore.service %postun core %systemd_postun_with_restart quasselcore.service %files core %doc README.md %license COPYING gpl-2.0.txt gpl-3.0.txt %{_bindir}/quasselcore # Translations. qt5-linguist is present, so cmake builds and installs these even # for a core-only build. The epel9 spec packaged them in its -common subpackage, # which is dropped here, so without this line rpm fails with # "Installed (but unpackaged) file(s) found". %{_datadir}/quassel/ %dir %attr(-,quassel,quassel) %{quassel_data_dir} %{_unitdir}/quasselcore.service %config(noreplace) %{_sysconfdir}/quassel.conf %{_sysusersdir}/%{name}.conf %changelog * Sun Aug 02 2026 Gary T. Giesen - 0.14.0-1 - Core-only build for EL10, derived from the epel9 branch - Drop client and monolithic binaries: EL10 has no KF5, phonon-qt5, dbusmenu-qt5 or qt5-qtwebkit - Replace %%cmake_kf5 with %%cmake; kf5-rpm-macros is unavailable - Build with WITH_KDE=OFF so ECM is optional rather than required