File rustdesk.spec of Package rustdesk

# spec file for package rustdesk
#
Name:            rustdesk
Version:         1.4.3
Release:         6
Summary:         Remote desktop software written in Rust
License:         AGPL-3.0-only
URL:             https://github.com/rustdesk/rustdesk
Source0:         rustdesk-%{version}-0.x86_64-suse.rpm
ExclusiveArch:   x86_64
AutoReqProv:     no

# Build dependencies
BuildRequires:   build
BuildRequires:   systemd-rpm-macros
BuildRequires:   hicolor-icon-theme
BuildRequires:   desktop-file-utils

# Runtime dependencies
Requires:        systemd
Requires:        hicolor-icon-theme

%description
RustDesk is a free and open-source remote desktop software written in Rust.
This package repackages the official RustDesk release RPM for OBS.

%prep
# Unpack the source RPM
%setup -c -T -n %{name}-%{version}
unrpm %{SOURCE0}

%build
# No build needed for repackaging

%install
# Create directory structure
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/applications
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
mkdir -p %{buildroot}%{_datadir}/%{name}

# First, copy all files from the rustdesk bundle
cp -r usr/share/rustdesk/* %{buildroot}%{_datadir}/%{name}/

# Create symlink for binary
ln -sf %{_datadir}/%{name}/rustdesk %{buildroot}%{_bindir}/rustdesk

# Install systemd service file from its unpacked location
install -D -m 0644 usr/share/rustdesk/files/rustdesk.service \
    %{buildroot}%{_unitdir}/rustdesk.service

# Install desktop file from its unpacked location
install -D -m 0644 usr/share/rustdesk/files/rustdesk.desktop \
    %{buildroot}%{_datadir}/applications/rustdesk.desktop

# Install icons from their unpacked location
install -D -m 0644 usr/share/icons/hicolor/256x256/apps/rustdesk.png \
    %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/rustdesk.png
install -D -m 0644 usr/share/icons/hicolor/scalable/apps/rustdesk.svg \
    %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/rustdesk.svg

# Clean up - remove the files directory from the bundle
rm -rf %{buildroot}%{_datadir}/%{name}/files

# Validate desktop file
desktop-file-validate %{buildroot}%{_datadir}/applications/rustdesk.desktop

%pre
%service_add_pre rustdesk.service

%post
%systemd_post rustdesk.service
%icon_theme_cache_post
%desktop_database_post

%preun
%systemd_preun rustdesk.service

%postun
%systemd_postun_with_restart rustdesk.service
%icon_theme_cache_postun
%desktop_database_postun

%files
%defattr(-,root,root,-)

# Main binary symlink
%{_bindir}/rustdesk

# Systemd service
%{_unitdir}/rustdesk.service

# Desktop file
%{_datadir}/applications/rustdesk.desktop

# Icons
%{_datadir}/icons/hicolor/256x256/apps/rustdesk.png
%{_datadir}/icons/hicolor/scalable/apps/rustdesk.svg

# Main application bundle
%{_datadir}/%{name}

%changelog
* Mon Oct 27 2025 - itachi_re <xanbenson99@gmail.com> - 1.4.3-6
- Initial repackage of RustDesk for openSUSE
- Keep original bundle structure to fix Flutter AOT error
- Remove LICENSE file reference since it's not in the bundle
openSUSE Build Service is sponsored by