File discord-electron-openasar.spec of Package discord-electron-openasar
#
# spec file for package discord-wbundled-electron
#
# Require bash for extglob in install section.
%global _buildshell /bin/bash
%global __requires_exclude ^(libffmpeg|libnode).*
%global __provides_exclude ^(libffmpeg|libnode).*
%define _name discord
Name: %{_name}-electron-openasar
Version: 0.0.112
Release: 1
Summary: Voice and Text Chat for Gamers
License: NonFree
Group: Productivity/Networking/Instant Messenger
URL: https://discordapp.com/
Source0: https://dl.discordapp.net/apps/linux/%{version}/discord-%{version}.tar.gz
Source1: OpenAsar-Nightly.tar.gz
Source2: discord-symbolic.svg
Source3: com.discordapp.Discord.appdata.xml
Source4: PERMISSION
ExclusiveArch: x86_64
BuildRequires: asar
BuildRequires: desktop-file-utils
BuildRequires: fdupes
BuildRequires: git
BuildRequires: hicolor-icon-theme
BuildRequires: nodejs22
BuildRequires: sed
Requires: electron
Requires: libappindicator3-1
Requires: unzip
Conflicts: discord
%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
# remove bundled copy of electron
rm Discord
rm chrome-sandbox \
chrome_crashpad_handler
rm chrome_100_percent.pak
rm chrome_200_percent.pak
rm resources.pak
rm icudtl.dat
rm *.so*
rm snapshot_blob.bin
rm v8_context_snapshot.bin
rm -rf locales
rm -rf swiftshader
rm vk_swiftshader_icd.json
rm resources/app.asar
# remove unused scripts
rm postinst.sh
%build
cd %{_builddir}
# create starter script.
echo "#!/bin/sh" > %{_builddir}/%{_name}
echo "ELECTRON_ENABLE_STACK_DUMPING=true exec electron %{_datadir}/%{_name}/resources/app.asar \"\$@\"" >> %{_builddir}/%{_name}
gzip -dc %{SOURCE1} | tar -xvvf -
cd OpenAsar-Nightly
# pack openasar
sed -i -e "s|nightly|nightly-$(git rev-parse HEAD | cut -c 1-7)|" src/index.js
sed -i -e "/config.setup = true/a\ config.autoupdate = false;" src/config/index.js
sed -i -e "s|process.resourcesPath|'%{_datadir}/%{_name}/resources'|" src/utils/buildInfo.js
sed -i -e "s|^Exec=\${exec}$|Exec=%{_bindir}/%{_name}|" \
-e "s|^Name=\${basename(exec)}$|Name=%{_name^}|" src/autoStart.js
node scripts/strip.js
asar p src app.asar
%install
install -Dm 755 %{_builddir}/%{_name} %{buildroot}%{_bindir}/%{_name}
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 -Dm644 %{_builddir}/OpenAsar-Nightly/app.asar %{buildroot}%{_datadir}/%{_name}/resources/app.asar
install -Dm644 %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/%{_name}-symbolic.svg
install -Dm644 %{SOURCE3} %{buildroot}%{_datadir}/metainfo/com.discordapp.Discord.appdata.xml
install -Dm644 %{SOURCE4} %{buildroot}%{_datadir}/%{_name}/PERMISSION
# install share
mkdir -p %{buildroot}%{_datadir}/%{_name}
shopt -s extglob
cp -r !(discord*|*.so) %{buildroot}%{_datadir}/%{_name}
shopt -u extglob
# fix missing icon in some environments
ln -sf %{_datadir}/icons/hicolor/256x256/apps/%{_name}.png %{buildroot}%{_datadir}/%{_name}
%fdupes %{buildroot}%{_prefix}
%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}/metainfo/com.discordapp.Discord.appdata.xml
%dir %{_datadir}/%{_name}
%{_datadir}/%{_name}/*
%changelog