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