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