File materialgram.spec of Package materialgram
# Application metadata
%global appname materialgram
Name: materialgram
Version: 6.2.3.1
Release: 0%{?dist}
Summary: Telegram Desktop based messenger with Material Design (Binary)
License: GPL-3.0-or-later
URL: https://github.com/kukuruzka165/materialgram
Source0: https://github.com/kukuruzka165/materialgram/releases/download/v%{version}/%{appname}-v%{version}.tar.gz
# Runtime requirements mapped from Arch 'depends'
# !! VERIFY THESE against openSUSE Tumbleweed package names !!
Requires: hunspell
Requires: ffmpeg-8 # Or ffmpeg-6 depending on what the binary needs
Requires: hicolor-icon-theme
Requires: liblz4-1
Requires: minizip
Requires: libopenal1
Requires: qt6-imageformats
Requires: libQt6Svg6
Requires: qt6-wayland
Requires: libxxhash0
Requires: libadalang # ?? Might need adjustment or might be bundled
Requires: rnnoise # ?? Might be libspa-plugins-rnnoise or similar
Requires: pipewire-libs # Or just pipewire
Requires: libXtst6
Requires: libXrandr2
Requires: libXcomposite1
Requires: libXdamage1
Requires: abseil-cpp # Check if just runtime lib is needed, e.g., libabsl_city...
Requires: libdispatch # ?? Might be libdispatch1_3 or similar
Requires: libopenssl3 # Or openssl
Requires: libprotobuf32 # Or protobuf
Requires: glib2-tools # Or libglib-2_0-0
Requires: libsigc++-3_0-0 # Check exact name
Requires: kcoreaddons5 # Or kf6-kcoreaddons if built against KF6
Requires: jemalloc # Or libjemalloc2
Requires: openh264 # Or libopenh264-7
# Build requirements (minimal for binary repackaging)
BuildRequires: chrpath
BuildRequires: desktop-file-utils
BuildRequires: hicolor-icon-theme
BuildRequires: libappstream-glib8
# OptDepends mapping
Recommends: webkit2gtk-4_1-injected-bundles # For embedded browser
Recommends: xdg-desktop-portal # For desktop integration
Provides: %{appname} = %{version}
Conflicts: materialgram-desktop < %{version} # Conflict with source build if named differently
%description
Telegram Desktop based messenger with Material Design and additional features.
This package installs the pre-compiled binary release.
%prep
# -c creates the directory first, -n specifies the expected top-level dir inside tarball
# Assuming the tarball unpacks into a directory named 'materialgram'
%autosetup -c -n %{name}
%build
# No build steps needed for a binary package
%install
# Create directories under buildroot
install -dm755 %{buildroot}%{_bindir}
install -dm755 %{buildroot}%{_datadir}/applications
install -dm755 %{buildroot}%{_datadir}/dbus-1/services
install -dm755 %{buildroot}%{_datadir}/metainfo
install -dm755 %{buildroot}%{_datadir}/pixmaps
# Install application executable
install -Dm755 usr/bin/%{appname} %{buildroot}%{_bindir}/%{appname}
# Remove RPATH
chrpath --delete %{buildroot}%{_bindir}/%{appname}
# Install desktop launcher and pixmap icon
install -Dm644 usr/share/applications/io.github.kukuruzka165.%{appname}.desktop %{buildroot}%{_datadir}/applications/io.github.kukuruzka165.%{appname}.desktop
install -Dm644 usr/share/icons/hicolor/256x256/apps/io.github.kukuruzka165.%{appname}.png %{buildroot}%{_datadir}/pixmaps/io.github.kukuruzka165.%{appname}.png
# Install DBus service
install -Dm644 usr/share/dbus-1/services/io.github.kukuruzka165.%{appname}.service %{buildroot}%{_datadir}/dbus-1/services/io.github.kukuruzka165.%{appname}.service
# Install Metainfo
install -Dm644 usr/share/metainfo/io.github.kukuruzka165.%{appname}.metainfo.xml %{buildroot}%{_datadir}/metainfo/io.github.kukuruzka165.%{appname}.metainfo.xml
# Install icons
for icon_size in 16 32 48 64 128 256 512; do
install -dm755 %{buildroot}%{_datadir}/icons/hicolor/${icon_size}x${icon_size}/apps
install -m644 usr/share/icons/hicolor/${icon_size}x${icon_size}/apps/io.github.kukuruzka165.%{appname}.png %{buildroot}%{_datadir}/icons/hicolor/${icon_size}x${icon_size}/apps/io.github.kukuruzka165.%{appname}.png
done
# Validate desktop file and appstream data
desktop-file-validate %{buildroot}%{_datadir}/applications/io.github.kukuruzka165.%{appname}.desktop || :
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/io.github.kukuruzka165.%{appname}.metainfo.xml || :
%files
%license FIXME # Need to find and install the license file from the tarball
%{_bindir}/%{appname}
%{_datadir}/applications/io.github.kukuruzka165.%{appname}.desktop
%{_datadir}/dbus-1/services/io.github.kukuruzka165.%{appname}.service
%{_datadir}/metainfo/io.github.kukuruzka165.%{appname}.metainfo.xml
%{_datadir}/pixmaps/io.github.kukuruzka165.%{appname}.png
%{_datadir}/icons/hicolor/*/apps/io.github.kukuruzka165.%{appname}.png
%changelog