# Copyright 2024-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # Autogenerated by pycargoebuild 0.13.2 EAPI=8 CRATES=" " LLVM_COMPAT=( 18 19 20 21 22 ) # have no idea why CI use rust-bin-9999, rustix broken on it # https://github.com/bytecodealliance/rustix/issues/1620 # set RUST_MAX_VER to a max version now RUST_MAX_VER="1.95.0" RUST_MIN_VER="1.81.0" RUST_NEEDS_LLVM=1 inherit cargo desktop llvm-r1 systemd xdg git-r3 DESCRIPTION="An open-source remote desktop, and alternative to TeamViewer" HOMEPAGE="https://rustdesk.com/" EGIT_REPO_URI="https://github.com/rustdesk/rustdesk.git" # grep -i vcpkg .github/workflows/flutter-build.yml #_VCPKG_TAG="2025.08.27" #SRC_URI+=" https://github.com/gentoo-zh-drafts/rustdesk-vcpkg/releases/download/${PV}/${P}-vcpkg-${_VCPKG_TAG}-lite.tar.gz" # FIX: # 1. missing rust-webm-*/src/sys/libwebm # 2. gcc15 build: https://github.com/microcai/gentoo-zh/issues/7234 #_LIBWEBM_COMMIT="3b630045052e1e4d563207ab9e3be8d137c26067" #SRC_URI+=" https://github.com/webmproject/libwebm/archive/${_LIBWEBM_COMMIT}.tar.gz -> libwebm-${_LIBWEBM_COMMIT}.tar.gz" # FIX: missing hwcodec-*/externals # curl https://api.github.com/repos/rustdesk-org/hwcodec/contents/externals | jq -r '.sha' #_HWCODEC_EXTERNALS_COMMIT="8903740a1f47884906a6e347ad3d8d56304d9771" #SRC_URI+=" https://github.com/rustdesk-org/externals/archive/${_HWCODEC_EXTERNALS_COMMIT}.tar.gz -> hwcodec-externals-${_HWCODEC_EXTERNALS_COMMIT}.tar.gz" # FIX: missing libs/hbb_common # curl https://api.github.com/repos/rustdesk/rustdesk/contents/libs/hbb_common | jq -r '.sha' #3_HBB_COMMON_COMMIT="7e1c392c62d39c364127307cd408421dd5f8cfb0" #SRC_URI+=" https://github.com/rustdesk/hbb_common/archive/${_HBB_COMMON_COMMIT}.tar.gz -> hbb_common-${_HBB_COMMON_COMMIT}.tar.gz" # FIX: missing kcp-sys-*/kcp # curl https://api.github.com/repos/rustdesk-org/kcp-sys/contents/kcp | jq -r '.sha' #_KCP_COMMIT="7f9805887b0909c52c825925f123e7a84da37167" #SRC_URI+=" https://github.com/skywind3000/kcp/archive/${_KCP_COMMIT}.tar.gz -> kcp-${_KCP_COMMIT}.tar.gz" LICENSE="AGPL-3" # Dependent crate licenses LICENSE+=" Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD Boost-1.0 CC0-1.0 CDLA-Permissive-2.0 GPL-3+ IJG ISC MIT MIT-0 MPL-2.0 Unicode-DFS-2016 Unlicense WTFPL-2 ZLIB " SLOT="0" KEYWORDS="" IUSE="wayland +hwaccel" RDEPEND=" media-libs/alsa-lib x11-libs/gtk+:3 x11-libs/libxcb x11-libs/libXfixes media-libs/libpulse x11-misc/xdotool media-libs/libva[X] wayland? ( media-video/pipewire[gstreamer] ) hwaccel? ( x11-libs/libvdpau ) " BDEPEND=" dev-lang/nasm dev-lang/yasm media-libs/alsa-lib media-libs/libpulse dev-build/cmake dev-build/ninja media-libs/gstreamer media-libs/gst-plugins-base $(llvm_gen_dep ' llvm-core/clang:${LLVM_SLOT} llvm-core/llvm:${LLVM_SLOT} ') " QA_PRESTRIPPED=" /usr/share/${PN}/${PN} /usr/share/${PN}/libsciter-gtk.so " #PATCHES=( # "${FILESDIR}"/${PN}-1.4.8-fix-llvm22-bindgen.patch # "${FILESDIR}"/${PN}-1.4.8-disable-check-x11.patch #) src_unpack() { git-r3_src_unpack cargo_live_src_unpack default } pkg_setup() { llvm-r1_pkg_setup rust_pkg_setup } src_prepare() { default cargo_gen_config # cd "${S}"/.. || die # eapply "${FILESDIR}"/rust-sciter.patch # # rm -rf "${S}"/libs/hbb_common || die # ln -s "${WORKDIR}/hbb_common-${_HBB_COMMON_COMMIT}" "${S}"/libs/hbb_common || die # # local _RUSTWEBM_COMMIT=`echo "${GIT_CRATES[webm]}" | awk -F';' '{print $2}'` # rm -rf "${WORKDIR}/rust-webm-${_RUSTWEBM_COMMIT}"/src/sys/libwebm || die # ln -s "${WORKDIR}/libwebm-${_LIBWEBM_COMMIT}" "${WORKDIR}/rust-webm-${_RUSTWEBM_COMMIT}"/src/sys/libwebm || die # # local _HWCODEC_COMMIT=`echo "${GIT_CRATES[hwcodec]}" | awk -F';' '{print $2}'` # rm -rf "${WORKDIR}/hwcodec-${_HWCODEC_COMMIT}"/externals || die # ln -s "${WORKDIR}/externals-${_HWCODEC_EXTERNALS_COMMIT}" "${WORKDIR}/hwcodec-${_HWCODEC_COMMIT}"/externals || die # # local _KCPSYS_COMMIT=`echo "${GIT_CRATES[kcp-sys]}" | awk -F';' '{print $2}'` # rm -rf "${WORKDIR}/kcp-sys-${_KCPSYS_COMMIT}"/kcp || die # ln -s "${WORKDIR}/kcp-${_KCP_COMMIT}" "${WORKDIR}/kcp-sys-${_KCPSYS_COMMIT}"/kcp || die } src_configure() { if use hwaccel ;then local myfeatures=(hwcodec) fi cargo_src_configure } src_compile() { cargo_src_compile } src_install() { local rustdesk_dir="/usr/share/${PN}" exeinto "${rustdesk_dir}" insinto "${rustdesk_dir}" doexe $(cargo_target_dir)/rustdesk newins "${DISTDIR}/${PN}-libsciter-gtk.so" libsciter-gtk.so rm src/ui/*.rs || die newbin "${FILESDIR}/rustdesk.sh" rustdesk insinto "${rustdesk_dir}/src" doins -r src/ui newicon -s 32 res/32x32.png rustdesk.png newicon -s 128 res/128x128.png rustdesk.png newicon -s 256 res/128x128@2x.png rustdesk.png domenu "${FILESDIR}"/rustdesk{,-link}.desktop systemd_dounit "${FILESDIR}"/rustdesk.service einstalldocs }