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