File discord.spec of Package discord
#
# spec file for package discord
#
# Copyright (c) 2023-2025 SUSE LLC.
# Copyright (c) 2021 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#
# Require bash for extglob in install section.
%global _buildshell /bin/bash
# Shipped by this package but not provided externally
%global __requires_exclude ^libffmpeg
%global __provides_exclude_from %{_libdir}/%{name}
# This is to enable build with patent encoumbered codecs. Not allowed in OBS
%bcond_with x264
Name: discord
Version: 0.0.88
Release: 0
Summary: Voice and Text Chat for Gamers
License: SUSE-NonFree
Group: Productivity/Networking/Instant Messenger
URL: https://discordapp.com/
Source0: https://dl.discordapp.net/apps/linux/%{version}/%{name}-%{version}.tar.gz
#Source0: https://discordapp.com/api/download?platform=linux&format=tar.gz
Source2: discord-symbolic.svg
Source3: https://raw.githubusercontent.com/flathub/com.discordapp.Discord/master/com.discordapp.Discord.appdata.xml
# Disable breaking updates which will prompt users to download a deb or tar
# file and lock them out of Discord making the program unusable.
Source4: discord
Source99: PERMISSION
ExclusiveArch: x86_64
BuildRequires: desktop-file-utils
BuildRequires: hicolor-icon-theme
BuildRequires: update-desktop-files
BuildRequires: unzip
Requires: libatomic1
#for the wrapper script:
Requires: grep
Requires: sed
Requires: coreutils
Conflicts: discord
#Patent free ffmpeg config
#Snippets from https://github.com/orionhealth/electron-packager-plugin-non-proprietary-codecs-ffmpeg/blob/master/src/downloadFFMPEG.js
%define electronVersion 33.4.0
%define ffmpegarch x64
%define ffmpegplatform linux
%define ffmpegFileName ffmpeg-v%{electronVersion}-%{ffmpegplatform}-%{ffmpegarch}.zip
#eg. https://github.com/electron/electron/releases/download/v1.6.11/ffmpeg-v1.6.11-linux-x64.zip
Source1: https://github.com/electron/electron/releases/download/v%{electronVersion}/%{ffmpegFileName}
%description
Discord is a voice and text chat for gamers. The Text chat supports
inline images and videos. Voice chat includes a jitter buffer,
automatic gain control, noise suppression, echo cancellation.
Server-to-client communications are encrypted.
%prep
%setup -q -n Discord
%setup -q -T -a 1 -c -n ffmpeg
%build
%if %{with x264}
# nothing to do
:
%else
rm %{_builddir}/Discord/libffmpeg.so
cp %{_builddir}/ffmpeg/libffmpeg.so %{_builddir}/Discord/
%endif
%install
cd %{_builddir}/Discord
install -Dm644 discord.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{name}.png
desktop-file-install \
--dir=%{buildroot}%{_datadir}/applications \
--set-key=Exec \
--set-value=%{_bindir}/%{name} \
%{name}.desktop
install -Dm755 chrome-sandbox %{buildroot}%{_libdir}/%{name}/chrome-sandbox
install -Dm755 libffmpeg.so %{buildroot}%{_libdir}/%{name}/libffmpeg.so
install -Dm755 libEGL.so %{buildroot}%{_libdir}/%{name}/libEGL.so
install -Dm755 libGLESv2.so %{buildroot}%{_libdir}/%{name}/libGLESv2.so
install -Dm755 libvk_swiftshader.so %{buildroot}%{_libdir}/%{name}/libvk_swiftshader.so
install -Dm755 libvulkan.so.1 %{buildroot}%{_libdir}/%{name}/libvulkan.so.1
install -Dm644 %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/%{name}-symbolic.svg
install -Dm644 %{SOURCE3} %{buildroot}%{_datadir}/appdata/com.discordapp.Discord.appdata.xml
# install share
mkdir -p %{buildroot}%{_libdir}/%{name}
shopt -s extglob
cp -r !(discord*|*.so) %{buildroot}%{_libdir}/%{name}
shopt -u extglob
# fix missing icon in some environments
ln -sf %{_datadir}/icons/hicolor/256x256/apps/%{name}.png %{buildroot}%{_libdir}/%{name}
# Executable checks for resources in its directory so it cannot be in bin.
mkdir -p %{buildroot}%{_bindir}
install -v -m 755 %{SOURCE4} %{buildroot}%{_bindir}/%{name}
%check
electronVersionActual=$(strings %{buildroot}%{_libdir}/%{name}/Discord | sed -nE 's/Chrome\/[0-9.]* Electron\/(.*)/\1/p')
if [ $electronVersionActual != "%{electronVersion}" ]; then echo "Electron version does not match (expected is %{electronVersion} , actual is $electronVersionActual)"; exit 1; fi
%post
%if 0%{?suse_version} < 1500
%desktop_database_post
%endif
chmod 0755 %{_libdir}/%{name}/Discord
%if 0%{?suse_version} < 1500
%postun
%desktop_database_postun
%endif
%files
%defattr(-,root,root)
%{_bindir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/256x256/apps/%{name}.png
%{_datadir}/icons/hicolor/symbolic/apps/%{name}-symbolic.svg
%{_datadir}/appdata/com.discordapp.Discord.appdata.xml
%{_libdir}/%{name}
%changelog