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
openSUSE Build Service is sponsored by