Name: rustdesk Summary: An open-source remote desktop, and alternative to TeamViewer. # Last version, 1.2.3 need rust 1.75 Version: 1.2.3 %global Rel -2 Release: %mkrel 7 License: GPLv3 Group: Networking/Remote access Url: https://www.rustdesk.com/ # tag isn't a standard version, we need release number Source0: https://github.com/%{name}/%{name}/archive/refs/tags/%{version}%{Rel}.tar.gz BuildRequires: git-core BuildRequires: gcc-c++ BuildRequires: git BuildRequires: curl BuildRequires: wget BuildRequires: nasm BuildRequires: yasm BuildRequires: gcc BuildRequires: gtk3-devel BuildRequires: clang BuildRequires: lib64xcb-devel BuildRequires: lib64xdotool-devel BuildRequires: lib64xfixes-devel BuildRequires: lib64pulseaudio-devel BuildRequires: cmake BuildRequires: lib64alsa2-devel BuildRequires: chrpath BuildRequires: patchelf BuildRequires: pkgconfig(fuse3) %global debug_package %{nil} %description Yet another remote desktop software, written in Rust. Works out of the box, no configuration required. You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, set up your own, or write your own rendezvous/relay server. %prep %autosetup -n %{name}-%{version}%{Rel} -p1 # export LIB_NAME_PATH=%{_libdir} # export VCPKG_ROOT=$HOME/vcpkg export QA_RPATHS=$[ 0x0002|0x0010 ] # export QA_SKIP_RPATHS=1 %build # workaround stdbool.h not find export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include" #First we need to build the bride ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart #Now we nees to build only rustdesk libs %{cargo_build} -v --lib --features hwcodec,flutter,flutter_texture_render,unix-file-copy-paste --ignore-rust-version #Here we go, bhild the modern flutter GUI cd flutter flutter build linux --release %install mkdir -p %{buildroot}/usr/bin mkdir -p %{buildroot}/usr/lib64/rustdesk mkdir -p %{buildroot}/usr/share/icons/hicolor/256x256/apps mkdir -p %{buildroot}/usr/share/icons/hicolor/scalable/apps mkdir -p %{buildroot}/usr/share/applications mkdir -p %{buildroot}/etc/ld.so.conf.d mkdir -p %{buildroot}/etc/systemd/system cat << 'EOF' > %{buildroot}/etc/ld.so.conf.d/rustdesk.conf /usr/lib64/rustdesk/ EOF #The bin install -m 755 %{_builddir}/%{name}-%{version}%{Rel}/flutter/build/linux/x64/release/bundle/rustdesk %{buildroot}/usr/lib64/rustdesk/rustdesk rm -f %{_builddir}/%{name}-%{version}%{Rel}/flutter/build/linux/x64/release/bundle/rustdesk #The libs cp -r %{_builddir}/%{name}-%{version}%{Rel}/flutter/build/linux/x64/release/bundle/* %{buildroot}/usr/lib64/rustdesk/ #The service file install %{_builddir}/%{name}-%{version}%{Rel}/res/rustdesk.service %{buildroot}/etc/systemd/system #ico install -Dm 644 %{_builddir}/%{name}-%{version}%{Rel}/res/128x128@2x.png %{buildroot}/usr/share/icons/hicolor/256x256/apps/rustdesk.png install -Dm 644 %{_builddir}/%{name}-%{version}%{Rel}/res/scalable.svg %{buildroot}/usr/share/icons/hicolor/scalable/apps/rustdesk.svg #Desktop files install -Dm 644 %{_builddir}/%{name}-%{version}%{Rel}/res/rustdesk.desktop %{buildroot}/usr/share/applications/ install -Dm 644 %{_builddir}/%{name}-%{version}%{Rel}/res/rustdesk-link.desktop %{buildroot}/usr/share/applications/ #chrpath -d %{buildroot}%{_libdir}/rustdesk/*.so #chrpath -r /usr/lib64/rustdesk/ %{buildroot}/usr/bin/rustdesk #patchelf --set-rpath '$ORIGIN/usr/lib64/rustdesk/lib' %{buildroot}%{_libdir}/rustdesk/lib/libapp.so #patchelf --set-rpath '$ORIGIN/usr/lib64/rustdesk/lib' %{buildroot}%{_libdir}/rustdesk/lib/libflutter_linux_gtk.so #for f in %{buildroot}%{_libdir}/rustdesk/lib/*.so; do # chrpath -d $f # #chrpath $f #done ln -s /usr/lib64/rustdesk/rustdesk %{buildroot}/usr/bin/ %clean rm -rf %{buildroot} chmod -R ug+rw %{_rpmdir} chmod -R ug+rw %{_srcrpmdir} %post systemctl daemon-reload systemctl enable rustdesk systemctl start rustdesk update-desktop-database /sbin/ldconfig #ln -s /usr/lib64/rustdesk/rustdesk /usr/bin/ %preun case "$1" in 0) # for uninstall systemctl stop rustdesk || true systemctl disable rustdesk || true #rm /usr/lib/systemd/system/rustdesk.service || true ;; 1) # for upgrade ;; esac #rm -f /usr/bin/rustdesk %files /usr/bin/rustdesk /usr/lib64/rustdesk/* /etc/systemd/system/rustdesk.service /usr/share/icons/hicolor/256x256/apps/rustdesk.png /usr/share/icons/hicolor/scalable/apps/rustdesk.svg /usr/share/applications/rustdesk.desktop /usr/share/applications/rustdesk-link.desktop %{_sysconfdir}/ld.so.conf.d/rustdesk.conf