# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
%global forgeurl https://github.com/Chatterino/%{name}
%global uuid com.chatterino.chatterino
%global chatterino_git_commit eb8c7f2d4dbe0e9bdb1dd3133a1e8370c3a75e5a
%global chatterino_git_shortcommit %(c=%{chatterino_git_commit}; echo ${c:0:7})
%global tarball_version %%(echo %{version} | tr '~' '-')
# Git submodules
# * libcommuni
%global commit2 030710ad53dda1541601ccabbad36a12a9e90c78
%global shortcommit2 %(c=%{commit2}; echo ${c:0:7})
# * settings
%global commit3 f168c0997fb85789bbc54513fce8bbc212dda2ff
%global shortcommit3 %(c=%{commit3}; echo ${c:0:7})
# * signals
%global commit4 6561aa559ff47cbad4058b8144d4a72fd14edc29
%global shortcommit4 %(c=%{commit4}; echo ${c:0:7})
# * serialize
%global commit5 bbf0a34260a3e8d6e6c48be57653840ac3fa8c30
%global shortcommit5 %(c=%{commit5}; echo ${c:0:7})
# * magic_enum
%global commit9 e1a68e9dd3d2e9180b04c8aeacd4975db745e6b8
%global shortcommit9 %(c=%{commit9}; echo ${c:0:7})
# * sanitizers-cmake
%global commit10 c3dc841af4dbf44669e65b82cb68a575864326bd
%global shortcommit10 %(c=%{commit10}; echo ${c:0:7})
# * miniaudio
%global commit11 3898fff8ed923e118326bf07822961d222cb2a9a
%global shortcommit11 %(c=%{commit11}; echo ${c:0:7})
Name: chatterino2
Version: 2.4.6
Release: %autorelease
Summary: Chat client for https://twitch.tv
%forgemeta
# Boost Software License (v1.0) Boost Software License 1.0
# -----------------------------------------------------------------------
# resources/licenses/boost_boost.txt
#
# BSD 3-clause "New" or "Revised" License
# ---------------------------------------
# lib/libcommuni/
#
# Expat License
# -------------
# lib/serialize/
# lib/signals/
# resources/
#
# Mozilla Public License (v1.1) GNU General Public License (v2 or later) or GNU Lesser General Public License (v2.1 or later)
# ---------------------------------------------------------------------------------------------------------------------------
# lib/libcommuni/
#
# zlib/libpng license Aladdin Free Public License
# -----------------------------------------------
# lib/websocketpp/
#
License: MIT and BSL-1.0 and BSD-3-Clause and zlib and GPL-2.0-or-later and LGPL-2.1-or-later and MPL-1.1
URL: %{forgeurl}
Source0: %{forgesource}
Source2: https://github.com/hemirt/libcommuni/archive/%{commit2}/libcommuni-%{shortcommit2}.tar.gz
Source3: https://github.com/pajlada/settings/archive/%{commit3}/settings-%{shortcommit3}.tar.gz
Source4: https://github.com/pajlada/signals/archive/%{commit4}/signals-%{shortcommit4}.tar.gz
Source5: https://github.com/pajlada/serialize/archive/%{commit5}/serialize-%{shortcommit5}.tar.gz
Source9: https://github.com/Neargye/magic_enum/archive/%{commit9}/magic_enum-%{shortcommit9}.tar.gz
Source10: https://github.com/arsenm/sanitizers-cmake/archive/%{commit10}/sanitizers-cmake-%{shortcommit10}.tar.gz
Source11: https://github.com/mackron/miniaudio/archive/%{commit11}/miniaudio-%{shortcommit11}.tar.gz
# Patch for QT6 build
# https://github.com/Chatterino/chatterino2/pull/4863
# Note: this patch is modified to not include the changelog entry that the patch works
Patch0: https://github.com/Chatterino/chatterino2/pull/4863.patch#/chatterino2-qt6-qtkeychain.patch
BuildRequires: boost-devel
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: gcc-c++
BuildRequires: libappstream-glib
BuildRequires: make
BuildRequires: cmake(Qt6Concurrent)
BuildRequires: cmake(Qt6Core)
BuildRequires: cmake(Qt6Gui)
BuildRequires: cmake(Qt6Keychain)
BuildRequires: cmake(Qt6LinguistTools)
BuildRequires: cmake(Qt6Multimedia)
BuildRequires: cmake(Qt6Network)
BuildRequires: cmake(Qt6Svg)
BuildRequires: cmake(Qt6Widgets)
BuildRequires: cmake(Qt6Core5Compat)
BuildRequires: cmake(RapidJSON)
BuildRequires: pkgconfig(libsecret-1)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(websocketpp)
BuildRequires: pkgconfig(xkbcommon)
Requires: hicolor-icon-theme
Requires: qt6-qtsvg
Requires: qt6-qtimageformats
# Current submodules patched so not possible to build with system packages
# * https://github.com/Chatterino/chatterino2/issues/1444
Provides: bundled(libcommuni) = 3.7.0
Provides: bundled(magic_enum) = 0.9.3~git%{shortcommit9}
Provides: bundled(miniaudio) = 0.11.18~git%{shortcommit11}
Provides: bundled(sanitizers-cmake) = 0~git%{shortcommit10}
Provides: bundled(serialize) = 0~git%{shortcommit5}
Provides: bundled(settings) = 0~git%{shortcommit3}
Provides: bundled(signals) = 0.1.0~git%{shortcommit4}
%description
Chatterino 2 is a chat client for Twitch.tv.
%prep
%forgesetup
%patch 0 -p1
%setup -n %{name}-%{tarball_version} -q -D -T -a2
%setup -n %{name}-%{tarball_version} -q -D -T -a3
%setup -n %{name}-%{tarball_version} -q -D -T -a4
%setup -n %{name}-%{tarball_version} -q -D -T -a5
%setup -n %{name}-%{tarball_version} -q -D -T -a9
%setup -n %{name}-%{tarball_version} -q -D -T -a10
%setup -n %{name}-%{tarball_version} -q -D -T -a11
mv libcommuni-%{commit2}/* lib/libcommuni
mv settings-%{commit3}/* lib/settings
mv signals-%{commit4}/* lib/signals
mv serialize-%{commit5}/* lib/serialize
mv magic_enum-%{commit9}/* lib/magic_enum
mv miniaudio-%{commit11}/* lib/miniaudio
mv sanitizers-cmake-%{commit10}/* cmake/sanitizers-cmake
%build
export GIT_COMMIT=%{chatterino_git_commit}
export GIT_HASH=%{chatterino_git_shortcommit}
export GIT_RELEASE=%{version}
%cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DBUILD_WITH_QT6=ON \
-DUSE_PRECOMPILED_HEADERS=0FF \
-DUSE_SYSTEM_QTKEYCHAIN=ON \
-DBUILD_WITH_QTKEYCHAIN=ON \
%{nil}
%cmake_build
%install
%cmake_install
install -Dpm 0644 resources/%{uuid}.appdata.xml \
%{buildroot}%{_metainfodir}/%{uuid}.appdata.xml
install -Dpm 0644 resources/icon.png \
%{buildroot}%{_datadir}/icons/hicolor/256x256/apps/chatterino.png
%check
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.xml
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%files
%license LICENSE
%doc README.md BUILDING_ON_LINUX.md docs/
%{_bindir}/chatterino
%{_datadir}/applications/*.desktop
%{_datadir}/icons/hicolor/*/*/*.png
%{_metainfodir}/*.xml
%changelog
%autochangelog