File chatterino2.spec of Package chatterino
#
# spec file for package chatterino
#
# Copyright (c) 2025 SUSE LLC and contributors
#
# 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 https://bugs.opensuse.org/
#
%global __builder ninja
#pin to commit for patch fixes
%global forgeurl0 https://github.com/Chatterino/chatterino2
%global commit0 c72d6707e36dbbea32ac1c7877a758155f3fda59
%global uuid com.chatterino.chatterino
%global chatterino_git_commit %{commit0}
%global chatterino_git_shortcommit %(c=%{chatterino_git_commit}; echo ${c:0:7})
# Git submodules
# not using miniaudio-devel as cmake is not detecting it
# not using websocketpp as we used a modified
#not using system lua as it cause c/c++ ABI problems
# * lua
%global forgeurl1 https://github.com/lua/lua
%global commit1 1ab3208a1fceb12fca8f24ba57d6e13c5bff15e3
%global shortcommit1 %(c=%{commit1}; echo ${c:0:7})
# * libcommuni
%global forgeurl2 https://github.com/hemirt/libcommuni
%global commit2 bb5417c451d764f57f2f1b3e1c9a81496b5521bd
%global shortcommit2 %(c=%{commit2}; echo ${c:0:7})
# * settings
%global forgeurl3 https://github.com/pajlada/settings
%global commit3 d847148cbf0becb75e48b90c2c25b78922f4e181
%global shortcommit3 %(c=%{commit3}; echo ${c:0:7})
# * signals
%global forgeurl4 https://github.com/pajlada/signals
%global commit4 4b127541d30d9ae86df1553cb567cc2fc55fac46
%global shortcommit4 %(c=%{commit4}; echo ${c:0:7})
# * serialize
%global forgeurl5 https://github.com/pajlada/serialize
%global commit5 f4a7dbfa64e7515506bdb75f6037cb74cd37f67c
%global shortcommit5 %(c=%{commit5}; echo ${c:0:7})
# * magic_enum
%global forgeurl9 https://github.com/Neargye/magic_enum
%global commit9 e55b9b54d5cf61f8e117cafb17846d7d742dd3b4
%global shortcommit9 %(c=%{commit9}; echo ${c:0:7})
# * certify
%global forgeurl11 https://github.com/djarek/certify
%global commit11 a448a3915ddac716ce76e4b8cbf0e7f4153ed1e2
%global shortcommit11 %(c=%{commit11}; echo ${c:0:7})
# * expected-lite
%global forgeurl12 https://github.com/martinmoene/expected-lite
%global commit12 6656728c5874fefa976ff7c67999798df7fc961d
%global shortcommit12 %(c=%{commit12}; echo ${c:0:7})
# * miniaudio
%global forgeurl13 https://github.com/mackron/miniaudio
%global commit13 f40cf03f80cdb7e741d43e53b7e706e8c1394bcf
%global shortcommit13 %(c=%{commit13}; echo ${c:0:7})
# * websocketpp
%global forgeurl14 https://github.com/Chatterino/websocketpp
%global commit14 f1736a8e72b910810ff6869fe20f647a62f3bc35
%global shortcommit14 %(c=%{commit14}; echo ${c:0:7})
# * sol2
%global forgeurl15 https://github.com/ThePhD/sol2
%global commit15 2b0d2fe8ba0074e16b499940c4f3126b9c7d3471
%global shortcommit15 %(c=%{commit15}; echo ${c:0:7})
Name: chatterino2
Version: 2.5.4~20251114.%{chatterino_git_shortcommit}
Release: 1
Summary: Chat client for https://twitch.tv
# BSL-1.0
# -----------------------------------------------------------------------
# resources/licenses/boost_boost.txt
# lib/expected-lite/
#
# BSD-3-clause
# ---------------------------------------
# lib/libcommuni/
# lib/websocketpp
#
# MIT License
# -------------
# lib/serialize/
# lib/signals/
# lib/magic_enum/
# lib/lua
# lib/sol2
# lib/miniaudio
# resources/
License: MIT AND BSD-3-Clause AND BSL-1.0
URL: %{forgeurl0}
Source0: %{forgeurl0}/archive/%{commit0}.tar.gz
Source1: %{forgeurl1}/archive/%{commit1}.tar.gz
Source2: %{forgeurl2}/archive/%{commit2}.tar.gz
Source3: %{forgeurl3}/archive/%{commit3}.tar.gz
Source4: %{forgeurl4}/archive/%{commit4}.tar.gz
Source5: %{forgeurl5}/archive/%{commit5}.tar.gz
Source9: %{forgeurl9}/archive/%{commit9}.tar.gz
Source11: %{forgeurl11}/archive/%{commit11}.tar.gz
Source12: %{forgeurl12}/archive/%{commit12}.tar.gz
Source13: %{forgeurl13}/archive/%{commit13}.tar.gz
Source14: %{forgeurl14}/archive/%{commit14}.tar.gz
Source15: %{forgeurl15}/archive/%{commit15}.tar.gz
# Patch0:https://patch-diff.githubusercontent.com/raw/Chatterino/chatterino2/pull/6495.diff
# fixes lua system lib lookup
BuildRequires: boost-devel
BuildRequires: libboost_json1_89_0-devel
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib8
BuildRequires: ninja
BuildRequires: doxygen
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: cmake(Qt6CorePrivate)
BuildRequires: pkgconfig(libsecret-1)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(libnotify)
# BuildRequires: pkgconfig(websocketpp)
# BuildRequires: miniaudio-devel
# Current submodules patched so not possible to build with system packages
# * https://github.com/Chatterino/chatterino2/issues/1444
Provides: bundled(lua) = 3.5.0~git%{shortcommit1}
Provides: bundled(libcommuni) = 3.7.0~git%{shortcommit2}
Provides: bundled(magic_enum) = 0.9.3~git%{shortcommit9}
Provides: bundled(serialize) = 0~git%{shortcommit5}
Provides: bundled(settings) = 0~git%{shortcommit3}
Provides: bundled(signals) = 0.1.0~git%{shortcommit4}
Provides: bundled(certify) = 0.0.0~git%{shortcommit11}
Provides: bundled(expected-lite) = 0.9.0~git%{shortcommit12}
Provides: bundled(miniaudio) = 0.11.23~git%{shortcommit13}
Provides: bundled(websocketpp) = 0.0.0~git%{shortcommit14}
Provides: bundled(sol2) = 5.4.8~git%{shortcommit15}
Provides: chatterino
%description
Chatterino 2 is a chat client for Twitch.tv. The Chatterino 2 wiki can be
found https://wiki.chatterino.com/.
%prep
%autosetup -a 0 -n chatterino2-%{commit0}
cd lib/lua/src
tar -xf %{SOURCE1} --strip-components=1
cd ../../libcommuni
tar -xf %{SOURCE2} --strip-components=1
cd ../settings
tar -xf %{SOURCE3} --strip-components=1
cd ../signals
tar -xf %{SOURCE4} --strip-components=1
cd ../serialize
tar -xf %{SOURCE5} --strip-components=1
cd ../magic_enum
tar -xf %{SOURCE9} --strip-components=1
cd ../expected-lite
tar -xf %{SOURCE12} --strip-components=1
cd ../certify
tar -xf %{SOURCE11} --strip-components=1
cd ../miniaudio
tar -xf %{SOURCE13} --strip-components=1
cd ../websocketpp
tar -xf %{SOURCE14} --strip-components=1
cd ../sol2
tar -xf %{SOURCE15} --strip-components=1
cd ../..
%build
export GIT_COMMIT=%{chatterino_git_commit}
export GIT_HASH=%{chatterino_git_shortcommit}
export GIT_RELEASE=%{version}
%cmake -G Ninja \
-DUSE_SYSTEM_QTKEYCHAIN=ON
%cmake_build
%install
%cmake_install
install -Dpm 0644 resources/%{uuid}.appdata.xml \
%{buildroot}%{_datadir}/metainfo//%{uuid}.appdata.xml
install -Dpm 0644 resources/icon.png \
%{buildroot}%{_datadir}/icons/hicolor/256x256/apps/chatterino.png
%check
%files
%license LICENSE resources/licenses/*
%doc README.md
%{_bindir}/chatterino
%{_datadir}/applications/com.chatterino.chatterino.desktop
%{_datadir}/icons/hicolor/256x256/apps/*chatterino.png
%{_datadir}/metainfo/com.chatterino.chatterino.appdata.xml
%dir %{_datadir}/icons/hicolor/256x256/apps
%dir %{_datadir}/icons/hicolor/256x256
%dir %{_datadir}/icons/hicolor
%changelog